fix minidash statistics on node,site, and slice pages
[plstackapi.git] / planetstack / core / static / page_analytics.js
1 function getObjectAndEventQuery() {
2     var selectedNodeTxt = $('#currentOriginalNode').text();
3     selectedNodeTxt = selectedNodeTxt.trim();
4     selectedNodeTxt = selectedNodeTxt.split(' ').join('');//selectedNodeTxt.replace(" ", "")
5     var parentNodeTxt = $('#selectedMainNav').text();
6     parentNodeTxt = parentNodeTxt.replace("/\n","");
7     parentNodeTxt = parentNodeTxt.replace("ยป","");
8     parentNodeTxt = parentNodeTxt.trim();
9     if (parentNodeTxt.length > 0 && parentNodeTxt.charAt(parentNodeTxt.length-1)=='s') {
10             parentNodeTxt = parentNodeTxt.substring(0, parentNodeTxt.length-1);
11     }
12
13     if (parentNodeTxt == "Slice") {
14         return "&event=libvirt_heartbeat&slice=" + selectedNodeTxt;
15     } else if (parentNodeTxt == "Site") {
16         return "&event=node_heartbeat&site=" + selectedNodeTxt;
17     } else if (parentNodeTxt == "Node") {
18         return "&event=node_heartbeat&node=" + selectedNodeTxt;
19     } else {
20         return "&event=node_heartbeat";
21     }
22 }
23
24
25 function setPageStatInt(labelName, valueName, legend, units, value) {
26     $(labelName).text(legend).show();
27     $(valueName).text(Math.round(value)+units).show();
28 }
29
30 function setPageStatFloat(labelName, valueName, legend, units, value, dp) {
31     $(labelName).text(legend).show();
32     $(valueName).text(Number(value).toFixed(dp)+units).show();
33 }
34
35 // ----------------------------------------------------------------------------
36 // node count and average cpu utilization
37
38 function updatePageAnalyticsData(summaryData) {
39     window.pageAnalyticsUrl = summaryData["dataSourceUrl"];
40     lastRow = summaryData.rows.length-1;
41
42     setPageStatInt(".nodesLabel", ".nodesValue", "Node Count", "", summaryData.rows[lastRow]["count_hostname"]);
43     setPageStatInt(".cpuLabel", ".cpuValue", "Avg Load", "%", summaryData.rows[lastRow]["avg_cpu"]);
44
45     //New miniDashboard
46     setPageStatInt("#miniDashNodeCountLabel", "#miniDashNodeCount", "Node Count", "", summaryData.rows[lastRow]["count_hostname"]);
47     setPageStatInt("#miniDashAvgLoadLabel", "#miniDashAvgLoad", "Avg Load", "%", summaryData.rows[lastRow]["avg_cpu"]);
48 }
49
50 function updatePageAnalytics() {
51     var url= '/analytics/bigquery/?avg=%cpu&count=%hostname&cached=1' + getObjectAndEventQuery();
52     console.log(url);
53     $.ajax({
54     url: url,
55     dataType : 'json',
56     type : 'GET',
57     success: function(newData)
58     {
59         updatePageAnalyticsData(newData);
60     }
61 });
62     setTimeout(updatePageAnalytics, 30000);
63 }
64
65 setTimeout(updatePageAnalytics, 5000);
66
67 // ----------------------------------------------------------------------------
68 // bandwidth
69
70 function updatePageBandwidthData(summaryData) {
71     window.pageBandwidthUrl = summaryData["dataSourceUrl"];
72     lastRow = summaryData.rows.length-1;
73     setPageStatFloat(".bandwidthLabel", ".bandwidthValue", "Bandwidth", " Gbps", summaryData.rows[lastRow]["sum_computed_bytes_sent_div_elapsed"]*8.0/1024/1024/1024,2);
74     setPageStatFloat("#miniDashBandwidthLabel", "#miniDashBandwidth", "Bandwidth", " Gbps", summaryData.rows[lastRow]["sum_computed_bytes_sent_div_elapsed"]*8.0/1024/1024/1024,2);
75 }
76
77 function updatePageBandwidth() {
78     var url='/analytics/bigquery/?computed=%bytes_sent/%elapsed&cached=1' + getObjectAndEventQuery();
79
80     $.ajax({
81     url : url,
82     dataType : 'json',
83     type : 'GET',
84     success: function(newData)
85     {
86         updatePageBandwidthData(newData);
87     }
88 });
89     setTimeout(updatePageBandwidth, 30000);
90 }
91
92 setTimeout(updatePageBandwidth, 5000);
93