[rhmessaging-commits] rhmessaging commits: r3362 - mgmt/trunk/cumin/python/cumin/grid.

rhmessaging-commits at lists.jboss.org rhmessaging-commits at lists.jboss.org
Wed May 6 15:07:31 EDT 2009


Author: eallen
Date: 2009-05-06 15:07:31 -0400 (Wed, 06 May 2009)
New Revision: 3362

Modified:
   mgmt/trunk/cumin/python/cumin/grid/job.py
   mgmt/trunk/cumin/python/cumin/grid/job.strings
   mgmt/trunk/cumin/python/cumin/grid/limit.py
   mgmt/trunk/cumin/python/cumin/grid/limit.strings
   mgmt/trunk/cumin/python/cumin/grid/pool.py
Log:
Defer the rendering of JobAds and the Limit Count since they are lengthy method calls.

Modified: mgmt/trunk/cumin/python/cumin/grid/job.py
===================================================================
--- mgmt/trunk/cumin/python/cumin/grid/job.py	2009-05-06 19:06:45 UTC (rev 3361)
+++ mgmt/trunk/cumin/python/cumin/grid/job.py	2009-05-06 19:07:31 UTC (rev 3362)
@@ -709,19 +709,57 @@
             property = item["property"]
             return property.description
 
+class JobAdsGroups(Widget):
+    def __init__(self, app, name):
+        super(JobAdsGroups, self).__init__(app, name)
+
+        self.group_tmpl = Template(self, "group_html")
+
+    def render_groups(self, session):
+        job = self.frame.get_args(session)[0]
+        groups = self.app.model.get_ad_groups()
+        writer = Writer()
+        for group in groups:
+            self.group_tmpl.render(writer, session, (job, group,))
+        return writer.to_string()
+
+    def render_group_name(self, session, args):
+        return args[1]
+
+    def render_properties(self, session, *args):
+        items = self.parent.do_get_items(session, *args)
+        writer = Writer()
+
+        for item in items:
+            self.parent.item_renderer.render(writer, session, item)
+
+        return writer.to_string()
+
 class JobAdsViewer(JobAdsSet):
     def __init__(self, app, name):
         super(JobAdsViewer, self).__init__(app, name)
 
-        self.group_tmpl = Template(self, "group_html")
         self.item_renderer = JobPropertyRenderer(self, "property_html")
 
+        self.groups = JobAdsGroups(app, "groups");
+        self.add_child(self.groups)
+
+        self.wait = Wait(app, "wait")
+        self.add_child(self.wait)
+
+        self.defer_enabled = True
+
     def get_args(self, session):
         return self.frame.get_args(session)
 
     def render_title(self, session, job):
         return "Attributes"
 
+    def render_edit_ads_url(self, session, job):
+        branch = session.branch()
+        self.frame.show_ads_edit(branch)
+        return branch.marshal()
+
     def do_get_items(self, session, args):
         job = args[0]
         group = args[1]
@@ -739,30 +777,6 @@
 
         return group_items
 
-    def render_properties(self, session, *args):
-        items = self.do_get_items(session, *args)
-        writer = Writer()
-
-        for item in items:
-            self.item_renderer.render(writer, session, item)
-
-        return writer.to_string()
-
-    def render_edit_ads_url(self, session, job):
-        branch = session.branch()
-        self.frame.show_ads_edit(branch)
-        return branch.marshal()
-
-    def render_groups(self, session, job):
-        groups = self.app.model.get_ad_groups()
-        writer = Writer()
-        for group in groups:
-            self.group_tmpl.render(writer, session, (job, group,))
-        return writer.to_string()
-
-    def render_group_name(self, session, args):
-        return args[1]
-
 class JobAdsEditor(CuminForm, JobAdsViewer):
     def __init__(self, app, name):
         super(JobAdsEditor, self).__init__(app, name)

Modified: mgmt/trunk/cumin/python/cumin/grid/job.strings
===================================================================
--- mgmt/trunk/cumin/python/cumin/grid/job.strings	2009-05-06 19:06:45 UTC (rev 3361)
+++ mgmt/trunk/cumin/python/cumin/grid/job.strings	2009-05-06 19:07:31 UTC (rev 3362)
@@ -229,6 +229,7 @@
 
 
 [JobAdsViewer.html]
+<div id="{id}">
 <ul class="actions">
   <li><a class="nav" href="{edit_ads_url}">Edit Attributes</a></li>
 </ul>
@@ -244,8 +245,19 @@
 <ul class="actions">
   <li><a class="nav" href="{edit_ads_url}">Edit Attributes</a></li>
 </ul>
+</div>
 
-[JobAdsViewer.group_html]
+[JobAdsViewer.deferred_html]
+<div id="{id}">
+    {wait}
+</div>
+
+[JobAdsGroups.html]
+<div id="{id}" style="position:relative;">
+    {groups}
+</div>
+
+[JobAdsGroups.group_html]
 <div class="sactions">
     <h2>{group_name}</h2>
 </div>

Modified: mgmt/trunk/cumin/python/cumin/grid/limit.py
===================================================================
--- mgmt/trunk/cumin/python/cumin/grid/limit.py	2009-05-06 19:06:45 UTC (rev 3361)
+++ mgmt/trunk/cumin/python/cumin/grid/limit.py	2009-05-06 19:07:31 UTC (rev 3362)
@@ -90,20 +90,23 @@
         return [{"name":x, "curr":limits[x]["CURRENT"], "max":limits[x]["MAX"]} for x in keys]
 
     def render_title(self, session):
-        return self.limit_count.get_title(session, "Limits")
+        return self.limit_count.render(session)
 
-    class LimitCount(AjaxField):
-        def get_url(self, session):
+    class LimitCount(Widget):
+        def __init__(self, app, name):
+            super(LimitsSet.LimitCount, self).__init__(app, name)
+            self.defer_enabled = True
+
+        def render_count(self, session):
             negotiator = self.parent.get_negotiator(session)
-            return negotiator and \
-                "call.xml?class=negotiator;id=%i;method=GetLimitCount" % negotiator.id
+            action = self.app.model.negotiator.GetLimits
+            limits = action.do_invoke(negotiator)
+            if "timeout" in limits:
+                val = 0
+            else:
+                val = len(limits)
+            return str(val)
 
-        def get_title(self, session, title):
-            script = self.render_script(session)
-            count = script and "?" or "0"
-            return "%s <span id=\"%s\"><span class='count'>(%s)</span>%s</span>" % \
-                (title, self.name, count, script)
-
     class NameColumn(ItemTableColumn):
         def render_title(self, session, data):
             return "Name"

Modified: mgmt/trunk/cumin/python/cumin/grid/limit.strings
===================================================================
--- mgmt/trunk/cumin/python/cumin/grid/limit.strings	2009-05-06 19:06:45 UTC (rev 3361)
+++ mgmt/trunk/cumin/python/cumin/grid/limit.strings	2009-05-06 19:07:31 UTC (rev 3362)
@@ -12,15 +12,11 @@
 </table>
 
 
-[LimitCount.javascript]
-function got_limit_count(obj, id) {
-    var elem = document.getElementById(id);
+[LimitCount.html]
+<span id="{id}">Limits <span class="count">({count})</span></span>
 
-    if (elem) {
-        var str = "<span class='count'>(" + obj.count.value + ")</span>";
-        elem.innerHTML = str;
-    }
-}
+[LimitCount.deferred_html]
+<span id="{id}">Limits <span class="count">(?)</span></span>
 
 [LimitEdit.css]
 form.limitform {

Modified: mgmt/trunk/cumin/python/cumin/grid/pool.py
===================================================================
--- mgmt/trunk/cumin/python/cumin/grid/pool.py	2009-05-06 19:06:45 UTC (rev 3361)
+++ mgmt/trunk/cumin/python/cumin/grid/pool.py	2009-05-06 19:07:31 UTC (rev 3362)
@@ -196,12 +196,9 @@
         self.negs = PoolNegotiatorSet(app, "negs")
         self.__tabs.add_tab(self.negs)
 
-        limits = self.LimitsTab(app, "limits")
+        limits = LimitsSet(app, "limits")
         self.__tabs.add_tab(limits)
 
-    class LimitsTab(LimitsSet):
-        pass
-
     def set_collector_tab(self, session):
         self.colls.show(session)
 




More information about the rhmessaging-commits mailing list