Просмотр исходного кода

lodash remove override fix, Fixes #1304

Torkel Ödegaard 11 лет назад
Родитель
Сommit
47e4b77140
2 измененных файлов с 16 добавлено и 21 удалено
  1. 0 4
      src/app/components/lodash.extended.js
  2. 16 17
      src/app/services/alertSrv.js

+ 0 - 4
src/app/components/lodash.extended.js

@@ -14,10 +14,6 @@ function () {
       array.splice(toIndex, 0, array.splice(fromIndex, 1)[0]);
       return array;
     },
-    remove: function (array, index) {
-      array.splice(index, 1);
-      return array;
-    },
     // If variable is value, then return alt. If variable is anything else, return value;
     toggle: function (variable, value, alt) {
       return variable === value ? alt : value;

+ 16 - 17
src/app/services/alertSrv.js

@@ -27,28 +27,27 @@ function (angular, _) {
     this.list = [];
 
     this.set = function(title,text,severity,timeout) {
-      var
-        _a = {
-          title: title || '',
-          text: $sce.trustAsHtml(text || ''),
-          severity: severity || 'info',
-        },
-        _ca = angular.toJson(_a),
-        _clist = _.map(self.list,function(alert) {return angular.toJson(alert);});
-
-      // If we already have this alert, remove it and add a new one
-      // Why do this instead of skipping the add because it resets the timer
-      if(_.contains(_clist,_ca)) {
-        _.remove(self.list,_.indexOf(_clist,_ca));
-      }
+      var newAlert = {
+        title: title || '',
+        text: $sce.trustAsHtml(text || ''),
+        severity: severity || 'info',
+      };
+
+      var newAlertJson = angular.toJson(newAlert);
 
-      self.list.push(_a);
+      // remove same alert if it already exists
+      _.remove(self.list, function(value) {
+        return angular.toJson(value) === newAlertJson;
+      });
+
+      self.list.push(newAlert);
       if (timeout > 0) {
         $timeout(function() {
-          self.list = _.without(self.list,_a);
+          self.list = _.without(self.list,newAlert);
         }, timeout);
       }
-      return(_a);
+
+      return(newAlert);
     };
 
     this.clear = function(alert) {