Commit 9fc6d3d6 by Torkel Ödegaard

Fixed tagsinput bug related to shallow clone of dashboard

parent 7d9141a0
...@@ -53,10 +53,6 @@ function (angular, $) { ...@@ -53,10 +53,6 @@ function (angular, $) {
scope.$parent[attrs.tagclass] : function() { return attrs.tagclass; } scope.$parent[attrs.tagclass] : function() { return attrs.tagclass; }
}); });
for (var i = 0; i < scope.model.length; i++) {
select.tagsinput('add', scope.model[i]);
}
select.on('itemAdded', function(event) { select.on('itemAdded', function(event) {
if (scope.model.indexOf(event.item) === -1) { if (scope.model.indexOf(event.item) === -1) {
scope.model.push(event.item); scope.model.push(event.item);
...@@ -74,25 +70,16 @@ function (angular, $) { ...@@ -74,25 +70,16 @@ function (angular, $) {
// diff when model changes // diff when model changes
var prev = scope.model.slice(); var prev = scope.model.slice();
scope.$watch("model", function() { scope.$watch("model", function() {
if (!angular.isArray(scope.model)) {
var added = scope.model.filter(function(i) {return prev.indexOf(i) === -1;}), scope.model = [];
removed = prev.filter(function(i) {return scope.model.indexOf(i) === -1;}),
i;
prev = scope.model.slice();
// Remove tags no longer in binded model
for (i = 0; i < removed.length; i++) {
select.tagsinput('remove', removed[i]);
} }
// Refresh remaining tags select.tagsinput('removeAll');
select.tagsinput('refresh');
// Add new items in model as tags for (var i = 0; i < scope.model.length; i++) {
for (i = 0; i < added.length; i++) { select.tagsinput('add', scope.model[i]);
select.tagsinput('add', added[i]);
} }
}, true); }, true);
} }
......
...@@ -120,7 +120,8 @@ function (angular, $, kbn, _, config, moment, Modernizr) { ...@@ -120,7 +120,8 @@ function (angular, $, kbn, _, config, moment, Modernizr) {
}; };
var dash_defaults = function(dashboard) { var dash_defaults = function(dashboard) {
_.defaults(dashboard,_dash);
_.defaults(dashboard, _dash);
_.defaults(dashboard.loader,_dash.loader); _.defaults(dashboard.loader,_dash.loader);
var filtering = _.findWhere(dashboard.pulldowns, {type: 'filtering'}); var filtering = _.findWhere(dashboard.pulldowns, {type: 'filtering'});
...@@ -153,7 +154,7 @@ function (angular, $, kbn, _, config, moment, Modernizr) { ...@@ -153,7 +154,7 @@ function (angular, $, kbn, _, config, moment, Modernizr) {
dashboard = dash_defaults(dashboard); dashboard = dash_defaults(dashboard);
// Set the current dashboard // Set the current dashboard
self.current = _.clone(dashboard); self.current = angular.copy(dashboard);
// Delay this until we're sure that querySrv and filterSrv are ready // Delay this until we're sure that querySrv and filterSrv are ready
$timeout(function() { $timeout(function() {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment