Commit 4e79155f authored by D’jalmar Gutierrez Titirico's avatar D’jalmar Gutierrez Titirico 🚲

Merge branch 'desarrollo' into 'master'

Primer release oficial



See merge request !67
parents a587ea51 29adaa96
// Generated on 2016-03-11 using generator-angular-fullstack 3.3.0
'use strict';
module.exports = function (grunt) {
module.exports = function(grunt) {
var localConfig;
try {
localConfig = require('./server/config/local.env');
} catch(e) {
} catch (e) {
localConfig = {};
}
......@@ -176,7 +176,9 @@ module.exports = function (grunt) {
options: {
map: true,
processors: [
require('autoprefixer')({browsers: ['last 2 version']})
require('autoprefixer')({
browsers: ['last 2 version']
})
]
},
dist: {
......@@ -208,14 +210,14 @@ module.exports = function (grunt) {
env: {
PORT: process.env.PORT || 9001
},
callback: function (nodemon) {
nodemon.on('log', function (event) {
callback: function(nodemon) {
nodemon.on('log', function(event) {
console.log(event.colour);
});
// opens browser on initial server start
nodemon.on('config:update', function () {
setTimeout(function () {
nodemon.on('config:update', function() {
setTimeout(function() {
require('open')('http://localhost:8080/debug?port=5859');
}, 500);
});
......@@ -282,6 +284,15 @@ module.exports = function (grunt) {
js: [
[/(assets\/images\/.*?\.(?:gif|jpeg|jpg|png|webp|svg))/gm, 'Update the JS to reference our revved images']
]
},
blockReplacements: {
base: function(block) {
if (!localConfig.BASE_URL) {
return ['<base href="/">'].join('');
} else {
return ['<base href="', localConfig.BASE_URL, '">'].join('');
}
}
}
}
},
......@@ -572,10 +583,10 @@ module.exports = function (grunt) {
server: {
options: {
compass: false,
precision:8
precision: 8
},
files: {
'.tmp/app/app.css' : '<%= yeoman.client %>/app/app.scss'
'.tmp/app/app.css': '<%= yeoman.client %>/app/app.scss'
}
}
},
......@@ -653,12 +664,12 @@ module.exports = function (grunt) {
});
// Used for delaying livereload until after server has restarted
grunt.registerTask('wait', function () {
grunt.registerTask('wait', function() {
grunt.log.ok('Waiting for server reload...');
var done = this.async();
setTimeout(function () {
setTimeout(function() {
grunt.log.writeln('Done waiting!');
done();
}, 1500);
......@@ -668,7 +679,7 @@ module.exports = function (grunt) {
this.async();
});
grunt.registerTask('serve', function (target) {
grunt.registerTask('serve', function(target) {
// if (target === 'dist') {
// return grunt.task.run(['build', 'env:all', 'env:prod', 'express:prod', 'wait', 'open', 'express-keepalive']);
// }
......@@ -701,7 +712,7 @@ module.exports = function (grunt) {
]);
});
grunt.registerTask('server', function () {
grunt.registerTask('server', function() {
grunt.log.warn('The `server` task has been deprecated. Use `grunt serve` to start a server.');
grunt.task.run(['serve']);
});
......@@ -783,7 +794,7 @@ module.exports = function (grunt) {
//
// else {
// return grunt.task.run([
// 'env:all',
// '|:all',
// 'env:test',
// 'mocha_istanbul',
// 'istanbul_check_coverage'
......
This diff is collapsed.
# modulo-personal-cliente
Readme
======
Este es el cliente del modulo de personal del sistema de gestion administrativa
Este es el cliente__(página web)__ del sistema de Gestion de Personal.
Esta aplicación esta desarrollada usando Angular 1.4
Se conecta con el backend del sistema de Gestion de Personal.
## Desarrolladores
- D'jalmar
- David
- Gustavo
Equipo
------
### Prerequisitos
**Programadores**
- [Git](https://git-scm.com/)
- [Node.js and npm](nodejs.org) Node ^4.2.3, npm ^2.14.7
- [Bower](bower.io) (`npm install --global bower`)
- [Ruby](https://www.ruby-lang.org) and then `gem install sass`
- [Grunt](http://gruntjs.com/) (`npm install --global grunt-cli`)
* D'jalmar Gutierrez <mailto:dgutierrez@adsib.gob.bo>
### Para iniciar el proyecto en desarrollo se deben ejecutar los siguientes comandos en la terminal
* Teodoro Nina <mailto:tnina@adsib.gob.bo>
1. Ejecutar `npm install` para instalar las dependecias del servidor.
2. Ejecutar `bower install` para instalar las dependecias del cliente.
**Pasante**
3. Ejecutar `grunt serve` para iniciar el servidor de desarrollo. Debe iniciar automaticamente el explorador.
* Gustavo Callejas <mailto:gcallejas@adsib.gob.bo>
## Compilacion y desarrollo
Ejecutar `grunt build` para compilar el proyecto, el proyecto compilado se encuentra en la carpeta `dist` luego ejecutar `grunt serve` para una vista previa.
Prerequisitos
-------------
## Tests
- [Git]
- [Node.js and npm] Node \^4.2.3, npm \^2.14.7
- [Grunt] (`npm install --global grunt-cli`)
Ejecutar `npm test` para ejecutar todos los test(unitarios y de integracion) del proyecto
Ejecución
---------
Para iniciar el proyecto en desarrollo se deben ejecutar los siguientes
comandos en la terminal
1. Ejecutar `npm install` para instalar las dependecias del servidor.
2. Ejecutar `grunt serve` para iniciar el servidor de desarrollo. Debe
iniciar automaticamente el explorador.
Compilación y Desarrollo
------------------------
Ejecutar `grunt build` para compilar el proyecto, y el resultado de esa
compilación se encuentra en la carpeta `dist` luego ejecutar **grunt
serve** para una vista previa.
Test
----
Ejecutar `npm test` para ejecutar todos los test(unitarios y de
integración) del proyecto
[Git]: https://git-scm.com/
[Node.js and npm]: nodejs.org
[Grunt]: http://gruntjs.com/
......@@ -2,24 +2,30 @@
"name": "modulo-personal",
"version": "0.0.0",
"dependencies": {
"angular": "~1.4.10",
"angular": "1.4.12",
"json3": "~3.3.1",
"es5-shim": "~3.0.1",
"bootstrap-sass-official": "~3.1.1",
"bootstrap": "~3.1.1",
"angular-resource": "~1.4.0",
"angular-cookies": "~1.4.0",
"angular-sanitize": "~1.4.0",
"angular-bootstrap": "~1.2.4",
"angular-sanitize": "~1.4.11",
"angular-bootstrap": "~1.2.5",
"font-awesome": ">=4.1.0",
"lodash": "~2.4.1",
"angular-ui-router": "~0.2.18",
"angular-validation-match": "~1.4.0",
"angular-animate": "^1.4.9",
"ng-tags-input": "^3.0.0"
"angular-validation-match": "~1.4.1",
"angular-animate": "~1.4.11",
"ng-tags-input": "3.1.1",
"ui-router-extras": "^0.1.2",
"angular-i18n": "^1.5.6",
"angular-ui-tree": "^2.16.0",
"angular-loading-bar": "^0.9.0",
"raphael": "^2.2.1",
"jquery.easing": "^1.3.1"
},
"devDependencies": {
"angular-mocks": "~1.4.0"
"angular-mocks": "~1.4.11"
},
"overrides": {
"ng-tags-input": {
......@@ -28,6 +34,11 @@
"ng-tags-input.min.css",
"ng-tags-input.bootstrap.min.css"
]
},
"angular-i18n": {
"main": [
"angular-locale_es-bo.js"
]
}
}
}
......@@ -3,7 +3,7 @@
angular.module('moduloPersonalApp.constants', [])
.constant('appConfig', {userRoles:['guest','user','ADMINISTRATOR'],serverAddress:'http://localhost:9000',clientAddress:'http:localhost:9000'})
.constant('appConfig', {userRoles:['guest','user','ADMINISTRATOR'],serverAddress:'http://test.adsib.gob.bo/api_contratacion',clientAddress:'http:localhost:9000'})
;
})(angular);
\ No newline at end of file
......@@ -8,26 +8,30 @@ angular.module('moduloPersonalApp', [
'ngSanitize',
'ngTagsInput',
'ngAnimate',
'angular-loading-bar',
'ui.router',
'ui.bootstrap',
'validation.match'
'validation.match',
'ct.ui.router.extras',
'ui.tree'
])
.run(
[ '$rootScope', '$state', '$stateParams',
function ($rootScope, $state, $stateParams) {
['$rootScope', '$state', '$stateParams','appConfig','$location',
function ($rootScope, $state, $stateParams, appConfig, $location) {
// It's very handy to add references to $state and $stateParams to the $rootScope
// so that you can access them from any scope within your applications.For example,
// <li ng-class="{ active: $state.includes('contacts.list') }"> will set the <li>
// to active whenever 'contacts.list' or one of its decendents is active.
// $location.path('/asd/');
$rootScope.$state = $state;
$rootScope.$stateParams = $stateParams;
}
]
)
.config(function($urlRouterProvider, $locationProvider) {
$urlRouterProvider
.otherwise('/');
.config(function ($urlRouterProvider, $locationProvider,appConfig) {
//
// $urlRouterProvider
// .otherwise('/');
$locationProvider.html5Mode(true);
});
......@@ -7,6 +7,9 @@ $gray-dark: #373a3c !default;
$btn-secondary-color: $gray-dark !default;
$btn-secondary-bg: #fff !default;
$btn-secondary-border: #ccc !default;
//textos personalizados
$state-danger-text: $brand-danger;
$state-success-text: $brand-success;
$icon-font-path: "../bower_components/bootstrap-sass-official/vendor/assets/fonts/bootstrap/";
@import '../bower_components/bootstrap-sass-official/vendor/assets/stylesheets/bootstrap';
$fa-font-path: "../bower_components/font-awesome/fonts";
......@@ -110,6 +113,8 @@ tags-input.primary .tags .tag-item {
border-radius: 4px;
}
//labels
//titulos
h4.color-primary {
......@@ -129,7 +134,7 @@ h4.color-primary {
border-bottom: 1px solid #eee;
}
.input-group {
div.input-group {
margin-bottom: 10px;
}
......@@ -138,20 +143,94 @@ h4.color-primary {
margin-bottom: 10px;
}
//inputs con iconos
input[type=radio].with-font,
input[type=checkbox].with-font {
border: 0;
clip: rect(0 0 0 0);
height: 1px;
margin: -1px;
overflow: hidden;
padding: 0;
position: absolute;
width: 1px;
}
input[type=radio].with-font ~ label:before,
input[type=checkbox].with-font ~ label:before {
font-family: FontAwesome;
display: inline-block;
content: "\f1db";
letter-spacing: 10px;
font-size: 1.2em;
color: #535353;
width: 1.4em;
}
input[type=radio].with-font:checked ~ label:before,
input[type=checkbox].with-font:checked ~ label:before {
content: "\f00c";
font-size: 1.2em;
color: $brand-primary;
letter-spacing: 5px;
}
input[type=checkbox].with-font ~ label:before {
content: "\f204";
}
input[type=checkbox].with-font:checked ~ label:before {
content: "\f205";
//color: darkgreen;
}
//personalizacion del loading-bar
#loading-bar .bar {
background: $brand-info;
height: 4px;
}
#loading-bar-spinner .spinner-icon {
border: solid 3px transparent;
border-top-color: $brand-info;
border-left-color: $brand-info;
width: 18px;
height: 18px;
}
//input[type=radio].with-font:focus ~ label:before,
//input[type=checkbox].with-font:focus ~ label:before,
//input[type=radio].with-font:focus ~ label,
//input[type=checkbox].with-font:focus ~ label
//{
// color: green;
//}
// Component styles are injected through grunt
// injector
@import 'cargos/cargos.scss';
@import 'cargosConvocatorias/cargosConvocatorias.scss';
@import 'comentarios/comentarios.scss';
@import 'datosPostulantes/datosPostulantes.scss';
@import 'contrataciones/contrataciones.scss';
@import 'convocatorias/convocatorias.scss';
@import 'datosPersonas/datosPersonas.scss';
@import 'entidades/entidades.scss';
@import 'etapas/etapas.scss';
@import 'evaluaciones/evaluaciones.scss';
@import 'evaluacionesCargosEtapas/evaluacionesCargosEtapas.scss';
@import 'main/main.scss';
@import 'migracionMoodle/migracionMoodle.scss';
@import 'personas/personas.scss';
@import 'postulaciones/postulaciones.scss';
@import 'postulantes/postulantes.scss';
@import 'relacionesLaborales/relacionesLaborales.scss';
@import 'tags/tags.scss';
@import 'tagsPostulantes/tagsPostulantes.scss';
@import 'tagsPersonas/tagsPersonas.scss';
@import 'tiposDato/tiposDato.scss';
@import 'tiposEntidad/tiposEntidad.scss';
@import '../components/footer/footer.scss';
@import '../components/modal/modal.scss';
@import '../components/organigrama/framework/angular-treant-js/Treant.scss';
@import '../components/organigrama/framework/angular-treant-js/collapsable.scss';
@import '../components/organigrama/framework/angular-treant-js/custom-colored.scss';
@import '../components/organigrama/framework/angular-treant-js/vendor/perfect-scrollbar/perfect-scrollbar.scss';
@import '../components/organigrama/framework/jquery.orgchart.scss';
// endinjector
(()=> {
'use strict';
class CalificacionService {
constructor($resource, appConfig) {
this.resource = $resource(appConfig.serverAddress + '/api/calificaciones/:id', {id: '@_id'}, {
update: {method: 'PUT'},
query: {isArray: false}
})
}
calificaciones(parametros) {
return this.resource.query(parametros).$promise;
}
calificacion(id, parametros = {}) {
parametros.id = id;
return this.resource.get(parametros).$promise;
}
crear(calificacion) {
return this.resource.save(calificacion).$promise;
}
editar(id, calificacion) {
return this.resource.update({id: id}, calificacion).$promise;
}
eliminar(id) {
return this.resource.remove({id: id}).$promise;
}
}
angular.module('moduloPersonalApp')
.service('CalificacionService', CalificacionService);
})();
(()=> {
'use strict';
class CalificacionCrearModalController {
constructor($uibModalInstance, parametros, CalificacionService) {
this.errores = {};
this.enviado = false;
this.modal = $uibModalInstance;
this.service = CalificacionService;
this.evaluacionInicial = parametros.evaluacion;
this.calificacion = Object.assign({}, parametros.evaluacion.Calificacion);
}
guardar(form) {
this.enviado = true;
if (form.$valid) {
if (!this.calificacion._id) {
this.service.crear(this.calificacion)
.then(calificacion=> {
this.modal.close(calificacion)
})
.catch(err=> {
this.errores.otros = err.data.message || err;
})
}
else {
this.service.editar(this.evaluacionInicial.Calificacion._id, this.calificacion)
.then(calificacion=> {
this.modal.close(calificacion)
})
.catch(err=> {
this.errores.otros = err.data.message || err;
})
}
}
}
}
angular.module('moduloPersonalApp')
.controller('CalificacionCrearModalCtrl', CalificacionCrearModalController)
})();
<form class="form" name="form" ng-submit="vm.guardar(form)" novalidate>
<div class="modal-header modal-header-primary">
<button type="button" ng-click="vm.modal.dismiss()" class="close">&times;</button>
<h4 class="modal-title">Evaluación</h4>
</div>
<div class="modal-body">
<div class="row">
<div class="text-right" title="Evaluación">
<i class="fa fa-check-square-o fa-lg" title="Evaluacion"></i>
{{vm.evaluacionInicial.nombre}} &nbsp;&nbsp;&nbsp;
</div>
</div>
<div class="row">
<div class="col-md-12">
<label>Calificación</label>
<input type="number" name="valor" class="form-control" ng-model="vm.calificacion.valor" max="100"
required autofocus>
<p class="help-block" ng-show="form.valor.$error.required && vm.enviado">
Ingrese una calificación
</p>
<p class="help-block" ng-show="form.valor.$error.max">
El valor maximo es 100
</p>
</div>
</div>
<div class="form-group has-error">
<p class="help-block">{{ vm.errores.otros}}</p>
</div>
</div>
<div class="modal-footer">
<button class="btn btn-primary-outline" type="submit"
ng-disabled="!(form.valor.$dirty ) || form.$invalid">
Guardar
</button>
<button class="btn btn-default" type="button" ng-click="vm.modal.dismiss()">Cancelar</button>
</div>
</form>
......@@ -2,36 +2,64 @@
(()=> {
class CargoController {
constructor($state, cargoService, postulacionService, postulanteService, $uibModal) {
this.$state = $state;
constructor($stateParams, cargoService, ConvocatoriaService, $uibModal, Modal) {
this.cargos = [];
this.cargo = {};
this.alertas = [];
if ($stateParams.convocatoriaId) {
this.entidadId = $stateParams.entidadId;
this.convocatoriaId = $stateParams.convocatoriaId;
}
this.service = cargoService;
this.postulanteService = postulanteService;
this.postulacionService = postulacionService;
this.convocatoriaService = ConvocatoriaService;
this.modal = $uibModal;
this.Modal = Modal;
this.paginaActual = 1;
this.cambiarPagina();
}
cambiarPagina() {
this.service.getCargos({pagina: this.paginaActual, elementos: 15, ordenarPor: 'nombre'})
.then(respuesta=> {
this.cargos = respuesta.rows;
this.totalElementos = respuesta.count;
});
let parametros = {pagina: this.paginaActual, elementos: 15, ordenarPor: 'nombre'}
if (!this.convocatoriaId)
this.service.getCargos(parametros)
.then(respuesta=> {
this.cargos = respuesta.rows;
console.log(respuesta);
this.totalElementos = respuesta.count;
});
else
this.convocatoriaService.cargos(this.convocatoriaId, parametros)
.then(respuesta=> {
this.cargos = respuesta.rows;
console.log(respuesta);
this.totalElementos = respuesta.count;
});
}
editar(id) {
this.$state.go('cargos.editar', {cargoId: id});
eliminar(cargo) {
this.Modal.confirm.eliminar(cargo=> {
this.service.eliminarCargo(cargo._id)
.then(()=> {
this.cargos.splice(this.cargos.indexOf(cargo), 1);
this.alertas.push({tipo: 'success', mensaje: 'Se elimino corectamente el cargo: ' + cargo.nombre})
})
.catch(e=> {
this.alertas.push({
tipo: 'danger',
mensaje: 'Ocurrio un problema al realizar la operación'
})
})
})(cargo.nombre, cargo);
}
crearCargos() {
crearCargo() {
this.modal.open({
templateUrl: 'app/cargos/modals/cargos.crear.modal.html',
controller: 'CargosCreaModalCtrl',
controllerAs: 'vm'