misc mainpage and detail edit cleanup
This commit is contained in:
parent
ce7576e459
commit
d4d3179017
|
@ -92,6 +92,7 @@ public class AdminMainBean implements Serializable {
|
||||||
*/
|
*/
|
||||||
public void setSearchText(String searchText) {
|
public void setSearchText(String searchText) {
|
||||||
this.searchText = searchText;
|
this.searchText = searchText;
|
||||||
|
userSession.setLastSearch(searchText);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**/
|
/**/
|
||||||
|
|
|
@ -159,6 +159,7 @@ public class RecipeDetailBean implements Serializable {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @return the category as a comma-separated list.
|
* @return the category as a comma-separated list.
|
||||||
|
* @see #stringifyCategories(Recipe)
|
||||||
*/
|
*/
|
||||||
public String getCategory() {
|
public String getCategory() {
|
||||||
return category;
|
return category;
|
||||||
|
@ -241,6 +242,8 @@ public class RecipeDetailBean implements Serializable {
|
||||||
|
|
||||||
getIngredients().setWrappedData(
|
getIngredients().setWrappedData(
|
||||||
buildIngredientFacade(recipe.getIngredientHash()));
|
buildIngredientFacade(recipe.getIngredientHash()));
|
||||||
|
stringifyCategories(recipe);
|
||||||
|
|
||||||
log.info("Set recipe: " + this.recipe);
|
log.info("Set recipe: " + this.recipe);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -255,7 +258,19 @@ public class RecipeDetailBean implements Serializable {
|
||||||
if (recipe == null) {
|
if (recipe == null) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
stringifyCategories(recipe);
|
||||||
|
return recipe;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Categories are a Set attached to recipe. Build
|
||||||
|
* a displayable comma-separated list of them.
|
||||||
|
*
|
||||||
|
* @param recipe Recipe to get categories from.
|
||||||
|
*
|
||||||
|
* @see #getCategory()
|
||||||
|
*/
|
||||||
|
private void stringifyCategories(Recipe recipe) {
|
||||||
Set<Category> cList = recipe.getCategories();
|
Set<Category> cList = recipe.getCategories();
|
||||||
StringBuffer sb = new StringBuffer(35);
|
StringBuffer sb = new StringBuffer(35);
|
||||||
boolean first = true;
|
boolean first = true;
|
||||||
|
@ -268,7 +283,6 @@ public class RecipeDetailBean implements Serializable {
|
||||||
sb.append(cat.getCategory());
|
sb.append(cat.getCategory());
|
||||||
}
|
}
|
||||||
this.category = sb.toString();
|
this.category = sb.toString();
|
||||||
return recipe;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -344,7 +358,8 @@ public class RecipeDetailBean implements Serializable {
|
||||||
if (instructions == null) {
|
if (instructions == null) {
|
||||||
return "";
|
return "";
|
||||||
}
|
}
|
||||||
String s = instructions.replace("\n\n", "<p/>");
|
String s = instructions.replace("\r\n", "<p/>")
|
||||||
|
.replace("\n\n", "<p/>");
|
||||||
s = s.replace("\n", "<br/>");
|
s = s.replace("\n", "<br/>");
|
||||||
return s;
|
return s;
|
||||||
}
|
}
|
||||||
|
@ -413,11 +428,11 @@ public class RecipeDetailBean implements Serializable {
|
||||||
this.setMoveUpAble(moveUpable && selectable);
|
this.setMoveUpAble(moveUpable && selectable);
|
||||||
this.setMoveDownAble(moveDownable && selectable);
|
this.setMoveDownAble(moveDownable && selectable);
|
||||||
this.setSelectable(selectable);
|
this.setSelectable(selectable);
|
||||||
|
|
||||||
auditRows(ingList);
|
auditRows(ingList);
|
||||||
}
|
}
|
||||||
|
|
||||||
// ---
|
// ---
|
||||||
public void setMoveUpAble(boolean moveUpable) {
|
public void setMoveUpAble(boolean moveUpable) {
|
||||||
this.moveUpable = moveUpable;
|
this.moveUpable = moveUpable;
|
||||||
}
|
}
|
||||||
|
@ -464,11 +479,11 @@ public class RecipeDetailBean implements Serializable {
|
||||||
}
|
}
|
||||||
|
|
||||||
private void auditRows(List<IngredientUI> rows) {
|
private void auditRows(List<IngredientUI> rows) {
|
||||||
log.info("=== AUDIT ROWS ===");
|
// log.info("=== AUDIT ROWS ===");
|
||||||
for ( IngredientUI row : rows ) {
|
// for ( IngredientUI row : rows ) {
|
||||||
log.info((row.isSelected() ? "[X]" : "[ ]" ) +" ROW="+row);
|
// log.info((row.isSelected() ? "[X]" : "[ ]" ) +" ROW="+row);
|
||||||
}
|
// }
|
||||||
log.info("=== DONE ===");
|
// log.info("=== DONE ===");
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -527,21 +542,21 @@ public class RecipeDetailBean implements Serializable {
|
||||||
* Invoked when the "E"(dit" button for Ingkey shopping
|
* Invoked when the "E"(dit" button for Ingkey shopping
|
||||||
* category has been clicked.
|
* category has been clicked.
|
||||||
*
|
*
|
||||||
* @param item The item whose ingredient key will
|
* @param item The item whose ingredient key will have its
|
||||||
* have its shopping category edited. Resets the dialog
|
* shopping category edited. Resets the dialog
|
||||||
* backing bean internal state.
|
* backing bean internal state.
|
||||||
*/
|
*/
|
||||||
public void ajaxEditShopcat(IngredientUI item) {
|
public void ajaxEditShopcat(IngredientUI item) {
|
||||||
editShopcatBean.beginEdit(item.getIngkey(),
|
editShopcatBean.beginEdit(item.getIngkey(),
|
||||||
item.getShopCat());
|
item.getShopCat());
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* On "OK" for edit shopcat where shopcat has changed,
|
* On "OK" for edit shopcat where shopcat has changed, update
|
||||||
* update the shopcat Entity and the ingredients.
|
* the shopcat Entity and the ingredients.
|
||||||
*/
|
*/
|
||||||
public void doUpdateShopcat() {
|
public void doUpdateShopcat() {
|
||||||
|
|
||||||
final String key = editShopcatBean.getIngkey();
|
final String key = editShopcatBean.getIngkey();
|
||||||
if (StringUtils.isBlank(key)) {
|
if (StringUtils.isBlank(key)) {
|
||||||
return; // Do not set category if no ingKey
|
return; // Do not set category if no ingKey
|
||||||
|
@ -555,20 +570,20 @@ public class RecipeDetailBean implements Serializable {
|
||||||
sc = new Shopcat();
|
sc = new Shopcat();
|
||||||
sc.setIngkey(key);
|
sc.setIngkey(key);
|
||||||
} else {
|
} else {
|
||||||
if ( StringUtils.equals(sc.getShopcategory(), catname) ) {
|
if (StringUtils.equals(sc.getShopcategory(),
|
||||||
|
catname)) {
|
||||||
return; // No change
|
return; // No change
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
sc.setShopcategory(catname);
|
sc.setShopcategory(catname);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Because the database does not have a UNIQUE
|
* Because the database does not have a UNIQUE constraint
|
||||||
* constraint on ingkeys, we must delete old
|
* on ingkeys, we must delete old shopcat(s) for this key
|
||||||
* shopcat(s) for this key before adding (updating)
|
* before adding (updating) the new shopcat.
|
||||||
* the new shopcat.
|
|
||||||
*/
|
*/
|
||||||
this.recipeService.deleteShopcatByIngKey(key);
|
this.recipeService.deleteShopcatByIngKey(key);
|
||||||
if (! StringUtils.isBlank(catname)) {
|
if (!StringUtils.isBlank(catname)) {
|
||||||
this.recipeService.saveShopcat(sc);
|
this.recipeService.saveShopcat(sc);
|
||||||
}
|
}
|
||||||
updateDisplayedShopcats(key, sc);
|
updateDisplayedShopcats(key, sc);
|
||||||
|
@ -711,14 +726,14 @@ public class RecipeDetailBean implements Serializable {
|
||||||
List<Ingredient> iList = recipe.getIngredientHash();
|
List<Ingredient> iList = recipe.getIngredientHash();
|
||||||
iList.clear();
|
iList.clear();
|
||||||
for (IngredientUI iui : saveIng) {
|
for (IngredientUI iui : saveIng) {
|
||||||
if ( iui.isIngGroup() ) {
|
if (iui.isIngGroup()) {
|
||||||
// Ing group is an attribute of ingredients.
|
// Ing group is an attribute of ingredients.
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
Ingredient ing = iui.getIngredient();
|
Ingredient ing = iui.getIngredient();
|
||||||
ing.setRecipe(recipe);
|
ing.setRecipe(recipe);
|
||||||
if (!updateShopcat(iui)) { // Obsolete???
|
if (!updateShopcat(iui)) { // Obsolete???
|
||||||
log.info("Shopcat has not been updated" +iui);
|
log.info("Shopcat has not been updated" + iui);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
iList.add(ing);
|
iList.add(ing);
|
||||||
|
@ -769,7 +784,7 @@ public class RecipeDetailBean implements Serializable {
|
||||||
ing.setShopCat(scat);
|
ing.setShopCat(scat);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Parse out the comma-separated category text control and
|
* Parse out the comma-separated category text control and
|
||||||
* post the results as children of the recipe
|
* post the results as children of the recipe
|
||||||
|
@ -798,7 +813,7 @@ public class RecipeDetailBean implements Serializable {
|
||||||
cat.setId(ocat.getId());
|
cat.setId(ocat.getId());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
recipe.setCategories(new HashSet(newList));
|
recipe.setCategories(new HashSet<Category>(newList));
|
||||||
}
|
}
|
||||||
|
|
||||||
private Category searchCategory(Set<Category> oldList,
|
private Category searchCategory(Set<Category> oldList,
|
||||||
|
@ -978,7 +993,7 @@ public class RecipeDetailBean implements Serializable {
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @return the suggestCategory
|
* @return the suggestCategory List
|
||||||
*/
|
*/
|
||||||
public List<String> getSuggestCategory() {
|
public List<String> getSuggestCategory() {
|
||||||
if (suggestCategory == null) {
|
if (suggestCategory == null) {
|
||||||
|
|
|
@ -54,9 +54,6 @@
|
||||||
</h:form>
|
</h:form>
|
||||||
<!-- -->
|
<!-- -->
|
||||||
<h:form id="frmOpErr">
|
<h:form id="frmOpErr">
|
||||||
<p:commandButton type="button"
|
|
||||||
onclick="PF('opError').show()"
|
|
||||||
/>
|
|
||||||
<p:confirmDialog
|
<p:confirmDialog
|
||||||
message="Session may have expired."
|
message="Session may have expired."
|
||||||
header="Error"
|
header="Error"
|
||||||
|
|
|
@ -2,11 +2,18 @@
|
||||||
color: red;
|
color: red;
|
||||||
background-color: blue;
|
background-color: blue;
|
||||||
}
|
}
|
||||||
|
|
||||||
.editIngGroupRow {
|
.editIngGroupRow {
|
||||||
background-color: aqua;
|
background-color: aqua;
|
||||||
font-weight: bold;
|
font-weight: bold;
|
||||||
}
|
}
|
||||||
|
|
||||||
.displayIngGroupRow {
|
.displayIngGroupRow {
|
||||||
background-color: aqua;
|
background-color: aqua;
|
||||||
font-weight: bold;
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
|
||||||
|
textarea {
|
||||||
|
font-family: 'latoregular', 'Trebuchet MS,Arial,Helvetica,sans-serif';
|
||||||
|
font-size: 1em
|
||||||
}
|
}
|
|
@ -359,9 +359,9 @@
|
||||||
>
|
>
|
||||||
<p:panel header="Instructions">
|
<p:panel header="Instructions">
|
||||||
<div id="insection">
|
<div id="insection">
|
||||||
<p:textEditor
|
<h:inputTextarea
|
||||||
id="ctlInstructions"
|
id="ctlInstructions"
|
||||||
height="320"
|
rows="30" cols="120"
|
||||||
escape="false"
|
escape="false"
|
||||||
value="#{recipeDetailBean.recipe.instructions}"
|
value="#{recipeDetailBean.recipe.instructions}"
|
||||||
/>
|
/>
|
||||||
|
@ -370,8 +370,9 @@
|
||||||
</p:tab>
|
</p:tab>
|
||||||
<p:tab id="notesTab" title="Notes">
|
<p:tab id="notesTab" title="Notes">
|
||||||
<p:panel header="Notes">
|
<p:panel header="Notes">
|
||||||
<p:textEditor id="ctlNotes"
|
<h:inputTextarea id="ctlNotes"
|
||||||
height="320" escape="false"
|
rows="30" cols="120"
|
||||||
|
escape="false"
|
||||||
value="#{recipeDetailBean.recipe.modifications}"
|
value="#{recipeDetailBean.recipe.modifications}"
|
||||||
/>
|
/>
|
||||||
</p:panel>
|
</p:panel>
|
||||||
|
@ -386,6 +387,11 @@
|
||||||
ajax="false" immediate="true"
|
ajax="false" immediate="true"
|
||||||
action="recipeDetails.jsf"
|
action="recipeDetails.jsf"
|
||||||
/>
|
/>
|
||||||
|
<p:commandButton id="doHome" value="Home"
|
||||||
|
icon="ui-icon-home"
|
||||||
|
ajax="false" immediate="true"
|
||||||
|
action="home"
|
||||||
|
/>
|
||||||
</h:form>
|
</h:form>
|
||||||
</p:panel>
|
</p:panel>
|
||||||
<p:dialog id="addGroupDlg" widgetVar="addGroupDlg">
|
<p:dialog id="addGroupDlg" widgetVar="addGroupDlg">
|
||||||
|
|
|
@ -7,24 +7,23 @@
|
||||||
>
|
>
|
||||||
<ui:define name="title">Gourmet Recipe Manager</ui:define>
|
<ui:define name="title">Gourmet Recipe Manager</ui:define>
|
||||||
<ui:define name="content">
|
<ui:define name="content">
|
||||||
<h:messages/>
|
<h:messages />
|
||||||
<h:form id="form1">
|
<h:form id="form1">
|
||||||
<div>
|
<div>
|
||||||
<span class="ui-input-icon-left"> <i
|
<p:inputText id="searchFor" size="45"
|
||||||
class="pi pi-search"
|
placeholder="Recipe title/cuisine/category, etc.)"
|
||||||
/> <p:inputText id="searchFor" size="45"
|
value="#{adminMainBean.searchText}"
|
||||||
placeholder="Recipe title, (todo cuisine, etc.)"
|
>
|
||||||
value="#{adminMainBean.searchText}"
|
<f:ajax event="change" execute="@this"
|
||||||
>
|
render="form2:table1"
|
||||||
<f:ajax event="change" execute="@this"
|
listener="#{adminMainBean.ajaxUpdateList}"
|
||||||
render="form2:table1"
|
/>
|
||||||
listener="#{adminMainBean.ajaxUpdateList}"
|
</p:inputText>
|
||||||
/>
|
<p:defaultCommand target="find" />
|
||||||
</p:inputText>
|
|
||||||
</span>
|
|
||||||
<p:commandButton id="find" value="Find"
|
<p:commandButton id="find" value="Find"
|
||||||
icon="ui-icon-search" defaultCommand="true"
|
icon="ui-icon-search"
|
||||||
action="#{adminMainBean.doFind}"
|
action="#{adminMainBean.doFind}"
|
||||||
|
update=":form2:table1"
|
||||||
/>
|
/>
|
||||||
<p:outputLabel for="@next" value="Search for " />
|
<p:outputLabel for="@next" value="Search for " />
|
||||||
<p:selectOneMenu id="ctlSearchType"
|
<p:selectOneMenu id="ctlSearchType"
|
||||||
|
@ -34,17 +33,16 @@
|
||||||
<f:selectItems
|
<f:selectItems
|
||||||
value="#{userSession.searchTypeList}"
|
value="#{userSession.searchTypeList}"
|
||||||
/>
|
/>
|
||||||
<p:ajax/>
|
<p:ajax />
|
||||||
</p:selectOneMenu>
|
</p:selectOneMenu>
|
||||||
<p:commandButton id="ctlClear" value="Clear"
|
<p:commandButton id="ctlClear" value="Clear"
|
||||||
immediate="true" icon="ui-icon-close"
|
icon="ui-icon-close"
|
||||||
update="form1:searchFor form2:table1"
|
update="@form:searchFor :form2:table1"
|
||||||
action="#{adminMainBean.ajaxClearList}"
|
action="#{adminMainBean.ajaxClearList}"
|
||||||
/>
|
/>
|
||||||
<p:commandButton value="New Recipe"
|
<p:commandButton value="New Recipe"
|
||||||
action="#{adminMainBean.doNewRecipe}"
|
action="#{adminMainBean.doNewRecipe}"
|
||||||
/>
|
/>
|
||||||
<p:defaultCommand target="find" />
|
|
||||||
</div>
|
</div>
|
||||||
</h:form>
|
</h:form>
|
||||||
<h:form id="form2">
|
<h:form id="form2">
|
||||||
|
|
Loading…
Reference in New Issue
Block a user