[CalendarServer-changes] [12811] CalendarServer/trunk/calendarserver/webadmin

source_changes at macosforge.org source_changes at macosforge.org
Tue Mar 4 21:30:22 PST 2014


Revision: 12811
          http://trac.calendarserver.org//changeset/12811
Author:   wsanchez at apple.com
Date:     2014-03-04 21:30:22 -0800 (Tue, 04 Mar 2014)
Log Message:
-----------
Start to drill down a bit.

Modified Paths:
--------------
    CalendarServer/trunk/calendarserver/webadmin/work.py
    CalendarServer/trunk/calendarserver/webadmin/work.xhtml

Modified: CalendarServer/trunk/calendarserver/webadmin/work.py
===================================================================
--- CalendarServer/trunk/calendarserver/webadmin/work.py	2014-03-05 05:30:00 UTC (rev 12810)
+++ CalendarServer/trunk/calendarserver/webadmin/work.py	2014-03-05 05:30:22 UTC (rev 12811)
@@ -90,7 +90,7 @@
     """
 
     def __init__(self, store, pollInterval=1000):
-        EventSourceResource.__init__(self, EventDecoder, bufferSize=1)
+        EventSourceResource.__init__(self, EventDecoder, bufferSize=100)
 
         self._store = store
         self._pollInterval = pollInterval
@@ -108,31 +108,47 @@
 
         # Look up all of the jobs
 
+        events = []
+
         itemsByTypeName = {}
 
         for item in (yield JobItem.all(txn)):
             itemsByTypeName.setdefault(item.workType, []).append(item)
 
-        totalsByTypeName = dict(
-            (workType, len(items))
-            for (workType, items) in itemsByTypeName.iteritems()
-        )
+        totalsByTypeName = {}
 
         for workType in JobItem.workTypes():
-            # If this workType isn't in the totals, there are zero of them.
-            totalsByTypeName.setdefault(workType.table.model.name, "0")
+            typeName = workType.table.model.name
+            items = itemsByTypeName.get(typeName, [])
+            totalsByTypeName[typeName] = len(items)
+            itemData = []
 
-        # Send data
+            for item in items:
+                itemData.append(dict(
+                    jobID=item.jobID,
+                    priority=item.priority,
+                    notBefore=item.notBefore.ctime(),  # FIXME: Use HTTP format
+                    notAfter=item.notAfter,
+                ))
 
-        self.addEvents((
-            dict(
-                eventClass=u"work-total",
-                eventID=time(),
-                eventText=asJSON(totalsByTypeName),
-                eventRetry=(self._pollInterval),
-            ),
+            if itemData:
+                events.append(dict(
+                    eventClass=typeName,
+                    eventID=time(),
+                    eventText=asJSON(itemData),
+                ))
+
+        events.append(dict(
+            eventClass=u"work-total",
+            eventID=time(),
+            eventText=asJSON(totalsByTypeName),
+            eventRetry=(self._pollInterval),
         ))
 
+        # Send data
+
+        self.addEvents(events)
+
         # Schedule the next poll
 
         if not hasattr(self, "_clock"):

Modified: CalendarServer/trunk/calendarserver/webadmin/work.xhtml
===================================================================
--- CalendarServer/trunk/calendarserver/webadmin/work.xhtml	2014-03-05 05:30:00 UTC (rev 12810)
+++ CalendarServer/trunk/calendarserver/webadmin/work.xhtml	2014-03-05 05:30:22 UTC (rev 12811)
@@ -80,6 +80,9 @@
 
       var maxSeen = 30;
 
+      var eventSource = undefined;
+      var itemTypeEventListener = undefined;
+
       function drawChart(data) {
         items = [];
 
@@ -256,19 +259,36 @@
       }
 
       function registerForEvents() {
-        var eventSource = new EventSource("./events");
+        eventSource = new EventSource("./events");
 
         eventSource.addEventListener(
           "work-total",
-          function(e) { drawChart(JSON.parse(e.data)); },
+          function(e) {
+            // container = document.getElementById("event_debug");
+            // container.innerHTML = e.data;
+
+            drawChart(JSON.parse(e.data));
+          },
           false
         );
       }
 
       function showDetails(workItemType) {
-        container = document.getElementById("work_item_details");
+        detailsContainer = document.getElementById("work_item_details");
+        detailsContainer.innerHTML = workItemType;
 
-        container.innerHTML = workItemType;
+        if (itemTypeEventListener != undefined) {
+          eventSource.removeEventListener(itemTypeEventListener)
+        }
+
+        eventContainer = document.getElementById("event_debug");
+        eventContainer.innerHTML = "";
+
+        itemTypeEventListener = function(e) {
+            eventContainer.innerHTML = e.data;
+        }
+
+        eventSource.addEventListener(workItemType, itemTypeEventListener)
       }
 
       window.onload = function() {
@@ -289,6 +309,8 @@
 
     <div id="work_item_details" />
 
+    <div id="event_debug" />
+
   </body>
 
 </html>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.macosforge.org/pipermail/calendarserver-changes/attachments/20140304/4d98f43c/attachment-0001.html>


More information about the calendarserver-changes mailing list