grafana/js/controllers.js

158 lines
2.7 KiB
JavaScript

/*jshint globalstrict:true */
/*global angular:true */
'use strict';
angular.module('kibana.controllers', [])
.controller('DashCtrl', function($scope, $rootScope, $http, $timeout, $route, ejsResource, eventBus,
fields, dashboard) {
var _d = {
title: "",
editable: true,
rows: [],
last: null
}
$scope.init = function() {
$scope.config = config;
// Make underscore.js available to views
$scope._ = _;
$scope.dashboard = dashboard;
// Provide a global list of all see fields
$scope.fields = fields
$scope.reset_row();
$scope.clear_all_alerts();
var ejs = $scope.ejs = ejsResource(config.elasticsearch);
}
$scope.add_row = function(dash,row) {
dash.rows.push(row);
}
$scope.reset_row = function() {
$scope.row = {
title: '',
height: '150px',
editable: true,
};
};
$scope.row_style = function(row) {
return { 'min-height': row.collapse ? '5px' : row.height }
}
$scope.alert = function(title,text,severity,timeout) {
var alert = {
title: title,
text: text,
severity: severity || 'info',
};
$scope.global_alert.push(alert);
if (timeout > 0)
$timeout(function() {
$scope.global_alert = _.without($scope.global_alert,alert)
}, timeout);
}
$scope.clear_alert = function(alert) {
$scope.global_alert = _.without($scope.global_alert,alert);
}
$scope.clear_all_alerts = function() {
$scope.global_alert = []
}
$scope.edit_path = function(type) {
if(type)
return 'panels/'+type+'/editor.html';
}
// This is whoafully incomplete, but will do for now
$scope.parse_error = function(data) {
var _error = data.match("nested: (.*?);")
return _.isNull(_error) ? data : _error[1];
}
$scope.init();
})
.controller('RowCtrl', function($scope, $rootScope, $timeout, ejsResource) {
var _d = {
title: "Row",
height: "150px",
collapse: false,
collapsable: true,
editable: true,
panels: [],
}
_.defaults($scope.row,_d)
$scope.init = function() {
$scope.reset_panel();
}
$scope.toggle_row = function(row) {
row.collapse = row.collapse ? false : true;
if (!row.collapse) {
$timeout(function() {
$scope.$broadcast('render')
});
}
}
// This can be overridden by individual panel
$scope.close_edit = function() {
$scope.$broadcast('render')
}
$scope.add_panel = function(row,panel) {
$scope.row.panels.push(panel);
}
$scope.reset_panel = function() {
$scope.panel = {
loading : false,
error : false,
span : 3,
editable: true,
group : ['default'],
};
};
$scope.init();
});