From 702f30f4dc61c5ca3c4747dd41170631716a414f Mon Sep 17 00:00:00 2001
From: Roberto Sánchez <roberto.sanchez@curisit.net>
Date: Wed, 08 Jan 2014 14:13:28 +0000
Subject: [PATCH] #394 feature - Added toaster for non intrusive messages

---
 securis/src/main/resources/static/js/admin.js |  129 +++++++++++++++++++++++++++++--------------
 1 files changed, 87 insertions(+), 42 deletions(-)

diff --git a/securis/src/main/resources/static/js/admin.js b/securis/src/main/resources/static/js/admin.js
index 759b8a2..7bd2645 100644
--- a/securis/src/main/resources/static/js/admin.js
+++ b/securis/src/main/resources/static/js/admin.js
@@ -1,7 +1,7 @@
 (function() {
 	'use strict';
 
-	var app = angular.module('app', [ 'ngRoute', 'ngAnimate', 'ngResource' ]);
+	var app = angular.module('app', [ 'ngRoute', 'ngAnimate', 'ngResource', 'toaster' ]);
 
 	app.directive(
 					'catalogField',
@@ -22,7 +22,7 @@
 						};
 					});
 
-	app.factory('Catalogs', function($http, $resource) {
+	app.factory('Catalogs', function($http, $resource, toaster) {
 		var CatalogsService = {
 			resources : {
 				application : $resource('/application/:appId', {
@@ -68,7 +68,25 @@
 				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)
+					toaster.pop('success', "Data saved sucessfully in " + catalog);
+				}
+				function fail(data, status) {
+					var errorMsg = {500: 'Server error', 404: 'Item to modify was not found'}[data.status]
+					toaster.pop('error', "Error saving data in " + catalog, errorMsg);
+					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)
+			},
+			remove: function(catalog, data) {
 				var resource = CatalogsService.resources[catalog.toLowerCase()];
 				function success(data) {
 					console.log('success')
@@ -79,10 +97,7 @@
 					console.error(data)
 					console.error(status)
 				}
-				if (data.id && data.id !== '')
-					return resource.update(data, success, fail)
-				else
-					return resource.save(data, success, fail)
+				return resource.remove({}, data, success, fail)
 			},
 			query: function(catalog, callback) {
 				console.log('HI catalog ???? ' + catalog);
@@ -108,38 +123,58 @@
 			'$scope',
 			'$http',
 			'Catalogs',
-			function($scope, $http, catalogs) {
+			function($scope, $http, Catalogs) {
 				$scope.formu = {};
 				$scope.catalogIndex = 0;
-				$scope.catalogs = catalogs.list(function() {
-					$scope.catalogMetadata = catalogs.getMetadata($scope.catalogIndex);
-					$scope.list = catalogs.query(catalogs.getResource($scope.catalogIndex));
+				$scope.catalogs = Catalogs.list(function() {
+					$scope.catalogMetadata = Catalogs.getMetadata($scope.catalogIndex);
+					$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));
+					$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, Catalogs) {
-				$scope.showForm = false;
-				$scope.scope = $scope;
-				console.log('Form: currentCatalog:' + $scope.cataLogIndex);
-				$scope.editNew = function() {
+				$scope.edit = function(data) {
 					$scope.showForm = true;
-					$scope.isNew = true;
+					$scope.isNew = false;
+					for (var k in data) {
+						if (k.indexOf('$') !== 0) $scope.formu[k] = data[k]
+					}
+					// TODO: Load in formu values for Form
 					// $scope.formu = {};
 				}
-				$scope.edit = function() {
-					$scope.showForm = true;
+				$scope.delete = function(data) {
+					BootstrapDialog.confirm('The record will be deleted, are you sure?', function(result){
+			            if(result) {
+							var catalogName = Catalogs.getResource($scope.catalogIndex);
+							var promise = Catalogs.remove(catalogName, data).$promise;
+							promise.then(function(data) {
+								$scope.list = Catalogs.query(catalogName);
+							});
+			            }
+			        });
+					$scope.showForm = false;
 					$scope.isNew = false;
 					// TODO: Load in formu values for Form
 					// $scope.formu = {};
+				}
+
+			} ]);
+
+	app.controller('CatalogFormCtrl', [ '$scope', '$http', 'toaster', 'Catalogs',
+			function($scope, $http, toaster, Catalogs) {
+				$scope.showForm = false;
+				$scope.scope = $scope;
+				console.log('Form: currentCatalog:' + $scope.cataLogIndex);
+
+				$scope.editNew = function() {
+					$scope.showForm = true;
+					$scope.isNew = true;
+					$scope.formu = {};
 				}
 				$scope.cancel = function() {
 					$scope.showForm = false;
@@ -151,34 +186,44 @@
 					} 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)
+						promise.then(function(data, otro) {
+							if ($scope.isNew) {
+								$scope.formu = {}
+								$('#name').focus();
+							} else {
+								$scope.cancel();
+							}
+						//	$scope.formu = {};
 							$scope.$parent.list = Catalogs.query(catalogName);
-							
+						}, function(error, otro) {
+							console.log('then error');
+							console.log(error);
+							console.log(otro);							
 						});
+						
 					}
 				}
 			} ]);
 
-	app.controller('CatalogListCtrl', [ '$scope', '$http', 'Catalogs', 
-			function($scope, $http, Catalogs) {
+	app.controller('CatalogListCtrl', [ '$scope', '$http', '$filter', 'Catalogs', 
+			function($scope, $http, $filter, Catalogs) {
 				console.log('List: currentCatalog: ' + $scope.currentCatalog);
-				$scope.myFilter = function(field) {
-					if (field === 'creationTimestamp')
-						return 'date';
-					else '';
+				var _indexOfField = 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;
+				}
+				
+				$scope.print = function(name, value) {
+					var index = _indexOfField(name);
+					if (index === -1) return value;
+					var type = $scope.catalogMetadata.fields[index].type;
+					
+					return type === 'date' ? $filter('date')(value, 'yyyy-MM-dd') : value;
 				}
 				
 				$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);
+					var index = _indexOfField(name);
 					return index === -1 ? '' : $scope.catalogMetadata.fields[index].display;
 				}
 

--
Gitblit v1.3.2