misc mainpage and detail edit cleanup

This commit is contained in:
Tim Holloway 2022-01-10 19:43:10 -05:00
parent ce7576e459
commit d4d3179017
6 changed files with 81 additions and 57 deletions

View File

@ -92,6 +92,7 @@ public class AdminMainBean implements Serializable {
*/
public void setSearchText(String searchText) {
this.searchText = searchText;
userSession.setLastSearch(searchText);
}
/**/

View File

@ -159,6 +159,7 @@ public class RecipeDetailBean implements Serializable {
/**
* @return the category as a comma-separated list.
* @see #stringifyCategories(Recipe)
*/
public String getCategory() {
return category;
@ -241,6 +242,8 @@ public class RecipeDetailBean implements Serializable {
getIngredients().setWrappedData(
buildIngredientFacade(recipe.getIngredientHash()));
stringifyCategories(recipe);
log.info("Set recipe: " + this.recipe);
}
@ -255,7 +258,19 @@ public class RecipeDetailBean implements Serializable {
if (recipe == 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();
StringBuffer sb = new StringBuffer(35);
boolean first = true;
@ -268,7 +283,6 @@ public class RecipeDetailBean implements Serializable {
sb.append(cat.getCategory());
}
this.category = sb.toString();
return recipe;
}
/**
@ -344,7 +358,8 @@ public class RecipeDetailBean implements Serializable {
if (instructions == null) {
return "";
}
String s = instructions.replace("\n\n", "<p/>");
String s = instructions.replace("\r\n", "<p/>")
.replace("\n\n", "<p/>");
s = s.replace("\n", "<br/>");
return s;
}
@ -464,11 +479,11 @@ public class RecipeDetailBean implements Serializable {
}
private void auditRows(List<IngredientUI> rows) {
log.info("=== AUDIT ROWS ===");
for ( IngredientUI row : rows ) {
log.info((row.isSelected() ? "[X]" : "[ ]" ) +" ROW="+row);
}
log.info("=== DONE ===");
// log.info("=== AUDIT ROWS ===");
// for ( IngredientUI row : rows ) {
// log.info((row.isSelected() ? "[X]" : "[ ]" ) +" ROW="+row);
// }
// log.info("=== DONE ===");
}
/**
@ -527,8 +542,8 @@ public class RecipeDetailBean implements Serializable {
* Invoked when the "E"(dit" button for Ingkey shopping
* category has been clicked.
*
* @param item The item whose ingredient key will
* have its shopping category edited. Resets the dialog
* @param item The item whose ingredient key will have its
* shopping category edited. Resets the dialog
* backing bean internal state.
*/
public void ajaxEditShopcat(IngredientUI item) {
@ -537,8 +552,8 @@ public class RecipeDetailBean implements Serializable {
}
/**
* On "OK" for edit shopcat where shopcat has changed,
* update the shopcat Entity and the ingredients.
* On "OK" for edit shopcat where shopcat has changed, update
* the shopcat Entity and the ingredients.
*/
public void doUpdateShopcat() {
@ -555,20 +570,20 @@ public class RecipeDetailBean implements Serializable {
sc = new Shopcat();
sc.setIngkey(key);
} else {
if ( StringUtils.equals(sc.getShopcategory(), catname) ) {
if (StringUtils.equals(sc.getShopcategory(),
catname)) {
return; // No change
}
}
sc.setShopcategory(catname);
/*
* Because the database does not have a UNIQUE
* constraint on ingkeys, we must delete old
* shopcat(s) for this key before adding (updating)
* the new shopcat.
* Because the database does not have a UNIQUE constraint
* on ingkeys, we must delete old shopcat(s) for this key
* before adding (updating) the new shopcat.
*/
this.recipeService.deleteShopcatByIngKey(key);
if (! StringUtils.isBlank(catname)) {
if (!StringUtils.isBlank(catname)) {
this.recipeService.saveShopcat(sc);
}
updateDisplayedShopcats(key, sc);
@ -711,14 +726,14 @@ public class RecipeDetailBean implements Serializable {
List<Ingredient> iList = recipe.getIngredientHash();
iList.clear();
for (IngredientUI iui : saveIng) {
if ( iui.isIngGroup() ) {
if (iui.isIngGroup()) {
// Ing group is an attribute of ingredients.
continue;
}
Ingredient ing = iui.getIngredient();
ing.setRecipe(recipe);
if (!updateShopcat(iui)) { // Obsolete???
log.info("Shopcat has not been updated" +iui);
log.info("Shopcat has not been updated" + iui);
return false;
}
iList.add(ing);
@ -798,7 +813,7 @@ public class RecipeDetailBean implements Serializable {
cat.setId(ocat.getId());
}
}
recipe.setCategories(new HashSet(newList));
recipe.setCategories(new HashSet<Category>(newList));
}
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() {
if (suggestCategory == null) {

View File

@ -54,9 +54,6 @@
</h:form>
<!-- -->
<h:form id="frmOpErr">
<p:commandButton type="button"
onclick="PF('opError').show()"
/>
<p:confirmDialog
message="Session may have expired."
header="Error"

View File

@ -2,11 +2,18 @@
color: red;
background-color: blue;
}
.editIngGroupRow {
background-color: aqua;
font-weight: bold;
}
.displayIngGroupRow {
background-color: aqua;
font-weight: bold;
}
textarea {
font-family: 'latoregular', 'Trebuchet MS,Arial,Helvetica,sans-serif';
font-size: 1em
}

View File

@ -359,9 +359,9 @@
>
<p:panel header="Instructions">
<div id="insection">
<p:textEditor
<h:inputTextarea
id="ctlInstructions"
height="320"
rows="30" cols="120"
escape="false"
value="#{recipeDetailBean.recipe.instructions}"
/>
@ -370,8 +370,9 @@
</p:tab>
<p:tab id="notesTab" title="Notes">
<p:panel header="Notes">
<p:textEditor id="ctlNotes"
height="320" escape="false"
<h:inputTextarea id="ctlNotes"
rows="30" cols="120"
escape="false"
value="#{recipeDetailBean.recipe.modifications}"
/>
</p:panel>
@ -386,6 +387,11 @@
ajax="false" immediate="true"
action="recipeDetails.jsf"
/>
<p:commandButton id="doHome" value="Home"
icon="ui-icon-home"
ajax="false" immediate="true"
action="home"
/>
</h:form>
</p:panel>
<p:dialog id="addGroupDlg" widgetVar="addGroupDlg">

View File

@ -7,13 +7,11 @@
>
<ui:define name="title">Gourmet Recipe Manager</ui:define>
<ui:define name="content">
<h:messages/>
<h:messages />
<h:form id="form1">
<div>
<span class="ui-input-icon-left"> <i
class="pi pi-search"
/> <p:inputText id="searchFor" size="45"
placeholder="Recipe title, (todo cuisine, etc.)"
<p:inputText id="searchFor" size="45"
placeholder="Recipe title/cuisine/category, etc.)"
value="#{adminMainBean.searchText}"
>
<f:ajax event="change" execute="@this"
@ -21,10 +19,11 @@
listener="#{adminMainBean.ajaxUpdateList}"
/>
</p:inputText>
</span>
<p:defaultCommand target="find" />
<p:commandButton id="find" value="Find"
icon="ui-icon-search" defaultCommand="true"
icon="ui-icon-search"
action="#{adminMainBean.doFind}"
update=":form2:table1"
/>
<p:outputLabel for="@next" value="Search for " />
<p:selectOneMenu id="ctlSearchType"
@ -34,17 +33,16 @@
<f:selectItems
value="#{userSession.searchTypeList}"
/>
<p:ajax/>
<p:ajax />
</p:selectOneMenu>
<p:commandButton id="ctlClear" value="Clear"
immediate="true" icon="ui-icon-close"
update="form1:searchFor form2:table1"
icon="ui-icon-close"
update="@form:searchFor :form2:table1"
action="#{adminMainBean.ajaxClearList}"
/>
<p:commandButton value="New Recipe"
action="#{adminMainBean.doNewRecipe}"
/>
<p:defaultCommand target="find" />
</div>
</h:form>
<h:form id="form2">