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

ui(dashboard): delete empty rows without confirm

Pavel Strashkin 10 лет назад
Родитель
Сommit
cba471b09b
2 измененных файлов с 30 добавлено и 3 удалено
  1. 11 1
      public/app/features/dashboard/rowCtrl.js
  2. 19 2
      public/test/specs/row-ctrl-specs.js

+ 11 - 1
public/app/features/dashboard/rowCtrl.js

@@ -41,13 +41,23 @@ function (angular, _, config) {
       $scope.dashboard.addPanel(panel, $scope.row);
     };
 
+
     $scope.deleteRow = function() {
+      function delete_row() {
+        $scope.dashboard.rows = _.without($scope.dashboard.rows, $scope.row);
+      }
+
+      if (!$scope.row.panels.length) {
+        delete_row();
+        return;
+      }
+
       $scope.appEvent('confirm-modal', {
         title: 'Are you sure you want to delete this row?',
         icon: 'fa-trash',
         yesText: 'Delete',
         onConfirm: function() {
-          $scope.dashboard.rows = _.without($scope.dashboard.rows, $scope.row);
+          delete_row();
         }
       });
     };

+ 19 - 2
public/test/specs/row-ctrl-specs.js

@@ -12,7 +12,24 @@ define([
     beforeEach(ctx.providePhase());
     beforeEach(ctx.createControllerPhase('RowCtrl'));
 
-  });
+    describe('delete_row', function () {
+      describe('when row is empty (has no panels)', function () {
+        beforeEach(function () {
+          ctx.scope.dashboard.rows = [{id: 1, panels: []}];
+          ctx.scope.row = ctx.scope.dashboard.rows[0];
+          ctx.scope.appEvent = sinon.spy();
 
-});
+          ctx.scope.delete_row();
+        });
+
+        it('should NOT ask for confirmation', function () {
+          expect(ctx.scope.appEvent.called).to.be(false);
+        });
 
+        it('should delete row', function () {
+          expect(ctx.scope.dashboard.rows).to.not.contain(ctx.scope.row);
+        });
+      });
+    });
+  });
+});