Commit 6f7340ab authored by D’jalmar Gutierrez Titirico's avatar D’jalmar Gutierrez Titirico 🚲
Browse files

intento de modularizacion de las vistas

parent 4c13bda9
......@@ -188,6 +188,7 @@ input[type=checkbox].with-font:checked ~ label:before {
// injector
@import 'cargos/cargos.scss';
@import 'comentarios/comentarios.scss';
@import 'convocatorias/convocatorias.scss';
@import 'datosPersonas/datosPersonas.scss';
@import 'entidades/entidades.scss';
@import 'main/main.scss';
......
......@@ -12,6 +12,11 @@
cargosDisponibles: {
method: 'GET',
url: appConfig.serverAddress + '/api/cargos/disponibles'
},
convocatorias: {
method: 'GET',
url: appConfig.serverAddress + '/api/cargos/:id/convocatorias',
isArray: true
}
})
}
......@@ -44,6 +49,10 @@
crearCargo(cargo) {
return this.resource.save(cargo).$promise;
}
convocatorias(id) {
return this.resource.convocatorias({id: id}).$promise;
}
}
angular.module('moduloPersonalApp')
......
......@@ -2,13 +2,13 @@
(()=> {
class CargoEditarController {
constructor($stateParams, $previousState, personaService, postulacionService, $uibModal, Modal, cargoService, ContratacionService) {
constructor($stateParams, $previousState, personaService, $uibModal, Modal, cargoService, ContratacionService, ConvocatoriaService) {
this.errores = {};
this.alertas = [];
this.id = $stateParams.cargoId;
this.estadoAnterior = $previousState;
this.postulacionService = postulacionService;
this.convocatoriaService = ConvocatoriaService;
this.personaService = personaService;
this.cargoService = cargoService;
this.contratacionService = ContratacionService;
......@@ -16,7 +16,7 @@
this.modal = $uibModal;
this.Modal = Modal;
this.cargoService.getCargo(this.id, {incluye: [{entidad: 'Postulantes'}, {entidad: 'Contratados'}, {entidad: 'Contratos'}]})
this.cargoService.getCargo(this.id, {incluye: [{entidad: 'Convocatorias'}, {entidad: 'Contratados'}, {entidad: 'Contratos'}]})
.then(cargo=> {
this.cargo = cargo;
this.cargo.Contratos = this.cargo.Contratos.sort(
......@@ -43,29 +43,29 @@
}
}
eliminarPostulacion(postulante) {
this.Modal.confirm.eliminar(postulante => {
this.postulacionService.eliminarPostulacion(postulante.Postulacion._id)
.then(()=> {
this.cargo.Postulantes.splice(this.cargo.Postulantes.indexOf(postulante), 1)
this.alertas.push({
tipo: 'danger',
mensaje: 'Se elimino la postulacion de: ' + postulante.nombres
})
})
})('la postulación de ' + postulante.nombres + ' ' + postulante.apellidos, postulante);
}
crearPostulanteACargo() {
this.modal.open({
templateUrl: 'app/postulaciones/modals/postulaciones.cargo.modal.html',
controller: 'PostulacionCargoModalCtrl',
controllerAs: 'vm',
resolve: {
cargo: this.cargo
}
})
}
// eliminarPostulacion(postulante) {
// this.Modal.confirm.eliminar(postulante => {
// this.postulacionService.eliminarPostulacion(postulante.Postulacion._id)
// .then(()=> {
// this.cargo.Postulantes.splice(this.cargo.Postulantes.indexOf(postulante), 1)
// this.alertas.push({
// tipo: 'danger',
// mensaje: 'Se elimino la postulacion de: ' + postulante.nombres
// })
// })
// })('la postulación de ' + postulante.nombres + ' ' + postulante.apellidos, postulante);
// }
//
// crearPostulanteACargo() {
// this.modal.open({
// templateUrl: 'app/postulaciones/modals/postulaciones.cargo.modal.html',
// controller: 'PostulacionCargoModalCtrl',
// controllerAs: 'vm',
// resolve: {
// cargo: this.cargo
// }
// })
// }
//region Contratacion
contratar(postulante) {
......
......@@ -46,13 +46,13 @@
<div class="container">
<div class="row">
<div class="col-sm-5 col-md-4 col-xs-6">
<h4 class="color-primary">Postulantes</h4>
<h4 class="color-primary">Convocatorias</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.crearPostulanteACargo()" type="button"><i
<button class="btn btn-success-outline" ng-click="vm.crearConvocatoria()" type="button"><i
class="fa fa-plus"></i>
Nueva postulación
Nueva convocatoria
</button>
</div>
</div>
......@@ -70,7 +70,7 @@
</tr>
</thead>
<tbody>
<tr ng-repeat="postulante in vm.cargo.Postulantes"
<tr ng-repeat="postulante in vm.cargo.Convocatorias"
ui-sref="personas.editar({postulanteId:postulante._id})">
<td>{{postulante.nombres}}</td>
<td>{{postulante.apellidos}}</td>
......
(()=> {
'use strict';
class ConvocatoriaController {
constructor($state){
}
}
angular.module('moduloPersonalApp')
.controller('ConvocatoriaCtrl', ConvocatoriaController);
})();
'use strict';
describe('Controller: ConvocatoriasCtrl', function () {
// load the controller's module
beforeEach(module('moduloPersonalApp'));
var ConvocatoriasCtrl, scope;
// Initialize the controller and a mock scope
beforeEach(inject(function ($controller, $rootScope) {
scope = $rootScope.$new();
ConvocatoriasCtrl = $controller('ConvocatoriasCtrl', {
$scope: scope
});
}));
it('should ...', function () {
expect(1).to.equal(1);
});
});
<div>This is the convocatorias view.</div>
'use strict';
angular.module('moduloPersonalApp')
.config(function ($stateProvider) {
$stateProvider
.state('convocatorias', {
url: '/convocatorias',
templateUrl: 'app/convocatorias/convocatorias.html',
controller: 'ConvocatoriasCtrl'
});
});
(()=> {
'use strict';
class ConvocatoriaService {
constructor($resource, appConfig) {
this.resource = $resource(appConfig.serverAddress + '/api/convocatorias/:id', {id: '@_id'}, {
update: {method: 'PUT'},
query: {isArray: false}
})
}
convocatorias(parametros) {
return this.resource.query(parametros).$promise;
}
convocatoria(id, parametros = {}) {
parametros.id = id;
return this.resource.get(parametros).$promise;
}
crear(convocatoria){
return this.resource.save(convocatoria).$promise;
}
}
angular.module('moduloPersonalApp')
.service('ConvocatoriaService', ConvocatoriaService);
})();
(()=> {
'use strict';
class ConvocatoriaCrearModalController {
constructor($uibModalInstance, parametro, ConvocatoriaService, EntidadService) {
this.convocatoria = {};
this.entidadId = 0;
this.entidadService = EntidadService
this.entidadService.cargosDisponibles(this.entidadId)
.then(cargos=> {
this.cargos = cargos
})
}
guardar() {
}
}
angular.module('moduloPersonalApp')
.controller('ConvocatoriaCrearModalController', ConvocatoriaCrearModalController)
})();
<form class="form" name="form" ng-submit="vm.guardarCargo(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">Convocatoria</h4>
</div>
<div class="modal-body">
<div class="row">
<div class="col-md-10">
<label>Descripción</label>
<div class="">
<input class="form-control" name="descripcion" ng-model="vm.convocatoria.descripcion" required>
<p class="help-block" ng-show="form.nombre.$error.required && vm.enviado">
Ingrese una descripcion para la convocatoria.
</p>
</div>
</div>
<div class="col-md-10">
<label>Cargos</label>
<div class="">
<select class="form-control" name="unidades" ng-model="vm.unidadSeleccionada"
ng-options="crg as (crg.nombre) for crg in vm.unidades.rows" enabled="!vm.unidad" required>
</select>
<p class="help-block" ng-show="form.nombre.$error.required && vm.enviado">
Seleccione unidad.
</p>
</div>
</div>
<div class="col-md-10">
<label>Nombre del cargo</label>
<textarea type="text" name="nombre" class="form-control" ng-minlength="5" ng-model="vm.cargo.nombre" required></textarea>
<p class="help-block" ng-show="form.cargo.$error.required && vm.enviado">
Ingrese nombre del cargo
</p>
</div>
<div class="col-md-10">
<label>Cargo Superior</label>
<div class="">
<select class="form-control" name="cargoSuperior" ng-model="vm.cargoSuperiorSeleccionada"
ng-options="crgS as (crgS.nombre) for crgS in vm.cargosSuperiores.rows">
<option value="">-- No tiene Cargo Superior --</option>
</select>
</div>
</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.nombre.$dirty || form.cargoSuperior.$dirty) || form.$invalid">
Guardar
</button>
<button class="btn btn-default" type="button" ng-click="vm.modal.dismiss()">Cancelar</button>
</div>
</form>
......@@ -24,7 +24,8 @@
this.service.getEntidad(this.id, {
incluye: [
{entidad: 'TipoEntidad'},
{entidad: 'UniOrg'}
{entidad: 'UniOrg'},
{entidad: 'Convocatorias'}
]
})
.then(entidad=> {
......@@ -39,7 +40,7 @@
});
this.service.getEntidades()
.then(entidades=>{
.then(entidades=> {
this.entidadesSuperior = entidades;
this.entidadSuperiorSeleccionada = this.entidadesSuperior.rows.find(x=>x._id == this.entidad.entidad_superior_id);
});
......@@ -47,7 +48,7 @@
//region Entidad
guardarEntidad(form, campo) {
if(form[campo].$modelValue == null){
if (form[campo].$modelValue == null) {
form[campo].$modelValue = 0;
}
if (form[campo].$modelValue._id)
......
......@@ -128,156 +128,6 @@
</form>
</blockquote>
</div>
<div class="container">
<div class="row">
<div class="col-sm-5 col-md-4 col-xs-6">
<h4 class="color-primary">Unidad Organizacional</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.crearUnidad()" type="button"><i class="fa fa-plus"></i>
Añadir Unidad Organizacional
</button>
</div>
</div>
</div>
<div class="col-md-10">
<uib-alert ng-repeat="alerta in vm.alertasUnidad" type="{{alerta.tipo}}"
close="vm.alertasUnidad.splice($index,1)"
dismiss-on-timeout="3000">{{alerta.mensaje}}
</uib-alert>
</div>
<blockquote class="col-md-12 blockquote-primary">
<div class="row">
<div class="table-responsive col-md-10">
<table class="table table-hover">
<thead>
<tr>
<th><a href="" ng-click="vm.ordenar('sigla')">Sigla</a></th>
<th><a href="" ng-click="vm.ordenar('nombre')">Nombre</a></th>
<th><a href="" ng-click="vm.ordenar('enlace_web')">Enlace Web</a></th>
<th class="text-center" width="12%">Acciones</th>
</tr>
</thead>
<tbody>
<tr ng-repeat-start="unidad in vm.entidad.UniOrg">
<td>{{unidad.sigla| uppercase}}</td>
<td>{{unidad.nombre}}</td>
<td>{{unidad.paginaWeb}}</td>
<td class="text-center">
<div class="btn-group" role="group">
<a class="btn btn-info-outline btn-xs" href="#" role="button"
ng-click="vm.editarUnidadOrganizacional(unidad)">
<i class="fa fa-edit fa-lg"></i>
</a>
<!--<a class="btn btn-danger-outline btn-xs" href="#" role="button" ng-click="vm.eliminarUnidad(unidad)">
<i class="fa fa-trash fa-lg"></i>
</a>-->
<button class="btn btn-primary-outline btn-xs" role="button" ng-if="unidad.expanded"
ng-click="unidad.expanded = false">
<i class="fa fa-angle-up fa-lg" title="Ocultar Otros Datos"></i>
</button>
<button class="btn btn-primary-outline btn-xs" role="button" ng-if="!unidad.expanded"
ng-click="unidad.expanded = true;vm.obtenerOficinasCargos(unidad);">
<i class="fa fa-angle-down fa-lg" title="Mostrar Otros Datos"></i>
</button>
</div>
</td>
</tr>
<tr ng-repeat-end="">
<td colspan="4" ng-style="{padding:unidad.expanded?'8px':'0','background-color':'white'}">
<div uib-collapse="!unidad.expanded">
<blockquote class="blockquote-primary">
<div class="row">
<div class="col-sm-5 col-md-4 col-xs-6">
<h4 class="color-primary">Cargos</h4>
</div>
<div class="col-sm-5 col-md-6 col-sm-offset-2">
<div class="pull-right">
<button class="btn btn-success-outline" ng-click="vm.crearCargo(unidad)" type="button"><i
class="fa fa-plus"></i>
Añadir Cargo
</button>
</div>
</div>
</div>
<div class="row">
<div class="col-md-12">
<table class="table table-hover">
<tbody>
<tr ng-repeat="cargo in unidad.Cargos" ui-sref="cargos.editar({cargoId:cargo._id})">
<td>{{cargo.nombre}}</td>
<td class="text-right">
<div class="btn-group">
<button type="button" class="btn btn-xs btn-info-outline"
ng-click="vm.editarCargo(cargo, unidad);$event.stopPropagation();"><i
class="fa fa-edit fa-lg"></i></button>
<button type="button" class="btn btn-xs btn-danger-outline"
ng-click="vm.eliminarCargo(unidad, cargo);$event.stopPropagation();"><i
class="fa fa-trash fa-lg"></i></button>
</div>
</td>
</tr>
</tbody>
</table>
</div>
</div>
<div class="row">
<div class="col-sm-5 col-md-4 col-xs-6">
<h4 class="color-primary">Oficinas</h4>
</div>
<div class="col-sm-5 col-md-6 col-sm-offset-2">
<div class="pull-right">
<button class="btn btn-success-outline" ng-click="vm.crearOficina(unidad)" type="button"><i
class="fa fa-plus"></i>
Añadir Oficina
</button>
</div>
</div>
</div>
<div class="row">
<div class="col-md-12">
<div class="list-group">
<div class="list-group-item" ng-repeat="oficina in unidad.OficinaUnidad">
<span class="pull-right">
<div class="btn-group">
<button type="button" class="btn btn-info-outline btn-xs"
ng-click="vm.editarOficina(unidad, oficina)"><i
class="fa fa-edit fa-lg"></i></button>
<button type="button" class="btn btn-danger-outline btn-xs"
ng-click="vm.eliminarOficina(unidad, oficina)"><i
class="fa fa-trash fa-lg"></i></button>
</div>
</span>
<div class="form-group">
<label>{{oficina.nombre}}</label>
</div>
<ul class="list-unstyled">
<li class="mb-sm">
<em class="fa fa-map-marker"></em>
<a href="https://www.google.com/maps?q={{oficina.latitud}},{{oficina.longitud}}">Ubicación</a>
</li>
<li class="mb-sm">
<em class="fa fa-globe"></em> {{oficina.pais}}
</li>
<li class="mb-sm" ng-show="oficina.principal">
<em class="fa fa-circle-o"></em>
<label class="label label-success">Oficina principal</label>
</li>
</ul>
</div>
</div>
</div>
</div>
</blockquote>
</div>
</td>
</tr>
</tbody>
</table>
</div>
</div>
</blockquote>
</div>
</div>
</div>
<div class="container-fluid">
<div ui-view></div>
<div ui-view="entidad"></div>
<div ui-view="convocatorias"></div>
<div ui-view="unidadesOrganizacionales"></div>
</div>
......@@ -16,14 +16,35 @@ angular.module('moduloPersonalApp')
})
.state('entidades.editar', {
url: '/:entidadId/editar',
templateUrl: 'app/entidades/editar/entidades.editar.html',
controller: 'EntidadEditarCtrl',
controllerAs: 'vm'
views: {
'entidad': {
templateUrl: 'app/entidades/editar/entidades.editar.html',
controller: 'EntidadEditarCtrl',
controllerAs: 'vm'
},
"convocatorias": {
templateUrl: 'app/convocatorias/convocatorias.html',
controller: 'ConvocatoriaCtrl',
controllerAs: 'vm'
},
"unidadesOrganizacionales": {
templateUrl: 'app/unidadesOrganizacional/editar/unidadesOrganizacional.editar.html',
controller: 'UnidadOrganizacionalEditarCtrl',
controllerAs: 'vm'
}
}
})
.state('entidades.organigrama', {
url: '/:entidadId/organigrama',
templateUrl: 'app/entidades/organigrama/entidades.organigrama.html',
controller: 'EntidadOrganigramaCtrl',
controllerAs: 'vm'
});
})
;
// .state('entidades.unidadesOrganizacionales.convocatorias', {
// url: '/:entidadId/',
// templateUrl: 'app/convocatorias/convocatorias.html',
// controller: 'ConvocatoriaCtrl',
// controllerAs: 'vm'
// });
});
'use strict';
(()=> {
class UnidadOrganizacionalEditarController {
constructor($stateParams, $previousState, $uibModal, Modal, EntidadService, tipoEntidadService, OficinaService, UnidadService) {
this.errores = {}; // lista de errores
this.modal = $uibModal;
this.Modal = Modal;
this.alertas = [];
this.alertasUnidad = [];
this.id = $stateParams.entidadId;
this.estadoAnterior = $previousState;
this.entidad = {};
this.tiposEntidad = {};
this.entidadesSuperior = {};
this.entidadSuperiorSeleccionada = {};
this.unidadOrganizacionalService = UnidadService;
this.tipoEntidadService = tipoEntidadService;
this.oficinaService = OficinaService;
this.service = EntidadService;
this.service.getEntidad(this.id, {
incluye: [
{entidad: 'TipoEntidad'},
{entidad: 'UniOrg'},
{entidad: 'Convocatorias'}
]
})
.then(entidad=> {
this.entidad = entidad;
})
.then(()=> {
return this.tipoEntidadService.getTiposEntidad();
})
.then(tiposEntidad=> {
this.tiposEntidad = tiposEntidad;
this.tipoEntidadSeleccionado = this.tiposEntidad.rows.find(x=>x._id === this.entidad.fk_tipo_entidad);
});
this.service.getEntidades()
.then(entidades=> {
this.entidadesSuperior = entidades;