edge compatibility; a lot friendlier browser support;
Costa Tsaousis (ktsaou) committed
Sep 12, 2015 at 23:02 UTC
656e10227fad09b58ed79970a63f253623ded5f2
4 files changed
+47
-26
netdata.start
+2
-2
@@ -83,7 +83,7 @@ do
83
test $ret -eq 0 && sleep 1
84
done
85
86
-if [ "$USER" = "root" -a ! -z "$NETDATA_CONFIG_USER" ]
86
+if [ "$UID" = "0" -a ! -z "$NETDATA_CONFIG_USER" ]
87
then
88
for x in "$NETDATA_CONFIG_WEB_DIR" "$NETDATA_CONFIG_CONF_DIR" "$NETDATA_CONFIG_CACHE_DIR" "$NETDATA_CONFIG_LOG_DIR"
89
do
@@ -93,7 +93,7 @@ then
93
done
94
fi
95
96
-if [ ! "$USER" = "root" ]
96
+if [ ! "$UID" = "0" ]
97
then
98
echo >&2 "WARNING: NOT RUNNING AS ROOT - CANNOT SWITCH TO USER $NETDATA_CONFIG_USER"
99
echo >&2 "WARNING: MAKE SURE FILES IN web/ ARE OWNED BY $USER - or it will not work"
web/index.html
+5
-7
@@ -13,12 +13,12 @@
13
<title>NetData</title>
14
15
<!-- Bootstrap CSS -->
16
- <link rel="stylesheet" href="//netdna.bootstrapcdn.com/bootstrap/3.1.1/css/bootstrap.min.css">
16
+ <link rel="stylesheet" href="//maxcdn.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap.min.css">
17
<link href="/file/theme.css" rel="stylesheet">
18
</head>
19
20
<body role="document" data-spy="scroll" data-target="#main_menu_div">
21
- <nav id="mynav" class="navbar navbar-inverse navbar-fixed-top" role="navigation">
21
+ <nav id="mynav" class="navbar navbar-default navbar-fixed-top" role="navigation">
22
<div class="container">
23
<div class="navbar-header">
24
<button type="button" class="navbar-toggle" data-toggle="collapse" data-target="#main_menu_div">
@@ -138,19 +138,17 @@
138
<p/>
139
Distributed under GPL.
140
<p/>
141
- (c) 2014 Costa Tsaousis <a href="mailto:costa@tsaousis.gr">costa@tsaousis.gr</a>
141
+ (c) 2015 Costa Tsaousis <a href="mailto:costa@tsaousis.gr">costa@tsaousis.gr</a>
142
<p/>
143
<div id="server_summary_id"></div>
144
</div>
145
146
- <script src="//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
146
+ <script type="text/javascript" src="//cdnjs.cloudflare.com/ajax/libs/jquery/2.1.4/jquery.min.js"></script>
147
+ <script type="text/javascript" src="//maxcdn.bootstrapcdn.com/bootstrap/3.3.5/js/bootstrap.min.js"></script>
148
<script type='text/javascript'>
149
document.getElementById('splash').height = $(window).height();
150
</script>
151
151
- <!-- Bootstrap -->
152
- <script src="//netdna.bootstrapcdn.com/bootstrap/3.1.1/js/bootstrap.min.js"></script>
153
-
152
<!-- Google AJAX API -->
153
<script type="text/javascript" src="https://www.google.com/jsapi"></script>
154
web/index.js
+35
-12
@@ -20,8 +20,10 @@ var MAINCHART_CONTROL_HEIGHT = 75; // how tall the control chart will be
20
var MAINCHART_CONTROL_DIVISOR = 2; // how much detailed will the control chart be? 1 = finest, higher is faster
21
var MAINCHART_INITIAL_SELECTOR= 20; // 1/20th of the width, this overrides MAINCHART_MAX_TIME_TO_SHOW
22
23
-var CHARTS_REFRESH_IDLE = 100;
23
+var CHARTS_REFRESH_LOOP = 100;
24
+var CHARTS_REFRESH_IDLE = 500;
25
var CHARTS_CHECK_NO_FOCUS = 500;
26
+var CHARTS_SCROLL_IDLE = 300;
27
28
var MODE_THUMBS = 1;
29
var MODE_MAIN = 2;
@@ -81,6 +83,7 @@ function thumbChartActions(i, c, nogroup) {
83
84
function mylog(txt) {
85
console.log(txt);
86
+ $('#logline').html(txt);
87
}
88
89
function chartssort(a, b) {
@@ -360,7 +363,7 @@ function setMainChartPlay(p) {
363
//};
364
//mainchart.last_updated = 0;
365
363
- //if(!refreshChart(mainchart, pauseGraphs))
366
+ //if(!renderChart(mainchart, pauseGraphs))
367
pauseGraphs();
368
}
369
}
@@ -522,6 +525,19 @@ function chartsRefresh() {
525
// refresh_mode = REFRESH_ALWAYS;
526
}
527
528
+ if(last_user_scroll) {
529
+ var now = new Date().getTime();
530
+ if((now - last_user_scroll) >= CHARTS_SCROLL_IDLE) {
531
+ last_user_scroll = 0;
532
+ mylog('Scrolling: resuming refresh...');
533
+ }
534
+ else {
535
+ mylog('Scrolling: pausing refresh for ' + (CHARTS_SCROLL_IDLE - (now - last_user_scroll)) + ' ms...');
536
+ timeout = setTimeout(triggerRefresh, CHARTS_SCROLL_IDLE - (now - last_user_scroll));
537
+ return;
538
+ }
539
+ }
540
+
541
if(refresh_mode == REFRESH_PAUSED) {
542
if(mode == MODE_MAIN && mainchart.last_updated == 0) {
543
mainChartRefresh();
@@ -529,9 +545,9 @@ function chartsRefresh() {
545
}
546
}
547
532
- if(mode == MODE_THUMBS) thumbChartsRefresh();
533
- else if(mode == MODE_GROUP_THUMBS) groupChartsRefresh();
534
- else if(mode == MODE_MAIN) mainChartRefresh();
548
+ if(mode == MODE_THUMBS) timeout = setTimeout(thumbChartsRefresh, CHARTS_REFRESH_LOOP);
549
+ else if(mode == MODE_GROUP_THUMBS) timeout = setTimeout(groupChartsRefresh, CHARTS_REFRESH_LOOP);
550
+ else if(mode == MODE_MAIN) timeout = setTimeout(mainChartRefresh, CHARTS_REFRESH_LOOP);
551
else timeout = setTimeout(triggerRefresh, CHARTS_REFRESH_IDLE);
552
}
553
@@ -567,7 +583,7 @@ function mainChartRefresh() {
583
return;
584
}
585
570
- if(!refreshChart(mainchart, hiddenChartRefresh))
586
+ if(!renderChart(mainchart, hiddenChartRefresh))
587
hiddenChartRefresh();
588
}
589
@@ -580,15 +596,15 @@ function roundRobinRefresh(charts, startat) {
596
597
// find a chart to refresh
598
var all = charts.length;
583
- var cur = startat;
599
+ var cur = startat + 1;
600
var count = 0;
601
602
for(count = 0; count < all ; count++, cur++) {
603
if(cur >= all) cur = 0;
604
605
if(charts[cur].enabled) {
590
- //mylog('going to refresh chart ' + charts[cur].name);
591
- refreshed = refreshChart(charts[cur], chartsRefresh);
606
+ mylog('Rendering: ' + charts[cur].name);
607
+ refreshed = renderChart(charts[cur], chartsRefresh);
608
if(refreshed) break;
609
}
610
}
@@ -867,12 +883,19 @@ function clearGroupGraphs() {
883
// Global entry point
884
// initialize the thumb charts
885
886
+var last_user_scroll = 0;
887
+
888
// load the charts from the server
889
// generate html for the thumbgraphs to support them
890
function initCharts() {
891
var width = thumbWidth();
892
var height = TARGET_THUMB_GRAPH_HEIGHT;
893
894
+ window.onscroll = function (e) {
895
+ last_user_scroll = new Date().getTime();
896
+ mylog('Scrolling: detected');
897
+ }
898
+
899
loadCharts(null, function(all) {
900
mycharts = all.charts;
901
@@ -993,7 +1016,7 @@ function initCharts() {
1016
mainmenu += categoriesmainmenu;
1017
mainmenu += familiesmainmenu;
1018
mainmenu += chartsmainmenu;
996
- mainmenu += "</ul>";
1019
+ mainmenu += '<li role="presentation" class="disabled" style="display: none;"><a href="#" id="logline"></a></li></ul>';
1020
1021
thumbsContainer.innerHTML = allcategories;
1022
switchToThumbGraphs();
@@ -1003,12 +1026,12 @@ function initCharts() {
1026
1027
$(window).blur(function() {
1028
page_is_visible = 0;
1006
- mylog('blur');
1029
+ mylog('Lost Focus!');
1030
});
1031
1032
$(window).focus(function() {
1033
page_is_visible = 1;
1011
- mylog('focus');
1034
+ mylog('Focus restored!');
1035
});
1036
1037
// Set a callback to run when the Google Visualization API is loaded.
web/netdata.js
+5
-5
@@ -43,7 +43,7 @@ function generateChartURL(chart) {
43
return url;
44
}
45
46
-function refreshChart(chart, doNext) {
46
+function renderChart(chart, doNext) {
47
if(canChartBeRefreshed(chart) == false) return false;
48
49
$.ajax({
@@ -69,7 +69,7 @@ function refreshChart(chart, doNext) {
69
70
// Instantiate and draw our chart, passing in some options.
71
if(!chart.chart) {
72
- console.log('Creating new chart for ' + chart.url);
72
+ // console.log('Creating new chart for ' + chart.url);
73
if(chart.chartType == "LineChart")
74
chart.chart = new google.visualization.LineChart(document.getElementById(chart.div));
75
else
@@ -132,13 +132,13 @@ function calculateChartPointsToShow(c, divisor, maxtime, group) {
132
var dt = before - after;
133
if(dt > c.entries * c.update_every) dt = c.entries * c.update_every;
134
135
- console.log('chart ' + c.id + ' internal duration is ' + dt + ' secs, requested maxtime is ' + maxtime + ' secs');
135
+ // console.log('chart ' + c.id + ' internal duration is ' + dt + ' secs, requested maxtime is ' + maxtime + ' secs');
136
137
if(maxtime) dt = maxtime;
138
139
var data_points = Math.round(dt / c.update_every);
140
var screen_points = Math.round(c.chartOptions.width / divisor);
141
- console.log('screen = ' + screen_points + ', data = ' + data_points + ', divisor = ' + divisor);
141
+ // console.log('screen = ' + screen_points + ', data = ' + data_points + ', divisor = ' + divisor);
142
143
if(group == undefined || group <= 0) {
144
if(screen_points > data_points) {
@@ -170,7 +170,7 @@ function calculateChartPointsToShow(c, divisor, maxtime, group) {
170
c.points_to_show = Math.round(data_points / group);
171
//console.log("rendering with given group");
172
}
173
- console.log('group = ' + c.group + ', points = ' + c.points_to_show);
173
+ // console.log('group = ' + c.group + ', points = ' + c.points_to_show);
174
175
// make sure the line width is not congesting the chart
176
if(c.chartType == 'LineChart') {