Roberto Sánchez
2014-01-07 8ca30e8cd3524e728fd9d4db05d6fd6fa2bc9d32
securis/src/main/resources/static/js/admin.js
....@@ -1,90 +1,187 @@
11 (function() {
22 'use strict';
33
4
- var app = angular.module('app', [ 'ngRoute', 'ngAnimate' ]);
4
+ var app = angular.module('app', [ 'ngRoute', 'ngAnimate', 'ngResource' ]);
55
6
- app.directive('catalogField', function() {
7
- return {
8
- restrict: 'A', // only activate on element attribute
9
- require: '?ngModel', // get a hold of NgModelController
10
- link: function(scope, element, attrs, ngModel) {
11
- if(!ngModel) return; // do nothing if no ng-model
12
- // TODO: Replace the hard-coded form ID by the appropiate dynamic field
13
- scope.catalogForm[attrs.name] = scope.catalogForm['{{field.name}}'];
14
- scope.catalogForm[attrs.name].$name = attrs.name;
15
- }
16
- };
17
- });
18
-
19
- app.factory('Catalogs', function($http) {
20
- var CatalogsService = {}
21
- CatalogsService.list = function(initFn) {
22
- $http.get('/js/catalogs.json').success(function(data){
6
+ app.directive(
7
+ 'catalogField',
8
+ function() {
9
+ return {
10
+ restrict : 'A', // only activate on element
11
+ // attribute
12
+ require : '?ngModel', // get a hold of
13
+ // NgModelController
14
+ link : function(scope, element, attrs, ngModel) {
15
+ if (!ngModel)
16
+ return; // do nothing if no ng-model
17
+ // TODO: Replace the hard-coded form ID by the
18
+ // appropiate dynamic field
19
+ scope.catalogForm[attrs.name] = scope.catalogForm['{{field.name}}'];
20
+ scope.catalogForm[attrs.name].$name = attrs.name;
21
+ }
22
+ };
23
+ });
24
+
25
+ app.factory('Catalogs', function($http, $resource) {
26
+ var CatalogsService = {
27
+ resources : {
28
+ application : $resource('/application/:appId', {
29
+ appId : '@id'
30
+ }, {
31
+ update : {
32
+ method : "PUT"
33
+ }
34
+ }),
35
+ user : $resource('/user/:userId', {
36
+ userId : '@id'
37
+ }, {
38
+ update : {
39
+ method : "PUT"
40
+ }
41
+ }),
42
+ licensetype : $resource('/licenseType/:licenseTypeId', {
43
+ licenseTypeId : '@id'
44
+ }, {
45
+ update : {
46
+ method : "PUT"
47
+ }
48
+ })
49
+
50
+ },
51
+ list : function(initFn) {
52
+ $http.get('/js/catalogs.json').success(function(data) {
2353 console.log(data);
2454 CatalogsService.data = data;
2555 initFn();
2656 })
27
- return CatalogsService;
57
+ return CatalogsService;
58
+ },
59
+ getName : function(index) {
60
+ return CatalogsService.data ? CatalogsService.data[index].name
61
+ : '';
62
+ },
63
+ getResource : function(index) {
64
+ return CatalogsService.data ? CatalogsService.data[index].resource
65
+ : '';
66
+ },
67
+ getMetadata : function(index) {
68
+ return CatalogsService.data ? CatalogsService.data[index] : {};
69
+ },
70
+ save: function(catalog, data) {
71
+ console.log('save ???? ' );
72
+ var resource = CatalogsService.resources[catalog.toLowerCase()];
73
+ function success(data) {
74
+ console.log('success')
75
+ console.log(data)
76
+ }
77
+ function fail(data, status) {
78
+ console.log('error')
79
+ console.error(data)
80
+ console.error(status)
81
+ }
82
+ if (data.id && data.id !== '')
83
+ return resource.update(data, success, fail)
84
+ else
85
+ return resource.save(data, success, fail)
86
+ },
87
+ query: function(catalog, callback) {
88
+ console.log('HI catalog ???? ' + catalog);
89
+ var resource = CatalogsService.resources[catalog.toLowerCase()];
90
+ function success(data) {
91
+ console.log('success')
92
+ console.log(data)
93
+ }
94
+ function fail(data, status) {
95
+ console.log('error')
96
+ console.error(data)
97
+ console.error(status)
98
+ }
99
+ return resource.query({}, success, fail);
100
+ }
28101 }
29
- CatalogsService.getName = function(index) {
30
- return CatalogsService.data ? CatalogsService.data[index].name : '';
31
- }
32
- CatalogsService.getMetadata = function(index) {
33
- return CatalogsService.data ? CatalogsService.data[index] : {};
34
- }
102
+
35103 return CatalogsService;
36
-
104
+
37105 });
38
-
39
- app.controller('CatalogsCtrl', [ '$scope', '$http', 'Catalogs' ,
106
+
107
+ app.controller('CatalogsCtrl', [
108
+ '$scope',
109
+ '$http',
110
+ 'Catalogs',
40111 function($scope, $http, catalogs) {
41112 $scope.formu = {};
42113 $scope.catalogIndex = 0;
43114 $scope.catalogs = catalogs.list(function() {
44115 $scope.catalogMetadata = catalogs.getMetadata($scope.catalogIndex);
45
- }); //['Applications','License types','Users','Organizations','System params'];
116
+ $scope.list = catalogs.query(catalogs.getResource($scope.catalogIndex));
117
+ });
118
+
46119 $scope.catalogMetadata = {};
47120 $scope.selectCatalog = function(index, $event) {
48121 $scope.catalogIndex = index;
49122 $scope.catalogMetadata = catalogs.getMetadata($scope.catalogIndex);
123
+ $scope.list = catalogs.query(catalogs.getResource($scope.catalogIndex));
50124 console.log($event);
51125 }
52126 } ]);
53127
54
-
55128 app.controller('CatalogFormCtrl', [ '$scope', '$http', 'Catalogs',
56
-
57
- function($scope, $http, menuController, Catalogs) {
129
+ function($scope, $http, Catalogs) {
58130 $scope.showForm = false;
59131 $scope.scope = $scope;
60
- console.log('Form: currentCatalog:'+ $scope.cataLogIndex);
132
+ console.log('Form: currentCatalog:' + $scope.cataLogIndex);
61133 $scope.editNew = function() {
62134 $scope.showForm = true;
63135 $scope.isNew = true;
64
- //$scope.formu = {};
136
+ // $scope.formu = {};
65137 }
66138 $scope.edit = function() {
67139 $scope.showForm = true;
68140 $scope.isNew = false;
69141 // TODO: Load in formu values for Form
70
- //$scope.formu = {};
142
+ // $scope.formu = {};
71143 }
72144 $scope.cancel = function() {
73145 $scope.showForm = false;
74146 }
75
-
147
+
76148 $scope.saveCatalog = function() {
77149 if ($scope.catalogForm.$invalid) {
78150 alert(JSON.stringify($scope.catalogForm))
151
+ } else {
152
+ var catalogName = Catalogs.getResource($scope.catalogIndex);
153
+ var promise = Catalogs.save(catalogName, $scope.formu).$promise;
154
+ console.log('================================================================================================================================')
155
+ console.log(promise)
156
+ promise.then(function(data) {
157
+ console.log('Command returned OK form promise')
158
+ console.log(data)
159
+ $scope.$parent.list = Catalogs.query(catalogName);
160
+
161
+ });
79162 }
80163 }
81164 } ]);
82165
83
- app.controller('CatalogListCtrl', [ '$scope', '$http',
84
- function($scope, $http) {
85
- console.log('List: currentCatalog: '+ $scope.currentCatalog);
166
+ app.controller('CatalogListCtrl', [ '$scope', '$http', 'Catalogs',
167
+ function($scope, $http, Catalogs) {
168
+ console.log('List: currentCatalog: ' + $scope.currentCatalog);
169
+ $scope.myFilter = function(field) {
170
+ if (field === 'creationTimestamp')
171
+ return 'date';
172
+ else '';
173
+ }
174
+
175
+ $scope.display = function(name) {
176
+ var _indexOf = function(name) {
177
+ if (!$scope.catalogMetadata) return -1;
178
+ for (var i = $scope.catalogMetadata.fields.length - 1; i >= 0 && $scope.catalogMetadata.fields[i].name !== name; i--);
179
+ return i;
180
+ }
181
+ var index = _indexOf(name);
182
+ return index === -1 ? '' : $scope.catalogMetadata.fields[index].display;
183
+ }
86184
87185 } ]);
88186
89187 })();
90
-