Fixed tagsinput bug related to shallow clone of dashboard

This commit is contained in:
Torkel Ödegaard 2014-02-12 14:35:12 +01:00
parent 7d9141a055
commit 9fc6d3d6f0
2 changed files with 9 additions and 21 deletions

View File

@ -53,10 +53,6 @@ function (angular, $) {
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) {
if (scope.model.indexOf(event.item) === -1) {
scope.model.push(event.item);
@ -74,25 +70,16 @@ function (angular, $) {
// diff when model changes
var prev = scope.model.slice();
scope.$watch("model", function() {
var added = scope.model.filter(function(i) {return prev.indexOf(i) === -1;}),
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]);
if (!angular.isArray(scope.model)) {
scope.model = [];
}
// Refresh remaining tags
select.tagsinput('refresh');
select.tagsinput('removeAll');
// Add new items in model as tags
for (i = 0; i < added.length; i++) {
select.tagsinput('add', added[i]);
for (var i = 0; i < scope.model.length; i++) {
select.tagsinput('add', scope.model[i]);
}
}, true);
}

View File

@ -120,7 +120,8 @@ function (angular, $, kbn, _, config, moment, Modernizr) {
};
var dash_defaults = function(dashboard) {
_.defaults(dashboard,_dash);
_.defaults(dashboard, _dash);
_.defaults(dashboard.loader,_dash.loader);
var filtering = _.findWhere(dashboard.pulldowns, {type: 'filtering'});
@ -153,7 +154,7 @@ function (angular, $, kbn, _, config, moment, Modernizr) {
dashboard = dash_defaults(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
$timeout(function() {