general-library-union 2.3.48 → 2.3.49

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -41,43 +41,98 @@ export class MenuService {
41
41
  /* Se debe cambiar con el request al servicio de tareas */
42
42
  this._menu = {};
43
43
  return of(JSON.parse(this.storageService.getItem('__tareas'))).pipe(map((tareas) => {
44
- tareas.forEach((tarea) => {
45
- //const modulo = tarea.nombreModulo.trim();
46
- const modulo = tarea.modulo + '';
47
- if (modulo?.trim() == '4') {
48
- console.log(' entra modulo 4');
49
- console.log(tarea);
50
- }
44
+ const arbolTareas = [];
45
+ let nodoBase = null;
46
+ let nodoHijo = null;
47
+ for (const unaTarea of tareas) {
48
+ const modulo = unaTarea.modulo + '';
51
49
  if (!(modulo in this._menu)) {
52
- this._menu[modulo] = { label: tarea.nombreModulo, items: [] };
50
+ this._menu[modulo] = { label: unaTarea.nombreModulo, items: [] };
51
+ }
52
+ if (!unaTarea.nombrePadre) {
53
+ arbolTareas.push(unaTarea);
54
+ continue;
53
55
  }
54
- let item;
55
- const nombreMenu = tarea.nombreAbuelo ?? tarea.nombrePadre;
56
- item = this._menu[modulo].items.find((item) => item.label == nombreMenu);
57
- if (!item) {
58
- item = { label: tarea.nombrePadre, icon: 'glyphicons ' + tarea.gifPadre, items: [] };
59
- if (nombreMenu === tarea.nombreAbuelo) {
60
- this._menu[modulo].items.push({ label: nombreMenu, icon: 'glyphicons ' + tarea.gifPadre, items: [item] });
56
+ nodoBase = null;
57
+ // Buscar en el primer nivel
58
+ for (const unNodo of arbolTareas) {
59
+ if (unNodo.tipo !== "M") {
60
+ continue;
61
61
  }
62
- else {
63
- this._menu[modulo].items.push(item);
62
+ if (unaTarea.nombreAbuelo && unNodo.descripcion === unaTarea.nombreAbuelo) {
63
+ // Buscar en el segundo nivel
64
+ for (const unNodo2 of unNodo.listaTareas || []) {
65
+ if (unNodo2.tipo !== "M") {
66
+ continue;
67
+ }
68
+ if (unNodo2.descripcion === unaTarea.nombrePadre) {
69
+ nodoBase = unNodo2;
70
+ break;
71
+ }
72
+ }
73
+ if (!nodoBase) {
74
+ nodoHijo = {
75
+ descripcion: unaTarea.nombrePadre,
76
+ gif: unaTarea.gifPadre,
77
+ tipo: "M",
78
+ listaTareas: [],
79
+ modulo: unaTarea.modulo,
80
+ };
81
+ unNodo.listaTareas.push(nodoHijo);
82
+ nodoBase = nodoHijo;
83
+ }
84
+ break;
64
85
  }
65
- }
66
- else {
67
- if (nombreMenu === tarea.nombreAbuelo) {
68
- item = item.items.find((item) => item.label == tarea.nombreAbuelo);
86
+ if (unNodo.descripcion === unaTarea.nombrePadre) {
87
+ nodoBase = unNodo;
88
+ break;
69
89
  }
70
90
  }
71
- if (item) {
72
- if (item.items) {
73
- const link = tarea.urlprincipal.replace(/.jsf/, '');
74
- item.items.push({ label: tarea.descripcion, routerLink: link });
91
+ if (!nodoBase) {
92
+ nodoBase = {
93
+ descripcion: unaTarea.nombreAbuelo || unaTarea.nombrePadre,
94
+ gif: unaTarea.nombreAbuelo ? unaTarea.gifAbuelo : unaTarea.gifPadre,
95
+ orden: unaTarea.nombreAbuelo ? unaTarea.ordenAbuelo : unaTarea.ordenPadre,
96
+ tipo: "M",
97
+ listaTareas: [],
98
+ modulo: unaTarea.modulo,
99
+ };
100
+ arbolTareas.push(nodoBase);
101
+ if (unaTarea.nombreAbuelo) {
102
+ nodoHijo = {
103
+ descripcion: unaTarea.nombrePadre,
104
+ gif: unaTarea.gifPadre,
105
+ tipo: "M",
106
+ listaTareas: [],
107
+ modulo: unaTarea.modulo,
108
+ };
109
+ nodoBase.listaTareas.push(nodoHijo);
110
+ nodoBase = nodoHijo;
75
111
  }
76
112
  }
113
+ nodoBase.listaTareas.push(unaTarea);
114
+ }
115
+ console.log(this._menu);
116
+ let respuesta = this.convertToMenuItems(arbolTareas);
117
+ respuesta.forEach(dato => {
118
+ const modulo = dato.tabindex;
119
+ this._menu[modulo].items.push(dato);
77
120
  });
78
121
  }));
79
122
  /********************************************************/
80
123
  }
124
+ convertToMenuItems(tareas) {
125
+ return tareas.map(tarea => {
126
+ const menuItem = {
127
+ label: tarea.descripcion,
128
+ icon: tarea.gif,
129
+ routerLink: tarea.urlprincipal,
130
+ tabindex: tarea.modulo,
131
+ items: tarea.listaTareas ? this.convertToMenuItems(tarea.listaTareas) : undefined
132
+ };
133
+ return menuItem;
134
+ });
135
+ }
81
136
  setTareasDelModulo(modulo) {
82
137
  console.log('setTareasDelModulo');
83
138
  this._menuSource.next(this._menu[modulo]);
@@ -91,4 +146,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.4", ngImpor
91
146
  providedIn: 'root',
92
147
  }]
93
148
  }], ctorParameters: () => [{ type: i1.StorageService }] });
94
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVudS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9jb3JlL3NlcnZpY2lvcy9tZW51LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUzQyxPQUFPLEVBQUUsR0FBRyxFQUFjLEVBQUUsRUFBaUIsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDOzs7QUFNbkUsTUFBTSxPQUFPLFdBQVc7SUFPRjtJQU5aLEtBQUssR0FBZ0MsRUFBRSxDQUFDO0lBQ3hDLFdBQVcsR0FBRyxJQUFJLE9BQU8sRUFBWSxDQUFDO0lBQ3RDLGlCQUFpQixHQUFHLElBQUksT0FBTyxFQUFjLENBQUM7SUFDOUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUNuRCxzQkFBc0IsR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsWUFBWSxFQUFFLENBQUM7SUFFdkUsWUFBb0IsY0FBOEI7UUFBOUIsbUJBQWMsR0FBZCxjQUFjLENBQWdCO0lBQUcsQ0FBQztJQUV0RDs7T0FFRztJQUNILElBQUksVUFBVTtRQUNaLE9BQU8sSUFBSSxDQUFDLHNCQUFzQixDQUFDO0lBQ3JDLENBQUM7SUFFRDs7T0FFRztJQUNILElBQUksSUFBSTtRQUNOLE9BQU8sSUFBSSxDQUFDLGdCQUFnQixDQUFDO0lBQy9CLENBQUM7SUFFRDs7O09BR0c7SUFDSCxhQUFhLENBQUMsS0FBaUI7UUFDN0IsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNyQyxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsVUFBVTtRQUNSLE9BQU8sQ0FBQyxHQUFHLENBQUMsOEJBQThCLENBQUMsQ0FBQTtRQUMzQywwREFBMEQ7UUFDMUQsMERBQTBEO1FBQzFELElBQUksQ0FBQyxLQUFLLEdBQUcsRUFBRSxD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QUFDO0lBRUQsa0JBQWtCLENBQUMsTUFBYztRQUMvQixPQUFPLENBQUMsR0FBRyxDQUFFLG9CQUFvQixDQUFDLENBQUE7UUFDbEMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQzVDLENBQUM7dUdBcEZVLFdBQVc7MkdBQVgsV0FBVyxjQUZWLE1BQU07OzJGQUVQLFdBQVc7a0JBSHZCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTWVudUl0ZW0gfSBmcm9tICdwcmltZW5nL2FwaS9tZW51aXRlbSc7XG5pbXBvcnQgeyBtYXAsIE9ic2VydmFibGUsIG9mLCBSZXBsYXlTdWJqZWN0LCBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBTdG9yYWdlU2VydmljZSB9IGZyb20gJy4vc3RvcmFnZS5zZXJ2aWNlJztcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIE1lbnVTZXJ2aWNlIHtcbiAgcHJpdmF0ZSBfbWVudTogeyBba2V5OiBzdHJpbmddOiBNZW51SXRlbSB9ID0ge307XG4gIHByaXZhdGUgX21lbnVTb3VyY2UgPSBuZXcgU3ViamVjdDxNZW51SXRlbT4oKTtcbiAgcHJpdmF0ZSBfYnJlYWRjcnVtYlNvdXJjZSA9IG5ldyBTdWJqZWN0PE1lbnVJdGVtW10+KCk7XG4gIHByaXZhdGUgX21lbnVPYnNlcnZhYmxlJCA9IHRoaXMuX21lbnVTb3VyY2UuYXNPYnNlcnZhYmxlKCk7XG4gIHByaXZhdGUgX2JyZWFkY3J1bWJPYnNlcnZhYmxlJCA9IHRoaXMuX2JyZWFkY3J1bWJTb3VyY2UuYXNPYnNlcnZhYmxlKCk7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBzdG9yYWdlU2VydmljZTogU3RvcmFnZVNlcnZpY2UpIHt9XG5cbiAgLyoqXG4gICAqIE9ic2VydmFibGUgcGFyYSBsb3MgZXZlbnRvcyBkZWwgYnJlYWRjcnVtYlxuICAgKi9cbiAgZ2V0IGJyZWFkY3J1bWIoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2JyZWFkY3J1bWJPYnNlcnZhYmxlJDtcbiAgfVxuXG4gIC8qKlxuICAgKiBPYnNlcnZhYmxlIHBhcmEgZWwgbWVudSBwcmluY2lwYWxcbiAgICovXG4gIGdldCBtZW51KCkge1xuICAgIHJldHVybiB0aGlzLl9tZW51T2JzZXJ2YWJsZSQ7XG4gIH1cblxuICAvKipcbiAgICogQWdyZWdhIGl0ZW1zIGFsIGJyZWFkY3J1bWJcbiAgICogQHBhcmFtIGl0ZW1zXG4gICAqL1xuICBzZXRCcmVhZGNydW1iKGl0ZW1zOiBNZW51SXRlbVtdKTogdm9pZCB7XG4gICAgdGhpcy5fYnJlYWRjcnVtYlNvdXJjZS5uZXh0KGl0ZW1zKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDb25zdWx0YSBsYSBsaXN0YSBkZSB0YXJlYXMgZGVsIHVzdWFyaW8gcGFyYSBjYXJnYXIgZWwgbWVuw7pcbiAgICogQHJldHVybnNcbiAgICovXG4gIGxvYWRUYXJlYXMoKTogT2JzZXJ2YWJsZTx2b2lkPiB7XG4gICAgY29uc29sZS5sb2coJ2VudHJhIGxvYWRUYXJlYXMgbWVudXNlcnZpY2UnKVxuICAgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cbiAgICAvKiBTZSBkZWJlIGNhbWJpYXIgY29uIGVsIHJlcXVlc3QgYWwgc2VydmljaW8gZGUgdGFyZWFzICovXG4gICAgdGhpcy5fbWVudSA9IHt9XG4gICAgcmV0dXJuIG9mKEpTT04ucGFyc2UodGhpcy5zdG9yYWdlU2VydmljZS5nZXRJdGVtKCdfX3RhcmVhcycpKSkucGlwZShcbiAgICAgIG1hcCgodGFyZWFzOiBhbnlbXSkgPT4ge1xuICAgICAgICB0YXJlYXMuZm9yRWFjaCgodGFyZWEpID0+IHtcbiAgICAgICAgICAvL2NvbnN0IG1vZHVsbyA9IHRhcmVhLm5vbWJyZU1vZHVsby50cmltKCk7XG4gICAgICAgICAgY29uc3QgbW9kdWxvID0gdGFyZWEubW9kdWxvKycnO1xuICAgICAgICAgIGlmIChtb2R1bG8/LnRyaW0oKSA9PSAnNCcpIHtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKCcgZW50cmEgbW9kdWxvIDQnKVxuICAgICAgICAgICAgY29uc29sZS5sb2cgKHRhcmVhKVxuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoIShtb2R1bG8gaW4gdGhpcy5fbWVudSkpIHtcbiAgICAgICAgICAgIHRoaXMuX21lbnVbbW9kdWxvXSA9IHsgbGFiZWw6IHRhcmVhLm5vbWJyZU1vZHVsbywgaXRlbXM6IFtdIH07XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgbGV0IGl0ZW06IE1lbnVJdGVtO1xuICAgICAgICAgIGNvbnN0IG5vbWJyZU1lbnUgPSB0YXJlYS5ub21icmVBYnVlbG8gPz8gdGFyZWEubm9tYnJlUGFkcmU7XG4gICAgICAgICAgaXRlbSA9IHRoaXMuX21lbnVbbW9kdWxvXS5pdGVtcy5maW5kKChpdGVtKSA9PiBpdGVtLmxhYmVsID09IG5vbWJyZU1lbnUpO1xuICAgICAgICAgIGlmICghaXRlbSkge1xuICAgICAgICAgICAgaXRlbSA9IHsgbGFiZWw6IHRhcmVhLm5vbWJyZVBhZHJlLCBpY29uOiAnZ2x5cGhpY29ucyAnICsgdGFyZWEuZ2lmUGFkcmUsIGl0ZW1zOiBbXSB9O1xuICAgICAgICAgICAgaWYgKG5vbWJyZU1lbnUgPT09IHRhcmVhLm5vbWJyZUFidWVsbykge1xuICAgICAgICAgICAgICB0aGlzLl9tZW51W21vZHVsb10uaXRlbXMucHVzaCh7IGxhYmVsOiBub21icmVNZW51LCBpY29uOiAnZ2x5cGhpY29ucyAnICsgdGFyZWEuZ2lmUGFkcmUsIGl0ZW1zOiBbaXRlbV0gfSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICB0aGlzLl9tZW51W21vZHVsb10uaXRlbXMucHVzaChpdGVtKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKG5vbWJyZU1lbnUgPT09IHRhcmVhLm5vbWJyZUFidWVsbykge1xuICAgICAgICAgICAgICBpdGVtID0gaXRlbS5pdGVtcy5maW5kKChpdGVtKSA9PiBpdGVtLmxhYmVsID09IHRhcmVhLm5vbWJyZUFidWVsbyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKGl0ZW0pe1xuICAgICAgICAgICAgaWYgKGl0ZW0uaXRlbXMpIHtcbiAgICAgICAgICAgICAgY29uc3QgbGluayA9IHRhcmVhLnVybHByaW5jaXBhbC5yZXBsYWNlKC8uanNmLywgJycpO1xuICAgICAgICAgICAgICBpdGVtLml0ZW1zLnB1c2goeyBsYWJlbDogdGFyZWEuZGVzY3JpcGNpb24sIHJvdXRlckxpbms6IGxpbmsgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH0pXG4gICAgKTtcbiAgICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG4gIH1cblxuICBzZXRUYXJlYXNEZWxNb2R1bG8obW9kdWxvOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBjb25zb2xlLmxvZyAoJ3NldFRhcmVhc0RlbE1vZHVsbycpXG4gICAgdGhpcy5fbWVudVNvdXJjZS5uZXh0KHRoaXMuX21lbnVbbW9kdWxvXSk7XG4gIH1cbn1cbiJdfQ==
149
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVudS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9jb3JlL3NlcnZpY2lvcy9tZW51LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUzQyxPQUFPLEVBQUUsR0FBRyxFQUFjLEVBQUUsRUFBaUIsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDOzs7QUFNbkUsTUFBTSxPQUFPLFdBQVc7SUFPRjtJQU5aLEtBQUssR0FBZ0MsRUFBRSxDQUFDO0lBQ3hDLFdBQVcsR0FBRyxJQUFJLE9BQU8sRUFBWSxDQUFDO0lBQ3RDLGlCQUFpQixHQUFHLElBQUksT0FBTyxFQUFjLENBQUM7SUFDOUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUNuRCxzQkFBc0IsR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsWUFBWSxFQUFFLENBQUM7SUFFdkUsWUFBb0IsY0FBOEI7UUFBOUIsbUJBQWMsR0FBZCxjQUFjLENBQWdCO0lBQUcsQ0FBQztJQUV0RDs7T0FFRztJQUNILElBQUksVUFBVTtRQUNaLE9BQU8sSUFBSSxDQUFDLHNCQUFzQixDQUFDO0lBQ3JDLENBQUM7SUFFRDs7T0FFRztJQUNILElBQUksSUFBSTtRQUNOLE9BQU8sSUFBSSxDQUFDLGdCQUFnQixDQUFDO0lBQy9CLENBQUM7SUFFRDs7O09BR0c7SUFDSCxhQUFhLENBQUMsS0FBaUI7UUFDN0IsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNyQyxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsVUFBVTtRQUNSLE9BQU8sQ0FBQyxHQUFHLENBQUMsOEJBQThCLENBQUMsQ0FBQTtRQUMzQywwREFBMEQ7UUFDMUQsMERBQTBEO1FBQzFELElBQUksQ0FBQyxLQUFLLEdBQUcsRUFBRSxD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QUFFO1lBQ3hCLE1BQU0sUUFBUSxHQUFhO2dCQUN6QixLQUFLLEVBQUUsS0FBSyxDQUFDLFdBQVc7Z0JBQ3hCLElBQUksRUFBRSxLQUFLLENBQUMsR0FBRztnQkFDZixVQUFVLEVBQUUsS0FBSyxDQUFDLFlBQVk7Z0JBQzlCLFFBQVEsRUFBRSxLQUFLLENBQUMsTUFBTTtnQkFDdEIsS0FBSyxFQUFFLEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVM7YUFDbEYsQ0FBQztZQUNGLE9BQU8sUUFBUSxDQUFDO1FBQ2xCLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELGtCQUFrQixDQUFDLE1BQWM7UUFDL0IsT0FBTyxDQUFDLEdBQUcsQ0FBRSxvQkFBb0IsQ0FBQyxDQUFBO1FBQ2xDLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUM1QyxDQUFDO3VHQW5KVSxXQUFXOzJHQUFYLFdBQVcsY0FGVixNQUFNOzsyRkFFUCxXQUFXO2tCQUh2QixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE1lbnVJdGVtIH0gZnJvbSAncHJpbWVuZy9hcGkvbWVudWl0ZW0nO1xuaW1wb3J0IHsgbWFwLCBPYnNlcnZhYmxlLCBvZiwgUmVwbGF5U3ViamVjdCwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgU3RvcmFnZVNlcnZpY2UgfSBmcm9tICcuL3N0b3JhZ2Uuc2VydmljZSc7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBNZW51U2VydmljZSB7XG4gIHByaXZhdGUgX21lbnU6IHsgW2tleTogc3RyaW5nXTogTWVudUl0ZW0gfSA9IHt9O1xuICBwcml2YXRlIF9tZW51U291cmNlID0gbmV3IFN1YmplY3Q8TWVudUl0ZW0+KCk7XG4gIHByaXZhdGUgX2JyZWFkY3J1bWJTb3VyY2UgPSBuZXcgU3ViamVjdDxNZW51SXRlbVtdPigpO1xuICBwcml2YXRlIF9tZW51T2JzZXJ2YWJsZSQgPSB0aGlzLl9tZW51U291cmNlLmFzT2JzZXJ2YWJsZSgpO1xuICBwcml2YXRlIF9icmVhZGNydW1iT2JzZXJ2YWJsZSQgPSB0aGlzLl9icmVhZGNydW1iU291cmNlLmFzT2JzZXJ2YWJsZSgpO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgc3RvcmFnZVNlcnZpY2U6IFN0b3JhZ2VTZXJ2aWNlKSB7fVxuXG4gIC8qKlxuICAgKiBPYnNlcnZhYmxlIHBhcmEgbG9zIGV2ZW50b3MgZGVsIGJyZWFkY3J1bWJcbiAgICovXG4gIGdldCBicmVhZGNydW1iKCkge1xuICAgIHJldHVybiB0aGlzLl9icmVhZGNydW1iT2JzZXJ2YWJsZSQ7XG4gIH1cblxuICAvKipcbiAgICogT2JzZXJ2YWJsZSBwYXJhIGVsIG1lbnUgcHJpbmNpcGFsXG4gICAqL1xuICBnZXQgbWVudSgpIHtcbiAgICByZXR1cm4gdGhpcy5fbWVudU9ic2VydmFibGUkO1xuICB9XG5cbiAgLyoqXG4gICAqIEFncmVnYSBpdGVtcyBhbCBicmVhZGNydW1iXG4gICAqIEBwYXJhbSBpdGVtc1xuICAgKi9cbiAgc2V0QnJlYWRjcnVtYihpdGVtczogTWVudUl0ZW1bXSk6IHZvaWQge1xuICAgIHRoaXMuX2JyZWFkY3J1bWJTb3VyY2UubmV4dChpdGVtcyk7XG4gIH1cblxuICAvKipcbiAgICogQ29uc3VsdGEgbGEgbGlzdGEgZGUgdGFyZWFzIGRlbCB1c3VhcmlvIHBhcmEgY2FyZ2FyIGVsIG1lbsO6XG4gICAqIEByZXR1cm5zXG4gICAqL1xuICBsb2FkVGFyZWFzKCk6IE9ic2VydmFibGU8dm9pZD4ge1xuICAgIGNvbnNvbGUubG9nKCdlbnRyYSBsb2FkVGFyZWFzIG1lbnVzZXJ2aWNlJylcbiAgICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG4gICAgLyogU2UgZGViZSBjYW1iaWFyIGNvbiBlbCByZXF1ZXN0IGFsIHNlcnZpY2lvIGRlIHRhcmVhcyAqL1xuICAgIHRoaXMuX21lbnUgPSB7fVxuICAgIHJldHVybiBvZihKU09OLnBhcnNlKHRoaXMuc3RvcmFnZVNlcnZpY2UuZ2V0SXRlbSgnX190YXJlYXMnKSkpLnBpcGUoXG4gICAgICBtYXAoKHRhcmVhczogYW55W10pID0+IHtcbiAgICAgICAgY29uc3QgYXJib2xUYXJlYXM6IGFueVtdID0gW107XG5cbiAgICAgbGV0IG5vZG9CYXNlID0gbnVsbDtcbiAgICAgbGV0IG5vZG9IaWpvID0gbnVsbDtcbiAgIFxuICAgICBmb3IgKGNvbnN0IHVuYVRhcmVhIG9mIHRhcmVhcykge1xuICAgICAgY29uc3QgbW9kdWxvID0gdW5hVGFyZWEubW9kdWxvKycnO1xuICAgICAgICBpZiAoIShtb2R1bG8gaW4gdGhpcy5fbWVudSkpIHtcbiAgICAgICAgICB0aGlzLl9tZW51W21vZHVsb10gPSB7IGxhYmVsOiB1bmFUYXJlYS5ub21icmVNb2R1bG8sIGl0ZW1zOiBbXSB9O1xuICAgICAgICB9XG4gICAgICAgaWYgKCF1bmFUYXJlYS5ub21icmVQYWRyZSkge1xuICAgICAgICAgYXJib2xUYXJlYXMucHVzaCh1bmFUYXJlYSk7XG4gICAgICAgICBjb250aW51ZTtcbiAgICAgICB9XG4gICBcbiAgICAgICBub2RvQmFzZSA9IG51bGw7XG4gICBcbiAgICAgICAvLyBCdXNjYXIgZW4gZWwgcHJpbWVyIG5pdmVsXG4gICAgICAgZm9yIChjb25zdCB1bk5vZG8gb2YgYXJib2xUYXJlYXMpIHtcbiAgICAgICAgIGlmICh1bk5vZG8udGlwbyAhPT0gXCJNXCIpIHtcbiAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICB9XG4gICAgICAgICBpZiAodW5hVGFyZWEubm9tYnJlQWJ1ZWxvICYmIHVuTm9kby5kZXNjcmlwY2lvbiA9PT0gdW5hVGFyZWEubm9tYnJlQWJ1ZWxvKSB7XG4gICAgICAgICAgIC8vIEJ1c2NhciBlbiBlbCBzZWd1bmRvIG5pdmVsXG4gICAgICAgICAgIGZvciAoY29uc3QgdW5Ob2RvMiBvZiB1bk5vZG8ubGlzdGFUYXJlYXMgfHwgW10pIHtcbiAgICAgICAgICAgICBpZiAodW5Ob2RvMi50aXBvICE9PSBcIk1cIikge1xuICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICAgfVxuICAgICAgICAgICAgIGlmICh1bk5vZG8yLmRlc2NyaXBjaW9uID09PSB1bmFUYXJlYS5ub21icmVQYWRyZSkge1xuICAgICAgICAgICAgICAgbm9kb0Jhc2UgPSB1bk5vZG8yO1xuICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgfVxuICAgICAgICAgICB9XG4gICAgICAgICAgIGlmICghbm9kb0Jhc2UpIHtcbiAgICAgICAgICAgICBub2RvSGlqbyA9IHtcbiAgICAgICAgICAgICAgIGRlc2NyaXBjaW9uOiB1bmFUYXJlYS5ub21icmVQYWRyZSxcbiAgICAgICAgICAgICAgIGdpZjogdW5hVGFyZWEuZ2lmUGFkcmUsXG4gICAgICAgICAgICAgICB0aXBvOiBcIk1cIixcbiAgICAgICAgICAgICAgIGxpc3RhVGFyZWFzOiBbXSxcbiAgICAgICAgICAgICAgIG1vZHVsbzogdW5hVGFyZWEubW9kdWxvLFxuICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgdW5Ob2RvLmxpc3RhVGFyZWFzIS5wdXNoKG5vZG9IaWpvKTtcbiAgICAgICAgICAgICBub2RvQmFzZSA9IG5vZG9IaWpvO1xuICAgICAgICAgICB9XG4gICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgfVxuICAgICAgICAgaWYgKHVuTm9kby5kZXNjcmlwY2lvbiA9PT0gdW5hVGFyZWEubm9tYnJlUGFkcmUpIHtcbiAgICAgICAgICAgbm9kb0Jhc2UgPSB1bk5vZG87XG4gICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgfVxuICAgICAgIH1cbiAgIFxuICAgICAgIGlmICghbm9kb0Jhc2UpIHtcbiAgICAgICAgIG5vZG9CYXNlID0ge1xuICAgICAgICAgICBkZXNjcmlwY2lvbjogdW5hVGFyZWEubm9tYnJlQWJ1ZWxvIHx8IHVuYVRhcmVhLm5vbWJyZVBhZHJlLFxuICAgICAgICAgICBnaWY6IHVuYVRhcmVhLm5vbWJyZUFidWVsbyA/IHVuYVRhcmVhLmdpZkFidWVsbyA6IHVuYVRhcmVhLmdpZlBhZHJlLFxuICAgICAgICAgICBvcmRlbjogdW5hVGFyZWEubm9tYnJlQWJ1ZWxvID8gdW5hVGFyZWEub3JkZW5BYnVlbG8gOiB1bmFUYXJlYS5vcmRlblBhZHJlLFxuICAgICAgICAgICB0aXBvOiBcIk1cIixcbiAgICAgICAgICAgbGlzdGFUYXJlYXM6IFtdLFxuICAgICAgICAgICBtb2R1bG86IHVuYVRhcmVhLm1vZHVsbyxcbiAgICAgICAgIH07XG4gICAgICAgICBhcmJvbFRhcmVhcy5wdXNoKG5vZG9CYXNlKTtcbiAgIFxuICAgICAgICAgaWYgKHVuYVRhcmVhLm5vbWJyZUFidWVsbykge1xuICAgICAgICAgICBub2RvSGlqbyA9IHtcbiAgICAgICAgICAgICBkZXNjcmlwY2lvbjogdW5hVGFyZWEubm9tYnJlUGFkcmUsXG4gICAgICAgICAgICAgZ2lmOiB1bmFUYXJlYS5naWZQYWRyZSxcbiAgICAgICAgICAgICB0aXBvOiBcIk1cIixcbiAgICAgICAgICAgICBsaXN0YVRhcmVhczogW10sIFxuICAgICAgICAgICAgIG1vZHVsbzogdW5hVGFyZWEubW9kdWxvLFxuICAgICAgICAgICB9O1xuICAgICAgICAgICBub2RvQmFzZS5saXN0YVRhcmVhcyEucHVzaChub2RvSGlqbyk7XG4gICAgICAgICAgIG5vZG9CYXNlID0gbm9kb0hpam87XG4gICAgICAgICB9XG4gICAgICAgfVxuICAgICAgIG5vZG9CYXNlLmxpc3RhVGFyZWFzIS5wdXNoKHVuYVRhcmVhKTtcbiAgICAgfVxuICAgICBjb25zb2xlLmxvZyh0aGlzLl9tZW51KVxuXG4gICAgIGxldCByZXNwdWVzdGEgPSB0aGlzLmNvbnZlcnRUb01lbnVJdGVtcyhhcmJvbFRhcmVhcyk7XG4gICAgIHJlc3B1ZXN0YS5mb3JFYWNoKGRhdG8gPT4ge1xuICAgICAgY29uc3QgbW9kdWxvID0gZGF0by50YWJpbmRleDtcbiAgICAgIHRoaXMuX21lbnVbbW9kdWxvXS5pdGVtcy5wdXNoKGRhdG8pO1xuICAgICB9KSBcbiAgICAgIH0pXG4gICAgKTtcbiAgICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG4gIH1cblxuICBjb252ZXJ0VG9NZW51SXRlbXModGFyZWFzOiBhbnlbXSk6IE1lbnVJdGVtW10ge1xuICAgIHJldHVybiB0YXJlYXMubWFwKHRhcmVhID0+IHtcbiAgICAgIGNvbnN0IG1lbnVJdGVtOiBNZW51SXRlbSA9IHtcbiAgICAgICAgbGFiZWw6IHRhcmVhLmRlc2NyaXBjaW9uLFxuICAgICAgICBpY29uOiB0YXJlYS5naWYsXG4gICAgICAgIHJvdXRlckxpbms6IHRhcmVhLnVybHByaW5jaXBhbCxcbiAgICAgICAgdGFiaW5kZXg6IHRhcmVhLm1vZHVsbyxcbiAgICAgICAgaXRlbXM6IHRhcmVhLmxpc3RhVGFyZWFzID8gdGhpcy5jb252ZXJ0VG9NZW51SXRlbXModGFyZWEubGlzdGFUYXJlYXMpIDogdW5kZWZpbmVkXG4gICAgICB9O1xuICAgICAgcmV0dXJuIG1lbnVJdGVtO1xuICAgIH0pO1xuICB9XG5cbiAgc2V0VGFyZWFzRGVsTW9kdWxvKG1vZHVsbzogc3RyaW5nKTogdm9pZCB7XG4gICAgY29uc29sZS5sb2cgKCdzZXRUYXJlYXNEZWxNb2R1bG8nKVxuICAgIHRoaXMuX21lbnVTb3VyY2UubmV4dCh0aGlzLl9tZW51W21vZHVsb10pO1xuICB9XG59XG4iXX0=
@@ -2120,43 +2120,98 @@ let MenuService$1 = class MenuService {
2120
2120
  /* Se debe cambiar con el request al servicio de tareas */
2121
2121
  this._menu = {};
2122
2122
  return of(JSON.parse(this.storageService.getItem('__tareas'))).pipe(map((tareas) => {
2123
- tareas.forEach((tarea) => {
2124
- //const modulo = tarea.nombreModulo.trim();
2125
- const modulo = tarea.modulo + '';
2126
- if (modulo?.trim() == '4') {
2127
- console.log(' entra modulo 4');
2128
- console.log(tarea);
2129
- }
2123
+ const arbolTareas = [];
2124
+ let nodoBase = null;
2125
+ let nodoHijo = null;
2126
+ for (const unaTarea of tareas) {
2127
+ const modulo = unaTarea.modulo + '';
2130
2128
  if (!(modulo in this._menu)) {
2131
- this._menu[modulo] = { label: tarea.nombreModulo, items: [] };
2129
+ this._menu[modulo] = { label: unaTarea.nombreModulo, items: [] };
2130
+ }
2131
+ if (!unaTarea.nombrePadre) {
2132
+ arbolTareas.push(unaTarea);
2133
+ continue;
2132
2134
  }
2133
- let item;
2134
- const nombreMenu = tarea.nombreAbuelo ?? tarea.nombrePadre;
2135
- item = this._menu[modulo].items.find((item) => item.label == nombreMenu);
2136
- if (!item) {
2137
- item = { label: tarea.nombrePadre, icon: 'glyphicons ' + tarea.gifPadre, items: [] };
2138
- if (nombreMenu === tarea.nombreAbuelo) {
2139
- this._menu[modulo].items.push({ label: nombreMenu, icon: 'glyphicons ' + tarea.gifPadre, items: [item] });
2135
+ nodoBase = null;
2136
+ // Buscar en el primer nivel
2137
+ for (const unNodo of arbolTareas) {
2138
+ if (unNodo.tipo !== "M") {
2139
+ continue;
2140
2140
  }
2141
- else {
2142
- this._menu[modulo].items.push(item);
2141
+ if (unaTarea.nombreAbuelo && unNodo.descripcion === unaTarea.nombreAbuelo) {
2142
+ // Buscar en el segundo nivel
2143
+ for (const unNodo2 of unNodo.listaTareas || []) {
2144
+ if (unNodo2.tipo !== "M") {
2145
+ continue;
2146
+ }
2147
+ if (unNodo2.descripcion === unaTarea.nombrePadre) {
2148
+ nodoBase = unNodo2;
2149
+ break;
2150
+ }
2151
+ }
2152
+ if (!nodoBase) {
2153
+ nodoHijo = {
2154
+ descripcion: unaTarea.nombrePadre,
2155
+ gif: unaTarea.gifPadre,
2156
+ tipo: "M",
2157
+ listaTareas: [],
2158
+ modulo: unaTarea.modulo,
2159
+ };
2160
+ unNodo.listaTareas.push(nodoHijo);
2161
+ nodoBase = nodoHijo;
2162
+ }
2163
+ break;
2143
2164
  }
2144
- }
2145
- else {
2146
- if (nombreMenu === tarea.nombreAbuelo) {
2147
- item = item.items.find((item) => item.label == tarea.nombreAbuelo);
2165
+ if (unNodo.descripcion === unaTarea.nombrePadre) {
2166
+ nodoBase = unNodo;
2167
+ break;
2148
2168
  }
2149
2169
  }
2150
- if (item) {
2151
- if (item.items) {
2152
- const link = tarea.urlprincipal.replace(/.jsf/, '');
2153
- item.items.push({ label: tarea.descripcion, routerLink: link });
2170
+ if (!nodoBase) {
2171
+ nodoBase = {
2172
+ descripcion: unaTarea.nombreAbuelo || unaTarea.nombrePadre,
2173
+ gif: unaTarea.nombreAbuelo ? unaTarea.gifAbuelo : unaTarea.gifPadre,
2174
+ orden: unaTarea.nombreAbuelo ? unaTarea.ordenAbuelo : unaTarea.ordenPadre,
2175
+ tipo: "M",
2176
+ listaTareas: [],
2177
+ modulo: unaTarea.modulo,
2178
+ };
2179
+ arbolTareas.push(nodoBase);
2180
+ if (unaTarea.nombreAbuelo) {
2181
+ nodoHijo = {
2182
+ descripcion: unaTarea.nombrePadre,
2183
+ gif: unaTarea.gifPadre,
2184
+ tipo: "M",
2185
+ listaTareas: [],
2186
+ modulo: unaTarea.modulo,
2187
+ };
2188
+ nodoBase.listaTareas.push(nodoHijo);
2189
+ nodoBase = nodoHijo;
2154
2190
  }
2155
2191
  }
2192
+ nodoBase.listaTareas.push(unaTarea);
2193
+ }
2194
+ console.log(this._menu);
2195
+ let respuesta = this.convertToMenuItems(arbolTareas);
2196
+ respuesta.forEach(dato => {
2197
+ const modulo = dato.tabindex;
2198
+ this._menu[modulo].items.push(dato);
2156
2199
  });
2157
2200
  }));
2158
2201
  /********************************************************/
2159
2202
  }
2203
+ convertToMenuItems(tareas) {
2204
+ return tareas.map(tarea => {
2205
+ const menuItem = {
2206
+ label: tarea.descripcion,
2207
+ icon: tarea.gif,
2208
+ routerLink: tarea.urlprincipal,
2209
+ tabindex: tarea.modulo,
2210
+ items: tarea.listaTareas ? this.convertToMenuItems(tarea.listaTareas) : undefined
2211
+ };
2212
+ return menuItem;
2213
+ });
2214
+ }
2160
2215
  setTareasDelModulo(modulo) {
2161
2216
  console.log('setTareasDelModulo');
2162
2217
  this._menuSource.next(this._menu[modulo]);