From: kupcevic@sourceware.org <kupcevic@sourceware.org>
To: cluster-devel.redhat.com
Subject: [Cluster-devel] conga/luci site/luci/Extensions/StorageReport. ...
Date: 15 Oct 2006 05:09:47 -0000 [thread overview]
Message-ID: <20061015050947.20751.qmail@sourceware.org> (raw)
CVSROOT: /cvs/cluster
Module name: conga
Changes by: kupcevic at sourceware.org 2006-10-15 05:09:46
Modified files:
luci/site/luci/Extensions: StorageReport.py
luci/storage : form-macros mappings_provider
Log message:
luci storage: cylinders' improvements (path tooltip, 'click me' directions, legend)
Patches:
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/luci/site/luci/Extensions/StorageReport.py.diff?cvsroot=cluster&r1=1.14&r2=1.15
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/luci/storage/form-macros.diff?cvsroot=cluster&r1=1.12&r2=1.13
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/luci/storage/mappings_provider.diff?cvsroot=cluster&r1=1.2&r2=1.3
--- conga/luci/site/luci/Extensions/StorageReport.py 2006/10/14 20:01:52 1.14
+++ conga/luci/site/luci/Extensions/StorageReport.py 2006/10/15 05:09:46 1.15
@@ -1822,27 +1822,34 @@
high_list = {}
# upper cyl
- upper_cyl = {'offset' : 0,
- 'cyls' : [],
- 'highs' : [],
- 'js' : [],
- 'color' : 'blue'}
+ upper_cyl = {'offset' : 0,
+ 'cyls' : [],
+ 'highs' : [],
+ 'js' : [],
+ 'color' : 'blue',
+ 'color_css' : '#0192db',
+ 'description': mapper_data['pretty_targets_name']}
+ if mapper_data['mapper_type'] == MAPPER_PT_TYPE:
+ upper_cyl['description'] = 'Physical ' + upper_cyl['description']
+
offset = 0
for t in mapper_data['targets_all']:
if t['mapper_type'] == MAPPER_PT_TYPE:
if t['props']['partition_type']['value'] == 'logical':
continue
data = {}
- data['bd'] = t
- data['id'] = t['path']
+ data['bd'] = t
+ data['id'] = t['path']
beg = offset
end = beg + int(t['props']['size']['value'])
- data['beg'] = beg
- data['end'] = end
- data['color'] = 'blue'
+ data['beg'] = beg
+ data['end'] = end
+ data['color'] = 'blue'
+ data['color_css'] = '#0192db'
if mapper_data['mapper_type'] == MAPPER_PT_TYPE:
if t['props']['partition_type']['value'] == 'extended' and not t['new']:
- data['color'] = 'black'
+ data['color'] = 'black'
+ data['color_css'] = 'black'
upper_cyl['cyls'].append(data)
offset = end
@@ -1861,8 +1868,8 @@
'id' : h_id,
'type' : 'select'})
upper_cyl['js'].append([d['id'],
- [beg,
- end]])
+ [beg, end],
+ d['bd']['pretty_name']])
high_list[d['id']] = [h_id]
# snapshots
@@ -1892,28 +1899,34 @@
upper_cyl['js'] = str(upper_cyl['js']).replace('L,', ',').replace('L]', ']').replace('u\'', '\'').replace('L]', ']')
# lower cylinder
- lower_cyl = {'offset' : 0,
- 'cyls' : [],
- 'highs' : [],
- 'js' : [],
- 'color' : 'red'}
+ lower_cyl = {'offset' : 0,
+ 'cyls' : [],
+ 'highs' : [],
+ 'js' : [],
+ 'color' : 'red',
+ 'color_css' : '#a43737',
+ 'description': mapper_data['pretty_sources_name']}
+
offset = 0
for t in mapper_data['sources']:
data = {}
- data['bd'] = t
- data['id'] = t['path']
+ data['bd'] = t
+ data['id'] = t['path']
beg = offset
end = beg + int(t['props']['size']['value'])
- data['beg'] = beg
- data['end'] = end
- data['color'] = 'red'
+ data['beg'] = beg
+ data['end'] = end
+ data['color'] = 'red'
+ data['color_css'] = '#a43737'
lower_cyl['cyls'].append(data)
offset = end
if mapper_data['mapper_type'] == MAPPER_PT_TYPE:
- lower_cyl['cyls'] = []
- lower_cyl['color'] = 'blue'
- lower_cyl['offset'] = 9999999999999999999999999
+ lower_cyl['description'] = 'Logical ' + mapper_data['pretty_targets_name']
+ lower_cyl['cyls'] = []
+ lower_cyl['color'] = 'blue'
+ lower_cyl['color_css'] = '#0192db'
+ lower_cyl['offset'] = 9999999999999999999999999
offset = 0
for t in mapper_data['targets_all']:
@@ -1923,13 +1936,14 @@
if part_beg < lower_cyl['offset']:
lower_cyl['offset'] = part_beg
data = {}
- data['bd'] = t
- data['id'] = t['path']
+ data['bd'] = t
+ data['id'] = t['path']
beg = offset
end = beg + int(t['props']['size']['value'])
- data['beg'] = beg
- data['end'] = end
- data['color'] = 'blue'
+ data['beg'] = beg
+ data['end'] = end
+ data['color'] = 'blue'
+ data['color_css'] = '#0192db'
lower_cyl['cyls'].append(data)
offset = end
@@ -1956,8 +1970,8 @@
'id' : h_id,
'type' : 'select'})
lower_cyl['js'].append([d['id'],
- [beg,
- end]])
+ [beg, end],
+ d['bd']['pretty_name']])
high_list[d['id']] = [h_id]
lower_cyl['js'] = str(lower_cyl['js']).replace('L,', ',').replace('L]', ']').replace('u\'', '\'').replace('L]', ']')
--- conga/luci/storage/form-macros 2006/10/14 20:01:52 1.12
+++ conga/luci/storage/form-macros 2006/10/15 05:09:46 1.13
@@ -522,14 +522,14 @@
<iframe style="border: none;"
tal:attributes="src python:'mappings_provider?storagename=' + storagename + '&mapper_id=' + mapper['mapper_id'] + '&selected_path=' + bd_path;
width string:700px;
- height string:180"></iframe>
+ height string:195"></iframe>
</div>
<div id="textual_view"
tal:attributes="class mappings_view_classnames/textual_view">
<br/>
<div>
- <h3>
+ <h3 style="font-size: small;">
<span tal:omit-tag=""
tal:define="targets mapper/targets_all">
<span tal:omit-tag=""
@@ -551,7 +551,7 @@
</div>
<br/>
<div>
- <h3>
+ <h3 style="font-size: small;">
<span tal:omit-tag=""
tal:define="sources mapper/sources">
<span tal:omit-tag=""
@@ -1431,7 +1431,7 @@
URL python:tmp_URL + '?storagename=' + storagename + '&pagetype=62'"
tal:attributes="href python:URL + '&mapper_type=' + bd_data['mapper_type'] + '&mapper_id=' + bd_data['mapper_id'] + '&bd_path=' + bd_data['path']"
style="font-size: xx-small;"
- tal:content="python: 'Go to ' + bd_data['pretty_mapper_type']"></a>
+ tal:content="python: 'Go to ' + bd_data['pretty_mapper_type'] + ' view'"></a>
</span>
</span>
<span tal:omit-tag=""
--- conga/luci/storage/mappings_provider 2006/10/07 01:04:01 1.2
+++ conga/luci/storage/mappings_provider 2006/10/15 05:09:46 1.3
@@ -136,14 +136,44 @@
var y = Y;
for (var i=0; i<c_data.length; i++) {
var elem = c_data[i];
- var id = elem[0];
+ var id = elem[0];
var beg = elem[1][0];
var end = elem[1][1];
if (x > beg && x < end)
select_subcyl(id, h_data);
}
}
-
+
+
+
+
+
+ function cyl_over(msg_board, X, Y, c_data, h_data) {
+ if (Y < 0 || Y > 40) {
+ msg_board.style.visibility = 'invisible';
+ return;
+ }
+ var x = X - ellipse(Y);
+ var y = Y;
+ for (var i=0; i<c_data.length; i++) {
+ var elem = c_data[i];
+ var beg = elem[1][0];
+ var end = elem[1][1];
+ if (x > beg && x < end) {
+ var descr = elem[2];
+ msg_board.innerHTML = descr;
+ msg_board.style.width = (descr.length + 1) + 'ex';
+ msg_board.style.left = X - 35;
+ msg_board.style.top = Y + 15;
+ msg_board.style.visibility = 'visible';
+ return;
+ }
+ }
+ msg_board.style.visibility = 'invisible';
+ }
+
+
+
</script>
@@ -176,16 +206,37 @@
-<span>
+<div>
+
+
+
+
+
+
<!-- upper cylinder -->
<div tal:define="cyl mapp_info/upper_cyl;
X_offset python:X_offset + cyl['offset']"
tal:condition="cyl/cyls"
- tal:attributes="style python:here.add_commas('position:absolute', here.add_commas('left: ' + str(X_offset), 'top: ' + str(Y_offset)))">
+ tal:attributes="style python:here.add_commas('position:absolute', here.add_commas('left: ' + str(X_offset), 'top: ' + str(Y_offset)))">
+
+ <!-- description -->
+ <div tal:define="style_1 python:here.add_commas('left: -1em', 'top: -1.5ex');
+ style_2 python:here.add_commas(style_1, 'position: absolute');
+ style_3 python:here.add_commas(style_2, 'width: ' + str(cyl_width))"
+ tal:attributes="style style_3">
+ <div tal:define="style_1 python:here.add_commas('font-size: xx-small', 'text-align: left');
+ style_2 python:here.add_commas(style_1, 'white-space: nowrap');
+ style_3 python:here.add_commas(style_2, 'color: ' + cyl['color_css'])"
+ tal:attributes="style style_3">
+ <span tal:replace="cyl/description"/>:
+ </div>
+ </div>
<div tal:define="one_temp_assignment python:here.add_commas('position:absolute', here.add_commas('left: ' + str(curve_width), 'top: 0'))"
tal:attributes="onmousedown python:'cyl_click(event.clientX-' + str(curve_width) + '-' + str(X_offset) + ', event.clientY-' + str(Y_offset) + ', ' + cyl['js'] + ', ' + mapp_info['js'] + ')';
+ onmousemove python:'cyl_over(document.getElementById(\'upper_msg_board\'), event.clientX-' + str(curve_width) + '-' + str(X_offset) + ', event.clientY-' + str(Y_offset) + ', ' + cyl['js'] + ', ' + mapp_info['js'] + ')';
+ onmouseout python:'document.getElementById(\'upper_msg_board\').style.visibility = \'hidden\'';
style python:here.add_commas('cursor: pointer', one_temp_assignment);
id string:upper_cylinder">
@@ -198,20 +249,38 @@
<div metal:use-macro="here/mappings_macros/macros/draw-highlights"/>
</span>
+ <div id="upper_msg_board"
+ style="position: absolute; border: 2px solid black; padding: 2px; background-color: lightyellow; visibility: hidden; z-index: 100; white-space: nowrap;">
+ </div>
</div>
</div>
-
+
<!-- lower cylinder -->
<div tal:define="cyl mapp_info/lower_cyl;
lower_Y_offset python:Y_offset + 80;
X_offset python:X_offset + cyl['offset']"
tal:condition="cyl/cyls"
- tal:attributes="style python:here.add_commas('position:absolute', here.add_commas('left: ' + str(X_offset), 'top: ' + str(lower_Y_offset)))">
+ tal:attributes="style python:here.add_commas('position:absolute', here.add_commas('left: ' + str(X_offset), 'top: ' + str(lower_Y_offset)))">
+ <!-- description -->
+ <div tal:define="style_1 python:here.add_commas('left: -1em', 'top: -1.5ex');
+ style_2 python:here.add_commas(style_1, 'position: absolute');
+ style_3 python:here.add_commas(style_2, 'width: ' + str(cyl_width))"
+ tal:attributes="style style_3">
+ <div tal:define="style_1 python:here.add_commas('font-size: xx-small', 'text-align: left');
+ style_2 python:here.add_commas(style_1, 'white-space: nowrap');
+ style_3 python:here.add_commas(style_2, 'color: ' + cyl['color_css'])"
+ tal:attributes="style style_3">
+ <span tal:replace="cyl/description"/>:
+ </div>
+ </div>
+
<div tal:define="one_temp_assignment python:here.add_commas('position:absolute', here.add_commas('left: ' + str(curve_width), 'top: 0'))"
tal:attributes="onmousedown python:'cyl_click(event.clientX-' + str(curve_width) + '-' + str(X_offset) + ', event.clientY-' + str(lower_Y_offset) + ', ' + cyl['js'] + ', ' + mapp_info['js'] + ')';
+ onmousemove python:'cyl_over(document.getElementById(\'lower_msg_board\'), event.clientX-' + str(curve_width) + '-' + str(X_offset) + ', event.clientY-' + str(lower_Y_offset) + ', ' + cyl['js'] + ', ' + mapp_info['js'] + ')';
+ onmouseout python:'document.getElementById(\'lower_msg_board\').style.visibility = \'hidden\'';
style python:here.add_commas('cursor: pointer', one_temp_assignment);
id string:lower_cylinder">
@@ -224,12 +293,29 @@
<div metal:use-macro="here/mappings_macros/macros/draw-highlights"/>
</span>
+ <div id="lower_msg_board"
+ style="position: absolute; border: 2px solid black; padding: 2px; background-color: lightyellow; visibility: hidden; z-index: 100; white-space: nowrap;">
+ </div>
</div>
</div>
-
-
-</span>
+
+
+ <!-- select me message -->
+ <div tal:define="cyl mapp_info/lower_cyl;
+ Y_offset python:Y_offset + 80 + 40 + 10;
+ X_offset python:X_offset;
+ style_1 python:here.add_commas('left: ' + str(X_offset), 'top: ' + str(Y_offset));
+ style_2 python:here.add_commas('position: absolute', style_1);
+ style_3 python:here.add_commas(style_2, 'width: ' + str(cyl_width))"
+ tal:attributes="style style_3">
+ <div style="font-size: x-small; text-align: center;">
+ Click cylinders to view properties, unselect all to view <span tal:replace="mapper/pretty_type"/>'s properties
+ </div>
+ </div>
+
+
+</div>
next reply other threads:[~2006-10-15 5:09 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2006-10-15 5:09 kupcevic [this message]
-- strict thread matches above, loose matches on Subject: below --
2007-05-30 22:04 [Cluster-devel] conga/luci site/luci/Extensions/StorageReport. rmccabe
2006-10-16 15:30 kupcevic
2006-10-16 7:39 kupcevic
2006-10-15 22:34 kupcevic
2006-10-15 5:44 kupcevic
2006-10-14 20:01 kupcevic
2006-10-09 19:11 kupcevic
2006-10-09 17:03 kupcevic
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20061015050947.20751.qmail@sourceware.org \
--to=kupcevic@sourceware.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.