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