| (function (cloudStack) { |
| var app = angular.module('cloudStack', []); |
| |
| app.directive('list', function () { |
| return { |
| restrict: 'E', |
| templateUrl: '_list.html', |
| replace: true, |
| controller: 'ListController' |
| }; |
| }); |
| |
| app.controller('ListController', function ($scope, $element) { |
| var section = $element.attr('path'); |
| var listView = cloudStack.sections[section].listView; |
| |
| $scope.fields = listView.fields; |
| $scope.actions = []; |
| $scope.data = []; |
| |
| // Load data |
| listView.dataProvider({ |
| response: { |
| success: function (args) { |
| $(args.data).each(function () { |
| $scope.data.push(this); |
| }); |
| } |
| } |
| }); |
| |
| // Build actions |
| for (action in listView.actions) { |
| var targetAction = listView.actions[action]; |
| |
| $scope.actions.push({ |
| id: targetAction.id, |
| label: targetAction.label, |
| action: function ($index) { |
| targetAction.action({ |
| response: { |
| success: function () { |
| if (targetAction.id == 'remove') { |
| $scope.data.splice($index, 1); |
| } |
| } |
| } |
| }) |
| } |
| }); |
| } |
| }) |
| }(window.cloudStack)); |