+++ /dev/null
- var renderTargetsReqVar;\r
- var renderOnRecordTargetsReqVar;\r
- \r
- function renderTargets(doRefresh)\r
- {\r
- //console.log('rendering ' + renderWhileActiveclients);\r
- var sourcecomp = document.getElementById("pz2watch:activeclientsField");\r
- jsf.ajax.request(sourcecomp, null,{render: renderWhileActiveclients + " pz2watch:errorMessages"});\r
- if (doRefresh) {\r
- //console.log('Will do another ajax request after a timeout in order to render: pz2watch:activeclientsField'); \r
- renderTargetsReqVar=setTimeout(\r
- function() { \r
- //console.log('Making request for pz2watch:activeclientsField');\r
- jsf.ajax.request(sourcecomp, null,{render: "pz2watch:activeclientsField"}); \r
- }\r
- ,500);\r
- } else {\r
- //console.log("No further updates from server requested");\r
- }\r
- }\r
- \r
- function renderOnRecordTargets(doRefresh)\r
- {\r
- console.log('rendering ' + renderWhileActiveclientsRecord);\r
- var sourcecomp = document.getElementById("pz2watch:activeclientsFieldRecord");\r
- jsf.ajax.request(sourcecomp, null,{render: renderWhileActiveclientsRecord});\r
- if (doRefresh) {\r
- console.log('Will do another ajax request after a timeout in order to render: pz2watch:activeclientsFieldRecord'); \r
- renderOnRecordTargetsReqVar=setTimeout(\r
- function() { \r
- console.log('Making request for pz2watch:activeclientsFieldRecord');\r
- jsf.ajax.request(sourcecomp, null,{render: "pz2watch:activeclientsFieldRecord"}); \r
- }\r
- ,1000);\r
- } else {\r
- //console.log("No further updates from server requested");\r
- }\r
- }\r
-\r
-\r
- function windowlocationhashListener () {\r
- if (trackHistory) {\r
- //console.log("browser hash update detected");\r
- var stateKey = document.getElementById("pz2watch:windowlocationhash");\r
- if (window.location.hash != stateKey.value) {\r
- //console.log("updating stateKey with new browser hash: " + window.location.hash);\r
- stateKey.value = window.location.hash;\r
- if (! stateKey.value) window.location.hash = '#initial';\r
- stateKey.onchange();\r
- } else {\r
- //console.log("State hash already has the value of the new browser hash - not updating state hash");\r
- } \r
- } \r
- } \r
-\r
- function fieldUpdateListener (data) {\r
- if (data.status === "success") {\r
- var updates = data.responseXML.getElementsByTagName("update");\r
- for (var i=0, max=updates.length; i<max; i++) {\r
- var lsnri = fieldListeners.getListener(updates[i].getAttribute("id"));\r
- if (lsnri) {\r
- lsnri.invoke(updates[i]);\r
- }\r
- }\r
- }\r
- }\r
- \r
- var Pz2listeners = function () {\r
- var lsnrs = {};\r
- this.addListener = function (key, lsnr) {\r
- lsnrs[key] =lsnr;\r
- };\r
- this.getListener = function (key) {\r
- return lsnrs[key];\r
- };\r
- };\r
-\r
- var fieldListeners = new Pz2listeners();\r
-\r
- var StateListener = function () {\r
- this.invoke = function (field) {\r
- var stateKeyDoc = StringtoXML(field.textContent || field.text);\r
- var stateKeyValue = stateKeyDoc.childNodes[0].getAttribute("value");\r
- //console.log('Application hash update detected. New value: ' + stateKeyValue);\r
- if (stateKeyValue !== window.location.hash) {\r
- window.location.hash = stateKeyValue;\r
- //console.log("Browsers hash updated accordingly.");\r
- } else {\r
- //console.log("Browsers hash already has the value of the state hash. Not updating browser hash."); \r
- }\r
-\r
- };\r
- };\r
- \r
- var ActiveclientsListener = function () {\r
- this.invoke = function (field) {\r
- var updateDoc = StringtoXML(field.textContent || field.text);\r
- var activeClientsValue = (updateDoc.childNodes[0].textContent || updateDoc.childNodes[0].text);\r
- //console.log('Activeclients response detected: ' + activeClientsValue);\r
- clearTimeout(renderTargetsReqVar);\r
- if (activeClientsValue > '0') {\r
- renderTargets(true);\r
- } else {\r
- renderTargets(false);\r
- }\r
- };\r
- };\r
- \r
- var ActiveclientsRecordListener = function () {\r
- this.invoke = function (field) {\r
- var updateDoc = StringtoXML(field.textContent || field.text);\r
- var activeClientsRecordValue = (updateDoc.childNodes[0].textContent || updateDoc.childNodes[0].text);\r
- console.log('Activeclients response for record detected: ' + activeClientsRecordValue);\r
- clearTimeout(renderOnRecordTargetsReqVar);\r
- if (activeClientsRecordValue > '0') {\r
- renderOnRecordTargets(true);\r
- } else {\r
- console.log('Active clients is 0, final rendering');\r
- renderOnRecordTargets(false);\r
- }\r
- };\r
- };\r
-\r
- \r
- jsf.ajax.addOnEvent(fieldUpdateListener);\r
- \r
- function StringtoXML(text){\r
- var doc;\r
- if (window.ActiveXObject){\r
- doc=new ActiveXObject('Microsoft.XMLDOM');\r
- doc.async=false;\r
- doc.loadXML(text);\r
- } else {\r
- var parser=new DOMParser();\r
- doc=parser.parseFromString(text,'text/xml');\r
- }\r
- return doc;\r
- }\r
-\r
- var setUpListeners = function () {\r
- //console.log("Starts tracking activeclientsField");\r
- fieldListeners.addListener("pz2watch:activeclientsField", new ActiveclientsListener());\r
- fieldListeners.addListener("pz2watch:activeclientsFieldRecord", new ActiveclientsRecordListener());\r
- if (trackHistory) {\r
- //console.log("Starts tracking windowlocationhash field");\r
- fieldListeners.addListener("pz2watch:windowlocationhash", new StateListener());\r
- //console.log("Setting listener for browser onhashchange");\r
- window.onload = window.onhashchange = windowlocationhashListener;\r
- }\r
- };
\ No newline at end of file
--- /dev/null
+ var renderTargetsReqVar;\r
+ var renderOnRecordTargetsReqVar;\r
+ \r
+ function renderTargets(doRefresh)\r
+ {\r
+ //console.log('rendering ' + renderWhileActiveclients);\r
+ var sourcecomp = document.getElementById("pz2watch:activeclientsField");\r
+ jsf.ajax.request(sourcecomp, null,{render: renderWhileActiveclients + " pz2watch:errorMessages"});\r
+ if (doRefresh) {\r
+ //console.log('Will do another ajax request after a timeout in order to render: pz2watch:activeclientsField'); \r
+ renderTargetsReqVar=setTimeout(\r
+ function() { \r
+ //console.log('Making request for pz2watch:activeclientsField');\r
+ jsf.ajax.request(sourcecomp, null,{render: "pz2watch:activeclientsField"}); \r
+ }\r
+ ,500);\r
+ } else {\r
+ //console.log("No further updates from server requested");\r
+ }\r
+ }\r
+ \r
+ function renderOnRecordTargets(doRefresh)\r
+ {\r
+ console.log('rendering ' + renderWhileActiveclientsRecord);\r
+ var sourcecomp = document.getElementById("pz2watch:activeclientsFieldRecord");\r
+ jsf.ajax.request(sourcecomp, null,{render: renderWhileActiveclientsRecord});\r
+ if (doRefresh) {\r
+ console.log('Will do another ajax request after a timeout in order to render: pz2watch:activeclientsFieldRecord'); \r
+ renderOnRecordTargetsReqVar=setTimeout(\r
+ function() { \r
+ console.log('Making request for pz2watch:activeclientsFieldRecord');\r
+ jsf.ajax.request(sourcecomp, null,{render: "pz2watch:activeclientsFieldRecord"}); \r
+ }\r
+ ,1000);\r
+ } else {\r
+ //console.log("No further updates from server requested");\r
+ }\r
+ }\r
+\r
+\r
+ function windowlocationhashListener () {\r
+ if (trackHistory) {\r
+ //console.log("browser hash update detected");\r
+ var stateKey = document.getElementById("pz2watch:windowlocationhash");\r
+ if (window.location.hash != stateKey.value) {\r
+ //console.log("updating stateKey with new browser hash: " + window.location.hash);\r
+ stateKey.value = window.location.hash;\r
+ if (! stateKey.value) window.location.hash = '#initial';\r
+ stateKey.onchange();\r
+ } else {\r
+ //console.log("State hash already has the value of the new browser hash - not updating state hash");\r
+ } \r
+ } \r
+ }\r
+ \r
+ function viewExpirationListener (data) {\r
+ if (data.status === "success" && data.responseXML) { \r
+ var errorElements = data.responseXML.getElementsByTagName("error-name");\r
+ if (errorElements.length>0) {\r
+ var errorname = errorElements.item(0).textContent || errorElements.item(0).text;\r
+ if (errorname === "class javax.faces.application.ViewExpiredException") {\r
+ var newloc = window.location.protocol + "//" + window.location.host + window.location.pathname.replace(/;jsessionid.*/,'');\r
+ alert('Sorry, but this session has expired, will load a new one for you.');\r
+ window.location.replace(newloc);\r
+ } \r
+ }\r
+ }\r
+\r
+ }\r
+\r
+ function fieldUpdateListener (data) {\r
+ if (data.status === "success") {\r
+ var updates = data.responseXML.getElementsByTagName("update");\r
+ for (var i=0, max=updates.length; i<max; i++) {\r
+ var lsnri = fieldListeners.getListener(updates[i].getAttribute("id"));\r
+ if (lsnri) {\r
+ lsnri.invoke(updates[i]);\r
+ }\r
+ }\r
+ } \r
+ }\r
+ \r
+ var Pz2listeners = function () {\r
+ var lsnrs = {};\r
+ this.addListener = function (key, lsnr) {\r
+ lsnrs[key] =lsnr;\r
+ };\r
+ this.getListener = function (key) {\r
+ return lsnrs[key];\r
+ };\r
+ };\r
+\r
+ var fieldListeners = new Pz2listeners();\r
+\r
+ var StateListener = function () {\r
+ this.invoke = function (field) {\r
+ var stateKeyDoc = StringtoXML(field.textContent || field.text);\r
+ var stateKeyValue = stateKeyDoc.childNodes[0].getAttribute("value");\r
+ //console.log('Application hash update detected. New value: ' + stateKeyValue);\r
+ if (stateKeyValue !== window.location.hash) {\r
+ window.location.hash = stateKeyValue;\r
+ //console.log("Browsers hash updated accordingly.");\r
+ } else {\r
+ //console.log("Browsers hash already has the value of the state hash. Not updating browser hash."); \r
+ }\r
+\r
+ };\r
+ };\r
+ \r
+ var ActiveclientsListener = function () {\r
+ this.invoke = function (field) {\r
+ var updateDoc = StringtoXML(field.textContent || field.text);\r
+ var activeClientsValue = (updateDoc.childNodes[0].textContent || updateDoc.childNodes[0].text);\r
+ //console.log('Activeclients response detected: ' + activeClientsValue);\r
+ clearTimeout(renderTargetsReqVar);\r
+ if (activeClientsValue > '0') {\r
+ renderTargets(true);\r
+ } else {\r
+ renderTargets(false);\r
+ }\r
+ };\r
+ };\r
+ \r
+ var ActiveclientsRecordListener = function () {\r
+ this.invoke = function (field) {\r
+ var updateDoc = StringtoXML(field.textContent || field.text);\r
+ var activeClientsRecordValue = (updateDoc.childNodes[0].textContent || updateDoc.childNodes[0].text);\r
+ console.log('Activeclients response for record detected: ' + activeClientsRecordValue);\r
+ clearTimeout(renderOnRecordTargetsReqVar);\r
+ if (activeClientsRecordValue > '0') {\r
+ renderOnRecordTargets(true);\r
+ } else {\r
+ console.log('Active clients is 0, final rendering');\r
+ renderOnRecordTargets(false);\r
+ }\r
+ };\r
+ };\r
+\r
+ \r
+ jsf.ajax.addOnEvent(fieldUpdateListener);\r
+ jsf.ajax.addOnEvent(viewExpirationListener);\r
+ \r
+ function StringtoXML(text){\r
+ var doc;\r
+ if (window.ActiveXObject){\r
+ doc=new ActiveXObject('Microsoft.XMLDOM');\r
+ doc.async=false;\r
+ doc.loadXML(text);\r
+ } else {\r
+ var parser=new DOMParser();\r
+ doc=parser.parseFromString(text,'text/xml');\r
+ }\r
+ return doc;\r
+ }\r
+\r
+ var setUpListeners = function () {\r
+ //console.log("Starts tracking activeclientsField");\r
+ fieldListeners.addListener("pz2watch:activeclientsField", new ActiveclientsListener());\r
+ fieldListeners.addListener("pz2watch:activeclientsFieldRecord", new ActiveclientsRecordListener());\r
+ if (trackHistory) {\r
+ //console.log("Starts tracking windowlocationhash field");\r
+ fieldListeners.addListener("pz2watch:windowlocationhash", new StateListener());\r
+ //console.log("Setting listener for browser onhashchange");\r
+ window.onload = window.onhashchange = windowlocationhashListener;\r
+ }\r
+ };
\ No newline at end of file