From 119081e3d1d8658cc2108732422458afea7491fd Mon Sep 17 00:00:00 2001 From: Alberto Basalo Date: Wed, 21 Oct 2015 17:39:10 +0200 Subject: [PATCH 1/7] fix demo 0 --- 00-angularjs/0-hola-angularjs/index.html | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/00-angularjs/0-hola-angularjs/index.html b/00-angularjs/0-hola-angularjs/index.html index 5583701..c8ceae5 100644 --- a/00-angularjs/0-hola-angularjs/index.html +++ b/00-angularjs/0-hola-angularjs/index.html @@ -16,14 +16,13 @@

Hola Mundo AngularJS

-

uno + uno son {{ numero1*1 + numero2*1}}

+

uno + uno son {{ 1 + 1}}

¿Cómo te llamas? : - - +

From 6abf5a13f0b4215f107fd08a0ebfd94f7bb99f72 Mon Sep 17 00:00:00 2001 From: Alberto Basalo Date: Wed, 21 Oct 2015 20:39:26 +0200 Subject: [PATCH 2/7] reorginzed 0719 ok --- .../server.js | 49 ----- .../server.js | 49 ----- 06a-ui-una-ruta-mejor/app.js | 38 ++-- 06a-ui-una-ruta-mejor/cajaCtrl.js | 56 +++--- 06a-ui-una-ruta-mejor/index.html | 86 ++++---- 06a-ui-una-ruta-mejor/maestrosService.js | 12 ++ 06a-ui-una-ruta-mejor/menuCtrl.js | 4 +- 06a-ui-una-ruta-mejor/movimientosFactory.js | 31 ++- 06a-ui-una-ruta-mejor/server.js | 49 ----- 06a-ui-una-ruta-mejor/total.html | 45 ++--- 0719-angular-con-filtro/app.js | 24 +++ 0719-angular-con-filtro/cajaCtrl.js | 25 +++ .../filtros.js | 18 +- 0719-angular-con-filtro/index.html | 51 +++++ 0719-angular-con-filtro/lista.html | 29 +++ 0719-angular-con-filtro/maestrosService.js | 10 + 0719-angular-con-filtro/menuCtrl.js | 10 + 0719-angular-con-filtro/movimientosFactory.js | 38 ++++ .../not-found.html | 0 0719-angular-con-filtro/nuevo.html | 52 +++++ .../total.html | 0 .../client/app.js | 0 .../client/appHttpLog.js | 0 .../client/appSecurity.js | 0 .../client/cajaCtrl.js | 0 .../client/directivas.js | 0 .../client/filtros.js | 0 .../client/index.html | 0 .../client/lista.html | 0 .../client/maestrosFactory.js | 0 .../client/menuCtrl.js | 0 .../client/movimiento.html | 0 .../client/movimientoCtrl.js | 0 .../client/movimientosFactory.js | 0 .../client/not-found.html | 0 .../client/nuevo.html | 0 .../client/registro.html | 0 .../client/registroCtrl.js | 0 .../client/total.html | 0 .../client/tpl-cabecera.html | 0 .../client/tpl-fila-movimiento.html | 0 .../client/tpl-valoracion.html | 0 .../client/valoracion.js | 0 .../directivas.md | 0 .../package.json | 0 .../recursos.md | 0 .../server.js | 0 .../4-control-caja/client/menuCtrl.js | 8 - .../client/_comun/app.js | 0 .../client/_comun/appHttpLog.js | 0 .../client/_comun}/appSecurity.js | 0 .../client/_comun}/menuCtrl.js | 0 .../client/_comun}/not-found.html | 0 .../client/_comun/states.js | 0 .../client/controlcaja/cajaCtrl.js | 0 .../client/controlcaja/lista.html | 0 .../client/controlcaja/nuevo.html | 0 .../client/controlcaja/total.html | 0 .../client/data/maestrosFactory.js | 0 .../client/data/movimientosFactory.js | 0 .../client/directivas/directivas.js | 0 .../client/directivas/tpl-cabecera.html | 0 .../directivas/tpl-fila-movimiento.html | 0 .../directivas/valoracion/tpl-valoracion.html | 0 .../directivas/valoracion/valoracion.js | 0 .../client/filtros/filtros.js | 0 .../client/index.html | 0 .../client/movimiento/movimiento.html | 0 .../client/movimiento/movimientoCtrl.js | 0 .../client/registro/registro.html | 0 .../client/registro}/registroCtrl.js | 0 .../server/api/maestrosAPI.js | 0 .../server/api/movimientosAPI.js | 0 .../server/api/seguridadAPI.js | 0 .../server/cash-flow.js | 0 .../server/data/movimientosData.js | 0 .../server/data/seguridadData.js | 0 .../server/express.js | 0 .../server/package.json | 0 .../1-mi-script.js | 0 .../2-javascript-normal-2.js | 0 .../3-patrones.js | 0 .../4-el-proceso.js | 0 .../hola-mundo.md | 0 .../1-consola-argumentos.js | 0 .../2-trabajo-consola-asincrona.js | 0 .../3-consola-con-callbacks.js | 0 .../consola.md | 0 .../1-http.js | 0 .../2-web.js | 0 .../3-static.js | 0 .../4-control-caja/client/app.js | 52 ++--- .../4-control-caja/client/cajaCtrl.js | 80 ++++---- .../4-control-caja/client/index.html | 96 ++++----- .../4-control-caja}/client/lista.html | 0 .../4-control-caja}/client/menuCtrl.js | 0 .../client/movimientosFactory.js | 68 +++---- .../4-control-caja}/client/not-found.html | 0 .../4-control-caja}/client/nuevo.html | 0 .../4-control-caja}/client/total.html | 0 .../4-control-caja/server.js | 0 .../static/blog.html | 0 .../static/estilo.css | 0 .../static/simple.html | 0 .../web.md | 0 .../1-modulos-propios/1-app.js | 0 .../1-modulos-propios/cuenta.js | 0 .../1-modulos-propios/mates.js | 0 .../2-operaciones-lentas/2-1-callback.js | 0 .../2-operaciones-lentas/2-2-promesas.js | 0 .../2-operaciones-lentas/package.json | 0 .../pro.md | 0 {11-express => 111-express}/1-hola-express.js | 0 {11-express => 111-express}/2-middleware.js | 0 {11-express => 111-express}/express.md | 0 {11-express => 111-express}/package.json | 0 .../static/simple.html | 0 .../1-rutas.js | 0 .../2-parametros/matematicas.js | 0 .../2-parametros/parametros.js | 0 .../package.json | 0 .../rutas.md | 0 .../1-rest-crud.js | 0 .../API-REST.md | 0 .../package.json | 0 .../client/app.js | 0 .../client/cajaCtrl.js | 0 .../client/index.html | 0 .../client/lista.html | 0 .../client/menuCtrl.js | 0 .../client/movimientosFactory.js | 0 .../client/not-found.html | 0 .../client/nuevo.html | 0 .../client/total.html | 0 .../package.json | 0 .../server.js | 0 .../client/app.js | 0 .../client/appSecurity.js | 0 .../client/cajaCtrl.js | 0 .../client/index.html | 0 .../client/lista.html | 0 .../client/maestrosFactory.js | 0 .../client/menuCtrl.js | 0 .../client/movimientosFactory.js | 0 .../client/not-found.html | 0 .../client/nuevo.html | 0 .../client/registro.html | 0 .../client/registroCtrl.js | 0 .../client/total.html | 0 .../package.json | 0 .../server.js | 0 .../client/app.js | 0 .../client/appSecurity.js | 0 .../client/cajaCtrl.js | 0 .../client/index.html | 0 .../client/lista.html | 52 ++--- .../client/maestrosFactory.js | 0 .../client/menuCtrl.js | 0 .../client/movimientosFactory.js | 0 .../client/not-found.html | 0 .../client/nuevo.html | 0 .../client/registro.html | 0 .../client/registroCtrl.js | 0 .../client/total.html | 0 .../package.json | 0 .../server.js | 0 .../client/app.js | 0 .../client/appHttpLog.js | 0 .../client/appSecurity.js | 0 .../client/cajaCtrl.js | 0 .../client/index.html | 0 .../client/lista.html | 0 .../client/maestrosFactory.js | 0 .../client/menuCtrl.js | 0 .../client/movimiento.html | 0 .../client/movimientoCtrl.js | 0 .../client/movimientosFactory.js | 0 .../client/not-found.html | 0 .../client/nuevo.html | 0 .../client/registro.html | 0 .../client/registroCtrl.js | 0 .../client/total.html | 0 .../package.json | 0 .../server.js | 0 {18-servicios => 118-servicios}/client/app.js | 0 .../client/appHttpLog.js | 0 .../client/appSecurity.js | 0 .../client/cajaCtrl.js | 0 .../client/index.html | 0 .../client/lista.html | 0 .../client/maestrosFactory.js | 0 .../client}/menuCtrl.js | 0 .../client/movimiento.html | 0 .../client/movimientoCtrl.js | 0 .../client/movimientosFactory.js | 0 .../client}/not-found.html | 0 .../client/nuevo.html | 106 +++++----- .../client/registro.html | 0 .../client/registroCtrl.js | 0 .../client/total.html | 76 +++---- {18-servicios => 118-servicios}/package.json | 0 {18-servicios => 118-servicios}/server.js | 0 19-angular-con-filtro/client/app.js | 36 ---- 19-angular-con-filtro/client/index.html | 53 ----- 19-angular-con-filtro/client/lista.html | 33 ---- 19-angular-con-filtro/client/movimiento.html | 52 ----- 19-angular-con-filtro/client/nuevo.html | 65 ------ 20-directivas/client/appHttpLog.js | 23 --- 20-directivas/client/cajaCtrl.js | 34 ---- 20-directivas/client/maestrosFactory.js | 9 - 20-directivas/client/movimientoCtrl.js | 10 - 20-directivas/client/movimientosFactory.js | 25 --- 20-directivas/client/registro.html | 37 ---- 20-directivas/package.json | 15 -- 20-directivas/server.js | 187 ------------------ 21-organizacion/client/_comun/appSecurity.js | 29 --- .../client/registro/registroCtrl.js | 26 --- 21-organizacion/server/settings.js | 5 - 218 files changed, 659 insertions(+), 1194 deletions(-) delete mode 100644 04-tres-vistas-y-un-controlador-spa1/server.js delete mode 100644 05-tres-vistas-un-controladory-una-factoria-spa2/server.js create mode 100644 06a-ui-una-ruta-mejor/maestrosService.js delete mode 100644 06a-ui-una-ruta-mejor/server.js create mode 100644 0719-angular-con-filtro/app.js create mode 100644 0719-angular-con-filtro/cajaCtrl.js rename {20-directivas/client => 0719-angular-con-filtro}/filtros.js (99%) create mode 100644 0719-angular-con-filtro/index.html create mode 100644 0719-angular-con-filtro/lista.html create mode 100644 0719-angular-con-filtro/maestrosService.js create mode 100644 0719-angular-con-filtro/menuCtrl.js create mode 100644 0719-angular-con-filtro/movimientosFactory.js rename {09-nodejs-y-la-web/4-control-caja/client => 0719-angular-con-filtro}/not-found.html (100%) create mode 100644 0719-angular-con-filtro/nuevo.html rename {14-rest-in-peace/client => 0719-angular-con-filtro}/total.html (100%) rename {20-directivas => 0820-directivas}/client/app.js (100%) rename {17-rest-advance => 0820-directivas}/client/appHttpLog.js (100%) rename {17-rest-advance => 0820-directivas}/client/appSecurity.js (100%) rename {17-rest-advance => 0820-directivas}/client/cajaCtrl.js (100%) rename {20-directivas => 0820-directivas}/client/directivas.js (100%) rename {19-angular-con-filtro => 0820-directivas}/client/filtros.js (100%) rename {20-directivas => 0820-directivas}/client/index.html (100%) rename {20-directivas => 0820-directivas}/client/lista.html (100%) rename {17-rest-advance => 0820-directivas}/client/maestrosFactory.js (100%) rename {14-rest-in-peace => 0820-directivas}/client/menuCtrl.js (100%) rename {20-directivas => 0820-directivas}/client/movimiento.html (100%) rename {19-angular-con-filtro => 0820-directivas}/client/movimientoCtrl.js (100%) rename {17-rest-advance => 0820-directivas}/client/movimientosFactory.js (100%) rename {14-rest-in-peace => 0820-directivas}/client/not-found.html (100%) rename {20-directivas => 0820-directivas}/client/nuevo.html (100%) rename {15-rest-assured => 0820-directivas}/client/registro.html (100%) rename {16-rest-sources => 0820-directivas}/client/registroCtrl.js (100%) rename {20-directivas => 0820-directivas}/client/total.html (100%) rename {20-directivas => 0820-directivas}/client/tpl-cabecera.html (100%) rename {20-directivas => 0820-directivas}/client/tpl-fila-movimiento.html (100%) rename {20-directivas => 0820-directivas}/client/tpl-valoracion.html (100%) rename {20-directivas => 0820-directivas}/client/valoracion.js (100%) rename {20-directivas => 0820-directivas}/directivas.md (100%) rename {19-angular-con-filtro => 0820-directivas}/package.json (100%) rename {20-directivas => 0820-directivas}/recursos.md (100%) rename {19-angular-con-filtro => 0820-directivas}/server.js (100%) delete mode 100644 09-nodejs-y-la-web/4-control-caja/client/menuCtrl.js rename {21-organizacion => 0921-organizacion}/client/_comun/app.js (100%) rename {21-organizacion => 0921-organizacion}/client/_comun/appHttpLog.js (100%) rename {18-servicios/client => 0921-organizacion/client/_comun}/appSecurity.js (100%) rename {15-rest-assured/client => 0921-organizacion/client/_comun}/menuCtrl.js (100%) rename {15-rest-assured/client => 0921-organizacion/client/_comun}/not-found.html (100%) rename {21-organizacion => 0921-organizacion}/client/_comun/states.js (100%) rename {21-organizacion => 0921-organizacion}/client/controlcaja/cajaCtrl.js (100%) rename {21-organizacion => 0921-organizacion}/client/controlcaja/lista.html (100%) rename {21-organizacion => 0921-organizacion}/client/controlcaja/nuevo.html (100%) rename {21-organizacion => 0921-organizacion}/client/controlcaja/total.html (100%) rename {21-organizacion => 0921-organizacion}/client/data/maestrosFactory.js (100%) rename {21-organizacion => 0921-organizacion}/client/data/movimientosFactory.js (100%) rename {21-organizacion => 0921-organizacion}/client/directivas/directivas.js (100%) rename {21-organizacion => 0921-organizacion}/client/directivas/tpl-cabecera.html (100%) rename {21-organizacion => 0921-organizacion}/client/directivas/tpl-fila-movimiento.html (100%) rename {21-organizacion => 0921-organizacion}/client/directivas/valoracion/tpl-valoracion.html (100%) rename {21-organizacion => 0921-organizacion}/client/directivas/valoracion/valoracion.js (100%) rename {21-organizacion => 0921-organizacion}/client/filtros/filtros.js (100%) rename {21-organizacion => 0921-organizacion}/client/index.html (100%) rename {21-organizacion => 0921-organizacion}/client/movimiento/movimiento.html (100%) rename {21-organizacion => 0921-organizacion}/client/movimiento/movimientoCtrl.js (100%) rename {21-organizacion => 0921-organizacion}/client/registro/registro.html (100%) rename {17-rest-advance/client => 0921-organizacion/client/registro}/registroCtrl.js (100%) rename {21-organizacion => 0921-organizacion}/server/api/maestrosAPI.js (100%) rename {21-organizacion => 0921-organizacion}/server/api/movimientosAPI.js (100%) rename {21-organizacion => 0921-organizacion}/server/api/seguridadAPI.js (100%) rename {21-organizacion => 0921-organizacion}/server/cash-flow.js (100%) rename {21-organizacion => 0921-organizacion}/server/data/movimientosData.js (100%) rename {21-organizacion => 0921-organizacion}/server/data/seguridadData.js (100%) rename {21-organizacion => 0921-organizacion}/server/express.js (100%) rename {21-organizacion => 0921-organizacion}/server/package.json (100%) rename {07-hola-mundo-nodejs => 107-hola-mundo-nodejs}/1-mi-script.js (100%) rename {07-hola-mundo-nodejs => 107-hola-mundo-nodejs}/2-javascript-normal-2.js (100%) rename {07-hola-mundo-nodejs => 107-hola-mundo-nodejs}/3-patrones.js (100%) rename {07-hola-mundo-nodejs => 107-hola-mundo-nodejs}/4-el-proceso.js (100%) rename {07-hola-mundo-nodejs => 107-hola-mundo-nodejs}/hola-mundo.md (100%) rename {08-nodejs-y-la-consola => 108-nodejs-y-la-consola}/1-consola-argumentos.js (100%) rename {08-nodejs-y-la-consola => 108-nodejs-y-la-consola}/2-trabajo-consola-asincrona.js (100%) rename {08-nodejs-y-la-consola => 108-nodejs-y-la-consola}/3-consola-con-callbacks.js (100%) rename {08-nodejs-y-la-consola => 108-nodejs-y-la-consola}/consola.md (100%) rename {09-nodejs-y-la-web => 109-nodejs-y-la-web}/1-http.js (100%) rename {09-nodejs-y-la-web => 109-nodejs-y-la-web}/2-web.js (100%) rename {09-nodejs-y-la-web => 109-nodejs-y-la-web}/3-static.js (100%) rename {09-nodejs-y-la-web => 109-nodejs-y-la-web}/4-control-caja/client/app.js (90%) rename {09-nodejs-y-la-web => 109-nodejs-y-la-web}/4-control-caja/client/cajaCtrl.js (96%) rename {09-nodejs-y-la-web => 109-nodejs-y-la-web}/4-control-caja/client/index.html (97%) rename {14-rest-in-peace => 109-nodejs-y-la-web/4-control-caja}/client/lista.html (100%) rename {16-rest-sources => 109-nodejs-y-la-web/4-control-caja}/client/menuCtrl.js (100%) rename {09-nodejs-y-la-web => 109-nodejs-y-la-web}/4-control-caja/client/movimientosFactory.js (96%) rename {16-rest-sources => 109-nodejs-y-la-web/4-control-caja}/client/not-found.html (100%) rename {14-rest-in-peace => 109-nodejs-y-la-web/4-control-caja}/client/nuevo.html (100%) rename {15-rest-assured => 109-nodejs-y-la-web/4-control-caja}/client/total.html (100%) rename {09-nodejs-y-la-web => 109-nodejs-y-la-web}/4-control-caja/server.js (100%) rename {09-nodejs-y-la-web => 109-nodejs-y-la-web}/static/blog.html (100%) rename {09-nodejs-y-la-web => 109-nodejs-y-la-web}/static/estilo.css (100%) rename {09-nodejs-y-la-web => 109-nodejs-y-la-web}/static/simple.html (100%) rename {09-nodejs-y-la-web => 109-nodejs-y-la-web}/web.md (100%) rename {10-nodejs-promesas-y-modulos => 110-nodejs-promesas-y-modulos}/1-modulos-propios/1-app.js (100%) rename {10-nodejs-promesas-y-modulos => 110-nodejs-promesas-y-modulos}/1-modulos-propios/cuenta.js (100%) rename {10-nodejs-promesas-y-modulos => 110-nodejs-promesas-y-modulos}/1-modulos-propios/mates.js (100%) rename {10-nodejs-promesas-y-modulos => 110-nodejs-promesas-y-modulos}/2-operaciones-lentas/2-1-callback.js (100%) rename {10-nodejs-promesas-y-modulos => 110-nodejs-promesas-y-modulos}/2-operaciones-lentas/2-2-promesas.js (100%) rename {10-nodejs-promesas-y-modulos => 110-nodejs-promesas-y-modulos}/2-operaciones-lentas/package.json (100%) rename {10-nodejs-promesas-y-modulos => 110-nodejs-promesas-y-modulos}/pro.md (100%) rename {11-express => 111-express}/1-hola-express.js (100%) rename {11-express => 111-express}/2-middleware.js (100%) rename {11-express => 111-express}/express.md (100%) rename {11-express => 111-express}/package.json (100%) rename {11-express => 111-express}/static/simple.html (100%) rename {12-rutas-con-express => 112-rutas-con-express}/1-rutas.js (100%) rename {12-rutas-con-express => 112-rutas-con-express}/2-parametros/matematicas.js (100%) rename {12-rutas-con-express => 112-rutas-con-express}/2-parametros/parametros.js (100%) rename {12-rutas-con-express => 112-rutas-con-express}/package.json (100%) rename {12-rutas-con-express => 112-rutas-con-express}/rutas.md (100%) rename {13-api-restfull-con-express => 113-api-restfull-con-express}/1-rest-crud.js (100%) rename {13-api-restfull-con-express => 113-api-restfull-con-express}/API-REST.md (100%) rename {13-api-restfull-con-express => 113-api-restfull-con-express}/package.json (100%) rename {14-rest-in-peace => 114-rest-in-peace}/client/app.js (100%) rename {14-rest-in-peace => 114-rest-in-peace}/client/cajaCtrl.js (100%) rename {14-rest-in-peace => 114-rest-in-peace}/client/index.html (100%) rename {15-rest-assured => 114-rest-in-peace}/client/lista.html (100%) rename {17-rest-advance => 114-rest-in-peace}/client/menuCtrl.js (100%) rename {14-rest-in-peace => 114-rest-in-peace}/client/movimientosFactory.js (100%) rename {17-rest-advance => 114-rest-in-peace}/client/not-found.html (100%) rename {15-rest-assured => 114-rest-in-peace}/client/nuevo.html (100%) rename {16-rest-sources => 114-rest-in-peace}/client/total.html (100%) rename {14-rest-in-peace => 114-rest-in-peace}/package.json (100%) rename {14-rest-in-peace => 114-rest-in-peace}/server.js (100%) rename {15-rest-assured => 115-rest-assured}/client/app.js (100%) rename {15-rest-assured => 115-rest-assured}/client/appSecurity.js (100%) rename {15-rest-assured => 115-rest-assured}/client/cajaCtrl.js (100%) rename {15-rest-assured => 115-rest-assured}/client/index.html (100%) rename {16-rest-sources => 115-rest-assured}/client/lista.html (100%) rename {15-rest-assured => 115-rest-assured}/client/maestrosFactory.js (100%) rename {18-servicios => 115-rest-assured}/client/menuCtrl.js (100%) rename {15-rest-assured => 115-rest-assured}/client/movimientosFactory.js (100%) rename {18-servicios => 115-rest-assured}/client/not-found.html (100%) rename {16-rest-sources => 115-rest-assured}/client/nuevo.html (100%) rename {16-rest-sources => 115-rest-assured}/client/registro.html (100%) rename {15-rest-assured => 115-rest-assured}/client/registroCtrl.js (100%) rename {17-rest-advance => 115-rest-assured}/client/total.html (100%) rename {15-rest-assured => 115-rest-assured}/package.json (100%) rename {15-rest-assured => 115-rest-assured}/server.js (100%) rename {16-rest-sources => 116-rest-sources}/client/app.js (100%) rename {16-rest-sources => 116-rest-sources}/client/appSecurity.js (100%) rename {16-rest-sources => 116-rest-sources}/client/cajaCtrl.js (100%) rename {16-rest-sources => 116-rest-sources}/client/index.html (100%) rename {09-nodejs-y-la-web/4-control-caja => 116-rest-sources}/client/lista.html (97%) rename {16-rest-sources => 116-rest-sources}/client/maestrosFactory.js (100%) rename {19-angular-con-filtro => 116-rest-sources}/client/menuCtrl.js (100%) rename {16-rest-sources => 116-rest-sources}/client/movimientosFactory.js (100%) rename {19-angular-con-filtro => 116-rest-sources}/client/not-found.html (100%) rename {17-rest-advance => 116-rest-sources}/client/nuevo.html (100%) rename {17-rest-advance => 116-rest-sources}/client/registro.html (100%) rename {18-servicios => 116-rest-sources}/client/registroCtrl.js (100%) rename {18-servicios => 116-rest-sources}/client/total.html (100%) rename {16-rest-sources => 116-rest-sources}/package.json (100%) rename {16-rest-sources => 116-rest-sources}/server.js (100%) rename {17-rest-advance => 117-rest-advance}/client/app.js (100%) rename {18-servicios => 117-rest-advance}/client/appHttpLog.js (100%) rename {19-angular-con-filtro => 117-rest-advance}/client/appSecurity.js (100%) rename {18-servicios => 117-rest-advance}/client/cajaCtrl.js (100%) rename {17-rest-advance => 117-rest-advance}/client/index.html (100%) rename {17-rest-advance => 117-rest-advance}/client/lista.html (100%) rename {18-servicios => 117-rest-advance}/client/maestrosFactory.js (100%) rename {20-directivas => 117-rest-advance}/client/menuCtrl.js (100%) rename {17-rest-advance => 117-rest-advance}/client/movimiento.html (100%) rename {17-rest-advance => 117-rest-advance}/client/movimientoCtrl.js (100%) rename {18-servicios => 117-rest-advance}/client/movimientosFactory.js (100%) rename {20-directivas => 117-rest-advance}/client/not-found.html (100%) rename {18-servicios => 117-rest-advance}/client/nuevo.html (100%) rename {18-servicios => 117-rest-advance}/client/registro.html (100%) rename {19-angular-con-filtro => 117-rest-advance}/client/registroCtrl.js (100%) rename {19-angular-con-filtro => 117-rest-advance}/client/total.html (100%) rename {17-rest-advance => 117-rest-advance}/package.json (100%) rename {17-rest-advance => 117-rest-advance}/server.js (100%) rename {18-servicios => 118-servicios}/client/app.js (100%) rename {19-angular-con-filtro => 118-servicios}/client/appHttpLog.js (100%) rename {20-directivas => 118-servicios}/client/appSecurity.js (100%) rename {19-angular-con-filtro => 118-servicios}/client/cajaCtrl.js (100%) rename {18-servicios => 118-servicios}/client/index.html (100%) rename {18-servicios => 118-servicios}/client/lista.html (100%) rename {19-angular-con-filtro => 118-servicios}/client/maestrosFactory.js (100%) rename {21-organizacion/client/_comun => 118-servicios/client}/menuCtrl.js (100%) rename {18-servicios => 118-servicios}/client/movimiento.html (100%) rename {18-servicios => 118-servicios}/client/movimientoCtrl.js (100%) rename {19-angular-con-filtro => 118-servicios}/client/movimientosFactory.js (100%) rename {21-organizacion/client/_comun => 118-servicios/client}/not-found.html (100%) rename {09-nodejs-y-la-web/4-control-caja => 118-servicios}/client/nuevo.html (98%) rename {19-angular-con-filtro => 118-servicios}/client/registro.html (100%) rename {20-directivas => 118-servicios}/client/registroCtrl.js (100%) rename {09-nodejs-y-la-web/4-control-caja => 118-servicios}/client/total.html (97%) rename {18-servicios => 118-servicios}/package.json (100%) rename {18-servicios => 118-servicios}/server.js (100%) delete mode 100644 19-angular-con-filtro/client/app.js delete mode 100644 19-angular-con-filtro/client/index.html delete mode 100644 19-angular-con-filtro/client/lista.html delete mode 100644 19-angular-con-filtro/client/movimiento.html delete mode 100644 19-angular-con-filtro/client/nuevo.html delete mode 100644 20-directivas/client/appHttpLog.js delete mode 100644 20-directivas/client/cajaCtrl.js delete mode 100644 20-directivas/client/maestrosFactory.js delete mode 100644 20-directivas/client/movimientoCtrl.js delete mode 100644 20-directivas/client/movimientosFactory.js delete mode 100644 20-directivas/client/registro.html delete mode 100644 20-directivas/package.json delete mode 100644 20-directivas/server.js delete mode 100644 21-organizacion/client/_comun/appSecurity.js delete mode 100644 21-organizacion/client/registro/registroCtrl.js delete mode 100644 21-organizacion/server/settings.js diff --git a/04-tres-vistas-y-un-controlador-spa1/server.js b/04-tres-vistas-y-un-controlador-spa1/server.js deleted file mode 100644 index 9d387ed..0000000 --- a/04-tres-vistas-y-un-controlador-spa1/server.js +++ /dev/null @@ -1,49 +0,0 @@ -"use strict"; -var http = require('http'), - url = require('url'), - path = require('path'), - fs = require('fs'); - -var mimeTypes = { - "html": "text/html", - "png": "image/png", - "js": "text/javascript", - "css": "text/css" -}; - -http.createServer(staticServer).listen(3000); - -function staticServer(req, res) { - var pathname = url.parse(req.url).pathname; - if (pathname === "/") { - pathname = "index.html"; - } - fileServer(res, pathname); -} - -function fileServer(res, pathname) { - var filename = path.join(process.cwd(), pathname); - var extension = path.extname(filename).split(".")[1]; - if (!extension) { - extension = "html"; - filename += "." + extension; - } - fs.exists(filename, function (exists) { - if (!exists) { - notFound(res); - } else { - res.writeHead(200, { - 'Content-Type': mimeTypes[extension] - }); - fs.createReadStream(filename).pipe(res); - } - }); -} - -function notFound(res) { - res.writeHead(404, { - 'Content-Type': 'text/html' - }); - res.write("

404

Nada por aquí"); - res.end(); -} diff --git a/05-tres-vistas-un-controladory-una-factoria-spa2/server.js b/05-tres-vistas-un-controladory-una-factoria-spa2/server.js deleted file mode 100644 index 9d387ed..0000000 --- a/05-tres-vistas-un-controladory-una-factoria-spa2/server.js +++ /dev/null @@ -1,49 +0,0 @@ -"use strict"; -var http = require('http'), - url = require('url'), - path = require('path'), - fs = require('fs'); - -var mimeTypes = { - "html": "text/html", - "png": "image/png", - "js": "text/javascript", - "css": "text/css" -}; - -http.createServer(staticServer).listen(3000); - -function staticServer(req, res) { - var pathname = url.parse(req.url).pathname; - if (pathname === "/") { - pathname = "index.html"; - } - fileServer(res, pathname); -} - -function fileServer(res, pathname) { - var filename = path.join(process.cwd(), pathname); - var extension = path.extname(filename).split(".")[1]; - if (!extension) { - extension = "html"; - filename += "." + extension; - } - fs.exists(filename, function (exists) { - if (!exists) { - notFound(res); - } else { - res.writeHead(200, { - 'Content-Type': mimeTypes[extension] - }); - fs.createReadStream(filename).pipe(res); - } - }); -} - -function notFound(res) { - res.writeHead(404, { - 'Content-Type': 'text/html' - }); - res.write("

404

Nada por aquí"); - res.end(); -} diff --git a/06a-ui-una-ruta-mejor/app.js b/06a-ui-una-ruta-mejor/app.js index 4df4d53..03aec28 100644 --- a/06a-ui-una-ruta-mejor/app.js +++ b/06a-ui-una-ruta-mejor/app.js @@ -4,26 +4,26 @@ angular.module('cashFlow', ['ui.router']); // las rutas ahora se maneja con el concepto de estado angular.module('cashFlow').config(function ($stateProvider) { // Las rutas pasan a ser opcionales, - // en la práctica sólo se usan si vienen de aplicaciones externas y por cuestiones de SEO - $stateProvider - .state('total', { - url: '', - controller: 'CajaCtrl as caja', - templateUrl: 'total.html' - }) - .state('nuevo', { + // en la práctica sólo se usan si vienen de aplicaciones externas y por cuestiones de SEO + $stateProvider + .state('total', { + url: '/', + controller: 'CajaCtrl as caja', + templateUrl: 'total.html' + }) + .state('nuevo', { url: '/nuevo', controller: 'CajaCtrl as caja', - templateUrl: 'nuevo.html' - }) - .state('lista', { - url: '/lista', + templateUrl: 'nuevo.html' + }) + .state('lista', { + url: '/lista', controller: 'CajaCtrl as caja', - templateUrl: 'lista.html' - }).state('not-found', { - url: '*path', - templateUrl: 'not-found.html' - }); - // realmente no existe un estado 'not found', - // pero puede llegar rutas no controladas + templateUrl: 'lista.html' + }).state('not-found', { + url: '*path', + templateUrl: 'not-found.html' + }); + // realmente no existe un estado 'not found', + // pero puede llegar rutas no controladas }); diff --git a/06a-ui-una-ruta-mejor/cajaCtrl.js b/06a-ui-una-ruta-mejor/cajaCtrl.js index 7a2352e..102c603 100644 --- a/06a-ui-una-ruta-mejor/cajaCtrl.js +++ b/06a-ui-una-ruta-mejor/cajaCtrl.js @@ -1,40 +1,28 @@ (function () { + angular.module('cashFlow').controller('CajaCtrl', cajaCtrl); - var cajaCtrl = function (movimientosFactory) { - var vm = this; + function cajaCtrl(movimientosFactory, maestrosService) { + var vm = this; - vm.titulo = "Controla tu Cash Flow"; - vm.maestros = { - categoriasIngresos: ['Nómina', 'Ventas', 'Intereses Depósitos'], - categoriasGastos: ['Hipotéca', 'Compras', 'Impuestos'] - }; - vm.nuevoMovimiento = { - esIngreso: 1, - esGasto: 0, - importe: 0, - fecha: new Date() - }; + vm.titulo = "Controla tu Cash Flow"; + vm.maestros = maestrosService.categorias; + vm.nuevoMovimiento = { + esIngreso: 1, + esGasto: 0, + importe: 0, + fecha: new Date() + }; - vm.movimientos = movimientosFactory.getMovimientos(); - vm.total = movimientosFactory.getTotal(); + vm.movimientos = movimientosFactory.getMovimientos(); + vm.total = movimientosFactory.getTotal(); + + vm.guardarMovimiento = function () { + var auxCopyMov = angular.copy(vm.nuevoMovimiento); + movimientosFactory.postMovimiento(auxCopyMov); + vm.nuevoMovimiento.importe = 0; + } + vm.balance = movimientosFactory.balance; + vm.tipo = movimientosFactory.tipo; + } - vm.guardarMovimiento = function () { - if(vm.nuevoMovimiento.esIngreso){ - vm.total.ingresos += vm.nuevoMovimiento.importe; - }else{ - vm.total.gastos += vm.nuevoMovimiento.importe; - } - var auxCopyMov = angular.copy(vm.nuevoMovimiento); - auxCopyMov.tipo = vm.tipo(auxCopyMov); - vm.movimientos.push(auxCopyMov); - vm.nuevoMovimiento.importe = 0; - } - vm.balance = function () { - return vm.total.ingresos - vm.total.gastos - } - vm.tipo = function (movimiento) { - return movimiento.esIngreso && 'Ingreso' || 'Gasto' - } - } - angular.module('cashFlow').controller('CajaCtrl', cajaCtrl); }()); diff --git a/06a-ui-una-ruta-mejor/index.html b/06a-ui-una-ruta-mejor/index.html index 6197093..c6399af 100644 --- a/06a-ui-una-ruta-mejor/index.html +++ b/06a-ui-una-ruta-mejor/index.html @@ -1,50 +1,54 @@ + - Control de Caja - - - - - - - - - - + Control de Caja + + + + + + + + + + + - -
- - -
- - +
+ + +
+ + - - - - - + + + + + + + diff --git a/06a-ui-una-ruta-mejor/maestrosService.js b/06a-ui-una-ruta-mejor/maestrosService.js new file mode 100644 index 0000000..c4ca261 --- /dev/null +++ b/06a-ui-una-ruta-mejor/maestrosService.js @@ -0,0 +1,12 @@ +(function () { + + angular.module('cashFlow').service('maestrosService', maestrosService); + + function maestrosService() { + this.categorias = { + categoriasIngresos: ['Nómina', 'Ventas', 'Intereses Depósitos'], + categoriasGastos: ['Hipotéca', 'Compras', 'Impuestos'] + }; + } + +}()); diff --git a/06a-ui-una-ruta-mejor/menuCtrl.js b/06a-ui-una-ruta-mejor/menuCtrl.js index a9dbd50..2601a13 100644 --- a/06a-ui-una-ruta-mejor/menuCtrl.js +++ b/06a-ui-una-ruta-mejor/menuCtrl.js @@ -1,10 +1,10 @@ (function () { + angular.module('cashFlow').controller('MenuCtrl', menuCtrl); // Ahora el sercvicio se llama $state - var menuCtrl = function ($state) { + function menuCtrl($state) { this.isActive = function (estado) { // Tiene funciones más amigables para consultar return $state.is(estado); } } - angular.module('cashFlow').controller('MenuCtrl', menuCtrl); }()); diff --git a/06a-ui-una-ruta-mejor/movimientosFactory.js b/06a-ui-una-ruta-mejor/movimientosFactory.js index 3d5c939..bdeff8a 100644 --- a/06a-ui-una-ruta-mejor/movimientosFactory.js +++ b/06a-ui-una-ruta-mejor/movimientosFactory.js @@ -1,26 +1,43 @@ (function () { - var movimientosFactory =   function ()  { + + angular.module('cashFlow').factory('movimientosFactory', movimientosFactory); + + function movimientosFactory()  { + var movimientos = []; + var total = { ingresos: 0, gastos: 0 }; + var result  =   {}; - var factory  =   {}; - factory.getMovimientos =   function ()  { + + result.getMovimientos =   function ()  { return movimientos; }; - factory.getTotal =   function ()  { + + result.getTotal =   function ()  { return total; }; - factory.postMovimiento =   function (movimiento)  { + + result.postMovimiento =   function (movimiento)  { movimientos.push(movimiento); total.ingresos += movimiento.esIngreso * movimiento.importe; total.gastos += movimiento.esGasto * movimiento.importe; }; - return factory; + + result.balance = function () { + return total.ingresos - total.gastos + } + + result.tipo = function (movimiento) { + return movimiento.esIngreso && 'Ingreso' || 'Gasto' + } + + + return result; }; - angular.module('cashFlow').factory('movimientosFactory', movimientosFactory); }()); diff --git a/06a-ui-una-ruta-mejor/server.js b/06a-ui-una-ruta-mejor/server.js deleted file mode 100644 index 9d387ed..0000000 --- a/06a-ui-una-ruta-mejor/server.js +++ /dev/null @@ -1,49 +0,0 @@ -"use strict"; -var http = require('http'), - url = require('url'), - path = require('path'), - fs = require('fs'); - -var mimeTypes = { - "html": "text/html", - "png": "image/png", - "js": "text/javascript", - "css": "text/css" -}; - -http.createServer(staticServer).listen(3000); - -function staticServer(req, res) { - var pathname = url.parse(req.url).pathname; - if (pathname === "/") { - pathname = "index.html"; - } - fileServer(res, pathname); -} - -function fileServer(res, pathname) { - var filename = path.join(process.cwd(), pathname); - var extension = path.extname(filename).split(".")[1]; - if (!extension) { - extension = "html"; - filename += "." + extension; - } - fs.exists(filename, function (exists) { - if (!exists) { - notFound(res); - } else { - res.writeHead(200, { - 'Content-Type': mimeTypes[extension] - }); - fs.createReadStream(filename).pipe(res); - } - }); -} - -function notFound(res) { - res.writeHead(404, { - 'Content-Type': 'text/html' - }); - res.write("

404

Nada por aquí"); - res.end(); -} diff --git a/06a-ui-una-ruta-mejor/total.html b/06a-ui-una-ruta-mejor/total.html index 5fa080d..3d42a21 100644 --- a/06a-ui-una-ruta-mejor/total.html +++ b/06a-ui-una-ruta-mejor/total.html @@ -1,38 +1,35 @@ - -
- -

{{ caja.titulo }}

-

Comprueba de dónde viene y a dónde va tu dinero.

-
-
-
-

+

{{ caja.titulo }}

+

Comprueba de dónde viene y a dónde va tu dinero.

+
+
+
+

{{ caja.total.ingresos | number:2 }} €

-

Total ingresos

- Acumulado -
-
-

+

Total ingresos

+ Acumulado +
+
+

{{ caja.total.gastos | number:2 }} €

-

Total gastos

- Acumulado -
-
-

+

Total gastos

+ Acumulado +
+
+

{{ caja.balance() | number:2 }} €

-

Balance

- Ingresos-Gastos -
-
-
+

Balance

+ Ingresos-Gastos +
+
+
diff --git a/0719-angular-con-filtro/app.js b/0719-angular-con-filtro/app.js new file mode 100644 index 0000000..c8450b1 --- /dev/null +++ b/0719-angular-con-filtro/app.js @@ -0,0 +1,24 @@ +// tenemos que agregar la dependencia hacia el nuevo módulo de filtros +angular.module('cashFlow', ['ui.router', 'abFiltros']); + +angular.module('cashFlow').config(function ($stateProvider) { + $stateProvider + .state('total', { + url: '/', + controller: 'CajaCtrl as caja', + templateUrl: 'total.html' + }) + .state('nuevo', { + url: '/nuevo', + controller: 'CajaCtrl as caja', + templateUrl: 'nuevo.html' + }) + .state('lista', { + url: '/lista', + controller: 'CajaCtrl as caja', + templateUrl: 'lista.html' + }).state('not-found', { + url: '*path', + templateUrl: 'not-found.html' + }); +}); diff --git a/0719-angular-con-filtro/cajaCtrl.js b/0719-angular-con-filtro/cajaCtrl.js new file mode 100644 index 0000000..b8877e4 --- /dev/null +++ b/0719-angular-con-filtro/cajaCtrl.js @@ -0,0 +1,25 @@ +(function () { + var cajaCtrl = function (movimientosFactory, maestrosService) { + var vm = this; + + vm.titulo = "Controla tu Cash Flow"; + vm.maestros = maestrosService.categorias; + vm.nuevoMovimiento = { + esIngreso: 1, + esGasto: 0, + importe: 0, + fecha: new Date() + }; + vm.movimientos = movimientosFactory.getMovimientos(); + vm.total = movimientosFactory.getTotal(); + + vm.guardarMovimiento = function () { + var auxCopyMov = angular.copy(vm.nuevoMovimiento); + movimientosFactory.postMovimiento(auxCopyMov); + vm.nuevoMovimiento.importe = 0; + } + vm.balance = movimientosFactory.balance; + vm.tipo = movimientosFactory.tipo; + } + angular.module('cashFlow').controller('CajaCtrl', cajaCtrl); +}()); diff --git a/20-directivas/client/filtros.js b/0719-angular-con-filtro/filtros.js similarity index 99% rename from 20-directivas/client/filtros.js rename to 0719-angular-con-filtro/filtros.js index c96b9d5..cba89c7 100644 --- a/20-directivas/client/filtros.js +++ b/0719-angular-con-filtro/filtros.js @@ -1,6 +1,16 @@ (function () { + + // Podemos usar una sintaxis fluida y declarar todo en una solo línea + // Atención a la declaración de un nuevo módulo genérico + angular.module('abFiltros', []) + .filter('abLimpiarCadena', limpiarCadena) + .filter('abRecortar', recortar) + .filter('abRellenarVacios', rellenarVacios) + .filter('abGranImporte', granImporte); + // Los filtros se declaran como funciones que a su vez devuelven... funciones + // Esas funciones internas se aplican sobre los valores, // Tienen al menos un parámetro, que sirve de entrada @@ -73,12 +83,4 @@ }; return funcionFiltro; } - - // Podemos usar una sintaxis fluida y declarar todo en una solo línea - // Atención a la declaración de un nuevo módulo genérico - angular.module('abFiltros', []) - .filter('abLimpiarCadena', limpiarCadena) - .filter('abRecortar', recortar) - .filter('abRellenarVacios', rellenarVacios) - .filter('abGranImporte', granImporte); }()); diff --git a/0719-angular-con-filtro/index.html b/0719-angular-con-filtro/index.html new file mode 100644 index 0000000..ac7afe1 --- /dev/null +++ b/0719-angular-con-filtro/index.html @@ -0,0 +1,51 @@ + + + + Control de Caja + + + + + + + + + + + + + + + +
+ +
+ + + + + + + + + + + + + diff --git a/0719-angular-con-filtro/lista.html b/0719-angular-con-filtro/lista.html new file mode 100644 index 0000000..a780ec8 --- /dev/null +++ b/0719-angular-con-filtro/lista.html @@ -0,0 +1,29 @@ +
+

Estos son tus movimientos recientes.

+
+ + + + + + + + + + + + + + + + + + + + + + +
Fecha + TipoCategoríaImporte +
{{movimiento.fecha | date}}{{movimiento.tipo}}{{movimiento.categoria}}{{movimiento.importe | number:2}} €
+
diff --git a/0719-angular-con-filtro/maestrosService.js b/0719-angular-con-filtro/maestrosService.js new file mode 100644 index 0000000..6f36732 --- /dev/null +++ b/0719-angular-con-filtro/maestrosService.js @@ -0,0 +1,10 @@ +(function () { + angular.module('cashFlow').service('maestrosService', maestrosService); + + function maestrosService() { + this.categorias = { + categoriasIngresos: ['Nómina', 'Ventas', 'Intereses Depósitos'], + categoriasGastos: ['Hipotéca', 'Compras', 'Impuestos'] + }; + } +}()); diff --git a/0719-angular-con-filtro/menuCtrl.js b/0719-angular-con-filtro/menuCtrl.js new file mode 100644 index 0000000..4f7f90e --- /dev/null +++ b/0719-angular-con-filtro/menuCtrl.js @@ -0,0 +1,10 @@ +(function () { + angular.module('cashFlow').controller('MenuCtrl', menuCtrl); + + function menuCtrl($state) { + this.isActive = function (estado) { + return $state.is(estado); + } + } + +}()); diff --git a/0719-angular-con-filtro/movimientosFactory.js b/0719-angular-con-filtro/movimientosFactory.js new file mode 100644 index 0000000..bf394e0 --- /dev/null +++ b/0719-angular-con-filtro/movimientosFactory.js @@ -0,0 +1,38 @@ +(function () { + angular.module('cashFlow').factory('movimientosFactory', movimientosFactory); + + function movimientosFactory()  { + + var movimientos = []; + var total = { + ingresos: 0, + gastos: 0 + }; + var result  =   {}; + + result.getMovimientos =   function ()  { + return movimientos; + }; + + result.getTotal =   function ()  { + return total; + }; + + result.postMovimiento =   function (movimiento)  { + movimientos.push(movimiento); + total.ingresos += movimiento.esIngreso * movimiento.importe; + total.gastos += movimiento.esGasto * movimiento.importe; + }; + + result.balance = function () { + return total.ingresos - total.gastos + } + + result.tipo = function (movimiento) { + return movimiento.esIngreso && 'Ingreso' || 'Gasto' + } + + return result; + }; + +}()); diff --git a/09-nodejs-y-la-web/4-control-caja/client/not-found.html b/0719-angular-con-filtro/not-found.html similarity index 100% rename from 09-nodejs-y-la-web/4-control-caja/client/not-found.html rename to 0719-angular-con-filtro/not-found.html diff --git a/0719-angular-con-filtro/nuevo.html b/0719-angular-con-filtro/nuevo.html new file mode 100644 index 0000000..01a7442 --- /dev/null +++ b/0719-angular-con-filtro/nuevo.html @@ -0,0 +1,52 @@ +
+
+
+
+ Introduce tus movimientos +
+
+
+
+ +
+
+ + +
+
+
+
+ +
+ + +
+
+
+
+
+ +
+ +
+
+
+ +
+ +
+
+
+
+
+ +
+
+
+
diff --git a/14-rest-in-peace/client/total.html b/0719-angular-con-filtro/total.html similarity index 100% rename from 14-rest-in-peace/client/total.html rename to 0719-angular-con-filtro/total.html diff --git a/20-directivas/client/app.js b/0820-directivas/client/app.js similarity index 100% rename from 20-directivas/client/app.js rename to 0820-directivas/client/app.js diff --git a/17-rest-advance/client/appHttpLog.js b/0820-directivas/client/appHttpLog.js similarity index 100% rename from 17-rest-advance/client/appHttpLog.js rename to 0820-directivas/client/appHttpLog.js diff --git a/17-rest-advance/client/appSecurity.js b/0820-directivas/client/appSecurity.js similarity index 100% rename from 17-rest-advance/client/appSecurity.js rename to 0820-directivas/client/appSecurity.js diff --git a/17-rest-advance/client/cajaCtrl.js b/0820-directivas/client/cajaCtrl.js similarity index 100% rename from 17-rest-advance/client/cajaCtrl.js rename to 0820-directivas/client/cajaCtrl.js diff --git a/20-directivas/client/directivas.js b/0820-directivas/client/directivas.js similarity index 100% rename from 20-directivas/client/directivas.js rename to 0820-directivas/client/directivas.js diff --git a/19-angular-con-filtro/client/filtros.js b/0820-directivas/client/filtros.js similarity index 100% rename from 19-angular-con-filtro/client/filtros.js rename to 0820-directivas/client/filtros.js diff --git a/20-directivas/client/index.html b/0820-directivas/client/index.html similarity index 100% rename from 20-directivas/client/index.html rename to 0820-directivas/client/index.html diff --git a/20-directivas/client/lista.html b/0820-directivas/client/lista.html similarity index 100% rename from 20-directivas/client/lista.html rename to 0820-directivas/client/lista.html diff --git a/17-rest-advance/client/maestrosFactory.js b/0820-directivas/client/maestrosFactory.js similarity index 100% rename from 17-rest-advance/client/maestrosFactory.js rename to 0820-directivas/client/maestrosFactory.js diff --git a/14-rest-in-peace/client/menuCtrl.js b/0820-directivas/client/menuCtrl.js similarity index 100% rename from 14-rest-in-peace/client/menuCtrl.js rename to 0820-directivas/client/menuCtrl.js diff --git a/20-directivas/client/movimiento.html b/0820-directivas/client/movimiento.html similarity index 100% rename from 20-directivas/client/movimiento.html rename to 0820-directivas/client/movimiento.html diff --git a/19-angular-con-filtro/client/movimientoCtrl.js b/0820-directivas/client/movimientoCtrl.js similarity index 100% rename from 19-angular-con-filtro/client/movimientoCtrl.js rename to 0820-directivas/client/movimientoCtrl.js diff --git a/17-rest-advance/client/movimientosFactory.js b/0820-directivas/client/movimientosFactory.js similarity index 100% rename from 17-rest-advance/client/movimientosFactory.js rename to 0820-directivas/client/movimientosFactory.js diff --git a/14-rest-in-peace/client/not-found.html b/0820-directivas/client/not-found.html similarity index 100% rename from 14-rest-in-peace/client/not-found.html rename to 0820-directivas/client/not-found.html diff --git a/20-directivas/client/nuevo.html b/0820-directivas/client/nuevo.html similarity index 100% rename from 20-directivas/client/nuevo.html rename to 0820-directivas/client/nuevo.html diff --git a/15-rest-assured/client/registro.html b/0820-directivas/client/registro.html similarity index 100% rename from 15-rest-assured/client/registro.html rename to 0820-directivas/client/registro.html diff --git a/16-rest-sources/client/registroCtrl.js b/0820-directivas/client/registroCtrl.js similarity index 100% rename from 16-rest-sources/client/registroCtrl.js rename to 0820-directivas/client/registroCtrl.js diff --git a/20-directivas/client/total.html b/0820-directivas/client/total.html similarity index 100% rename from 20-directivas/client/total.html rename to 0820-directivas/client/total.html diff --git a/20-directivas/client/tpl-cabecera.html b/0820-directivas/client/tpl-cabecera.html similarity index 100% rename from 20-directivas/client/tpl-cabecera.html rename to 0820-directivas/client/tpl-cabecera.html diff --git a/20-directivas/client/tpl-fila-movimiento.html b/0820-directivas/client/tpl-fila-movimiento.html similarity index 100% rename from 20-directivas/client/tpl-fila-movimiento.html rename to 0820-directivas/client/tpl-fila-movimiento.html diff --git a/20-directivas/client/tpl-valoracion.html b/0820-directivas/client/tpl-valoracion.html similarity index 100% rename from 20-directivas/client/tpl-valoracion.html rename to 0820-directivas/client/tpl-valoracion.html diff --git a/20-directivas/client/valoracion.js b/0820-directivas/client/valoracion.js similarity index 100% rename from 20-directivas/client/valoracion.js rename to 0820-directivas/client/valoracion.js diff --git a/20-directivas/directivas.md b/0820-directivas/directivas.md similarity index 100% rename from 20-directivas/directivas.md rename to 0820-directivas/directivas.md diff --git a/19-angular-con-filtro/package.json b/0820-directivas/package.json similarity index 100% rename from 19-angular-con-filtro/package.json rename to 0820-directivas/package.json diff --git a/20-directivas/recursos.md b/0820-directivas/recursos.md similarity index 100% rename from 20-directivas/recursos.md rename to 0820-directivas/recursos.md diff --git a/19-angular-con-filtro/server.js b/0820-directivas/server.js similarity index 100% rename from 19-angular-con-filtro/server.js rename to 0820-directivas/server.js diff --git a/09-nodejs-y-la-web/4-control-caja/client/menuCtrl.js b/09-nodejs-y-la-web/4-control-caja/client/menuCtrl.js deleted file mode 100644 index 9607956..0000000 --- a/09-nodejs-y-la-web/4-control-caja/client/menuCtrl.js +++ /dev/null @@ -1,8 +0,0 @@ -(function () { - var menuCtrl = function ($state) { - this.isActive = function (estado) { - return $state.is(estado); - } - } - angular.module('controlCajaApp').controller('MenuCtrl',menuCtrl); -}()); \ No newline at end of file diff --git a/21-organizacion/client/_comun/app.js b/0921-organizacion/client/_comun/app.js similarity index 100% rename from 21-organizacion/client/_comun/app.js rename to 0921-organizacion/client/_comun/app.js diff --git a/21-organizacion/client/_comun/appHttpLog.js b/0921-organizacion/client/_comun/appHttpLog.js similarity index 100% rename from 21-organizacion/client/_comun/appHttpLog.js rename to 0921-organizacion/client/_comun/appHttpLog.js diff --git a/18-servicios/client/appSecurity.js b/0921-organizacion/client/_comun/appSecurity.js similarity index 100% rename from 18-servicios/client/appSecurity.js rename to 0921-organizacion/client/_comun/appSecurity.js diff --git a/15-rest-assured/client/menuCtrl.js b/0921-organizacion/client/_comun/menuCtrl.js similarity index 100% rename from 15-rest-assured/client/menuCtrl.js rename to 0921-organizacion/client/_comun/menuCtrl.js diff --git a/15-rest-assured/client/not-found.html b/0921-organizacion/client/_comun/not-found.html similarity index 100% rename from 15-rest-assured/client/not-found.html rename to 0921-organizacion/client/_comun/not-found.html diff --git a/21-organizacion/client/_comun/states.js b/0921-organizacion/client/_comun/states.js similarity index 100% rename from 21-organizacion/client/_comun/states.js rename to 0921-organizacion/client/_comun/states.js diff --git a/21-organizacion/client/controlcaja/cajaCtrl.js b/0921-organizacion/client/controlcaja/cajaCtrl.js similarity index 100% rename from 21-organizacion/client/controlcaja/cajaCtrl.js rename to 0921-organizacion/client/controlcaja/cajaCtrl.js diff --git a/21-organizacion/client/controlcaja/lista.html b/0921-organizacion/client/controlcaja/lista.html similarity index 100% rename from 21-organizacion/client/controlcaja/lista.html rename to 0921-organizacion/client/controlcaja/lista.html diff --git a/21-organizacion/client/controlcaja/nuevo.html b/0921-organizacion/client/controlcaja/nuevo.html similarity index 100% rename from 21-organizacion/client/controlcaja/nuevo.html rename to 0921-organizacion/client/controlcaja/nuevo.html diff --git a/21-organizacion/client/controlcaja/total.html b/0921-organizacion/client/controlcaja/total.html similarity index 100% rename from 21-organizacion/client/controlcaja/total.html rename to 0921-organizacion/client/controlcaja/total.html diff --git a/21-organizacion/client/data/maestrosFactory.js b/0921-organizacion/client/data/maestrosFactory.js similarity index 100% rename from 21-organizacion/client/data/maestrosFactory.js rename to 0921-organizacion/client/data/maestrosFactory.js diff --git a/21-organizacion/client/data/movimientosFactory.js b/0921-organizacion/client/data/movimientosFactory.js similarity index 100% rename from 21-organizacion/client/data/movimientosFactory.js rename to 0921-organizacion/client/data/movimientosFactory.js diff --git a/21-organizacion/client/directivas/directivas.js b/0921-organizacion/client/directivas/directivas.js similarity index 100% rename from 21-organizacion/client/directivas/directivas.js rename to 0921-organizacion/client/directivas/directivas.js diff --git a/21-organizacion/client/directivas/tpl-cabecera.html b/0921-organizacion/client/directivas/tpl-cabecera.html similarity index 100% rename from 21-organizacion/client/directivas/tpl-cabecera.html rename to 0921-organizacion/client/directivas/tpl-cabecera.html diff --git a/21-organizacion/client/directivas/tpl-fila-movimiento.html b/0921-organizacion/client/directivas/tpl-fila-movimiento.html similarity index 100% rename from 21-organizacion/client/directivas/tpl-fila-movimiento.html rename to 0921-organizacion/client/directivas/tpl-fila-movimiento.html diff --git a/21-organizacion/client/directivas/valoracion/tpl-valoracion.html b/0921-organizacion/client/directivas/valoracion/tpl-valoracion.html similarity index 100% rename from 21-organizacion/client/directivas/valoracion/tpl-valoracion.html rename to 0921-organizacion/client/directivas/valoracion/tpl-valoracion.html diff --git a/21-organizacion/client/directivas/valoracion/valoracion.js b/0921-organizacion/client/directivas/valoracion/valoracion.js similarity index 100% rename from 21-organizacion/client/directivas/valoracion/valoracion.js rename to 0921-organizacion/client/directivas/valoracion/valoracion.js diff --git a/21-organizacion/client/filtros/filtros.js b/0921-organizacion/client/filtros/filtros.js similarity index 100% rename from 21-organizacion/client/filtros/filtros.js rename to 0921-organizacion/client/filtros/filtros.js diff --git a/21-organizacion/client/index.html b/0921-organizacion/client/index.html similarity index 100% rename from 21-organizacion/client/index.html rename to 0921-organizacion/client/index.html diff --git a/21-organizacion/client/movimiento/movimiento.html b/0921-organizacion/client/movimiento/movimiento.html similarity index 100% rename from 21-organizacion/client/movimiento/movimiento.html rename to 0921-organizacion/client/movimiento/movimiento.html diff --git a/21-organizacion/client/movimiento/movimientoCtrl.js b/0921-organizacion/client/movimiento/movimientoCtrl.js similarity index 100% rename from 21-organizacion/client/movimiento/movimientoCtrl.js rename to 0921-organizacion/client/movimiento/movimientoCtrl.js diff --git a/21-organizacion/client/registro/registro.html b/0921-organizacion/client/registro/registro.html similarity index 100% rename from 21-organizacion/client/registro/registro.html rename to 0921-organizacion/client/registro/registro.html diff --git a/17-rest-advance/client/registroCtrl.js b/0921-organizacion/client/registro/registroCtrl.js similarity index 100% rename from 17-rest-advance/client/registroCtrl.js rename to 0921-organizacion/client/registro/registroCtrl.js diff --git a/21-organizacion/server/api/maestrosAPI.js b/0921-organizacion/server/api/maestrosAPI.js similarity index 100% rename from 21-organizacion/server/api/maestrosAPI.js rename to 0921-organizacion/server/api/maestrosAPI.js diff --git a/21-organizacion/server/api/movimientosAPI.js b/0921-organizacion/server/api/movimientosAPI.js similarity index 100% rename from 21-organizacion/server/api/movimientosAPI.js rename to 0921-organizacion/server/api/movimientosAPI.js diff --git a/21-organizacion/server/api/seguridadAPI.js b/0921-organizacion/server/api/seguridadAPI.js similarity index 100% rename from 21-organizacion/server/api/seguridadAPI.js rename to 0921-organizacion/server/api/seguridadAPI.js diff --git a/21-organizacion/server/cash-flow.js b/0921-organizacion/server/cash-flow.js similarity index 100% rename from 21-organizacion/server/cash-flow.js rename to 0921-organizacion/server/cash-flow.js diff --git a/21-organizacion/server/data/movimientosData.js b/0921-organizacion/server/data/movimientosData.js similarity index 100% rename from 21-organizacion/server/data/movimientosData.js rename to 0921-organizacion/server/data/movimientosData.js diff --git a/21-organizacion/server/data/seguridadData.js b/0921-organizacion/server/data/seguridadData.js similarity index 100% rename from 21-organizacion/server/data/seguridadData.js rename to 0921-organizacion/server/data/seguridadData.js diff --git a/21-organizacion/server/express.js b/0921-organizacion/server/express.js similarity index 100% rename from 21-organizacion/server/express.js rename to 0921-organizacion/server/express.js diff --git a/21-organizacion/server/package.json b/0921-organizacion/server/package.json similarity index 100% rename from 21-organizacion/server/package.json rename to 0921-organizacion/server/package.json diff --git a/07-hola-mundo-nodejs/1-mi-script.js b/107-hola-mundo-nodejs/1-mi-script.js similarity index 100% rename from 07-hola-mundo-nodejs/1-mi-script.js rename to 107-hola-mundo-nodejs/1-mi-script.js diff --git a/07-hola-mundo-nodejs/2-javascript-normal-2.js b/107-hola-mundo-nodejs/2-javascript-normal-2.js similarity index 100% rename from 07-hola-mundo-nodejs/2-javascript-normal-2.js rename to 107-hola-mundo-nodejs/2-javascript-normal-2.js diff --git a/07-hola-mundo-nodejs/3-patrones.js b/107-hola-mundo-nodejs/3-patrones.js similarity index 100% rename from 07-hola-mundo-nodejs/3-patrones.js rename to 107-hola-mundo-nodejs/3-patrones.js diff --git a/07-hola-mundo-nodejs/4-el-proceso.js b/107-hola-mundo-nodejs/4-el-proceso.js similarity index 100% rename from 07-hola-mundo-nodejs/4-el-proceso.js rename to 107-hola-mundo-nodejs/4-el-proceso.js diff --git a/07-hola-mundo-nodejs/hola-mundo.md b/107-hola-mundo-nodejs/hola-mundo.md similarity index 100% rename from 07-hola-mundo-nodejs/hola-mundo.md rename to 107-hola-mundo-nodejs/hola-mundo.md diff --git a/08-nodejs-y-la-consola/1-consola-argumentos.js b/108-nodejs-y-la-consola/1-consola-argumentos.js similarity index 100% rename from 08-nodejs-y-la-consola/1-consola-argumentos.js rename to 108-nodejs-y-la-consola/1-consola-argumentos.js diff --git a/08-nodejs-y-la-consola/2-trabajo-consola-asincrona.js b/108-nodejs-y-la-consola/2-trabajo-consola-asincrona.js similarity index 100% rename from 08-nodejs-y-la-consola/2-trabajo-consola-asincrona.js rename to 108-nodejs-y-la-consola/2-trabajo-consola-asincrona.js diff --git a/08-nodejs-y-la-consola/3-consola-con-callbacks.js b/108-nodejs-y-la-consola/3-consola-con-callbacks.js similarity index 100% rename from 08-nodejs-y-la-consola/3-consola-con-callbacks.js rename to 108-nodejs-y-la-consola/3-consola-con-callbacks.js diff --git a/08-nodejs-y-la-consola/consola.md b/108-nodejs-y-la-consola/consola.md similarity index 100% rename from 08-nodejs-y-la-consola/consola.md rename to 108-nodejs-y-la-consola/consola.md diff --git a/09-nodejs-y-la-web/1-http.js b/109-nodejs-y-la-web/1-http.js similarity index 100% rename from 09-nodejs-y-la-web/1-http.js rename to 109-nodejs-y-la-web/1-http.js diff --git a/09-nodejs-y-la-web/2-web.js b/109-nodejs-y-la-web/2-web.js similarity index 100% rename from 09-nodejs-y-la-web/2-web.js rename to 109-nodejs-y-la-web/2-web.js diff --git a/09-nodejs-y-la-web/3-static.js b/109-nodejs-y-la-web/3-static.js similarity index 100% rename from 09-nodejs-y-la-web/3-static.js rename to 109-nodejs-y-la-web/3-static.js diff --git a/09-nodejs-y-la-web/4-control-caja/client/app.js b/109-nodejs-y-la-web/4-control-caja/client/app.js similarity index 90% rename from 09-nodejs-y-la-web/4-control-caja/client/app.js rename to 109-nodejs-y-la-web/4-control-caja/client/app.js index a29ee36..ba92109 100644 --- a/09-nodejs-y-la-web/4-control-caja/client/app.js +++ b/109-nodejs-y-la-web/4-control-caja/client/app.js @@ -1,26 +1,26 @@ -// tenemos que cambiar la dependencia hacia el nuevo módulo -angular.module('controlCajaApp', ['ui.router']); - -// las rutas ahora se maneja con el concepto de estado -angular.module('controlCajaApp').config(function ($stateProvider,$locationProvider) { - $stateProvider - .state('total', { - url: '/', - controller: 'CajaCtrl as caja', - templateUrl: 'total.html' - }) - .state('nuevo', { - url: '/nuevo', - controller: 'CajaCtrl as caja', - templateUrl: 'nuevo.html' - }) - .state('lista', { - url: '/lista', - controller: 'CajaCtrl as caja', - templateUrl: 'lista.html' - }).state('not-found', { - url: '*path', - controller: 'CajaCtrl as caja', - templateUrl: 'total.html' - }); -}); \ No newline at end of file +// tenemos que cambiar la dependencia hacia el nuevo módulo +angular.module('controlCajaApp', ['ui.router']); + +// las rutas ahora se maneja con el concepto de estado +angular.module('controlCajaApp').config(function ($stateProvider,$locationProvider) { + $stateProvider + .state('total', { + url: '/', + controller: 'CajaCtrl as caja', + templateUrl: 'total.html' + }) + .state('nuevo', { + url: '/nuevo', + controller: 'CajaCtrl as caja', + templateUrl: 'nuevo.html' + }) + .state('lista', { + url: '/lista', + controller: 'CajaCtrl as caja', + templateUrl: 'lista.html' + }).state('not-found', { + url: '*path', + controller: 'CajaCtrl as caja', + templateUrl: 'total.html' + }); +}); diff --git a/09-nodejs-y-la-web/4-control-caja/client/cajaCtrl.js b/109-nodejs-y-la-web/4-control-caja/client/cajaCtrl.js similarity index 96% rename from 09-nodejs-y-la-web/4-control-caja/client/cajaCtrl.js rename to 109-nodejs-y-la-web/4-control-caja/client/cajaCtrl.js index 3dfd43d..ed2ad4d 100644 --- a/09-nodejs-y-la-web/4-control-caja/client/cajaCtrl.js +++ b/109-nodejs-y-la-web/4-control-caja/client/cajaCtrl.js @@ -1,40 +1,40 @@ -(function () { - // El controlador ahora tiene una dependencia de la factoría - var cajaCtrl = function (movimientosFactory) { - var vm = this; - - vm.titulo = "Controla tu Cash Flow"; - vm.maestros = { - categoriasIngresos: ['Nómina', 'Ventas', 'Intereses Depósitos'], - categoriasGastos: ['Hipotéca', 'Compras', 'Impuestos'] - }; - vm.nuevoMovimiento = { - esIngreso: 1, - esGasto: 0, - importe: 0, - fecha: new Date() - }; - // La parte de datos que debe compartir la delega sobre la factoría - vm.movimientos = movimientosFactory.getMovimientos(); - vm.total = movimientosFactory.getTotal(); - - vm.guardarMovimiento = function () { - if(vm.nuevoMovimiento.esIngreso){ - vm.total.ingresos += vm.nuevoMovimiento.importe; - }else{ - vm.total.gastos += vm.nuevoMovimiento.importe; - } - var auxCopyMov = angular.copy(vm.nuevoMovimiento); - auxCopyMov.tipo = vm.tipo(auxCopyMov); - vm.movimientos.push(auxCopyMov); - vm.nuevoMovimiento.importe = 0; - } - vm.balance = function () { - return vm.total.ingresos - vm.total.gastos - } - vm.tipo = function (movimiento) { - return movimiento.esIngreso && 'Ingreso' || 'Gasto' - } - } - angular.module('controlCajaApp').controller('CajaCtrl', cajaCtrl); -}()); \ No newline at end of file +(function () { + // El controlador ahora tiene una dependencia de la factoría + var cajaCtrl = function (movimientosFactory) { + var vm = this; + + vm.titulo = "Controla tu Cash Flow"; + vm.maestros = { + categoriasIngresos: ['Nómina', 'Ventas', 'Intereses Depósitos'], + categoriasGastos: ['Hipotéca', 'Compras', 'Impuestos'] + }; + vm.nuevoMovimiento = { + esIngreso: 1, + esGasto: 0, + importe: 0, + fecha: new Date() + }; + // La parte de datos que debe compartir la delega sobre la factoría + vm.movimientos = movimientosFactory.getMovimientos(); + vm.total = movimientosFactory.getTotal(); + + vm.guardarMovimiento = function () { + if(vm.nuevoMovimiento.esIngreso){ + vm.total.ingresos += vm.nuevoMovimiento.importe; + }else{ + vm.total.gastos += vm.nuevoMovimiento.importe; + } + var auxCopyMov = angular.copy(vm.nuevoMovimiento); + auxCopyMov.tipo = vm.tipo(auxCopyMov); + vm.movimientos.push(auxCopyMov); + vm.nuevoMovimiento.importe = 0; + } + vm.balance = function () { + return vm.total.ingresos - vm.total.gastos + } + vm.tipo = function (movimiento) { + return movimiento.esIngreso && 'Ingreso' || 'Gasto' + } + } + angular.module('controlCajaApp').controller('CajaCtrl', cajaCtrl); +}()); diff --git a/09-nodejs-y-la-web/4-control-caja/client/index.html b/109-nodejs-y-la-web/4-control-caja/client/index.html similarity index 97% rename from 09-nodejs-y-la-web/4-control-caja/client/index.html rename to 109-nodejs-y-la-web/4-control-caja/client/index.html index a2c23fd..1b27f3b 100644 --- a/09-nodejs-y-la-web/4-control-caja/client/index.html +++ b/109-nodejs-y-la-web/4-control-caja/client/index.html @@ -1,48 +1,48 @@ - - - Control de Caja - - - - - - - - - - - - - - -
- -
- - - - - - - - - - - + + + Control de Caja + + + + + + + + + + + + + + +
+ +
+ + + + + + + + + + + diff --git a/14-rest-in-peace/client/lista.html b/109-nodejs-y-la-web/4-control-caja/client/lista.html similarity index 100% rename from 14-rest-in-peace/client/lista.html rename to 109-nodejs-y-la-web/4-control-caja/client/lista.html diff --git a/16-rest-sources/client/menuCtrl.js b/109-nodejs-y-la-web/4-control-caja/client/menuCtrl.js similarity index 100% rename from 16-rest-sources/client/menuCtrl.js rename to 109-nodejs-y-la-web/4-control-caja/client/menuCtrl.js diff --git a/09-nodejs-y-la-web/4-control-caja/client/movimientosFactory.js b/109-nodejs-y-la-web/4-control-caja/client/movimientosFactory.js similarity index 96% rename from 09-nodejs-y-la-web/4-control-caja/client/movimientosFactory.js rename to 109-nodejs-y-la-web/4-control-caja/client/movimientosFactory.js index 4f742b1..e92fe48 100644 --- a/09-nodejs-y-la-web/4-control-caja/client/movimientosFactory.js +++ b/109-nodejs-y-la-web/4-control-caja/client/movimientosFactory.js @@ -1,34 +1,34 @@ -(function () { - // Las factorías, y los servicios, son funciones estándar - // Una gran diferencia con los controladores es que son singleton - // Eso los convierte en un buen lugar para compartir datos - var movimientosFactory =   function ()  { - // el array de movimientos y el total lo mantiene la factoría - // de esta forma sobrevive a las recargas de controladores - var movimientos = []; - var total = { - ingresos: 0, - gastos: 0 - }; - - - var factory  =   {}; - factory.getMovimientos =   function ()  { - return movimientos; - }; - factory.getTotal =   function ()  { - return total; - }; - factory.postMovimiento =   function (movimiento)  { - movimientos.push(movimiento); - total.ingresos += movimiento.esIngreso * movimiento.importe; - total.gastos += movimiento.esGasto * movimiento.importe; - }; - // las factorias siempre devuelven objetos - // Estos objetos pueden contener funciones de lógica reutilizables - return factory; - }; - - angular.module('controlCajaApp').factory('movimientosFactory', movimientosFactory); -}()); - +(function () { + // Las factorías, y los servicios, son funciones estándar + // Una gran diferencia con los controladores es que son singleton + // Eso los convierte en un buen lugar para compartir datos + var movimientosFactory =   function ()  { + // el array de movimientos y el total lo mantiene la factoría + // de esta forma sobrevive a las recargas de controladores + var movimientos = []; + var total = { + ingresos: 0, + gastos: 0 + }; + + + var factory  =   {}; + factory.getMovimientos =   function ()  { + return movimientos; + }; + factory.getTotal =   function ()  { + return total; + }; + factory.postMovimiento =   function (movimiento)  { + movimientos.push(movimiento); + total.ingresos += movimiento.esIngreso * movimiento.importe; + total.gastos += movimiento.esGasto * movimiento.importe; + }; + // las factorias siempre devuelven objetos + // Estos objetos pueden contener funciones de lógica reutilizables + return factory; + }; + + angular.module('controlCajaApp').factory('movimientosFactory', movimientosFactory); +}()); + diff --git a/16-rest-sources/client/not-found.html b/109-nodejs-y-la-web/4-control-caja/client/not-found.html similarity index 100% rename from 16-rest-sources/client/not-found.html rename to 109-nodejs-y-la-web/4-control-caja/client/not-found.html diff --git a/14-rest-in-peace/client/nuevo.html b/109-nodejs-y-la-web/4-control-caja/client/nuevo.html similarity index 100% rename from 14-rest-in-peace/client/nuevo.html rename to 109-nodejs-y-la-web/4-control-caja/client/nuevo.html diff --git a/15-rest-assured/client/total.html b/109-nodejs-y-la-web/4-control-caja/client/total.html similarity index 100% rename from 15-rest-assured/client/total.html rename to 109-nodejs-y-la-web/4-control-caja/client/total.html diff --git a/09-nodejs-y-la-web/4-control-caja/server.js b/109-nodejs-y-la-web/4-control-caja/server.js similarity index 100% rename from 09-nodejs-y-la-web/4-control-caja/server.js rename to 109-nodejs-y-la-web/4-control-caja/server.js diff --git a/09-nodejs-y-la-web/static/blog.html b/109-nodejs-y-la-web/static/blog.html similarity index 100% rename from 09-nodejs-y-la-web/static/blog.html rename to 109-nodejs-y-la-web/static/blog.html diff --git a/09-nodejs-y-la-web/static/estilo.css b/109-nodejs-y-la-web/static/estilo.css similarity index 100% rename from 09-nodejs-y-la-web/static/estilo.css rename to 109-nodejs-y-la-web/static/estilo.css diff --git a/09-nodejs-y-la-web/static/simple.html b/109-nodejs-y-la-web/static/simple.html similarity index 100% rename from 09-nodejs-y-la-web/static/simple.html rename to 109-nodejs-y-la-web/static/simple.html diff --git a/09-nodejs-y-la-web/web.md b/109-nodejs-y-la-web/web.md similarity index 100% rename from 09-nodejs-y-la-web/web.md rename to 109-nodejs-y-la-web/web.md diff --git a/10-nodejs-promesas-y-modulos/1-modulos-propios/1-app.js b/110-nodejs-promesas-y-modulos/1-modulos-propios/1-app.js similarity index 100% rename from 10-nodejs-promesas-y-modulos/1-modulos-propios/1-app.js rename to 110-nodejs-promesas-y-modulos/1-modulos-propios/1-app.js diff --git a/10-nodejs-promesas-y-modulos/1-modulos-propios/cuenta.js b/110-nodejs-promesas-y-modulos/1-modulos-propios/cuenta.js similarity index 100% rename from 10-nodejs-promesas-y-modulos/1-modulos-propios/cuenta.js rename to 110-nodejs-promesas-y-modulos/1-modulos-propios/cuenta.js diff --git a/10-nodejs-promesas-y-modulos/1-modulos-propios/mates.js b/110-nodejs-promesas-y-modulos/1-modulos-propios/mates.js similarity index 100% rename from 10-nodejs-promesas-y-modulos/1-modulos-propios/mates.js rename to 110-nodejs-promesas-y-modulos/1-modulos-propios/mates.js diff --git a/10-nodejs-promesas-y-modulos/2-operaciones-lentas/2-1-callback.js b/110-nodejs-promesas-y-modulos/2-operaciones-lentas/2-1-callback.js similarity index 100% rename from 10-nodejs-promesas-y-modulos/2-operaciones-lentas/2-1-callback.js rename to 110-nodejs-promesas-y-modulos/2-operaciones-lentas/2-1-callback.js diff --git a/10-nodejs-promesas-y-modulos/2-operaciones-lentas/2-2-promesas.js b/110-nodejs-promesas-y-modulos/2-operaciones-lentas/2-2-promesas.js similarity index 100% rename from 10-nodejs-promesas-y-modulos/2-operaciones-lentas/2-2-promesas.js rename to 110-nodejs-promesas-y-modulos/2-operaciones-lentas/2-2-promesas.js diff --git a/10-nodejs-promesas-y-modulos/2-operaciones-lentas/package.json b/110-nodejs-promesas-y-modulos/2-operaciones-lentas/package.json similarity index 100% rename from 10-nodejs-promesas-y-modulos/2-operaciones-lentas/package.json rename to 110-nodejs-promesas-y-modulos/2-operaciones-lentas/package.json diff --git a/10-nodejs-promesas-y-modulos/pro.md b/110-nodejs-promesas-y-modulos/pro.md similarity index 100% rename from 10-nodejs-promesas-y-modulos/pro.md rename to 110-nodejs-promesas-y-modulos/pro.md diff --git a/11-express/1-hola-express.js b/111-express/1-hola-express.js similarity index 100% rename from 11-express/1-hola-express.js rename to 111-express/1-hola-express.js diff --git a/11-express/2-middleware.js b/111-express/2-middleware.js similarity index 100% rename from 11-express/2-middleware.js rename to 111-express/2-middleware.js diff --git a/11-express/express.md b/111-express/express.md similarity index 100% rename from 11-express/express.md rename to 111-express/express.md diff --git a/11-express/package.json b/111-express/package.json similarity index 100% rename from 11-express/package.json rename to 111-express/package.json diff --git a/11-express/static/simple.html b/111-express/static/simple.html similarity index 100% rename from 11-express/static/simple.html rename to 111-express/static/simple.html diff --git a/12-rutas-con-express/1-rutas.js b/112-rutas-con-express/1-rutas.js similarity index 100% rename from 12-rutas-con-express/1-rutas.js rename to 112-rutas-con-express/1-rutas.js diff --git a/12-rutas-con-express/2-parametros/matematicas.js b/112-rutas-con-express/2-parametros/matematicas.js similarity index 100% rename from 12-rutas-con-express/2-parametros/matematicas.js rename to 112-rutas-con-express/2-parametros/matematicas.js diff --git a/12-rutas-con-express/2-parametros/parametros.js b/112-rutas-con-express/2-parametros/parametros.js similarity index 100% rename from 12-rutas-con-express/2-parametros/parametros.js rename to 112-rutas-con-express/2-parametros/parametros.js diff --git a/12-rutas-con-express/package.json b/112-rutas-con-express/package.json similarity index 100% rename from 12-rutas-con-express/package.json rename to 112-rutas-con-express/package.json diff --git a/12-rutas-con-express/rutas.md b/112-rutas-con-express/rutas.md similarity index 100% rename from 12-rutas-con-express/rutas.md rename to 112-rutas-con-express/rutas.md diff --git a/13-api-restfull-con-express/1-rest-crud.js b/113-api-restfull-con-express/1-rest-crud.js similarity index 100% rename from 13-api-restfull-con-express/1-rest-crud.js rename to 113-api-restfull-con-express/1-rest-crud.js diff --git a/13-api-restfull-con-express/API-REST.md b/113-api-restfull-con-express/API-REST.md similarity index 100% rename from 13-api-restfull-con-express/API-REST.md rename to 113-api-restfull-con-express/API-REST.md diff --git a/13-api-restfull-con-express/package.json b/113-api-restfull-con-express/package.json similarity index 100% rename from 13-api-restfull-con-express/package.json rename to 113-api-restfull-con-express/package.json diff --git a/14-rest-in-peace/client/app.js b/114-rest-in-peace/client/app.js similarity index 100% rename from 14-rest-in-peace/client/app.js rename to 114-rest-in-peace/client/app.js diff --git a/14-rest-in-peace/client/cajaCtrl.js b/114-rest-in-peace/client/cajaCtrl.js similarity index 100% rename from 14-rest-in-peace/client/cajaCtrl.js rename to 114-rest-in-peace/client/cajaCtrl.js diff --git a/14-rest-in-peace/client/index.html b/114-rest-in-peace/client/index.html similarity index 100% rename from 14-rest-in-peace/client/index.html rename to 114-rest-in-peace/client/index.html diff --git a/15-rest-assured/client/lista.html b/114-rest-in-peace/client/lista.html similarity index 100% rename from 15-rest-assured/client/lista.html rename to 114-rest-in-peace/client/lista.html diff --git a/17-rest-advance/client/menuCtrl.js b/114-rest-in-peace/client/menuCtrl.js similarity index 100% rename from 17-rest-advance/client/menuCtrl.js rename to 114-rest-in-peace/client/menuCtrl.js diff --git a/14-rest-in-peace/client/movimientosFactory.js b/114-rest-in-peace/client/movimientosFactory.js similarity index 100% rename from 14-rest-in-peace/client/movimientosFactory.js rename to 114-rest-in-peace/client/movimientosFactory.js diff --git a/17-rest-advance/client/not-found.html b/114-rest-in-peace/client/not-found.html similarity index 100% rename from 17-rest-advance/client/not-found.html rename to 114-rest-in-peace/client/not-found.html diff --git a/15-rest-assured/client/nuevo.html b/114-rest-in-peace/client/nuevo.html similarity index 100% rename from 15-rest-assured/client/nuevo.html rename to 114-rest-in-peace/client/nuevo.html diff --git a/16-rest-sources/client/total.html b/114-rest-in-peace/client/total.html similarity index 100% rename from 16-rest-sources/client/total.html rename to 114-rest-in-peace/client/total.html diff --git a/14-rest-in-peace/package.json b/114-rest-in-peace/package.json similarity index 100% rename from 14-rest-in-peace/package.json rename to 114-rest-in-peace/package.json diff --git a/14-rest-in-peace/server.js b/114-rest-in-peace/server.js similarity index 100% rename from 14-rest-in-peace/server.js rename to 114-rest-in-peace/server.js diff --git a/15-rest-assured/client/app.js b/115-rest-assured/client/app.js similarity index 100% rename from 15-rest-assured/client/app.js rename to 115-rest-assured/client/app.js diff --git a/15-rest-assured/client/appSecurity.js b/115-rest-assured/client/appSecurity.js similarity index 100% rename from 15-rest-assured/client/appSecurity.js rename to 115-rest-assured/client/appSecurity.js diff --git a/15-rest-assured/client/cajaCtrl.js b/115-rest-assured/client/cajaCtrl.js similarity index 100% rename from 15-rest-assured/client/cajaCtrl.js rename to 115-rest-assured/client/cajaCtrl.js diff --git a/15-rest-assured/client/index.html b/115-rest-assured/client/index.html similarity index 100% rename from 15-rest-assured/client/index.html rename to 115-rest-assured/client/index.html diff --git a/16-rest-sources/client/lista.html b/115-rest-assured/client/lista.html similarity index 100% rename from 16-rest-sources/client/lista.html rename to 115-rest-assured/client/lista.html diff --git a/15-rest-assured/client/maestrosFactory.js b/115-rest-assured/client/maestrosFactory.js similarity index 100% rename from 15-rest-assured/client/maestrosFactory.js rename to 115-rest-assured/client/maestrosFactory.js diff --git a/18-servicios/client/menuCtrl.js b/115-rest-assured/client/menuCtrl.js similarity index 100% rename from 18-servicios/client/menuCtrl.js rename to 115-rest-assured/client/menuCtrl.js diff --git a/15-rest-assured/client/movimientosFactory.js b/115-rest-assured/client/movimientosFactory.js similarity index 100% rename from 15-rest-assured/client/movimientosFactory.js rename to 115-rest-assured/client/movimientosFactory.js diff --git a/18-servicios/client/not-found.html b/115-rest-assured/client/not-found.html similarity index 100% rename from 18-servicios/client/not-found.html rename to 115-rest-assured/client/not-found.html diff --git a/16-rest-sources/client/nuevo.html b/115-rest-assured/client/nuevo.html similarity index 100% rename from 16-rest-sources/client/nuevo.html rename to 115-rest-assured/client/nuevo.html diff --git a/16-rest-sources/client/registro.html b/115-rest-assured/client/registro.html similarity index 100% rename from 16-rest-sources/client/registro.html rename to 115-rest-assured/client/registro.html diff --git a/15-rest-assured/client/registroCtrl.js b/115-rest-assured/client/registroCtrl.js similarity index 100% rename from 15-rest-assured/client/registroCtrl.js rename to 115-rest-assured/client/registroCtrl.js diff --git a/17-rest-advance/client/total.html b/115-rest-assured/client/total.html similarity index 100% rename from 17-rest-advance/client/total.html rename to 115-rest-assured/client/total.html diff --git a/15-rest-assured/package.json b/115-rest-assured/package.json similarity index 100% rename from 15-rest-assured/package.json rename to 115-rest-assured/package.json diff --git a/15-rest-assured/server.js b/115-rest-assured/server.js similarity index 100% rename from 15-rest-assured/server.js rename to 115-rest-assured/server.js diff --git a/16-rest-sources/client/app.js b/116-rest-sources/client/app.js similarity index 100% rename from 16-rest-sources/client/app.js rename to 116-rest-sources/client/app.js diff --git a/16-rest-sources/client/appSecurity.js b/116-rest-sources/client/appSecurity.js similarity index 100% rename from 16-rest-sources/client/appSecurity.js rename to 116-rest-sources/client/appSecurity.js diff --git a/16-rest-sources/client/cajaCtrl.js b/116-rest-sources/client/cajaCtrl.js similarity index 100% rename from 16-rest-sources/client/cajaCtrl.js rename to 116-rest-sources/client/cajaCtrl.js diff --git a/16-rest-sources/client/index.html b/116-rest-sources/client/index.html similarity index 100% rename from 16-rest-sources/client/index.html rename to 116-rest-sources/client/index.html diff --git a/09-nodejs-y-la-web/4-control-caja/client/lista.html b/116-rest-sources/client/lista.html similarity index 97% rename from 09-nodejs-y-la-web/4-control-caja/client/lista.html rename to 116-rest-sources/client/lista.html index c5bb9ed..4380998 100644 --- a/09-nodejs-y-la-web/4-control-caja/client/lista.html +++ b/116-rest-sources/client/lista.html @@ -1,26 +1,26 @@ -
-

Estos son tus movimientos recientes.

-
- - - - - - - - - - - - - - - - - - - -
Fecha - TipoCategoríaImporte -
{{movimiento.fecha | date}}{{movimiento.tipo}}{{movimiento.categoria}}{{movimiento.importe | number:2}} €
-
\ No newline at end of file +
+

Estos son tus movimientos recientes.

+
+ + + + + + + + + + + + + + + + + + + +
Fecha + TipoCategoríaImporte +
{{movimiento.fecha | date}}{{movimiento.tipo}}{{movimiento.categoria}}{{movimiento.importe | number:2}} €
+
diff --git a/16-rest-sources/client/maestrosFactory.js b/116-rest-sources/client/maestrosFactory.js similarity index 100% rename from 16-rest-sources/client/maestrosFactory.js rename to 116-rest-sources/client/maestrosFactory.js diff --git a/19-angular-con-filtro/client/menuCtrl.js b/116-rest-sources/client/menuCtrl.js similarity index 100% rename from 19-angular-con-filtro/client/menuCtrl.js rename to 116-rest-sources/client/menuCtrl.js diff --git a/16-rest-sources/client/movimientosFactory.js b/116-rest-sources/client/movimientosFactory.js similarity index 100% rename from 16-rest-sources/client/movimientosFactory.js rename to 116-rest-sources/client/movimientosFactory.js diff --git a/19-angular-con-filtro/client/not-found.html b/116-rest-sources/client/not-found.html similarity index 100% rename from 19-angular-con-filtro/client/not-found.html rename to 116-rest-sources/client/not-found.html diff --git a/17-rest-advance/client/nuevo.html b/116-rest-sources/client/nuevo.html similarity index 100% rename from 17-rest-advance/client/nuevo.html rename to 116-rest-sources/client/nuevo.html diff --git a/17-rest-advance/client/registro.html b/116-rest-sources/client/registro.html similarity index 100% rename from 17-rest-advance/client/registro.html rename to 116-rest-sources/client/registro.html diff --git a/18-servicios/client/registroCtrl.js b/116-rest-sources/client/registroCtrl.js similarity index 100% rename from 18-servicios/client/registroCtrl.js rename to 116-rest-sources/client/registroCtrl.js diff --git a/18-servicios/client/total.html b/116-rest-sources/client/total.html similarity index 100% rename from 18-servicios/client/total.html rename to 116-rest-sources/client/total.html diff --git a/16-rest-sources/package.json b/116-rest-sources/package.json similarity index 100% rename from 16-rest-sources/package.json rename to 116-rest-sources/package.json diff --git a/16-rest-sources/server.js b/116-rest-sources/server.js similarity index 100% rename from 16-rest-sources/server.js rename to 116-rest-sources/server.js diff --git a/17-rest-advance/client/app.js b/117-rest-advance/client/app.js similarity index 100% rename from 17-rest-advance/client/app.js rename to 117-rest-advance/client/app.js diff --git a/18-servicios/client/appHttpLog.js b/117-rest-advance/client/appHttpLog.js similarity index 100% rename from 18-servicios/client/appHttpLog.js rename to 117-rest-advance/client/appHttpLog.js diff --git a/19-angular-con-filtro/client/appSecurity.js b/117-rest-advance/client/appSecurity.js similarity index 100% rename from 19-angular-con-filtro/client/appSecurity.js rename to 117-rest-advance/client/appSecurity.js diff --git a/18-servicios/client/cajaCtrl.js b/117-rest-advance/client/cajaCtrl.js similarity index 100% rename from 18-servicios/client/cajaCtrl.js rename to 117-rest-advance/client/cajaCtrl.js diff --git a/17-rest-advance/client/index.html b/117-rest-advance/client/index.html similarity index 100% rename from 17-rest-advance/client/index.html rename to 117-rest-advance/client/index.html diff --git a/17-rest-advance/client/lista.html b/117-rest-advance/client/lista.html similarity index 100% rename from 17-rest-advance/client/lista.html rename to 117-rest-advance/client/lista.html diff --git a/18-servicios/client/maestrosFactory.js b/117-rest-advance/client/maestrosFactory.js similarity index 100% rename from 18-servicios/client/maestrosFactory.js rename to 117-rest-advance/client/maestrosFactory.js diff --git a/20-directivas/client/menuCtrl.js b/117-rest-advance/client/menuCtrl.js similarity index 100% rename from 20-directivas/client/menuCtrl.js rename to 117-rest-advance/client/menuCtrl.js diff --git a/17-rest-advance/client/movimiento.html b/117-rest-advance/client/movimiento.html similarity index 100% rename from 17-rest-advance/client/movimiento.html rename to 117-rest-advance/client/movimiento.html diff --git a/17-rest-advance/client/movimientoCtrl.js b/117-rest-advance/client/movimientoCtrl.js similarity index 100% rename from 17-rest-advance/client/movimientoCtrl.js rename to 117-rest-advance/client/movimientoCtrl.js diff --git a/18-servicios/client/movimientosFactory.js b/117-rest-advance/client/movimientosFactory.js similarity index 100% rename from 18-servicios/client/movimientosFactory.js rename to 117-rest-advance/client/movimientosFactory.js diff --git a/20-directivas/client/not-found.html b/117-rest-advance/client/not-found.html similarity index 100% rename from 20-directivas/client/not-found.html rename to 117-rest-advance/client/not-found.html diff --git a/18-servicios/client/nuevo.html b/117-rest-advance/client/nuevo.html similarity index 100% rename from 18-servicios/client/nuevo.html rename to 117-rest-advance/client/nuevo.html diff --git a/18-servicios/client/registro.html b/117-rest-advance/client/registro.html similarity index 100% rename from 18-servicios/client/registro.html rename to 117-rest-advance/client/registro.html diff --git a/19-angular-con-filtro/client/registroCtrl.js b/117-rest-advance/client/registroCtrl.js similarity index 100% rename from 19-angular-con-filtro/client/registroCtrl.js rename to 117-rest-advance/client/registroCtrl.js diff --git a/19-angular-con-filtro/client/total.html b/117-rest-advance/client/total.html similarity index 100% rename from 19-angular-con-filtro/client/total.html rename to 117-rest-advance/client/total.html diff --git a/17-rest-advance/package.json b/117-rest-advance/package.json similarity index 100% rename from 17-rest-advance/package.json rename to 117-rest-advance/package.json diff --git a/17-rest-advance/server.js b/117-rest-advance/server.js similarity index 100% rename from 17-rest-advance/server.js rename to 117-rest-advance/server.js diff --git a/18-servicios/client/app.js b/118-servicios/client/app.js similarity index 100% rename from 18-servicios/client/app.js rename to 118-servicios/client/app.js diff --git a/19-angular-con-filtro/client/appHttpLog.js b/118-servicios/client/appHttpLog.js similarity index 100% rename from 19-angular-con-filtro/client/appHttpLog.js rename to 118-servicios/client/appHttpLog.js diff --git a/20-directivas/client/appSecurity.js b/118-servicios/client/appSecurity.js similarity index 100% rename from 20-directivas/client/appSecurity.js rename to 118-servicios/client/appSecurity.js diff --git a/19-angular-con-filtro/client/cajaCtrl.js b/118-servicios/client/cajaCtrl.js similarity index 100% rename from 19-angular-con-filtro/client/cajaCtrl.js rename to 118-servicios/client/cajaCtrl.js diff --git a/18-servicios/client/index.html b/118-servicios/client/index.html similarity index 100% rename from 18-servicios/client/index.html rename to 118-servicios/client/index.html diff --git a/18-servicios/client/lista.html b/118-servicios/client/lista.html similarity index 100% rename from 18-servicios/client/lista.html rename to 118-servicios/client/lista.html diff --git a/19-angular-con-filtro/client/maestrosFactory.js b/118-servicios/client/maestrosFactory.js similarity index 100% rename from 19-angular-con-filtro/client/maestrosFactory.js rename to 118-servicios/client/maestrosFactory.js diff --git a/21-organizacion/client/_comun/menuCtrl.js b/118-servicios/client/menuCtrl.js similarity index 100% rename from 21-organizacion/client/_comun/menuCtrl.js rename to 118-servicios/client/menuCtrl.js diff --git a/18-servicios/client/movimiento.html b/118-servicios/client/movimiento.html similarity index 100% rename from 18-servicios/client/movimiento.html rename to 118-servicios/client/movimiento.html diff --git a/18-servicios/client/movimientoCtrl.js b/118-servicios/client/movimientoCtrl.js similarity index 100% rename from 18-servicios/client/movimientoCtrl.js rename to 118-servicios/client/movimientoCtrl.js diff --git a/19-angular-con-filtro/client/movimientosFactory.js b/118-servicios/client/movimientosFactory.js similarity index 100% rename from 19-angular-con-filtro/client/movimientosFactory.js rename to 118-servicios/client/movimientosFactory.js diff --git a/21-organizacion/client/_comun/not-found.html b/118-servicios/client/not-found.html similarity index 100% rename from 21-organizacion/client/_comun/not-found.html rename to 118-servicios/client/not-found.html diff --git a/09-nodejs-y-la-web/4-control-caja/client/nuevo.html b/118-servicios/client/nuevo.html similarity index 98% rename from 09-nodejs-y-la-web/4-control-caja/client/nuevo.html rename to 118-servicios/client/nuevo.html index 17bd239..4dd8ad9 100644 --- a/09-nodejs-y-la-web/4-control-caja/client/nuevo.html +++ b/118-servicios/client/nuevo.html @@ -1,53 +1,53 @@ -
-
-
-
- Introduce tus movimientos -
-
-
-
- -
-
- - -
-
-
-
- -
- - -
-
-
-
-
- -
- -
-
-
- -
- -
-
-
-
-
- -
-
-
- {{caja.movimientos}} -
\ No newline at end of file +
+
+
+
+ Introduce tus movimientos +
+
+
+
+ +
+
+ + +
+
+
+
+ +
+ + +
+
+
+
+
+ +
+ +
+
+
+ +
+ +
+
+
+
+
+ +
+
+
+ {{caja.movimientos}} +
diff --git a/19-angular-con-filtro/client/registro.html b/118-servicios/client/registro.html similarity index 100% rename from 19-angular-con-filtro/client/registro.html rename to 118-servicios/client/registro.html diff --git a/20-directivas/client/registroCtrl.js b/118-servicios/client/registroCtrl.js similarity index 100% rename from 20-directivas/client/registroCtrl.js rename to 118-servicios/client/registroCtrl.js diff --git a/09-nodejs-y-la-web/4-control-caja/client/total.html b/118-servicios/client/total.html similarity index 97% rename from 09-nodejs-y-la-web/4-control-caja/client/total.html rename to 118-servicios/client/total.html index 647c0d7..5fa080d 100644 --- a/09-nodejs-y-la-web/4-control-caja/client/total.html +++ b/118-servicios/client/total.html @@ -1,38 +1,38 @@ - - -
- -

{{ caja.titulo }}

-

Comprueba de dónde viene y a dónde va tu dinero.

-
-
-
-

- - {{ caja.total.ingresos | number:2 }} € - -

-

Total ingresos

- Acumulado -
-
-

- - {{ caja.total.gastos | number:2 }} € - -

-

Total gastos

- Acumulado -
-
-

- - {{ caja.balance() | number:2 }} € - -

-

Balance

- Ingresos-Gastos -
-
-
-
\ No newline at end of file + + +
+ +

{{ caja.titulo }}

+

Comprueba de dónde viene y a dónde va tu dinero.

+
+
+
+

+ + {{ caja.total.ingresos | number:2 }} € + +

+

Total ingresos

+ Acumulado +
+
+

+ + {{ caja.total.gastos | number:2 }} € + +

+

Total gastos

+ Acumulado +
+
+

+ + {{ caja.balance() | number:2 }} € + +

+

Balance

+ Ingresos-Gastos +
+
+
+
diff --git a/18-servicios/package.json b/118-servicios/package.json similarity index 100% rename from 18-servicios/package.json rename to 118-servicios/package.json diff --git a/18-servicios/server.js b/118-servicios/server.js similarity index 100% rename from 18-servicios/server.js rename to 118-servicios/server.js diff --git a/19-angular-con-filtro/client/app.js b/19-angular-con-filtro/client/app.js deleted file mode 100644 index d43daf8..0000000 --- a/19-angular-con-filtro/client/app.js +++ /dev/null @@ -1,36 +0,0 @@ -// Incluimos referencia a un módulo propio, con un prefijo propio -angular.module('controlCajaApp', ['ui.router','ngCookies', 'ngResource', 'abFiltros']); - -angular.module('controlCajaApp').config(function ($stateProvider,$locationProvider) { - $stateProvider - .state('total', { - url: '/', - controller: 'CajaCtrl as caja', - templateUrl: 'total.html' - }) - .state('nuevo', { - url: '/nuevo', - controller: 'CajaCtrl as caja', - templateUrl: 'nuevo.html' - }) - .state('lista', { - url: '/lista', - controller: 'CajaCtrl as caja', - templateUrl: 'lista.html' - }) - .state('movimiento', { - url: '/movimiento/:id', // declaracion de parametros en rutas - controller: 'MovimientoCtrl as vm', - templateUrl: 'movimiento.html' - }) - .state('registro', { - url: '/registro', - controller: 'RegistroCtrl as registro', - templateUrl: 'registro.html' - }) - .state('not-found', { - url: '*path', - controller: 'CajaCtrl as caja', - templateUrl: 'total.html' - }); -}); diff --git a/19-angular-con-filtro/client/index.html b/19-angular-con-filtro/client/index.html deleted file mode 100644 index 5aec25c..0000000 --- a/19-angular-con-filtro/client/index.html +++ /dev/null @@ -1,53 +0,0 @@ - - - Control de Caja - - - - - - - - - - - - - -
- -
- - - - - - - - - - - - - - - - - - diff --git a/19-angular-con-filtro/client/lista.html b/19-angular-con-filtro/client/lista.html deleted file mode 100644 index 15bbb3f..0000000 --- a/19-angular-con-filtro/client/lista.html +++ /dev/null @@ -1,33 +0,0 @@ -
-

Estos son tus movimientos recientes.

-
- - - - - - - - - - - - - - - - - - - - - - - - - - -
IdFecha - TipoCategoríaImporte -
{{movimiento.id }} {{movimiento.fecha | date}}{{movimiento.tipo}}{{movimiento.categoria}}{{movimiento.importe | number:2}} €
-
diff --git a/19-angular-con-filtro/client/movimiento.html b/19-angular-con-filtro/client/movimiento.html deleted file mode 100644 index 05baa0c..0000000 --- a/19-angular-con-filtro/client/movimiento.html +++ /dev/null @@ -1,52 +0,0 @@ -
-
-
-
- Ver el movimiento {{ vm.movimiento.id}} -
-
-
-
- -
-
- {{ vm.movimiento.tipo}} -
-
-
-
- -
- {{ vm.movimiento.categoria }} -
-
-
-
-
- -
- {{ vm.movimiento.fecha || date }} -
-
-
- -
- {{ vm.movimiento.importe }} -
-
-
-
-
- -
- {{ vm.movimiento.texto | abRellenarVacios | abRecortar | abLimpiarCadena }} -
-
-
- -
-
-
-
-
-
diff --git a/19-angular-con-filtro/client/nuevo.html b/19-angular-con-filtro/client/nuevo.html deleted file mode 100644 index b970d92..0000000 --- a/19-angular-con-filtro/client/nuevo.html +++ /dev/null @@ -1,65 +0,0 @@ -
-
-
-
- Introduce tus movimientos -
-
-
-
- -
-
- - -
-
-
-
- -
- - -
-
-
-
-
- -
- -
-
-
- -
- -
-
-
-
-
-
-
- -
- -
-
-
-
-
- -
-
-
- -
-
-
diff --git a/20-directivas/client/appHttpLog.js b/20-directivas/client/appHttpLog.js deleted file mode 100644 index ec065c4..0000000 --- a/20-directivas/client/appHttpLog.js +++ /dev/null @@ -1,23 +0,0 @@ -(function () { - - function configuradorInterceptores($httpProvider) { - $httpProvider.interceptors.push(funcionInterceptoraLog); - } - - // Esta función se especializa en escribir en la consola - // información sobre llamadas http - function funcionInterceptoraLog($log) { - - var interceptor = {}; - interceptor.request = function (request) { - $log.info('request:' + request.url); - return request ; - }; - interceptor.responseError = function (response) { - $log.error("excepción: " + response.status + " de :" + response.config.url); - } - return interceptor; - } - - angular.module('controlCajaApp').config(configuradorInterceptores); -}()); diff --git a/20-directivas/client/cajaCtrl.js b/20-directivas/client/cajaCtrl.js deleted file mode 100644 index 7093eee..0000000 --- a/20-directivas/client/cajaCtrl.js +++ /dev/null @@ -1,34 +0,0 @@ -(function () { - var cajaCtrl = function (maestrosFactory, movimientosFactory) { - var vm = this; - - vm.titulo = "Controla tu Cash Flow"; - - vm.maestros = maestrosFactory.get(); - - vm.nuevoMovimiento = new movimientosFactory.movimientos(); - vm.nuevoMovimiento.esIngreso =1; - vm.nuevoMovimiento.fecha = new Date(); - - vm.movimientos = movimientosFactory.movimientos.query(); - - vm.total = movimientosFactory.total.get(); - - vm.guardarMovimiento = function () { - vm.nuevoMovimiento.tipo = vm.tipo(vm.nuevoMovimiento); - vm.nuevoMovimiento.$save() - .then(function(postedData){ - vm.movimientos = movimientosFactory.movimientos.query(); - vm.total = movimientosFactory.total.get(); - vm.nuevoMovimiento.importe = 0; - }); - } - vm.balance = function () { - return vm.total.ingresos - vm.total.gastos - } - vm.tipo = function (movimiento) { - return movimiento.esIngreso && 'Ingreso' || 'Gasto' - } - } - angular.module('controlCajaApp').controller('CajaCtrl', cajaCtrl); -}()); diff --git a/20-directivas/client/maestrosFactory.js b/20-directivas/client/maestrosFactory.js deleted file mode 100644 index 9a9b37d..0000000 --- a/20-directivas/client/maestrosFactory.js +++ /dev/null @@ -1,9 +0,0 @@ -(function () { - var maestrosFactory =   function ($resource)  { - // Los resursos son totalmente configurables - // Una de sus utilidades de 'fábrica' de una caché simple pero potente - return $resource("/api/pub/maestros/",{},{get: {cache: true}}); - }; - - angular.module('controlCajaApp').factory('maestrosFactory', maestrosFactory); -}()); diff --git a/20-directivas/client/movimientoCtrl.js b/20-directivas/client/movimientoCtrl.js deleted file mode 100644 index 2feb935..0000000 --- a/20-directivas/client/movimientoCtrl.js +++ /dev/null @@ -1,10 +0,0 @@ -(function () { - // $stateParams es el servicio de ui-router para acceder a los parámetros de la ruta - var movimientoCtrl = function ($stateParams, movimientosFactory) { - var vm = this; - // El acceso es por nombre de parámetro - var movId = $stateParams.id; - vm.movimiento = movimientosFactory.movimientos.get({id:movId}); - } - angular.module('controlCajaApp').controller('MovimientoCtrl', movimientoCtrl); -}()); diff --git a/20-directivas/client/movimientosFactory.js b/20-directivas/client/movimientosFactory.js deleted file mode 100644 index 26a5053..0000000 --- a/20-directivas/client/movimientosFactory.js +++ /dev/null @@ -1,25 +0,0 @@ -(function () { - - var movimientosFactory =   function ($resource)  { - - var factory  =   {}; - - // $resource("/api/priv/movimientos/"); - // El uso de parametros en los recursos debe especificarse - // Indicando el nombre local y el remoto - // En la url va el nombre remoto - // En el objeto se repute ese nombre como clave y se dice que propiedad será la que lo lleve - // La propiedad empieza por @ - factory.movimientos =  $resource("/api/priv/movimientos/:id", { - id: "@id" - }) - - - - factory.total = $resource("/api/priv/total/"); - - return factory; - }; - - angular.module('controlCajaApp').factory('movimientosFactory', movimientosFactory); -}()); diff --git a/20-directivas/client/registro.html b/20-directivas/client/registro.html deleted file mode 100644 index 6d32793..0000000 --- a/20-directivas/client/registro.html +++ /dev/null @@ -1,37 +0,0 @@ -
-
-
-
-
-
- Login -
-
- - -
- -
-
-
- - -
- -
-
-
- -
- -
- -
- -
-
-
-
-
-
-
diff --git a/20-directivas/package.json b/20-directivas/package.json deleted file mode 100644 index 6028a5d..0000000 --- a/20-directivas/package.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "name": "ControlCashFlow", - "version": "0.0.0", - "description": "Controla tu flujo de caja", - "main": "index.js", - "scripts": { - "test": "echo \"Error: no test specified\" && exit 1" - }, - "author": "Alberto Basalo", - "license": "BSD-2-Clause", - "dependencies": { - "express": "~4.12.1", - "body-parser": "~1.0.2" - } -} diff --git a/20-directivas/server.js b/20-directivas/server.js deleted file mode 100644 index 8d3fc97..0000000 --- a/20-directivas/server.js +++ /dev/null @@ -1,187 +0,0 @@ -var express = require('express'); -var bodyParser = require('body-parser'); - -var app = express(); -app.use(bodyParser()); -app.use(express.static(__dirname + '/client')); - -app.use(function (peticion, respuesta, siguiente) { - console.log("recibida petición: " + peticion.url); - if (peticion.body && Object.keys(peticion.body).length>0) { - console.log("body: " + JSON.stringify(peticion.body)); - } - siguiente(); - }); - -console.log('ready'); - -var maxId = 0; -var movimientos = []; -var totales = []; - -var usuarios = []; -var sesiones = []; - - -app.use('/api/priv/', function (req, res, next) { - var sessionId = req.get('sessionId'); - var sesion = getSesion(sessionId); - if (sesion) { - if (esSesionValida(sesion)) { - sesion.timeStamp = new Date(); - req.usuario = sesion.email; - next(); - } else { - console.log('Sesión caducada:' + JSON.stringify(sesion)); - res.status(419).send('Sesión caducada'); - } - } else { - res.status(401).send('Credencial inválida'); - } - -}); - - - - - -// API - REST -// SECURITY -app.route('/api/usuarios') - .get(function (req, res, next) { - // Esto devuelve la lista completa de usuarios y contraseñas - // PELIGRO: Usar sólo a modo de debug mientras desarrollamos - res.json(usuarios); - }) - .post(function (req, res, next) { - var usuario = req.body; - if (existeUsuario(usuario)) { - console.log('email ya registrado:' + usuario.email); - res.status(409).send('email ' + usuario.email + ' ya registrado'); - } else { - console.log('registrado:' + usuario.email); - usuarios.push(usuario); - res.json(newSession(usuario.email)); - } - }); - -// Gestión de sesiones: listado y login -app.route('/api/sesiones') - .get(function (req, res, next) { - // Esto devuelve la lista completa de sesiones - // PELIGRO: Usar sólo a modo de debug mientras desarrollamos - res.json(sesiones); - }) - .post(function (req, res, next) { - var usuario = req.body; - if (esUsuarioValido(usuario)) { - console.log('aceptado:' + usuario.email); - res.json(newSession(usuario.email)); - } else { - console.log('Credencial inválida:' + usuario.email); - res.status(401).send('Credencial inválida'); - } - }); - -function existeUsuario(usuario) { - return usuarios.some(function (u) { - return u.email == usuario.email; - }); -} - -function esUsuarioValido(usuario) { - return usuarios.filter(function (u) { - return u.email == usuario.email && u.password == usuario.password; - })[0]; -} - -function getSesion(sessionId) { - return sesiones.filter(function (s) { - return s.sessionId == sessionId; - })[0] -} - -function esSesionValida(sesion) { - return (new Date() - sesion.timeStamp) < 20 * 60 * 1000; -} - -function newSession(email) { - var sessionId = Math.random() * (88888) + 11111; - var timeStamp = new Date(); - sesiones.push({ - sessionId: sessionId, - email: email, - timeStamp: timeStamp - }); - return sessionId; -} - - -// BUSINESS -app.get('/api/pub/maestros', function (req, res, next) { - var maestros = { - categoriasIngresos: ['Nómina', 'Ventas', 'Intereses Depósitos'], - categoriasGastos: ['Hipotéca', 'Compras', 'Impuestos'] - }; - res.json(maestros); -}); - -app.route('/api/priv/movimientos') - .get(function (req, res, next) { - var movimientosUsuario = movimientos.filter(function (m) { - return m.usuario = req.usuario; - }); - res.json(movimientosUsuario); - }) - .post(function (req, res, next) { - var movimiento = req.body; - movimiento.usuario = req.usuario; - maxId++; - movimiento.id = maxId; - movimientos.push(movimiento); - var totalUsuario = getTotalUsuario(req.usuario); - if (movimiento.tipo == 'Ingreso') - totalUsuario.ingresos += movimiento.importe; - else - totalUsuario.gastos += movimiento.importe; - res.status(200).send(); - }); - -app.get('/api/priv/movimientos/:id', function (req, res, next) { - var movId = req.params.id; - movimientoBuscado = getMovimientoById(movId, req.usuario); - res.json(movimientoBuscado); -}); - -function getMovimientoById(id,usuario) { - var movimientoBuscado = movimientos.filter(function (movimiento) { - return movimiento.id == id && movimiento.usuario == usuario; - })[0]; - return movimientoBuscado; -} - -app.get('/api/priv/total', function (req, res, next) { - var totalUsuario = getTotalUsuario(req.usuario); - res.json(totalUsuario); -}); - -function getTotalUsuario(usuario) { - if(usuario===undefined) return {}; - var totalUsuario = totales.filter(function (t) { - return t.usuario == usuario; - })[0]; - if (totalUsuario===undefined) { - totalUsuario = { - usuario : usuario, - ingresos: 0, - gastos: 0 - }; - totales.push(totalUsuario); - } - return totalUsuario; -} - - -console.log('steady'); -app.listen(3000); -console.log('go'); diff --git a/21-organizacion/client/_comun/appSecurity.js b/21-organizacion/client/_comun/appSecurity.js deleted file mode 100644 index 5948427..0000000 --- a/21-organizacion/client/_comun/appSecurity.js +++ /dev/null @@ -1,29 +0,0 @@ -(function () { - function configuradorInterceptores($httpProvider) { - $httpProvider.interceptors.push(funcionInterceptoraSeguridad); - } - - function funcionInterceptoraSeguridad($q, $injector, $cookieStore, $rootScope) { - - var interceptor = {}; - interceptor.request = function (request) { - request.headers["sessionId"] = $cookieStore.get("sessionId"); - return request || $q.when(request); - }; - interceptor.responseError = function (response) { - var state = $injector.get('$state'); - if (response.status === 401) { - $rootScope.mensaje = "No hay derecho!!!"; - state.go('registro'); - } else if (response.status === 419) { - $rootScope.mensaje = "Estoy caduco!!!"; - $cookieStore.remove("sessionId") - state.go('registro'); - }; - return $q.reject(response); - } - return interceptor; - } - - angular.module('controlCajaApp').config(configuradorInterceptores); -}()); diff --git a/21-organizacion/client/registro/registroCtrl.js b/21-organizacion/client/registro/registroCtrl.js deleted file mode 100644 index 7344f28..0000000 --- a/21-organizacion/client/registro/registroCtrl.js +++ /dev/null @@ -1,26 +0,0 @@ -(function () { - var registroCtrl = function ($rootScope, $state, $http, $cookieStore) { - var urlBase = "http://localhost:3000/api/"; - var vm = this; - vm.usuario = {}; - vm.entrar = function () { - $http.post(urlBase + 'sesiones/', vm.usuario) - .success(function (data) { - $rootScope.nombre = vm.usuario.email; - $rootScope.mensaje = 'recién entrado'; - $cookieStore.put("sessionId", data); - $state.go("total"); - }); - } - vm.registrar = function () { - $http.post(urlBase + 'usuarios/', vm.usuario) - .success(function (data) { - $rootScope.nombre = vm.usuario.email; - $rootScope.mensaje = 'recién creado'; - $cookieStore.put("sessionId", data); - $state.go("total"); - }); - } - } - angular.module('controlCajaApp').controller('RegistroCtrl', registroCtrl); -}()); diff --git a/21-organizacion/server/settings.js b/21-organizacion/server/settings.js deleted file mode 100644 index 5f67389..0000000 --- a/21-organizacion/server/settings.js +++ /dev/null @@ -1,5 +0,0 @@ -module.exports = { - port: 3000, - mongoUrl: "mongodb://localhost:27017/cash-flow", - log: "debug" - }; From 61545902401c44e757f2ccd9516e44e3bfc43858 Mon Sep 17 00:00:00 2001 From: Alberto Basalo Date: Thu, 22 Oct 2015 12:19:59 +0200 Subject: [PATCH 3/7] 08 directivas componentes --- .../app.js | 0 .../cajaCtrl.js | 0 .../index.html | 0 .../lista.html | 0 .../maestrosService.js | 0 .../menuCtrl.js | 0 .../movimientosFactory.js | 0 .../not-found.html | 0 .../nuevo.html | 0 .../total.html | 0 .../app.js | 0 .../cajaCtrl.js | 0 .../filtros.js | 0 .../index.html | 0 .../lista.html | 0 .../maestrosService.js | 0 .../menuCtrl.js | 0 .../movimientosFactory.js | 0 .../not-found.html | 0 .../nuevo.html | 0 .../total.html | 3 - 08-directivas/app.js | 24 ++++++ 08-directivas/cajaCtrl.js | 25 ++++++ 08-directivas/componentes.js | 59 +++++++++++++ 08-directivas/filtros.js | 86 +++++++++++++++++++ 08-directivas/index.html | 37 ++++++++ 08-directivas/lista.html | 29 +++++++ 08-directivas/maestrosService.js | 10 +++ 08-directivas/menuCtrl.js | 10 +++ 08-directivas/movimientosFactory.js | 38 ++++++++ 08-directivas/not-found.html | 3 + 08-directivas/nuevo.html | 50 +++++++++++ 08-directivas/total.html | 34 ++++++++ 08-directivas/tpl-cabecera.html | 6 ++ 08-directivas/tpl-fila-movimiento.html | 10 +++ 08-directivas/tpl-menu-navegacion.html | 18 ++++ 0820-directivas/client/tpl-cabecera.html | 6 -- .../client/tpl-fila-movimiento.html | 10 --- 38 files changed, 439 insertions(+), 19 deletions(-) rename {06a-ui-una-ruta-mejor => 06-ui-una-ruta-mejor}/app.js (100%) rename {06a-ui-una-ruta-mejor => 06-ui-una-ruta-mejor}/cajaCtrl.js (100%) rename {06a-ui-una-ruta-mejor => 06-ui-una-ruta-mejor}/index.html (100%) rename {06a-ui-una-ruta-mejor => 06-ui-una-ruta-mejor}/lista.html (100%) rename {06a-ui-una-ruta-mejor => 06-ui-una-ruta-mejor}/maestrosService.js (100%) rename {06a-ui-una-ruta-mejor => 06-ui-una-ruta-mejor}/menuCtrl.js (100%) rename {06a-ui-una-ruta-mejor => 06-ui-una-ruta-mejor}/movimientosFactory.js (100%) rename {06a-ui-una-ruta-mejor => 06-ui-una-ruta-mejor}/not-found.html (100%) rename {06a-ui-una-ruta-mejor => 06-ui-una-ruta-mejor}/nuevo.html (100%) rename {06a-ui-una-ruta-mejor => 06-ui-una-ruta-mejor}/total.html (100%) rename {0719-angular-con-filtro => 07-angular-con-filtro}/app.js (100%) rename {0719-angular-con-filtro => 07-angular-con-filtro}/cajaCtrl.js (100%) rename {0719-angular-con-filtro => 07-angular-con-filtro}/filtros.js (100%) rename {0719-angular-con-filtro => 07-angular-con-filtro}/index.html (100%) rename {0719-angular-con-filtro => 07-angular-con-filtro}/lista.html (100%) rename {0719-angular-con-filtro => 07-angular-con-filtro}/maestrosService.js (100%) rename {0719-angular-con-filtro => 07-angular-con-filtro}/menuCtrl.js (100%) rename {0719-angular-con-filtro => 07-angular-con-filtro}/movimientosFactory.js (100%) rename {0719-angular-con-filtro => 07-angular-con-filtro}/not-found.html (100%) rename {0719-angular-con-filtro => 07-angular-con-filtro}/nuevo.html (100%) rename {0719-angular-con-filtro => 07-angular-con-filtro}/total.html (88%) create mode 100644 08-directivas/app.js create mode 100644 08-directivas/cajaCtrl.js create mode 100644 08-directivas/componentes.js create mode 100644 08-directivas/filtros.js create mode 100644 08-directivas/index.html create mode 100644 08-directivas/lista.html create mode 100644 08-directivas/maestrosService.js create mode 100644 08-directivas/menuCtrl.js create mode 100644 08-directivas/movimientosFactory.js create mode 100644 08-directivas/not-found.html create mode 100644 08-directivas/nuevo.html create mode 100644 08-directivas/total.html create mode 100644 08-directivas/tpl-cabecera.html create mode 100644 08-directivas/tpl-fila-movimiento.html create mode 100644 08-directivas/tpl-menu-navegacion.html delete mode 100644 0820-directivas/client/tpl-cabecera.html delete mode 100644 0820-directivas/client/tpl-fila-movimiento.html diff --git a/06a-ui-una-ruta-mejor/app.js b/06-ui-una-ruta-mejor/app.js similarity index 100% rename from 06a-ui-una-ruta-mejor/app.js rename to 06-ui-una-ruta-mejor/app.js diff --git a/06a-ui-una-ruta-mejor/cajaCtrl.js b/06-ui-una-ruta-mejor/cajaCtrl.js similarity index 100% rename from 06a-ui-una-ruta-mejor/cajaCtrl.js rename to 06-ui-una-ruta-mejor/cajaCtrl.js diff --git a/06a-ui-una-ruta-mejor/index.html b/06-ui-una-ruta-mejor/index.html similarity index 100% rename from 06a-ui-una-ruta-mejor/index.html rename to 06-ui-una-ruta-mejor/index.html diff --git a/06a-ui-una-ruta-mejor/lista.html b/06-ui-una-ruta-mejor/lista.html similarity index 100% rename from 06a-ui-una-ruta-mejor/lista.html rename to 06-ui-una-ruta-mejor/lista.html diff --git a/06a-ui-una-ruta-mejor/maestrosService.js b/06-ui-una-ruta-mejor/maestrosService.js similarity index 100% rename from 06a-ui-una-ruta-mejor/maestrosService.js rename to 06-ui-una-ruta-mejor/maestrosService.js diff --git a/06a-ui-una-ruta-mejor/menuCtrl.js b/06-ui-una-ruta-mejor/menuCtrl.js similarity index 100% rename from 06a-ui-una-ruta-mejor/menuCtrl.js rename to 06-ui-una-ruta-mejor/menuCtrl.js diff --git a/06a-ui-una-ruta-mejor/movimientosFactory.js b/06-ui-una-ruta-mejor/movimientosFactory.js similarity index 100% rename from 06a-ui-una-ruta-mejor/movimientosFactory.js rename to 06-ui-una-ruta-mejor/movimientosFactory.js diff --git a/06a-ui-una-ruta-mejor/not-found.html b/06-ui-una-ruta-mejor/not-found.html similarity index 100% rename from 06a-ui-una-ruta-mejor/not-found.html rename to 06-ui-una-ruta-mejor/not-found.html diff --git a/06a-ui-una-ruta-mejor/nuevo.html b/06-ui-una-ruta-mejor/nuevo.html similarity index 100% rename from 06a-ui-una-ruta-mejor/nuevo.html rename to 06-ui-una-ruta-mejor/nuevo.html diff --git a/06a-ui-una-ruta-mejor/total.html b/06-ui-una-ruta-mejor/total.html similarity index 100% rename from 06a-ui-una-ruta-mejor/total.html rename to 06-ui-una-ruta-mejor/total.html diff --git a/0719-angular-con-filtro/app.js b/07-angular-con-filtro/app.js similarity index 100% rename from 0719-angular-con-filtro/app.js rename to 07-angular-con-filtro/app.js diff --git a/0719-angular-con-filtro/cajaCtrl.js b/07-angular-con-filtro/cajaCtrl.js similarity index 100% rename from 0719-angular-con-filtro/cajaCtrl.js rename to 07-angular-con-filtro/cajaCtrl.js diff --git a/0719-angular-con-filtro/filtros.js b/07-angular-con-filtro/filtros.js similarity index 100% rename from 0719-angular-con-filtro/filtros.js rename to 07-angular-con-filtro/filtros.js diff --git a/0719-angular-con-filtro/index.html b/07-angular-con-filtro/index.html similarity index 100% rename from 0719-angular-con-filtro/index.html rename to 07-angular-con-filtro/index.html diff --git a/0719-angular-con-filtro/lista.html b/07-angular-con-filtro/lista.html similarity index 100% rename from 0719-angular-con-filtro/lista.html rename to 07-angular-con-filtro/lista.html diff --git a/0719-angular-con-filtro/maestrosService.js b/07-angular-con-filtro/maestrosService.js similarity index 100% rename from 0719-angular-con-filtro/maestrosService.js rename to 07-angular-con-filtro/maestrosService.js diff --git a/0719-angular-con-filtro/menuCtrl.js b/07-angular-con-filtro/menuCtrl.js similarity index 100% rename from 0719-angular-con-filtro/menuCtrl.js rename to 07-angular-con-filtro/menuCtrl.js diff --git a/0719-angular-con-filtro/movimientosFactory.js b/07-angular-con-filtro/movimientosFactory.js similarity index 100% rename from 0719-angular-con-filtro/movimientosFactory.js rename to 07-angular-con-filtro/movimientosFactory.js diff --git a/0719-angular-con-filtro/not-found.html b/07-angular-con-filtro/not-found.html similarity index 100% rename from 0719-angular-con-filtro/not-found.html rename to 07-angular-con-filtro/not-found.html diff --git a/0719-angular-con-filtro/nuevo.html b/07-angular-con-filtro/nuevo.html similarity index 100% rename from 0719-angular-con-filtro/nuevo.html rename to 07-angular-con-filtro/nuevo.html diff --git a/0719-angular-con-filtro/total.html b/07-angular-con-filtro/total.html similarity index 88% rename from 0719-angular-con-filtro/total.html rename to 07-angular-con-filtro/total.html index 5fa080d..4e6b7d6 100644 --- a/0719-angular-con-filtro/total.html +++ b/07-angular-con-filtro/total.html @@ -1,7 +1,4 @@ - -
-

{{ caja.titulo }}

Comprueba de dónde viene y a dónde va tu dinero.

diff --git a/08-directivas/app.js b/08-directivas/app.js new file mode 100644 index 0000000..8e64a20 --- /dev/null +++ b/08-directivas/app.js @@ -0,0 +1,24 @@ +// tenemos que agregar la dependencia hacia el nuevo módulo de directivas +angular.module('cashFlow', ['ui.router', 'abFiltros' , 'abComponentes']); + +angular.module('cashFlow').config(function ($stateProvider) { + $stateProvider + .state('total', { + url: '/', + controller: 'CajaCtrl as caja', + templateUrl: 'total.html' + }) + .state('nuevo', { + url: '/nuevo', + controller: 'CajaCtrl as caja', + templateUrl: 'nuevo.html' + }) + .state('lista', { + url: '/lista', + controller: 'CajaCtrl as caja', + templateUrl: 'lista.html' + }).state('not-found', { + url: '*path', + templateUrl: 'not-found.html' + }); +}); diff --git a/08-directivas/cajaCtrl.js b/08-directivas/cajaCtrl.js new file mode 100644 index 0000000..b8877e4 --- /dev/null +++ b/08-directivas/cajaCtrl.js @@ -0,0 +1,25 @@ +(function () { + var cajaCtrl = function (movimientosFactory, maestrosService) { + var vm = this; + + vm.titulo = "Controla tu Cash Flow"; + vm.maestros = maestrosService.categorias; + vm.nuevoMovimiento = { + esIngreso: 1, + esGasto: 0, + importe: 0, + fecha: new Date() + }; + vm.movimientos = movimientosFactory.getMovimientos(); + vm.total = movimientosFactory.getTotal(); + + vm.guardarMovimiento = function () { + var auxCopyMov = angular.copy(vm.nuevoMovimiento); + movimientosFactory.postMovimiento(auxCopyMov); + vm.nuevoMovimiento.importe = 0; + } + vm.balance = movimientosFactory.balance; + vm.tipo = movimientosFactory.tipo; + } + angular.module('cashFlow').controller('CajaCtrl', cajaCtrl); +}()); diff --git a/08-directivas/componentes.js b/08-directivas/componentes.js new file mode 100644 index 0000000..93afa25 --- /dev/null +++ b/08-directivas/componentes.js @@ -0,0 +1,59 @@ +(function () { + + angular.module('abComponentes', []) + .directive('abPiePagina', piePagina) + .directive('abContenido', contenido) + .directive('abCabecera', cabecera) + .directive('abMenuNavegacion', menuNavegacion) + .directive('abFilaMovimiento', filaMovimiento); + + // El uso más simple es crear directivas para usar como código reutilizable + function piePagina() { + return { + template: '' + }; + }; + + // las plantillas pueden tener directivas internas + function contenido() { + return { + template: '
' + }; + }; + + // Dos mejoras, sacar el html a un fichero externo (tpl-directiva) + // Usar Transclude para reutilizar el contenido del usuario y hacer la vista más dinámica + // En este caso la plantilla debe usar la directiva ng-transclude + function cabecera() { + return { + transclude: true, + templateUrl: './tpl-cabecera.html' + }; + }; + + + // En este caso la directiva tiene presentación y lógica + // Asignamos el controlador a la vista desde la plantilla + function menuNavegacion(){ + return { + templateUrl: './tpl-menu-navegacion.html', + controller : "MenuCtrl as menu" + }; + } + + // En este caso el cambio más siginificatico es el scope + // Funciona como un API para la directiva y recibe la info vía atributos + // Por otro lado en este caso hemos tenido que restringir el uso de la directiva + // Los elementos tr dentro de un table requieren definirse explícitamente + function filaMovimiento() { + return { + restrict: 'A', + templateUrl: './tpl-fila-movimiento.html', + scope: { + movimientoplantilla: "=movimientodirectiva" + } + }; + } + + +}()); \ No newline at end of file diff --git a/08-directivas/filtros.js b/08-directivas/filtros.js new file mode 100644 index 0000000..cba89c7 --- /dev/null +++ b/08-directivas/filtros.js @@ -0,0 +1,86 @@ +(function () { + + // Podemos usar una sintaxis fluida y declarar todo en una solo línea + // Atención a la declaración de un nuevo módulo genérico + angular.module('abFiltros', []) + .filter('abLimpiarCadena', limpiarCadena) + .filter('abRecortar', recortar) + .filter('abRellenarVacios', rellenarVacios) + .filter('abGranImporte', granImporte); + + // Los filtros se declaran como funciones que a su vez devuelven... funciones + + + // Esas funciones internas se aplican sobre los valores, + // Tienen al menos un parámetro, que sirve de entrada + + + // Esta función le quita acentos, guiones bajos, y caracteres raros + // Los sustituye por guiones bajos + function limpiarCadena() { + var funcionFiltro = function (cadena) { + if (cadena) { + var resultado = cadena.toLowerCase(); + var patron = /[^-A-Za-z0-9]+/g; + return resultado.replace(patron, '_'); + } + }; + return funcionFiltro; + } + + // Devuelve un trozo de texto y tres puntos suspensivos... para indicar que hay más... + // Demuestra que un filtro puede tener parámetros, y cómo tratar valores por defecto. + function recortar() { + var funcionFiltro = function (cadena, largo, quitarInicio) { + if (!cadena) { + return '' + } + if (!largo) { + largo = 10 + } + if (cadena.length <= largo) { + return cadena + } + if (quitarInicio) { + return '...' + cadena.substring(cadena.length - largo) + } else { + return cadena.substring(0, largo) + '...' + } + }; + return funcionFiltro; + } + + // Con control de errores y lógica compleja + function rellenarVacios() { + var funcionFiltro = function (cadena) { + try { + if (!cadena || cadena === undefined || cadena.trim() === "") { + return '---'; + }; + } catch (err) { + return '---'; + } + return cadena; + } + return funcionFiltro; + } + + // Permite tener filtros predeterminadois en un array + function granImporte() { + var funcionFiltro = function (movimientos, valorCorte) { + if (valorCorte) { + var filtrados = []; + for (var i = 0; i < movimientos.length; i++) { + var mov = movimientos[i]; + if (mov.importe >= valorCorte) { + filtrados.push(mov); + } + } + return filtrados; + } else { + return movimientos; + } + }; + return funcionFiltro; + } +}()); diff --git a/08-directivas/index.html b/08-directivas/index.html new file mode 100644 index 0000000..b91a011 --- /dev/null +++ b/08-directivas/index.html @@ -0,0 +1,37 @@ + + + + Control de Caja + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/08-directivas/lista.html b/08-directivas/lista.html new file mode 100644 index 0000000..6964171 --- /dev/null +++ b/08-directivas/lista.html @@ -0,0 +1,29 @@ +
+
Estos son tus movimientos recientes.
+
+ + + + + + + + + + + + + + + + + + + +
Fecha + TipoCategoríaImporte +
+
diff --git a/08-directivas/maestrosService.js b/08-directivas/maestrosService.js new file mode 100644 index 0000000..6f36732 --- /dev/null +++ b/08-directivas/maestrosService.js @@ -0,0 +1,10 @@ +(function () { + angular.module('cashFlow').service('maestrosService', maestrosService); + + function maestrosService() { + this.categorias = { + categoriasIngresos: ['Nómina', 'Ventas', 'Intereses Depósitos'], + categoriasGastos: ['Hipotéca', 'Compras', 'Impuestos'] + }; + } +}()); diff --git a/08-directivas/menuCtrl.js b/08-directivas/menuCtrl.js new file mode 100644 index 0000000..4f7f90e --- /dev/null +++ b/08-directivas/menuCtrl.js @@ -0,0 +1,10 @@ +(function () { + angular.module('cashFlow').controller('MenuCtrl', menuCtrl); + + function menuCtrl($state) { + this.isActive = function (estado) { + return $state.is(estado); + } + } + +}()); diff --git a/08-directivas/movimientosFactory.js b/08-directivas/movimientosFactory.js new file mode 100644 index 0000000..bf394e0 --- /dev/null +++ b/08-directivas/movimientosFactory.js @@ -0,0 +1,38 @@ +(function () { + angular.module('cashFlow').factory('movimientosFactory', movimientosFactory); + + function movimientosFactory()  { + + var movimientos = []; + var total = { + ingresos: 0, + gastos: 0 + }; + var result  =   {}; + + result.getMovimientos =   function ()  { + return movimientos; + }; + + result.getTotal =   function ()  { + return total; + }; + + result.postMovimiento =   function (movimiento)  { + movimientos.push(movimiento); + total.ingresos += movimiento.esIngreso * movimiento.importe; + total.gastos += movimiento.esGasto * movimiento.importe; + }; + + result.balance = function () { + return total.ingresos - total.gastos + } + + result.tipo = function (movimiento) { + return movimiento.esIngreso && 'Ingreso' || 'Gasto' + } + + return result; + }; + +}()); diff --git a/08-directivas/not-found.html b/08-directivas/not-found.html new file mode 100644 index 0000000..0eddd6f --- /dev/null +++ b/08-directivas/not-found.html @@ -0,0 +1,3 @@ +
+ No se ha encontrado lo que buscabas +
diff --git a/08-directivas/nuevo.html b/08-directivas/nuevo.html new file mode 100644 index 0000000..a193b9b --- /dev/null +++ b/08-directivas/nuevo.html @@ -0,0 +1,50 @@ +
+ Introduce tus movimientos +
+
+
+
+
+ +
+
+ + +
+
+
+
+ +
+ + +
+
+
+
+
+ +
+ +
+
+
+ +
+ +
+
+
+
+
+ +
+
+
+
diff --git a/08-directivas/total.html b/08-directivas/total.html new file mode 100644 index 0000000..5941c88 --- /dev/null +++ b/08-directivas/total.html @@ -0,0 +1,34 @@ +
+ Comprueba de dónde viene y a dónde va tu dinero. +
+
+
+

+ + {{ caja.total.ingresos | number:2 }} € + +

+

Total ingresos

+ Acumulado +
+
+

+ + {{ caja.total.gastos | number:2 }} € + +

+

Total gastos

+ Acumulado +
+
+

+ + {{ caja.balance() | number:2 }} € + +

+

Balance

+ Ingresos-Gastos +
+
+
+
diff --git a/08-directivas/tpl-cabecera.html b/08-directivas/tpl-cabecera.html new file mode 100644 index 0000000..a86e6a1 --- /dev/null +++ b/08-directivas/tpl-cabecera.html @@ -0,0 +1,6 @@ +
+
Cash Flow
+
+
+ +
diff --git a/08-directivas/tpl-fila-movimiento.html b/08-directivas/tpl-fila-movimiento.html new file mode 100644 index 0000000..8d403e1 --- /dev/null +++ b/08-directivas/tpl-fila-movimiento.html @@ -0,0 +1,10 @@ +{{movimientoplantilla.id }} +{{movimientoplantilla.fecha | date}} +{{movimientoplantilla.tipo}} +{{movimientoplantilla.categoria}} + + {{movimientoplantilla.importe | number:2}} € + + + + \ No newline at end of file diff --git a/08-directivas/tpl-menu-navegacion.html b/08-directivas/tpl-menu-navegacion.html new file mode 100644 index 0000000..481b476 --- /dev/null +++ b/08-directivas/tpl-menu-navegacion.html @@ -0,0 +1,18 @@ + + \ No newline at end of file diff --git a/0820-directivas/client/tpl-cabecera.html b/0820-directivas/client/tpl-cabecera.html deleted file mode 100644 index 5245a7b..0000000 --- a/0820-directivas/client/tpl-cabecera.html +++ /dev/null @@ -1,6 +0,0 @@ -
-
-

Cash Flow

-
-
-
diff --git a/0820-directivas/client/tpl-fila-movimiento.html b/0820-directivas/client/tpl-fila-movimiento.html deleted file mode 100644 index 2c3f4c0..0000000 --- a/0820-directivas/client/tpl-fila-movimiento.html +++ /dev/null @@ -1,10 +0,0 @@ - - {{movimientoplantilla.id }} - {{movimientoplantilla.fecha | date}} - {{movimientoplantilla.tipo}} - {{movimientoplantilla.categoria}} - - {{movimientoplantilla.importe | number:2}} € - - - From 7119072578f14f64555a138dc918e7580bae19c1 Mon Sep 17 00:00:00 2001 From: Alberto Basalo Date: Thu, 22 Oct 2015 12:45:52 +0200 Subject: [PATCH 4/7] 08 directivas dom --- 08-directivas/directivas.js | 56 +++++++++++++++++++++++++++++++++++++ 1 file changed, 56 insertions(+) create mode 100644 08-directivas/directivas.js diff --git a/08-directivas/directivas.js b/08-directivas/directivas.js new file mode 100644 index 0000000..49d63a2 --- /dev/null +++ b/08-directivas/directivas.js @@ -0,0 +1,56 @@ +(function () { + + angular.module('abDirectivas', []) + .directive('abSeleccionado', seleccionado) + .directive('input', seleccionado) + .directive('abPlugin', plugin); + + // Otro uso de las directivas es extender la funionalidad del DOM sin importar los datos + // Este es el lugar donde manipular el DOM y jamás en los controladores + function seleccionado() { + return { + link: function (scope, element, attrs) { + element.bind('mouseenter', function () { + element.css('background-color', 'yellow'); + }); + element.bind('mouseleave', function () { + element.css('background-color', 'white'); + }); + } + }; + } + + // Ejemplo no funcional de cómo extender un plugin hecho a medida + function plugin() { + return { + link: function (scope, element, attrs) { + + // Obtención de parámetros vía atributos + var init = scope.$eval(attrs.ngModel); + var min = scope.$eval(attrs.abPlugInMin); + var max = scope.$eval(attrs.abPlugInMax); + // Configuración básica + element.pluginInitMethod({ + value: init, + min: min, + max: max, + tooltip: 'hide' + }); + + // Actualizar la vista cuando cambia el modelo + scope.$watch(attrs.ngModel, function (valor) { + element.pluginMethod('setValue', valor); + }); + + // Actualizar el modelo cuando cambia la vista + element.on('plugin_event', function (evento) { + scope.$apply(function () { + scope[attrs.ngModel] = evento.value; + }); + }); + } + } + } + + +}()); From 7ddcc179b364f343f2c1e94264362720d74c7b99 Mon Sep 17 00:00:00 2001 From: Alberto Basalo Date: Thu, 22 Oct 2015 13:54:16 +0200 Subject: [PATCH 5/7] 08 directiva valoracion con estrellitas --- 08-directivas/app.js | 2 +- 08-directivas/index.html | 4 +- 08-directivas/lista.html | 2 + 08-directivas/nuevo.html | 19 +++++++++ 08-directivas/tpl-fila-movimiento.html | 2 +- 08-directivas/tpl-valoracion.html | 8 ++++ 08-directivas/valoracion.js | 48 ++++++++++++++++++++++ 0820-directivas/client/tpl-valoracion.html | 12 ------ 0820-directivas/client/valoracion.js | 38 ----------------- 9 files changed, 82 insertions(+), 53 deletions(-) create mode 100644 08-directivas/tpl-valoracion.html create mode 100644 08-directivas/valoracion.js delete mode 100644 0820-directivas/client/tpl-valoracion.html delete mode 100644 0820-directivas/client/valoracion.js diff --git a/08-directivas/app.js b/08-directivas/app.js index 8e64a20..ce1ff53 100644 --- a/08-directivas/app.js +++ b/08-directivas/app.js @@ -1,5 +1,5 @@ // tenemos que agregar la dependencia hacia el nuevo módulo de directivas -angular.module('cashFlow', ['ui.router', 'abFiltros' , 'abComponentes']); +angular.module('cashFlow', ['ui.router', 'abFiltros' , 'abComponentes', 'abDirectivas', 'abValoracion']); angular.module('cashFlow').config(function ($stateProvider) { $stateProvider diff --git a/08-directivas/index.html b/08-directivas/index.html index b91a011..729a875 100644 --- a/08-directivas/index.html +++ b/08-directivas/index.html @@ -30,8 +30,10 @@ - + + + \ No newline at end of file diff --git a/08-directivas/lista.html b/08-directivas/lista.html index 6964171..4292e42 100644 --- a/08-directivas/lista.html +++ b/08-directivas/lista.html @@ -20,9 +20,11 @@ + diff --git a/08-directivas/nuevo.html b/08-directivas/nuevo.html index a193b9b..ea1d6ed 100644 --- a/08-directivas/nuevo.html +++ b/08-directivas/nuevo.html @@ -39,6 +39,25 @@
+
+
+
+ +
+ +
+
+
+
+
+ +
+ +
+
+
+
+
+ + + + + + + + + + + + + + + + + +
Fecha + TipoCategoríaImporte +
+
diff --git a/09-organizacion/app/states/not-found.html b/09-organizacion/app/states/not-found.html new file mode 100644 index 0000000..0eddd6f --- /dev/null +++ b/09-organizacion/app/states/not-found.html @@ -0,0 +1,3 @@ +
+ No se ha encontrado lo que buscabas +
diff --git a/09-organizacion/app/states/nuevo.html b/09-organizacion/app/states/nuevo.html new file mode 100644 index 0000000..ea1d6ed --- /dev/null +++ b/09-organizacion/app/states/nuevo.html @@ -0,0 +1,69 @@ +
+ Introduce tus movimientos +
+
+
+
+
+ +
+
+ + +
+
+
+
+ +
+ + +
+
+
+
+
+ +
+ +
+
+
+ +
+ +
+
+
+
+
+
+ +
+ +
+
+
+
+
+ +
+ +
+
+
+
+
+
+
+ +
+
+
+
diff --git a/09-organizacion/app/states/total.html b/09-organizacion/app/states/total.html new file mode 100644 index 0000000..5941c88 --- /dev/null +++ b/09-organizacion/app/states/total.html @@ -0,0 +1,34 @@ +
+ Comprueba de dónde viene y a dónde va tu dinero. +
+
+
+

+ + {{ caja.total.ingresos | number:2 }} € + +

+

Total ingresos

+ Acumulado +
+
+

+ + {{ caja.total.gastos | number:2 }} € + +

+

Total gastos

+ Acumulado +
+
+

+ + {{ caja.balance() | number:2 }} € + +

+

Balance

+ Ingresos-Gastos +
+
+
+
diff --git a/09-organizacion/index.html b/09-organizacion/index.html new file mode 100644 index 0000000..16a6c9b --- /dev/null +++ b/09-organizacion/index.html @@ -0,0 +1,40 @@ + + + + Control de Caja + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file From ecbc6bf8cdbb8f13a634833def4491bf0c61c65a Mon Sep 17 00:00:00 2001 From: Alberto Basalo Date: Thu, 22 Oct 2015 14:16:12 +0200 Subject: [PATCH 7/7] clean --- 0820-directivas/client/app.js | 36 ---- 0820-directivas/client/appHttpLog.js | 23 --- 0820-directivas/client/appSecurity.js | 29 --- 0820-directivas/client/cajaCtrl.js | 34 ---- 0820-directivas/client/directivas.js | 89 --------- 0820-directivas/client/filtros.js | 84 -------- 0820-directivas/client/index.html | 59 ------ 0820-directivas/client/lista.html | 39 ---- 0820-directivas/client/maestrosFactory.js | 9 - 0820-directivas/client/menuCtrl.js | 8 - 0820-directivas/client/movimiento.html | 55 ------ 0820-directivas/client/movimientoCtrl.js | 10 - 0820-directivas/client/movimientosFactory.js | 25 --- 0820-directivas/client/not-found.html | 3 - 0820-directivas/client/nuevo.html | 73 ------- 0820-directivas/client/registro.html | 37 ---- 0820-directivas/client/registroCtrl.js | 26 --- 0820-directivas/client/total.html | 38 ---- 0820-directivas/directivas.md | 46 ----- 0820-directivas/package.json | 15 -- 0820-directivas/recursos.md | 7 - 0820-directivas/server.js | 187 ------------------ 0921-organizacion/client/_comun/app.js | 2 - 0921-organizacion/client/_comun/appHttpLog.js | 21 -- .../client/_comun/appSecurity.js | 29 --- 0921-organizacion/client/_comun/menuCtrl.js | 8 - .../client/_comun/not-found.html | 3 - 0921-organizacion/client/_comun/states.js | 32 --- .../client/controlcaja/cajaCtrl.js | 34 ---- .../client/controlcaja/lista.html | 28 --- .../client/controlcaja/nuevo.html | 68 ------- .../client/controlcaja/total.html | 34 ---- .../client/data/maestrosFactory.js | 7 - .../client/data/movimientosFactory.js | 15 -- .../client/directivas/directivas.js | 74 ------- .../client/directivas/tpl-cabecera.html | 6 - .../directivas/tpl-fila-movimiento.html | 10 - .../directivas/valoracion/tpl-valoracion.html | 12 -- .../directivas/valoracion/valoracion.js | 38 ---- 0921-organizacion/client/filtros/filtros.js | 71 ------- 0921-organizacion/client/index.html | 60 ------ .../client/movimiento/movimiento.html | 55 ------ .../client/movimiento/movimientoCtrl.js | 8 - .../client/registro/registro.html | 37 ---- .../client/registro/registroCtrl.js | 26 --- 0921-organizacion/server/api/maestrosAPI.js | 10 - .../server/api/movimientosAPI.js | 26 --- 0921-organizacion/server/api/seguridadAPI.js | 45 ----- 0921-organizacion/server/cash-flow.js | 12 -- .../server/data/movimientosData.js | 58 ------ .../server/data/seguridadData.js | 75 ------- 0921-organizacion/server/express.js | 26 --- 0921-organizacion/server/package.json | 12 -- 53 files changed, 1874 deletions(-) delete mode 100644 0820-directivas/client/app.js delete mode 100644 0820-directivas/client/appHttpLog.js delete mode 100644 0820-directivas/client/appSecurity.js delete mode 100644 0820-directivas/client/cajaCtrl.js delete mode 100644 0820-directivas/client/directivas.js delete mode 100644 0820-directivas/client/filtros.js delete mode 100644 0820-directivas/client/index.html delete mode 100644 0820-directivas/client/lista.html delete mode 100644 0820-directivas/client/maestrosFactory.js delete mode 100644 0820-directivas/client/menuCtrl.js delete mode 100644 0820-directivas/client/movimiento.html delete mode 100644 0820-directivas/client/movimientoCtrl.js delete mode 100644 0820-directivas/client/movimientosFactory.js delete mode 100644 0820-directivas/client/not-found.html delete mode 100644 0820-directivas/client/nuevo.html delete mode 100644 0820-directivas/client/registro.html delete mode 100644 0820-directivas/client/registroCtrl.js delete mode 100644 0820-directivas/client/total.html delete mode 100644 0820-directivas/directivas.md delete mode 100644 0820-directivas/package.json delete mode 100644 0820-directivas/recursos.md delete mode 100644 0820-directivas/server.js delete mode 100644 0921-organizacion/client/_comun/app.js delete mode 100644 0921-organizacion/client/_comun/appHttpLog.js delete mode 100644 0921-organizacion/client/_comun/appSecurity.js delete mode 100644 0921-organizacion/client/_comun/menuCtrl.js delete mode 100644 0921-organizacion/client/_comun/not-found.html delete mode 100644 0921-organizacion/client/_comun/states.js delete mode 100644 0921-organizacion/client/controlcaja/cajaCtrl.js delete mode 100644 0921-organizacion/client/controlcaja/lista.html delete mode 100644 0921-organizacion/client/controlcaja/nuevo.html delete mode 100644 0921-organizacion/client/controlcaja/total.html delete mode 100644 0921-organizacion/client/data/maestrosFactory.js delete mode 100644 0921-organizacion/client/data/movimientosFactory.js delete mode 100644 0921-organizacion/client/directivas/directivas.js delete mode 100644 0921-organizacion/client/directivas/tpl-cabecera.html delete mode 100644 0921-organizacion/client/directivas/tpl-fila-movimiento.html delete mode 100644 0921-organizacion/client/directivas/valoracion/tpl-valoracion.html delete mode 100644 0921-organizacion/client/directivas/valoracion/valoracion.js delete mode 100644 0921-organizacion/client/filtros/filtros.js delete mode 100644 0921-organizacion/client/index.html delete mode 100644 0921-organizacion/client/movimiento/movimiento.html delete mode 100644 0921-organizacion/client/movimiento/movimientoCtrl.js delete mode 100644 0921-organizacion/client/registro/registro.html delete mode 100644 0921-organizacion/client/registro/registroCtrl.js delete mode 100644 0921-organizacion/server/api/maestrosAPI.js delete mode 100644 0921-organizacion/server/api/movimientosAPI.js delete mode 100644 0921-organizacion/server/api/seguridadAPI.js delete mode 100644 0921-organizacion/server/cash-flow.js delete mode 100644 0921-organizacion/server/data/movimientosData.js delete mode 100644 0921-organizacion/server/data/seguridadData.js delete mode 100644 0921-organizacion/server/express.js delete mode 100644 0921-organizacion/server/package.json diff --git a/0820-directivas/client/app.js b/0820-directivas/client/app.js deleted file mode 100644 index 47500cb..0000000 --- a/0820-directivas/client/app.js +++ /dev/null @@ -1,36 +0,0 @@ -// Incluimos referencia al módulo de directivas -angular.module('controlCajaApp', ['ui.router','ngCookies', 'ngResource', 'abFiltros','abDirectivas']); - -angular.module('controlCajaApp').config(function ($stateProvider,$locationProvider) { - $stateProvider - .state('total', { - url: '/', - controller: 'CajaCtrl as caja', - templateUrl: 'total.html' - }) - .state('nuevo', { - url: '/nuevo', - controller: 'CajaCtrl as caja', - templateUrl: 'nuevo.html' - }) - .state('lista', { - url: '/lista', - controller: 'CajaCtrl as caja', - templateUrl: 'lista.html' - }) - .state('movimiento', { - url: '/movimiento/:id', // declaracion de parametros en rutas - controller: 'MovimientoCtrl as vm', - templateUrl: 'movimiento.html' - }) - .state('registro', { - url: '/registro', - controller: 'RegistroCtrl as registro', - templateUrl: 'registro.html' - }) - .state('not-found', { - url: '*path', - controller: 'CajaCtrl as caja', - templateUrl: 'total.html' - }); -}); diff --git a/0820-directivas/client/appHttpLog.js b/0820-directivas/client/appHttpLog.js deleted file mode 100644 index ec065c4..0000000 --- a/0820-directivas/client/appHttpLog.js +++ /dev/null @@ -1,23 +0,0 @@ -(function () { - - function configuradorInterceptores($httpProvider) { - $httpProvider.interceptors.push(funcionInterceptoraLog); - } - - // Esta función se especializa en escribir en la consola - // información sobre llamadas http - function funcionInterceptoraLog($log) { - - var interceptor = {}; - interceptor.request = function (request) { - $log.info('request:' + request.url); - return request ; - }; - interceptor.responseError = function (response) { - $log.error("excepción: " + response.status + " de :" + response.config.url); - } - return interceptor; - } - - angular.module('controlCajaApp').config(configuradorInterceptores); -}()); diff --git a/0820-directivas/client/appSecurity.js b/0820-directivas/client/appSecurity.js deleted file mode 100644 index 5948427..0000000 --- a/0820-directivas/client/appSecurity.js +++ /dev/null @@ -1,29 +0,0 @@ -(function () { - function configuradorInterceptores($httpProvider) { - $httpProvider.interceptors.push(funcionInterceptoraSeguridad); - } - - function funcionInterceptoraSeguridad($q, $injector, $cookieStore, $rootScope) { - - var interceptor = {}; - interceptor.request = function (request) { - request.headers["sessionId"] = $cookieStore.get("sessionId"); - return request || $q.when(request); - }; - interceptor.responseError = function (response) { - var state = $injector.get('$state'); - if (response.status === 401) { - $rootScope.mensaje = "No hay derecho!!!"; - state.go('registro'); - } else if (response.status === 419) { - $rootScope.mensaje = "Estoy caduco!!!"; - $cookieStore.remove("sessionId") - state.go('registro'); - }; - return $q.reject(response); - } - return interceptor; - } - - angular.module('controlCajaApp').config(configuradorInterceptores); -}()); diff --git a/0820-directivas/client/cajaCtrl.js b/0820-directivas/client/cajaCtrl.js deleted file mode 100644 index 7093eee..0000000 --- a/0820-directivas/client/cajaCtrl.js +++ /dev/null @@ -1,34 +0,0 @@ -(function () { - var cajaCtrl = function (maestrosFactory, movimientosFactory) { - var vm = this; - - vm.titulo = "Controla tu Cash Flow"; - - vm.maestros = maestrosFactory.get(); - - vm.nuevoMovimiento = new movimientosFactory.movimientos(); - vm.nuevoMovimiento.esIngreso =1; - vm.nuevoMovimiento.fecha = new Date(); - - vm.movimientos = movimientosFactory.movimientos.query(); - - vm.total = movimientosFactory.total.get(); - - vm.guardarMovimiento = function () { - vm.nuevoMovimiento.tipo = vm.tipo(vm.nuevoMovimiento); - vm.nuevoMovimiento.$save() - .then(function(postedData){ - vm.movimientos = movimientosFactory.movimientos.query(); - vm.total = movimientosFactory.total.get(); - vm.nuevoMovimiento.importe = 0; - }); - } - vm.balance = function () { - return vm.total.ingresos - vm.total.gastos - } - vm.tipo = function (movimiento) { - return movimiento.esIngreso && 'Ingreso' || 'Gasto' - } - } - angular.module('controlCajaApp').controller('CajaCtrl', cajaCtrl); -}()); diff --git a/0820-directivas/client/directivas.js b/0820-directivas/client/directivas.js deleted file mode 100644 index 1f59981..0000000 --- a/0820-directivas/client/directivas.js +++ /dev/null @@ -1,89 +0,0 @@ -(function () { - // El uso más simple es crear directivas para usar como código reutilizable - function piePagina() { - return { - restrict: 'AE', - replace: 'true', - template: '' - }; - }; - - // Dos mejoras, sacar el html a un fichero externo (tpl-directiva) - // Usar Transclude para reutilizar el contenido del usuario y hacer la vista más dinámica - function cabecera() { - return { - restrict: 'EA', - replace: 'true', - transclude: true, - templateUrl: '/tpl-cabecera.html' - }; - }; - - // En este caso el cambio más siginificatico es el scope - // Funciona como un API para la directiva y recibe la info vía atributos - // Por otro lado en este caso hemos tenido que restringir el uso de la directiva - // Los elementos tr dentro de un table requieren definirse explícitamente - function filaMovimiento() { - return { - restrict: 'A', - templateUrl: '/tpl-fila-movimiento.html', - scope: { - movimientoplantilla: "=movimientodirectiva" - } - }; - } - - // Otro uso de las directivas es extender la funionalidad del DOM sin importar los datos - // Este es el lugar donde manipular el DOM y jamás en los controladores - function seleccionado() { - return { - link: function ($scope, element, attrs) { - element.bind('mouseenter', function () { - element.css('background-color', 'lightyellow'); - }); - element.bind('mouseleave', function () { - element.css('background-color', 'white'); - }); - } - }; - } - - // Ejemplo no funcional de cómo extender un plugin hecho a medida - function plugin() { - return { - link: function (scope, element, attrs) { - - // Obtención de parámetros vía atributos - var init = scope.$eval(attrs.ngModel); - var min = scope.$eval(attrs.abSliderMin); - var max = scope.$eval(attrs.abSliderMax); - // Configuración básica - $(element).plugin({ - value: init, - min: min, - max: max, - tooltip: 'hide' - }); - - // Actualizar la vista cuando cambia el modelo - scope.$watch(attrs.ngModel, function (valor) { - $(element).plugin('setValue', valor); - }); - - // Actualizar el modelo cuando cambia la vista - $(element).plugin().on('slide', function (evento) { - scope.$apply(function () { - scope[attrs.ngModel] = evento.value; - }); - }); - } - } - } - - angular.module('abDirectivas', []) - .directive('abPiePagina', piePagina) - .directive('abCabecera', cabecera) - .directive('abFilaMovimiento', filaMovimiento) - .directive('abSeleccionado', seleccionado) - .directive('abPlugin', plugin); -}()); diff --git a/0820-directivas/client/filtros.js b/0820-directivas/client/filtros.js deleted file mode 100644 index c96b9d5..0000000 --- a/0820-directivas/client/filtros.js +++ /dev/null @@ -1,84 +0,0 @@ -(function () { - // Los filtros se declaran como funciones que a su vez devuelven... funciones - - // Esas funciones internas se aplican sobre los valores, - // Tienen al menos un parámetro, que sirve de entrada - - - // Esta función le quita acentos, guiones bajos, y caracteres raros - // Los sustituye por guiones bajos - function limpiarCadena() { - var funcionFiltro = function (cadena) { - if (cadena) { - var resultado = cadena.toLowerCase(); - var patron = /[^-A-Za-z0-9]+/g; - return resultado.replace(patron, '_'); - } - }; - return funcionFiltro; - } - - // Devuelve un trozo de texto y tres puntos suspensivos... para indicar que hay más... - // Demuestra que un filtro puede tener parámetros, y cómo tratar valores por defecto. - function recortar() { - var funcionFiltro = function (cadena, largo, quitarInicio) { - if (!cadena) { - return '' - } - if (!largo) { - largo = 10 - } - if (cadena.length <= largo) { - return cadena - } - if (quitarInicio) { - return '...' + cadena.substring(cadena.length - largo) - } else { - return cadena.substring(0, largo) + '...' - } - }; - return funcionFiltro; - } - - // Con control de errores y lógica compleja - function rellenarVacios() { - var funcionFiltro = function (cadena) { - try { - if (!cadena || cadena === undefined || cadena.trim() === "") { - return '---'; - }; - } catch (err) { - return '---'; - } - return cadena; - } - return funcionFiltro; - } - - // Permite tener filtros predeterminadois en un array - function granImporte() { - var funcionFiltro = function (movimientos, valorCorte) { - if (valorCorte) { - var filtrados = []; - for (var i = 0; i < movimientos.length; i++) { - var mov = movimientos[i]; - if (mov.importe >= valorCorte) { - filtrados.push(mov); - } - } - return filtrados; - } else { - return movimientos; - } - }; - return funcionFiltro; - } - - // Podemos usar una sintaxis fluida y declarar todo en una solo línea - // Atención a la declaración de un nuevo módulo genérico - angular.module('abFiltros', []) - .filter('abLimpiarCadena', limpiarCadena) - .filter('abRecortar', recortar) - .filter('abRellenarVacios', rellenarVacios) - .filter('abGranImporte', granImporte); -}()); diff --git a/0820-directivas/client/index.html b/0820-directivas/client/index.html deleted file mode 100644 index 790a357..0000000 --- a/0820-directivas/client/index.html +++ /dev/null @@ -1,59 +0,0 @@ - - - - Control de Caja - - - - - - - - - - - - - - -
- -
- - - - - - - - - - - - - - - - - - - - - - diff --git a/0820-directivas/client/lista.html b/0820-directivas/client/lista.html deleted file mode 100644 index a030493..0000000 --- a/0820-directivas/client/lista.html +++ /dev/null @@ -1,39 +0,0 @@ -
- -
Estos son tus movimientos recientes.
-
- - - - - - - - - - - - - - - - - - - -
IdFecha - TipoCategoríaImporte - Valoración
-
diff --git a/0820-directivas/client/maestrosFactory.js b/0820-directivas/client/maestrosFactory.js deleted file mode 100644 index 9a9b37d..0000000 --- a/0820-directivas/client/maestrosFactory.js +++ /dev/null @@ -1,9 +0,0 @@ -(function () { - var maestrosFactory =   function ($resource)  { - // Los resursos son totalmente configurables - // Una de sus utilidades de 'fábrica' de una caché simple pero potente - return $resource("/api/pub/maestros/",{},{get: {cache: true}}); - }; - - angular.module('controlCajaApp').factory('maestrosFactory', maestrosFactory); -}()); diff --git a/0820-directivas/client/menuCtrl.js b/0820-directivas/client/menuCtrl.js deleted file mode 100644 index 14ddc17..0000000 --- a/0820-directivas/client/menuCtrl.js +++ /dev/null @@ -1,8 +0,0 @@ -(function () { - var menuCtrl = function ($state) { - this.isActive = function (estado) { - return $state.is(estado); - } - } - angular.module('controlCajaApp').controller('MenuCtrl',menuCtrl); -}()); diff --git a/0820-directivas/client/movimiento.html b/0820-directivas/client/movimiento.html deleted file mode 100644 index dec2ee1..0000000 --- a/0820-directivas/client/movimiento.html +++ /dev/null @@ -1,55 +0,0 @@ -
-
-
-
- Ver el movimiento {{ vm.movimiento.id}} -
-
-
-
- -
-
- {{ vm.movimiento.tipo}} -
-
-
-
- -
- {{ vm.movimiento.categoria }} -
-
-
-
-
- -
- {{ vm.movimiento.fecha || date }} -
-
-
- -
- {{ vm.movimiento.importe }} -
-
-
-
-
- -
- {{ vm.movimiento.texto | abRellenarVacios | abRecortar | abLimpiarCadena }} -
-
-
- -
- -
-
-
-
-
-
-
diff --git a/0820-directivas/client/movimientoCtrl.js b/0820-directivas/client/movimientoCtrl.js deleted file mode 100644 index 2feb935..0000000 --- a/0820-directivas/client/movimientoCtrl.js +++ /dev/null @@ -1,10 +0,0 @@ -(function () { - // $stateParams es el servicio de ui-router para acceder a los parámetros de la ruta - var movimientoCtrl = function ($stateParams, movimientosFactory) { - var vm = this; - // El acceso es por nombre de parámetro - var movId = $stateParams.id; - vm.movimiento = movimientosFactory.movimientos.get({id:movId}); - } - angular.module('controlCajaApp').controller('MovimientoCtrl', movimientoCtrl); -}()); diff --git a/0820-directivas/client/movimientosFactory.js b/0820-directivas/client/movimientosFactory.js deleted file mode 100644 index 26a5053..0000000 --- a/0820-directivas/client/movimientosFactory.js +++ /dev/null @@ -1,25 +0,0 @@ -(function () { - - var movimientosFactory =   function ($resource)  { - - var factory  =   {}; - - // $resource("/api/priv/movimientos/"); - // El uso de parametros en los recursos debe especificarse - // Indicando el nombre local y el remoto - // En la url va el nombre remoto - // En el objeto se repute ese nombre como clave y se dice que propiedad será la que lo lleve - // La propiedad empieza por @ - factory.movimientos =  $resource("/api/priv/movimientos/:id", { - id: "@id" - }) - - - - factory.total = $resource("/api/priv/total/"); - - return factory; - }; - - angular.module('controlCajaApp').factory('movimientosFactory', movimientosFactory); -}()); diff --git a/0820-directivas/client/not-found.html b/0820-directivas/client/not-found.html deleted file mode 100644 index 85210c2..0000000 --- a/0820-directivas/client/not-found.html +++ /dev/null @@ -1,3 +0,0 @@ -
-

No se ha encontrado lo que buscabas

-
diff --git a/0820-directivas/client/nuevo.html b/0820-directivas/client/nuevo.html deleted file mode 100644 index 4421563..0000000 --- a/0820-directivas/client/nuevo.html +++ /dev/null @@ -1,73 +0,0 @@ -
- Introduce tus movimientos. -
-
- -
-
-
- -
-
- - -
-
-
-
- -
- - -
-
-
-
-
- -
- -
-
-
- -
- -
-
-
-
-
-
-
- -
- -
-
-
-
-
- -
-
-
-
-
-
-
- -
-
-
-
diff --git a/0820-directivas/client/registro.html b/0820-directivas/client/registro.html deleted file mode 100644 index 6d32793..0000000 --- a/0820-directivas/client/registro.html +++ /dev/null @@ -1,37 +0,0 @@ -
-
-
-
-
-
- Login -
-
- - -
- -
-
-
- - -
- -
-
-
- -
- -
- -
- -
-
-
-
-
-
-
diff --git a/0820-directivas/client/registroCtrl.js b/0820-directivas/client/registroCtrl.js deleted file mode 100644 index 7344f28..0000000 --- a/0820-directivas/client/registroCtrl.js +++ /dev/null @@ -1,26 +0,0 @@ -(function () { - var registroCtrl = function ($rootScope, $state, $http, $cookieStore) { - var urlBase = "http://localhost:3000/api/"; - var vm = this; - vm.usuario = {}; - vm.entrar = function () { - $http.post(urlBase + 'sesiones/', vm.usuario) - .success(function (data) { - $rootScope.nombre = vm.usuario.email; - $rootScope.mensaje = 'recién entrado'; - $cookieStore.put("sessionId", data); - $state.go("total"); - }); - } - vm.registrar = function () { - $http.post(urlBase + 'usuarios/', vm.usuario) - .success(function (data) { - $rootScope.nombre = vm.usuario.email; - $rootScope.mensaje = 'recién creado'; - $cookieStore.put("sessionId", data); - $state.go("total"); - }); - } - } - angular.module('controlCajaApp').controller('RegistroCtrl', registroCtrl); -}()); diff --git a/0820-directivas/client/total.html b/0820-directivas/client/total.html deleted file mode 100644 index f745c5c..0000000 --- a/0820-directivas/client/total.html +++ /dev/null @@ -1,38 +0,0 @@ -
- - Comprueba de dónde viene y a dónde va tu dinero. -
-
-
-

- - {{ caja.total.ingresos | number:2 }} € - -

-

Total ingresos

- Acumulado -
-
-

- - {{ caja.total.gastos | number:2 }} € - -

-

Total gastos

- Acumulado -
-
-

- - {{ caja.balance() | number:2 }} € - -

-

Balance

- Ingresos-Gastos -
-
-
-
diff --git a/0820-directivas/directivas.md b/0820-directivas/directivas.md deleted file mode 100644 index a0e9318..0000000 --- a/0820-directivas/directivas.md +++ /dev/null @@ -1,46 +0,0 @@ -Directivas -========== - -- Se usan de forma **declarativa** en el HTML -- Su función es extender y enriquecer el HTML encapsulando el **acceso al DOM** -- Se definen como **objetos JS** con propiedades específicas - -Propiedades ------------ - -### Restrict -Sirve para determinar dónde se puede aplicar la directiva - -Valores posibles: - - - **A** – Attribute `
` - - **E** – Element ` ` - - **C** – Class `
` - - **M** – Comment ` ` - -### Replace -Indica si el elemento al que se aplica debe ser sustituído por el resultado de la ejecución - -### Transclude -Indica si el elemento al que se aplicaca incluirá el resultado de la ejecución de la directiva en su interior - -### Template y template URL -Cadena de texto o enlace a fichero que contine el HTML que va a devolver la directiva - -### Scope -Intercambio de datos con el elemento que declara la directiva. -Valores posibles: - - - **@** Interpolating, para enlazar un texto dentro de la directiva. ` scope: { soloLectura: '@' } ` - - **=** Data bind, un objeto para doble-enlace que la directiva pueda cambiar ` scope: { valor: '=alias' } ` - - **&** Expression `scope: { onEvaluado: '&' } ` - - -### Link -Una función que enlazará la directiva con el scope - -### Compile -Una función que podrá manipular el DOM creando una función link - -### Controller -Una función que actuará como contrlador para esta directiva diff --git a/0820-directivas/package.json b/0820-directivas/package.json deleted file mode 100644 index 6028a5d..0000000 --- a/0820-directivas/package.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "name": "ControlCashFlow", - "version": "0.0.0", - "description": "Controla tu flujo de caja", - "main": "index.js", - "scripts": { - "test": "echo \"Error: no test specified\" && exit 1" - }, - "author": "Alberto Basalo", - "license": "BSD-2-Clause", - "dependencies": { - "express": "~4.12.1", - "body-parser": "~1.0.2" - } -} diff --git a/0820-directivas/recursos.md b/0820-directivas/recursos.md deleted file mode 100644 index 42fe6d5..0000000 --- a/0820-directivas/recursos.md +++ /dev/null @@ -1,7 +0,0 @@ -https://angular-ui.github.io/ -http://ngmodules.org/c -http://angular-js.in/ -http://www.directiv.es/ - -http://www.tamas.io/node-jsexpress-cors-implementation/ -http://stackoverflow.com/questions/23823010/how-to-enable-cors-in-angularjs \ No newline at end of file diff --git a/0820-directivas/server.js b/0820-directivas/server.js deleted file mode 100644 index 8d3fc97..0000000 --- a/0820-directivas/server.js +++ /dev/null @@ -1,187 +0,0 @@ -var express = require('express'); -var bodyParser = require('body-parser'); - -var app = express(); -app.use(bodyParser()); -app.use(express.static(__dirname + '/client')); - -app.use(function (peticion, respuesta, siguiente) { - console.log("recibida petición: " + peticion.url); - if (peticion.body && Object.keys(peticion.body).length>0) { - console.log("body: " + JSON.stringify(peticion.body)); - } - siguiente(); - }); - -console.log('ready'); - -var maxId = 0; -var movimientos = []; -var totales = []; - -var usuarios = []; -var sesiones = []; - - -app.use('/api/priv/', function (req, res, next) { - var sessionId = req.get('sessionId'); - var sesion = getSesion(sessionId); - if (sesion) { - if (esSesionValida(sesion)) { - sesion.timeStamp = new Date(); - req.usuario = sesion.email; - next(); - } else { - console.log('Sesión caducada:' + JSON.stringify(sesion)); - res.status(419).send('Sesión caducada'); - } - } else { - res.status(401).send('Credencial inválida'); - } - -}); - - - - - -// API - REST -// SECURITY -app.route('/api/usuarios') - .get(function (req, res, next) { - // Esto devuelve la lista completa de usuarios y contraseñas - // PELIGRO: Usar sólo a modo de debug mientras desarrollamos - res.json(usuarios); - }) - .post(function (req, res, next) { - var usuario = req.body; - if (existeUsuario(usuario)) { - console.log('email ya registrado:' + usuario.email); - res.status(409).send('email ' + usuario.email + ' ya registrado'); - } else { - console.log('registrado:' + usuario.email); - usuarios.push(usuario); - res.json(newSession(usuario.email)); - } - }); - -// Gestión de sesiones: listado y login -app.route('/api/sesiones') - .get(function (req, res, next) { - // Esto devuelve la lista completa de sesiones - // PELIGRO: Usar sólo a modo de debug mientras desarrollamos - res.json(sesiones); - }) - .post(function (req, res, next) { - var usuario = req.body; - if (esUsuarioValido(usuario)) { - console.log('aceptado:' + usuario.email); - res.json(newSession(usuario.email)); - } else { - console.log('Credencial inválida:' + usuario.email); - res.status(401).send('Credencial inválida'); - } - }); - -function existeUsuario(usuario) { - return usuarios.some(function (u) { - return u.email == usuario.email; - }); -} - -function esUsuarioValido(usuario) { - return usuarios.filter(function (u) { - return u.email == usuario.email && u.password == usuario.password; - })[0]; -} - -function getSesion(sessionId) { - return sesiones.filter(function (s) { - return s.sessionId == sessionId; - })[0] -} - -function esSesionValida(sesion) { - return (new Date() - sesion.timeStamp) < 20 * 60 * 1000; -} - -function newSession(email) { - var sessionId = Math.random() * (88888) + 11111; - var timeStamp = new Date(); - sesiones.push({ - sessionId: sessionId, - email: email, - timeStamp: timeStamp - }); - return sessionId; -} - - -// BUSINESS -app.get('/api/pub/maestros', function (req, res, next) { - var maestros = { - categoriasIngresos: ['Nómina', 'Ventas', 'Intereses Depósitos'], - categoriasGastos: ['Hipotéca', 'Compras', 'Impuestos'] - }; - res.json(maestros); -}); - -app.route('/api/priv/movimientos') - .get(function (req, res, next) { - var movimientosUsuario = movimientos.filter(function (m) { - return m.usuario = req.usuario; - }); - res.json(movimientosUsuario); - }) - .post(function (req, res, next) { - var movimiento = req.body; - movimiento.usuario = req.usuario; - maxId++; - movimiento.id = maxId; - movimientos.push(movimiento); - var totalUsuario = getTotalUsuario(req.usuario); - if (movimiento.tipo == 'Ingreso') - totalUsuario.ingresos += movimiento.importe; - else - totalUsuario.gastos += movimiento.importe; - res.status(200).send(); - }); - -app.get('/api/priv/movimientos/:id', function (req, res, next) { - var movId = req.params.id; - movimientoBuscado = getMovimientoById(movId, req.usuario); - res.json(movimientoBuscado); -}); - -function getMovimientoById(id,usuario) { - var movimientoBuscado = movimientos.filter(function (movimiento) { - return movimiento.id == id && movimiento.usuario == usuario; - })[0]; - return movimientoBuscado; -} - -app.get('/api/priv/total', function (req, res, next) { - var totalUsuario = getTotalUsuario(req.usuario); - res.json(totalUsuario); -}); - -function getTotalUsuario(usuario) { - if(usuario===undefined) return {}; - var totalUsuario = totales.filter(function (t) { - return t.usuario == usuario; - })[0]; - if (totalUsuario===undefined) { - totalUsuario = { - usuario : usuario, - ingresos: 0, - gastos: 0 - }; - totales.push(totalUsuario); - } - return totalUsuario; -} - - -console.log('steady'); -app.listen(3000); -console.log('go'); diff --git a/0921-organizacion/client/_comun/app.js b/0921-organizacion/client/_comun/app.js deleted file mode 100644 index 5dd729d..0000000 --- a/0921-organizacion/client/_comun/app.js +++ /dev/null @@ -1,2 +0,0 @@ -angular.module('controlCajaApp', ['ui.router','ngCookies', 'ngResource', 'abFiltros','abDirectivas']); - diff --git a/0921-organizacion/client/_comun/appHttpLog.js b/0921-organizacion/client/_comun/appHttpLog.js deleted file mode 100644 index 0357f95..0000000 --- a/0921-organizacion/client/_comun/appHttpLog.js +++ /dev/null @@ -1,21 +0,0 @@ -(function () { - - function configuradorInterceptores($httpProvider) { - $httpProvider.interceptors.push(funcionInterceptoraLog); - } - - function funcionInterceptoraLog($log) { - - var interceptor = {}; - interceptor.request = function (request) { - $log.info('request:' + request.url); - return request ; - }; - interceptor.responseError = function (response) { - $log.error("excepción: " + response.status + " de :" + response.config.url); - } - return interceptor; - } - - angular.module('controlCajaApp').config(configuradorInterceptores); -}()); diff --git a/0921-organizacion/client/_comun/appSecurity.js b/0921-organizacion/client/_comun/appSecurity.js deleted file mode 100644 index 5948427..0000000 --- a/0921-organizacion/client/_comun/appSecurity.js +++ /dev/null @@ -1,29 +0,0 @@ -(function () { - function configuradorInterceptores($httpProvider) { - $httpProvider.interceptors.push(funcionInterceptoraSeguridad); - } - - function funcionInterceptoraSeguridad($q, $injector, $cookieStore, $rootScope) { - - var interceptor = {}; - interceptor.request = function (request) { - request.headers["sessionId"] = $cookieStore.get("sessionId"); - return request || $q.when(request); - }; - interceptor.responseError = function (response) { - var state = $injector.get('$state'); - if (response.status === 401) { - $rootScope.mensaje = "No hay derecho!!!"; - state.go('registro'); - } else if (response.status === 419) { - $rootScope.mensaje = "Estoy caduco!!!"; - $cookieStore.remove("sessionId") - state.go('registro'); - }; - return $q.reject(response); - } - return interceptor; - } - - angular.module('controlCajaApp').config(configuradorInterceptores); -}()); diff --git a/0921-organizacion/client/_comun/menuCtrl.js b/0921-organizacion/client/_comun/menuCtrl.js deleted file mode 100644 index 14ddc17..0000000 --- a/0921-organizacion/client/_comun/menuCtrl.js +++ /dev/null @@ -1,8 +0,0 @@ -(function () { - var menuCtrl = function ($state) { - this.isActive = function (estado) { - return $state.is(estado); - } - } - angular.module('controlCajaApp').controller('MenuCtrl',menuCtrl); -}()); diff --git a/0921-organizacion/client/_comun/not-found.html b/0921-organizacion/client/_comun/not-found.html deleted file mode 100644 index 85210c2..0000000 --- a/0921-organizacion/client/_comun/not-found.html +++ /dev/null @@ -1,3 +0,0 @@ -
-

No se ha encontrado lo que buscabas

-
diff --git a/0921-organizacion/client/_comun/states.js b/0921-organizacion/client/_comun/states.js deleted file mode 100644 index 9c04ab9..0000000 --- a/0921-organizacion/client/_comun/states.js +++ /dev/null @@ -1,32 +0,0 @@ -angular.module('controlCajaApp').config(function ($stateProvider) { - $stateProvider - .state('total', { - url: '/', - controller: 'CajaCtrl as caja', - templateUrl: 'controlcaja/total.html' - }) - .state('nuevo', { - url: '/nuevo', - controller: 'CajaCtrl as caja', - templateUrl: 'controlcaja/nuevo.html' - }) - .state('lista', { - url: '/lista', - controller: 'CajaCtrl as caja', - templateUrl: 'controlcaja/lista.html' - }) - .state('movimiento', { - url: '/movimiento/:id', - controller: 'MovimientoCtrl as vm', - templateUrl: 'movimiento/movimiento.html' - }) - .state('registro', { - url: '/registro', - controller: 'RegistroCtrl as registro', - templateUrl: 'registro/registro.html' - }) - .state('not-found', { - url: '*path', - templateUrl: '_comun/not-found.html' - }); -}); diff --git a/0921-organizacion/client/controlcaja/cajaCtrl.js b/0921-organizacion/client/controlcaja/cajaCtrl.js deleted file mode 100644 index 60ab90e..0000000 --- a/0921-organizacion/client/controlcaja/cajaCtrl.js +++ /dev/null @@ -1,34 +0,0 @@ -(function () { - var cajaCtrl = function (maestrosFactory, movimientosFactory) { - var vm = this; - - vm.titulo = "Controla tu Cash Flow"; - - vm.maestros = maestrosFactory.get(); - - vm.nuevoMovimiento = new movimientosFactory.movimientos(); - vm.nuevoMovimiento.esIngreso = 1; - vm.nuevoMovimiento.fecha = new Date(); - - vm.movimientos = movimientosFactory.movimientos.query(); - - vm.total = movimientosFactory.total.get(); - - vm.guardarMovimiento = function () { - vm.nuevoMovimiento.tipo = vm.tipo(vm.nuevoMovimiento); - vm.nuevoMovimiento.$save() - .then(function (postedData) { - vm.movimientos = movimientosFactory.movimientos.query(); - vm.total = movimientosFactory.total.get(); - vm.nuevoMovimiento.importe = 0; - }); - } - vm.balance = function () { - return vm.total.ingresos - vm.total.gastos - } - vm.tipo = function (movimiento) { - return movimiento.esIngreso && 'Ingreso' || 'Gasto' - } - } - angular.module('controlCajaApp').controller('CajaCtrl', cajaCtrl); -}()); diff --git a/0921-organizacion/client/controlcaja/lista.html b/0921-organizacion/client/controlcaja/lista.html deleted file mode 100644 index b79a6b7..0000000 --- a/0921-organizacion/client/controlcaja/lista.html +++ /dev/null @@ -1,28 +0,0 @@ -
- Estos son tus movimientos recientes. -
- - - - - - - - - - - - - - - - - - -
IdFecha - TipoCategoríaImporte - Valoración
-
diff --git a/0921-organizacion/client/controlcaja/nuevo.html b/0921-organizacion/client/controlcaja/nuevo.html deleted file mode 100644 index 2b3df9a..0000000 --- a/0921-organizacion/client/controlcaja/nuevo.html +++ /dev/null @@ -1,68 +0,0 @@ -
- Introduce tus movimientos. -
-
-
-
-
- -
-
- - -
-
-
-
- -
- - -
-
-
-
-
- -
- -
-
-
- -
- -
-
-
-
-
-
-
- -
- -
-
-
-
-
- -
-
-
-
-
-
-
- -
-
-
-
diff --git a/0921-organizacion/client/controlcaja/total.html b/0921-organizacion/client/controlcaja/total.html deleted file mode 100644 index 3f8af9e..0000000 --- a/0921-organizacion/client/controlcaja/total.html +++ /dev/null @@ -1,34 +0,0 @@ -
- Comprueba de dónde viene y a dónde va tu dinero. -
-
-
-

- - {{ caja.total.ingresos | number:2 }} € - -

-

Total ingresos

- Acumulado -
-
-

- - {{ caja.total.gastos | number:2 }} € - -

-

Total gastos

- Acumulado -
-
-

- - {{ caja.balance() | number:2 }} € - -

-

Balance

- Ingresos-Gastos -
-
-
-
diff --git a/0921-organizacion/client/data/maestrosFactory.js b/0921-organizacion/client/data/maestrosFactory.js deleted file mode 100644 index 2ba429d..0000000 --- a/0921-organizacion/client/data/maestrosFactory.js +++ /dev/null @@ -1,7 +0,0 @@ -(function () { - var maestrosFactory =   function ($resource)  { - return $resource("/api/pub/maestros/",{},{get: {cache: true}}); - }; - - angular.module('controlCajaApp').factory('maestrosFactory', maestrosFactory); -}()); diff --git a/0921-organizacion/client/data/movimientosFactory.js b/0921-organizacion/client/data/movimientosFactory.js deleted file mode 100644 index 995a40e..0000000 --- a/0921-organizacion/client/data/movimientosFactory.js +++ /dev/null @@ -1,15 +0,0 @@ -(function () { - - var movimientosFactory =   function ($resource)  { - - var factory  =   {}; - factory.movimientos =  $resource("/api/priv/movimientos/:id", { - id: "@id" - }) - factory.total = $resource("/api/priv/total/"); - - return factory; - }; - - angular.module('controlCajaApp').factory('movimientosFactory', movimientosFactory); -}()); diff --git a/0921-organizacion/client/directivas/directivas.js b/0921-organizacion/client/directivas/directivas.js deleted file mode 100644 index 42c3c01..0000000 --- a/0921-organizacion/client/directivas/directivas.js +++ /dev/null @@ -1,74 +0,0 @@ -(function () { - function piePagina() { - return { - restrict: 'AE', - replace: 'true', - template: '' - }; - }; - - function cabecera() { - return { - restrict: 'AE', - replace: 'true', - transclude: true, - templateUrl: '/directivas/tpl-cabecera.html' - }; - }; - - function filaMovimiento() { - return { - restrict: 'A', - templateUrl: '/directivas/tpl-fila-movimiento.html', - scope: { - movimientoplantilla: "=movimientodirectiva" - } - }; - } - - function seleccionado() { - return { - link: function ($scope, element, attrs) { - element.bind('mouseenter', function () { - element.css('background-color', 'lightyellow'); - }); - element.bind('mouseleave', function () { - element.css('background-color', 'white'); - }); - } - }; - } - - function plugin() { - return { - link: function (scope, element, attrs) { - var init = scope.$eval(attrs.ngModel); - var min = scope.$eval(attrs.abSliderMin); - var max = scope.$eval(attrs.abSliderMax); - $(element).plugin({ - value: init, - min: min, - max: max, - tooltip: 'hide' - }); - - scope.$watch(attrs.ngModel, function (valor) { - $(element).plugin('setValue', valor); - }); - - $(element).plugin().on('slide', function (evento) { - scope.$apply(function () { - scope[attrs.ngModel] = evento.value; - }); - }); - } - } - } - - angular.module('abDirectivas', []) - .directive('abPiePagina', piePagina) - .directive('abCabecera', cabecera) - .directive('abFilaMovimiento', filaMovimiento) - .directive('abSeleccionado', seleccionado) - .directive('abPlugin', plugin); -}()); diff --git a/0921-organizacion/client/directivas/tpl-cabecera.html b/0921-organizacion/client/directivas/tpl-cabecera.html deleted file mode 100644 index 5245a7b..0000000 --- a/0921-organizacion/client/directivas/tpl-cabecera.html +++ /dev/null @@ -1,6 +0,0 @@ -
-
-

Cash Flow

-
-
-
diff --git a/0921-organizacion/client/directivas/tpl-fila-movimiento.html b/0921-organizacion/client/directivas/tpl-fila-movimiento.html deleted file mode 100644 index 2c3f4c0..0000000 --- a/0921-organizacion/client/directivas/tpl-fila-movimiento.html +++ /dev/null @@ -1,10 +0,0 @@ - - {{movimientoplantilla.id }} - {{movimientoplantilla.fecha | date}} - {{movimientoplantilla.tipo}} - {{movimientoplantilla.categoria}} - - {{movimientoplantilla.importe | number:2}} € - - - diff --git a/0921-organizacion/client/directivas/valoracion/tpl-valoracion.html b/0921-organizacion/client/directivas/valoracion/tpl-valoracion.html deleted file mode 100644 index 63a8bcd..0000000 --- a/0921-organizacion/client/directivas/valoracion/tpl-valoracion.html +++ /dev/null @@ -1,12 +0,0 @@ - - - - * - - - diff --git a/0921-organizacion/client/directivas/valoracion/valoracion.js b/0921-organizacion/client/directivas/valoracion/valoracion.js deleted file mode 100644 index d4ad49d..0000000 --- a/0921-organizacion/client/directivas/valoracion/valoracion.js +++ /dev/null @@ -1,38 +0,0 @@ -(function () { - var valoracion = function () { - return { - restrict: 'AE', - templateUrl: '/directivas/valoracion/tpl-valoracion.html', - scope: { - valor: '=', - max: '@', - soloLectura: '@' - }, - link: function (scope, elem, attrs) { - function actualizar() { - if(!scope.valor)scope.valor=1; - scope.estrellas = []; - for (var i = 0; i < scope.max; i++) { - var estrella = { - marcada: (i < scope.valor) - }; - scope.estrellas.push(estrella); - } - }; - - scope.marcar = function (indice) { - if (scope.soloLectura && scope.soloLectura === 'true') { - return; - } - scope.valor = indice + 1; - actualizar(); - }; - actualizar(); - } - } - } - - angular.module('abDirectivas') - .directive('abValoracion', valoracion); - -}()); diff --git a/0921-organizacion/client/filtros/filtros.js b/0921-organizacion/client/filtros/filtros.js deleted file mode 100644 index 6398464..0000000 --- a/0921-organizacion/client/filtros/filtros.js +++ /dev/null @@ -1,71 +0,0 @@ -(function () { - - function limpiarCadena() { - var funcionFiltro = function (cadena) { - if (cadena) { - var resultado = cadena.toLowerCase(); - var patron = /[^-A-Za-z0-9]+/g; - return resultado.replace(patron, '_'); - } - }; - return funcionFiltro; - } - - function recortar() { - var funcionFiltro = function (cadena, largo, quitarInicio) { - if (!cadena) { - return '' - } - if (!largo) { - largo = 10 - } - if (cadena.length <= largo) { - return cadena - } - if (quitarInicio) { - return '...' + cadena.substring(cadena.length - largo) - } else { - return cadena.substring(0, largo) + '...' - } - }; - return funcionFiltro; - } - - function rellenarVacios() { - var funcionFiltro = function (cadena) { - try { - if (!cadena || cadena === undefined || cadena.trim() === "") { - return '---'; - }; - } catch (err) { - return '---'; - } - return cadena; - } - return funcionFiltro; - } - - function granImporte() { - var funcionFiltro = function (movimientos, valorCorte) { - if (valorCorte) { - var filtrados = []; - for (var i = 0; i < movimientos.length; i++) { - var mov = movimientos[i]; - if (mov.importe >= valorCorte) { - filtrados.push(mov); - } - } - return filtrados; - } else { - return movimientos; - } - }; - return funcionFiltro; - } - - angular.module('abFiltros', []) - .filter('abLimpiarCadena', limpiarCadena) - .filter('abRecortar', recortar) - .filter('abRellenarVacios', rellenarVacios) - .filter('abGranImporte', granImporte); -}()); diff --git a/0921-organizacion/client/index.html b/0921-organizacion/client/index.html deleted file mode 100644 index e5f01b2..0000000 --- a/0921-organizacion/client/index.html +++ /dev/null @@ -1,60 +0,0 @@ - - - - Control de Caja - - - - - - - - - - - - - - -
- -
- - - - - - - - - - - - - - - - - - - - - - - diff --git a/0921-organizacion/client/movimiento/movimiento.html b/0921-organizacion/client/movimiento/movimiento.html deleted file mode 100644 index dec2ee1..0000000 --- a/0921-organizacion/client/movimiento/movimiento.html +++ /dev/null @@ -1,55 +0,0 @@ -
-
-
-
- Ver el movimiento {{ vm.movimiento.id}} -
-
-
-
- -
-
- {{ vm.movimiento.tipo}} -
-
-
-
- -
- {{ vm.movimiento.categoria }} -
-
-
-
-
- -
- {{ vm.movimiento.fecha || date }} -
-
-
- -
- {{ vm.movimiento.importe }} -
-
-
-
-
- -
- {{ vm.movimiento.texto | abRellenarVacios | abRecortar | abLimpiarCadena }} -
-
-
- -
- -
-
-
-
-
-
-
diff --git a/0921-organizacion/client/movimiento/movimientoCtrl.js b/0921-organizacion/client/movimiento/movimientoCtrl.js deleted file mode 100644 index 0d966da..0000000 --- a/0921-organizacion/client/movimiento/movimientoCtrl.js +++ /dev/null @@ -1,8 +0,0 @@ -(function () { - var movimientoCtrl = function ($stateParams, movimientosFactory) { - var vm = this; - var movId = $stateParams.id; - vm.movimiento = movimientosFactory.movimientos.get({id:movId}); - } - angular.module('controlCajaApp').controller('MovimientoCtrl', movimientoCtrl); -}()); diff --git a/0921-organizacion/client/registro/registro.html b/0921-organizacion/client/registro/registro.html deleted file mode 100644 index a224951..0000000 --- a/0921-organizacion/client/registro/registro.html +++ /dev/null @@ -1,37 +0,0 @@ -
-
-
-
-
-
- Login -
-
- - -
- -
-
-
- - -
- -
-
-
- -
- -
- -
- -
-
-
-
-
-
-
diff --git a/0921-organizacion/client/registro/registroCtrl.js b/0921-organizacion/client/registro/registroCtrl.js deleted file mode 100644 index 7344f28..0000000 --- a/0921-organizacion/client/registro/registroCtrl.js +++ /dev/null @@ -1,26 +0,0 @@ -(function () { - var registroCtrl = function ($rootScope, $state, $http, $cookieStore) { - var urlBase = "http://localhost:3000/api/"; - var vm = this; - vm.usuario = {}; - vm.entrar = function () { - $http.post(urlBase + 'sesiones/', vm.usuario) - .success(function (data) { - $rootScope.nombre = vm.usuario.email; - $rootScope.mensaje = 'recién entrado'; - $cookieStore.put("sessionId", data); - $state.go("total"); - }); - } - vm.registrar = function () { - $http.post(urlBase + 'usuarios/', vm.usuario) - .success(function (data) { - $rootScope.nombre = vm.usuario.email; - $rootScope.mensaje = 'recién creado'; - $cookieStore.put("sessionId", data); - $state.go("total"); - }); - } - } - angular.module('controlCajaApp').controller('RegistroCtrl', registroCtrl); -}()); diff --git a/0921-organizacion/server/api/maestrosAPI.js b/0921-organizacion/server/api/maestrosAPI.js deleted file mode 100644 index e61200e..0000000 --- a/0921-organizacion/server/api/maestrosAPI.js +++ /dev/null @@ -1,10 +0,0 @@ -"use strict"; -module.exports.routeMaestros = function (app) { - app.get('/api/pub/maestros', function (req, res, next) { - var maestros = { - categoriasIngresos: ['Nómina', 'Ventas', 'Intereses Depósitos'], - categoriasGastos: ['Hipotéca', 'Compras', 'Impuestos'] - }; - res.json(maestros); - }); -} diff --git a/0921-organizacion/server/api/movimientosAPI.js b/0921-organizacion/server/api/movimientosAPI.js deleted file mode 100644 index 30e1b20..0000000 --- a/0921-organizacion/server/api/movimientosAPI.js +++ /dev/null @@ -1,26 +0,0 @@ -"use strict"; -var movimientosData = require('../data/movimientosData.js'); - -module.exports.routeMovimientos = function (app) { - - app.route('/api/priv/movimientos') - .get(function (req, res, next) { - res.json(movimientosData.getMovimientos(req.usuario)); - }) - .post(function (req, res, next) { - var movimiento = req.body; - movimiento.usuario = req.usuario; - movimientosData.postMovimiento(movimiento); - res.status(200).send(); - }); - - app.get('/api/priv/movimientos/:id', function (req, res, next) { - res.json(movimientosData.getMovimiento(req.params.id, req.usuario)); - }); - - app.get('/api/priv/total', function (req, res, next) { - res.json(movimientosData.getTotalUsuario(req.usuario)); - }); - - -} diff --git a/0921-organizacion/server/api/seguridadAPI.js b/0921-organizacion/server/api/seguridadAPI.js deleted file mode 100644 index e6b8b93..0000000 --- a/0921-organizacion/server/api/seguridadAPI.js +++ /dev/null @@ -1,45 +0,0 @@ -"use strict"; -var seguridadData = require('../data/seguridadData.js'); - -module.exports.seguridad = function (app) { - - app.use('/api/priv/', function (req, res, next) { - var sessionId = req.get('sessionId'); - var sesion = seguridadData.getSesion(sessionId); - if (sesion) { - if (sesion.timeStamp) { - req.usuario = sesion.email; - next(); - } else { - res.status(419).send('Sesión caducada'); - } - } else { - res.status(401).send('Credencial inválida'); - } - }); - - // API - REST - // SECURITY - app.route('/api/usuarios') - .post(function (req, res, next) { - var usuario = req.body; - var sesion = seguridadData.postUsuario(usuario); - if (sesion) { - res.json(sesion); - } else { - res.status(409).send('email ' + usuario.email + ' ya registrado'); - } - }); - - // Gestión de sesiones: listado y login - app.route('/api/sesiones') - .post(function (req, res, next) { - var usuario = req.body; - var sesion = seguridadData.postSesion(usuario); - if (sesion) { - res.json(sesion); - } else { - res.status(401).send('Credencial inválida'); - } - }); -} diff --git a/0921-organizacion/server/cash-flow.js b/0921-organizacion/server/cash-flow.js deleted file mode 100644 index f694ed6..0000000 --- a/0921-organizacion/server/cash-flow.js +++ /dev/null @@ -1,12 +0,0 @@ -"use strict"; -var settings = require("./settings.js"); -var app = require('./express.js').configApp(); -console.log('ready... settings ok', settings); - -require('./api/seguridadAPI.js').seguridad(app); -require('./api/maestrosAPI.js').routeMaestros(app); -require('./api/movimientosAPI.js').routeMovimientos(app); -console.log('steady... routes OK'); - -app.listen(settings.port); -console.log('go... listening on port: ' + settings.port); diff --git a/0921-organizacion/server/data/movimientosData.js b/0921-organizacion/server/data/movimientosData.js deleted file mode 100644 index c4c1ea5..0000000 --- a/0921-organizacion/server/data/movimientosData.js +++ /dev/null @@ -1,58 +0,0 @@ -"use strict"; -var maxId = 0; -var movimientos = []; -var totales = []; - -module.exports.getMovimientos = function (usuario) { - var movimientosUsuario = movimientos.filter(function (m) { - return m.usuario = usuario; - }); - return movimientosUsuario; -} - -module.exports.getMovimiento = function (movId, usuario) { - var movimientoBuscado = movimientos.filter(function (movimiento) { - return movimiento.id == movId && movimiento.usuario == usuario; - })[0]; - return movimientoBuscado; -} - -module.exports.getTotalUsuario = function (usuario) { - var totalUsuario = getTotalUsuario(usuario); - return totalUsuario; -} - -module.exports.postMovimiento = function (movimiento) { - maxId++; - movimiento.id = maxId; - movimientos.push(movimiento); - var totalUsuario = getTotalUsuario(movimiento.usuario); - if (movimiento.tipo == 'Ingreso') - totalUsuario.ingresos += movimiento.importe; - else - totalUsuario.gastos += movimiento.importe; - return getMovimientosUsuario(movimiento.usuario); -} - -function getMovimientosUsuario(usuario) { - var movimientosUsuario = movimientos.filter(function (m) { - return m.usuario = usuario; - }); - return movimientosUsuario; -} - -function getTotalUsuario(usuario) { - if (usuario === undefined) return {}; - var totalUsuario = totales.filter(function (t) { - return t.usuario == usuario; - })[0]; - if (totalUsuario === undefined) { - totalUsuario = { - usuario: usuario, - ingresos: 0, - gastos: 0 - }; - totales.push(totalUsuario); - } - return totalUsuario; -} diff --git a/0921-organizacion/server/data/seguridadData.js b/0921-organizacion/server/data/seguridadData.js deleted file mode 100644 index 3302dc8..0000000 --- a/0921-organizacion/server/data/seguridadData.js +++ /dev/null @@ -1,75 +0,0 @@ -"use strict"; -var usuarios = []; -var sesiones = []; - -module.exports.postUsuario = function (usuario) { - if (existeUsuario(usuario)) { - console.log('email ya registrado:' + usuario.email); - return null; - } else { - console.log('registrado:' + usuario.email); - usuarios.push(usuario); - return newSession(usuario.email); - } -} - -module.exports.postSesion = function (usuario) { - if (esUsuarioValido(usuario)) { - console.log('aceptado:' + usuario.email); - return newSession(usuario.email); - } else { - console.log('Credencial inválida:' + usuario.email); - return null; - } -} - -module.exports.getSesion = function (sessionId) { - var sesion = getSesion(sessionId); - if (sesion) { - if (esSesionValida(sesion)) { - sesion.timeStamp = new Date(); - return sesion; - } else { - console.log('Sesión caducada:' + JSON.stringify(sesion)); - sesion.timeStamp = null; - return sesion; - } - } else { - console.log('Credencial inválida:' + sessionId); - return null; - } -} - - -function existeUsuario(usuario) { - return usuarios.some(function (u) { - return u.email == usuario.email; - }); -} - -function esUsuarioValido(usuario) { - return usuarios.filter(function (u) { - return u.email == usuario.email && u.password == usuario.password; - })[0]; -} - -function getSesion(sessionId) { - return sesiones.filter(function (s) { - return s.sessionId == sessionId; - })[0] -} - -function esSesionValida(sesion) { - return (new Date() - sesion.timeStamp) < 20 * 60 * 1000; -} - -function newSession(email) { - var sessionId = Math.random() * (88888) + 11111; - var timeStamp = new Date(); - sesiones.push({ - sessionId: sessionId, - email: email, - timeStamp: timeStamp - }); - return sessionId; -} diff --git a/0921-organizacion/server/express.js b/0921-organizacion/server/express.js deleted file mode 100644 index 67bc83e..0000000 --- a/0921-organizacion/server/express.js +++ /dev/null @@ -1,26 +0,0 @@ -"use strict"; -module.exports.configApp = function () { - - var express = require('express'); - var bodyParser = require('body-parser'); - - var app = express(); - - app.use(bodyParser.urlencoded({ - extended: true - })); - app.use(bodyParser.json()); - app.use(express.static(__dirname + './../client')); - console.log("bodyParser y servidor de ficheros estáticos en uso"); - - app.use(function (peticion, respuesta, siguiente) { - console.log("recibida petición: " + peticion.url); - if (peticion.body && Object.keys(peticion.body).length > 0) { - console.log("body: " + JSON.stringify(peticion.body)); - } - siguiente(); - }); - - return app; - -} diff --git a/0921-organizacion/server/package.json b/0921-organizacion/server/package.json deleted file mode 100644 index ce9450d..0000000 --- a/0921-organizacion/server/package.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "name": "CashFlow", - "version": "1.0.0", - "description": "Ejemplo para formacioón MEANJS", - "main": "cash-flow.js", - "author": "info@agorabinaria.com", - "license": "ISC", - "dependencies": { - "body-parser": "^1.12.0", - "express": "^4.12.2" - } -}