slice-leases.php has an add. section for displaying leases - ongoing work
[plewww.git] / planetlab / slices / leases.js
1 /* need to put some place else in CSS ? */
2
3 var x_nodename = 100;
4 var x_grain = 20;
5 var y_header = 10
6 var y_node = 15;
7 var y_sep = 5
8 var radius=5;
9
10 var leases_namespace = {
11
12     init_scheduler: function () {
13         // Grab the data
14         var data = [],
15         axisx = [],
16         axisy = [],
17         table = $$("table#leases_data")[0];
18         table.getElementsBySelector("tbody>tr>td").each(function (x) {
19             data.push(getInnerText(x));
20         });
21         table.getElementsBySelector("tbody>tr>th").each(function (x) {
22             axisy.push(getInnerText(x));
23         });
24         table.getElementsBySelector("thead>tr>th").each(function (x) {
25             axisx.push(getInnerText(x));
26         });
27
28         var slicename = getInnerText(table.getElementsBySelector("thead>tr>td")[0]);
29         table.hide();
30         var nb_nodes = axisy.length, nb_grains = axisx.length;
31         var total_width = x_nodename + nb_grains*x_grain;
32         var total_height = y_header + nb_nodes*(y_node+y_sep);
33         paper = Raphael("leases_area", total_width, total_height,10);
34 //      alert ('nodes=' + nb_nodes + ' grains=' + nb_grains + ' data items=' + data.length + ' slicename=' + slicename);
35
36 //        color = table.css("color");
37         var top=0;
38         var data_index=0;
39         axisy.each(function (node) {
40             left=0;
41             var label = paper.text(x_nodename/2,top+y_node/2,axisy[node]);
42             label.attr ("font-size",y_node);
43         
44             left += x_nodename;
45             var grain=0;
46             while (grain < nb_grains) {
47                 var rect=paper.rect (left,top,x_grain,y_node,radius);
48                 var color;
49                 if (data[data_index] != "") {
50                     if (data[data_index] == slicename) color="#0f0";
51                     else color="#f00";
52 //              alert('based on data value [' + data[data_index] + '] - got color ' + color);
53                     rect.attr("fill",color);
54                 }
55                 left += x_grain;
56                 grain += 1;
57                 data_index +=1;
58             }
59             top += y_node;
60         });
61     }
62
63 /*
64         r.rect(10, 10, total_width-20, total_height-20, radius).attr({fill: "#888", stroke: "#fff"});
65         for (var i = 0, ii = axisx.length; i < ii; i++) {
66             r.text(leftgutter + X * (i + .5), 294, axisx[i]).attr(txt);
67         }
68         for (var i = 0, ii = axisy.length; i < ii; i++) {
69             r.text(10, Y * (i + .5), axisy[i]).attr(txt);
70         }
71         var o = 0;
72         for (var i = 0, ii = axisy.length; i < ii; i++) {
73             for (var j = 0, jj = axisx.length; j < jj; j++) {
74                 var R = data[o] && Math.min(Math.round(Math.sqrt(data[o] / Math.PI) * 4), max);
75                 if (R) {
76                     (function (dx, dy, R, value) {
77                         var color = "hsb(" + [(1 - R / max) * .5, 1, .75] + ")";
78                         var dt = r.circle(dx + 60 + R, dy + 10, R).attr({stroke: "none", fill: color});
79                         if (R < 6) {
80                             var bg = r.circle(dx + 60 + R, dy + 10, 6).attr({stroke: "none", fill: "#000", opacity: .4}).hide();
81                         }
82                         var lbl = r.text(dx + 60 + R, dy + 10, data[o])
83                             .attr({"font": '10px Fontin-Sans, Arial', stroke: "none", fill: "#fff"}).hide();
84                         var dot = r.circle(dx + 60 + R, dy + 10, max).attr({stroke: "none", fill: "#000", opacity: 0});
85                         dot[0].onmouseover = function () {
86                             if (bg) {
87                                 bg.show();
88                             } else {
89                                 var clr = Raphael.rgb2hsb(color);
90                                 clr.b = .5;
91                                 dt.attr("fill", Raphael.hsb2rgb(clr).hex);
92                             }
93                             lbl.show();
94                         };
95                         dot[0].onmouseout = function () {
96                             if (bg) {
97                                 bg.hide();
98                             } else {
99                                 dt.attr("fill", color);
100                             }
101                             lbl.hide();
102                         };
103                     })(leftgutter + X * (j + .5) - 60 - R, Y * (i + .5) - 10, R, data[o]);
104                 }
105                 o++;
106             }
107         }
108     }
109 */
110 };
111
112 Event.observe(window, 'load', leases_namespace.init_scheduler);