Save with bad ingkey, print page fixes
This commit is contained in:
parent
bc368f084c
commit
af7c49713a
|
@ -5,9 +5,6 @@ import com.mousetech.gourmetj.persistence.model.IngredientIF;
|
|||
import com.mousetech.gourmetj.persistence.model.Recipe;
|
||||
import com.mousetech.gourmetj.persistence.model.Shopcat;
|
||||
|
||||
import net.bytebuddy.asm.Advice.This;
|
||||
|
||||
import com.mousetech.gourmetj.IngredientDigester;
|
||||
import com.mousetech.gourmetj.IngredientDigester.IngredientAmountFormat;
|
||||
|
||||
/**
|
||||
|
@ -26,9 +23,13 @@ public class IngredientUI implements IngredientIF {
|
|||
/**
|
||||
* Constructor.
|
||||
*
|
||||
* @param ingredient
|
||||
* @param ingredient Ingredient that we facade. If null,
|
||||
* constructs a dummy Ingredient (example, for group item).
|
||||
*/
|
||||
public IngredientUI(Ingredient ingredient) {
|
||||
if ( ingredient == null ) {
|
||||
ingredient = new Ingredient();
|
||||
}
|
||||
this.ingredient = ingredient;
|
||||
}
|
||||
|
||||
|
|
|
@ -84,7 +84,17 @@ public class JSFUtils {
|
|||
.getExternalContext().getFlash());
|
||||
}
|
||||
|
||||
/**
|
||||
* Look in Flash scope for item.
|
||||
*
|
||||
* @param key Item to retrieve
|
||||
* @return Item, or null if not in Flash OR Flash not active
|
||||
*/
|
||||
public static Object getFlash(String key) {
|
||||
Flash flash = flashScope();
|
||||
if ( flash == null ) {
|
||||
return null;
|
||||
}
|
||||
return flashScope().get(key);
|
||||
}
|
||||
|
||||
|
|
|
@ -231,7 +231,7 @@ public class RecipeDetailBean implements Serializable {
|
|||
*/
|
||||
if (this.recipe == null) {
|
||||
Long rid =
|
||||
(Long) JSFUtils.flashScope().get("recipeID");
|
||||
(Long) JSFUtils.getFlash("recipeID");
|
||||
if (rid != null) {
|
||||
this.recipe = loadRecipe(rid);
|
||||
} else {
|
||||
|
@ -704,7 +704,7 @@ public class RecipeDetailBean implements Serializable {
|
|||
JSFUtils.addErrorMessage(
|
||||
"No Shopping Category is defined for Ingredient Key "
|
||||
+ ingKey);
|
||||
return false;
|
||||
//return false;
|
||||
|
||||
}
|
||||
ing.setShopCat(scat);
|
||||
|
@ -1008,4 +1008,35 @@ public class RecipeDetailBean implements Serializable {
|
|||
long now = new java.util.Date().getTime();
|
||||
return String.valueOf(now);
|
||||
}
|
||||
|
||||
//*** Add Group
|
||||
|
||||
private String newGroupName;
|
||||
|
||||
/**
|
||||
* @return the newGroupName
|
||||
*/
|
||||
public String getNewGroupName() {
|
||||
return newGroupName;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param newGroupName the newGroupName to set
|
||||
*/
|
||||
public void setNewGroupName(String newGroupName) {
|
||||
this.newGroupName = newGroupName;
|
||||
}
|
||||
|
||||
/**
|
||||
* Add new group to bottom of model as AJAX operation.
|
||||
* @return null
|
||||
*/
|
||||
public String doAddGroup() {
|
||||
IngredientUI iui = new IngredientUI(null);
|
||||
iui.setIngGroup(true);
|
||||
iui.setItem(this.getNewGroupName());
|
||||
List<IngredientUI> ingUIList = this.getWrappedIngredients();
|
||||
ingUIList.add(iui);
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -165,8 +165,9 @@
|
|||
render="ingredientTable"
|
||||
/>
|
||||
</p:commandButton>
|
||||
<p:button value="Add Group"
|
||||
disabled="true"
|
||||
<p:commandButton
|
||||
value="Add Group"
|
||||
onclick="PF('addGroupDlg').show()"
|
||||
/>
|
||||
<p:button
|
||||
value="Add Recipe As Ingredient"
|
||||
|
@ -255,6 +256,7 @@
|
|||
id="ingOpt"
|
||||
value="#{item.optionalCB}"
|
||||
rendered="#{not item.ingGroup}"
|
||||
title="Optional item"
|
||||
/>
|
||||
</p:column>
|
||||
<p:column style="width: 13em">
|
||||
|
@ -274,9 +276,7 @@
|
|||
/>
|
||||
</p:inputText>
|
||||
</p:column>
|
||||
<p:column
|
||||
style="width: 2em"
|
||||
>
|
||||
<p:column style="width: 2em">
|
||||
<f:facet name="header">
|
||||
E
|
||||
</f:facet>
|
||||
|
@ -287,6 +287,7 @@
|
|||
update="editShopcatDlg"
|
||||
oncomplete="PF('editShopcatDlg').show()"
|
||||
title="Edit the shopping category for ing. key"
|
||||
rendered="#{not item.ingGroup}"
|
||||
/>
|
||||
</p:column>
|
||||
<p:column>
|
||||
|
@ -351,6 +352,7 @@
|
|||
</p:tab>
|
||||
</p:tabView>
|
||||
<p:commandButton id="doSave" value="Save"
|
||||
icon="pi pi-check"
|
||||
disabled="{not recipeDetailBean.dirty}"
|
||||
action="#{recipeDetailBean.doSave}"
|
||||
/>
|
||||
|
@ -359,6 +361,32 @@
|
|||
/>
|
||||
</h:form>
|
||||
</p:panel>
|
||||
<p:dialog id="addGroupDlg" widgetVar="addGroupDlg">
|
||||
<h:form id="frmAddGroup">
|
||||
<p:panelGrid columns="1">
|
||||
<p:outputLabel for="@next"
|
||||
value="Group Name"
|
||||
/>
|
||||
<p:inputText id="ctlNewGroupName"
|
||||
value="#{recipeDetailBean.newGroupName}"
|
||||
/>
|
||||
<p:panelGrid columns="2"
|
||||
style="width: 100%"
|
||||
>
|
||||
<p:commandButton id="agDlgOK"
|
||||
value="OK" style="width: 6em"
|
||||
action="#{recipeDetailBean.doAddGroup}"
|
||||
update="form1:tabGroupClient:ingredientTable"
|
||||
oncomplete="PF('addGroupDlg').hide()"
|
||||
/>
|
||||
<p:commandButton id="agDlgCan"
|
||||
value="Cancel" style="width: 6em"
|
||||
onclick="PF('addGroupDlg').hide()"
|
||||
/>
|
||||
</p:panelGrid>
|
||||
</p:panelGrid>
|
||||
</h:form>
|
||||
</p:dialog>
|
||||
<p:dialog id="editShopcatDlg"
|
||||
widgetVar="editShopcatDlg"
|
||||
>
|
||||
|
|
|
@ -9,80 +9,118 @@
|
|||
<!-- Print Recipe -->
|
||||
<ui:define name="title">Gourmet Recipe Manager</ui:define>
|
||||
<ui:define name="content">
|
||||
<h:messages />
|
||||
<img id="bigpix"
|
||||
SRC="/img/picture/#{recipeDetailBean.recipe.id}"
|
||||
/>
|
||||
<p:commandButton value="<- Back" action="main.jsf" />
|
||||
<p:panelGrid columns="2">
|
||||
<h:outputLabel for="@next" value="Category: " />
|
||||
<h:outputText
|
||||
value="#{adminMainBean.formatCategories(recipeDetailBean.recipe)}"
|
||||
/>
|
||||
<h:outputLabel for="@next" value="Cuisine: " />
|
||||
<h:outputText
|
||||
value="#{recipeDetailBean.recipe.cuisine}"
|
||||
/>
|
||||
<h:outputLabel for="@next" value="Prep Time: " />
|
||||
<h:outputText
|
||||
value="#{userSession.formatTime(recipeDetailBean.recipe.preptime)}"
|
||||
/>
|
||||
<h:outputLabel for="@next" value="Cook Time: " />
|
||||
<h:outputText label="Cook Time: "
|
||||
value="#{userSession.formatTime(recipeDetailBean.recipe.cooktime)}"
|
||||
/>
|
||||
</p:panelGrid>
|
||||
<!-- -->
|
||||
<p:panelGrid columns="1" id="ingredientsc">
|
||||
<f:facet name="header">
|
||||
<h:outputText styleClass="subtitle"
|
||||
value="Ingredients"
|
||||
/>
|
||||
</f:facet>
|
||||
<p:dataTable id="ingredients"
|
||||
showDirectLinksArrows="true"
|
||||
value="#{recipeDetailBean.ingredients}"
|
||||
var="ingredient"
|
||||
<h:form id="printForm">
|
||||
<h:messages />
|
||||
<p:panelGrid
|
||||
style="margin-bottom: 5px; border-style: none"
|
||||
>
|
||||
<p:column label="Amt" style="text-align: right">
|
||||
<h:outputText
|
||||
value="#{ingredient.displayAmount}"
|
||||
<p:column>
|
||||
<img id="bigpix"
|
||||
SRC="/img/picture/#{recipeDetailBean.recipe.id}"
|
||||
/>
|
||||
</p:column>
|
||||
<p:column label="Units">
|
||||
<h:outputText value="#{ingredient.unit}" />
|
||||
</p:column>
|
||||
<p:column label="Item">
|
||||
<h:outputText value="#{ingredient.item}" />
|
||||
</p:column>
|
||||
<p:column label="Optional" align="center">
|
||||
<p:selectBooleanCheckbox readonly="true"
|
||||
value="#{ingredient.optionalCB}"
|
||||
<p:column
|
||||
style="vertical-align: middle; text-align: left; border: none"
|
||||
>
|
||||
<p:commandButton value="<- Back"
|
||||
style="margin-left: 2em" immediate="true"
|
||||
action="/main.jsf"
|
||||
/>
|
||||
</p:column>
|
||||
</p:dataTable>
|
||||
</p:panelGrid>
|
||||
<h:outputText
|
||||
value="Recipe ID: #{recipeDetailBean.recipe.id}"
|
||||
/>
|
||||
<p:panelGrid columns="1">
|
||||
<f:facet name="header">
|
||||
<h:outputText styleClass="subtitle"
|
||||
value="Instructions"
|
||||
</p:panelGrid>
|
||||
<p:panelGrid columns="2">
|
||||
<h:outputLabel for="@next" value="Category: " />
|
||||
<h:outputText
|
||||
value="#{userSession.formatCategories(recipeDetailBean.recipe)}"
|
||||
/>
|
||||
</f:facet>
|
||||
<h:outputLabel for="@next" value="Cuisine: " />
|
||||
<h:outputText
|
||||
value="#{recipeDetailBean.recipe.cuisine}"
|
||||
/>
|
||||
<h:outputLabel for="@next" value="Prep Time: " />
|
||||
<h:outputText
|
||||
value="#{userSession.formatTime(recipeDetailBean.recipe.preptime)}"
|
||||
/>
|
||||
<h:outputLabel for="@next" value="Cook Time: " />
|
||||
<h:outputText label="Cook Time: "
|
||||
value="#{userSession.formatTime(recipeDetailBean.recipe.cooktime)}"
|
||||
/>
|
||||
</p:panelGrid>
|
||||
<!-- -->
|
||||
<h:outputText id="instructions" escape="false"
|
||||
value="#{recipeDetailBean.instructions}"
|
||||
<p:panelGrid id="ingredientsc">
|
||||
<f:facet name="header">
|
||||
<h:outputText styleClass="subtitle"
|
||||
value="Ingredients"
|
||||
/>
|
||||
</f:facet>
|
||||
<p:column style="padding: 0px 4px">
|
||||
<p:dataTable id="ingredients"
|
||||
showDirectLinksArrows="true"
|
||||
value="#{recipeDetailBean.ingredients}"
|
||||
var="ingredient"
|
||||
>
|
||||
<p:column
|
||||
style="text-align: right; width: 2em"
|
||||
>
|
||||
<f:facet name="header">
|
||||
Amt.
|
||||
</f:facet>
|
||||
<h:outputText
|
||||
value="#{ingredient.displayAmount}"
|
||||
/>
|
||||
</p:column>
|
||||
<p:column style="width: 6em">
|
||||
<f:facet name="header">Units</f:facet>
|
||||
<h:outputText
|
||||
value="#{ingredient.unit}"
|
||||
/>
|
||||
</p:column>
|
||||
<p:column>
|
||||
<f:facet name="header">
|
||||
Item
|
||||
</f:facet>
|
||||
<h:outputText
|
||||
value="#{ingredient.item}"
|
||||
/>
|
||||
</p:column>
|
||||
<p:column align="center"
|
||||
style="width: 2em"
|
||||
>
|
||||
<f:facet name="header">
|
||||
Opt.
|
||||
</f:facet>
|
||||
<p:selectBooleanCheckbox
|
||||
readonly="true"
|
||||
value="#{ingredient.optionalCB}"
|
||||
/>
|
||||
</p:column>
|
||||
</p:dataTable>
|
||||
</p:column>
|
||||
</p:panelGrid>
|
||||
<h:outputText
|
||||
value="Recipe ID: #{recipeDetailBean.recipe.id}"
|
||||
/>
|
||||
</p:panelGrid>
|
||||
<p:panelGrid columns="1">
|
||||
<f:facet name="header">
|
||||
<h:outputText styleClass="subtitle" value="Notes" />
|
||||
</f:facet>
|
||||
<h:outputText escape="false"
|
||||
value="#{recipeDetailBean.modifications}"
|
||||
/>
|
||||
</p:panelGrid>
|
||||
<p:panelGrid columns="1">
|
||||
<f:facet name="header">
|
||||
<h:outputText styleClass="subtitle"
|
||||
value="Instructions"
|
||||
/>
|
||||
</f:facet>
|
||||
<!-- -->
|
||||
<h:outputText id="instructions" escape="false"
|
||||
value="#{recipeDetailBean.instructions}"
|
||||
/>
|
||||
</p:panelGrid>
|
||||
<p:panelGrid columns="1">
|
||||
<f:facet name="header">
|
||||
<h:outputText styleClass="subtitle"
|
||||
value="Notes"
|
||||
/>
|
||||
</f:facet>
|
||||
<h:outputText escape="false"
|
||||
value="#{recipeDetailBean.modifications}"
|
||||
/>
|
||||
</p:panelGrid>
|
||||
</h:form>
|
||||
</ui:define>
|
||||
</ui:composition>
|
Loading…
Reference in New Issue
Block a user