Commit 5eabc4c5 authored by D’jalmar Gutierrez Titirico's avatar D’jalmar Gutierrez Titirico 🚲

se agregaron las vistas para la creacion y asociacion de las etapas con las evaluaciones

parent 39ea9ede
......@@ -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';
......
<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>
<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" 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>
<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'
}
})
}
......@@ -22,6 +32,15 @@
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')
......
<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>
</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>Descripción</label>
<div class="input-group">
</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 class="row">
<div class="col-sm-5 col-md-4 col-xs-6">
<h4 class="color-primary">Convocatoria</h4>
</div>
</div>
<blockquote class="col-md-12 blockquote-primary">
<form class="form" name="form" novalidate>
<div class="row">
<div class="col-md-10">
<label>Descripción</label>
<div class="input-group">
<textarea type="text" name="descripcion" class="form-control" rows="5"
ng-model="vm.convocatoria.descripcion"
required>
......@@ -33,52 +34,49 @@
ng-disabled="!form.descripcion.$dirty">
<i class="fa fa-save"></i>
</span>
</div>
</div>
</div>
<div class="row">
<div class="col-md-10">
<label>Fecha de inicio</label>
<div class="input-group">
<input class="form-control" name="fechaInicio" ng-model="vm.convocatoria.fechaInicio" type="text"
uib-datepicker-popup="dd/MM/yyyy" name="fechaContratacion" ng-init="abierto=false"
is-open="abierto"
close-text="Cancelar" current-text="Hoy" clear-text="Limpiar" required>
</div>
</div>
</div>
<div class="row">
<div class="col-md-10">
<label>Fecha de inicio</label>
<div class="input-group">
<input class="form-control" name="fechaInicio" ng-model="vm.convocatoria.fechaInicio" type="text"
uib-datepicker-popup="dd/MM/yyyy" name="fechaContratacion" ng-init="abierto=false"
is-open="abierto"
close-text="Cancelar" current-text="Hoy" clear-text="Limpiar" required>
<span class="input-group-btn">
<button type="button" class="btn btn-primary-outline" ng-click="abierto = true">
<i class="fa fa-calendar"></i></button>
<button type="button" class="btn btn-primary-outline" ng-click="vm.guardar(form,'fechaInicio')"
ng-disabled="!form.fechaInicio.$dirty"><i class="fa fa-save"></i></button>
</span>
</div>
</div>
</div>
<div class="row">
<div class="col-md-10">
<label>Fecha de finalización</label>
<div class="input-group">
<input class="form-control" name="fechaFin" ng-model="vm.convocatoria.fechaFin" type="text"
uib-datepicker-popup="dd/MM/yyyy" name="fechaContratacion" ng-init="abiertoFin=false"
is-open="abiertoFin"
close-text="Cancelar" current-text="Hoy" clear-text="Limpiar" required>
</div>
</div>
</div>
<div class="row">
<div class="col-md-10">
<label>Fecha de finalización</label>
<div class="input-group">
<input class="form-control" name="fechaFin" ng-model="vm.convocatoria.fechaFin" type="text"
uib-datepicker-popup="dd/MM/yyyy" name="fechaContratacion" ng-init="abiertoFin=false"
is-open="abiertoFin"
close-text="Cancelar" current-text="Hoy" clear-text="Limpiar" required>
<span class="input-group-btn">
<button type="button" class="btn btn-primary-outline" ng-click="abiertoFin = true">
<i class="fa fa-calendar"></i></button>
<button type="button" class="btn btn-primary-outline" ng-click="vm.guardar(form,'fechaFin')"
ng-disabled="!form.fechaFin.$dirty"><i class="fa fa-save"></i></button>
</span>
</div>
</div>
</div>
<div class="form-group has-error">
<p class="help-block"
ng-show="(form.nombre.$error.required ||form.descripcion.$error.required || form.correo.$error.required) && vm.enviado">
Debe llenar todos los campos
</p>
<p class="help-block">{{ vm.errores.other }}</p>
</div>
</form>
</blockquote>
</div>
</div>
</div>
</div>
</div>
<div class="form-group has-error">
<p class="help-block"
ng-show="(form.nombre.$error.required ||form.descripcion.$error.required || form.correo.$error.required) && vm.enviado">
Debe llenar todos los campos
</p>
<p class="help-block">{{ vm.errores.other }}</p>
</div>
</form>
</blockquote>
......@@ -58,6 +58,16 @@ angular.module('moduloPersonalApp')
controller: 'ConvocatoriaEditarCtrl',
controllerAs: 'vm'
},
'etapas': {
templateUrl: 'app/etapas/etapas.lista.html',
controller: 'EtapaCtrl',
controllerAs: 'vm'
},
'evaluaciones': {
templateUrl: 'app/evaluaciones/evaluaciones.lista.html',
controller: 'EvaluacionCtrl',
controllerAs: 'vm'
},
'cargos': {
templateUrl: 'app/cargosConvocatorias/cargosConvocatorias.lista.html',
controller: 'CargoConvocatoriaCtrl',
......@@ -82,6 +92,11 @@ angular.module('moduloPersonalApp')
templateUrl: 'app/postulaciones/postulaciones.lista.html',
controller: 'PostulacionCtrl',
controllerAs: 'vm'
},
'evaluacionesCargosEtapas': {
templateUrl: 'app/evaluacionesCargosEtapas/evaluacionesCargosEtapas.lista.html',
controller: 'EvaluacionCargoEtapaCtrl',
controllerAs: 'vm'
}
}
})
......
(()=> {
'use strict';
class EtapaController {
constructor($stateParams, $uibModal, Modal, EtapaService, ConvocatoriaService) {
this.errores = {}; // lista de errores
this.modal = $uibModal;
this.Modal = Modal;
this.alertas = [];
this.paginaActual = 1;
this.convocatoriaId = $stateParams.convocatoriaId;
this.service = EtapaService;
this.convocatoriaService = ConvocatoriaService;
this.etapas = {count: 0};
this.cambiarPagina();
this.treeOptions = {