Commit aeb5d833 by Tuukka Kivilahti

ilmoitus kun lähtee kuikkaan

1 parent 54a1900d
......@@ -117,6 +117,27 @@ public class PlaceFacade extends IntegerPkGenericFacade<Place> {
return q.getResultList();
}
public List<Place> findUsersUnlocketSelected(EventUser user) {
CriteriaBuilder cb = getEm().getCriteriaBuilder();
CriteriaQuery<Place> cq = cb.createQuery(Place.class);
Root<Place> root = cq.from(Place.class);
cq.select(root);
cq.where(
cb.and(
cb.equal(root.get(Place_.map).get(EventMap_.event), user.getEvent()),
cb.equal(root.get(Place_.currentUser), user),
cb.isNull(root.get(Place_.group))
));
TypedQuery<Place> q = getEm().createQuery(cq);
return q.getResultList();
}
public int setBuyable(EventMap map, String like, boolean b) {
CriteriaBuilder cb = getEm().getCriteriaBuilder();
CriteriaQuery<Place> cq = cb.createQuery(Place.class);
......
......@@ -14,14 +14,12 @@
<ui:composition template="#{sessionHandler.template}">
<f:metadata>
<f:event type="preRenderView"
listener="#{ajaxMapView.initReserveMap()}"/>
<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()}"/>
<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};
......@@ -38,33 +36,24 @@
<ui:fragment rendered="#{layoutView.manageContent}">
<h:link rendered="#{layoutView.manageContent}"
styleClass="editorlink" value="Edit content for users in queue"
outcome="/pages/manage">
<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">
<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')}">
<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')}">
<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/>
......@@ -73,9 +62,7 @@
<h:outputText value="#{i18n['mapView.yourPlaces']}"/>
</h3>
<p:dataTable tableStyle="
width: auto;" var="cnt"
value="#{ajaxMapView.slotcount}">
<p:dataTable tableStyle=" width: auto;" var="cnt" value="#{ajaxMapView.slotcount}">
<p:column headerText="#{i18n['mapView.productcount.productname']}">
<h:outputText value="#{cnt.product.name}"/>
......@@ -87,16 +74,13 @@
<ui:fragment rendered="#{ajaxMapView.reserving}">
<div style="margin: 5px;">
<h:form id="placeselectform">
<p:commandButton rendered="#{ajaxMapView.canUserBuy()}"
value="#{i18n['mapView.buyPlaces']}"
action="#{ajaxMapView.buySelectedPlaces()}" ajax="false"/>
<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}">
<ui:fragment rendered="#{ajaxMapView.queueEnabled and not ajaxMapView.reserving}">
<h3><h:outputText value="#{i18n['mapView.youAreInQueue']}"/></h3>
<div style="margin: 1em;">
......@@ -108,9 +92,7 @@
</ui:fragment>
<svg id="seatmap" style="margin: auto; border: 1px solid black;"
width="#{ajaxMapView.map.width}px"
height="#{ajaxMapView.map.height}px"/>
<svg id="seatmap" style="margin: auto; border: 1px solid black;" width="#{ajaxMapView.map.width}px" height="#{ajaxMapView.map.height}px"/>
<script type="text/javascript">
......@@ -162,13 +144,6 @@
reloadQueue();
});
// You cannot do alert or stuff before unloading, you can just return message what will be shown to user "are you sure you want to leave"
$(window).bind('beforeunload', function () {
if (pageEscapeAlert) {
alert("#{i18n['mapView.lockPlacesBeforeLeaving']}");
}
});
</script>
......@@ -228,9 +203,7 @@
<ui:fragment rendered="#{ajaxMapView.reserving}">
<div style="margin: 5px;">
<h:form id="placeselectformBottom">
<p:commandButton rendered="#{ajaxMapView.canUserBuy()}"
value="#{i18n['mapView.buyPlaces']}"
action="#{ajaxMapView.buySelectedPlaces()}" ajax="false"/>
<p:commandButton onclick="$(window).unbind('beforeunload');" rendered="#{ajaxMapView.canUserBuy()}" value="#{i18n['mapView.buyPlaces']}" actionListener="#{ajaxMapView.buySelectedPlaces()}"/>
</h:form>
</div>
</ui:fragment>
......
......@@ -57,14 +57,19 @@ function placemap(opts)
cannot_reserve: "Ei voitu varata paikkaa",
cannot_release: "Ei voitu vapauttaa paikkaa",
success_reserve: "Varattu paikka",
success_release: "Vapautettu paikka"
success_release: "Vapautettu paikka",
leavemessage: "Et ole lukinnut paikkojasi, oletko varma että haluat poistua?"
};
px.locales['en'] = {
cannot_reserve: "Can't reserve place",
cannot_release: "Can't release place",
success_reserve: "Place reserved",
success_release: "Place released"
success_release: "Place released",
leavemessage: "Forgot to lock your places, are you sure you want to leave?"
};
px.is_leave_message_on = false;
px.selected_count = 0;
var guide_layer = px.element.append("g").attr("id", "guides");
......@@ -239,6 +244,8 @@ function placemap(opts)
//px.onclick(data);
px.toggle_place(data);
//px.update_place(data.id);
......@@ -257,6 +264,25 @@ function placemap(opts)
}*/
}
px.update_leavemessage = function() {
if(px.is_leave_message_on) {
if(px.selected_count <= 0) {
px.selected_count = 0;
px.is_leave_message_on = false
$(window).unbind('beforeunload');
}
} else {
if(px.selected_count > 0) {
$(window).bind('beforeunload', function () {
return px.locales[px.locale].leavemessage;
});
px.is_leave_message_on = true;
}
}
}
function place_color(d, i)
{
if (Object.keys(px.place_colors).indexOf(d.state) != -1) return px.place_colors[d.state];
......@@ -285,6 +311,7 @@ function placemap(opts)
.style('stroke', '#101010')
.style('stroke-width', '1')
.append("title", function(d, i) { return d.name; });
places
.attr("x", function(d, i) { return d.x; })
.attr("y", function(d, i) { return d.y; })
......@@ -395,25 +422,28 @@ function placemap(opts)
console.log(data.places[0]);
if (data.places[0].state == place.state)
{
if ( place.state == "F") PF("g").show([{"summary":px.locales[px.locale].cannot_reserve,
if ( place.state == "F") PF("messages_growl").show([{"summary":px.locales[px.locale].cannot_reserve,
"detail":"",
"severity":"warn"}]);
if ( place.state == "T") PF("g").show([{"summary":px.locales[px.locale].cannot_release,
if ( place.state == "T") PF("messages_growl").show([{"summary":px.locales[px.locale].cannot_release,
"detail":"",
"severity":"warn"}]);
}
else if (data.places[0].state == "T")
{
PF("g").show([{"summary":px.locales[px.locale].success_reserve,
"detail":"",
"severity":"info"}]);
// tän korjaus sotki ehkä jotain, otetaan poies
//PF("messages_growl").show([{"summary":px.locales[px.locale].success_reserve, "detail":"", "severity":"info"}]);
px.selected_count++;
}
else if (data.places[0].state == "F")
{
PF("g").show([{"summary":px.locales[px.locale].success_release,
"detail":"",
"severity":"info"}]);
else if (data.places[0].state == "F") {
//PF("messages_growl").show([{"summary":px.locales[px.locale].success_release, "detail":"", "severity":"info"}]);
if (px.selected_count > 0) {
px.selected_count--;
} else {
px.selected_count = 0;
}
}
px.update_leavemessage();
}
);
}
......
......@@ -188,7 +188,7 @@
<p:menubar rendered="#{primeMenuView.hasSecondaryMenu}" model="#{primeMenuView.secondaryMenuModel}" />
<h:form id="messages">
<p:growl id="growl" showDetail="true" />
<p:growl id="growl" showDetail="true" widgetVar="messages_growl" />
</h:form>
......
......@@ -211,16 +211,17 @@ public class AjaxMapView extends GenericCDIView {
return userview.getSelectedUser();
}
public String buySelectedPlaces() {
public void buySelectedPlaces() {
try {
EventUser user = userview.getSelectedUser();
placebean.buySelectedPlaces(user);
quebean.remove(initMap(), user);
return "/place/myGroups";
// return "/place/myGroups";
super.navihandler.forward("/place/myGroups?faces-redirect=true");
} catch (BortalCatchableException e) {
addFaceMessage("mapView.errorWhileBuyingPlaces");
}
return null;
}
public boolean isMgmtPermission()
......
......@@ -469,3 +469,4 @@ usercart.showoverview = Vie tarkastusn\u00E4kym\u00E4\u00E4n
viewlectures.title = Kurssit ja luennot
yes = Kyll\u00E4
placeslot.state.expired=Vanhentunut
......@@ -1677,3 +1677,4 @@ voting.create.voteEnd = Voting close
voting.create.voteStart = Voting start
yes = Yes
placeslot.state.expired=Expired
......@@ -1659,3 +1659,4 @@ voting.create.voteEnd = \u00C4\u00E4nestys kiinni
voting.create.voteStart = \u00C4\u00E4nestys auki
yes = Kyll\u00E4
placeslot.state.expired=Vanhentunut
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!