Commit fea5ef0cdda57abf83e522000e9e93b883b7ca71

Authored by Luigi
Exists in master and in 1 other branch develop

Merge remote-tracking branch 'upstream/develop'

... ... @@ -36,7 +36,7 @@
36 36 },
37 37 "devDependencies": {
38 38 "angular": "^1.7.5",
39   - "angular-mocks": "^1.7.7",
  39 + "angular-mocks": "^1.7.8",
40 40 "angular-route": "^1.7.7",
41 41 "bootstrap": "^4.1.3",
42 42 "foca-modal": "git+http://git.focasoftware.com/npm/foca-modal.git",
spec/controllerSpec.js
... ... @@ -29,6 +29,7 @@ describe('Controladores abm vehículo', function() {
29 29 showGuardar: function() { return; },
30 30 addCustomButton: function() { return; }
31 31 },
  32 + $localStorage: {},
32 33 $timeout: {}
33 34 });
34 35  
... ... @@ -38,7 +39,9 @@ describe('Controladores abm vehículo', function() {
38 39  
39 40 it('Crea fecha nueva', function() {
40 41 //arrange
41   - var scope = {};
  42 + var scope = {
  43 + $watch: function() {}
  44 + };
42 45 var controller = $controller('focaAbmVehiculosController', {
43 46 $scope: scope,
44 47 focaAbmVehiculoService: {
... ... @@ -55,6 +58,7 @@ describe('Controladores abm vehículo', function() {
55 58 showGuardar: function() { return; },
56 59 addCustomButton: function() { return; }
57 60 },
  61 + $localStorage: {},
58 62 $timeout: {}
59 63 });
60 64  
... ... @@ -67,7 +71,9 @@ describe('Controladores abm vehículo', function() {
67 71  
68 72 it('$scope setea botonera lateral', function() {
69 73 //arrange
70   - var scope = {};
  74 + var scope = {
  75 + $watch: function() {}
  76 + };
71 77 var controller = $controller('focaAbmVehiculosController', {
72 78 $scope: scope,
73 79 focaAbmVehiculoService: {
... ... @@ -84,7 +90,8 @@ describe('Controladores abm vehículo', function() {
84 90 showGuardar: function() { return; },
85 91 addCustomButton: function() { return; }
86 92 },
87   - $timeout: {}
  93 + $timeout: {},
  94 + $localStorage: {}
88 95 });
89 96  
90 97 //act
... ... @@ -97,7 +104,9 @@ describe('Controladores abm vehículo', function() {
97 104 it('$scope.editar lleva a la ruta correcta', function() {
98 105 inject(function($location) {
99 106 //arrange
100   - var scope = {};
  107 + var scope = {
  108 + $watch: function() {}
  109 + };
101 110 var controller = $controller('focaAbmVehiculosController', {
102 111 $scope: scope,
103 112 focaAbmVehiculoService: {
... ... @@ -114,7 +123,8 @@ describe('Controladores abm vehículo', function() {
114 123 showGuardar: function() { return; },
115 124 addCustomButton: function() { return; }
116 125 },
117   - $timeout: {}
  126 + $timeout: {},
  127 + $localStorage: {}
118 128 });
119 129  
120 130 //act
... ... @@ -128,7 +138,9 @@ describe('Controladores abm vehículo', function() {
128 138  
129 139 it('Solicita confirmacion', function() {
130 140 //arrange
131   - var scope = {};
  141 + var scope = {
  142 + $watch: function() {}
  143 + };
132 144 var focaModalService = {
133 145 confirm: function() {}
134 146 };
... ... @@ -148,7 +160,8 @@ describe('Controladores abm vehículo', function() {
148 160 showGuardar: function() { return; },
149 161 addCustomButton: function() { return; }
150 162 },
151   - $timeout: {}
  163 + $timeout: {},
  164 + $localStorage: {}
152 165 });
153 166  
154 167 //act
... ... @@ -186,7 +199,8 @@ describe('Controladores abm vehículo', function() {
186 199 showGuardar: function() { return; },
187 200 addCustomButton: function() { return; }
188 201 },
189   - $timeout: {}
  202 + $timeout: {},
  203 + $localStorage: {}
190 204 });
191 205 var promesa = Promise.resolve(true);
192 206  
... ... @@ -206,7 +220,9 @@ describe('Controladores abm vehículo', function() {
206 220  
207 221 it('Se selecciona transportista', function() {
208 222 //arrange
209   - var scope = {};
  223 + var scope = {
  224 + $watch: function() {}
  225 + };
210 226 var focaModalService = {
211 227 modal: function() {}
212 228 };
... ... @@ -226,7 +242,8 @@ describe('Controladores abm vehículo', function() {
226 242 showGuardar: function() { return; },
227 243 addCustomButton: function() { return; }
228 244 },
229   - $timeout: {}
  245 + $timeout: {},
  246 + $localStorage: {}
230 247 });
231 248  
232 249 //act
... ... @@ -241,7 +258,9 @@ describe('Controladores abm vehículo', function() {
241 258 inject(function($timeout) {
242 259  
243 260 //arrange
244   - var scope = {};
  261 + var scope = {
  262 + $watch: function() {}
  263 + };
245 264 var focaModalService = {
246 265 modal: function() { return; }
247 266 };
... ... @@ -268,6 +287,7 @@ describe('Controladores abm vehículo', function() {
268 287 showGuardar: function() { return; },
269 288 addCustomButton: function() { return; }
270 289 },
  290 + $localStorage: {},
271 291 $timeout: $timeout
272 292 });
273 293 var promesa = Promise.resolve({COD: '', NOM: ''});
... ... @@ -301,7 +321,9 @@ describe('Controladores abm vehículo', function() {
301 321  
302 322 //arrange
303 323 var controller = $controller('focaAbmVehiculoController', {
304   - $scope: {},
  324 + $scope: {
  325 + $watch: function() {}
  326 + },
305 327 focaAbmVehiculoService: {
306 328 getVehiculo: function() {
307 329 return {
... ... @@ -321,6 +343,7 @@ describe('Controladores abm vehículo', function() {
321 343 showGuardar: function() { return; },
322 344 addCustomButton: function() { return; }
323 345 },
  346 + $localStorage: {},
324 347 $window: {}
325 348 });
326 349  
... ... @@ -332,7 +355,9 @@ describe('Controladores abm vehículo', function() {
332 355 it('Se busca el transportista cuando es nuevo', function() {
333 356  
334 357 //arrange
335   - var scope = {};
  358 + var scope = {
  359 + $watch: function() {}
  360 + };
336 361 var focaAbmVehiculoService = {
337 362 getVehiculo: function() {
338 363 return {
... ... @@ -363,6 +388,7 @@ describe('Controladores abm vehículo', function() {
363 388 showGuardar: function() { return; },
364 389 addCustomButton: function() { return; }
365 390 },
  391 + $localStorage: {},
366 392 $window: {}
367 393 });
368 394  
... ... @@ -373,7 +399,9 @@ describe('Controladores abm vehículo', function() {
373 399 it('No se busca el transportista cuando es nuevo', function() {
374 400  
375 401 //arrange
376   - var scope = {};
  402 + var scope = {
  403 + $watch: function() {}
  404 + };
377 405 var focaAbmVehiculoService = {
378 406 getVehiculo: function() {
379 407 return {
... ... @@ -402,6 +430,7 @@ describe('Controladores abm vehículo', function() {
402 430 showGuardar: function() { return; },
403 431 addCustomButton: function() { return; }
404 432 },
  433 + $localStorage: {},
405 434 $window: {}
406 435 });
407 436  
... ... @@ -413,7 +442,13 @@ describe('Controladores abm vehículo', function() {
413 442  
414 443 inject(function($location) {
415 444 //arrange
416   - var scope = {};
  445 + var scope = {
  446 + $watch: function() {},
  447 + cancelar: function() {},
  448 + formVehiculo: {
  449 + $pristine: true
  450 + }
  451 + };
417 452 var controller = $controller('focaAbmVehiculoController', {
418 453 $scope: scope,
419 454 focaAbmVehiculoService: {
... ... @@ -435,11 +470,13 @@ describe('Controladores abm vehículo', function() {
435 470 showGuardar: function() { return; },
436 471 addCustomButton: function() { return; }
437 472 },
438   - $window: {}
  473 + $localStorage: {},
  474 + $window: {},
  475 +
439 476 });
440 477  
441 478 //act
442   - scope.cancelar();
  479 + scope.salir();
443 480  
444 481 //assert
445 482 expect($location.url()).toEqual('/vehiculo');
... ... @@ -450,7 +487,9 @@ describe('Controladores abm vehículo', function() {
450 487  
451 488 inject(function($location) {
452 489 //arrange
453   - var scope = {};
  490 + var scope = {
  491 + $watch: function() {}
  492 + };
454 493 var controller = $controller('focaAbmVehiculoController', {
455 494 $scope: scope,
456 495 focaAbmVehiculoService: {
... ... @@ -474,6 +513,7 @@ describe('Controladores abm vehículo', function() {
474 513 showGuardar: function() { return; },
475 514 addCustomButton: function() { return; }
476 515 },
  516 + $localStorage: {},
477 517 $window: {}
478 518 });
479 519  
... ... @@ -490,7 +530,9 @@ describe('Controladores abm vehículo', function() {
490 530  
491 531 inject(function($location) {
492 532 //arrange
493   - var scope = {};
  533 + var scope = {
  534 + $watch: function() {}
  535 + };
494 536 var controller = $controller('focaAbmVehiculoController', {
495 537 $scope: scope,
496 538 focaAbmVehiculoService: {
... ... @@ -514,6 +556,7 @@ describe('Controladores abm vehículo', function() {
514 556 showGuardar: function() { return; },
515 557 addCustomButton: function() { return; }
516 558 },
  559 + $localStorage: {},
517 560 $window: {}
518 561 });
519 562  
... ... @@ -532,7 +575,9 @@ describe('Controladores abm vehículo', function() {
532 575 var focaModalService = {
533 576 confirm: function() {}
534 577 };
535   - var scope = {};
  578 + var scope = {
  579 + $watch: function() {}
  580 + };
536 581 var controller = $controller('focaAbmVehiculoController', {
537 582 $scope: scope,
538 583 focaAbmVehiculoService: {
... ... @@ -556,6 +601,7 @@ describe('Controladores abm vehículo', function() {
556 601 showGuardar: function() { return; },
557 602 addCustomButton: function() { return; }
558 603 },
  604 + $localStorage: {},
559 605 $window: {}
560 606 });
561 607  
... ... @@ -570,7 +616,9 @@ describe('Controladores abm vehículo', function() {
570 616 it('Elimina y obtiene cisternas al dar confirmar', function(done) {
571 617  
572 618 //arrange
573   - var scope = {};
  619 + var scope = {
  620 + $watch: function() {}
  621 + };
574 622 var focaModalService = {
575 623 confirm: function() {}
576 624 };
... ... @@ -598,6 +646,7 @@ describe('Controladores abm vehículo', function() {
598 646 showGuardar: function() { return; },
599 647 addCustomButton: function() { return; }
600 648 },
  649 + $localStorage: {},
601 650 $window: {}
602 651 });
603 652 var promesa = Promise.resolve(true);
src/js/controller.js
... ... @@ -107,7 +107,7 @@ angular.module('focaAbmVehiculo')
107 107 focaBotoneraLateralService.showPausar(true);
108 108 focaBotoneraLateralService.showCancelar(false);
109 109 focaBotoneraLateralService.showGuardar(true, $scope.guardar);
110   - focaBotoneraLateralService.addCustomButton('Salir', salir);
  110 + focaBotoneraLateralService.addCustomButton('Salir', $scope.salir);
111 111 });
112 112  
113 113 $timeout(function() {getLSVehiculo();});
... ... @@ -153,8 +153,8 @@ angular.module('focaAbmVehiculo')
153 153 if (key === 13) $scope.focused++;
154 154 };
155 155  
156   - function salir() {
157   - if (!$scope.formVehiculo.$pristine) {
  156 + $scope.salir = function() {
  157 + if (!$scope.formVehiculo.$pristine && focaAbmVehiculoService.cisternasPristine) {
158 158 focaModalService.confirm(
159 159 '¿Está seguro de que desea salir? Se perderán todos los datos cargados.'
160 160 ).then(function(data) {
... ... @@ -181,8 +181,8 @@ angular.module('focaAbmVehiculo')
181 181  
182 182 if (key === 13) {
183 183  
184   - if ($scope.formVehiculo.$pristine) {
185   - $scope.cancelar();
  184 + if ($scope.formVehiculo.$pristine && focaAbmVehiculoService.cisternasPristine) {
  185 + $scope.salir();
186 186 return;
187 187 }
188 188  
... ... @@ -299,7 +299,7 @@ angular.module('focaAbmVehiculo')
299 299 total += parseInt(cisterna.capacidad);
300 300 }
301 301 });
302   - return $scope.vehiculo.capacidad === total;
  302 + return $scope.vehiculo.capacidad == total;
303 303 }
304 304  
305 305 function guardarCisternas() {
... ... @@ -316,5 +316,6 @@ angular.module('focaAbmVehiculo')
316 316  
317 317 return focaAbmVehiculoService.guardarCisternas(cisternas);
318 318 }
  319 +
319 320 }
320 321 ]);
src/js/controllerCisterna.js
1 1 angular.module('focaAbmVehiculo')
2 2 .controller('focaAbmVehiculoCisternaController', [
3 3 '$scope', 'focaAbmVehiculoService', '$routeParams', '$location', '$uibModal',
4   - 'focaModalService', 'focaBotoneraLateralService', '$timeout','$localStorage', '$filter',
  4 + 'focaModalService', 'focaBotoneraLateralService', '$timeout', '$window',
5 5 function($scope, focaAbmVehiculoService, $routeParams, $location, $uibModal,
6   - focaModalService, focaBotoneraLateralService, $timeout, $localStorage, $filter) {
  6 + focaModalService, focaBotoneraLateralService, $timeout, $window) {
7 7 $scope.nuevo = ($routeParams.idx > -1) ? false : true;
8 8 $scope.editar = false;
9 9 $scope.now = new Date();
... ... @@ -26,7 +26,7 @@ angular.module('focaAbmVehiculo')
26 26 focaBotoneraLateralService.showPausar(true);
27 27 focaBotoneraLateralService.showCancelar(false);
28 28 focaBotoneraLateralService.showGuardar(true, $scope.guardar);
29   - focaBotoneraLateralService.addCustomButton('Cancelar', $scope.cancelar);
  29 + focaBotoneraLateralService.addCustomButton('Salir', $scope.salir);
30 30 });
31 31  
32 32 if ($routeParams.idx !== -1) {
... ... @@ -56,27 +56,29 @@ angular.module('focaAbmVehiculo')
56 56 });
57 57 });
58 58  
59   - $scope.cancelar = function() {
  59 + $scope.salir = function() {
60 60  
61 61 if (!$scope.formCisterna.$pristine) {
62 62 focaModalService.confirm(
63 63 '¿Está seguro de que desea salir? Se perderán todos los datos cargados.'
64 64 ).then(function(data) {
65 65 if (data) {
66   - $location.path('/vehiculo');
  66 + $location.path('/vehiculo/' + $routeParams.idVehiculo + '/' +
  67 + $scope.transportista);
67 68 }
68 69 });
  70 + } else {
  71 + $location.path('/vehiculo/' + $routeParams.idVehiculo + '/' +
  72 + $scope.transportista);
69 73 }
70 74 };
71 75  
72 76 $scope.guardar = function() {
73 77  
74 78 if ($scope.formCisterna.$pristine) {
75   - $scope.cancelar();
  79 + $scope.salir();
76 80 return;
77   - }
78   -
79   - if (!$scope.cisterna.codigo) {
  81 + } else if (!$scope.cisterna.codigo) {
80 82 focaModalService.alert('Ingrese codigo de cisterna');
81 83 return;
82 84 } else if (!$scope.cisterna.capacidad) {
... ... @@ -130,7 +132,7 @@ angular.module('focaAbmVehiculo')
130 132 cisternas.forEach(function(cisterna, idx) {
131 133 //SI EL CODIGO YA EXISTE
132 134 if (cisterna.codigo === $scope.cisterna.codigo &&
133   - idx !== $routeParams.idx &&
  135 + idx != $routeParams.idx &&
134 136 !cisterna.desactivado) {
135 137 reject('Código de cisterna existente');
136 138 }
1 1 angular.module('focaAbmVehiculo')
2 2 .factory('focaAbmVehiculoService', ['$http', 'API_ENDPOINT', function($http, API_ENDPOINT) {
3 3 var cisternas = [];
  4 + var cisternasPristine = true;
4 5 return {
5 6 getVehiculos: function() {
6 7 return $http.get(API_ENDPOINT.URL + '/vehiculo');
... ... @@ -18,9 +19,11 @@ angular.module('focaAbmVehiculo')
18 19 return $http.delete(API_ENDPOINT.URL + '/vehiculo/' + id);
19 20 },
20 21 getCisternas: function(idVehiculo) {
21   - if(cisternas.length) {
  22 + if (cisternas.length) {
  23 + cisternasPristine = true;
22 24 return Promise.resolve(angular.copy(cisternas));
23   - }else {
  25 + } else {
  26 + cisternasPristine = true;
24 27 return new Promise(function(resolve) {
25 28 $http.get(API_ENDPOINT.URL + '/cisterna/listar/' + idVehiculo)
26 29 .then(function(res) {
... ... @@ -31,12 +34,14 @@ angular.module('focaAbmVehiculo')
31 34 }
32 35 },
33 36 guardarCisterna: function(cisterna, idx) {
34   - if(idx !== '-1') {
  37 + if (idx !== '-1') {
35 38 //update
36 39 cisternas[idx] = cisterna;
37   - }else {
  40 + cisternasPristine = false;
  41 + } else {
38 42 //insert
39 43 cisternas.push(cisterna);
  44 + cisternasPristine = false;
40 45 }
41 46 },
42 47 guardarCisternas: function(cisternas) {
... ... @@ -44,6 +49,7 @@ angular.module('focaAbmVehiculo')
44 49 },
45 50 deleteCisterna: function(idx) {
46 51 cisternas[idx].desactivado = true;
  52 + cisternasPristine = false;
47 53 },
48 54 cleanCisternas: function() {
49 55 cisternas = [];