view.xhtml 5 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.initViewMap()}" />
		</f:metadata>
		<ui:param name="thispage" value="page.place.placemap" />
		<ui:define name="content">
			<!-- 		<h:form>
				<p:remoteCommand name="placeClicker" update=":fbdiag"
					action="#{ajaxMapView.placeClicked()}" />
			</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" />


			<div style="margin: 5px;">
				<h:form id="placeselectform">
					<p:commandButton rendered="#{ajaxMapView.canUserBuy()}"
						value="#{i18n['mapView.buyPlaces']}"
						action="#{ajaxMapView.buySelectedPlaces()}" ajax="false" />
				</h:form>
			</div>

			<p:outputPanel rendered="#{ajaxMapView.queueEnabled}">
				<h:form>
					<p:commandButton value="#{i18n['mapView.enterQueue']}"
						action="#{ajaxMapView.enterQueue()}" ajax="false" />
					<p:commandButton value="#{i18n['mapView.check']}"
						action="#{ajaxMapView.checkReserving()}" ajax="false" />
				</h:form>
				queueEntry #{ajaxMapView.queueEntry} <br />
				QueuePosition: #{ajaxMapView.queuePosition} <br />
				Available places to select: #{ajaxMapView.placesLeftToSelect} <br />
				isReserving #{ajaxMapView.reserving}  <br />
			</p:outputPanel>



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

			function updateQueue(data) {
				if(data.value === undefined) {
					alert('not in queue');
				} else if(data.value == 0) {
					alert("Reserving");
				} else {
					alert("Quue position " + data.value);
				}
				
			
			}
			
			function updateMap() {
				px.update();
				$.getJSON("#{request.contextPath}/rest/placemap/v1/queue/#{ajaxMapView.map.id}/#{ajaxMapView.eventuser.id}")
					.done(function(data){ updateQueue(data); } );
			}
			
			px = placemap({
					element : document.getElementById("seatmap"),
					moyaurl : "#{request.contextPath}",
					map_id : #{ajaxMapView.map.id},
					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();
				setInterval(function () { updateMap() }, 5000);

			</script>

			<h:panelGrid columns="3" cellpadding="10">
				<h:panelGrid columns="2">
					<div
						style="border-color: black; border-style: solid; border-width: 1px; background-color: grey; 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: white; 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: red; 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: green; 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: blue; 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:define>
	</ui:composition>
</h:body>
</html>