github.com/fanux/shipyard@v0.0.0-20161009071005-6515ce223235/controller/static/app/plugins/plugins.controller.js (about)

     1  (function(){
     2      'use strict';
     3  
     4      angular
     5          .module('shipyard.plugins')
     6          .controller('pluginsController', PluginsController);
     7  
     8      PluginsController.$inject = ['$scope', 'PluginService', '$state'];
     9      function PluginsController($scope, PluginService, $state) {
    10          var vm = this;
    11          vm.error = "";
    12          vm.errors = [];
    13          vm.plugins = [];
    14          vm.selected = {};
    15          vm.selectedItemCount = 0;
    16          vm.selectedAll = false;
    17          vm.numOfInstances = 1;
    18          vm.selectedPlugin = null;
    19          vm.selectedPluginId = "";
    20          vm.Kind = "";
    21          vm.Description = "";
    22          vm.Spec = "";
    23          vm.Manual = "";
    24  
    25          vm.showDeletePluginDialog = showDeletePluginDialog;
    26          vm.showEnablePluginDialog = showEnablePluginDialog;
    27          vm.showDisablePluginDialog = showDisablePluginDialog;
    28          vm.showEditPluginDialog = showEditPluginDialog;
    29          vm.enablePlugin = enablePlugin;
    30          vm.disablePlugin = disablePlugin;
    31          vm.deletePlugin = deletePlugin;
    32          vm.editPlugin = editPlugin;
    33          vm.refresh = refresh;
    34          vm.pluginStatusText = pluginStatusText;
    35          vm.checkAll = checkAll;
    36          vm.clearAll = clearAll;
    37          vm.destroyAll = destroyAll;
    38          vm.stopAll = stopAll;
    39          vm.restartAll = restartAll;
    40  
    41          refresh();
    42  
    43          // Apply jQuery to dropdowns in table once ngRepeat has finished rendering
    44          $scope.$on('ngRepeatFinished', function() {
    45              $('.ui.sortable.celled.table').tablesort();
    46              $('#select-all-table-header').unbind();
    47              $('.ui.right.pointing.dropdown').dropdown();
    48          });
    49  
    50          $('#multi-action-menu').sidebar({dimPage: false, animation: 'overlay', transition: 'overlay'});
    51  
    52          $scope.$watch(function() {
    53              var count = 0;
    54              angular.forEach(vm.selected, function (s) {
    55                  if(s.Selected) {
    56                      count += 1;
    57                  }
    58              });
    59              vm.selectedItemCount = count;
    60          });
    61  
    62          // Remove selected items that are no longer visible 
    63          $scope.$watchCollection('filteredPlugins', function () {
    64              angular.forEach(vm.selected, function(s) {
    65                  if(vm.selected[s.Name].Selected == true) {
    66                      var isVisible = false
    67                      angular.forEach($scope.filteredPlugins, function(c) {
    68                          if(c.Name == s.Name) {
    69                              isVisible = true;
    70                              return;
    71                          }
    72                      });
    73                      vm.selected[s.Name].Selected = isVisible;
    74                  }
    75              });
    76              return;
    77          });
    78  
    79          function clearAll() {
    80              angular.forEach(vm.selected, function (s) {
    81                  vm.selected[s.Name].Selected = false;
    82              });
    83          }
    84  
    85          function restartAll() {
    86              angular.forEach(vm.selected, function (s) {
    87                  if(s.Selected == true) {
    88                      PluginService.restart(s.Id)
    89                          .then(function(data) {
    90                              delete vm.selected[s.Id];
    91                              vm.refresh();
    92                          }, function(data) {
    93                              vm.error = data;
    94                          });
    95                  }
    96              });
    97          }
    98  
    99          function stopAll() {
   100              angular.forEach(vm.selected, function (s) {
   101                  if(s.Selected == true) {
   102                      PluginService.stop(s.Id)
   103                          .then(function(data) {
   104                              delete vm.selected[s.Id];
   105                              vm.refresh();
   106                          }, function(data) {
   107                              vm.error = data;
   108                          });
   109                  }
   110              });
   111          }
   112  
   113          function destroyAll() {
   114              angular.forEach(vm.selected, function (s) {
   115                  if(s.Selected == true) {
   116                      PluginService.destroy(s.Id)
   117                          .then(function(data) {
   118                              delete vm.selected[s.Id];
   119                              vm.refresh();
   120                          }, function(data) {
   121                              vm.error = data;
   122                          });
   123                  }
   124              });
   125          }
   126  
   127          function checkAll() {
   128              angular.forEach($scope.filteredPlugins, function (plugin) {
   129                  vm.selected[plugin.Name].Selected = vm.selectedAll;
   130                  console.log(vm.selectedAll);
   131              });
   132          }
   133  
   134          function refresh() {
   135              PluginService.list()
   136                  .then(function(data) {
   137                      vm.plugins = data; 
   138                      angular.forEach(vm.plugins, function (plugin) {
   139                          vm.selected[plugin.Name] = {Name: plugin.Name, Selected: vm.selectedAll};
   140                      });
   141                  }, function(data) {
   142                      vm.error = data;
   143                  });
   144  
   145              vm.error = "";
   146              vm.errors = [];
   147              vm.plugins = [];
   148              vm.selected = {};
   149              vm.selectedItemCount = 0;
   150              vm.selectedAll = false;
   151              vm.numOfInstances = 1;
   152              vm.selectedPluginId = "";
   153          }
   154  
   155          function showDeletePluginDialog(plugin) {
   156              vm.selectedPluginId = plugin.Name;
   157              $('#delete-modal').modal('show');
   158          }
   159  
   160          function showEnablePluginDialog(plugin) {
   161              vm.selectedPlugin = plugin;
   162              vm.selectedPluginId = plugin.Name;
   163              $('#enable-modal').modal('show');
   164          }
   165  
   166          function showDisablePluginDialog(plugin) {
   167              vm.selectedPlugin = plugin;
   168              vm.selectedPluginId = plugin.Name;
   169              $('#disable-modal').modal('show');
   170          }
   171  
   172  
   173          function showEditPluginDialog(plugin) {
   174              vm.selectedPlugin = plugin;
   175              vm.selectedPluginId = plugin.Name;
   176              $('#edit-modal').modal('show');
   177          }
   178  
   179  
   180          function enablePlugin(plugin) {
   181              PluginService.enable(vm.selectedPluginId,plugin)
   182                  .then(function(data) {
   183                      vm.refresh();
   184                  }, function(data) {
   185                      vm.error = data;
   186                  });
   187          }
   188  
   189          function disablePlugin(plugin) {
   190              PluginService.disable(vm.selectedPluginId,plugin)
   191                  .then(function(data) {
   192                      vm.refresh();
   193                  }, function(data) {
   194                      vm.error = data;
   195                  });
   196          }
   197  
   198          function editPlugin(plugin) {
   199              PluginService.edit(plugin)
   200                  .then(function(data) {
   201                      vm.refresh();
   202                  }, function(data) {
   203                      vm.error = data;
   204                  });
   205                  vm.Kind = "";
   206                  vm.Description = "";
   207                  vm.Spec = "";
   208                  vm.Manual = "";
   209          }
   210  
   211          function deletePlugin() {
   212              PluginService.delete(vm.selectedPluginId)
   213                  .then(function(data) {
   214                      vm.refresh();
   215                  }, function(data) {
   216                      vm.error = data;
   217                  });
   218          }
   219  
   220          function pluginStatusText(plugin) {
   221              if(plugin.Status.indexOf("enable")==0){
   222                  if (plugin.Status.indexOf("(disable)") != -1) {
   223                      return "disable";
   224                  }
   225                  return "enable";
   226              }
   227          }   
   228          
   229      }
   230  })();