Tab for editing shopping categories completed.
This commit is contained in:
parent
1290c66055
commit
75a8487cfb
|
@ -12,7 +12,6 @@ import javax.inject.Inject;
|
||||||
import javax.inject.Named;
|
import javax.inject.Named;
|
||||||
|
|
||||||
import org.apache.commons.lang3.StringUtils;
|
import org.apache.commons.lang3.StringUtils;
|
||||||
import org.primefaces.event.ReorderEvent;
|
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
|
|
||||||
|
@ -151,9 +150,9 @@ public class ShoppingListBean implements Serializable {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private List<Shopcat> shopcatList;
|
private List<String> shopcatList;
|
||||||
|
|
||||||
public List<Shopcat> getShopcatList() {
|
public List<String> getShopcatList() {
|
||||||
if (shopcatList == null) {
|
if (shopcatList == null) {
|
||||||
shopcatList = loadShopcatList();
|
shopcatList = loadShopcatList();
|
||||||
}
|
}
|
||||||
|
@ -163,9 +162,9 @@ public class ShoppingListBean implements Serializable {
|
||||||
@Inject
|
@Inject
|
||||||
ShopcatRepository shopcatRepository;
|
ShopcatRepository shopcatRepository;
|
||||||
|
|
||||||
private List<Shopcat> loadShopcatList() {
|
private List<String> loadShopcatList() {
|
||||||
return shopcatRepository
|
return shopcatRepository.findDistinctCategoryNative();
|
||||||
.findAllByOrderByShopcategoryAsc();
|
// .findAllByOrderByShopcategoryAsc();
|
||||||
}
|
}
|
||||||
|
|
||||||
private Shopcat xeditShopcat = new Shopcat();
|
private Shopcat xeditShopcat = new Shopcat();
|
||||||
|
@ -180,19 +179,19 @@ public class ShoppingListBean implements Serializable {
|
||||||
}
|
}
|
||||||
|
|
||||||
public void doEditShopcat(int scId) {
|
public void doEditShopcat(int scId) {
|
||||||
xeditShopcat = null;
|
// xeditShopcat = null;
|
||||||
final List<Shopcat> scl = getShopcatList();
|
// final List<Shopcat> scl = getShopcatList();
|
||||||
for (Shopcat sc : scl) {
|
// for (Shopcat sc : scl) {
|
||||||
if (sc.getId() == scId) {
|
// if (sc.getId() == scId) {
|
||||||
xeditShopcat = sc;
|
// xeditShopcat = sc;
|
||||||
this.oldShopcategoryName = sc.getShopcategory();
|
// this.oldShopcategoryName = sc.getShopcategory();
|
||||||
if (sc.getPosition() == null) {
|
// if (sc.getPosition() == null) {
|
||||||
sc.setPosition(0);
|
// sc.setPosition(0);
|
||||||
}
|
// }
|
||||||
return;
|
// return;
|
||||||
}
|
// }
|
||||||
}
|
// }
|
||||||
log.error("SHOPCAT " + scId + " NOT FOUND");
|
// log.error("SHOPCAT " + scId + " NOT FOUND");
|
||||||
}
|
}
|
||||||
|
|
||||||
public void ajaxOnClickShopcatIngkey() {
|
public void ajaxOnClickShopcatIngkey() {
|
||||||
|
@ -202,12 +201,103 @@ public class ShoppingListBean implements Serializable {
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Updates all ingredient keys for shopcat name-change.
|
* Updates all ingredient keys for shopcat name-change. Note
|
||||||
* Note that once done, this cannot be undone!
|
* that once done, this cannot be undone!
|
||||||
*/
|
*/
|
||||||
public void ajaxOnClickShopcat() {
|
public void ajaxOnClickShopcat() {
|
||||||
this.shopcatRepository.UpdateShopcats(
|
this.shopcatRepository.UpdateShopcats(
|
||||||
this.oldShopcategoryName, xeditShopcat.getShopcategory());
|
this.oldShopcategoryName,
|
||||||
|
xeditShopcat.getShopcategory());
|
||||||
this.shopcatList = null;
|
this.shopcatList = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// ===
|
||||||
|
private String selectedShopcat;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return the selectedShopcat
|
||||||
|
*/
|
||||||
|
public String getSelectedShopcat() {
|
||||||
|
return selectedShopcat;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param selectedShopcat the selectedShopcat to set
|
||||||
|
*/
|
||||||
|
public void setSelectedShopcat(String selectedShopcat) {
|
||||||
|
this.selectedShopcat = selectedShopcat;
|
||||||
|
this.ingkeyList = null;
|
||||||
|
}
|
||||||
|
|
||||||
|
private List<String> selectedIngkey;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return the selectedIngkey
|
||||||
|
*/
|
||||||
|
public List<String> getSelectedIngkey() {
|
||||||
|
return selectedIngkey;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param selectedIngkey the selectedIngkey to set
|
||||||
|
*/
|
||||||
|
public void setSelectedIngkey(List<String> selectedIngkey) {
|
||||||
|
this.selectedIngkey = selectedIngkey;
|
||||||
|
}
|
||||||
|
|
||||||
|
private List<String> ingkeyList;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return the ingkeyList
|
||||||
|
*/
|
||||||
|
public List<String> getIngkeyList() {
|
||||||
|
if (ingkeyList == null) {
|
||||||
|
ingkeyList = loadIngkeyListFor(selectedShopcat);
|
||||||
|
}
|
||||||
|
return ingkeyList;
|
||||||
|
}
|
||||||
|
|
||||||
|
private List<String> loadIngkeyListFor(
|
||||||
|
String selectedShopcat2) {
|
||||||
|
List<String> list = this.shopcatRepository
|
||||||
|
.findByIngkeySorted(selectedShopcat2);
|
||||||
|
return list;
|
||||||
|
}
|
||||||
|
|
||||||
|
private String newShopcat;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return the newShopcat
|
||||||
|
*/
|
||||||
|
public String getNewShopcat() {
|
||||||
|
return newShopcat;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param newShopcat the newShopcat to set
|
||||||
|
*/
|
||||||
|
public void setNewShopcat(String newShopcat) {
|
||||||
|
this.newShopcat = newShopcat;
|
||||||
|
}
|
||||||
|
|
||||||
|
public List<String> suggestShopcat(String query) {
|
||||||
|
return this.shopcatList;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void doChangeShopcat() {
|
||||||
|
String oldCat = this.getSelectedShopcat();
|
||||||
|
String newCat = this.getNewShopcat();
|
||||||
|
if (oldCat.equals(newCat)) {
|
||||||
|
return; // effective NO-OP
|
||||||
|
}
|
||||||
|
newCat = newCat.trim();
|
||||||
|
if ( StringUtils.isBlank(newCat)) {
|
||||||
|
this.shopcatRepository
|
||||||
|
.deleteShopcatFor(this.getSelectedIngkey());
|
||||||
|
} else {
|
||||||
|
this.shopcatRepository
|
||||||
|
.updateShopcatFor(newCat, this.getSelectedIngkey());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -12,8 +12,8 @@ import org.springframework.stereotype.Repository;
|
||||||
import com.mousetech.gourmetj.persistence.model.Shopcat;
|
import com.mousetech.gourmetj.persistence.model.Shopcat;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* JpaRepository for Shopping Categories, which relate ManyToOne to Ingredient.
|
* JpaRepository for Shopping Categories, which relate ManyToOne
|
||||||
* Service method is @see RecipeService
|
* to Ingredient. Service method is @see RecipeService
|
||||||
*
|
*
|
||||||
* @author timh
|
* @author timh
|
||||||
* @since Dec 28, 2021
|
* @since Dec 28, 2021
|
||||||
|
@ -34,11 +34,24 @@ public interface ShopcatRepository
|
||||||
@Transactional
|
@Transactional
|
||||||
@Query(value = "UPDATE Shopcat set shopcategory = :newCatname WHERE shopcategory = :oldCatname")
|
@Query(value = "UPDATE Shopcat set shopcategory = :newCatname WHERE shopcategory = :oldCatname")
|
||||||
@Modifying
|
@Modifying
|
||||||
public int UpdateShopcats(String oldCatname, String newCatname);
|
public int UpdateShopcats(String oldCatname,
|
||||||
|
String newCatname);
|
||||||
|
|
||||||
public Shopcat findShopcatByIngkey(String ingkey);
|
public Shopcat findShopcatByIngkey(String ingkey);
|
||||||
|
|
||||||
public void deleteByIngkey(String key);
|
public void deleteByIngkey(String key);
|
||||||
|
|
||||||
public List<Shopcat> findAllByOrderByShopcategoryAsc();
|
public List<Shopcat> findAllByOrderByShopcategoryAsc();
|
||||||
|
|
||||||
|
@Query(value = "SELECT s.ingkey FROM Shopcat s WHERE s.shopcategory = :shopcat ORDER BY s.ingkey")
|
||||||
|
public List<String> findByIngkeySorted(String shopcat);
|
||||||
|
|
||||||
|
@Transactional
|
||||||
|
@Query(value = "UPDATE Shopcat set shopcategory = :newCat WHERE ingkey IN :selectedIngkey")
|
||||||
|
@Modifying
|
||||||
|
public void updateShopcatFor(String newCat, List<String> selectedIngkey);
|
||||||
|
|
||||||
|
@Transactional
|
||||||
|
@Query(value = "DELETE Shopcat WHERE ingkey IN :selectedIngkey")
|
||||||
|
@Modifying public void deleteShopcatFor(List<String> selectedIngkey);
|
||||||
}
|
}
|
||||||
|
|
|
@ -25,11 +25,15 @@
|
||||||
<ui:insert name="content">
|
<ui:insert name="content">
|
||||||
<ui:include src="content.xhtml" />
|
<ui:include src="content.xhtml" />
|
||||||
</ui:insert>
|
</ui:insert>
|
||||||
|
<!-- -->
|
||||||
(C) 2021 Tim Holloway, Licensed under the <a
|
<div id="footer">
|
||||||
href="http://www.apache.org/licenses/LICENSE-2.0"
|
(C) 2021 Tim Holloway, Licensed under the <a
|
||||||
>Apache License, Version 2.0</a>.
|
href="http://www.apache.org/licenses/LICENSE-2.0"
|
||||||
<p>Based on Gourmet Recipe Manager by T. Hinkle</p>
|
>Apache License, Version 2.0</a>.
|
||||||
|
<p>Based on Gourmet Recipe Manager by T.
|
||||||
|
Hinkle</p>
|
||||||
|
</div>
|
||||||
|
<!-- -->
|
||||||
<h:form id="frmTimeout">
|
<h:form id="frmTimeout">
|
||||||
<p:idleMonitor
|
<p:idleMonitor
|
||||||
timeout="#{userSession.sessionTimeoutInterval}"
|
timeout="#{userSession.sessionTimeoutInterval}"
|
||||||
|
|
|
@ -1,121 +1,96 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<html xmlns="http://www.w3.org/1999/xhtml"
|
<html xmlns:h="http://xmlns.jcp.org/jsf/html"
|
||||||
xmlns:h="http://xmlns.jcp.org/jsf/html"
|
|
||||||
xmlns:f="http://xmlns.jcp.org/jsf/core"
|
xmlns:f="http://xmlns.jcp.org/jsf/core"
|
||||||
xmlns:ui="http://java.sun.com/jsf/facelets"
|
xmlns:ui="http://java.sun.com/jsf/facelets"
|
||||||
xmlns:p="http://primefaces.org/ui"
|
xmlns:p="http://primefaces.org/ui"
|
||||||
|
xmlns:c="http://xmlns.jcp.org/jstl"
|
||||||
>
|
>
|
||||||
<!-- === Edit ingkey/shopcat === -->
|
<!-- === Edit ingkey/shopcat === -->
|
||||||
<h:form id="frmIsk1">
|
<h:form id="frmIsk">
|
||||||
<p:dataTable id="tblShopcats"
|
<p:panelGrid>
|
||||||
style="width: 300px"
|
<p:row>
|
||||||
value="#{shoppingListBean.shopcatList}"
|
|
||||||
sortBy="#{item.shopcategory}" var="item"
|
|
||||||
>
|
|
||||||
<f:facet name="header">
|
|
||||||
<h:outputText
|
|
||||||
value="Ingredient Keys/Shopping Categories" />
|
|
||||||
</f:facet>
|
|
||||||
<p:headerRow>
|
|
||||||
<p:column>
|
|
||||||
<h:outputText id="ctlCatname"
|
|
||||||
value="#{item.shopcategory}" />
|
|
||||||
</p:column>
|
|
||||||
<p:column style="width: 5em">
|
|
||||||
<p:commandButton
|
|
||||||
id="ctlEditCat" value="Rename"
|
|
||||||
action="#{shoppingListBean.doEditShopcat(item.id)}"
|
|
||||||
onclick="PF('dlgEditShopcat').show()"
|
|
||||||
update="frmEscat:pnlData" />
|
|
||||||
</p:column>
|
|
||||||
</p:headerRow>
|
|
||||||
<p:column>
|
<p:column>
|
||||||
<h:outputText value="#{item.ingkey}"
|
<p:outputLabel for="ctlScSel"
|
||||||
onclick="clickIngkeyName()" />
|
value="Shopping Category"
|
||||||
|
/>
|
||||||
</p:column>
|
</p:column>
|
||||||
<p:column style="width: 5em">
|
<p:column>
|
||||||
<p:commandButton
|
<p:outputLabel for="ctlIngkeySel"
|
||||||
id="ctlEditIngkey" value="Move"
|
value="Ingredient Key"
|
||||||
action="#{shoppingListBean.doEditShopcat(item.id)}"
|
/>
|
||||||
onclick="PF('dlgEditIngkey').show()"
|
|
||||||
update="frmIngkey:pnlData" />
|
|
||||||
</p:column>
|
</p:column>
|
||||||
</p:dataTable>
|
</p:row>
|
||||||
</h:form>
|
<p:row style="vertical-align: top">
|
||||||
<!-- -->
|
<p:column>
|
||||||
<h:form id="frmEscat">
|
<p:selectOneListbox id="ctlScSel"
|
||||||
<p:dialog id="dlgEditShopcat"
|
style="width: 240px"
|
||||||
widgetVar="dlgEditShopcat"
|
value="#{shoppingListBean.selectedShopcat}"
|
||||||
header="Edit/Rename Shopping Category"
|
>
|
||||||
closeOnEscape="true"
|
<f:selectItems
|
||||||
>
|
value="#{shoppingListBean.shopcatList}"
|
||||||
<p:panelGrid id="pnlData" columns="2"
|
/>
|
||||||
styleClass="ui-panelgrid-blank"
|
<p:ajax update="ctlIngkeySel" event="change" />
|
||||||
>
|
</p:selectOneListbox>
|
||||||
<p:outputLabel for="@next"
|
</p:column>
|
||||||
value="Shopping Category" />
|
<p:column>
|
||||||
<p:inputText id="ctlDlgShopcatName"
|
<h:selectManyListbox id="ctlIngkeySel"
|
||||||
label="Position" required="true"
|
style="width: 240px"
|
||||||
value="#{shoppingListBean.editShopcat.shopcategory}" />
|
value="#{shoppingListBean.selectedIngkey}"
|
||||||
<p:outputLabel for="@next"
|
label="Ingcat"
|
||||||
value="Position" />
|
>
|
||||||
<p:inputText
|
<f:selectItems
|
||||||
id="ctlDlgShopcatPosition" type="number"
|
value="#{shoppingListBean.ingkeyList}"
|
||||||
required="true" size="3"
|
/>
|
||||||
value="#{shoppingListBean.editShopcat.position}" />
|
<p:ajax event="change" update="ctlChangeCat"/>
|
||||||
</p:panelGrid>
|
</h:selectManyListbox>
|
||||||
<p:panelGrid columns="2"
|
</p:column>
|
||||||
style="width: 100%"
|
</p:row>
|
||||||
styleClass="ui-panelgrid-blank"
|
<p:row>
|
||||||
>
|
<p:column>
|
||||||
<p:commandButton id="scDlgOK"
|
<p:outputLabel
|
||||||
value="OK" style="width: 6em"
|
value="Change shopping category to:"
|
||||||
action="#{shoppingListBean.ajaxOnClickShopcat}"
|
/>
|
||||||
update="frmIsk1:tblShopcats"
|
</p:column>
|
||||||
process="@this pnlData"
|
<p:column>
|
||||||
oncomplete="PF('dlgEditShopcat').hide()" />
|
<p:autoComplete
|
||||||
<p:commandButton id="scDlgCan"
|
value="#{shoppingListBean.newShopcat}"
|
||||||
value="Cancel" style="width: 6em"
|
autoSelection="false" forceSelection="false"
|
||||||
onclick="PF('dlgEditShopcat').hide()" />
|
maxResults="12"
|
||||||
</p:panelGrid>
|
completeMethod="#{shoppingListBean.suggestShopcat}"
|
||||||
</p:dialog>
|
/>
|
||||||
</h:form>
|
</p:column>
|
||||||
<!-- -->
|
</p:row>
|
||||||
<h:form id="frmIngkey">
|
<p:row>
|
||||||
<p:dialog id="dlgEditIngkey"
|
<p:column>
|
||||||
widgetVar="dlgEditIngkey"
|
<p:commandButton id="ctlChangeCat" value="Change..."
|
||||||
header="Edit/Rename Shopping Category for Ingredient Key"
|
disabled="#{empty shoppingListBean.selectedIngkey}"
|
||||||
closeOnEscape="true"
|
onclick="PF('dlgOkRecat').show()"
|
||||||
>
|
/>
|
||||||
<p:panelGrid id="pnlData" columns="2"
|
</p:column>
|
||||||
styleClass="ui-panelgrid-blank"
|
<p:column>
|
||||||
>
|
<h:outputText value="" />
|
||||||
<p:outputLabel for="@next"
|
</p:column>
|
||||||
value="Ingredient Key" />
|
</p:row>
|
||||||
<h:outputText
|
</p:panelGrid>
|
||||||
id="ctlDlgIngKeyIngkey"
|
</h:form>
|
||||||
value="#{shoppingListBean.editShopcat.ingkey}" />
|
<!-- -->
|
||||||
<p:outputLabel for="@next"
|
<h:form id="frmDelete">
|
||||||
value="Shopping Category" />
|
<p:confirmDialog closable="false" id="dlgOkRecat"
|
||||||
<p:inputText
|
header="Confirm Change - CANNOT UNDO"
|
||||||
id="ctlDlgIngkeyShopcatName" label="Position"
|
message="OK to CHANGE Shopping Category for these Ingredient Keys?"
|
||||||
required="true"
|
severity="alert" widgetVar="dlgOkRecat"
|
||||||
value="#{shoppingListBean.editShopcat.shopcategory}" />
|
style="z-index: 25000"
|
||||||
</p:panelGrid>
|
>
|
||||||
<p:panelGrid columns="2"
|
<p:commandButton id="dlgOK" value="OK"
|
||||||
style="width: 100%"
|
oncomplete="PF('dlgOkRecat').hide()"
|
||||||
styleClass="ui-panelgrid-blank"
|
action="#{shoppingListBean.doChangeShopcat}"
|
||||||
>
|
update="@form:@parent:frmIsk:ctlScSel @form:@parent:frmIsk:ctlIngkeySel"
|
||||||
<p:commandButton id="ingkDlgOK"
|
immediate="true"
|
||||||
value="OK" style="width: 6em"
|
/>
|
||||||
action="#{shoppingListBean.ajaxOnClickShopcatIngkey}"
|
<p:commandButton id="dlgCancel" value="Cancel"
|
||||||
update="frmIsk1:tblShopcats"
|
onclick="PF('dlgOkRecat').hide()"
|
||||||
process="@this pnlData"
|
/>
|
||||||
oncomplete="PF('dlgEditIngkey').hide()" />
|
</p:confirmDialog>
|
||||||
<p:commandButton id="ingkDlgCan"
|
</h:form>
|
||||||
value="Cancel" style="width: 6em"
|
|
||||||
onclick="PF('dlgEditIngkey').hide()" />
|
|
||||||
</p:panelGrid>
|
|
||||||
</p:dialog>
|
|
||||||
</h:form>
|
|
||||||
</html>
|
</html>
|
|
@ -21,3 +21,9 @@ textarea {
|
||||||
font-family: 'latoregular', 'Trebuchet MS,Arial,Helvetica,sans-serif';
|
font-family: 'latoregular', 'Trebuchet MS,Arial,Helvetica,sans-serif';
|
||||||
font-size: 1em
|
font-size: 1em
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#footer {
|
||||||
|
position: absolute;
|
||||||
|
bottom: 90px;
|
||||||
|
width: 100%;
|
||||||
|
}
|
|
@ -25,57 +25,87 @@
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
<h:messages />
|
<h:messages />
|
||||||
<h:form id="form1">
|
<p:tabView id="tabGroupClient" orientation="left"
|
||||||
<p:dataTable id="tblRecipes" style="width: 600px"
|
dynamic="true"
|
||||||
value="#{shoppingListBean.recipeList}" var="item"
|
>
|
||||||
>
|
<p:tab id="overviewTab" title="Shopping List">
|
||||||
<p:column headerText="Recipe">
|
<h:form id="form1">
|
||||||
<h:outputText value="#{item.title}" />
|
<p:dataTable id="tblRecipes"
|
||||||
</p:column>
|
style="width: 600px"
|
||||||
</p:dataTable>
|
value="#{shoppingListBean.recipeList}"
|
||||||
<!-- ====== Ingredients ============================ -->
|
var="item"
|
||||||
<p:column id="ingredientsc"
|
|
||||||
style="width: 25%; vertical-align: top;"
|
|
||||||
>
|
|
||||||
<p:dataTable id="tblShopIngredients"
|
|
||||||
style="width: 600px; margin-top: 10px"
|
|
||||||
value="#{shoppingListBean.ingredientList}"
|
|
||||||
sortBy="#{item.shopCat}" var="item"
|
|
||||||
>
|
|
||||||
<f:facet name="header">
|
|
||||||
<h:outputText styleClass="subtitle"
|
|
||||||
value="Ingredients"
|
|
||||||
/>
|
|
||||||
</f:facet>
|
|
||||||
<p:headerRow>
|
|
||||||
<p:column colspan="4">
|
|
||||||
<h:outputText value="#{item.shopCat}" />
|
|
||||||
</p:column>
|
|
||||||
</p:headerRow>
|
|
||||||
<p:column label="ingKey">
|
|
||||||
<h:outputText value="#{item.ingkey}" />
|
|
||||||
</p:column>
|
|
||||||
<p:column label="Amt"
|
|
||||||
style="width: 3em; text-align: right"
|
|
||||||
>
|
>
|
||||||
<h:outputText
|
<f:facet name="header">
|
||||||
value="#{item.displayAmount}"
|
<h:outputText value="Recipes" />
|
||||||
/>
|
</f:facet>
|
||||||
|
<p:column>
|
||||||
|
<h:outputText value="#{item.title}" />
|
||||||
|
</p:column>
|
||||||
|
</p:dataTable>
|
||||||
|
<!-- ====== Ingredients ============================ -->
|
||||||
|
<p:column id="ingredientsc"
|
||||||
|
style="width: 25%; vertical-align: top;"
|
||||||
|
>
|
||||||
|
<p:dataTable id="tblShopIngredients"
|
||||||
|
style="width: 600px; margin-top: 10px"
|
||||||
|
value="#{shoppingListBean.ingredientList}"
|
||||||
|
sortBy="#{item.shopCat}" var="item"
|
||||||
|
>
|
||||||
|
<f:facet name="header">
|
||||||
|
<h:outputText
|
||||||
|
styleClass="subtitle"
|
||||||
|
value="Ingredients"
|
||||||
|
/>
|
||||||
|
</f:facet>
|
||||||
|
<p:headerRow>
|
||||||
|
<p:column colspan="4">
|
||||||
|
<h:outputText
|
||||||
|
value="#{item.shopCat}"
|
||||||
|
/>
|
||||||
|
</p:column>
|
||||||
|
</p:headerRow>
|
||||||
|
<p:column label="ingKey">
|
||||||
|
<h:outputText
|
||||||
|
value="#{item.ingkey}"
|
||||||
|
/>
|
||||||
|
</p:column>
|
||||||
|
<p:column label="Amt"
|
||||||
|
style="width: 3em; text-align: right"
|
||||||
|
>
|
||||||
|
<h:outputText
|
||||||
|
value="#{item.displayAmount}"
|
||||||
|
/>
|
||||||
|
</p:column>
|
||||||
|
<p:column label="Units"
|
||||||
|
style="width: 5em"
|
||||||
|
>
|
||||||
|
<h:outputText
|
||||||
|
value="#{item.unit}"
|
||||||
|
/>
|
||||||
|
</p:column>
|
||||||
|
<p:column label="Item"
|
||||||
|
style="width: 20em"
|
||||||
|
>
|
||||||
|
<h:outputText
|
||||||
|
value="#{item.item}"
|
||||||
|
/>
|
||||||
|
</p:column>
|
||||||
|
</p:dataTable>
|
||||||
</p:column>
|
</p:column>
|
||||||
<p:column label="Units" style="width: 5em">
|
</h:form>
|
||||||
<h:outputText value="#{item.unit}" />
|
</p:tab>
|
||||||
</p:column>
|
<!-- -->
|
||||||
<p:column label="Item" style="width: 20em">
|
<p:tab id="ingshopcatEditTab" title="Edit">
|
||||||
<h:outputText value="#{item.item}" />
|
<ui:include
|
||||||
</p:column>
|
src="/WEB-INF/layout/misctabs/ingshopkey.xhtml"
|
||||||
</p:dataTable>
|
/>
|
||||||
</p:column>
|
</p:tab>
|
||||||
|
</p:tabView>
|
||||||
|
<h:form id="frmHome">
|
||||||
<p:commandButton id="doHome" value="Home"
|
<p:commandButton id="doHome" value="Home"
|
||||||
icon="ui-icon-home" ajax="false" immediate="true"
|
icon="ui-icon-home" ajax="false" immediate="true"
|
||||||
action="main.jsf"
|
action="main.jsf"
|
||||||
/>
|
/>
|
||||||
</h:form>
|
</h:form>
|
||||||
<!-- -->
|
|
||||||
<ui:include src="/WEB-INF/layout/misctabs/ingshopkey.xhtml"/>
|
|
||||||
</ui:define>
|
</ui:define>
|
||||||
</ui:composition>
|
</ui:composition>
|
Loading…
Reference in New Issue
Block a user