grafana/js/controllers.js
2013-02-28 13:02:52 -07:00

144 lines
2.4 KiB
JavaScript

/*jshint globalstrict:true */
/*global angular:true */
'use strict';
angular.module('kibana.controllers', [])
.controller('DashCtrl', function($scope, $rootScope, $http, $timeout, ejsResource, eventBus) {
var _d = {
title: "",
editable: true,
rows: [],
}
$scope.init = function() {
$scope.config = config;
$scope._ = _;
$scope.reset_row();
$scope.clear_all_alerts();
// Load dashboard by event
eventBus.register($scope,'dashboard', function(event,dashboard){
$scope.dashboards = dashboard;
_.defaults($scope.dashboards,_d)
})
// If the route changes, clear the existing dashboard
$rootScope.$on( "$routeChangeStart", function(event, next, current) {
delete $scope.dashboards
});
var ejs = $scope.ejs = ejsResource(config.elasticsearch);
}
$scope.add_row = function(dashboards,row) {
$scope.dashboards.rows.push(row);
}
$scope.reset_row = function() {
$scope.row = {
title: '',
height: '150px',
editable: true,
};
};
$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.init();
})
.controller('RowCtrl', function($scope, $rootScope, $timeout, ejsResource) {
var _d = {
title: "Row",
height: "150px",
collapse: false,
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.send_render();
});
}
}
$scope.send_render = 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();
});