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 })();