reserve.xhtml 9.3 KB
<!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:ui="http://java.sun.com/jsf/facelets"
      xmlns:f="http://java.sun.com/jsf/core"
      xmlns:h="http://java.sun.com/jsf/html"
      xmlns:map="http://java.sun.com/jsf/composite/cditools/map"
      xmlns:tools="http://java.sun.com/jsf/composite/cditools"
      xmlns:c="http://java.sun.com/jsp/jstl/core"
      xmlns:p="http://primefaces.org/ui">


<h:body>

    <ui:composition template="#{sessionHandler.template}">
        <f:metadata>
            <f:event type="preRenderView" listener="#{ajaxMapView.initReserveMap()}"/>
        </f:metadata>
        <ui:param name="thispage" value="page.place.placemap"/>
        <ui:define name="content">
            <h:form>
                <p:remoteCommand name="updateWholePage" update="@all" action="#{ajaxMapView.initReserveMap()}"/>
            </h:form>
            <p:dialog rendered="#{ajaxMapView.isMgmtPermission()}" visible="#{!empty ajaxMapView.place}" id="fbdiag">
                Clicked place name : #{ajaxMapView.place.name};
                <h:link rendered="#{!empty ajaxMapView.place}" outcome="/place/edit">
                    <f:param name="placeid" value="#{ajaxMapView.place.id}"/>
                    Muokkaa
                </h:link>
            </p:dialog>

            <h:outputScript target="head" library="seatjs" name="d3.min.js"/>
            <h:outputScript target="head" library="seatjs" name="d3-tip.js"/>
            <h:outputScript target="head" library="seatjs" name="seatmap.js"/>
            <h:outputStylesheet library="seatjs" name="placemap.css"/>


            <ui:fragment rendered="#{layoutView.manageContent}">
                <h:link rendered="#{layoutView.manageContent}" styleClass="editorlink" value="Edit content for users in queue" outcome="/pages/manage">
                    <f:param name="pagename" value="#{layoutView.pagepath}:inqueue"/>
                </h:link>
                <br/>

                <h:link rendered="#{layoutView.manageContent}" styleClass="editorlink" value="Edit content for user reserving places" outcome="/pages/manage">
                    <f:param name="pagename" value="#{layoutView.pagepath}:reserving"/>
                </h:link>
                <br/>
            </ui:fragment>


            <ui:repeat var="cont1" rendered="#{ajaxMapView.queueEnabled and ajaxMapView.reserving}" value="#{menuView.getPagecontent('reserving')}">
                <h:outputText value="#{cont1.content}" escape="false"/>
            </ui:repeat>


            <ui:repeat var="cont1" rendered="#{ajaxMapView.queueEnabled and not ajaxMapView.reserving}" value="#{menuView.getPagecontent('inqueue')}">
                <h:outputText value="#{cont1.content}" escape="false"/>
            </ui:repeat>
            <br/>

            <h3>
                <h:outputText value="#{i18n['mapView.yourPlaces']}"/>
            </h3>

            <p:dataTable tableStyle=" 	width: auto;" var="cnt" value="#{ajaxMapView.slotcount}">

                <p:column headerText="#{i18n['mapView.productcount.productname']}">
                    <h:outputText value="#{cnt.product.name}"/>
                </p:column>
                <p:column headerText="#{i18n['mapView.productcount.productcount']}">
                    <h:outputText value="#{cnt.count}"/>
                </p:column>
            </p:dataTable>
            <ui:fragment rendered="#{ajaxMapView.reserving}">
                <div style="margin: 5px;">
                    <h:form id="placeselectform">
                        <p:commandButton  onclick="$(window).unbind('beforeunload');"  rendered="#{ajaxMapView.canUserBuy()}" value="#{i18n['mapView.buyPlaces']}" actionListener="#{ajaxMapView.buySelectedPlaces()}" />
                    </h:form>
                </div>
            </ui:fragment>


            <ui:fragment rendered="#{ajaxMapView.queueEnabled and not ajaxMapView.reserving}">
                <h3><h:outputText value="#{i18n['mapView.youAreInQueue']}"/></h3>

                <div style="margin: 1em;">
                    <h:outputText value="#{i18n['mapView.queuePosition']}: "/>
                    <span id="queuepos"/><br/>
                    <h:outputText value=" #{i18n['mapView.queuePositionUpdated']}: "/>
                    <span id="queueupdated"/> <br/>
                </div>
            </ui:fragment>


            <svg id="seatmap" style="margin: auto; border: 1px solid black;" width="#{ajaxMapView.map.width}px" height="#{ajaxMapView.map.height}px"/>


            <script type="text/javascript">
                // Queue is enabled and we are reserving.
                var queueReserving = #{(ajaxMapView.queueEnabled and not ajaxMapView.reserving)?"true":"false"};


                function updateMap() {
                    px.update();
                    reloadQueue();
                }


                function reloadQueue() {
                    if (queueReserving) {
                        $.getJSON("#{request.contextPath}/rest/placemap/v1/queue/#{ajaxMapView.map.id}/#{ajaxMapView.eventuser.id}")
                                .done(function (data) {
                                    updateQueue(data);
                                }).fail(function () {
                                    location.reload();
                                });
                    }
                }


                function updateQueue(data) {
                    if (data === undefined) {
                        alert('not in queue');
                        return;
                    }

                    if (data.value == 0) {
                        updateWholePage();
                    } else {
                        $("#queuepos").text(data.value);
                        var d = new Date();
                        $("#queueupdated").text(d.getHours() + ":" + d.getMinutes() + ":" + d.getSeconds())
                    }
                }


                setInterval(function () {
                    updateMap()
                }, 5000);

                var pageEscapeAlert = queueReserving;

                $().ready(function () {
                    reloadQueue();
                });


            </script>

            <script type="text/javascript">


                px = placemap({
                    element: document.getElementById("seatmap"),
                    moyaurl: "#{request.contextPath}",
                    map_id: #{ajaxMapView.map.id},
                    placereserve: true,
                    onclick: function (d) {
                        // px.update();
                        //alert(d);
                        // #{ajaxMapView.isMgmtPermission()?'placeClicker([{name: \'placeId\', value: d}])':''}
                        return false;
                    }
                });
                //				document.getElementById("editbutton").addEventListener("click",
                //						function() {
                //						px.enable_edit();
                //					});
                //px.enable_edit();

            </script>

            <h:panelGrid columns="3" cellpadding="10">
                <h:panelGrid columns="2">
                    <div style="border-color: black; border-style: solid; border-width: 1px; background-color: rgb(83, 83, 83); width: 10px; height: 10px;">&nbsp;</div>
                    <h:outputText value="#{i18n['placeSelect.legend.grey']}"/>

                    <div style="border-color: black; border-style: solid; border-width: 1px; background-color: rgb(204, 204, 204); width: 10px; height: 10px;">&nbsp;</div>
                    <h:outputText value="#{i18n['placeSelect.legend.white']}"/>

                    <div style="border-color: black; border-style: solid; border-width: 1px; background-color: rgb(180, 1, 0); width: 10px; height: 10px;">&nbsp;</div>
                    <h:outputText value="#{i18n['placeSelect.legend.red']}"/>

                    <div style="border-color: black; border-style: solid; border-width: 1px; background-color: rgb(47, 165, 37); width: 10px; height: 10px;">&nbsp;</div>
                    <h:outputText value="#{i18n['placeSelect.legend.green']}"/>

                    <div style="border-color: black; border-style: solid; border-width: 1px; background-color: rgb(67, 66, 193); width: 10px; height: 10px;">&nbsp;</div>
                    <h:outputText value="#{i18n['placeSelect.legend.blue']}"/>
                </h:panelGrid>

                <h:panelGrid columnClasses=",rightalign" columns="2">
                    <h:outputLabel value="#{i18n['placeSelect.totalPlaces']}:"/>
                    <h:outputText value="#{ajaxMapView.availablePlaces}"/>

                    <h:outputLabel value="#{i18n['placeSelect.placesleft']}:"/>
                    <h:outputText value="#{ajaxMapView.placesLeftToSelect}"/>


                </h:panelGrid>

            </h:panelGrid>

            <ui:fragment rendered="#{ajaxMapView.reserving}">
                <div style="margin: 5px;">
                    <h:form id="placeselectformBottom">
                        <p:commandButton onclick="$(window).unbind('beforeunload');" rendered="#{ajaxMapView.canUserBuy()}" value="#{i18n['mapView.buyPlaces']}" actionListener="#{ajaxMapView.buySelectedPlaces()}"/>
                    </h:form>
                </div>
            </ui:fragment>
        </ui:define>
    </ui:composition>
</h:body>
</html>