[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