blob: fe364a23fb5b3b57674fa457917eb3d70d164274 [file] [log] [blame]
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
/**
* Functions for drawing server load vs time chart.
*/
function RenderServerLoadTimeChart()
{
// create/delete rows
if (serverLoadTable.getNumberOfRows() < serverLoadDataPoints.length)
{
var numRows = serverLoadDataPoints.length - serverLoadTable.getNumberOfRows();
serverLoadTable.addRows(numRows);
} else {
for(var i=(serverLoadTable.getNumberOfRows()-1); i >= serverLoadDataPoints.length; i--)
{
serverLoadTable.removeRow(i);
}
}
// Populate data table with time/cost data points.
for(var i=0; i < serverLoadTable.getNumberOfRows(); i++)
{
serverLoadTable.setCell(i, 0, new Date(parseInt(serverLoadDataPoints[i].timestamp)));
serverLoadTable.setCell(i, 1, parseFloat(serverLoadDataPoints[i].view));
}
// get chart options
var serverName = document.getElementById('servername').value;
var title = "All Servers (PVS/Min)";
if (serverName != "all") title = serverName + " (PVS/Min)";
var options = {pointSize: 0, lineWidth : 1, legend : { position : 'top'} };
options.title = title;
// Draw line chart.
serverLoadChart.draw(serverLoadView, options);
}
function DrawServerLoadTime()
{
// get url
var url = "ServerLoad.php?from=" + Math.floor(serverLoadLookback);
if ( serverName && (serverName.length > 0))
{
url += "&server=" + serverName;
}
// fetch data
try
{
var connect = new XMLHttpRequest();
connect.onreadystatechange = function() {
if(connect.readyState==4 && connect.status==200) {
serverLoadData = connect.response;
var pts = JSON.parse(serverLoadData);
for(var i=0; i < pts.length; i++)
{
serverLoadDataPoints.push(pts[i]);
delete pts[i];
}
delete pts;
sortByKey(serverLoadDataPoints, "timestamp");
RenderServerLoadTimeChart();
delete serverLoadData;
delete serverLoadDataPoints;
serverLoadDataPoints = new Array();
}
}
connect.open('GET', url, true);
connect.send(null);
} catch(e) {
}
serverLoadLookback = (new Date().getTime()/1000) - (3600*serverLoadInterval) - 60;
}
function HandleServerLoadTimeSubmit()
{
// reset intercval
if(serverNowPlaying) clearInterval(serverNowPlaying);
// get params
serverName = document.getElementById('servername').value;
serverLoadLookback = document.getElementById('serverloadlookback').value;
if ( !serverLoadLookback || (serverLoadLookback == "")) {
serverLoadLookback = (new Date().getTime()/1000) - 3600;
} else {
serverLoadLookback = (new Date().getTime()/1000) - 3600 * serverLoadLookback;
}
// set from values
document.getElementById('servername').value = serverName;
var lookback = document.getElementById('serverloadlookback').value;
document.getElementById('serverloadlookback').value = lookback;
serverLoadInterval = lookback;
// darw server load/time chart
DrawServerLoadTime();
serverNowPlaying = setInterval(DrawServerLoadTime, 60 * 1000);
}