|
|
@@ -40,19 +40,35 @@ window.addEvent('domready', function() {
|
|
|
|
|
|
var split = document.location.pathname.split('/');
|
|
|
var url = 'http://localhost:8892/v1/' + split[2] + '/stats/' + split[3];
|
|
|
- var interval = 30;
|
|
|
- new Request.JSON({
|
|
|
- 'url': url + '?start=2014-04-19&end=2014-04-20&interval=' + interval,
|
|
|
- 'onSuccess': graph_stats,
|
|
|
- }).get();
|
|
|
+ function get_stats(start, end, interval) {
|
|
|
+ new Request.JSON({
|
|
|
+ 'url': url + '?start=' + start + '&end=' + end + '&interval=' + interval,
|
|
|
+ 'onSuccess': function(data) {
|
|
|
+ Object.each(data, function(subfields, field) {
|
|
|
+ if (field == 'disk')
|
|
|
+ return;
|
|
|
+ graph_stat(field, subfields, interval);
|
|
|
+ });
|
|
|
+ },
|
|
|
+ }).get();
|
|
|
+ }
|
|
|
|
|
|
- function graph_stats(data) {
|
|
|
- Object.each(data, function(subfields, field) {
|
|
|
- if (field == 'disk')
|
|
|
- return;
|
|
|
- graph_stat(field, subfields);
|
|
|
- });
|
|
|
+ var intervals = {
|
|
|
+ 1: 15,
|
|
|
+ 7: 60,
|
|
|
+ month: 1440,
|
|
|
+ }
|
|
|
+ function change_res() {
|
|
|
+ var days = $('resolution').get('value');
|
|
|
+ if (days == 'month')
|
|
|
+ var start = moment.utc().subtract('months', 1).format('YYYY-MM-DD');
|
|
|
+ else
|
|
|
+ var start = moment.utc().subtract('days', days - 1).format('YYYY-MM-DD');
|
|
|
+ var end = moment.utc().format('YYYY-MM-DD');
|
|
|
+ get_stats(start, end, intervals[days]);
|
|
|
}
|
|
|
+ $('resolution').addEvent('change', change_res);
|
|
|
+ change_res();
|
|
|
|
|
|
var colors = {
|
|
|
'cpu': [
|
|
|
@@ -82,20 +98,22 @@ window.addEvent('domready', function() {
|
|
|
['drop_out', '#aa3', 'line'],
|
|
|
],
|
|
|
};
|
|
|
- function graph_stat(field, subfields) {
|
|
|
+ function graph_stat(field, subfields, interval) {
|
|
|
var series = [];
|
|
|
colors[field].each(function(subfield_meta) {
|
|
|
var subfield = subfield_meta[0];
|
|
|
var color = subfield_meta[1];
|
|
|
+ var days = Object.keys(subfields[subfield]).sort();
|
|
|
var array = [];
|
|
|
var index_start = 0;
|
|
|
- Object.each(subfields[subfield], function(day_array, k) {
|
|
|
+ days.each(function(day) {
|
|
|
+ var day_array = subfields[subfield][day];
|
|
|
if (day_array != null) {
|
|
|
array = array.append(day_array.map(function(val, i) {
|
|
|
- return {'x': index_start + i, 'y': val};
|
|
|
+ return {'x': index_start + i * interval, 'y': val};
|
|
|
}));
|
|
|
}
|
|
|
- index_start += 1440 / interval;
|
|
|
+ index_start += 1440;
|
|
|
});
|
|
|
series.push({
|
|
|
'name': field + '.' + subfield,
|
|
|
@@ -108,7 +126,7 @@ window.addEvent('domready', function() {
|
|
|
var legend_div = new Element('div');
|
|
|
var graph = new Rickshaw.Graph({
|
|
|
'element': graph_div,
|
|
|
- 'width': 500,
|
|
|
+ 'width': 400,
|
|
|
'height': 200,
|
|
|
'renderer': field == 'net' ? 'multi' : 'area',
|
|
|
'stroke': true,
|
|
|
@@ -124,13 +142,13 @@ window.addEvent('domready', function() {
|
|
|
});
|
|
|
new Rickshaw.Graph.Axis.Time({
|
|
|
'graph': graph,
|
|
|
- 'timeUnit': new Rickshaw.Fixtures.Time().unit('minute'),
|
|
|
+ //'timeUnit': new Rickshaw.Fixtures.Time().unit('minute'),
|
|
|
});
|
|
|
new Rickshaw.Graph.Axis.Y.Base1024KMGTP({
|
|
|
'graph': graph,
|
|
|
'tickFormat': Rickshaw.Fixtures.Number.formatBase1024KMGTP,
|
|
|
});
|
|
|
graph.render();
|
|
|
- $('graphs').adopt(graph_div, legend_div, new Element('br'));
|
|
|
+ $(field).empty().adopt(graph_div, legend_div);
|
|
|
}
|
|
|
});
|