shoppingcart.xhtml 5.85 KB
<?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:tools="http://java.sun.com/jsf/composite/tools"
	xmlns:reader="http://java.sun.com/jsf/composite/cditools/reader" xmlns:p="http://primefaces.org/ui">


<composite:interface>
</composite:interface>

<composite:implementation>

	<h:form id="shoppingcartform">
		<h:panelGrid  columns="2" style="width:100%;" columnClasses="shopProductbuttons,topalign">

			<h:panelGroup>
				<div id="shopItems">
					<ui:repeat value="#{productShopView.shoppingcart}" var="cart">
						<h:commandLink styleClass="shopItem" action="#{productShopView.addOne}">
							<f:ajax render="@form" />

							<div>
								#{cart.product.name}<br />
								<h:outputText value="#{cart.product.price}">
									<f:convertNumber maxFractionDigits="2" minFractionDigits="2" />
								</h:outputText>

							</div>
						</h:commandLink>
					</ui:repeat>
				</div>

			</h:panelGroup>

			<h:panelGroup >


                <!-- TODO: barcode does not work, fix and re-enable -->
				<!-- reader:codefield selectaction="#{productShopView.readCode}" selectvalue="#{i18n['shop.readBarcode']}" / -->

				<br />
				<p:dataTable id="prods" value="#{productShopView.boughtItems}" editable="true" var="prods" style="width:600px;">

                    <p:ajax event="rowEdit" listener="#{productShopItemHelper.updateProductShopItemCount(prods)}" update="prods @(.inputval)" />

					<p:column headerText="#{i18n['shop.count']}">
						<p:inputText value="#{prods.count}" size="2">
							<f:ajax render="@form" listener="#{productShopView.countBoughtChangeListener}" />
							<f:convertNumber minFractionDigits="0" maxFractionDigits="2" />
						</p:inputText>
					</p:column>

					<p:column headerText="#{i18n['shop.product']}">
						<h:outputText value="#{prods.getProduct().name}" />
					</p:column>
					<p:column headerText="#{i18n['shop.price']}">
						<h:outputText value="#{prods.getProduct().price}">
							<f:convertNumber maxFractionDigits="2" minFractionDigits="2" />
						</h:outputText>
					</p:column>
                    <p:column headerText="#{i18n['shop.customPrice']}">
                        <p:cellEditor>
                            <f:facet name="output"><h:outputText value="#{prods.overriddenUnitPrice}" /></f:facet>
                            <f:facet name="input"><p:inputText value="#{prods.overriddenUnitPrice}" /></f:facet>
                        </p:cellEditor>
                    </p:column>


                    <p:column headerText="#{i18n['shop.unitdiscount']}">
                        <h:outputText value="#{prods.unitDiscount}">
                            <f:convertNumber maxFractionDigits="2" minFractionDigits="2" />
                        </h:outputText>
                    </p:column>


					<p:column headerText="#{i18n['shop.totalPrice']}">
						<h:outputText value="#{prods.price}">
							<f:convertNumber maxFractionDigits="2" minFractionDigits="2" />
						</h:outputText>
					</p:column>
					<p:column headerText="#{i18n['shop.actions']}">
                        <p:rowEditor />
                        <p:commandButton action="#{productShopView.removeBought()}" update="@form" onerror="location.reload(true);" icon="ui-icon-trash" />
					</p:column>
				</p:dataTable>

				<div style="font-weight: bold;">
					<h:outputText value="#{i18n['shop.cartPrice']}" />
					<h:outputText id="shoptotal" value="#{productShopView.cartPrice}">
						<f:convertNumber maxFractionDigits="2" minFractionDigits="2" />
					</h:outputText>
					<br />
					<h:outputLabel value="#{i18n['shop.currentBalance']}" />
					<h:outputText id="currentbalance" value="#{productShopView.accountCredits}">
						<f:convertNumber maxFractionDigits="2" minFractionDigits="2" />
					</h:outputText>
					<br />
					<h:outputLabel value="#{i18n['shop.transactionTotal']}" />
					<h:outputText id="transactiontotal" value="#{productShopView.transactionTotal}">
						<f:convertNumber maxFractionDigits="2" minFractionDigits="2" />
					</h:outputText>
				</div>


				<h:panelGrid  columns="2">
					<h:outputLabel value="#{i18n['shop.toAccountValue']}" />
					<h:inputText styleClass="inputval" size="5" value="#{productShopView.cash}">
						<f:ajax render="@form" event="valueChange" listener="#{productShopView.cashChanged}" />
					</h:inputText>
				</h:panelGrid>

				<p:commandButton update="@form" onerror="location.reload(true);" action="#{productShopView.buyByCredit()}" value="#{i18n['shop.buyByCredit']}" />

				<h:panelGrid columns="2" style="background-color: #{productShopView.balanceAfterTransaction lt 0?'lightcoral':'lightgreen'}">

					<h:outputLabel value="#{i18n['shop.afterBalance']}" />
					<h:outputText value="#{productShopView.balanceAfterTransaction}">
						<f:convertNumber minFractionDigits="2" maxFractionDigits="2" />
					</h:outputText>
				</h:panelGrid>

				<p:commandButton ajax="false" action="#{productShopView.commitShoppingCart()}" value="#{i18n['shop.buy']}" />
			</h:panelGroup>

		</h:panelGrid>

		<h:outputScript library="primefaces" name="jquery/jquery.js" />

	</h:form>
	<script>
		var blipSnd = new Audio(
				"#{request.contextPath}/resources/media/blip.mp3")

		$(function() {
			$("#shoppingcartform\\:barcode").focus();
		});

		function blip() {
			blipSnd.play();
		}

		function calc() {
			$("#returnval").val(
					$("#inputval").val()
							- $(".inputval").text().replace(",", "."));
		}

		function barcodeReadEvent(data) {
			if (data.status == "success") {
				$("[id$=shoppingcartform\\:barcode]").focus();
			}
		}
	</script>


</composite:implementation>
</html>