mirror of
https://github.com/grafana/grafana.git
synced 2025-02-11 08:05:43 -06:00
109 lines
2.6 KiB
JavaScript
109 lines
2.6 KiB
JavaScript
define([
|
|
'angular',
|
|
'lodash',
|
|
'moment',
|
|
'store'
|
|
],
|
|
function (angular, _, moment, store) {
|
|
'use strict';
|
|
|
|
var module = angular.module('grafana.controllers');
|
|
var consoleEnabled = store.getBool('grafanaConsole');
|
|
|
|
if (!consoleEnabled) {
|
|
return;
|
|
}
|
|
|
|
var events = [];
|
|
|
|
function ConsoleEvent(type, title, data) {
|
|
this.type = type;
|
|
this.title = title;
|
|
this.data = data;
|
|
this.time = moment().format('hh:mm:ss');
|
|
|
|
if (data.config) {
|
|
this.method = data.config.method;
|
|
this.elapsed = (new Date().getTime() - data.config.$grafana_timestamp) + ' ms';
|
|
if (data.config.params && data.config.params.q) {
|
|
this.field2 = data.config.params.q;
|
|
}
|
|
if (_.isString(data.config.data)) {
|
|
this.field2 = data.config.data;
|
|
}
|
|
if (data.status !== 200) {
|
|
this.error = true;
|
|
this.field3 = data.data;
|
|
}
|
|
|
|
if (_.isArray(data.data)) {
|
|
this.extractTimeseriesInfo(data.data);
|
|
}
|
|
}
|
|
}
|
|
|
|
ConsoleEvent.prototype.extractTimeseriesInfo = function(series) {
|
|
if (series.length === 0) {
|
|
return;
|
|
}
|
|
|
|
var points = 0;
|
|
var ok = false;
|
|
|
|
if (series[0].datapoints) {
|
|
points = _.reduce(series, function(memo, val) {
|
|
return memo + val.datapoints.length;
|
|
}, 0);
|
|
ok = true;
|
|
}
|
|
if (series[0].columns) {
|
|
points = _.reduce(series, function(memo, val) {
|
|
return memo + val.points.length;
|
|
}, 0);
|
|
ok = true;
|
|
}
|
|
|
|
if (ok) {
|
|
this.field1 = '(' + series.length + ' series';
|
|
this.field1 += ', ' + points + ' points)';
|
|
}
|
|
};
|
|
|
|
module.config(function($provide, $httpProvider) {
|
|
$provide.factory('mupp', function($q) {
|
|
return {
|
|
'request': function(config) {
|
|
if (config.inspect) {
|
|
config.$grafana_timestamp = new Date().getTime();
|
|
}
|
|
return config;
|
|
},
|
|
'response': function(response) {
|
|
if (response.config.inspect) {
|
|
events.push(new ConsoleEvent(response.config.inspect.type, response.config.url, response));
|
|
}
|
|
return response;
|
|
},
|
|
'requestError': function(rejection) {
|
|
console.log('requestError', rejection);
|
|
return $q.reject(rejection);
|
|
},
|
|
'responseError': function (rejection) {
|
|
var inspect = rejection.config.inspect || { type: 'error' };
|
|
events.push(new ConsoleEvent(inspect.type, rejection.config.url, rejection));
|
|
return $q.reject(rejection);
|
|
}
|
|
};
|
|
});
|
|
|
|
$httpProvider.interceptors.push('mupp');
|
|
});
|
|
|
|
module.controller('ConsoleCtrl', function($scope) {
|
|
|
|
$scope.events = events;
|
|
|
|
});
|
|
|
|
});
|