Commit 076f24a5 by Tuomas Riihimäki

Add product limitation editing user interface

1 parent 1f78477b
......@@ -20,6 +20,11 @@ public class ProductLimitation extends GenericEntity {
*/
private static final long serialVersionUID = 1373535658851118597L;
public ProductLimitationType[] getAvailableTypes()
{
return ProductLimitationType.values();
}
@Enumerated(EnumType.STRING)
@Column(nullable = false)
private ProductLimitationType type;
......@@ -109,4 +114,12 @@ public class ProductLimitation extends GenericEntity {
this.matchingRoles = matchingRoles;
}
public boolean getLast() {
return last;
}
public void setLast(boolean last) {
this.last = last;
}
}
<!DOCTYPE html
PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:h="http://java.sun.com/jsf/html" xmlns:f="http://java.sun.com/jsf/core"
xmlns:c="http://java.sun.com/jsp/jstl/core" xmlns:products="http://java.sun.com/jsf/composite/cditools/products"
>
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:ui="http://java.sun.com/jsf/facelets" xmlns:h="http://java.sun.com/jsf/html" xmlns:f="http://java.sun.com/jsf/core"
xmlns:c="http://java.sun.com/jsp/jstl/core" xmlns:products="http://java.sun.com/jsf/composite/cditools/products" xmlns:p="http://primefaces.org/ui">
<h:head>
<title></title>
......@@ -20,15 +18,13 @@
<products:edit commitaction="#{productView.saveProduct()}" commitvalue="#{i18n['products.save']}" />
<hr />
<h:form id="discounts">
<h:commandButton rendered="#{!empty productView.product.id}" action="#{productView.initCreateDiscount()}"
value="#{i18n['product.createDiscount']}"
>
<h:commandButton rendered="#{!empty productView.product.id}" action="#{productView.initCreateDiscount()}" value="#{i18n['product.createDiscount']}">
</h:commandButton>
<h:dataTable border="1" id="discount" value="#{productView.productDiscounts}" var="discount"
rendered="#{!empty productView.product.id and !empty productView.product.discounts}"
>
<h:dataTable border="1" id="discount" value="#{productView.productDiscounts}" var="discount" rendered="#{!empty productView.product.id and !empty productView.product.discounts}">
<h:column>
<f:facet name="header">
<h:outputText value="${i18n['discount.percentage']}" />
......@@ -83,6 +79,27 @@
</h:dataTable>
</h:form>
<hr />
<h:form id="limits">
<h:commandButton rendered="#{!empty productView.product.id}" action="#{productView.initCreateLimit()}" value="#{i18n['product.createLimit']}">
</h:commandButton>
<p:dataTable border="1" id="discount" value="#{productView.productLimits}" var="limit" rendered="#{!empty productView.product.id and !empty productView.product.productLimits}">
<p:column rowHeader="#{i18n['productLimit.name']}">
<h:outputText value="#{limit.name}" />
</p:column>
<p:column rowHeader="#{i18n['productLimit.type']}">
<h:outputText value="#{limit.type}" />
</p:column>
<p:column rowHeader="#{i18n['productLimit.upperLimit']}">
<h:outputText value="#{limit.lowerLimit}" />
</p:column>
<p:column>
<p:commandButton ajax="false" action="#{productView.editLimit()}" value="#{i18n['productLimit.edit']}" />
</p:column>
</p:dataTable>
</h:form>
</ui:define>
</ui:composition>
</h:body>
......
<?xml version='1.0' encoding='UTF-8' ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:h="http://java.sun.com/jsf/html" xmlns:f="http://java.sun.com/jsf/core" xmlns:composite="http://java.sun.com/jsf/composite"
xmlns:ui="http://java.sun.com/jsf/facelets" xmlns:c="http://java.sun.com/jsp/jstl/core" xmlns:p="http://primefaces.org/ui">
<h:head>
<title></title>
</h:head>
<h:body>
<ui:composition template="#{sessionHandler.template}">
<ui:define name="content">
<h:form id="discountform">
<h:link id="back" outcome="/product/edit" value="#{i18n['product.returnProductEdit']} #{productView.product.name}">
<f:param name="productid" value="#{productView.product.id}" />
</h:link>
<p:panelGrid columns="3">
<p:outputLabel for="name" value="#{i18n['productLimit.name']}:" />
<p:inputText id="name" value="#{productView.limit.name}" />
<p:message for="name" />
<p:outputLabel for="description" value="#{i18n['productLimit.description']}:" />
<p:inputText id="description" value="#{productView.limit.description}" />
<p:message for="description" />
<p:outputLabel for="type" value="#{i18n['productLimit.type']}:" />
<p:selectOneMenu id="type" value="#{productView.limit.type}">
<f:selectItem itemValue="" itemLabel="---" />
<f:selectItems var="type" itemLabel="#{type}" itemDescription="#{i18n[type]}" value="#{productView.limit.availableTypes}" />
</p:selectOneMenu>
<p:message for="type" />
<p:outputLabel for="sort" value="#{i18n['productLimit.sort']}:" />
<p:inputText id="sort" value="#{productView.limit.sort}" />
<p:message for="sort" />
<p:outputLabel for="last" value="#{i18n['productLimit.last']}" />
<p:selectBooleanCheckbox id="last" value="#{productView.limit.last}" />
<p:message for="last" />
<p:outputLabel for="upperLimit" value="#{i18n['productLimit.upperLimit']}:" />
<p:inputText id="upperLimit" value="#{productView.limit.upperLimit}" />
<h:message for="upperLimit" />
<h:outputLabel for="lowerLimit" value="#{i18n['productLimit.lowerLimit']}:" />
<p:inputText id="lowerLimit" value="#{productView.limit.lowerLimit}" />
<h:message for="lowerLimit" />
<h:outputLabel for="roles" value="#{i18n['productLimit.roles']}:" />
<p:selectManyCheckbox layout="pageDirection" id="roles" value="#{productView.limit.matchingRoles}" converter="#{roleConverter}">
<f:selectItems var="role" itemLabel="#{role.name}" value="#{roleDataView.roleList}" />
</p:selectManyCheckbox>
<h:message for="roles" />
</p:panelGrid>
<p:commandButton id="commitbtn" action="#{productView.saveLimit}" value="#{i18n['productLimit.save']}" />
</h:form>
</ui:define>
</ui:composition>
</h:body>
</html>
This diff could not be displayed because it is too large.
This diff could not be displayed because it is too large.
package fi.codecrew.moya.web.cdiview.shop;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Set;
......@@ -18,6 +19,7 @@ import fi.codecrew.moya.enums.apps.ShopPermission;
import fi.codecrew.moya.model.Discount;
import fi.codecrew.moya.model.Product;
import fi.codecrew.moya.model.ProductFlag;
import fi.codecrew.moya.model.ProductLimitation;
import fi.codecrew.moya.web.cdiview.GenericCDIView;
@Named
......@@ -40,12 +42,16 @@ public class ProductView extends GenericCDIView {
private transient ListDataModel<Discount> productDiscounts;
private ProductLimitation limit;
private ListDataModel<ProductLimitation> productLimits;
@SuppressWarnings("unused")
private static final Logger logger = LoggerFactory.getLogger(ProductView.class);
public void initEditView() {
if (super.requirePermissions(ShopPermission.MANAGE_PRODUCTS) && product == null) {
product = prodbean.findById(getProductId());
product = prodbean.findById(productId);
if (super.requirePermissions(product != null)) {
super.beginConversation();
}
......@@ -108,6 +114,33 @@ public class ProductView extends GenericCDIView {
return "/product/createDiscount";
}
public String saveLimit()
{
if (product.getProductLimits() == null) {
product.setProductLimits(new ArrayList<ProductLimitation>());
}
if (!product.getProductLimits().contains(limit)) {
product.getProductLimits().add(limit);
}
prodbean.mergeChanges(product);
limit = null;
return "/product/edit";
}
public String initCreateLimit()
{
setLimit(new ProductLimitation());
getLimit().setProducts(new ArrayList<>(Arrays.asList(product)));
return "/product/editLimit";
}
public String editLimit()
{
limit = productLimits.getRowData();
return "/product/editLimit";
}
public String editDiscount()
{
discount = productDiscounts.getRowData();
......@@ -120,8 +153,22 @@ public class ProductView extends GenericCDIView {
return productDiscounts;
}
public ListDataModel<ProductLimitation> getProductLimits()
{
productLimits = new ListDataModel<ProductLimitation>(product.getProductLimits());
return productLimits;
}
public List<ProductFlag> getProductFlags()
{
return Arrays.asList(ProductFlag.values());
}
public ProductLimitation getLimit() {
return limit;
}
public void setLimit(ProductLimitation limit) {
this.limit = limit;
}
}
......@@ -28,6 +28,11 @@ public class RoleDataView extends GenericCDIView {
private static final Logger logger = LoggerFactory.getLogger(RoleDataView.class);
public List<Role> getRoleList()
{
return rolebean.listRoles();
}
public ListDataModel<Role> getRoles() {
if (roles == null) {
roles = new ListDataModel<Role>(rolebean.listRoles());
......@@ -54,7 +59,7 @@ public class RoleDataView extends GenericCDIView {
}
return roles;
}
public List<Role> getUserSelectableRoles() {
return rolebean.listUserSelectableRoles();
}
......
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!