diff --git a/js/server_status_monitor.js b/js/server_status_monitor.js index cbdbb11603..3c4fbe523c 100644 --- a/js/server_status_monitor.js +++ b/js/server_status_monitor.js @@ -559,12 +559,6 @@ AJAX.registerOnload('server_status_monitor.js', function() { runtime.xmin = new Date().getTime() - server_time_diff - runtime.gridMaxPoints * monitorSettings.gridRefresh; runtime.xmax = new Date().getTime() - server_time_diff + monitorSettings.gridRefresh; - - $.each(runtime.charts, function(key, value) { - value.chart['axes']['xaxis']['max'] = runtime.xmax; - value.chart['axes']['xaxis']['min'] = runtime.xmin; - }); - runtime.refreshTimeout = setTimeout(refreshChartGrid, monitorSettings.gridRefresh); saveMonitor(); // Save settings @@ -1167,7 +1161,9 @@ AJAX.registerOnload('server_status_monitor.js', function() { seriesDefaults: { rendererOptions: { smooth: true - } + }, + showLine: true, + lineWidth: 2 }, highlighter: { show: true, @@ -1207,13 +1203,18 @@ AJAX.registerOnload('server_status_monitor.js', function() { $('#chartGrid tr:last').append('
'); } + // Set series' data as [0,0], smooth lines won't plot with data array having null values. + // also chart won't plot initially with no data and data comes on refreshChartGrid() var series = []; - var emptyArr = new Array(2); - for (i in chartObj.series){ - series.push([emptyArr]); + for (i in chartObj.series) { + series.push([[0,0]]); + } + chartObj.chart = $.jqplot('gridchart' + runtime.chartAI, series, settings); + // remove [0,0] after plotting + for(i in chartObj.chart.series) { + chartObj.chart.series[i].data.shift(); } - chartObj.chart = $.jqplot('gridchart' + runtime.chartAI, series, settings); var $legend = $('
').css('padding', '0.5em'); for (var i in chartObj.chart.series) { $legend.append( @@ -1506,13 +1507,14 @@ AJAX.registerOnload('server_status_monitor.js', function() { elem.maxYLabel = value; } // free old data point values and update maxYLabel - if (elem.chart.series[j].data.length > runtime.gridMaxPoints) { + if (elem.chart.series[j].data.length > runtime.gridMaxPoints + && elem.chart.series[j].data[0][0] < runtime.xmin) { // check if the next freeable point is highest if (elem.maxYLabel <= elem.chart.series[j].data[0][1]) { - elem.chart.series[j].data.shift(); + elem.chart.series[j].data.splice(0, elem.chart.series[j].data.length - runtime.gridMaxPoints); elem.maxYLabel = getMaxYLabel(elem.chart.series[j].data); } else { - elem.chart.series[j].data.shift(); + elem.chart.series[j].data.splice(0, elem.chart.series[j].data.length - runtime.gridMaxPoints); } } if (elem.title === PMA_messages['strSystemMemory'] @@ -1524,8 +1526,12 @@ AJAX.registerOnload('server_status_monitor.js', function() { } // update chart options - elem.chart['axes']['xaxis']['max'] = runtime.xmax; - elem.chart['axes']['xaxis']['min'] = runtime.xmin; + // keep ticks number/positioning consistent while refreshrate changes + var tickInterval = (runtime.xmax - runtime.xmin)/5; + elem.chart['axes']['xaxis'].ticks = [(runtime.xmax - tickInterval*4), + (runtime.xmax - tickInterval*3), (runtime.xmax - tickInterval*2), + (runtime.xmax - tickInterval), runtime.xmax]; + if (elem.title !== PMA_messages['strSystemCPUUsage'] && elem.title !== PMA_messages['strQueryCacheEfficiency'] && elem.title !== PMA_messages['strSystemMemory']