Adds polling for record command (WiP)
authorNiels Erik G. Nielsen <nielserik@indexdata.com>
Sat, 30 Mar 2013 06:59:00 +0000 (23:59 -0700)
committerNiels Erik G. Nielsen <nielserik@indexdata.com>
Sat, 30 Mar 2013 06:59:00 +0000 (23:59 -0700)
src/META-INF/resources/pz2utils/fieldlisteners.js
src/META-INF/resources/pz2utils/pz2watch.xhtml
src/main/java/com/indexdata/pz2utils4jsf/pazpar2/Pz2Session.java
src/main/java/com/indexdata/pz2utils4jsf/pazpar2/data/RecordResponse.java
src/main/java/com/indexdata/pz2utils4jsf/pz2utils/ListenerFieldIds.java

index 5f521f0..300d223 100644 (file)
@@ -1,4 +1,5 @@
   var renderTargetsReqVar;\r
+  var renderOnRecordTargetsReqVar;\r
     \r
   function renderTargets(doRefresh)\r
   {\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
+            ,2000);\r
+    } else {\r
+       console.log("No further updates from server requested");\r
+       jsf.ajax.request(sourcecomp, null,{render: renderWhileActiveclientsRecord});\r
+    }\r
+  }\r
+\r
 \r
   function windowlocationhashListener () {\r
          if (trackHistory) {\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
   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
index 9cbdda2..39706dd 100644 (file)
@@ -13,6 +13,7 @@
 \r
   <cc:interface>\r
     <cc:attribute name="renderWhileActiveclients"/>\r
+    <cc:attribute name="renderWhileActiveclientsRecord"/>\r
     <cc:attribute name="trackHistory"/>\r
     <cc:attribute name="renderOnHitoryChange"/> \r
     <cc:attribute name="debug"/>   \r
@@ -26,6 +27,7 @@
     <script>\r
      //<![CDATA[\r
        var renderWhileActiveclients = "${cc.attrs.renderWhileActiveclients}";\r
+       var renderWhileActiveclientsRecord = "${cc.attrs.renderWhileActiveclientsRecord}";\r
        var renderOnHistoryChange = "${cc.attrs.renderOnHistoryChange}";\r
        var trackHistory = ("${cc.attrs.trackHistory}" == "true");  \r
        setUpListeners();\r
@@ -35,6 +37,8 @@
     <h:form id="activeclientsForm" prependId="false">\r
       <h:outputText id="activeClientsLabel" value="Active clients: " style="${cc.attrs.debug == 'true' ? '' : 'display:none;'}"/> \r
       <h:outputText id="activeclientsField" value="${pz2.update()}"  style="${cc.attrs.debug == 'true' ? '' : 'display:none;'}"/>\r
+      <h:outputText id="activeclientsFieldRecord" value="${pz2.update('record')}" style="${cc.attrs.debug == 'true' ? '' : 'display:none;'}"/>\r
+      \r
       <h:panelGrid id="errorMessages" style="${pz2.hasErrors() ? 'display: block;' : 'display: none;'}">\r
         <h:dataTable value="#{pz2.configurationErrors}" var="error" cellspace="0" cellpadding="0" style="${pz2.hasConfigurationErrors() ? 'display: block; vertical-align: top;' : 'display: none;'}">\r
           <h:column valign="top">\r
index e0b7ea7..a4b1b68 100644 (file)
@@ -126,7 +126,12 @@ public class Pz2Session implements Pz2Interface {
            Pazpar2ResponseData responseObject = Pazpar2ResponseParser.getParser().getDataObject(response);\r
            dataObjects.put(commandName, responseObject);        \r
         }\r
-        return getActiveClients();\r
+        if (commands.equals("record")) {\r
+          logger.debug("Record: Active clients: "+getRecord().getActiveClients());\r
+          return getRecord().getActiveClients();\r
+        } else {\r
+          return getActiveClients();\r
+        }  \r
       } else {\r
         logger.debug("Skipped requests for " + commands + " as there's not yet a query."); \r
         resetDataObjects();\r
index d1af720..1667c1f 100644 (file)
@@ -55,5 +55,9 @@ public class RecordResponse extends Pazpar2ResponseData {
     return getLocations().size()>0 ? getLocations().get(0) : null;\r
   }\r
   \r
+  public String getActiveClients () {\r
+    return getOneElementValue("activeclients");\r
+  }\r
+\r
   \r
 }\r
index 4315d82..a454936 100644 (file)
@@ -19,6 +19,10 @@ public class ListenerFieldIds implements Serializable {
     return ":pz2watch:activeclientsForm:activeclientsField";\r
   }\r
   \r
+  public String getActiveclientsRecord () {\r
+    return ":pz2watch:activeclientsForm:activeclientsFieldRecord";\r
+  }\r
+  \r
   public String getErrorMessages () {\r
     return ":pz2watch:activeclientsForm:errorMessages";\r
   }\r