blob: 753f58f932b45cf38f3e1ca80b218df75e27a2cd [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.
*/
/**
* Declaration and initialization for global variables.
*/
// url parameters
var params;
// Data Points
var aggrData;
var aggrDataPoints;
var contData;
var contDataPoints;
// CPU data table
var cpuTable;
var cpuChart;
var cpuView;
// ram data table
var ramTable;
var ramChart;
var ramView;
// hdd data table
var hddTable;
var hddChart;
var hddView;
// chart options
var chartOptions;
// Date formatter
var dateFormatter;
// window look back value
var lookback;
var aggrLookBack;
var contLookBack;
var contRefresh;
// Get split query string
function QueryString() {
var query_string = {};
var query = window.location.search.substring(1);
return query;
}
function SplitQuery(query)
{
var params = {};
var vars = query.split("&");
for (var i=0;i<vars.length;i++)
{
var pair = vars[i].split("=");
if(pair.length == 2)
{
params[pair[0]] = pair[1];
}
}
return params;
}
// Initialize global variable(s)
function InitializeGlobal()
{
// Initialize params
params = SplitQuery(QueryString());
// Initialize data points
aggrDataPoints = new Array();
contDataPoints = new Array();
// Initialize cpu table
cpuTable = new google.visualization.DataTable();
cpuTable.addColumn('datetime', 'Time');
cpuTable.addColumn('number', 'CPU');
chartOptions = { width: 600, height: 300, legend: 'none', pointSize: 0, lineWidth : 1 };
cpuChart = new google.visualization.ScatterChart(document.getElementById('chart_div'));
cpuView = new google.visualization.DataView(cpuTable);
// Initialize ram table
ramTable = new google.visualization.DataTable();
ramTable.addColumn('datetime', 'Time');
ramTable.addColumn('number', 'RAM');;
ramChart = new google.visualization.ScatterChart(document.getElementById('chart1_div'));
ramView = new google.visualization.DataView(ramTable);
// Initialize hdd table
hddTable = new google.visualization.DataTable();
hddTable.addColumn('datetime', 'Time');
hddTable.addColumn('number', 'HDD');;
hddChart = new google.visualization.ScatterChart(document.getElementById('chart2_div'));
hddView = new google.visualization.DataView(hddTable);
// get lookback value
lookback = (new Date().getTime()/1000) - 3600*6;
if (params['lookback'] && (params['lookback'].length > 0)) lookback = (new Date().getTime()/1000) - (3600*(parseInt(params['lookback'])));
aggrLookBack = lookback;
// get continuos lookback
contLookBack = lookback;
contRefresh = 5;
// get param lookback
paramLookBack = 6;
if (params['lookback'] && (params['lookback'].length > 0)) paramLookBack = parseInt(params['lookback']);
//if (params['refresh'] && (params['refresh'].length > 0)) contRefresh = parseInt(params['refresh']);
}
/**
* Function to create fetch urls from given parameters
*/
function DataUrl()
{
var url = "json.php?bucket=m";
url += "&customer=";
if (params['customer'])
{
url += params['customer'];
}
url += "&product=";
if (params['product'])
{
url += params['product'];
}
url += "&os=";
if (params['os'])
{
url += params['os'];
}
url += "&software1=";
if (params['software1'])
{
url += params['software1'];
}
url += "&software2=";
if (params['software2'])
{
url += params['software2'];
}
url += "&software3=";
if (params['software3'])
{
url += params['software3'];
}
url += "&from=";
url += Math.floor(lookback);
return url;
}
/**
* Creates data table with time stamp and cpu values.
* Draw line chart for time vs cpu.
*/
function DrawCPUChart()
{
// create/delete rows
if (cpuTable.getNumberOfRows() < aggrDataPoints.length)
{
var numRows = aggrDataPoints.length - cpuTable.getNumberOfRows();
cpuTable.addRows(numRows);
} else {
for(var i=(cpuTable.getNumberOfRows()-1); i >= aggrDataPoints.length; i--)
{
cpuTable.removeRow(i);
}
}
// Populate data table with time/cpu data points.
for(var i=0; i < cpuTable.getNumberOfRows(); i++)
{
//if(parseFloat(aggrDataPoints[i].cpu) < 500) continue;
cpuTable.setCell(i, 0, new Date(parseInt(aggrDataPoints[i].timestamp)));
cpuTable.setCell(i, 1, parseFloat(aggrDataPoints[i].cpu));
}
// Draw line chart.
chartOptions.title = 'CPU Usage (%)';
cpuChart.draw(cpuView, chartOptions);
}
/**
* Creates data table with time stamp and revenu values.
* Draw line chart for time vs ram.
*/
function DrawRAMChart()
{
// create/delete rows
if (ramTable.getNumberOfRows() < aggrDataPoints.length)
{
var numRows = aggrDataPoints.length - ramTable.getNumberOfRows();
ramTable.addRows(numRows);
} else {
for(var i=(ramTable.getNumberOfRows()-1); i >= aggrDataPoints.length; i--)
{
ramTable.removeRow(i);
}
}
// Populate data table with time/ram data points.
for(var i=0; i < ramTable.getNumberOfRows(); i++)
{
ramTable.setCell(i, 0, new Date(parseInt(aggrDataPoints[i].timestamp)));
ramTable.setCell(i, 1, parseFloat(aggrDataPoints[i].ram));
}
// Draw line chart.
chartOptions.title = 'RAM Usage (%)';
ramChart.draw(ramView, chartOptions);
}
/**
* Creates data table with time stamp and hdd values.
* Draw line chart for time vs hdd.
*/
function DrawHDDChart()
{
// create/delete rows
if (hddTable.getNumberOfRows() < aggrDataPoints.length)
{
var numRows = aggrDataPoints.length - hddTable.getNumberOfRows();
hddTable.addRows(numRows);
} else {
for(var i=(hddTable.getNumberOfRows()-1); i >= aggrDataPoints.length; i--)
{
hddTable.removeRow(i);
}
}
// Populate data table with time/hdd data points.
for(var i=0; i < hddTable.getNumberOfRows(); i++)
{
hddTable.setCell(i, 0, new Date(parseInt(aggrDataPoints[i].timestamp)));
hddTable.setCell(i, 1, parseInt(aggrDataPoints[i].hdd));
}
// Draw line chart.
chartOptions.title = 'HDD Usage (%)';
hddChart.draw(hddView, chartOptions);
}
/**
* Sort json array
*/
function sortByKey(array, key) {
return array.sort(function(a, b) {
var x = a[key]; var y = b[key];
return ((x < y) ? -1 : ((x > y) ? 1 : 0));
});
}