From 6d8aff7b3657332020ef215eb1b2fc16017e4cc8 Mon Sep 17 00:00:00 2001
From: Roberto Sánchez <roberto.sanchez@curisit.net>
Date: Sun, 26 Jan 2014 13:34:03 +0000
Subject: [PATCH] #395 feature - Added license history entity and new angular directive to load file content

---
 securis/src/main/resources/static/js/licenses.js |  108 +++++++++++++++++++++++++++++++++++++-----------------
 1 files changed, 74 insertions(+), 34 deletions(-)

diff --git a/securis/src/main/resources/static/js/licenses.js b/securis/src/main/resources/static/js/licenses.js
index 67bf7b4..fb5dd85 100644
--- a/securis/src/main/resources/static/js/licenses.js
+++ b/securis/src/main/resources/static/js/licenses.js
@@ -9,6 +9,44 @@
 	    }
 
 	var app = angular.module('securis');
+	
+	app.directive('fileLoader',
+	            function($timeout, $parse) {
+	                return {
+	                    restrict : 'A', // only activate on element attribute
+	                    require : '',
+	                    link : function(scope, element, attrs) {
+                            console.log('scope.license: ' + scope.$parent.license);
+                            var setter = $parse(attrs.fileLoader).assign;
+	                        element.bind('change', function(evt) {
+	                            console.log('scope.license: ' + scope.$parent.license);
+	                            var field = $parse(attrs.fileLoader);
+	                            console.log('field: ' + field);
+	                            var fileList = evt.target.files;
+	                            if (fileList != null && fileList[0]) {
+	                                var reader = new FileReader();
+                                    reader.onerror = function(data) {
+                                        setter(scope.$parent, 'ERROR');
+                                        scope.$apply();
+                                    }
+                                    reader.onload = function(data) {
+                                        setter(scope.$parent, reader.result);
+                                        scope.$apply();
+                                    }
+                                    
+                                    reader.readAsText(fileList[0]);       
+	                            } else {
+                                    console.log('NO FILE: ');
+                                    field = '';
+                                    scope.$apply();
+	                            }
+	                        });
+	                        
+	                    }
+	                };
+	            });
+
+	console.log(' OK ????? ');
 
 	app.controller('PackAndLicensesCtrl', [
 	                    			'$scope',
@@ -17,38 +55,6 @@
 	                    			'$store',
 	                    			'$L',
 	   			function($scope, $http, toaster, $store, $L) {
-	                    				$scope.licenses = [
-	                    					                {id: 1,
-	                    					                	"code": "BP-SA-001-AKSJMS234",
-	                    					                	"user_fullname": "Johnny Belmonte",
-	                    					                	"user_email": "jb@curisit.net",
-	                    					                	"status": 3},
-	                    						                {id: 2,
-	                    						                	"code": "BP-SA-001-KAJSDHAJS",
-	                    						                	"user_fullname": "Walter Simons",
-	                    						                	"user_email": "ws@curisit.net",
-	                    						                	"status": 1},
-	                    						                {id: 3,
-	                    						                	"code": "BP-SA-001-ASKDGHKA",
-	                    						                	"user_fullname": "Frank Belmonte",
-	                    						                	"user_email": "fb@curisit.net",
-	                    						                	"status": 2},
-	                    							                {id: 4,
-	                    							                	"code": "BP-SA-001-BBBGGGG",
-	                    							                	"user_fullname": "John Dalton",
-	                    							                	"user_email": "jd@curisit.net",
-	                    							                	"status": 3},
-	                    							                {id: 5,
-	                    							                	"code": "BP-SA-001-AKADNAJANA",
-	                    							                	"user_fullname": "Walter Martins",
-	                    							                	"user_email": "wm@curisit.net",
-	                    							                	"status": 3},
-	                    							                {id: 6,
-	                    							                	"code": "BP-SA-001-AKANDAKS",
-	                    							                	"user_fullname": "Joe Bolton",
-	                    							                	"user_email": "jbol@curisit.net",
-	                    							                	"status": 2}
-	                    					                ];
 	                    					
         				$scope.maxLengthErrorMsg = function(displayname, fieldMaxlength) {
         					return $L.get("{0} length is too long (max: {1}).", $L.get(displayname), fieldMaxlength);
@@ -171,7 +177,6 @@
 	                                   function($scope, $http, $resource, toaster, $store, $L) {
 	                                       $scope.$on('pack_changed', function(evt, message) {
                                                $scope.licenses = licenseResource.query({packId: $scope.currentPack.id});
-	                                           console.log('on pack_changed');
 	                                           if ($scope.showForm) {
 	                                               if ($scope.isNew) {
 	                                                   $scope.license.pack_id = $scope.currentPack.id
@@ -183,6 +188,25 @@
 	                                           
 	                                       var licenseResource = $resource('/license/:licenseId', {
 	                                           licenseId : '@id'
+	                                       }, {
+	                                           save_w_upload: {
+	                                               method: "POST",
+	                                               transformRequest: function(data, headersGetter) {
+	                                                   // To use an object without FormData, follow: https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/Using_XMLHttpRequest?redirectlocale=en-US&redirectslug=DOM%2FXMLHttpRequest%2FUsing_XMLHttpRequest#Submitting_forms_and_uploading_files
+	                                                   var formData = new FormData();
+	                                                   angular.forEach(data, function(value, key) {
+	                                                       if (key !== 'request_data')
+	                                                           formData.append(key, value)
+                                                           else
+                                                               formData.append(key, $('input#request_data_file').get(0).files[0]);
+	                                                   })
+	                                                   
+	                                                   return formData;
+	                                               },
+	                                               headers: {
+	                                                   'Content-Type': undefined
+	                                               }
+	                                           }
 	                                       });
 	                                       $scope.mandatory = {
 	                                               code: true
@@ -202,12 +226,28 @@
 	                                       if ($scope.currentPack)
 	                                           $scope.licenses = licenseResource.query({packId: $scope.currentPack.id});
 	                                       
+//	                                       $(document).on('change', '#request_data_file', function(newValue, oldValue) {
+//	                                          console.log('File changed!!!!'); 
+//	                                           var reader = new FileReader();
+//	                                           reader.onload = function(data) {
+//                                                   console.log('LOAD complete: ' + data);
+//                                                   console.log('LOAD reader.result: ' + reader.result);
+//                                                   $('input#request_data').val(reader.result)
+//	                                           }
+//                                               console.log('file: ' + $('input#request_data_file').get(0).files[0]);
+//                                               console.log('file2: ' + $scope.request_data_file);
+//	                                           reader.readAsText($('input#request_data_file').get(0).files[0]);	                                            
+//	                                       });
+	                                       
 	                                       $scope.save = function() {
+	                                           $( "form#licenseForm" )
+	                                           .attr( "enctype", "multipart/form-data" )
+	                                           .attr( "encoding", "multipart/form-data" );
 	                                           var _success = function() {
 	                                               if (!$scope.isNew) $scope.showForm = false;
 	                                               $scope.licenses = licenseResource.query({packId: $scope.currentPack.id});
 	                                           }
-	                                           licenseResource.save($scope.license, _success)
+	                                           licenseResource.save_w_upload($scope.license, _success)
 	                                       }
 	                                       
 	                                       $scope.newLicense = function() {

--
Gitblit v1.3.2