From 278c069b4c6eb567fc2f94c3af722b69a4e6cad6 Mon Sep 17 00:00:00 2001 From: Rashid Khan Date: Mon, 15 Jul 2013 16:10:26 -0700 Subject: [PATCH] Fixed double loading indices issue --- js/services.js | 57 ++++++++++++++++++++++++------------ panels/dashcontrol/module.js | 2 +- panels/histogram/module.js | 2 +- 3 files changed, 41 insertions(+), 20 deletions(-) diff --git a/js/services.js b/js/services.js index 87eefcb0bb0..d7a5afa8cce 100644 --- a/js/services.js +++ b/js/services.js @@ -23,7 +23,6 @@ angular.module('kibana.services', []) if(_.contains(_types,'$kibana_debug')) $rootScope.$broadcast('$kibana_debug',packet); - //console.log('Sent: '+type + ' to ' + to + ' from ' + from + ': ' + angular.toJson(data)) $rootScope.$broadcast(type,{ from: from, to: to, @@ -46,7 +45,6 @@ angular.module('kibana.services', []) var _time = packet.time var _group = (!(_.isUndefined(scope.panel))) ? scope.panel.group : ["NONE"] - //console.log('registered:' + type + " for " + scope.panel.title + " " + scope.$id) if(!(_.isArray(_to))) _to = [_to]; if(!(_.isArray(_group))) @@ -61,7 +59,6 @@ angular.module('kibana.services', []) _.indexOf(_to,'ALL') > -1) && _from !== _id ) { - //console.log('Got: '+type + ' from ' + _from + ' to ' + _to + ': ' + angular.toJson(packet.data)) fn(event,packet.data,{time:_time,to:_to,from:_from,type:_type}); } }); @@ -208,13 +205,15 @@ angular.module('kibana.services', []) "#E0F9D7","#FCEACA","#CFFAFF","#F9E2D2","#FCE2DE","#BADFF4","#F9D9F9","#DEDAF7" //7 ]; - // Save a reference to this - this.list = dashboard.current.services.query.list; - this.ids = dashboard.current.services.query.ids; + // Save a reference to this var self = this; - var init = function() { + this.init = function() { + _q = dashboard.current.services.query; + self.list = dashboard.current.services.query.list; + self.ids = dashboard.current.services.query.ids; + if (self.ids.length == 0) { self.set({}); } @@ -273,7 +272,7 @@ angular.module('kibana.services', []) return self.colors[id % self.colors.length] } - init(); + self.init(); }) .service('filterSrv', function(dashboard, ejsResource) { @@ -292,9 +291,19 @@ angular.module('kibana.services', []) // Save a reference to this var self = this; - // Accessors - this.list = dashboard.current.services.filter.list; - this.ids = dashboard.current.services.filter.ids; + // Call this whenever we need to reload the important stuff + this.init = function() { + // Accessors + self.list = dashboard.current.services.filter.list; + self.ids = dashboard.current.services.filter.ids; + _f = dashboard.current.services.filter; + + _.each(self.getByType('time',true),function(time) { + self.list[time.id].from = new Date(time.from) + self.list[time.id].to = new Date(time.to) + }) + + } // This is used both for adding filters and modifying them. // If an id is passed, the filter at that id is updated @@ -396,7 +405,8 @@ angular.module('kibana.services', []) } this.idsByType = function(type,inactive) { - return _.pluck(_.where(self.list,{type:type,active:(inactive ? false:true)}),'id') + var _require = inactive ? {type:type} : {type:type,active:true} + return _.pluck(_.where(self.list,_require),'id') } // This special function looks for all time filters, and returns a time range according to the mode @@ -446,6 +456,9 @@ angular.module('kibana.services', []) } } + // Now init + self.init(); + }) .service('dashboard', function($routeParams, $http, $rootScope, $injector, ejsResource, timer, kbnIndex) { // A hash of defaults to use when loading a dashboard @@ -466,16 +479,17 @@ angular.module('kibana.services', []) var ejs = ejsResource(config.elasticsearch); var gist_pattern = /(^\d{5,}$)|(^[a-z0-9]{10,}$)|(gist.github.com(\/*.*)\/[a-z0-9]{5,}\/*$)/; - // Empty dashboard object - this.current = {}; - this.last = {}; - this.indices = []; - // Store a reference to this var self = this; var filterSrv,query; + this.current = {}; + this.last = {}; + $rootScope.$on('$routeChangeSuccess',function(){ + // Clear the current dashboard to prevent reloading + self.current = {}; + self.indices = []; route(); }) @@ -538,19 +552,26 @@ angular.module('kibana.services', []) } this.dash_load = function(dashboard) { + // Cancel all timers timer.cancel_all(); + // If not using time based indices, use the default index if(dashboard.index.interval === 'none') { self.indices = [dashboard.index.default] } - self.current = dashboard; + self.current = _.clone(dashboard); // Ok, now that we've setup the current dashboard, we can inject our services query = $injector.get('query'); filterSrv = $injector.get('filterSrv') + // Make sure these re-init + query.init(); + filterSrv.init(); + if(dashboard.index.interval !== 'none' && filterSrv.idsByType('time').length == 0) { + //if(dashboard.index.interval !== 'none') { self.refresh(); } diff --git a/panels/dashcontrol/module.js b/panels/dashcontrol/module.js index 27a00032796..e2a159c17ac 100644 --- a/panels/dashcontrol/module.js +++ b/panels/dashcontrol/module.js @@ -27,7 +27,7 @@ */ angular.module('kibana.dashcontrol', []) -.controller('dashcontrol', function($scope, $routeParams, $http, timer, dashboard) { +.controller('dashcontrol', function($scope, $http, timer, dashboard) { $scope.panel = $scope.panel || {}; // Set and populate defaults diff --git a/panels/histogram/module.js b/panels/histogram/module.js index 5711733b0b1..4406b64b9fd 100644 --- a/panels/histogram/module.js +++ b/panels/histogram/module.js @@ -49,7 +49,7 @@ angular.module('kibana.histogram', []) auto_int : true, resolution : 100, interval : '5m', - fill : 3, + fill : 0, linewidth : 3, timezone : 'browser', // browser, utc or a standard timezone spyable : true,