Commit 841f31cf authored by D’jalmar Gutierrez Titirico's avatar D’jalmar Gutierrez Titirico 🚲

Merge branch 'iss5622-vistas-modelos-examenes' into 'desarrollo'

#32 Iss5622 vistas modelos examenes



See merge request !45
parents 39ea9ede 28a0eb40
......@@ -18,7 +18,8 @@
"angular-animate": "1.4.11",
"ng-tags-input": "^3.1.1",
"ui-router-extras": "^0.1.2",
"angular-i18n": "^1.5.6"
"angular-i18n": "^1.5.6",
"angular-ui-tree": "^2.16.0"
},
"devDependencies": {
"angular-mocks": "~1.4.11"
......
......@@ -11,24 +11,25 @@ angular.module('moduloPersonalApp', [
'ui.router',
'ui.bootstrap',
'validation.match',
'ct.ui.router.extras'
'ct.ui.router.extras',
'ui.tree'
])
.run(
[ '$rootScope', '$state', '$stateParams',
function ($rootScope, $state, $stateParams) {
.run(
['$rootScope', '$state', '$stateParams',
function ($rootScope, $state, $stateParams) {
// 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.
$rootScope.$state = $state;
$rootScope.$stateParams = $stateParams;
}
]
)
.config(function($urlRouterProvider, $locationProvider) {
// 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.
$rootScope.$state = $state;
$rootScope.$stateParams = $stateParams;
}
]
)
.config(function ($urlRouterProvider, $locationProvider) {
$urlRouterProvider
.otherwise('/');
$locationProvider.html5Mode(true);
});
$urlRouterProvider
.otherwise('/');
$locationProvider.html5Mode(true);
});
......@@ -189,9 +189,13 @@ input[type=checkbox].with-font:checked ~ label:before {
@import 'cargos/cargos.scss';
@import 'cargosConvocatorias/cargosConvocatorias.scss';
@import 'comentarios/comentarios.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 'gruposConvocatoria/gruposConvocatoria.scss';
@import 'main/main.scss';
@import 'personas/personas.scss';
......
(()=> {
'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;
if (parametros.evaluacion.Calificacion._id) {
this.evaluacion = Object.assign({}, parametros.evaluacion);
this.evaluacionInicial = parametros.evaluacion;
}
else
this.evaluacion = parametros.evaluacion;
}
guardar(form) {
this.enviado = true;
if (form.$valid) {
if (!this.evaluacion.Calificacion._id) {
this.service.crear(this.evaluacion.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.evaluacion.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.evaluacion.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.evaluacion.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>
<div class="container">
<div ui-view></div>
<div ui-view="cargo"></div>
<div ui-view="cargo" class="row"></div>
<div ui-view="convocatorias"></div>
<div ui-view="relacionesLaborales"></div>
</div>
......
<div class="container">
<div class="row">
<div class="col-sm-5 col-md-4 col-xs-6">
<h4 class="color-primary">Cargos
<small><span class="label label-default">{{vm.totalElementos}}</span></small>
</h4>
</div>
<div class="col-sm-5 col-md-4 col-sm-offset-2">
<div class="pull-right">
<button class="btn btn-success-outline" ng-click="vm.crearCargo()" type="button"><i
class="fa fa-plus"></i>
Crear cargo
</button>
</div>
</div>
</div>
<div class="col-md-10">
<uib-alert ng-repeat="alerta in vm.alertas" type="{{alerta.tipo}}" close="vm.alertas.splice($index,1)"
dismiss-on-timeout="3000">{{alerta.mensaje}}
</uib-alert>
</div>
<blockquote class="col-md-12 blockquote-primary" ng-show="vm.totalElementos>0">
<div class="row">
<div class="col-sm-5 col-md-4 col-xs-6">
<h4 class="color-primary">Cargos
<small><span class="label label-default">{{vm.totalElementos}}</span></small>
</h4>
<div class="table-responsive col-md-10">
<table class="table table-hover">
<thead>
<tr>
<th>Nombre del cargo</th>
<th class="text-right">Opciones</th>
</tr>
</thead>
<tbody>
<tr ng-repeat="cargo in vm.cargos"
ui-sref="cargos.editar({cargoId:cargo._id})">
<td>{{cargo.nombre}} <label class="label label-warning" ng-show="cargo.Contratos">Ocupado</label></td>
<td class="text-right">
<div class="btn-group" role="group">
<a class="btn btn-info-outline btn-xs" href="#" role="button"
ui-sref="cargos.editar({cargoId:cargo._id})">
<i class="fa fa-edit fa-lg"></i>
</a>
<a class="btn btn-danger-outline btn-xs" href="#" role="button" ng-click="vm.eliminar(cargo)">
<i class="fa fa-trash fa-lg"></i>
</a>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<div ng-show="!vm.grupoId" class="col-sm-5 col-md-4 col-sm-offset-2">
<div class="pull-right">
<button class="btn btn-success-outline" ng-click="vm.crearCargo()" type="button"><i
class="fa fa-plus"></i>
Crear cargo
</button>
</div>
<div class="col-md-10">
<uib-pagination
ng-hide="vm.totalElementos<10"
total-items="vm.totalElementos"
items-per-page="15"
max-size="8"
force-ellipses="true"
ng-model="vm.paginaActual"
ng-change="vm.cambiarPagina()"
next-text="Siguiente"
previous-Text="Anterior"></uib-pagination>
</div>
</div>
<div class="col-md-10">
<uib-alert ng-repeat="alerta in vm.alertas" type="{{alerta.tipo}}" close="vm.alertas.splice($index,1)"
dismiss-on-timeout="3000">{{alerta.mensaje}}
</uib-alert>
</div>
<blockquote class="col-md-12 blockquote-primary" ng-show="vm.totalElementos>0">
<div class="row">
<div class="table-responsive col-md-10">
<table class="table table-hover">
<thead>
<tr>
<th>Nombre del cargo</th>
<th colspan="2">Opciones</th>
</tr>
</thead>
<tbody>
<tr ng-repeat="cargo in vm.cargos"
ui-sref="cargos.editar({cargoId:cargo._id})">
<td>{{cargo.nombre}} <label class="label label-warning" ng-show="cargo.Contratos">Ocupado</label></td>
<td ng-show="!vm.grupoId">
<div class="btn-group" role="group">
<a class="btn btn-info-outline btn-xs" href="#" role="button"
ui-sref="cargos.editar({cargoId:cargo._id})">
<i class="fa fa-edit fa-lg"></i>
</a>
<a class="btn btn-danger-outline btn-xs" href="#" role="button" ng-click="vm.eliminar(cargo)">
<i class="fa fa-trash fa-lg"></i>
</a>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<div class="col-md-10">
<uib-pagination
ng-hide="vm.totalElementos<10"
total-items="vm.totalElementos"
items-per-page="15"
max-size="8"
force-ellipses="true"
ng-model="vm.paginaActual"
ng-change="vm.cambiarPagina()"
next-text="Siguiente"
previous-Text="Anterior"></uib-pagination>
</div>
</div>
</blockquote>
</div>
</blockquote>
......@@ -26,6 +26,15 @@
this.cargosConvocatoria = respuesta;
});
}
eliminar(cargoConvocatoria) {
this.Modal.confirm.eliminar(cargoConvocatoria=> {
this.service.eliminar(cargoConvocatoria._id).then(()=> {
this.cargosConvocatoria.rows.splice(this.cargosConvocatoria.rows.indexOf(cargoConvocatoria), 1);
this.alertas.push({tipo: 'danger', mensaje: 'La relación con el cargo se elimino correctamente'});
});
})('la relación con el cargo: ' + cargoConvocatoria.Cargo.nombre, cargoConvocatoria);
}
}
angular.module('moduloPersonalApp')
.controller('CargoConvocatoriaCtrl', CargoConvocatoriaController);
......
<div class="container">
<div ui-view></div>
<div ui-view="cargoConvocatoria"></div>
<div ui-view="postulaciones"></div>
<div ui-view="cargoConvocatoria" class="row"></div>
<div ui-view="postulaciones" class="row"></div>
<div ui-view="evaluacionesCargosEtapas" class="row"></div>
</div>
<div class="container">
<div class="row">
<div class="col-sm-5 col-md-4 col-xs-6">
<h4 class="color-primary">Cargos
<small><span class="label label-default">{{vm.cargosConvocatoria.count}}</span></small>
</h4>
</div>
</div>
<div class="col-md-10">
<uib-alert ng-repeat="alerta in vm.alertas" type="{{alerta.tipo}}" close="vm.alertas.splice($index,1)"
dismiss-on-timeout="3000">{{alerta.mensaje}}
</uib-alert>
</div>
<blockquote class="col-md-12 blockquote-primary" ng-show="vm.cargosConvocatoria.count>0">
<div class="row">
<div class="col-sm-5 col-md-4 col-xs-6">
<h4 class="color-primary">Cargos
<small><span class="label label-default">{{vm.cargosConvocatoria.count}}</span></small>
</h4>
<div class="table-responsive col-md-10">
<table class="table table-hover">
<thead>
<tr>
<th>Nombre del cargo</th>
<th class="text-right">Opciones</th>
</tr>
</thead>
<tbody>
<tr ng-repeat="cargo in vm.cargosConvocatoria.rows"
ui-sref="entidades.convocatorias.cargosConvocatoria.editar({entidadId:vm.entidadId,convocatoriaId:vm.convocatoriaId,cargoConvocatoriaId:cargo._id})">
<td>{{cargo.Cargo.nombre}}</td>
<td class="text-right">
<div class="btn-group" role="group">
<a class="btn btn-info-outline btn-xs" role="button"
ui-sref="cargos.editar({cargoId:cargo._id})" ng-click="$event.stopPropagation()">
<i class="fa fa-edit fa-lg"></i>
</a>
<a class="btn btn-danger-outline btn-xs" role="button"
ng-click="vm.eliminar(cargo);$event.stopPropagation()">
<i class="fa fa-trash fa-lg"></i>
</a>
</div>
</td>
</tr>
</tbody>
</table>
</div>
</div>
<div class="col-md-10">
<uib-alert ng-repeat="alerta in vm.alertas" type="{{alerta.tipo}}" close="vm.alertas.splice($index,1)"
dismiss-on-timeout="3000">{{alerta.mensaje}}
</uib-alert>
</div>
<blockquote class="col-md-12 blockquote-primary" ng-show="vm.cargosConvocatoria.count>0">
<div class="row">
<div class="table-responsive col-md-10">
<table class="table table-hover">
<thead>
<tr>
<th>Nombre del cargo</th>
<th colspan="2">Opciones</th>
</tr>
</thead>
<tbody>
<tr ng-repeat="cargo in vm.cargosConvocatoria.rows"
ui-sref="entidades.convocatorias.cargosConvocatoria.editar({entidadId:vm.entidadId,convocatoriaId:vm.convocatoriaId,cargoConvocatoriaId:cargo._id})">
<td>{{cargo.Cargo.nombre}}</td>
<td>
<div class="btn-group" role="group">
<a class="btn btn-info-outline btn-xs" href="#" role="button"
ui-sref="cargos.editar({cargoId:cargo._id})">
<i class="fa fa-edit fa-lg"></i>
</a>
<a class="btn btn-danger-outline btn-xs" href="#" role="button" ng-click="vm.eliminar(cargo)">
<i class="fa fa-trash fa-lg"></i>
</a>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<div class="col-md-10">
<uib-pagination
ng-hide="vm.cargosConvocatoria.count<10"
total-items="vm.cargosConvocatoria.count"
items-per-page="15"
max-size="8"
force-ellipses="true"
ng-model="vm.paginaActual"
ng-change="vm.cambiarPagina()"
next-text="Siguiente"
previous-Text="Anterior"></uib-pagination>
</div>
<div class="col-md-10">
<uib-pagination
ng-hide="vm.cargosConvocatoria.count<10"
total-items="vm.cargosConvocatoria.count"
items-per-page="15"
max-size="8"
force-ellipses="true"
ng-model="vm.paginaActual"
ng-change="vm.cambiarPagina()"
next-text="Siguiente"
previous-Text="Anterior"></uib-pagination>
</div>
</blockquote>
</div>
</div>
</blockquote>
......@@ -9,6 +9,16 @@
postulaciones: {
method: 'GET',
url: appConfig.serverAddress + '/api/cargosConvocatorias/:id/postulantes'
},
evaluacionesCargosEtapas: {
method: 'GET',
isArray: false,
url: appConfig.serverAddress + '/api/cargosConvocatorias/:id/evaluacionesCargosEtapas'
},
agregarEvaluacionesCargosEtapas: {
method: 'POST',
isArray: true,
url: appConfig.serverAddress + '/api/cargosConvocatorias/:id/evaluacionesCargosEtapas'
}
})
}
......@@ -18,10 +28,23 @@
return this.resource.get(parametros).$promise
}
eliminar(id) {
return this.resource.remove({id: id}).$promise;
}
postulaciones(id, parametros = {}) {
parametros.id = id;
return this.resource.postulaciones(parametros).$promise;
}
evaluacionesCargosEtapas(id, parametros = {}) {
parametros.id = id;
return this.resource.evaluacionesCargosEtapas(parametros).$promise;
}
agregarEvaluacionesCargosEtapas(id, evaluacionesCargosEtapas) {
return this.resource.agregarEvaluacionesCargosEtapas({id: id}, evaluacionesCargosEtapas).$promise;
}
}
angular.module('moduloPersonalApp')
......
......@@ -17,7 +17,6 @@
console.log(cargoConvocatoria);
this.cargoConvocatoria = cargoConvocatoria;
})
}
}
angular.module('moduloPersonalApp')
......
<div>
<div class="row">
<div class="col-sm-5 col-md-4 col-xs-6">
<h3>Cargo - Convocatoria</h3>
</div>
<div class="col-sm-5 col-md-4 col-sm-offset-2">
<div class="pull-right">
<a class="btn btn-default header-button" ng-click="vm.estadoAnterior.go()">
<i class="fa fa-arrow-left"></i>
Regresar
</a>
</div>
<div class="row">
<div class="col-sm-5 col-md-4 col-xs-6">
<h3>Cargo - Convocatoria</h3>
</div>
<div class="col-sm-5 col-md-4 col-sm-offset-2">
<div class="pull-right">
<a class="btn btn-default header-button" ng-click="vm.estadoAnterior.go()">
<i class="fa fa-arrow-left"></i>
Regresar
</a>
</div>
</div>
<uib-alert ng-repeat="alerta in vm.alertas" type="{{alerta.tipo}}" close="vm.alertas.splice($index,1)"
dismiss-on-timeout="3000">{{alerta.mensaje}}
</uib-alert>
<div>
<div class="container">
<h4 class="color-primary">Cargo</h4>
<blockquote class="col-md-12 blockquote-primary">
<form class="form" name="form" novalidate>
<div class="row">
<div class="col-md-10">
<label>Nombre</label>
<div class="input-group">
<input type="text" name="nombre" class="form-control" ng-model="vm.cargoConvocatoria.Cargo.nombre"
placeholder="Nombre de cargo" required>
</div>
<uib-alert ng-repeat="alerta in vm.alertas" type="{{alerta.tipo}}" close="vm.alertas.splice($index,1)"
dismiss-on-timeout="3000">{{alerta.mensaje}}
</uib-alert>
<div>
<div class="">
<h4 class="color-primary">Cargo</h4>
<blockquote class="col-md-12 blockquote-primary">
<form class="form" name="form" novalidate>
<div class="row">
<div class="col-md-10">
<label>Nombre</label>
<div class="input-group">
<input type="text" name="nombre" class="form-control" ng-model="vm.cargoConvocatoria.Cargo.nombre"
placeholder="Nombre de cargo" required>
<span class="input-group-btn">
<button type="button" class="btn btn-primary-outline" ui-sref="cargos.editar({cargoId:vm.cargoConvocatoria.fk_cargo})">
<button type="button" class="btn btn-primary-outline"
ui-sref="cargos.editar({cargoId:vm.cargoConvocatoria.fk_cargo})">
Ir al cargo
<i class="fa fa-lg fa-arrow-right"></i>
</button>
</span>
</div>
</div>
</div>
<div class="form-group has-error">
<p class="help-block"
ng-show="(form.nombre.$error.required) && vm.enviado">
Debe llenar el nombre.
</p>
<p class="help-block">{{ vm.erroresCargo.other }}</p>
</div>
</form>
</blockquote>
</div>
</div>
<div class="form-group has-error">
<p class="help-block"
ng-show="(form.nombre.$error.required) && vm.enviado">
Debe llenar el nombre.
</p>
<p class="help-block">{{ vm.erroresCargo.other }}</p>
</div>
</form>
</blockquote>
</div>
</div>
<div class="container">
<div ui-view></div>
<div ui-view="convocatoria"></div>
<div ui-view="cargos"></div>
<div ui-view="convocatoria" class="row"></div>
<div ui-view="etapas" class="row"></div>
<div ui-view="evaluaciones" class="row"></div>
<div ui-view="cargos" class="row"></div>
</div>
......@@ -22,6 +22,21 @@
isArray: true,
method: 'PUT',
url: appConfig.serverAddress + '/api/convocatorias/:id/cargos'
},
ordenarEtapas: {
isArray: true,
method: 'PUT',
url: appConfig.serverAddress + '/api/convocatorias/:id/ordenarEtapas'
},
etapas: {
isArray: false,
method: 'GET',
url: appConfig.serverAddress + '/api/convocatorias/:id/etapas'
},
evaluaciones: {
isArray: false,
method: 'GET',
url: appConfig.serverAddress + '/api/convocatorias/:id/evaluaciones'
}
})
}
......@@ -64,6 +79,20 @@
editarCargos(id, cargos) {
return this.resource.editarCargos({id: id}, cargos).$promise;
}
evaluaciones(id, parametros = {}) {
parametros.id = id;
return this.resource.evaluaciones(parametros).$promise;
}
etapas(id, parametros = {}) {
parametros.id = id;
return this.resource.etapas(parametros).$promise;
}
ordenarEtapas(id, parametros) {
return this.resource.ordenarEtapas({id: id}, parametros).$promise;
}
}
angular.module('moduloPersonalApp')
.service('ConvocatoriaService', ConvocatoriaService);
......
<div>
<div class="row">
<div class="col-sm-5 col-md-4 col-xs-6">
<h3>Convocatoria</h3>
</div>
<div class="col-sm-5 col-md-4 col-sm-offset-2">
<div class="pull-right">
<a class="btn btn-default header-button" ng-click="vm.estadoAnterior.go()">
<i class="fa fa-arrow-left"></i>
Regresar
</a>
</div>
<div class="row">
<div class="col-sm-5 col-md-4 col-xs-6">
<h3>Convocatoria</h3>
</div>
<div class="col-sm-5 col-md-4 col-sm-offset-2">
<div class="pull-right">
<a class="btn btn-default header-button" ng-click="vm.estadoAnterior.go()">
<i class="fa fa-arrow-left"></i>
Regresar
</a>