@cryptotaxi247 / netdata-1 / commits / 656e10227

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') {