From 8ca30e8cd3524e728fd9d4db05d6fd6fa2bc9d32 Mon Sep 17 00:00:00 2001
From: Roberto Sánchez <roberto.sanchez@curisit.net>
Date: Tue, 07 Jan 2014 18:32:12 +0000
Subject: [PATCH] #394 feature - Added first Java RestFul resource and JS form part

---
 securis/src/main/resources/static/js/admin.js |  177 +++++++++++++++++++++++++++++++++++++++++++++-------------
 1 files changed, 137 insertions(+), 40 deletions(-)

diff --git a/securis/src/main/resources/static/js/admin.js b/securis/src/main/resources/static/js/admin.js
index 0000694..759b8a2 100644
--- a/securis/src/main/resources/static/js/admin.js
+++ b/securis/src/main/resources/static/js/admin.js
@@ -1,90 +1,187 @@
 (function() {
 	'use strict';
 
-	var app = angular.module('app', [ 'ngRoute', 'ngAnimate' ]);
+	var app = angular.module('app', [ 'ngRoute', 'ngAnimate', 'ngResource' ]);
 
-	app.directive('catalogField', function() {
-	    return {
-	      restrict: 'A', // only activate on element attribute
-	      require: '?ngModel', // get a hold of NgModelController
-	      link: function(scope, element, attrs, ngModel) {
-	        if(!ngModel) return; // do nothing if no ng-model
-	        // TODO: Replace the hard-coded form ID by the appropiate dynamic field
-	        scope.catalogForm[attrs.name] = scope.catalogForm['{{field.name}}'];
-	        scope.catalogForm[attrs.name].$name = attrs.name; 
-	      }   
-	    };
-	  });
-	
-	app.factory('Catalogs', function($http) {
-		var CatalogsService = {}
-		CatalogsService.list = function(initFn) {
-			$http.get('/js/catalogs.json').success(function(data){
+	app.directive(
+					'catalogField',
+					function() {
+						return {
+							restrict : 'A', // only activate on element
+											// attribute
+							require : '?ngModel', // get a hold of
+													// NgModelController
+							link : function(scope, element, attrs, ngModel) {
+								if (!ngModel)
+									return; // do nothing if no ng-model
+								// TODO: Replace the hard-coded form ID by the
+								// appropiate dynamic field
+								scope.catalogForm[attrs.name] = scope.catalogForm['{{field.name}}'];
+								scope.catalogForm[attrs.name].$name = attrs.name;
+							}
+						};
+					});
+
+	app.factory('Catalogs', function($http, $resource) {
+		var CatalogsService = {
+			resources : {
+				application : $resource('/application/:appId', {
+					appId : '@id'
+				}, {
+					update : {
+						method : "PUT"
+					}
+				}),
+				user : $resource('/user/:userId', {
+					userId : '@id'
+				}, {
+					update : {
+						method : "PUT"
+					}
+				}),
+				licensetype : $resource('/licenseType/:licenseTypeId', {
+					licenseTypeId : '@id'
+				}, {
+					update : {
+						method : "PUT"
+					}
+				})
+
+			},
+			list : function(initFn) {
+				$http.get('/js/catalogs.json').success(function(data) {
 					console.log(data);
 					CatalogsService.data = data;
 					initFn();
 				})
-			return CatalogsService;
+				return CatalogsService;
+			},
+			getName : function(index) {
+				return CatalogsService.data ? CatalogsService.data[index].name
+						: '';
+			},
+			getResource : function(index) {
+				return CatalogsService.data ? CatalogsService.data[index].resource
+						: '';
+			},
+			getMetadata : function(index) {
+				return CatalogsService.data ? CatalogsService.data[index] : {};
+			},
+			save: function(catalog, data) {
+				console.log('save ???? ' );
+				var resource = CatalogsService.resources[catalog.toLowerCase()];
+				function success(data) {
+					console.log('success')
+					console.log(data)
+				}
+				function fail(data, status) {
+					console.log('error')
+					console.error(data)
+					console.error(status)
+				}
+				if (data.id && data.id !== '')
+					return resource.update(data, success, fail)
+				else
+					return resource.save(data, success, fail)
+			},
+			query: function(catalog, callback) {
+				console.log('HI catalog ???? ' + catalog);
+				var resource = CatalogsService.resources[catalog.toLowerCase()];
+				function success(data) {
+					console.log('success')
+					console.log(data)
+				}
+				function fail(data, status) {
+					console.log('error')
+					console.error(data)
+					console.error(status)
+				}
+				return resource.query({}, success, fail);
+			}
 		}
-		CatalogsService.getName = function(index) {
-			return CatalogsService.data ? CatalogsService.data[index].name : '';
-		}
-		CatalogsService.getMetadata = function(index) {
-			return CatalogsService.data ? CatalogsService.data[index] : {};
-		}
+
 		return CatalogsService;
-		
+
 	});
-	
-	app.controller('CatalogsCtrl', [ '$scope', '$http', 'Catalogs' ,
+
+	app.controller('CatalogsCtrl', [
+			'$scope',
+			'$http',
+			'Catalogs',
 			function($scope, $http, catalogs) {
 				$scope.formu = {};
 				$scope.catalogIndex = 0;
 				$scope.catalogs = catalogs.list(function() {
 					$scope.catalogMetadata = catalogs.getMetadata($scope.catalogIndex);
-				}); //['Applications','License types','Users','Organizations','System params'];
+					$scope.list = catalogs.query(catalogs.getResource($scope.catalogIndex));
+				}); 
+
 				$scope.catalogMetadata = {};
 				$scope.selectCatalog = function(index, $event) {
 					$scope.catalogIndex = index;
 					$scope.catalogMetadata = catalogs.getMetadata($scope.catalogIndex);
+					$scope.list = catalogs.query(catalogs.getResource($scope.catalogIndex));
 					console.log($event);
 				}
 			} ]);
 
-
 	app.controller('CatalogFormCtrl', [ '$scope', '$http', 'Catalogs',
-	                                    
-			function($scope, $http, menuController, Catalogs) {
+			function($scope, $http, Catalogs) {
 				$scope.showForm = false;
 				$scope.scope = $scope;
-				console.log('Form: currentCatalog:'+ $scope.cataLogIndex);
+				console.log('Form: currentCatalog:' + $scope.cataLogIndex);
 				$scope.editNew = function() {
 					$scope.showForm = true;
 					$scope.isNew = true;
-					//$scope.formu = {};
+					// $scope.formu = {};
 				}
 				$scope.edit = function() {
 					$scope.showForm = true;
 					$scope.isNew = false;
 					// TODO: Load in formu values for Form
-					//$scope.formu = {};
+					// $scope.formu = {};
 				}
 				$scope.cancel = function() {
 					$scope.showForm = false;
 				}
-				
+
 				$scope.saveCatalog = function() {
 					if ($scope.catalogForm.$invalid) {
 						alert(JSON.stringify($scope.catalogForm))
+					} else {
+						var catalogName = Catalogs.getResource($scope.catalogIndex);
+						var promise = Catalogs.save(catalogName, $scope.formu).$promise;
+						console.log('================================================================================================================================')
+						console.log(promise)
+						promise.then(function(data) {
+							console.log('Command returned OK form promise')
+							console.log(data)
+							$scope.$parent.list = Catalogs.query(catalogName);
+							
+						});
 					}
 				}
 			} ]);
 
-	app.controller('CatalogListCtrl', [ '$scope', '$http',
-			function($scope, $http) {
-				console.log('List: currentCatalog: '+ $scope.currentCatalog);
+	app.controller('CatalogListCtrl', [ '$scope', '$http', 'Catalogs', 
+			function($scope, $http, Catalogs) {
+				console.log('List: currentCatalog: ' + $scope.currentCatalog);
+				$scope.myFilter = function(field) {
+					if (field === 'creationTimestamp')
+						return 'date';
+					else '';
+				}
+				
+				$scope.display = function(name) {
+					var _indexOf = function(name) {
+						if (!$scope.catalogMetadata) return -1;
+						for (var i = $scope.catalogMetadata.fields.length - 1; i >= 0 && $scope.catalogMetadata.fields[i].name !== name; i--);
+						return i;
+					}
+					var index = _indexOf(name);
+					return index === -1 ? '' : $scope.catalogMetadata.fields[index].display;
+				}
 
 			} ]);
 
 })();
-

--
Gitblit v1.3.2