Commit 7f5b15e59a79cea41746d87838a9ff54f6f48fb7

Authored by Eric Fernandez
1 parent 37d6cbbe2f
Exists in master

controlo respuestas, agrego angular-ladda

1 const clean = require('gulp-clean'); 1 const clean = require('gulp-clean');
2 const concat = require('gulp-concat'); 2 const concat = require('gulp-concat');
3 const connect = require('gulp-connect'); 3 const connect = require('gulp-connect');
4 const gulp = require('gulp'); 4 const gulp = require('gulp');
5 const htmlmin = require('gulp-htmlmin'); 5 const htmlmin = require('gulp-htmlmin');
6 const jshint = require('gulp-jshint'); 6 const jshint = require('gulp-jshint');
7 const pump = require('pump'); 7 const pump = require('pump');
8 const rename = require('gulp-rename'); 8 const rename = require('gulp-rename');
9 const replace = require('gulp-replace'); 9 const replace = require('gulp-replace');
10 const templateCache = require('gulp-angular-templatecache'); 10 const templateCache = require('gulp-angular-templatecache');
11 const uglify = require('gulp-uglify-es').default; 11 const uglify = require('gulp-uglify-es').default;
12 12
13 var paths = { 13 var paths = {
14 srcJS: 'src/js/*.js', 14 srcJS: 'src/js/*.js',
15 srcViews: 'src/views/*.html', 15 srcViews: 'src/views/*.html',
16 tmp: 'tmp', 16 tmp: 'tmp',
17 dist: 'dist/' 17 dist: 'dist/'
18 }; 18 };
19 19
20 gulp.task('templates', ['clean'], function() { 20 gulp.task('templates', ['clean'], function() {
21 return pump( 21 return pump(
22 [ 22 [
23 gulp.src(paths.srcViews), 23 gulp.src(paths.srcViews),
24 htmlmin(), 24 htmlmin(),
25 templateCache('views.js', { 25 templateCache('views.js', {
26 module: 'focaLogin', 26 module: 'focaLogin',
27 root: '' 27 root: ''
28 }), 28 }),
29 gulp.dest(paths.tmp) 29 gulp.dest(paths.tmp)
30 ] 30 ]
31 ); 31 );
32 }); 32 });
33 33
34 gulp.task('uglify', ['templates'], function() { 34 gulp.task('uglify', ['templates'], function() {
35 return pump( 35 return pump(
36 [ 36 [
37 gulp.src([ 37 gulp.src([
38 paths.srcJS, 38 paths.srcJS,
39 'tmp/views.js' 39 'tmp/views.js'
40 ]), 40 ]),
41 concat('foca-login.js'), 41 concat('foca-login.js'),
42 replace("['ngRoute', 'ngCookies', 'focaDirectivas']",'[]'), 42 replace("['ngRoute', 'ngCookies', 'focaDirectivas', 'angular-ladda']",'[]'),
43 replace('src/views/', ''), 43 replace('src/views/', ''),
44 gulp.dest(paths.tmp), 44 gulp.dest(paths.tmp),
45 rename('foca-login.min.js'), 45 rename('foca-login.min.js'),
46 uglify(), 46 uglify(),
47 gulp.dest(paths.dist) 47 gulp.dest(paths.dist)
48 ] 48 ]
49 ); 49 );
50 }); 50 });
51 51
52 gulp.task('clean', function() { 52 gulp.task('clean', function() {
53 return gulp.src(['tmp', 'dist'], {read: false}) 53 return gulp.src(['tmp', 'dist'], {read: false})
54 .pipe(clean()); 54 .pipe(clean());
55 }); 55 });
56 56
57 gulp.task('pre-commit', function() { 57 gulp.task('pre-commit', function() {
58 pump( 58 pump(
59 [ 59 [
60 gulp.src(paths.srcJS), 60 gulp.src(paths.srcJS),
61 jshint('.jshintrc'), 61 jshint('.jshintrc'),
62 jshint.reporter('default'), 62 jshint.reporter('default'),
63 jshint.reporter('fail') 63 jshint.reporter('fail')
64 ] 64 ]
65 ); 65 );
66 }); 66 });
67 67
68 gulp.task('clean-post-install', function() { 68 gulp.task('clean-post-install', function() {
69 return gulp.src(['src', 'tmp', '.jshintrc','readme.md', '.gitignore', 'gulpfile.js', 69 return gulp.src(['src', 'tmp', '.jshintrc','readme.md', '.gitignore', 'gulpfile.js',
70 'index.html'], {read: false}) 70 'index.html'], {read: false})
71 .pipe(clean()); 71 .pipe(clean());
72 }); 72 });
73 73
74 gulp.task('compile', ['templates', 'uglify']); 74 gulp.task('compile', ['templates', 'uglify']);
75 75
76 gulp.task('webserver', function() { 76 gulp.task('webserver', function() {
77 pump [ 77 pump [
78 connect.server({port: 3000}) 78 connect.server({port: 3000})
79 ] 79 ]
80 }); 80 });
81 81
82 gulp.task('default', ['webserver']); 82 gulp.task('default', ['webserver']);
83 83
84 gulp.task('watch', function() { 84 gulp.task('watch', function() {
85 return gulp.watch([paths.srcJS, paths.srcViews], ['uglify']); 85 return gulp.watch([paths.srcJS, paths.srcViews], ['uglify']);
86 }); 86 });
87 87
1 { 1 {
2 "name": "foca-login", 2 "name": "foca-login",
3 "version": "0.0.1", 3 "version": "0.0.1",
4 "description": "Login", 4 "description": "Login",
5 "main": "dist/foca-login.js", 5 "main": "dist/foca-login.js",
6 "scripts": { 6 "scripts": {
7 "test": "echo \"Error: no test specified\" && exit 1", 7 "test": "echo \"Error: no test specified\" && exit 1",
8 "compile": "gulp compile", 8 "compile": "gulp compile",
9 "gulp-pre-commit": "gulp pre-commit", 9 "gulp-pre-commit": "gulp pre-commit",
10 "postinstall": "npm run compile && gulp clean-post-install", 10 "postinstall": "npm run compile && gulp clean-post-install",
11 "install-dev": "npm install -D gulp gulp-connect jasmine-core pre-commit angular angular-route angular-cookies bootstrap font-awesome gulp-angular-templatecache gulp-clean gulp-htmlmin gulp-jshint gulp-rename gulp-replace gulp-sequence gulp-uglify-es gulp-replace jquery jshint pump && npm i -D git+https://debo.suite.repo/modulos-npm/foca-directivas" 11 "install-dev": "npm install -D gulp gulp-connect jasmine-core pre-commit angular angular-route angular-cookies bootstrap font-awesome gulp-angular-templatecache gulp-clean gulp-htmlmin gulp-jshint gulp-rename gulp-replace gulp-sequence gulp-uglify-es gulp-replace jquery jshint pump && npm i -D git+http://git.focasoftware.com/npm/foca-directivas.git"
12 }, 12 },
13 "pre-commit": [ 13 "pre-commit": [
14 "gulp-pre-commit" 14 "gulp-pre-commit"
15 ], 15 ],
16 "repository": { 16 "repository": {
17 "type": "git", 17 "type": "git",
18 "url": "https://debo.suite.repo/modulos-npm/foca-login.git" 18 "url": "https://debo.suite.repo/modulos-npm/foca-login.git"
19 }, 19 },
20 "author": "Foca Software", 20 "author": "Foca Software",
21 "license": "ISC", 21 "license": "ISC",
22 "peerDependencies": { 22 "peerDependencies": {
23 "angular": "^1.7.x", 23 "angular": "^1.7.x",
24 "bootstrap": "^4.1.x", 24 "bootstrap": "^4.1.x",
25 "jquery": "^3.3.x", 25 "jquery": "^3.3.x",
26 "font-awesome": "^4.7.x", 26 "font-awesome": "^4.7.x",
27 "gulp": "^3.9.x", 27 "gulp": "^3.9.x",
28 "gulp-concat": "2.6.x", 28 "gulp-concat": "2.6.x",
29 "gulp-jshint": "^2.1.x", 29 "gulp-jshint": "^2.1.x",
30 "gulp-rename": "^1.4.x", 30 "gulp-rename": "^1.4.x",
31 "gulp-replace": "^1.0.x", 31 "gulp-replace": "^1.0.x",
32 "gulp-uglify-es": "^1.0.x", 32 "gulp-uglify-es": "^1.0.x",
33 "jshint": "^2.9.x", 33 "jshint": "^2.9.x",
34 "pump": "^3.0.x", 34 "pump": "^3.0.x",
35 "foca-directivas": "git+https://debo.suite.repo/modulos-npm/foca-directivas" 35 "foca-directivas": "git+http://git.focasoftware.com/npm/foca-directivas.git"
36 }, 36 },
37 "devDependencies": { 37 "devDependencies": {
38 "angular": "1.7.5", 38 "angular": "^1.7.5",
39 "angular-cookies": "1.7.5", 39 "angular-cookies": "^1.7.5",
40 "angular-route": "1.7.5", 40 "angular-route": "^1.7.5",
41 "bootstrap": "4.1.3", 41 "bootstrap": "^4.1.3",
42 "foca-directivas": "git+https://debo.suite.repo/modulos-npm/foca-directivas", 42 "foca-directivas": "git+http://git.focasoftware.com/npm/foca-directivas.git",
43 "font-awesome": "4.7.0", 43 "font-awesome": "^4.7.0",
44 "gulp": "3.9.1", 44 "gulp": "^3.9.1",
45 "gulp-angular-templatecache": "2.2.5", 45 "gulp-angular-templatecache": "^2.2.5",
46 "gulp-clean": "0.4.0", 46 "gulp-clean": "^0.4.0",
47 "gulp-connect": "5.6.1", 47 "gulp-connect": "^5.7.0",
48 "gulp-htmlmin": "5.0.1", 48 "gulp-htmlmin": "^5.0.1",
49 "gulp-jshint": "2.1.0", 49 "gulp-jshint": "^2.1.0",
50 "gulp-rename": "1.4.0", 50 "gulp-rename": "^1.4.0",
51 "gulp-replace": "1.0.0", 51 "gulp-replace": "^1.0.0",
52 "gulp-sequence": "1.0.0", 52 "gulp-sequence": "^1.0.0",
53 "gulp-uglify-es": "1.0.4", 53 "gulp-uglify-es": "^1.0.4",
54 "jasmine-core": "3.3.0", 54 "jasmine-core": "^3.3.0",
55 "jquery": "3.3.1", 55 "jquery": "^3.3.1",
56 "jshint": "2.9.6", 56 "jshint": "^2.9.7",
57 "pre-commit": "1.2.2", 57 "pre-commit": "^1.2.2",
58 "pump": "3.0.0" 58 "pump": "^3.0.0"
59 } 59 }
60 } 60 }
61 61
1 angular.module('focaLogin', ['ngRoute', 'ngCookies', 'focaDirectivas']) 1 angular.module('focaLogin', ['ngRoute', 'ngCookies', 'focaDirectivas', 'angular-ladda'])
2 .run(['$rootScope', '$cookies', '$location', function($rootScope, $cookies, $location) { 2 .run(['$rootScope', '$cookies', '$location', function($rootScope, $cookies, $location) {
3 $rootScope.$on('$locationChangeStart', function() { 3 $rootScope.$on('$locationChangeStart', function() {
4 var idUsuario = $cookies.get('idUsuario'); 4 var idUsuario = $cookies.get('idUsuario');
5 if(!idUsuario) { 5 if(!idUsuario) {
6 if($location.path() !== '/login') { 6 if($location.path() !== '/login') {
7 $location.path('/login'); 7 $location.path('/login');
8 } 8 }
9 } 9 }
10 }); 10 });
11 }]); 11 }]);
12 12
src/js/controller.js
1 angular.module('focaLogin') 1 angular.module('focaLogin')
2 .controller('focaLoginController', [ 2 .controller('focaLoginController', [
3 '$scope', 'focaLoginService', '$location', '$cookies', 3 '$scope', 'focaLoginService', '$location', '$cookies', 'focaModalService',
4 function($scope, focaLoginService, $location, $cookies) { 4 function($scope, focaLoginService, $location, $cookies, focaModalService) {
5 $scope.paso = 1; 5 $scope.paso = 1;
6 $scope.enviar = function() { 6 $scope.enviar = function() {
7 focaLoginService.login($scope.usuario).then(function(datos) { 7 $scope.loginLoading = true;
8 $cookies.put('idUsuario', $scope.usuario.idUsuario); 8 focaLoginService.login($scope.usuario)
9 $cookies.put('token', datos.data.token); 9 .then(function(datos) {
10 $location.path('/'); 10 $scope.loginLoading = false;
11 $scope.$emit('blur'); 11 $cookies.put('idUsuario', $scope.usuario.idUsuario);
12 }); 12 $cookies.put('token', datos.data.token);
13 $location.path('/');
14 $scope.$emit('blur');
15 })
16 .catch(function(error) {
17 $scope.loginLoading = false;
18 if(error.status === 401) {
19 focaModalService.alert('El usuario y/o la contraseña no coinciden');
20 return;
21 }
22 if(error.status === -1) {
23 focaModalService.alert('Sin servicio');
24 return;
25 }
26 });
13 }; 27 };
14 $scope.irPaso = function(numeroPaso) { 28 $scope.irPaso = function(numeroPaso) {
15 $scope.paso = numeroPaso; 29 $scope.paso = numeroPaso;
16 }; 30 };
17 } 31 }
18 ]) 32 ])
19 .controller('focaLogoutController', [ 33 .controller('focaLogoutController', [
20 '$cookies', '$location', 34 '$cookies', '$location',
21 function($cookies, $location) { 35 function($cookies, $location) {
22 $cookies.remove('idUsuario'); 36 $cookies.remove('idUsuario');
23 $cookies.remove('token'); 37 $cookies.remove('token');
24 //Cierra ventana 38 //Cierra ventana
25 window.open('', '_self', ''); //bug fix 39 window.open('', '_self', ''); //bug fix
26 window.close(); 40 window.close();
27 $location.path('/login'); 41 $location.path('/login');
28 } 42 }
29 ]); 43 ]);
30 44
src/views/foca-login.html
1 <div class="login"> 1 <div class="login">
2 <form name="login"> 2 <form name="login">
3 <div class="login-titulo"> 3 <div class="login-titulo">
4 <span>Ingreso de usuario</span> 4 <span>Ingreso de usuario</span>
5 </div> 5 </div>
6 <div class="login-campo"> 6 <div class="login-campo">
7 <label>Usuario</label> 7 <label>Usuario</label>
8 <input 8 <input
9 type = "text" 9 type = "text"
10 ng-model = "usuario.idUsuario" 10 ng-model = "usuario.idUsuario"
11 foca-focus = "paso == 1" 11 foca-focus = "paso == 1"
12 ng-keyup = "$event.keyCode == 13 && irPaso(2)" 12 ng-keyup = "$event.keyCode == 13 && irPaso(2)"
13 ladda="loginLoading"
13 teclado-virtual 14 teclado-virtual
14 /> 15 />
15 </div> 16 </div>
16 <div class="login-campo"> 17 <div class="login-campo">
17 <label>Contraseña</label> 18 <label>Contraseña</label>
18 <input 19 <input
19 type = "password" 20 type = "password"
20 ng-model = "usuario.clave" 21 ng-model = "usuario.clave"
21 foca-focus = "paso == 2" 22 foca-focus = "paso == 2"
22 ng-keyup = "$event.keyCode == 13 && enviar()" 23 ng-keyup = "$event.keyCode == 13 && enviar()"
24 ladda="loginLoading"
23 teclado-virtual 25 teclado-virtual
24 /> 26 />
25 </div> 27 </div>
26 <button type="button" ng-click="enviar()" class="btn btn-dark mt-3 float-right">Ingresar</button> 28 <button
29 type="button"
30 ng-click="enviar()"
31 class="btn btn-dark mt-3 float-right"
32 ladda="loginLoading"
33 >Ingresar</button>
27 </form> 34 </form>
28 </div> 35 </div>
29 36