bf7e37d45c55bb95bc520777786d15188f4c25b6
[plstackapi.git] / planetstack / core / static / page_analytics.js
1 function getPageKind() {
2     var parentNodeTxt = $('#selectedMainNav').text();
3     parentNodeTxt = parentNodeTxt.replace("/\n","");
4     parentNodeTxt = parentNodeTxt.replace("ยป","");
5     parentNodeTxt = parentNodeTxt.trim();
6     if (parentNodeTxt.length > 0 && parentNodeTxt.charAt(parentNodeTxt.length-1)=='s') {
7             parentNodeTxt = parentNodeTxt.substring(0, parentNodeTxt.length-1);
8     }
9     return parentNodeTxt;
10 }
11
12 function getObjectQuery() {
13     var selectedNodeTxt = $('#currentOriginalNode').text();
14     selectedNodeTxt = selectedNodeTxt.trim();
15     selectedNodeTxt = selectedNodeTxt.split(' ').join('');//selectedNodeTxt.replace(" ", "")
16     parentNodeTxt = getPageKind();
17
18     if (parentNodeTxt == "Slice") {
19         return "&slice=" + selectedNodeTxt;
20     } else if (parentNodeTxt == "Site") {
21         return "&site=" + selectedNodeTxt;
22     } else if (parentNodeTxt == "Node") {
23         return "&node=" + selectedNodeTxt;
24     } else {
25         return "";
26     }
27 }
28
29
30 function setPageStatInt(labelName, valueName, legend, units, value) {
31     $(labelName).text(legend).show();
32     $(valueName).text(Math.round(value)+units).show();
33 }
34
35 function setPageStatFloat(labelName, valueName, legend, units, value, dp) {
36     $(labelName).text(legend).show();
37     $(valueName).text(Number(value).toFixed(dp)+units).show();
38 }
39
40 // ----------------------------------------------------------------------------
41 // node count and average cpu utilization
42
43 function updatePageAnalyticsData(summaryData) {
44     window.pageAnalyticsUrl = summaryData["dataSourceUrl"];
45     lastRow = summaryData.rows.length-1;
46
47     if (summaryData.msg) {
48         $("#minidashStatus").text(summaryData.msg).show();
49     } else {
50         $("#minidashStatus").text("").hide();
51     }
52
53     if (summaryData.rows.length <= 0) {
54         //console.log("no data received from page analytics ajax")
55         return;
56     }
57
58     //Old minidashboard
59     //setPageStatInt(".nodesLabel", ".nodesValue", "Node Count", "", summaryData.rows[lastRow]["count_hostname"]);
60     //setPageStatInt(".cpuLabel", ".cpuValue", "Avg Load", "%", summaryData.rows[lastRow]["avg_cpu"]);
61
62     //New miniDashboard
63     setPageStatInt("#miniDashNodeCountLabel", "#miniDashNodeCount", "Node Count", "", summaryData.rows[lastRow]["count_hostname"]);
64     setPageStatInt("#miniDashAvgLoadLabel", "#miniDashAvgLoad", "Avg Load", "%", summaryData.rows[lastRow]["avg_cpu"]);
65 }
66
67 function updatePageAnalytics() {
68     var url= '/analytics/bigquery/?avg=%cpu&count=%hostname&cached=default' + getObjectQuery();
69     $.ajax({
70     url: url,
71     dataType : 'json',
72     type : 'GET',
73     success: function(newData) {
74         updatePageAnalyticsData(newData);
75         setTimeout(updatePageAnalytics, 30000);
76     },
77     error: function() {
78         console.log("error retrieving statistics; retry in 5 seconds");
79         setTimeout(updatePageBandwidth, 5000);
80     }
81 });
82 }
83
84 // ----------------------------------------------------------------------------
85 // bandwidth
86
87 function updatePageBandwidthData(summaryData) {
88     window.pageBandwidthUrl = summaryData["dataSourceUrl"];
89     lastRow = summaryData.rows.length-1;
90
91     if (summaryData.rows.length <= 0) {
92         //console.log("no data received from page bandwidth ajax")
93         return;
94     }
95
96     //Old minidashboard
97     //setPageStatFloat(".bandwidthLabel", ".bandwidthValue", "Bandwidth", " Gbps", summaryData.rows[lastRow]["sum_computed_bytes_sent_div_elapsed"]*8.0/1024/1024/1024,2);
98
99     //New minidashboard
100     setPageStatFloat("#miniDashBandwidthLabel", "#miniDashBandwidth", "Bandwidth", " Gbps", summaryData.rows[lastRow]["sum_computed_bytes_sent_div_elapsed"]*8.0/1024/1024/1024,2);
101 }
102
103 function updatePageBandwidth() {
104     var url='/analytics/bigquery/?computed=%bytes_sent/%elapsed&cached=default' + getObjectQuery();
105
106     if (getPageKind()!="Slice") {
107         url = url + "&event=node_heartbeat";
108     }
109
110     $.ajax({
111     url : url,
112     dataType : 'json',
113     type : 'GET',
114     success: function(newData) {
115         updatePageBandwidthData(newData);
116         setTimeout(updatePageBandwidth, 30000);
117     },
118     error: function() {
119         console.log("error retrieving statistics; retry in 5 seconds")
120         setTimeout(updatePageBandwidth, 5000);
121     }
122 });
123 }
124
125 $( document ).ready(function() {
126     updatePageAnalytics();
127     updatePageBandwidth();
128 });\r
129