wm-menu 1.2.7 → 1.2.9
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.
- package/bundles/wm-menu.umd.js +164 -143
- package/bundles/wm-menu.umd.js.map +1 -1
- package/bundles/wm-menu.umd.min.js +2 -2
- package/bundles/wm-menu.umd.min.js.map +1 -1
- package/esm2015/lib/wm-menu/services/wm-menu-alerta-panico.service.js +21 -4
- package/esm2015/lib/wm-menu/wm-menu.component.js +8 -3
- package/esm5/lib/wm-menu/services/wm-menu-alerta-panico.service.js +21 -4
- package/esm5/lib/wm-menu/wm-menu.component.js +8 -3
- package/fesm2015/wm-menu.js +162 -141
- package/fesm2015/wm-menu.js.map +1 -1
- package/fesm5/wm-menu.js +164 -143
- package/fesm5/wm-menu.js.map +1 -1
- package/lib/wm-menu/wm-menu.component.d.ts +4 -1
- package/package.json +1 -1
- package/wm-menu.metadata.json +1 -1
package/bundles/wm-menu.umd.js
CHANGED
|
@@ -324,146 +324,6 @@
|
|
|
324
324
|
return WmMenuServicioService;
|
|
325
325
|
}());
|
|
326
326
|
|
|
327
|
-
var WmMenuComponent = /** @class */ (function () {
|
|
328
|
-
function WmMenuComponent(wmMenuServicioService) {
|
|
329
|
-
this.wmMenuServicioService = wmMenuServicioService;
|
|
330
|
-
this.menuSecundarioSel = new MenuSecundario();
|
|
331
|
-
this.menuLateralAbierto = false;
|
|
332
|
-
this.menuIdioma = [];
|
|
333
|
-
}
|
|
334
|
-
WmMenuComponent.prototype.ngOnInit = function () {
|
|
335
|
-
var _this = this;
|
|
336
|
-
this.cargarMenuCuenta();
|
|
337
|
-
if (this.urlMenu && this.token) {
|
|
338
|
-
var helper = new angularJwt.JwtHelperService();
|
|
339
|
-
var decodedToken = helper.decodeToken(this.token);
|
|
340
|
-
this.wmMenuServicioService
|
|
341
|
-
.menuApiObtener(this.urlMenu, decodedToken["id_usuario"], this.token)
|
|
342
|
-
.subscribe(function (resp) {
|
|
343
|
-
_this.menuPrincipal = _this.wmMenuServicioService.mapearMenu(resp);
|
|
344
|
-
});
|
|
345
|
-
}
|
|
346
|
-
if (this.urlIdiomas && this.token) {
|
|
347
|
-
var helper = new angularJwt.JwtHelperService();
|
|
348
|
-
var decodedToken = helper.decodeToken(this.token);
|
|
349
|
-
this.wmMenuServicioService
|
|
350
|
-
.menuIdiomasObtener(this.urlIdiomas, decodedToken["id_usuario"], this.token)
|
|
351
|
-
.subscribe(function (resp) {
|
|
352
|
-
_this.menuIdioma = resp;
|
|
353
|
-
_this.cargarMenuCuenta();
|
|
354
|
-
});
|
|
355
|
-
}
|
|
356
|
-
if (this.urlBaseAlmacenamiento && this.token) {
|
|
357
|
-
var helper = new angularJwt.JwtHelperService();
|
|
358
|
-
var decodedToken = helper.decodeToken(this.token);
|
|
359
|
-
this.wmMenuServicioService
|
|
360
|
-
.almacenamientoApiObtener(this.urlBaseAlmacenamiento, decodedToken["id_usuario"], this.token)
|
|
361
|
-
.subscribe(function (resp) {
|
|
362
|
-
var utilizado = resp[0] && resp[0].Utilizado ? resp[0].Utilizado : 0;
|
|
363
|
-
var total = resp[0] && resp[0].Total ? resp[0].Total : 0;
|
|
364
|
-
_this.porcentajeUtilizado = Math.round((utilizado / total) * 100);
|
|
365
|
-
});
|
|
366
|
-
}
|
|
367
|
-
};
|
|
368
|
-
WmMenuComponent.prototype.clickMenuPrincipal = function (i) {
|
|
369
|
-
if (this.menuPrincipal[i].hijos && this.menuPrincipal[i].hijos.length) {
|
|
370
|
-
if (this.menuPrincipalSel == this.menuPrincipal[i]) {
|
|
371
|
-
this.menuPrincipalSel = null;
|
|
372
|
-
}
|
|
373
|
-
else {
|
|
374
|
-
this.menuPrincipalSel = this.menuPrincipal[i];
|
|
375
|
-
}
|
|
376
|
-
}
|
|
377
|
-
};
|
|
378
|
-
WmMenuComponent.prototype.clickMenuSecundario = function (i) {
|
|
379
|
-
this.menuSecundarioSel = this.menuSecundario[i];
|
|
380
|
-
this.menuPrincipalSel = null;
|
|
381
|
-
};
|
|
382
|
-
WmMenuComponent.prototype.cargarMenuCuenta = function () {
|
|
383
|
-
var _a;
|
|
384
|
-
if (this.urlCuentaSeguridad && this.token) {
|
|
385
|
-
var helper = new angularJwt.JwtHelperService();
|
|
386
|
-
var decodedToken = helper.decodeToken(this.token);
|
|
387
|
-
this.menuSecundario = [{
|
|
388
|
-
titulo: decodedToken["unique_name"],
|
|
389
|
-
icono: "account_circle",
|
|
390
|
-
hijos: [
|
|
391
|
-
{ titulo: decodedToken["unique_name"], url: "", icono: "person" },
|
|
392
|
-
{ titulo: this.menuIdioma && this.menuIdioma.CambiarContrasenna ? this.menuIdioma.CambiarContrasenna : "Cambiar contraseña", url: this.urlCuentaSeguridad + "CambioContrasena", icono: "vpn_key" },
|
|
393
|
-
this.activar2fa == "1" ? { titulo: this.menuIdioma && this.menuIdioma.Configurar2fa ? this.menuIdioma.Configurar2fa : "Configurar 2FA", url: this.urlCuentaSeguridad + "Habilitacion2FA", icono: "verified_user" } : null,
|
|
394
|
-
this.urlguiasOnline != null && this.urlguiasOnline !== "" && ((_a = this.urlguiasOnline) === null || _a === void 0 ? void 0 : _a.length) != 0 ? { titulo: this.menuIdioma && this.menuIdioma.guiasOnline ? this.menuIdioma.guiasOnline : "Guias Online", url: this.urlguiasOnline, icono: "menu_book" } : null,
|
|
395
|
-
{ titulo: this.menuIdioma && this.menuIdioma.CerrarSesion ? this.menuIdioma.CerrarSesion : "Cerrar sesión", url: this.urlCuentaSeguridad + "CerrarSesion", icono: "exit_to_app" }
|
|
396
|
-
].filter(function (hijo) { return hijo != null; }),
|
|
397
|
-
}];
|
|
398
|
-
}
|
|
399
|
-
};
|
|
400
|
-
WmMenuComponent.ctorParameters = function () { return [
|
|
401
|
-
{ type: WmMenuServicioService }
|
|
402
|
-
]; };
|
|
403
|
-
__decorate([
|
|
404
|
-
core.Input()
|
|
405
|
-
], WmMenuComponent.prototype, "logo", void 0);
|
|
406
|
-
__decorate([
|
|
407
|
-
core.Input()
|
|
408
|
-
], WmMenuComponent.prototype, "colorFondo", void 0);
|
|
409
|
-
__decorate([
|
|
410
|
-
core.Input()
|
|
411
|
-
], WmMenuComponent.prototype, "colorTexto", void 0);
|
|
412
|
-
__decorate([
|
|
413
|
-
core.Input()
|
|
414
|
-
], WmMenuComponent.prototype, "menuPrincipal", void 0);
|
|
415
|
-
__decorate([
|
|
416
|
-
core.Input()
|
|
417
|
-
], WmMenuComponent.prototype, "menuSecundario", void 0);
|
|
418
|
-
__decorate([
|
|
419
|
-
core.Input()
|
|
420
|
-
], WmMenuComponent.prototype, "urlMenu", void 0);
|
|
421
|
-
__decorate([
|
|
422
|
-
core.Input()
|
|
423
|
-
], WmMenuComponent.prototype, "token", void 0);
|
|
424
|
-
__decorate([
|
|
425
|
-
core.Input()
|
|
426
|
-
], WmMenuComponent.prototype, "urlCuentaSeguridad", void 0);
|
|
427
|
-
__decorate([
|
|
428
|
-
core.Input()
|
|
429
|
-
], WmMenuComponent.prototype, "activar2fa", void 0);
|
|
430
|
-
__decorate([
|
|
431
|
-
core.Input()
|
|
432
|
-
], WmMenuComponent.prototype, "urlguiasOnline", void 0);
|
|
433
|
-
__decorate([
|
|
434
|
-
core.Input()
|
|
435
|
-
], WmMenuComponent.prototype, "urlObtenerAlertasPanico", void 0);
|
|
436
|
-
__decorate([
|
|
437
|
-
core.Input()
|
|
438
|
-
], WmMenuComponent.prototype, "urlObtenerParametro", void 0);
|
|
439
|
-
__decorate([
|
|
440
|
-
core.Input()
|
|
441
|
-
], WmMenuComponent.prototype, "rutaAudio", void 0);
|
|
442
|
-
__decorate([
|
|
443
|
-
core.Input()
|
|
444
|
-
], WmMenuComponent.prototype, "nombreCliente", void 0);
|
|
445
|
-
__decorate([
|
|
446
|
-
core.Input()
|
|
447
|
-
], WmMenuComponent.prototype, "nombreUsuario", void 0);
|
|
448
|
-
__decorate([
|
|
449
|
-
core.Input()
|
|
450
|
-
], WmMenuComponent.prototype, "versionWeb", void 0);
|
|
451
|
-
__decorate([
|
|
452
|
-
core.Input()
|
|
453
|
-
], WmMenuComponent.prototype, "urlBaseAlmacenamiento", void 0);
|
|
454
|
-
__decorate([
|
|
455
|
-
core.Input()
|
|
456
|
-
], WmMenuComponent.prototype, "urlIdiomas", void 0);
|
|
457
|
-
WmMenuComponent = __decorate([
|
|
458
|
-
core.Component({
|
|
459
|
-
selector: 'wm-menu',
|
|
460
|
-
template: "<div class=\"menu\" [ngStyle]=\"{'background-color': colorFondo, 'color': colorTexto}\">\r\n <div class=\"d-lg-none\">\r\n <button mat-icon-button (click)=\"menuLateralAbierto=!menuLateralAbierto; menuPrincipalSel = null\">\r\n <mat-icon *ngIf=\"!menuLateralAbierto\" class=\"animate__animated animate__fadeInRight animate__faster\">menu\r\n </mat-icon>\r\n <mat-icon *ngIf=\"menuLateralAbierto\" class=\"animate__animated animate__fadeInLeft animate__faster\">close\r\n </mat-icon>\r\n </button>\r\n </div>\r\n <div class=\"d-lg-none logo-menu-principal\">\r\n <img class=\"logo\" src=\"{{logo}}\">\r\n </div>\r\n <div class=\"d-none d-lg-block\">\r\n <img class=\"logo\" src=\"{{logo}}\">\r\n <div *ngFor=\"let menuItem of menuPrincipal; let i=index\" class=\"d-inline-block\">\r\n\r\n <a *ngIf=\"menuItem.url\" mat-button [href]=\"menuItem.url\" (click)=\"clickMenuPrincipal(i)\">\r\n {{menuItem.titulo}}\r\n </a>\r\n <button *ngIf=\"!menuItem.url\" mat-button (click)=\"clickMenuPrincipal(i)\">\r\n {{menuItem.titulo}}\r\n </button>\r\n </div>\r\n </div>\r\n <div class=\"info-adicional\">\r\n <div class=\"datos border-r mt-1\" *ngIf=\"nombreCliente\">{{nombreCliente}}<mat-icon>people</mat-icon></div>\r\n <div class=\"datos border-r mt-1\" *ngIf=\"nombreUsuario\">{{nombreUsuario}}<mat-icon>person_outline</mat-icon></div>\r\n <div class=\"version\" *ngIf=\"versionWeb\">{{versionWeb}}</div>\r\n <div class=\"content-idioma\" *ngIf=\"urlIdiomas\">\r\n <mat-menu #menuIdiomas=\"matMenu\">\r\n <a mat-menu-item *ngFor=\"let menuItem of menuIdioma.Culturas\" href=\"{{urlCuentaSeguridad}}CambiarIdioma?culture={{menuItem.Name}}&ReturnUrl=/\">\r\n {{menuItem.NativeName}}\r\n </a>\r\n </mat-menu>\r\n <button mat-button [matMenuTriggerFor]=\"menuIdiomas\"><label class=\"mt-1\">{{menuIdioma.Lenguaje}}</label><mat-icon class=\"icon-idioma\">language</mat-icon></button>\r\n </div>\r\n\r\n </div>\r\n <div>\r\n <mat-menu #submenu=\"matMenu\">\r\n <a mat-menu-item *ngFor=\"let menuItem of menuSecundarioSel.hijos\" href=\"{{menuItem.url}}\"\r\n [disabled]=\"!menuItem.url\">\r\n <mat-icon *ngIf=\"menuItem.icono\">{{menuItem.icono}}</mat-icon>\r\n {{menuItem.titulo}}\r\n </a>\r\n </mat-menu>\r\n <button *ngFor=\"let menuItem of menuSecundario; let i = index\" mat-icon-button [matMenuTriggerFor]=\"submenu\"\r\n (click)=\"clickMenuSecundario(i)\">\r\n <mat-icon>{{menuItem.icono}}</mat-icon>\r\n </button>\r\n </div>\r\n</div>\r\n\r\n<div class=\"menu-lateral d-lg-none animate__animated animate__fadeInRight animate__faster\" *ngIf=\"menuLateralAbierto\">\r\n <div class=\"row\">\r\n <div *ngFor=\"let menuItem of menuPrincipal; let i=index\" class=\"col-sm-6 col-md-4\">\r\n <a *ngIf=\"menuItem.url\" [href]=\"menuItem.url\" (click)=\"clickMenuPrincipal(i)\">\r\n <div>\r\n <mat-icon svgIcon=\"{{menuItem.icono}}\">{{menuItem.icono}}</mat-icon>\r\n <p>{{menuItem.titulo}}</p>\r\n </div>\r\n </a>\r\n <span *ngIf=\"!menuItem.url\" (click)=\"clickMenuPrincipal(i)\">\r\n <div>\r\n <mat-icon svgIcon=\"{{menuItem.icono}}\">{{menuItem.icono}}</mat-icon>\r\n <p>{{menuItem.titulo}}</p>\r\n </div>\r\n </span>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n<div class=\"sub-menu-fondo animate__animated animate__fadeIn animate__faster\" (click)=\"menuPrincipalSel=null\"\r\n *ngIf=\"menuPrincipalSel\"></div>\r\n\r\n<div class=\"sub-menu animate__animated animate__fadeIn animate__faster\" *ngIf=\"menuPrincipalSel\">\r\n <div class=\"container-fluid\">\r\n <div class=\"row\">\r\n <div class=\"col-12 col-lg-5\">\r\n <div class=\"px-3 px-sm-5 pt-5 pb-lg-5 text-center descripcion-menu\">\r\n <mat-icon [ngStyle]=\"{'color': colorFondo}\" svgIcon=\"{{menuPrincipalSel.icono}}\">\r\n {{menuPrincipalSel.icono}}</mat-icon>\r\n <p>{{menuPrincipalSel.titulo}}</p>\r\n <p class=\"text-secondary\">{{menuPrincipalSel.descripcion}}</p>\r\n </div>\r\n </div>\r\n <div class=\"col-12 col-lg-7 my-4\">\r\n <div class=\"px-3 px-md-4 py-2 py-md-2\">\r\n <ul class=\"list-unstyled\">\r\n\r\n <li class=\"mb-3 d-flex\" *ngFor=\"let menuItem of menuPrincipalSel.hijos\">\r\n <mat-icon>{{menuItem.icono}}</mat-icon>\r\n <div class=\"ml-2 flex-fill\">\r\n <a href=\"{{menuItem.url}}\" *ngIf=\"menuItem.url\">\r\n <div class=\"lead mb-2\">{{menuItem.titulo}}</div>\r\n </a>\r\n <div class=\"lead mb-2\" *ngIf=\"!menuItem.url\">{{menuItem.titulo}}</div>\r\n\r\n <a href=\"{{menuSubItem.url}}\" class=\"pl-2 my-2\" *ngFor=\"let menuSubItem of menuItem.hijos\">\r\n <div class=\"text-secondary\">{{menuSubItem.titulo}}</div>\r\n </a>\r\n </div>\r\n </li>\r\n </ul>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <button mat-icon-button class=\"close-icon d-lg-none\" (click)=\"menuPrincipalSel=null\">\r\n <mat-icon>arrow_back</mat-icon>\r\n </button>\r\n</div>\r\n<div class=\"alerta-almacenamiento\" *ngIf=\"porcentajeUtilizado >= 100\">Su capacidad de almacenamiento ha llegado al {{porcentajeUtilizado}}% , libere espacio o adquiera mayor capacidad</div>",
|
|
461
|
-
styles: [".menu{height:46px;display:flex;justify-content:space-between;align-items:center;top:0;left:0;right:0;background-color:#1c98a4;color:#fff;padding:0 4px}.menu .d-lg-block .mat-button{font-weight:400;height:46px;line-height:46px}.menu .logo{display:inline-block;height:40px}.menu .logo-menu-principal{position:absolute;display:block;left:65px}.menu .logo-menu-principal>img{display:block;margin:0 -50%}.menu .info-adicional{color:#fff;display:flex;justify-content:end;font-size:13px;position:absolute;right:47px}.menu .info-adicional .border-r{border-right:1px solid #fff}.menu .info-adicional .version{margin:7px 0 0 7px}.menu .info-adicional div.datos{margin:0 2px 0 5px;height:28px}.menu .info-adicional .mat-icon{vertical-align:middle;font-size:17px;color:#fff;line-height:21px;margin-left:2px}.menu .info-adicional button{padding:0 0 0 15px}.menu .info-adicional .content-idioma{margin:-5px 2px 0 5px;display:block;cursor:pointer}.menu .info-adicional .icon-idioma{font-size:17px!important;vertical-align:text-top!important;color:#fffc}.sub-menu{width:100%;position:absolute;top:46px;z-index:1000;background-color:#fff;display:flex;overflow-y:auto;box-shadow:0 3px 1px -2px rgba(0,0,0,.2),0 2px 2px 0 rgba(0,0,0,.14),0 1px 5px 0 rgba(0,0,0,.12)}.sub-menu .close-icon{position:absolute;left:4px;top:4px}.sub-menu .descripcion-menu .mat-icon{color:#1c98a4;width:100px;height:100px}.sub-menu .descripcion-menu p:first-of-type{font-weight:300;font-size:30px;margin:16px 0}.sub-menu .descripcion-menu p:last-of-type{color:#6c757d}.sub-menu li{float:left;width:50%}.sub-menu li>.mat-icon{color:#444}.sub-menu li:nth-child(even){float:right}.sub-menu li a{transition:.5s;display:block}.sub-menu li a:hover{margin-left:8px}.sub-menu li .lead{line-height:24px;color:#212529;font-size:17px}.sub-menu-fondo{background:#272d3357;position:absolute;top:46px;bottom:0;left:0;right:0;z-index:1000}.menu-lateral{width:100%;position:absolute;top:46px;bottom:0;left:0;right:0;z-index:1000;display:flex;flex-direction:column;overflow-y:auto;background:#f7f7f7;padding:20px}.menu-lateral>div>div>*>div{text-align:center;padding:16px;background-color:#fff;margin:0 0 16px;color:#333;cursor:pointer;box-shadow:0 3px 1px -2px rgba(0,0,0,.2),0 2px 2px 0 rgba(0,0,0,.14),0 1px 5px 0 rgba(0,0,0,.12)}.menu-lateral>div>div>*>div>.mat-icon{width:50px;height:50px}.menu-lateral>div>div>*>div>p{padding:0;margin:8px 0 0}a.mat-menu-item{color:#444!important}.alerta-almacenamiento{background:#ffffec;border-bottom:1px solid #efff00;min-height:39px;line-height:36px;font-size:12px;padding:0 0 0 25px}@media (max-width:767.98px){.sub-menu ul{margin:auto;padding:0 10px}.sub-menu ul li{float:none;width:100%}.sub-menu ul li:nth-child(even){float:none}}@media (max-width:991.98px){.sub-menu{bottom:0}}@media (min-width:600px){.logo-menu-principal{left:50%!important}}* :focus,:active{outline:0!important}"]
|
|
462
|
-
})
|
|
463
|
-
], WmMenuComponent);
|
|
464
|
-
return WmMenuComponent;
|
|
465
|
-
}());
|
|
466
|
-
|
|
467
327
|
var WmMenuAlertaPanicoService = /** @class */ (function () {
|
|
468
328
|
function WmMenuAlertaPanicoService(wmMenuServicioService) {
|
|
469
329
|
this.wmMenuServicioService = wmMenuServicioService;
|
|
@@ -473,23 +333,28 @@
|
|
|
473
333
|
this.IdsAlertasPanicoActivas = new Set(); // Almacena los IDs de las alertas ya manejadas
|
|
474
334
|
this.soundTimeout = null; // Controla el temporizador del sonido
|
|
475
335
|
this.isRunning = false;
|
|
336
|
+
console.log('WmMenuAlertaPanicoService inicializado.');
|
|
476
337
|
}
|
|
477
338
|
WmMenuAlertaPanicoService.prototype.iniciarProceso = function (intervalMs, callback, urlObtenerParametro, token, rutaAudio) {
|
|
478
339
|
var _this = this;
|
|
340
|
+
console.log('iniciarProceso llamado con parámetros:', { intervalMs: intervalMs, urlObtenerParametro: urlObtenerParametro, token: token, rutaAudio: rutaAudio });
|
|
479
341
|
this.rutaAudio = rutaAudio;
|
|
480
342
|
var iniciarConInteraccion = function () {
|
|
343
|
+
console.log('iniciarConInteraccion ejecutado.');
|
|
481
344
|
_this.wmMenuServicioService
|
|
482
345
|
.menuApiObtener(urlObtenerParametro, null, token, 'ReporteAlertasPanico')
|
|
483
346
|
.subscribe(function (resp) {
|
|
484
|
-
|
|
347
|
+
console.log('Respuesta obtenida de menuApiObtener:', resp);
|
|
485
348
|
if (resp && resp.length > 0 && resp[0].Valor == 1) {
|
|
486
349
|
if (_this.isRunning) {
|
|
350
|
+
console.log('Proceso ya está corriendo.');
|
|
487
351
|
return;
|
|
488
352
|
}
|
|
489
|
-
// Inicializar la variable desde localStorage
|
|
490
353
|
var storedIds = localStorage.getItem('ALERTAS_PANICO_ACTIVAS_WM');
|
|
491
354
|
_this.IdsAlertasPanicoActivas = storedIds ? new Set(JSON.parse(storedIds)) : new Set();
|
|
355
|
+
console.log('IdsAlertasPanicoActivas inicializado:', _this.IdsAlertasPanicoActivas);
|
|
492
356
|
var ejecutarProceso_1 = function () {
|
|
357
|
+
console.log('ejecutarProceso iniciado.');
|
|
493
358
|
_this.isRunning = true;
|
|
494
359
|
callback();
|
|
495
360
|
setTimeout(function () {
|
|
@@ -502,42 +367,49 @@
|
|
|
502
367
|
});
|
|
503
368
|
};
|
|
504
369
|
['drag', 'click'].forEach(function (evento) {
|
|
370
|
+
console.log("Evento " + evento + " registrado para iniciar proceso.");
|
|
505
371
|
document.addEventListener(evento, function () {
|
|
506
372
|
iniciarConInteraccion();
|
|
507
373
|
}, { once: true });
|
|
508
374
|
});
|
|
509
375
|
};
|
|
510
376
|
WmMenuAlertaPanicoService.prototype.stopProcess = function () {
|
|
377
|
+
console.log('stopProcess ejecutado.');
|
|
511
378
|
this.isRunning = false;
|
|
512
379
|
if (this.subscription) {
|
|
513
380
|
this.subscription.unsubscribe();
|
|
514
381
|
}
|
|
515
382
|
};
|
|
516
383
|
WmMenuAlertaPanicoService.prototype.ngOnDestroy = function () {
|
|
384
|
+
console.log('ngOnDestroy ejecutado.');
|
|
517
385
|
this.stopSound();
|
|
518
386
|
this.stopFlashingTitle();
|
|
519
387
|
};
|
|
520
388
|
WmMenuAlertaPanicoService.prototype.playSound = function () {
|
|
521
389
|
var _this = this;
|
|
390
|
+
console.log('playSound llamado.');
|
|
522
391
|
if (this.isPlaying)
|
|
523
392
|
return; // Evita reproducir si ya está sonando
|
|
524
393
|
this.isPlaying = true;
|
|
525
394
|
if (!this.audio) {
|
|
526
395
|
this.audio = new Audio(this.rutaAudio); // Ruta al archivo de sonido
|
|
527
396
|
}
|
|
397
|
+
console.log("Audio cargado: ", this.audio);
|
|
528
398
|
this.audio.loop = true; // Reproducir en bucle
|
|
529
399
|
this.audio.play()
|
|
530
400
|
.then(function () {
|
|
401
|
+
console.log('Sonido reproduciéndose.');
|
|
531
402
|
// Detener el sonido después de 10 segundos
|
|
532
403
|
_this.soundTimeout = setTimeout(function () {
|
|
533
404
|
_this.stopSound();
|
|
534
405
|
}, 10000); // Detener después de 10 segundos
|
|
535
406
|
})
|
|
536
407
|
.catch(function (error) {
|
|
537
|
-
console.
|
|
408
|
+
console.error('Error al reproducir el sonido:', error);
|
|
538
409
|
});
|
|
539
410
|
};
|
|
540
411
|
WmMenuAlertaPanicoService.prototype.stopSound = function () {
|
|
412
|
+
console.log('stopSound llamado.');
|
|
541
413
|
if (this.audio) {
|
|
542
414
|
this.audio.pause();
|
|
543
415
|
this.audio.currentTime = 0; // Reinicia el sonido
|
|
@@ -550,6 +422,7 @@
|
|
|
550
422
|
};
|
|
551
423
|
WmMenuAlertaPanicoService.prototype.startFlashingTitle = function () {
|
|
552
424
|
var _this = this;
|
|
425
|
+
console.log('startFlashingTitle llamado.');
|
|
553
426
|
var toggle = false;
|
|
554
427
|
// Almacenar el título original si aún no se ha guardado
|
|
555
428
|
if (!this.originalTitle) {
|
|
@@ -564,6 +437,7 @@
|
|
|
564
437
|
}
|
|
565
438
|
};
|
|
566
439
|
WmMenuAlertaPanicoService.prototype.stopFlashingTitle = function () {
|
|
440
|
+
console.log('stopFlashingTitle llamado.');
|
|
567
441
|
if (this.intervalId) {
|
|
568
442
|
clearInterval(this.intervalId);
|
|
569
443
|
this.intervalId = null;
|
|
@@ -572,13 +446,16 @@
|
|
|
572
446
|
};
|
|
573
447
|
WmMenuAlertaPanicoService.prototype.revisarAlertasPendientes = function (urlObtenerAlertasPanico, token) {
|
|
574
448
|
var _this = this;
|
|
449
|
+
console.log('revisarAlertasPendientes llamado con parámetros:', { urlObtenerAlertasPanico: urlObtenerAlertasPanico, token: token });
|
|
575
450
|
var helper = new angularJwt.JwtHelperService();
|
|
576
451
|
var decodedToken = helper.decodeToken(token);
|
|
577
452
|
this.wmMenuServicioService
|
|
578
453
|
.menuApiObtener(urlObtenerAlertasPanico, decodedToken['id_usuario'], token)
|
|
579
454
|
.subscribe(function (resp) {
|
|
455
|
+
console.log('Respuesta obtenida de revisarAlertasPendientes:', resp);
|
|
580
456
|
if (resp && resp.length > 0) {
|
|
581
457
|
var alertasIds_1 = resp.map(function (alerta) { return alerta.IdAlertaPanico; });
|
|
458
|
+
console.log('IDs de alertas obtenidas:', alertasIds_1);
|
|
582
459
|
// Eliminar IDs que no están en la respuesta del servicio
|
|
583
460
|
_this.IdsAlertasPanicoActivas.forEach(function (id) {
|
|
584
461
|
if (!alertasIds_1.includes(id)) {
|
|
@@ -618,6 +495,150 @@
|
|
|
618
495
|
return WmMenuAlertaPanicoService;
|
|
619
496
|
}());
|
|
620
497
|
|
|
498
|
+
var WmMenuComponent = /** @class */ (function () {
|
|
499
|
+
function WmMenuComponent(wmMenuServicioService, wmMenuAlertaPanicoService) {
|
|
500
|
+
this.wmMenuServicioService = wmMenuServicioService;
|
|
501
|
+
this.wmMenuAlertaPanicoService = wmMenuAlertaPanicoService;
|
|
502
|
+
this.intervaloPeticionesMs = 60000;
|
|
503
|
+
this.menuSecundarioSel = new MenuSecundario();
|
|
504
|
+
this.menuLateralAbierto = false;
|
|
505
|
+
this.menuIdioma = [];
|
|
506
|
+
}
|
|
507
|
+
WmMenuComponent.prototype.ngOnInit = function () {
|
|
508
|
+
var _this = this;
|
|
509
|
+
this.wmMenuAlertaPanicoService.iniciarProceso(this.intervaloPeticionesMs, function () { return _this.wmMenuAlertaPanicoService.revisarAlertasPendientes(_this.urlObtenerAlertasPanico, _this.token); }, this.urlObtenerParametro, this.token, this.rutaAudio);
|
|
510
|
+
this.cargarMenuCuenta();
|
|
511
|
+
if (this.urlMenu && this.token) {
|
|
512
|
+
var helper = new angularJwt.JwtHelperService();
|
|
513
|
+
var decodedToken = helper.decodeToken(this.token);
|
|
514
|
+
this.wmMenuServicioService
|
|
515
|
+
.menuApiObtener(this.urlMenu, decodedToken["id_usuario"], this.token)
|
|
516
|
+
.subscribe(function (resp) {
|
|
517
|
+
_this.menuPrincipal = _this.wmMenuServicioService.mapearMenu(resp);
|
|
518
|
+
});
|
|
519
|
+
}
|
|
520
|
+
if (this.urlIdiomas && this.token) {
|
|
521
|
+
var helper = new angularJwt.JwtHelperService();
|
|
522
|
+
var decodedToken = helper.decodeToken(this.token);
|
|
523
|
+
this.wmMenuServicioService
|
|
524
|
+
.menuIdiomasObtener(this.urlIdiomas, decodedToken["id_usuario"], this.token)
|
|
525
|
+
.subscribe(function (resp) {
|
|
526
|
+
_this.menuIdioma = resp;
|
|
527
|
+
_this.cargarMenuCuenta();
|
|
528
|
+
});
|
|
529
|
+
}
|
|
530
|
+
if (this.urlBaseAlmacenamiento && this.token) {
|
|
531
|
+
var helper = new angularJwt.JwtHelperService();
|
|
532
|
+
var decodedToken = helper.decodeToken(this.token);
|
|
533
|
+
this.wmMenuServicioService
|
|
534
|
+
.almacenamientoApiObtener(this.urlBaseAlmacenamiento, decodedToken["id_usuario"], this.token)
|
|
535
|
+
.subscribe(function (resp) {
|
|
536
|
+
var utilizado = resp[0] && resp[0].Utilizado ? resp[0].Utilizado : 0;
|
|
537
|
+
var total = resp[0] && resp[0].Total ? resp[0].Total : 0;
|
|
538
|
+
_this.porcentajeUtilizado = Math.round((utilizado / total) * 100);
|
|
539
|
+
});
|
|
540
|
+
}
|
|
541
|
+
};
|
|
542
|
+
WmMenuComponent.prototype.clickMenuPrincipal = function (i) {
|
|
543
|
+
if (this.menuPrincipal[i].hijos && this.menuPrincipal[i].hijos.length) {
|
|
544
|
+
if (this.menuPrincipalSel == this.menuPrincipal[i]) {
|
|
545
|
+
this.menuPrincipalSel = null;
|
|
546
|
+
}
|
|
547
|
+
else {
|
|
548
|
+
this.menuPrincipalSel = this.menuPrincipal[i];
|
|
549
|
+
}
|
|
550
|
+
}
|
|
551
|
+
};
|
|
552
|
+
WmMenuComponent.prototype.clickMenuSecundario = function (i) {
|
|
553
|
+
this.menuSecundarioSel = this.menuSecundario[i];
|
|
554
|
+
this.menuPrincipalSel = null;
|
|
555
|
+
};
|
|
556
|
+
WmMenuComponent.prototype.cargarMenuCuenta = function () {
|
|
557
|
+
var _a;
|
|
558
|
+
if (this.urlCuentaSeguridad && this.token) {
|
|
559
|
+
var helper = new angularJwt.JwtHelperService();
|
|
560
|
+
var decodedToken = helper.decodeToken(this.token);
|
|
561
|
+
this.menuSecundario = [{
|
|
562
|
+
titulo: decodedToken["unique_name"],
|
|
563
|
+
icono: "account_circle",
|
|
564
|
+
hijos: [
|
|
565
|
+
{ titulo: decodedToken["unique_name"], url: "", icono: "person" },
|
|
566
|
+
{ titulo: this.menuIdioma && this.menuIdioma.CambiarContrasenna ? this.menuIdioma.CambiarContrasenna : "Cambiar contraseña", url: this.urlCuentaSeguridad + "CambioContrasena", icono: "vpn_key" },
|
|
567
|
+
this.activar2fa == "1" ? { titulo: this.menuIdioma && this.menuIdioma.Configurar2fa ? this.menuIdioma.Configurar2fa : "Configurar 2FA", url: this.urlCuentaSeguridad + "Habilitacion2FA", icono: "verified_user" } : null,
|
|
568
|
+
this.urlguiasOnline != null && this.urlguiasOnline !== "" && ((_a = this.urlguiasOnline) === null || _a === void 0 ? void 0 : _a.length) != 0 ? { titulo: this.menuIdioma && this.menuIdioma.guiasOnline ? this.menuIdioma.guiasOnline : "Guias Online", url: this.urlguiasOnline, icono: "menu_book" } : null,
|
|
569
|
+
{ titulo: this.menuIdioma && this.menuIdioma.CerrarSesion ? this.menuIdioma.CerrarSesion : "Cerrar sesión", url: this.urlCuentaSeguridad + "CerrarSesion", icono: "exit_to_app" }
|
|
570
|
+
].filter(function (hijo) { return hijo != null; }),
|
|
571
|
+
}];
|
|
572
|
+
}
|
|
573
|
+
};
|
|
574
|
+
WmMenuComponent.ctorParameters = function () { return [
|
|
575
|
+
{ type: WmMenuServicioService },
|
|
576
|
+
{ type: WmMenuAlertaPanicoService }
|
|
577
|
+
]; };
|
|
578
|
+
__decorate([
|
|
579
|
+
core.Input()
|
|
580
|
+
], WmMenuComponent.prototype, "logo", void 0);
|
|
581
|
+
__decorate([
|
|
582
|
+
core.Input()
|
|
583
|
+
], WmMenuComponent.prototype, "colorFondo", void 0);
|
|
584
|
+
__decorate([
|
|
585
|
+
core.Input()
|
|
586
|
+
], WmMenuComponent.prototype, "colorTexto", void 0);
|
|
587
|
+
__decorate([
|
|
588
|
+
core.Input()
|
|
589
|
+
], WmMenuComponent.prototype, "menuPrincipal", void 0);
|
|
590
|
+
__decorate([
|
|
591
|
+
core.Input()
|
|
592
|
+
], WmMenuComponent.prototype, "menuSecundario", void 0);
|
|
593
|
+
__decorate([
|
|
594
|
+
core.Input()
|
|
595
|
+
], WmMenuComponent.prototype, "urlMenu", void 0);
|
|
596
|
+
__decorate([
|
|
597
|
+
core.Input()
|
|
598
|
+
], WmMenuComponent.prototype, "token", void 0);
|
|
599
|
+
__decorate([
|
|
600
|
+
core.Input()
|
|
601
|
+
], WmMenuComponent.prototype, "urlCuentaSeguridad", void 0);
|
|
602
|
+
__decorate([
|
|
603
|
+
core.Input()
|
|
604
|
+
], WmMenuComponent.prototype, "activar2fa", void 0);
|
|
605
|
+
__decorate([
|
|
606
|
+
core.Input()
|
|
607
|
+
], WmMenuComponent.prototype, "urlguiasOnline", void 0);
|
|
608
|
+
__decorate([
|
|
609
|
+
core.Input()
|
|
610
|
+
], WmMenuComponent.prototype, "urlObtenerAlertasPanico", void 0);
|
|
611
|
+
__decorate([
|
|
612
|
+
core.Input()
|
|
613
|
+
], WmMenuComponent.prototype, "urlObtenerParametro", void 0);
|
|
614
|
+
__decorate([
|
|
615
|
+
core.Input()
|
|
616
|
+
], WmMenuComponent.prototype, "rutaAudio", void 0);
|
|
617
|
+
__decorate([
|
|
618
|
+
core.Input()
|
|
619
|
+
], WmMenuComponent.prototype, "nombreCliente", void 0);
|
|
620
|
+
__decorate([
|
|
621
|
+
core.Input()
|
|
622
|
+
], WmMenuComponent.prototype, "nombreUsuario", void 0);
|
|
623
|
+
__decorate([
|
|
624
|
+
core.Input()
|
|
625
|
+
], WmMenuComponent.prototype, "versionWeb", void 0);
|
|
626
|
+
__decorate([
|
|
627
|
+
core.Input()
|
|
628
|
+
], WmMenuComponent.prototype, "urlBaseAlmacenamiento", void 0);
|
|
629
|
+
__decorate([
|
|
630
|
+
core.Input()
|
|
631
|
+
], WmMenuComponent.prototype, "urlIdiomas", void 0);
|
|
632
|
+
WmMenuComponent = __decorate([
|
|
633
|
+
core.Component({
|
|
634
|
+
selector: 'wm-menu',
|
|
635
|
+
template: "<div class=\"menu\" [ngStyle]=\"{'background-color': colorFondo, 'color': colorTexto}\">\r\n <div class=\"d-lg-none\">\r\n <button mat-icon-button (click)=\"menuLateralAbierto=!menuLateralAbierto; menuPrincipalSel = null\">\r\n <mat-icon *ngIf=\"!menuLateralAbierto\" class=\"animate__animated animate__fadeInRight animate__faster\">menu\r\n </mat-icon>\r\n <mat-icon *ngIf=\"menuLateralAbierto\" class=\"animate__animated animate__fadeInLeft animate__faster\">close\r\n </mat-icon>\r\n </button>\r\n </div>\r\n <div class=\"d-lg-none logo-menu-principal\">\r\n <img class=\"logo\" src=\"{{logo}}\">\r\n </div>\r\n <div class=\"d-none d-lg-block\">\r\n <img class=\"logo\" src=\"{{logo}}\">\r\n <div *ngFor=\"let menuItem of menuPrincipal; let i=index\" class=\"d-inline-block\">\r\n\r\n <a *ngIf=\"menuItem.url\" mat-button [href]=\"menuItem.url\" (click)=\"clickMenuPrincipal(i)\">\r\n {{menuItem.titulo}}\r\n </a>\r\n <button *ngIf=\"!menuItem.url\" mat-button (click)=\"clickMenuPrincipal(i)\">\r\n {{menuItem.titulo}}\r\n </button>\r\n </div>\r\n </div>\r\n <div class=\"info-adicional\">\r\n <div class=\"datos border-r mt-1\" *ngIf=\"nombreCliente\">{{nombreCliente}}<mat-icon>people</mat-icon></div>\r\n <div class=\"datos border-r mt-1\" *ngIf=\"nombreUsuario\">{{nombreUsuario}}<mat-icon>person_outline</mat-icon></div>\r\n <div class=\"version\" *ngIf=\"versionWeb\">{{versionWeb}}</div>\r\n <div class=\"content-idioma\" *ngIf=\"urlIdiomas\">\r\n <mat-menu #menuIdiomas=\"matMenu\">\r\n <a mat-menu-item *ngFor=\"let menuItem of menuIdioma.Culturas\" href=\"{{urlCuentaSeguridad}}CambiarIdioma?culture={{menuItem.Name}}&ReturnUrl=/\">\r\n {{menuItem.NativeName}}\r\n </a>\r\n </mat-menu>\r\n <button mat-button [matMenuTriggerFor]=\"menuIdiomas\"><label class=\"mt-1\">{{menuIdioma.Lenguaje}}</label><mat-icon class=\"icon-idioma\">language</mat-icon></button>\r\n </div>\r\n\r\n </div>\r\n <div>\r\n <mat-menu #submenu=\"matMenu\">\r\n <a mat-menu-item *ngFor=\"let menuItem of menuSecundarioSel.hijos\" href=\"{{menuItem.url}}\"\r\n [disabled]=\"!menuItem.url\">\r\n <mat-icon *ngIf=\"menuItem.icono\">{{menuItem.icono}}</mat-icon>\r\n {{menuItem.titulo}}\r\n </a>\r\n </mat-menu>\r\n <button *ngFor=\"let menuItem of menuSecundario; let i = index\" mat-icon-button [matMenuTriggerFor]=\"submenu\"\r\n (click)=\"clickMenuSecundario(i)\">\r\n <mat-icon>{{menuItem.icono}}</mat-icon>\r\n </button>\r\n </div>\r\n</div>\r\n\r\n<div class=\"menu-lateral d-lg-none animate__animated animate__fadeInRight animate__faster\" *ngIf=\"menuLateralAbierto\">\r\n <div class=\"row\">\r\n <div *ngFor=\"let menuItem of menuPrincipal; let i=index\" class=\"col-sm-6 col-md-4\">\r\n <a *ngIf=\"menuItem.url\" [href]=\"menuItem.url\" (click)=\"clickMenuPrincipal(i)\">\r\n <div>\r\n <mat-icon svgIcon=\"{{menuItem.icono}}\">{{menuItem.icono}}</mat-icon>\r\n <p>{{menuItem.titulo}}</p>\r\n </div>\r\n </a>\r\n <span *ngIf=\"!menuItem.url\" (click)=\"clickMenuPrincipal(i)\">\r\n <div>\r\n <mat-icon svgIcon=\"{{menuItem.icono}}\">{{menuItem.icono}}</mat-icon>\r\n <p>{{menuItem.titulo}}</p>\r\n </div>\r\n </span>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n<div class=\"sub-menu-fondo animate__animated animate__fadeIn animate__faster\" (click)=\"menuPrincipalSel=null\"\r\n *ngIf=\"menuPrincipalSel\"></div>\r\n\r\n<div class=\"sub-menu animate__animated animate__fadeIn animate__faster\" *ngIf=\"menuPrincipalSel\">\r\n <div class=\"container-fluid\">\r\n <div class=\"row\">\r\n <div class=\"col-12 col-lg-5\">\r\n <div class=\"px-3 px-sm-5 pt-5 pb-lg-5 text-center descripcion-menu\">\r\n <mat-icon [ngStyle]=\"{'color': colorFondo}\" svgIcon=\"{{menuPrincipalSel.icono}}\">\r\n {{menuPrincipalSel.icono}}</mat-icon>\r\n <p>{{menuPrincipalSel.titulo}}</p>\r\n <p class=\"text-secondary\">{{menuPrincipalSel.descripcion}}</p>\r\n </div>\r\n </div>\r\n <div class=\"col-12 col-lg-7 my-4\">\r\n <div class=\"px-3 px-md-4 py-2 py-md-2\">\r\n <ul class=\"list-unstyled\">\r\n\r\n <li class=\"mb-3 d-flex\" *ngFor=\"let menuItem of menuPrincipalSel.hijos\">\r\n <mat-icon>{{menuItem.icono}}</mat-icon>\r\n <div class=\"ml-2 flex-fill\">\r\n <a href=\"{{menuItem.url}}\" *ngIf=\"menuItem.url\">\r\n <div class=\"lead mb-2\">{{menuItem.titulo}}</div>\r\n </a>\r\n <div class=\"lead mb-2\" *ngIf=\"!menuItem.url\">{{menuItem.titulo}}</div>\r\n\r\n <a href=\"{{menuSubItem.url}}\" class=\"pl-2 my-2\" *ngFor=\"let menuSubItem of menuItem.hijos\">\r\n <div class=\"text-secondary\">{{menuSubItem.titulo}}</div>\r\n </a>\r\n </div>\r\n </li>\r\n </ul>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <button mat-icon-button class=\"close-icon d-lg-none\" (click)=\"menuPrincipalSel=null\">\r\n <mat-icon>arrow_back</mat-icon>\r\n </button>\r\n</div>\r\n<div class=\"alerta-almacenamiento\" *ngIf=\"porcentajeUtilizado >= 100\">Su capacidad de almacenamiento ha llegado al {{porcentajeUtilizado}}% , libere espacio o adquiera mayor capacidad</div>",
|
|
636
|
+
styles: [".menu{height:46px;display:flex;justify-content:space-between;align-items:center;top:0;left:0;right:0;background-color:#1c98a4;color:#fff;padding:0 4px}.menu .d-lg-block .mat-button{font-weight:400;height:46px;line-height:46px}.menu .logo{display:inline-block;height:40px}.menu .logo-menu-principal{position:absolute;display:block;left:65px}.menu .logo-menu-principal>img{display:block;margin:0 -50%}.menu .info-adicional{color:#fff;display:flex;justify-content:end;font-size:13px;position:absolute;right:47px}.menu .info-adicional .border-r{border-right:1px solid #fff}.menu .info-adicional .version{margin:7px 0 0 7px}.menu .info-adicional div.datos{margin:0 2px 0 5px;height:28px}.menu .info-adicional .mat-icon{vertical-align:middle;font-size:17px;color:#fff;line-height:21px;margin-left:2px}.menu .info-adicional button{padding:0 0 0 15px}.menu .info-adicional .content-idioma{margin:-5px 2px 0 5px;display:block;cursor:pointer}.menu .info-adicional .icon-idioma{font-size:17px!important;vertical-align:text-top!important;color:#fffc}.sub-menu{width:100%;position:absolute;top:46px;z-index:1000;background-color:#fff;display:flex;overflow-y:auto;box-shadow:0 3px 1px -2px rgba(0,0,0,.2),0 2px 2px 0 rgba(0,0,0,.14),0 1px 5px 0 rgba(0,0,0,.12)}.sub-menu .close-icon{position:absolute;left:4px;top:4px}.sub-menu .descripcion-menu .mat-icon{color:#1c98a4;width:100px;height:100px}.sub-menu .descripcion-menu p:first-of-type{font-weight:300;font-size:30px;margin:16px 0}.sub-menu .descripcion-menu p:last-of-type{color:#6c757d}.sub-menu li{float:left;width:50%}.sub-menu li>.mat-icon{color:#444}.sub-menu li:nth-child(even){float:right}.sub-menu li a{transition:.5s;display:block}.sub-menu li a:hover{margin-left:8px}.sub-menu li .lead{line-height:24px;color:#212529;font-size:17px}.sub-menu-fondo{background:#272d3357;position:absolute;top:46px;bottom:0;left:0;right:0;z-index:1000}.menu-lateral{width:100%;position:absolute;top:46px;bottom:0;left:0;right:0;z-index:1000;display:flex;flex-direction:column;overflow-y:auto;background:#f7f7f7;padding:20px}.menu-lateral>div>div>*>div{text-align:center;padding:16px;background-color:#fff;margin:0 0 16px;color:#333;cursor:pointer;box-shadow:0 3px 1px -2px rgba(0,0,0,.2),0 2px 2px 0 rgba(0,0,0,.14),0 1px 5px 0 rgba(0,0,0,.12)}.menu-lateral>div>div>*>div>.mat-icon{width:50px;height:50px}.menu-lateral>div>div>*>div>p{padding:0;margin:8px 0 0}a.mat-menu-item{color:#444!important}.alerta-almacenamiento{background:#ffffec;border-bottom:1px solid #efff00;min-height:39px;line-height:36px;font-size:12px;padding:0 0 0 25px}@media (max-width:767.98px){.sub-menu ul{margin:auto;padding:0 10px}.sub-menu ul li{float:none;width:100%}.sub-menu ul li:nth-child(even){float:none}}@media (max-width:991.98px){.sub-menu{bottom:0}}@media (min-width:600px){.logo-menu-principal{left:50%!important}}* :focus,:active{outline:0!important}"]
|
|
637
|
+
})
|
|
638
|
+
], WmMenuComponent);
|
|
639
|
+
return WmMenuComponent;
|
|
640
|
+
}());
|
|
641
|
+
|
|
621
642
|
var WmMenuModule = /** @class */ (function () {
|
|
622
643
|
function WmMenuModule() {
|
|
623
644
|
}
|