Commit 97a73800 authored by D’jalmar Gutierrez Titirico's avatar D’jalmar Gutierrez Titirico 🚲
Browse files

Merge branch 'iss6175-implementar-nuevo-organigrama' into 'desarrollo'

#42 Iss6175 implementar nuevo organigrama



See merge request !61
parents de1fea12 c82af783
...@@ -228,9 +228,9 @@ input[type=checkbox].with-font:checked ~ label:before { ...@@ -228,9 +228,9 @@ input[type=checkbox].with-font:checked ~ label:before {
@import 'tiposEntidad/tiposEntidad.scss'; @import 'tiposEntidad/tiposEntidad.scss';
@import '../components/footer/footer.scss'; @import '../components/footer/footer.scss';
@import '../components/modal/modal.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'; @import '../components/organigrama/framework/jquery.orgchart.scss';
@import '../components/organigrama/framework/treant-js/Treant.scss';
@import '../components/organigrama/framework/treant-js/collapsable.scss';
@import '../components/organigrama/framework/treant-js/custom-colored.scss';
@import '../components/organigrama/framework/treant-js/vendor/perfect-scrollbar/perfect-scrollbar.scss';
// endinjector // endinjector
...@@ -14,24 +14,24 @@ ...@@ -14,24 +14,24 @@
this.cargoConvocatoria = Object.assign({cargo_superior_id: null}, this.cargoInicial); this.cargoConvocatoria = Object.assign({cargo_superior_id: null}, this.cargoInicial);
this.entidadSeleccionada = parametro.entidad; this.entidadSeleccionada = parametro.entidad;
this.entidades = {rows: [this.entidadSeleccionada], count: 1} this.entidades = {rows: [this.entidadSeleccionada], count: 1};
this.unidad = parametro.unidad; this.unidad = parametro.unidad;
this.unidadService.getUnidades() this.entidadService.unidadesOrganizacionales(this.entidadSeleccionada._id)
.then(unidades => { .then(unidades => {
this.unidades = unidades; this.unidades = unidades;
this.unidadSeleccionada = this.unidades.rows.find(x=>x._id === this.unidad._id); this.unidadSeleccionada = this.unidades.rows.find(x=>x._id === this.unidad._id);
}); });
this.service.getCargos() this.unidadService.cargos(this.unidad._id)
.then(cargosSuperiores => { .then(cargosSuperiores => {
this.cargosSuperiores = cargosSuperiores; this.cargosSuperiores = cargosSuperiores;
this.cargoSuperiorSeleccionada = this.cargosSuperiores.rows.find(x=>x._id === this.cargoInicial.cargo_superior_id); this.cargoSuperiorSeleccionada = this.cargosSuperiores.rows.find(x=>x._id === this.cargoInicial.cargo_superior_id);
}); });
if(this.cargoInicial){ if (this.cargoInicial) {
this.entidadId = this.entidadSeleccionada._id; this.entidadId = this.entidadSeleccionada._id;
this.entidadService.tiposCargo(this.entidadId) this.entidadService.tiposCargo(this.entidadId)
.then(tiposCargos=>{ .then(tiposCargos=> {
this.tiposCargo = tiposCargos; this.tiposCargo = tiposCargos;
this.tipoCargoSeleccionada = this.tiposCargo.rows.find(x=>x._id === this.cargoInicial.fk_tipo_cargo); this.tipoCargoSeleccionada = this.tiposCargo.rows.find(x=>x._id === this.cargoInicial.fk_tipo_cargo);
}) })
......
...@@ -26,6 +26,7 @@ ...@@ -26,6 +26,7 @@
method: 'GET', method: 'GET',
url: appConfig.serverAddress + '/api/entidades/:id/convocatorias' url: appConfig.serverAddress + '/api/entidades/:id/convocatorias'
}, },
cargosDisponibles: { cargosDisponibles: {
isArray: false, isArray: false,
method: 'GET', method: 'GET',
...@@ -34,6 +35,11 @@ ...@@ -34,6 +35,11 @@
tiposCargo: { tiposCargo: {
method: 'GET', method: 'GET',
url: appConfig.serverAddress + '/api/entidades/:id/tiposCargo' url: appConfig.serverAddress + '/api/entidades/:id/tiposCargo'
},
ordenarUnidades: {
method: 'PUT',
isArray: true,
url: appConfig.serverAddress + '/api/entidades/:id/ordenarUnidades'
} }
}) })
} }
...@@ -48,7 +54,7 @@ ...@@ -48,7 +54,7 @@
return this.resource.get(parametros).$promise; return this.resource.get(parametros).$promise;
} }
getOrganigrama(id) { organigrama(id) {
return this.resource.organigrama({id: id}).$promise; return this.resource.organigrama({id: id}).$promise;
} }
...@@ -82,6 +88,10 @@ ...@@ -82,6 +88,10 @@
return this.resource.tiposCargo({id: id}).$promise; return this.resource.tiposCargo({id: id}).$promise;
} }
ordenarUnidades(id, parametros) {
return this.resource.ordenarUnidades({id: id}, parametros).$promise;
}
} }
angular.module('moduloPersonalApp') angular.module('moduloPersonalApp')
......
'use strict';
(()=> {
class EntidadEditarModalController {
constructor($uibModalInstance, parametros, EntidadService, tipoEntidadService) {
this.enviado = false;
this.errores = {};
this.modal = $uibModalInstance;
this.service = EntidadService;
this.entidad = parametros.entidad;
this.entidades = Object.assign({}, this.entidad);
this.entidadesSuperior = {};
tipoEntidadService.getTiposEntidad({ordenarPor: 'nombre'})
.then(tipoEntidad=> {
this.tiposEntidad = tipoEntidad;
this.tipoEntidadSeleccionado = this.tiposEntidad.rows.find(x=>x._id == this.entidad.fk_tipo_entidad);
});
EntidadService.getEntidades()
.then(entidad=> {
this.entidadesSuperior = entidad;
this.entidadesSuperiorSeleccionado = this.entidadesSuperior.rows.find(x=>x._id == this.entidad.fk_entidad_superior);
});
}
guardarEntidad(form) {
this.enviado = true;
if (form.$valid) {
this.entidades.fk_tipo_entidad = this.tipoEntidadSeleccionado._id;
if (this.entidadesSuperiorSeleccionado) {
this.entidades.fk_entidad_superior = this.entidadesSuperiorSeleccionado._id;
}
this.service.editarEntidad(this.entidad._id, this.entidades)
.then(entidad=> {
this.modal.close(entidad);
})
.catch(err=> {
this.errores.otros = err.data.message;
})
}
}
}
angular.module('moduloPersonalApp')
.controller('EntidadEditarModalCtrl', EntidadEditarModalController);
})();
...@@ -11,16 +11,8 @@ ...@@ -11,16 +11,8 @@
</div> </div>
</div> </div>
</div> </div>
<!--<div class="container-fluid">-->
<!--<div class="row">-->
<!--<div id="chart" class="orgchart-primary">-->
<!--</div>-->
<!--</div>-->
<!--</div>-->
<!--<br>-->
<div class="container-fluid"> <div class="container-fluid">
<div class="row"> <div class="row">
<div class="chart" id="collapsable-example"></div> <div class="chart" id="collapsable-example"></div>
</div>
</div> </div>
</div> </div>
...@@ -16,16 +16,13 @@ ...@@ -16,16 +16,13 @@
this.enviado = true; this.enviado = true;
if (form.$valid) { if (form.$valid) {
this.service.editarPersona(this.persona._id, this.persona) this.service.editarPersona(this.persona._id, this.persona)
.then((persona)=>{ .then((persona)=> {
this.modal.close(persona); this.modal.close(persona);
}) })
} }
} }
}//class }//class
angular.module('moduloPersonalApp') angular.module('moduloPersonalApp')
.controller('PersonaEditarModalCtrl', PersonaEditarModalController); .controller('PersonaEditarModalCtrl', PersonaEditarModalController);
})(); })();
...@@ -29,7 +29,7 @@ ...@@ -29,7 +29,7 @@
</tr> </tr>
</thead> </thead>
<tbody> <tbody>
<tr ng-repeat-start="unidad in vm.unidadesOrganizacionales.rows" ng-click="unidad.expanded = true;vm.obtenerOficinasCargos(unidad);"> <tr ng-repeat-start="unidad in vm.unidadesOrganizacionales.rows">
<td>{{unidad.sigla| uppercase}}</td> <td>{{unidad.sigla| uppercase}}</td>
<td>{{unidad.nombre}}</td> <td>{{unidad.nombre}}</td>
<td class="text-center"> <td class="text-center">
......
'use strict'; 'use strict';
(()=> { (()=> {
class UnidadOrganizacionalEditarModalController { class UnidadOrganizacionalEditarModalController {
constructor($uibModalInstance, parametro, UnidadService) { constructor($uibModalInstance, parametro, UnidadService, EntidadService) {
this.enviado = false; this.enviado = false;
this.errores = {}; this.errores = {};
this.modal = $uibModalInstance; this.modal = $uibModalInstance;
this.service = UnidadService; this.service = UnidadService;
this.entidadService = EntidadService;
this.unidadInicial = parametro.unidad; this.unidadInicial = parametro.unidad;
this.unidad = Object.assign({}, this.unidadInicial); this.unidad = Object.assign({}, this.unidadInicial);
...@@ -13,7 +15,7 @@ ...@@ -13,7 +15,7 @@
this.entidadSeleccionada = parametro.entidad; this.entidadSeleccionada = parametro.entidad;
this.entidades = {rows: [this.entidadSeleccionada], count: 1}; this.entidades = {rows: [this.entidadSeleccionada], count: 1};
this.service.getUnidades() this.entidadService.unidadesOrganizacionales(this.unidadInicial.fk_entidad)
.then(unidadesSuperiores => { .then(unidadesSuperiores => {
this.unidadesSuperiores = unidadesSuperiores; this.unidadesSuperiores = unidadesSuperiores;
this.unidadSuperiorSeleccionada = this.unidadesSuperiores.rows.find(x=>x._id == this.unidadInicial.unidad_superior_id); this.unidadSuperiorSeleccionada = this.unidadesSuperiores.rows.find(x=>x._id == this.unidadInicial.unidad_superior_id);
...@@ -22,13 +24,13 @@ ...@@ -22,13 +24,13 @@
//TODO se debe averiguar si una unidad puede cambiar de entidad //TODO se debe averiguar si una unidad puede cambiar de entidad
} }
guardarUnidad(form) { guardarUnidad(form) {
this.enviado = true; this.enviado = true;
if (form.$valid) { if (form.$valid) {
if (this.unidadSuperiorSeleccionada) { if (this.unidadSuperiorSeleccionada) {
this.unidad.unidad_superior_id = this.unidadSuperiorSeleccionada._id; this.unidad.unidad_superior_id = this.unidadSuperiorSeleccionada._id;
}else{ } else {
this.unidad.unidad_superior_id = this.unidadSuperiorSeleccionada; this.unidad.unidad_superior_id = this.unidadSuperiorSeleccionada;
} }
this.service.editarUnidad(this.unidad._id, this.unidad) this.service.editarUnidad(this.unidad._id, this.unidad)
...@@ -40,8 +42,6 @@ ...@@ -40,8 +42,6 @@
}); });
} }
} }
} }
angular.module('moduloPersonalApp') angular.module('moduloPersonalApp')
.controller('UnidadOrganizacionalEditarModalCtrl', UnidadOrganizacionalEditarModalController); .controller('UnidadOrganizacionalEditarModalCtrl', UnidadOrganizacionalEditarModalController);
......
...@@ -5,7 +5,17 @@ ...@@ -5,7 +5,17 @@
constructor($resource, appConfig) { constructor($resource, appConfig) {
this.resource = $resource(appConfig.serverAddress + '/api/unidadesOrganizacional/:id', {id: '@_id'}, { this.resource = $resource(appConfig.serverAddress + '/api/unidadesOrganizacional/:id', {id: '@_id'}, {
update: {method: 'PUT'}, update: {method: 'PUT'},
query: {isArray: false} query: {isArray: false},
ordenarCargos: {
method: 'PUT',
isArray: true,
url: appConfig.serverAddress + '/api/unidadesOrganizacional/:id/ordenarCargos'
},
cargos: {
isArray: false,
method: 'GET',
url: appConfig.serverAddress + '/api/unidadesOrganizacional/:id/cargos'
}
}); });
} }
...@@ -23,9 +33,16 @@ ...@@ -23,9 +33,16 @@
} }
editarUnidad(id, unidad) { editarUnidad(id, unidad) {
console.log(id);
return this.resource.update({id: id}, unidad).$promise; return this.resource.update({id: id}, unidad).$promise;
} }
ordenarCargos(id, parametros) {
return this.resource.ordenarCargos({id: id}, parametros).$promise;
}
cargos(id) {
return this.resource.cargos({id: id}).$promise;
}
} }
angular.module('moduloPersonalApp') angular.module('moduloPersonalApp')
......
/* required LIB STYLES */
/* .Treant se automatski dodaje na svaki chart conatiner */
.Treant {
position: relative;
overflow: hidden;
padding: 0 !important;
}
.Treant > .node,
.Treant > .pseudo {
position: absolute;
display: block;
visibility: hidden;
}
.Treant.Treant-loaded .node,
.Treant.Treant-loaded .pseudo {
visibility: visible;
}
.Treant > .pseudo {
width: 0;
height: 0;
border: none;
padding: 0;
}
.Treant .collapse-switch {
width: 3px;
height: 3px;
display: block;
border: 1px solid $brand-primary;
position: absolute;
top: 1px;
right: 1px;
cursor: pointer;
}
.Treant .collapsed .collapse-switch {
background-color: #868DEE;
}
.Treant > .node img {
border: none;
float: left;
}
// import {UTIL} from '../utils/Util';
//
// class NodeDB {
// constructor(nodeStructure, tree) {
// this.db = [];
// var self = this;
//
// function itterateChildren(node, parentId) {
//
// var newNode = self.createNode(node, parentId, tree, null);
//
// if (node.children) {
//
// newNode.children = [];
//
// // pseudo node is used for descending children to the next level
// if (node.childrenDropLevel && node.childrenDropLevel > 0) {
// while (node.childrenDropLevel--) {
// // pseudo node needs to inherit the connection style from its parent for continuous connectors
// var connStyle = UTIL.cloneObj(newNode.connStyle);
// newNode = self.createNode('pseudo', newNode.id, tree, null);
// newNode.connStyle = connStyle;
// newNode.children = [];
// }
// }
//
// var stack = (node.stackChildren && !self.hasGrandChildren(node)) ? newNode.id : null;
//
// // svildren are position on separate leves, one beneeth the other
// if (stack !== null) {
// newNode.stackChildren = [];
// }
//
// for (var i = 0, len = node.children.length; i < len; i++) {
//
// if (stack !== null) {
// newNode = self.createNode(node.children[i], newNode.id, tree, stack);
// if ((i + 1) < len) newNode.children = []; // last node cant have children
// } else {
// itterateChildren(node.children[i], newNode.id);
// }
// }
// }
// }
//
// if (tree.CONFIG.animateOnInit) nodeStructure.collapsed = true;
// itterateChildren(nodeStructure, -1); // root node
// this.createGeometries(tree);
// }
//
// createGeometries(tree) {
// var i = this.db.length, node;
// while (i--) {
// this.get(i).createGeometry(tree);
// }
// }
//
// get(nodeId) {
// return this.db[nodeId]; // get node by ID
// }
//
// createNode(nodeStructure, parentId, tree, stackParentId) {
//
// var node = new TreeNode(nodeStructure, this.db.length, parentId, tree, stackParentId);
//
// this.db.push(node);
// if (parentId >= 0) this.get(parentId).children.push(node.id); //skip root node
//
// if (stackParentId) {
// this.get(stackParentId).stackParent = true;
// this.get(stackParentId).stackChildren.push(node.id);
// }
//
// return node;
// }
//
// getMinMaxCoord(dim, parent, MinMax) { // used for getting the dimensions of the tree, dim = 'X' || 'Y'
// // looks for min and max (X and Y) within the set of nodes
// var parent = parent || this.get(0),
// i = parent.childrenCount(),
// MinMax = MinMax || { // start with root node dimensions
// min: parent[dim],
// max: parent[dim] + ((dim == 'X') ? parent.width : parent.height)
// };
//
// while (i--) {
//
// var node = parent.childAt(i),
// maxTest = node[dim] + ((dim == 'X') ? node.width : node.height),
// minTest = node[dim];
//
// if (maxTest > MinMax.max) {
// MinMax.max = maxTest;
//
// }
// if (minTest < MinMax.min) {
// MinMax.min = minTest;
// }
//
// this.getMinMaxCoord(dim, node, MinMax);
// }
// return MinMax;
// }
//
// static hasGrandChildren(nodeStructure) {
// var i = nodeStructure.children.length;
// while (i--) {
// if (nodeStructure.children[i].children) return true;
// }
// }
// }
//
// export {NodeDB}
// import {TreeStore} from '../treeStore/treeStore';
//
// class Treant {
// static JSONconfig = {
// make: function (configArray) {
//
// var i = configArray.length, node;
//
// this.jsonStructure = {
// chart: null,
// nodeStructure: null
// };
// //fist loop: find config, find root;
// while (i--) {
// node = configArray[i];
// if (node.hasOwnProperty('container')) {
// this.jsonStructure.chart = node;
// continue;
// }
//
// if (!node.hasOwnProperty('parent') && !node.hasOwnProperty('container')) {
// this.jsonStructure.nodeStructure = node;
// node.myID = this.getID();
// }
// }
//
// this.findChildren(configArray);
//
// return this.jsonStructure;
// },
//
// findChildren: function (nodes) {
// var parents = [0]; // start witha a root node
//
// while (parents.length) {
// var parentId = parents.pop(),
// parent = this.findNode(this.jsonStructure.nodeStructure, parentId),
// i = 0, len = nodes.length,
// children = [];
//
// for (; i < len; i++) {
// var node = nodes[i];
// if (node.parent && (node.parent.myID == parentId)) { // skip config and root nodes
//
// node.myID = this.getID();
//
// delete node.parent;
//
// children.push(node);
// parents.push(node.myID);
// }
// }
//