general-library-union 2.3.48 → 2.3.50

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 ? 'glyphicons ' + tarea.gif : undefined,
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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QUFFO1lBQ3hCLE1BQU0sUUFBUSxHQUFhO2dCQUN6QixLQUFLLEVBQUUsS0FBSyxDQUFDLFdBQVc7Z0JBQ3hCLElBQUksRUFBRSxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxhQUFhLEdBQUcsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsU0FBUztnQkFDdkQsVUFBVSxFQUFFLEtBQUssQ0FBQyxZQUFZO2dCQUM5QixRQUFRLEVBQUUsS0FBSyxDQUFDLE1BQU07Z0JBQ3RCLEtBQUssRUFBRSxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTO2FBQ2xGLENBQUM7WUFDRixPQUFPLFFBQVEsQ0FBQztRQUNsQixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxrQkFBa0IsQ0FBQyxNQUFjO1FBQy9CLE9BQU8sQ0FBQyxHQUFHLENBQUUsb0JBQW9CLENBQUMsQ0FBQTtRQUNsQyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDNUMsQ0FBQzt1R0FuSlUsV0FBVzsyR0FBWCxXQUFXLGNBRlYsTUFBTTs7MkZBRVAsV0FBVztrQkFIdkIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBNZW51SXRlbSB9IGZyb20gJ3ByaW1lbmcvYXBpL21lbnVpdGVtJztcbmltcG9ydCB7IG1hcCwgT2JzZXJ2YWJsZSwgb2YsIFJlcGxheVN1YmplY3QsIFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IFN0b3JhZ2VTZXJ2aWNlIH0gZnJvbSAnLi9zdG9yYWdlLnNlcnZpY2UnO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgTWVudVNlcnZpY2Uge1xuICBwcml2YXRlIF9tZW51OiB7IFtrZXk6IHN0cmluZ106IE1lbnVJdGVtIH0gPSB7fTtcbiAgcHJpdmF0ZSBfbWVudVNvdXJjZSA9IG5ldyBTdWJqZWN0PE1lbnVJdGVtPigpO1xuICBwcml2YXRlIF9icmVhZGNydW1iU291cmNlID0gbmV3IFN1YmplY3Q8TWVudUl0ZW1bXT4oKTtcbiAgcHJpdmF0ZSBfbWVudU9ic2VydmFibGUkID0gdGhpcy5fbWVudVNvdXJjZS5hc09ic2VydmFibGUoKTtcbiAgcHJpdmF0ZSBfYnJlYWRjcnVtYk9ic2VydmFibGUkID0gdGhpcy5fYnJlYWRjcnVtYlNvdXJjZS5hc09ic2VydmFibGUoKTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHN0b3JhZ2VTZXJ2aWNlOiBTdG9yYWdlU2VydmljZSkge31cblxuICAvKipcbiAgICogT2JzZXJ2YWJsZSBwYXJhIGxvcyBldmVudG9zIGRlbCBicmVhZGNydW1iXG4gICAqL1xuICBnZXQgYnJlYWRjcnVtYigpIHtcbiAgICByZXR1cm4gdGhpcy5fYnJlYWRjcnVtYk9ic2VydmFibGUkO1xuICB9XG5cbiAgLyoqXG4gICAqIE9ic2VydmFibGUgcGFyYSBlbCBtZW51IHByaW5jaXBhbFxuICAgKi9cbiAgZ2V0IG1lbnUoKSB7XG4gICAgcmV0dXJuIHRoaXMuX21lbnVPYnNlcnZhYmxlJDtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZ3JlZ2EgaXRlbXMgYWwgYnJlYWRjcnVtYlxuICAgKiBAcGFyYW0gaXRlbXNcbiAgICovXG4gIHNldEJyZWFkY3J1bWIoaXRlbXM6IE1lbnVJdGVtW10pOiB2b2lkIHtcbiAgICB0aGlzLl9icmVhZGNydW1iU291cmNlLm5leHQoaXRlbXMpO1xuICB9XG5cbiAgLyoqXG4gICAqIENvbnN1bHRhIGxhIGxpc3RhIGRlIHRhcmVhcyBkZWwgdXN1YXJpbyBwYXJhIGNhcmdhciBlbCBtZW7DulxuICAgKiBAcmV0dXJuc1xuICAgKi9cbiAgbG9hZFRhcmVhcygpOiBPYnNlcnZhYmxlPHZvaWQ+IHtcbiAgICBjb25zb2xlLmxvZygnZW50cmEgbG9hZFRhcmVhcyBtZW51c2VydmljZScpXG4gICAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuICAgIC8qIFNlIGRlYmUgY2FtYmlhciBjb24gZWwgcmVxdWVzdCBhbCBzZXJ2aWNpbyBkZSB0YXJlYXMgKi9cbiAgICB0aGlzLl9tZW51ID0ge31cbiAgICByZXR1cm4gb2YoSlNPTi5wYXJzZSh0aGlzLnN0b3JhZ2VTZXJ2aWNlLmdldEl0ZW0oJ19fdGFyZWFzJykpKS5waXBlKFxuICAgICAgbWFwKCh0YXJlYXM6IGFueVtdKSA9PiB7XG4gICAgICAgIGNvbnN0IGFyYm9sVGFyZWFzOiBhbnlbXSA9IFtdO1xuXG4gICAgIGxldCBub2RvQmFzZSA9IG51bGw7XG4gICAgIGxldCBub2RvSGlqbyA9IG51bGw7XG4gICBcbiAgICAgZm9yIChjb25zdCB1bmFUYXJlYSBvZiB0YXJlYXMpIHtcbiAgICAgIGNvbnN0IG1vZHVsbyA9IHVuYVRhcmVhLm1vZHVsbysnJztcbiAgICAgICAgaWYgKCEobW9kdWxvIGluIHRoaXMuX21lbnUpKSB7XG4gICAgICAgICAgdGhpcy5fbWVudVttb2R1bG9dID0geyBsYWJlbDogdW5hVGFyZWEubm9tYnJlTW9kdWxvLCBpdGVtczogW10gfTtcbiAgICAgICAgfVxuICAgICAgIGlmICghdW5hVGFyZWEubm9tYnJlUGFkcmUpIHtcbiAgICAgICAgIGFyYm9sVGFyZWFzLnB1c2godW5hVGFyZWEpO1xuICAgICAgICAgY29udGludWU7XG4gICAgICAgfVxuICAgXG4gICAgICAgbm9kb0Jhc2UgPSBudWxsO1xuICAgXG4gICAgICAgLy8gQnVzY2FyIGVuIGVsIHByaW1lciBuaXZlbFxuICAgICAgIGZvciAoY29uc3QgdW5Ob2RvIG9mIGFyYm9sVGFyZWFzKSB7XG4gICAgICAgICBpZiAodW5Ob2RvLnRpcG8gIT09IFwiTVwiKSB7XG4gICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgfVxuICAgICAgICAgaWYgKHVuYVRhcmVhLm5vbWJyZUFidWVsbyAmJiB1bk5vZG8uZGVzY3JpcGNpb24gPT09IHVuYVRhcmVhLm5vbWJyZUFidWVsbykge1xuICAgICAgICAgICAvLyBCdXNjYXIgZW4gZWwgc2VndW5kbyBuaXZlbFxuICAgICAgICAgICBmb3IgKGNvbnN0IHVuTm9kbzIgb2YgdW5Ob2RvLmxpc3RhVGFyZWFzIHx8IFtdKSB7XG4gICAgICAgICAgICAgaWYgKHVuTm9kbzIudGlwbyAhPT0gXCJNXCIpIHtcbiAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICBpZiAodW5Ob2RvMi5kZXNjcmlwY2lvbiA9PT0gdW5hVGFyZWEubm9tYnJlUGFkcmUpIHtcbiAgICAgICAgICAgICAgIG5vZG9CYXNlID0gdW5Ob2RvMjtcbiAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgIH1cbiAgICAgICAgICAgfVxuICAgICAgICAgICBpZiAoIW5vZG9CYXNlKSB7XG4gICAgICAgICAgICAgbm9kb0hpam8gPSB7XG4gICAgICAgICAgICAgICBkZXNjcmlwY2lvbjogdW5hVGFyZWEubm9tYnJlUGFkcmUsXG4gICAgICAgICAgICAgICBnaWY6IHVuYVRhcmVhLmdpZlBhZHJlLFxuICAgICAgICAgICAgICAgdGlwbzogXCJNXCIsXG4gICAgICAgICAgICAgICBsaXN0YVRhcmVhczogW10sXG4gICAgICAgICAgICAgICBtb2R1bG86IHVuYVRhcmVhLm1vZHVsbyxcbiAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgIHVuTm9kby5saXN0YVRhcmVhcyEucHVzaChub2RvSGlqbyk7XG4gICAgICAgICAgICAgbm9kb0Jhc2UgPSBub2RvSGlqbztcbiAgICAgICAgICAgfVxuICAgICAgICAgICBicmVhaztcbiAgICAgICAgIH1cbiAgICAgICAgIGlmICh1bk5vZG8uZGVzY3JpcGNpb24gPT09IHVuYVRhcmVhLm5vbWJyZVBhZHJlKSB7XG4gICAgICAgICAgIG5vZG9CYXNlID0gdW5Ob2RvO1xuICAgICAgICAgICBicmVhaztcbiAgICAgICAgIH1cbiAgICAgICB9XG4gICBcbiAgICAgICBpZiAoIW5vZG9CYXNlKSB7XG4gICAgICAgICBub2RvQmFzZSA9IHtcbiAgICAgICAgICAgZGVzY3JpcGNpb246IHVuYVRhcmVhLm5vbWJyZUFidWVsbyB8fCB1bmFUYXJlYS5ub21icmVQYWRyZSxcbiAgICAgICAgICAgZ2lmOiB1bmFUYXJlYS5ub21icmVBYnVlbG8gPyB1bmFUYXJlYS5naWZBYnVlbG8gOiB1bmFUYXJlYS5naWZQYWRyZSxcbiAgICAgICAgICAgb3JkZW46IHVuYVRhcmVhLm5vbWJyZUFidWVsbyA/IHVuYVRhcmVhLm9yZGVuQWJ1ZWxvIDogdW5hVGFyZWEub3JkZW5QYWRyZSxcbiAgICAgICAgICAgdGlwbzogXCJNXCIsXG4gICAgICAgICAgIGxpc3RhVGFyZWFzOiBbXSxcbiAgICAgICAgICAgbW9kdWxvOiB1bmFUYXJlYS5tb2R1bG8sXG4gICAgICAgICB9O1xuICAgICAgICAgYXJib2xUYXJlYXMucHVzaChub2RvQmFzZSk7XG4gICBcbiAgICAgICAgIGlmICh1bmFUYXJlYS5ub21icmVBYnVlbG8pIHtcbiAgICAgICAgICAgbm9kb0hpam8gPSB7XG4gICAgICAgICAgICAgZGVzY3JpcGNpb246IHVuYVRhcmVhLm5vbWJyZVBhZHJlLFxuICAgICAgICAgICAgIGdpZjogdW5hVGFyZWEuZ2lmUGFkcmUsXG4gICAgICAgICAgICAgdGlwbzogXCJNXCIsXG4gICAgICAgICAgICAgbGlzdGFUYXJlYXM6IFtdLCBcbiAgICAgICAgICAgICBtb2R1bG86IHVuYVRhcmVhLm1vZHVsbyxcbiAgICAgICAgICAgfTtcbiAgICAgICAgICAgbm9kb0Jhc2UubGlzdGFUYXJlYXMhLnB1c2gobm9kb0hpam8pO1xuICAgICAgICAgICBub2RvQmFzZSA9IG5vZG9IaWpvO1xuICAgICAgICAgfVxuICAgICAgIH1cbiAgICAgICBub2RvQmFzZS5saXN0YVRhcmVhcyEucHVzaCh1bmFUYXJlYSk7XG4gICAgIH1cbiAgICAgY29uc29sZS5sb2codGhpcy5fbWVudSlcblxuICAgICBsZXQgcmVzcHVlc3RhID0gdGhpcy5jb252ZXJ0VG9NZW51SXRlbXMoYXJib2xUYXJlYXMpO1xuICAgICByZXNwdWVzdGEuZm9yRWFjaChkYXRvID0+IHtcbiAgICAgIGNvbnN0IG1vZHVsbyA9IGRhdG8udGFiaW5kZXg7XG4gICAgICB0aGlzLl9tZW51W21vZHVsb10uaXRlbXMucHVzaChkYXRvKTtcbiAgICAgfSkgXG4gICAgICB9KVxuICAgICk7XG4gICAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuICB9XG5cbiAgY29udmVydFRvTWVudUl0ZW1zKHRhcmVhczogYW55W10pOiBNZW51SXRlbVtdIHtcbiAgICByZXR1cm4gdGFyZWFzLm1hcCh0YXJlYSA9PiB7XG4gICAgICBjb25zdCBtZW51SXRlbTogTWVudUl0ZW0gPSB7XG4gICAgICAgIGxhYmVsOiB0YXJlYS5kZXNjcmlwY2lvbixcbiAgICAgICAgaWNvbjogdGFyZWEuZ2lmID8gJ2dseXBoaWNvbnMgJyArIHRhcmVhLmdpZiA6IHVuZGVmaW5lZCxcbiAgICAgICAgcm91dGVyTGluazogdGFyZWEudXJscHJpbmNpcGFsLFxuICAgICAgICB0YWJpbmRleDogdGFyZWEubW9kdWxvLFxuICAgICAgICBpdGVtczogdGFyZWEubGlzdGFUYXJlYXMgPyB0aGlzLmNvbnZlcnRUb01lbnVJdGVtcyh0YXJlYS5saXN0YVRhcmVhcykgOiB1bmRlZmluZWRcbiAgICAgIH07XG4gICAgICByZXR1cm4gbWVudUl0ZW07XG4gICAgfSk7XG4gIH1cblxuICBzZXRUYXJlYXNEZWxNb2R1bG8obW9kdWxvOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBjb25zb2xlLmxvZyAoJ3NldFRhcmVhc0RlbE1vZHVsbycpXG4gICAgdGhpcy5fbWVudVNvdXJjZS5uZXh0KHRoaXMuX21lbnVbbW9kdWxvXSk7XG4gIH1cbn1cbiJdfQ==
@@ -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 ? 'glyphicons ' + tarea.gif : undefined,
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]);