Author: eallen
Date: 2011-03-18 19:25:55 +0000 (Fri, 18 Mar 2011)
New Revision: 4638
Modified:
trunk/cumin/python/cumin/grid/dashboard.py
trunk/cumin/python/cumin/grid/dashboard.strings
trunk/cumin/python/cumin/grid/slot.py
trunk/cumin/python/cumin/grid/slotvis.py
trunk/cumin/python/cumin/grid/slotvis.strings
trunk/cumin/python/cumin/inventory/system.strings
trunk/cumin/resources/app.js
trunk/cumin/resources/slots.swf
Log:
Make slot visualization four columns wide.
Scroll vis back to top when expanded.
Attempt to prevent vis from reverting to previous state after user changes grouping or
expands/collapses.
Remove group by None
Modified: trunk/cumin/python/cumin/grid/dashboard.py
===================================================================
--- trunk/cumin/python/cumin/grid/dashboard.py 2011-03-18 17:06:19 UTC (rev 4637)
+++ trunk/cumin/python/cumin/grid/dashboard.py 2011-03-18 19:25:55 UTC (rev 4638)
@@ -201,9 +201,6 @@
return [self.get_item_value(session, x) or 0 for x in items if not
self.is_total(x)]
class DefinitionSetPopup(Widget):
- def __init__(self, app, name):
- super(PieStatSet.DefinitionSetPopup, self).__init__(app, name)
-
def render_chart_href(self, session):
return self.page.get_popup_url(session, self.parent.chart_link)
Modified: trunk/cumin/python/cumin/grid/dashboard.strings
===================================================================
--- trunk/cumin/python/cumin/grid/dashboard.strings 2011-03-18 17:06:19 UTC (rev 4637)
+++ trunk/cumin/python/cumin/grid/dashboard.strings 2011-03-18 19:25:55 UTC (rev 4638)
@@ -148,7 +148,7 @@
margin-bottom: 1em;
height: 1em;
padding: 0.5em;
- background-color: #F0F0F0;
+ background-color: #F7F7F7;
clear: right;
}
Modified: trunk/cumin/python/cumin/grid/slot.py
===================================================================
--- trunk/cumin/python/cumin/grid/slot.py 2011-03-18 17:06:19 UTC (rev 4637)
+++ trunk/cumin/python/cumin/grid/slot.py 2011-03-18 19:25:55 UTC (rev 4638)
@@ -171,6 +171,10 @@
self.json = Parameter(app, "json")
self.add_parameter(self.json)
+ self.sequence = IntegerParameter(app, "seq")
+ self.sequence.default = 0
+ self.add_parameter(self.sequence)
+
self.expanded = Parameter(app, "expanded")
self.expanded.default = ""
self.expanded.all = "all"
@@ -303,7 +307,9 @@
root.value = self.object_param.get(session)._id
root.slots = slot_count
json = self.json.get(session)
+ sequence = self.sequence.get(session)
root.vis = json
+ root.seq = sequence
root.shape_info = self.shapes
root.activity_colors = self.interiors
expanded = self.expanded.get(session)
Modified: trunk/cumin/python/cumin/grid/slotvis.py
===================================================================
--- trunk/cumin/python/cumin/grid/slotvis.py 2011-03-18 17:06:19 UTC (rev 4637)
+++ trunk/cumin/python/cumin/grid/slotvis.py 2011-03-18 19:25:55 UTC (rev 4638)
@@ -89,6 +89,7 @@
return sess.marshal()
def render_slot_chart_width(self, session):
+ return 800
return self.render_slot_clip_size(session)
def render_slot_chart_height(self, session):
@@ -96,7 +97,12 @@
data = cursor.fetchall()
# allow 44 px per machine up to 8100
- return max(min((len(data) / 2) * 44, 8100), self.render_slot_clip_size(session))
+ rows = len(data) / 4
+ if rows % 4:
+ rows += 1
+ total_height = rows * 43.6
+ at_least = max(total_height, self.slot_clip_size)
+ return min(at_least, 8100)
def render_fullpageable(self, session):
return self.fullpageable and "fullpageable" or ""
@@ -117,7 +123,7 @@
self.add_state("System", "By system")
self.add_state("AccountingGroup", "By accounting group")
- self.add_state("None", "No Grouping")
+ #self.add_state("OpSys", "By opsys")
def get_click(self, session, state):
href = self.parent.render_slots_href(session)
Modified: trunk/cumin/python/cumin/grid/slotvis.strings
===================================================================
--- trunk/cumin/python/cumin/grid/slotvis.strings 2011-03-18 17:06:19 UTC (rev 4637)
+++ trunk/cumin/python/cumin/grid/slotvis.strings 2011-03-18 19:25:55 UTC (rev 4638)
@@ -10,6 +10,9 @@
div#PoolSlotFlashVis div.slot_legend {
float: left;
}
+div#PoolSlotFlashVis div.SlotLegend {
+ margin: 4em 0 0 2em;
+}
div#PoolSlotFlashVis div.slot_visualization {
float: left;
}
@@ -22,26 +25,36 @@
<div class="slot_visualization">
<div class="duration">{group_by}</div>
<div id="{id}_chart"></div>
- <div>Click and drag up and down to scroll</div>
+ <div>Click and drag up and down within the list of slots to
scroll</div>
</div>
<div class="slot_legend">{slot_legend}</div><div
style="clear:both;"></div>
</div>
</div>
<script type="text/javascript">
//<![CDATA[
+ // called every time the page is updated (currently 10 secs) and
+ // when the user expands/collapses the flash chart
function updatePoolSlotVis(id, loadType) {
var chart = cumin.getFlashChart(id);
if (typeof loadType == "undefined")
loadType = "load";
if ((chart != null) && (typeof chart.src != "undefined")) {
- if ((loadType == "reload") && (typeof chart.reload !=
"undefined"))
- chart.reload(chart.src, false);
- else if ((loadType == "load") && (typeof chart.load !=
"undefined"))
- chart.load(chart.src, false);
- else
+
+ var seq = incrementChartSequence(chart);
+ if ((loadType == "reload") && (typeof chart.reload !=
"undefined")) {
+ chart.reload(chart.src, seq);
+ wooly.log("reloaded chart " + chart.src);
+ }
+ else if ((loadType == "load") && (typeof chart.load !=
"undefined")) {
+ chart.load(chart.src, seq);
+ wooly.log("loaded chart " + chart.src);
+ }
+ else {
wooly.log("load not defined for " + id);
+ }
}
}
+
function vis_loaded(data) {
if (data == "1") {
$('PoolSlotFlashVis').style.visibility = "visible";
@@ -64,6 +77,7 @@
branch['expanded'] = parent;
chart.src = branch.marshal();
updatePoolSlotVis("{id}", "load");
+ var myFx = new Fx.Scroll(window).toTop();
}
function vis_back() {
var chart = cumin.getFlashChart("{id}");
@@ -116,7 +130,7 @@
var fsm = document.getElementById('flashSlotMap');
if (fsm)
fsm.style.display = "block";
-
+
var params = {menu: "false", scale: "noScale",
allowFullscreen: "true", allowScriptAccess: "always", bgcolor:
"#FFFFFF"};
var branch = wooly.session.branch();
if (branch.formBackground) {
@@ -125,7 +139,7 @@
}
swfobject.embedSWF("resource?name=slots.swf",
"{id}_chart", "{slot_chart_width}", "{slot_chart_height}",
"9.0.0", "", {vis:"slots"}, params);
-
+
wooly.addPageUpdateListener(function () { updatePoolSlotVis('{id}',
"reload"); });
window.addEvent('domready',function () {
cumin.setFullpageHandler('{id}', '{fullpage_href}');
Modified: trunk/cumin/python/cumin/inventory/system.strings
===================================================================
--- trunk/cumin/python/cumin/inventory/system.strings 2011-03-18 17:06:19 UTC (rev 4637)
+++ trunk/cumin/python/cumin/inventory/system.strings 2011-03-18 19:25:55 UTC (rev 4638)
@@ -62,12 +62,13 @@
function updateSystemSlotVis(id, loadType) {
var chart = cumin.getFlashChart(id);
if ((chart != null) && (typeof chart.src != "undefined")) {
+ var seq = incrementChartSequence(chart);
if (typeof loadType != "undefined") {
if (typeof chart.reload != "undefined")
- chart.reload(chart.src, false);
+ chart.reload(chart.src, seq);
} else {
if (typeof chart.load != "undefined")
- chart.load(chart.src, false);
+ chart.load(chart.src, seq);
else
wooly.log("load not defined for " + id);
}
Modified: trunk/cumin/resources/app.js
===================================================================
--- trunk/cumin/resources/app.js 2011-03-18 17:06:19 UTC (rev 4637)
+++ trunk/cumin/resources/app.js 2011-03-18 19:25:55 UTC (rev 4638)
@@ -416,6 +416,18 @@
wooly.log("reload not definded for " + id);
}
+function incrementChartSequence(chart) {
+ var src = chart.src;
+ var branch = wooly.session.branch(src);
+ if (typeof branch['seq'] == "undefined")
+ branch['seq'] = '0';
+ var seq = parseInt(branch['seq']) + 1;
+ branch['seq'] = seq;
+ chart.src = branch.marshal();
+ return seq;
+}
+
+
/*
function ofc_ready(id) {
if (typeof id != "undefined") {
Modified: trunk/cumin/resources/slots.swf
===================================================================
(Binary files differ)