Files
grafana/panels/column/module.js
T
2013-04-19 20:20:49 -07:00

93 lines
2.3 KiB
JavaScript

/*
## Column
The column panel is sort of a hack to allow you to put multiple, veritcal,
panels next to a bigger panel. Note that it has no group, and setting a group
for the panel itself will do nothing
### Parameters
* panels :: an array of panel objects. All of their spans should be set to 12
### Group Events
#### Sends
* time :: Object Includes from, to and index
*/
angular.module('kibana.column', [])
.controller('column', function($scope, $rootScope) {
// Set and populate defaults
var _d = {
panels : [
]
}
_.defaults($scope.panel,_d);
$scope.init = function(){
$scope.reset_panel();
}
$scope.toggle_row = function(panel) {
panel.collapse = panel.collapse ? false : true;
if (!panel.collapse) {
$timeout(function() {
$scope.send_render();
});
}
}
$scope.send_render = function() {
$scope.$broadcast('render');
}
$scope.add_panel = function(panel) {
$scope.panel.panels.push(panel);
}
$scope.reset_panel = function(type) {
$scope.new_panel = {
loading: false,
error: false,
sizeable: false,
span: 12,
height: "150px",
editable: true,
group: ['default'],
type: type,
};
};
})
.directive('columnEdit', function($compile,$timeout) {
return {
scope : {
new_panel:"=panel",
row:"=",
config:"=",
dashboards:"=",
type:"=type"
},
link: function(scope, elem, attrs, ctrl) {
scope.$on('render', function () {
// Make sure the digest has completed and populated the attributes
$timeout(function() {
// Create a reference to the new_panel as panel so that the existing
// editors work with our isolate scope
scope.panel = scope.new_panel
var template = '<div ng-include src="\'panels/column/panelgeneral.html\'"></div>'
if(!(_.isUndefined(scope.type)) && scope.type != "")
template = template+'<div ng-include src="\'panels/'+scope.type+'/editor.html\'"></div>';
//var new_elem = $compile(angular.element(template))(scope))
elem.html($compile(angular.element(template))(scope));
})
})
}
}
}).filter('withoutColumn', function() {
return function() {
return _.without(config.modules,'column');
};
});