@esfaenza/core 15.2.42-beta1 → 15.2.42-beta2
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/README.md +24 -24
- package/components/components.module.d.ts +22 -16
- package/components/{sidebar → page-structure/sidebar}/sidebar.component.d.ts +1 -0
- package/components/public-api.d.ts +20 -15
- package/components/search/es-filters/es-filters.component.d.ts +27 -0
- package/components/search/es-filters/es-filters.service.d.ts +6 -0
- package/components/search/filters-sidebar/filters-sidebar.component.d.ts +20 -0
- package/components/search/filters-sidebar-item/filters-sidebar-item.component.d.ts +16 -0
- package/components/search/filters-sidebar-section/filters-sidebar-section.component.d.ts +9 -0
- package/components/search/filters-topbar/filters-topbar.component.d.ts +38 -0
- package/domain/models/decorators/decorators.d.ts +1 -0
- package/domain/models/user/ChangePasswordDto.d.ts +9 -0
- package/domain/models/user/ChangeProfilePictureDto.d.ts +4 -0
- package/domain/models/user/UpdateAccountRecoverySettingsDto.d.ts +6 -0
- package/domain/public-api.d.ts +4 -0
- package/esm2020/components/components.module.mjs +76 -22
- package/esm2020/components/es-modal/es-modal-head/es-modal-head.component.mjs +4 -4
- package/esm2020/components/es-modal/es-modal.component.mjs +4 -4
- package/esm2020/components/page-structure/back-top/back-top.component.mjs +43 -0
- package/esm2020/components/page-structure/base/base.component.mjs +55 -0
- package/esm2020/components/page-structure/base/reactive.component.mjs +26 -0
- package/esm2020/components/page-structure/breadcrumb/breadcrumb.component.mjs +70 -0
- package/esm2020/components/page-structure/error/404/pagenotfound.component.mjs +30 -0
- package/esm2020/components/page-structure/error/500/servererror.component.mjs +39 -0
- package/esm2020/components/page-structure/error/Angular/angularerror.component.mjs +55 -0
- package/esm2020/components/page-structure/external-page/external_pages.component.mjs +47 -0
- package/esm2020/components/page-structure/jace-login/jace-login.component.mjs +18 -0
- package/esm2020/components/page-structure/jace-resource/jace-resource.component.mjs +65 -0
- package/esm2020/components/page-structure/navbar/modules-board/jace-modules-board.component.mjs +40 -0
- package/esm2020/components/page-structure/navbar/navbar.component.loc.mjs +36 -0
- package/esm2020/components/page-structure/navbar/navbar.component.mjs +161 -0
- package/esm2020/components/page-structure/page/pages.component.mjs +60 -0
- package/esm2020/components/page-structure/redirecter/redirecter.component.mjs +53 -0
- package/esm2020/components/page-structure/sidebar/sidebar.component.mjs +302 -0
- package/esm2020/components/public-api.mjs +21 -16
- package/esm2020/components/search/es-filters/es-filters.component.mjs +56 -0
- package/esm2020/components/search/es-filters/es-filters.service.mjs +19 -0
- package/esm2020/components/search/filters-sidebar/filters-sidebar.component.mjs +65 -0
- package/esm2020/components/search/filters-sidebar-item/filters-sidebar-item.component.mjs +39 -0
- package/esm2020/components/search/filters-sidebar-section/filters-sidebar-section.component.mjs +22 -0
- package/esm2020/components/search/filters-topbar/filters-topbar.component.mjs +94 -0
- package/esm2020/directives/componentHost/componentHost.directive.mjs +4 -4
- package/esm2020/directives/directives.module.mjs +5 -5
- package/esm2020/directives/draggable/draggable.directive.mjs +4 -4
- package/esm2020/directives/es-modal/es-modal.directive.mjs +4 -4
- package/esm2020/directives/es-routerLink/es-routerLink.directive.mjs +4 -4
- package/esm2020/directives/slim-scroll/slim-scroll.directive.mjs +4 -4
- package/esm2020/directives/widget/widget.directive.mjs +4 -4
- package/esm2020/domain/models/decorators/decorators.mjs +6 -0
- package/esm2020/domain/models/user/ChangePasswordDto.mjs +11 -0
- package/esm2020/domain/models/user/ChangeProfilePictureDto.mjs +6 -0
- package/esm2020/domain/models/user/UpdateAccountRecoverySettingsDto.mjs +8 -0
- package/esm2020/domain/public-api.mjs +5 -1
- package/esm2020/lib/app.component.mjs +5 -5
- package/esm2020/lib/core.module.mjs +5 -5
- package/esm2020/modules/classes/_shared.module.mjs +5 -5
- package/esm2020/modules/classes/t_c.module.mjs +5 -5
- package/esm2020/pipes/classes/included_in.pipe.mjs +4 -4
- package/esm2020/pipes/classes/safe_html.pipe.mjs +4 -4
- package/esm2020/pipes/classes/safe_script.pipe.mjs +4 -4
- package/esm2020/pipes/classes/safe_style.pipe.mjs +4 -4
- package/esm2020/pipes/classes/safe_url.pipe.mjs +4 -4
- package/esm2020/pipes/pipes.module.mjs +5 -5
- package/esm2020/public-api.mjs +1 -1
- package/esm2020/services/classes/app.accesstoken.mjs +4 -4
- package/esm2020/services/classes/app.completedjobredirection.mjs +4 -4
- package/esm2020/services/classes/app.errorhandler.mjs +4 -4
- package/esm2020/services/classes/app.event.mjs +4 -4
- package/esm2020/services/classes/app.globalsearch.mjs +4 -4
- package/esm2020/services/classes/app.httpextensions.loc.mjs +4 -4
- package/esm2020/services/classes/app.httpextensions.mjs +4 -4
- package/esm2020/services/classes/app.menufilter.mjs +4 -4
- package/esm2020/services/classes/app.routeguard.mjs +4 -4
- package/esm2020/services/classes/app.session.mjs +4 -4
- package/esm2020/services/classes/app.state.mjs +4 -4
- package/esm2020/services/classes/preferences/app.cache.persistor.mjs +4 -4
- package/esm2020/services/classes/preferences/app.preference.persistor.mjs +4 -4
- package/esm2020/services/classes/preferences/user/app.userpreferences.base.mjs +76 -0
- package/esm2020/services/public-api.mjs +2 -1
- package/fesm2015/esfaenza-core-components.mjs +413 -82
- package/fesm2015/esfaenza-core-components.mjs.map +1 -1
- package/fesm2015/esfaenza-core-directives.mjs +22 -22
- package/fesm2015/esfaenza-core-directives.mjs.map +1 -1
- package/fesm2015/esfaenza-core-domain.mjs +32 -1
- package/fesm2015/esfaenza-core-domain.mjs.map +1 -1
- package/fesm2015/esfaenza-core-modules.mjs +8 -8
- package/fesm2015/esfaenza-core-modules.mjs.map +1 -1
- package/fesm2015/esfaenza-core-pipes.mjs +19 -19
- package/fesm2015/esfaenza-core-pipes.mjs.map +1 -1
- package/fesm2015/esfaenza-core-services.mjs +124 -44
- package/fesm2015/esfaenza-core-services.mjs.map +1 -1
- package/fesm2015/esfaenza-core.mjs +8 -8
- package/fesm2015/esfaenza-core.mjs.map +1 -1
- package/fesm2020/esfaenza-core-components.mjs +410 -82
- package/fesm2020/esfaenza-core-components.mjs.map +1 -1
- package/fesm2020/esfaenza-core-directives.mjs +22 -22
- package/fesm2020/esfaenza-core-directives.mjs.map +1 -1
- package/fesm2020/esfaenza-core-domain.mjs +32 -1
- package/fesm2020/esfaenza-core-domain.mjs.map +1 -1
- package/fesm2020/esfaenza-core-modules.mjs +8 -8
- package/fesm2020/esfaenza-core-modules.mjs.map +1 -1
- package/fesm2020/esfaenza-core-pipes.mjs +19 -19
- package/fesm2020/esfaenza-core-pipes.mjs.map +1 -1
- package/fesm2020/esfaenza-core-services.mjs +111 -44
- package/fesm2020/esfaenza-core-services.mjs.map +1 -1
- package/fesm2020/esfaenza-core.mjs +8 -8
- package/fesm2020/esfaenza-core.mjs.map +1 -1
- package/lib/core.module.d.ts +2 -1
- package/package.json +1 -1
- package/services/classes/preferences/user/app.userpreferences.base.d.ts +23 -0
- package/services/public-api.d.ts +1 -0
- package/theme/styles/_project-override.scss +63 -1
- package/theme/styles/_variables.scss +1 -1
- package/theme/styles/skins/enuma.scss +1 -0
- package/theme/styles/skins/jace.scss +63 -0
- package/esm2020/components/back-top/back-top.component.mjs +0 -43
- package/esm2020/components/base/base.component.mjs +0 -55
- package/esm2020/components/base/reactive.component.mjs +0 -26
- package/esm2020/components/breadcrumb/breadcrumb.component.mjs +0 -70
- package/esm2020/components/error/404/pagenotfound.component.mjs +0 -30
- package/esm2020/components/error/500/servererror.component.mjs +0 -39
- package/esm2020/components/error/Angular/angularerror.component.mjs +0 -55
- package/esm2020/components/external-page/external_pages.component.mjs +0 -47
- package/esm2020/components/jace-login/jace-login.component.mjs +0 -18
- package/esm2020/components/jace-resource/jace-resource.component.mjs +0 -65
- package/esm2020/components/navbar/modules-board/jace-modules-board.component.mjs +0 -40
- package/esm2020/components/navbar/navbar.component.loc.mjs +0 -36
- package/esm2020/components/navbar/navbar.component.mjs +0 -161
- package/esm2020/components/page/pages.component.mjs +0 -60
- package/esm2020/components/redirecter/redirecter.component.mjs +0 -53
- package/esm2020/components/sidebar/sidebar.component.mjs +0 -293
- /package/components/{back-top → page-structure/back-top}/back-top.component.d.ts +0 -0
- /package/components/{base → page-structure/base}/base.component.d.ts +0 -0
- /package/components/{base → page-structure/base}/reactive.component.d.ts +0 -0
- /package/components/{breadcrumb → page-structure/breadcrumb}/breadcrumb.component.d.ts +0 -0
- /package/components/{error → page-structure/error}/404/pagenotfound.component.d.ts +0 -0
- /package/components/{error → page-structure/error}/500/servererror.component.d.ts +0 -0
- /package/components/{error → page-structure/error}/Angular/angularerror.component.d.ts +0 -0
- /package/components/{external-page → page-structure/external-page}/external_pages.component.d.ts +0 -0
- /package/components/{jace-login → page-structure/jace-login}/jace-login.component.d.ts +0 -0
- /package/components/{jace-resource → page-structure/jace-resource}/jace-resource.component.d.ts +0 -0
- /package/components/{navbar → page-structure/navbar}/modules-board/jace-modules-board.component.d.ts +0 -0
- /package/components/{navbar → page-structure/navbar}/navbar.component.d.ts +0 -0
- /package/components/{navbar → page-structure/navbar}/navbar.component.loc.d.ts +0 -0
- /package/components/{page → page-structure/page}/pages.component.d.ts +0 -0
- /package/components/{redirecter → page-structure/redirecter}/redirecter.component.d.ts +0 -0
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
// Angular
|
|
2
|
+
import { Component, Inject, Optional, ViewEncapsulation } from "@angular/core";
|
|
3
|
+
import { NgIf } from "@angular/common";
|
|
4
|
+
// Applicazione
|
|
5
|
+
import { REDIRECT_MAP } from "@esfaenza/core/domain";
|
|
6
|
+
import * as i0 from "@angular/core";
|
|
7
|
+
import * as i1 from "@esfaenza/core/services";
|
|
8
|
+
import * as i2 from "@angular/router";
|
|
9
|
+
// TODO: loc.ts
|
|
10
|
+
export class RedirecterComponent {
|
|
11
|
+
constructor(_state, route, router, redirectMap) {
|
|
12
|
+
this._state = _state;
|
|
13
|
+
this.route = route;
|
|
14
|
+
this.router = router;
|
|
15
|
+
this.redirectMap = redirectMap;
|
|
16
|
+
this.Error = "";
|
|
17
|
+
}
|
|
18
|
+
ngOnInit() {
|
|
19
|
+
let url = this.route.snapshot.params["url"];
|
|
20
|
+
//§ = 167... non so perché ma scrivendolo esplicitamente non funziona
|
|
21
|
+
let parts = url.split(String.fromCharCode(167)).filter(s => !!s);
|
|
22
|
+
if (parts.length < 2) {
|
|
23
|
+
this.Error = "L'url passato è incompleto. Impossibile riconoscerlo";
|
|
24
|
+
return;
|
|
25
|
+
}
|
|
26
|
+
else {
|
|
27
|
+
var redirect = this.redirectMap[parts[0]];
|
|
28
|
+
if (!redirect) {
|
|
29
|
+
this.Error = "L'url passato fa riferimento a un oggetto non navigabile. Impossibile procedere";
|
|
30
|
+
return;
|
|
31
|
+
}
|
|
32
|
+
if (redirect.params.length != parts.length - 1) {
|
|
33
|
+
this.Error = "Il numero di parametri richiesti per navigare all'entità richiesta è diverso dal numero di parametri passato";
|
|
34
|
+
return;
|
|
35
|
+
}
|
|
36
|
+
let parObject = {};
|
|
37
|
+
redirect.params.forEach((t, i) => parObject[t] = parts[i + 1]);
|
|
38
|
+
this.router.navigate(["pages/" + redirect.url, parObject]);
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
RedirecterComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: RedirecterComponent, deps: [{ token: i1.AppState }, { token: i2.ActivatedRoute }, { token: i2.Router }, { token: REDIRECT_MAP, optional: true }], target: i0.ɵɵFactoryTarget.Component });
|
|
43
|
+
RedirecterComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.9", type: RedirecterComponent, isStandalone: true, selector: "redirecter", ngImport: i0, template: "<div *ngIf=\"Error\">{{Error}}</div>", dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], encapsulation: i0.ViewEncapsulation.None });
|
|
44
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: RedirecterComponent, decorators: [{
|
|
45
|
+
type: Component,
|
|
46
|
+
args: [{ selector: "redirecter", encapsulation: ViewEncapsulation.None, standalone: true, imports: [NgIf], template: "<div *ngIf=\"Error\">{{Error}}</div>" }]
|
|
47
|
+
}], ctorParameters: function () { return [{ type: i1.AppState }, { type: i2.ActivatedRoute }, { type: i2.Router }, { type: undefined, decorators: [{
|
|
48
|
+
type: Optional
|
|
49
|
+
}, {
|
|
50
|
+
type: Inject,
|
|
51
|
+
args: [REDIRECT_MAP]
|
|
52
|
+
}] }]; } });
|
|
53
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVkaXJlY3Rlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlL2NvbXBvbmVudHMvc3JjL3BhZ2Utc3RydWN0dXJlL3JlZGlyZWN0ZXIvcmVkaXJlY3Rlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlL2NvbXBvbmVudHMvc3JjL3BhZ2Utc3RydWN0dXJlL3JlZGlyZWN0ZXIvcmVkaXJlY3Rlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxVQUFVO0FBQ1YsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRS9FLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUt2QyxlQUFlO0FBQ2YsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHVCQUF1QixDQUFDOzs7O0FBRXJELGVBQWU7QUFRZixNQUFNLE9BQU8sbUJBQW1CO0lBSTVCLFlBQW1CLE1BQWdCLEVBQVUsS0FBcUIsRUFBUyxNQUFjLEVBQTRDLFdBQW1FO1FBQXJMLFdBQU0sR0FBTixNQUFNLENBQVU7UUFBVSxVQUFLLEdBQUwsS0FBSyxDQUFnQjtRQUFTLFdBQU0sR0FBTixNQUFNLENBQVE7UUFBNEMsZ0JBQVcsR0FBWCxXQUFXLENBQXdEO1FBRmpNLFVBQUssR0FBVyxFQUFFLENBQUM7SUFFa0wsQ0FBQztJQUU3TSxRQUFRO1FBQ0osSUFBSSxHQUFHLEdBQVcsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3BELHFFQUFxRTtRQUNyRSxJQUFJLEtBQUssR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFFakUsSUFBSSxLQUFLLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtZQUNsQixJQUFJLENBQUMsS0FBSyxHQUFHLHNEQUFzRCxDQUFDO1lBQ3BFLE9BQU87U0FDVjthQUNJO1lBQ0QsSUFBSSxRQUFRLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUMxQyxJQUFJLENBQUMsUUFBUSxFQUFFO2dCQUNYLElBQUksQ0FBQyxLQUFLLEdBQUcsaUZBQWlGLENBQUM7Z0JBQy9GLE9BQU87YUFDVjtZQUVELElBQUksUUFBUSxDQUFDLE1BQU0sQ0FBQyxNQUFNLElBQUksS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7Z0JBQzVDLElBQUksQ0FBQyxLQUFLLEdBQUcsOEdBQThHLENBQUM7Z0JBQzVILE9BQU87YUFDVjtZQUVELElBQUksU0FBUyxHQUFHLEVBQUUsQ0FBQztZQUNuQixRQUFRLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsR0FBRyxLQUFLLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDL0QsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRSxTQUFTLENBQUMsQ0FBQyxDQUFDO1NBQzlEO0lBQ0wsQ0FBQzs7Z0hBL0JRLG1CQUFtQiw4RkFJbUYsWUFBWTtvR0FKbEgsbUJBQW1CLHNFQ25CaEMsc0NBQWtDLDRDRGlCcEIsSUFBSTsyRkFFTCxtQkFBbUI7a0JBUC9CLFNBQVM7K0JBQ0ksWUFBWSxpQkFDUCxpQkFBaUIsQ0FBQyxJQUFJLGNBRXpCLElBQUksV0FDUCxDQUFDLElBQUksQ0FBQzs7MEJBTTZFLFFBQVE7OzBCQUFJLE1BQU07MkJBQUMsWUFBWSIsInNvdXJjZXNDb250ZW50IjpbIi8vIEFuZ3VsYXJcclxuaW1wb3J0IHsgQ29tcG9uZW50LCBJbmplY3QsIE9wdGlvbmFsLCBWaWV3RW5jYXBzdWxhdGlvbiB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlLCBSb3V0ZXIgfSBmcm9tIFwiQGFuZ3VsYXIvcm91dGVyXCI7XHJcbmltcG9ydCB7IE5nSWYgfSBmcm9tIFwiQGFuZ3VsYXIvY29tbW9uXCI7XHJcblxyXG4vLyBDb25maWd1cmF6aW9uaVxyXG5pbXBvcnQgeyBBcHBTdGF0ZSB9IGZyb20gXCJAZXNmYWVuemEvY29yZS9zZXJ2aWNlc1wiO1xyXG5cclxuLy8gQXBwbGljYXppb25lXHJcbmltcG9ydCB7IFJFRElSRUNUX01BUCB9IGZyb20gXCJAZXNmYWVuemEvY29yZS9kb21haW5cIjtcclxuXHJcbi8vIFRPRE86IGxvYy50c1xyXG5AQ29tcG9uZW50KHtcclxuICAgIHNlbGVjdG9yOiBcInJlZGlyZWN0ZXJcIixcclxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXHJcbiAgICB0ZW1wbGF0ZVVybDogXCIuL3JlZGlyZWN0ZXIuY29tcG9uZW50Lmh0bWxcIixcclxuICAgIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgICBpbXBvcnRzOiBbTmdJZl1cclxufSlcclxuZXhwb3J0IGNsYXNzIFJlZGlyZWN0ZXJDb21wb25lbnQge1xyXG5cclxuICAgIHB1YmxpYyBFcnJvcjogc3RyaW5nID0gXCJcIjtcclxuXHJcbiAgICBjb25zdHJ1Y3RvcihwdWJsaWMgX3N0YXRlOiBBcHBTdGF0ZSwgcHJpdmF0ZSByb3V0ZTogQWN0aXZhdGVkUm91dGUsIHB1YmxpYyByb3V0ZXI6IFJvdXRlciwgQE9wdGlvbmFsKCkgQEluamVjdChSRURJUkVDVF9NQVApIHByaXZhdGUgcmVkaXJlY3RNYXA6IHsgW2luZGV4OiBzdHJpbmddOiB7IHVybDogc3RyaW5nLCBwYXJhbXM6IHN0cmluZ1tdIH0gfSkgeyB9XHJcblxyXG4gICAgbmdPbkluaXQoKSB7XHJcbiAgICAgICAgbGV0IHVybDogc3RyaW5nID0gdGhpcy5yb3V0ZS5zbmFwc2hvdC5wYXJhbXNbXCJ1cmxcIl07XHJcbiAgICAgICAgLy/CpyA9IDE2Ny4uLiBub24gc28gcGVyY2jDqSBtYSBzY3JpdmVuZG9sbyBlc3BsaWNpdGFtZW50ZSBub24gZnVuemlvbmFcclxuICAgICAgICBsZXQgcGFydHMgPSB1cmwuc3BsaXQoU3RyaW5nLmZyb21DaGFyQ29kZSgxNjcpKS5maWx0ZXIocyA9PiAhIXMpO1xyXG5cclxuICAgICAgICBpZiAocGFydHMubGVuZ3RoIDwgMikge1xyXG4gICAgICAgICAgICB0aGlzLkVycm9yID0gXCJMJ3VybCBwYXNzYXRvIMOoIGluY29tcGxldG8uIEltcG9zc2liaWxlIHJpY29ub3NjZXJsb1wiO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICB2YXIgcmVkaXJlY3QgPSB0aGlzLnJlZGlyZWN0TWFwW3BhcnRzWzBdXTtcclxuICAgICAgICAgICAgaWYgKCFyZWRpcmVjdCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5FcnJvciA9IFwiTCd1cmwgcGFzc2F0byBmYSByaWZlcmltZW50byBhIHVuIG9nZ2V0dG8gbm9uIG5hdmlnYWJpbGUuIEltcG9zc2liaWxlIHByb2NlZGVyZVwiO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBpZiAocmVkaXJlY3QucGFyYW1zLmxlbmd0aCAhPSBwYXJ0cy5sZW5ndGggLSAxKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLkVycm9yID0gXCJJbCBudW1lcm8gZGkgcGFyYW1ldHJpIHJpY2hpZXN0aSBwZXIgbmF2aWdhcmUgYWxsJ2VudGl0w6AgcmljaGllc3RhIMOoIGRpdmVyc28gZGFsIG51bWVybyBkaSBwYXJhbWV0cmkgcGFzc2F0b1wiO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBsZXQgcGFyT2JqZWN0ID0ge307XHJcbiAgICAgICAgICAgIHJlZGlyZWN0LnBhcmFtcy5mb3JFYWNoKCh0LCBpKSA9PiBwYXJPYmplY3RbdF0gPSBwYXJ0c1tpICsgMV0pO1xyXG4gICAgICAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbXCJwYWdlcy9cIiArIHJlZGlyZWN0LnVybCwgcGFyT2JqZWN0XSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59IiwiPGRpdiAqbmdJZj1cIkVycm9yXCI+e3tFcnJvcn19PC9kaXY+Il19
|
|
@@ -0,0 +1,302 @@
|
|
|
1
|
+
// Angular
|
|
2
|
+
import { ChangeDetectionStrategy, Component, HostListener, Inject, Optional, ViewChild, ViewEncapsulation } from "@angular/core";
|
|
3
|
+
import { NavigationEnd, RouterLinkActive, RouterLink } from "@angular/router";
|
|
4
|
+
import { NgClass, NgFor, NgTemplateOutlet, NgIf } from "@angular/common";
|
|
5
|
+
// Configurazioni
|
|
6
|
+
import { LocalizationModule } from "@esfaenza/localizations";
|
|
7
|
+
// EsFaenza
|
|
8
|
+
import { MENU, MENU_LOCALIZATION } from "@esfaenza/core/domain";
|
|
9
|
+
import { SlimScroll } from "@esfaenza/core/directives";
|
|
10
|
+
// Librerie
|
|
11
|
+
import { firstValueFrom } from "rxjs";
|
|
12
|
+
import { HttpParams } from "@angular/common/http";
|
|
13
|
+
import { EsTableColumnsDefinition, EsTableModule } from "@esfaenza/es-table";
|
|
14
|
+
import { FormsModule } from "@angular/forms";
|
|
15
|
+
import * as i0 from "@angular/core";
|
|
16
|
+
import * as i1 from "@esfaenza/localizations";
|
|
17
|
+
import * as i2 from "@angular/router";
|
|
18
|
+
import * as i3 from "@esfaenza/core/services";
|
|
19
|
+
import * as i4 from "@esfaenza/extensions";
|
|
20
|
+
import * as i5 from "@esfaenza/access-control";
|
|
21
|
+
import * as i6 from "@esfaenza/httpservice";
|
|
22
|
+
import * as i7 from "@esfaenza/es-table";
|
|
23
|
+
import * as i8 from "@angular/forms";
|
|
24
|
+
// Chiamate ai Repository
|
|
25
|
+
const GET_Users_GetProfilePicture = "/api/Users/GetProfilePicture";
|
|
26
|
+
export class Sidebar {
|
|
27
|
+
constructor(lc, lcMenu, cdr, _elementRef, _router, _state, zone, utiExts, aac, menuItemsRaw, menuFilteringService, sr, https, msgs, globalSearchService) {
|
|
28
|
+
this.lc = lc;
|
|
29
|
+
this.cdr = cdr;
|
|
30
|
+
this._elementRef = _elementRef;
|
|
31
|
+
this._router = _router;
|
|
32
|
+
this._state = _state;
|
|
33
|
+
this.zone = zone;
|
|
34
|
+
this.utiExts = utiExts;
|
|
35
|
+
this.aac = aac;
|
|
36
|
+
this.menuItemsRaw = menuItemsRaw;
|
|
37
|
+
this.menuFilteringService = menuFilteringService;
|
|
38
|
+
this.sr = sr;
|
|
39
|
+
this.https = https;
|
|
40
|
+
this.msgs = msgs;
|
|
41
|
+
this.globalSearchService = globalSearchService;
|
|
42
|
+
this.isMenuCollapsed = false;
|
|
43
|
+
this.isMenuShouldCollapsed = false;
|
|
44
|
+
this.applicationVersion = myconfig.AppData.ComponentVersion;
|
|
45
|
+
this.applicationName = myconfig.AppData.ModuleDescription;
|
|
46
|
+
this.user = "";
|
|
47
|
+
this.tenant = "";
|
|
48
|
+
this.SearchModel = "";
|
|
49
|
+
// TODO: Salvare dentro una service preferenze account
|
|
50
|
+
this.safeprofilepic = null;
|
|
51
|
+
// ***************************************** Gestione Ricerca Globale *****************************************
|
|
52
|
+
this.SelectedResult = null;
|
|
53
|
+
this.ShowSingleTable = false;
|
|
54
|
+
this.searchingTerm = false;
|
|
55
|
+
this.lc = this.lc.generateFromType(lcMenu);
|
|
56
|
+
this._state.subscribe("menu.isCollapsed", (isCollapsed) => {
|
|
57
|
+
this.isMenuCollapsed = isCollapsed;
|
|
58
|
+
this.cdr.markForCheck();
|
|
59
|
+
});
|
|
60
|
+
this._state.subscribe("application.DeployAvailable", (available) => {
|
|
61
|
+
if (available)
|
|
62
|
+
this.ngOnInit();
|
|
63
|
+
});
|
|
64
|
+
this._router.events.subscribe(event => {
|
|
65
|
+
if (event instanceof NavigationEnd) {
|
|
66
|
+
let width = (window.innerWidth > 0) ? window.innerWidth : screen.width;
|
|
67
|
+
if (width <= 768)
|
|
68
|
+
this._state.notifyDataChanged("menu.isCollapsed", true);
|
|
69
|
+
window.scrollTo(0, 0);
|
|
70
|
+
}
|
|
71
|
+
});
|
|
72
|
+
this.getUserProfileData();
|
|
73
|
+
}
|
|
74
|
+
async ngOnInit() {
|
|
75
|
+
let tmpMenuItems = this.getMenuItems();
|
|
76
|
+
this.menuItems = await firstValueFrom(this.menuFilteringService.filter(tmpMenuItems));
|
|
77
|
+
if (this._shouldMenuCollapse())
|
|
78
|
+
this.menuCollapse();
|
|
79
|
+
this.updateSidebarHeight();
|
|
80
|
+
this._state.setSidebarWidth(this.sidebar.nativeElement.offsetWidth);
|
|
81
|
+
this.cdr.markForCheck();
|
|
82
|
+
}
|
|
83
|
+
getMenuItems() {
|
|
84
|
+
var items = [];
|
|
85
|
+
for (let i = 0; i < this.menuItemsRaw.length; i++) {
|
|
86
|
+
let t = this.menuItemsRaw[i];
|
|
87
|
+
t.level = 1;
|
|
88
|
+
if (!t.ac || this.aac.has(t.ac)) {
|
|
89
|
+
if (!t.subMenu || t.subMenu.length == 0) {
|
|
90
|
+
t.icon = t.icon ?? "far fa-circle-small";
|
|
91
|
+
items.push(t);
|
|
92
|
+
}
|
|
93
|
+
else {
|
|
94
|
+
var toPush = this.checkSubMenuOverClaims(t, 1);
|
|
95
|
+
toPush.icon = toPush.icon ?? "far fa-circle-small";
|
|
96
|
+
items.push(toPush);
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
return items;
|
|
101
|
+
}
|
|
102
|
+
checkSubMenuOverClaims(menuItem, level) {
|
|
103
|
+
var item = this.utiExts.deepClone(menuItem);
|
|
104
|
+
item.subMenu = [];
|
|
105
|
+
for (let i = 0; i < menuItem.subMenu.length; i++) {
|
|
106
|
+
let t = menuItem.subMenu[i];
|
|
107
|
+
t.level = level + 1;
|
|
108
|
+
if (!t.ac || this.aac.has(t.ac)) {
|
|
109
|
+
if (!t.subMenu || t.subMenu.length == 0) {
|
|
110
|
+
t.icon = t.icon ?? "far fa-circle-small";
|
|
111
|
+
item.subMenu.push(t);
|
|
112
|
+
}
|
|
113
|
+
else {
|
|
114
|
+
var toPush = this.checkSubMenuOverClaims(t, level + 1);
|
|
115
|
+
toPush.icon = toPush.icon ?? "far fa-circle-small";
|
|
116
|
+
item.subMenu.push(toPush);
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
// Calcolo qui per non doverlo calcolare lato HTML
|
|
120
|
+
t.padding_left = level > 2 ? (65 + ((level - 3) * 15) + 'px !important') : null;
|
|
121
|
+
}
|
|
122
|
+
return item;
|
|
123
|
+
}
|
|
124
|
+
//#region JQuery
|
|
125
|
+
onWindowResize() {
|
|
126
|
+
var isMenuShouldCollapsed = this._shouldMenuCollapse();
|
|
127
|
+
if (this.isMenuShouldCollapsed !== isMenuShouldCollapsed) {
|
|
128
|
+
this.menuCollapseStateChange(isMenuShouldCollapsed);
|
|
129
|
+
}
|
|
130
|
+
this.isMenuShouldCollapsed = isMenuShouldCollapsed;
|
|
131
|
+
this.updateSidebarHeight();
|
|
132
|
+
}
|
|
133
|
+
_shouldMenuCollapse() {
|
|
134
|
+
return window.innerWidth <= 768;
|
|
135
|
+
}
|
|
136
|
+
menuCollapse() {
|
|
137
|
+
this.menuCollapseStateChange(true);
|
|
138
|
+
this._state.setSidebarWidth(this.sidebar.nativeElement.offsetWidth);
|
|
139
|
+
}
|
|
140
|
+
menuCollapseStateChange(isCollapsed) {
|
|
141
|
+
this.isMenuCollapsed = isCollapsed;
|
|
142
|
+
this._state.notifyDataChanged("menu.isCollapsed", this.isMenuCollapsed);
|
|
143
|
+
}
|
|
144
|
+
menuExpand() {
|
|
145
|
+
this.menuCollapseStateChange(false);
|
|
146
|
+
this._state.setSidebarWidth(this.sidebar.nativeElement.offsetWidth);
|
|
147
|
+
}
|
|
148
|
+
hoverItem(jQueryevent) {
|
|
149
|
+
if (!this.isMenuCollapsed) {
|
|
150
|
+
this.showHoverElem = true;
|
|
151
|
+
this.hoverElemHeight = jQueryevent.currentTarget.clientHeight;
|
|
152
|
+
this.hoverElemTop = jQueryevent.currentTarget.getBoundingClientRect().top;
|
|
153
|
+
jQuery(".sidebar-hover-elem").css("top", this.hoverElemTop + "px");
|
|
154
|
+
jQuery(".sidebar-hover-elem").css("height", this.hoverElemHeight + "px");
|
|
155
|
+
jQuery(".sidebar-hover-elem").addClass("show-hover-elem");
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
sendAwayHoverElement() {
|
|
159
|
+
this.hoverElemTop = -200;
|
|
160
|
+
jQuery(".sidebar-hover-elem").css("top", this.hoverElemTop + "px");
|
|
161
|
+
}
|
|
162
|
+
updateSidebarHeight() {
|
|
163
|
+
let marginTop = 60 + 40;
|
|
164
|
+
let footerHeight = 150;
|
|
165
|
+
this.menuHeight = this._elementRef.nativeElement.children[0].clientHeight - marginTop - footerHeight;
|
|
166
|
+
}
|
|
167
|
+
//Nonostante questa funzione sia collegata con (click.out-zone) per qualche motivo angular le esegue comunque nella sua zone
|
|
168
|
+
//generando un po' di irresponsività iniziale... succede solo col click... boh
|
|
169
|
+
collapseMenu(jQueryevent, item) {
|
|
170
|
+
if (this.isMenuCollapsed)
|
|
171
|
+
this.menuExpand();
|
|
172
|
+
if (!item.level)
|
|
173
|
+
console.warn("Livello non presente in un oggetto del menu!");
|
|
174
|
+
//N.B: Tutte le funzioni di JQuery le esguo fuori da Angular dato che c'� una buona probabilit� che siano eventi asincroni
|
|
175
|
+
this.zone.runOutsideAngular(() => { this.outsideAngularClickHandler(jQueryevent, item); });
|
|
176
|
+
return false;
|
|
177
|
+
}
|
|
178
|
+
outsideAngularClickHandler(jQueryevent, item) {
|
|
179
|
+
let levelClass = item.level ? "level-" + (item.level) : "";
|
|
180
|
+
let levelClassPlusOne = item.level ? "level-" + (item.level + 1) : "";
|
|
181
|
+
let slidePeriod = 400;
|
|
182
|
+
var link = jQuery(jQueryevent.currentTarget);
|
|
183
|
+
//Se l'elemento non è espanso
|
|
184
|
+
if (!link.closest(".sidebar-item-expanded" + "_" + levelClass).length) {
|
|
185
|
+
//Tiro su tutti gli elementi dello stesso livello espansi e li chiudo
|
|
186
|
+
//Se ho compresso un menu vado a vedere se c'è anche un altro menu di livello pi� basso da richiudere
|
|
187
|
+
jQuery("ul.nav-sidebar li" + "." + (levelClassPlusOne)).each(function () {
|
|
188
|
+
let closestLi = jQuery(this).closest("li");
|
|
189
|
+
if (closestLi.children("ul").length && closestLi.hasClass("sidebar-item-expanded")) {
|
|
190
|
+
closestLi.children("ul").slideUp(slidePeriod);
|
|
191
|
+
//Le uso sempre entrambe insieme. La prima è la classe per la logica, la seconda per le animazioni
|
|
192
|
+
closestLi.removeClass("sidebar-item-expanded" + "_" + (levelClassPlusOne));
|
|
193
|
+
closestLi.removeClass("sidebar-item-expanded");
|
|
194
|
+
}
|
|
195
|
+
});
|
|
196
|
+
//Dopodich� richiudo tutti quelli del mio livello attuale
|
|
197
|
+
jQuery("ul.nav-sidebar li" + "." + levelClass).each(function () {
|
|
198
|
+
let closestLi = jQuery(this).closest("li");
|
|
199
|
+
if (closestLi.children("ul").length && closestLi.hasClass("sidebar-item-expanded")) {
|
|
200
|
+
closestLi.children("ul").slideUp(slidePeriod);
|
|
201
|
+
//Le uso sempre entrambe insieme. La prima è la classe per la logica, la seconda per le animazioni
|
|
202
|
+
closestLi.removeClass("sidebar-item-expanded" + "_" + levelClass);
|
|
203
|
+
closestLi.removeClass("sidebar-item-expanded");
|
|
204
|
+
}
|
|
205
|
+
});
|
|
206
|
+
//Dopodich� espando quello attuale
|
|
207
|
+
link.next().slideDown(slidePeriod);
|
|
208
|
+
if (item.subMenu) {
|
|
209
|
+
//Le uso sempre entrambe insieme. La prima è la classe per la logica, la seconda per le animazioni
|
|
210
|
+
link.closest("li").addClass("sidebar-item-expanded" + "_" + levelClass);
|
|
211
|
+
link.closest("li").addClass("sidebar-item-expanded");
|
|
212
|
+
}
|
|
213
|
+
}
|
|
214
|
+
else {
|
|
215
|
+
//Altrimenti, se l'elemento è già espanso lo chiudo
|
|
216
|
+
if (item.subMenu) {
|
|
217
|
+
//Le uso sempre entrambe insieme. La prima è la classe per la logica, la seconda per le animazioni
|
|
218
|
+
link.closest("li").removeClass("sidebar-item-expanded" + "_" + levelClass);
|
|
219
|
+
link.closest("li").removeClass("sidebar-item-expanded");
|
|
220
|
+
}
|
|
221
|
+
link.next().slideUp(slidePeriod);
|
|
222
|
+
}
|
|
223
|
+
}
|
|
224
|
+
//#endregion
|
|
225
|
+
onChangeTenant() {
|
|
226
|
+
window.location.href = `${myconfig.AuthUrl}/login/tenant?client=${myconfig.Client}`;
|
|
227
|
+
}
|
|
228
|
+
onLogout() {
|
|
229
|
+
window.location.href = `${myconfig.AuthUrl}/logout?client=${myconfig.Client}`;
|
|
230
|
+
}
|
|
231
|
+
getUserProfileData() {
|
|
232
|
+
var identity = this.sr.getJaceIdentity();
|
|
233
|
+
if (identity) {
|
|
234
|
+
this.user = identity.FullName;
|
|
235
|
+
this.tenant = identity.TenantName;
|
|
236
|
+
// TODO: Mettere logica dentro una service preferenze account
|
|
237
|
+
this.https.get(GET_Users_GetProfilePicture, new HttpParams().set('id', identity.IdAccount.toString())).subscribe(t => {
|
|
238
|
+
//this._state.setSanitizerPicProfile(t.image);
|
|
239
|
+
});
|
|
240
|
+
}
|
|
241
|
+
}
|
|
242
|
+
onSearchRequest() {
|
|
243
|
+
console.log("sent!");
|
|
244
|
+
this.searchingTerm = true;
|
|
245
|
+
this.searchResult = null;
|
|
246
|
+
if (!this.globalSearchService.Enabled)
|
|
247
|
+
return;
|
|
248
|
+
this.globalSearchService.search(this.searchTerm).subscribe(t => {
|
|
249
|
+
this.searchingTerm = false;
|
|
250
|
+
this.searchResult = t;
|
|
251
|
+
this.searchResult.results.forEach(t => {
|
|
252
|
+
t.est_cols = t.columns.map(c => {
|
|
253
|
+
let colLink = this.globalSearchService.generateColumnLink(c);
|
|
254
|
+
return new EsTableColumnsDefinition(c.description, c.id, colLink?.routePath, colLink?.routeProperties);
|
|
255
|
+
});
|
|
256
|
+
});
|
|
257
|
+
});
|
|
258
|
+
}
|
|
259
|
+
onSearchModelChanged() {
|
|
260
|
+
console.log("changed!");
|
|
261
|
+
if (!this.searchingTerm)
|
|
262
|
+
this.closeSearch();
|
|
263
|
+
}
|
|
264
|
+
closeSearch() {
|
|
265
|
+
this.searchingTerm = false;
|
|
266
|
+
this.searchResult = null;
|
|
267
|
+
}
|
|
268
|
+
FilterSearchResults(item = null) {
|
|
269
|
+
this.SelectedResult = null;
|
|
270
|
+
this.ShowSingleTable = true;
|
|
271
|
+
requestAnimationFrame(() => {
|
|
272
|
+
if (item)
|
|
273
|
+
this.SelectedResult = this.searchResult?.results?.find(f => f.description == item.description);
|
|
274
|
+
else
|
|
275
|
+
this.ShowSingleTable = false;
|
|
276
|
+
});
|
|
277
|
+
}
|
|
278
|
+
}
|
|
279
|
+
Sidebar.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: Sidebar, deps: [{ token: i1.LocalizationService }, { token: MENU_LOCALIZATION, optional: true }, { token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i2.Router }, { token: i3.AppState }, { token: i0.NgZone }, { token: i4.UtilityService }, { token: i5.AccessControlService }, { token: MENU }, { token: i3.MenuFilteringService }, { token: i3.TokenService }, { token: i6.HTTPService }, { token: i4.MessageService }, { token: i3.GlobalSearchService }], target: i0.ɵɵFactoryTarget.Component });
|
|
280
|
+
Sidebar.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.9", type: Sidebar, isStandalone: true, selector: "sidebar", host: { listeners: { "window:resize.out-zone": "onWindowResize()" } }, viewQueries: [{ propertyName: "sidebar", first: true, predicate: ["sidebar"], descendants: true, static: true }], ngImport: i0, template: "<div #sidebar class=\"app-sidebar\" [class.menu-collapsed]=\"isMenuCollapsed\" (mouseleave.out-zone)=\"sendAwayHoverElement();\">\r\n <!--Jace Logo-->\r\n <div class=\"app-logo-container\">\r\n <div class=\"app-pointer\" [routerLink]=\"['/pages/dashboard']\" style=\"margin-bottom: 10px; overflow: hidden\">\r\n <!-- <div *ngIf=\"!isMenuCollapsed\" class=\"app-logo-img app-logo-placeholder d-flex\">\r\n <div class=\"app-margin-left-10\">\r\n <i style=\"color: #00aeef;\" class=\"fas fa-chevron-left\"></i> \r\n <i style=\"color: #01C38D;\" class=\"fas fa-chevron-right\"></i> \r\n </div>\r\n <div class=\"app-margin-left-10\">{{applicationName}}</div>\r\n </div> -->\r\n <img *ngIf=\"!isMenuCollapsed\" class=\"app-logo-img\" src=\"assets/img/logo/logo.png\" alt=\"\">\r\n <img *ngIf=\"isMenuCollapsed\" class=\"app-logo-img-sm\" src=\"assets/img/logo/logo_sm.png\" alt=\"\">\r\n </div>\r\n </div>\r\n <div *ngIf=\"!isMenuCollapsed\" class=\"app-sidebar-search\">\r\n <form novalidate role=\"search\" class=\"app-search\" (ngSubmit)=\"onSearchRequest()\">\r\n <input type=\"text\" placeholder=\"Ricerca...\" [(ngModel)]=\"searchTerm\" (ngModelChange)=\"onSearchModelChanged()\" name=\"search\" class=\"form-control\" autocomplete=\"off\">\r\n <a><i class=\"far fa-magnifying-glass\"></i></a>\r\n </form>\r\n </div>\r\n <!--Barra laterale con tutte le voci di Menu-->\r\n <ul class=\"nav nav-sidebar flex-column flex-nowrap\" style=\"position: relative; zoom: 1\" slim-scroll [slimScrollOptions]=\"{height: menuHeight}\">\r\n <li *ngFor=\"let item of menuItems; let last = last;\" \r\n class=\"sidebar-list-item level-{{item.level}}\" \r\n [style.margin-bottom]=\"last ? '42px' : '0px'\" \r\n [class.has-sub-menu]=\"item.subMenu\"\r\n [class.sidebar-item-expanded]=\"item.expanded\" \r\n [class.sidebar-item-wip]=\"item.wip\">\r\n <ng-container *ngTemplateOutlet=\"menuItem; context : { $implicit: item }\"></ng-container>\r\n </li>\r\n </ul>\r\n <!--Selettore Barra dei Menu-->\r\n <div class=\"sidebar-hover-elem\"></div>\r\n <!--Footer-->\r\n <div *ngIf=\"!isMenuCollapsed\" class=\"app-sidebar-footer\">\r\n <!--Minuscolo fade tra sidebar e inizio footer-->\r\n <div class=\"app-sidebar-footer-fade\"></div>\r\n <div class=\"app-padding-15\">\r\n <!--Informazioni utente collegato-->\r\n <div class=\"app-sidebar-footer-user-container\">\r\n <!--Mentre sto ancora caricando la ProfilePic mi assicuro di mostrare un placeholder-->\r\n <div *ngIf=\"!safeprofilepic\" class=\"app-sidebar-footer-user-img-placeholder\">\r\n <i class=\"far fa-2x fa-spinner fa-spin-pulse\" style=\"color: black; margin-top: 5px;\"></i>\r\n </div>\r\n <!--Una volta caricata la ProfilePic nascondo il placeholder e la mostro-->\r\n <ng-container *ngIf=\"safeprofilepic\">\r\n <img [src]=\"safeprofilepic\" alt=\"\" class=\"app-sidebar-footer-user-img app-pointer\" [routerLink]=\"['/pages/profile/user_info']\">\r\n <div class=\"app-sidebar-footer-user-status\"></div>\r\n </ng-container>\r\n <!--Username animato quando supera i 15 caratteri-->\r\n <div class=\"app-sidebar-footer-user-name-container\">\r\n <div class=\"username-text\" [class.username-text-animator]=\"user?.length > 15\">{{user}}</div>\r\n <div class=\"tenantname-text\">{{tenant}}</div>\r\n </div>\r\n </div>\r\n <!--Operazioni rapide (Logout, Cambia tenant, Guida, Supporto,...)-->\r\n <div class=\"app-sidebar-footer-quick-ops\">\r\n <div (click)=\"onLogout();\" class=\"app-sidebar-footer-op app-no-selection\"><i class=\"far fa-right-from-bracket\"></i> Logout</div>\r\n <div (click)=\"onChangeTenant();\" class=\"app-sidebar-footer-op app-no-selection\"><i class=\"far fa-right-left\"></i> Cambia Tenant</div>\r\n </div>\r\n <!--Versione corrente applicazione-->\r\n <div class=\"app-sidebar-footer-ver\">\r\n v{{applicationVersion}}\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n<ng-template #menuItem let-item>\r\n <a [attr.style.padding_left]=\"item.padding_left\" *ngIf=\"(!item.routerLink && !item.subMenu) || item.wip\" [href]=\"item.link ? item.link : '#'\" (click)=\"item.wip && $event.preventDefault()\" target=\"_blank\" class=\"sidebar-list-link {{item.cssClass || ''}}\" (mouseenter.out-zone)=\"hoverItem($event)\">\r\n <i *ngIf=\"item.icon\" class=\"{{ item.icon }}\"></i><span>{{ item.title | localize : lc }}</span>\r\n </a>\r\n\r\n <a [attr.style.padding_left]=\"item.padding_left\" *ngIf=\"item.routerLink && !item.subMenu && !item.wip\" class=\"sidebar-list-link {{item.cssClass || ''}}\" [routerLink]=\"[item.routerLink]\" [queryParams]=\"item.queryParams\" routerLinkActive=\"active-link\" (click.out-zone)=\"collapseMenu($event, item)\" (mouseenter.out-zone)=\"hoverItem($event)\">\r\n <i *ngIf=\"item.icon\" class=\"{{ item.icon }}\"></i><span>{{ item.title | localize : lc }}</span>\r\n </a>\r\n\r\n <a [attr.style.padding_left]=\"item.padding_left\" *ngIf=\"item.subMenu && !item.wip\" (click.out-zone)=\"collapseMenu($event, item)\" [attr.href]=\"''\" class=\"sidebar-list-link {{item.cssClass || ''}}\" (mouseenter.out-zone)=\"hoverItem($event)\">\r\n <i *ngIf=\"item.icon\" class=\"{{ item.icon }}\"></i><span>{{ item.title | localize : lc }}</span>\r\n <b class=\"far fa-angle-down\"></b>\r\n </a>\r\n\r\n <ul *ngIf=\"item.subMenu\" class=\"sidebar-sublist\">\r\n <li *ngFor=\"let subitem of item.subMenu\" class=\"sidebar-sublist-item level-{{subitem.level}}\" [class.sidebar-item-wip]=\"subitem.wip\">\r\n <ng-container *ngTemplateOutlet=\"menuItem; context : { $implicit: subitem }\"></ng-container>\r\n </li>\r\n </ul>\r\n</ng-template>\r\n\r\n<!-- Overlay per la ricerca globale -->\r\n<ng-container *ngIf=\"searchingTerm || searchResult\">\r\n <div class=\"app-absolute app-search-background\">\r\n <div class=\"app-search-result-box\">\r\n <ng-container *ngIf=\"searchingTerm\">\r\n <div class=\"app-search-card\"><i class=\"fa fa-spinner fa-spin\"></i>Sto effettuando la ricerca...</div>\r\n </ng-container>\r\n <ng-container *ngIf=\"searchResult && !searchingTerm\">\r\n <div class=\"row\" style=\"height: 100%;\">\r\n <!-- Spazio a sinistra -->\r\n <div class=\"col-md-1\"></div>\r\n <!-- Blocco con le categorie dei risultati -->\r\n <div class=\"col-md-3\">\r\n <div class=\"app-search-card\">\r\n <div class=\"app-relative\"><a class=\"fa fa-times text-danger app-absolute app-right-0 app-fs-20 app-pointer\" (click)=\"closeSearch();\"></a></div>\r\n <h4>Categorie di Ricerca</h4>\r\n <div class=\"app-pointer app-link\" [class.app-bold]=\"!SelectedResult && !ShowSingleTable\">\r\n <span (click)=\"FilterSearchResults()\">{{SelectedResult ? '-' : '>'}} Mostra Tutto</span>\r\n </div>\r\n <div *ngFor=\"let item of searchResult.results\" class=\"app-pointer app-link\" [class.app-bold]=\"SelectedResult?.description == item.description\">\r\n <span (click)=\"FilterSearchResults(item)\">{{SelectedResult?.description == item.description ? '>' : '-'}} Mostra {{item.description}} ({{item.items?.length}})</span>\r\n </div>\r\n </div>\r\n </div>\r\n <!-- Dettaglio risultati -->\r\n <div class=\"col-md-7\" style=\"overflow: auto; height: 100%;\">\r\n <ng-container *ngIf=\"!SelectedResult && !ShowSingleTable\">\r\n <div *ngFor=\"let res of searchResult.results; let i = index;\" class=\"app-search-card\" [style.margin-bottom.px]=\"i == (searchResult.results?.length - 1) ? 2 : 10\">\r\n <h4>{{res.description}}</h4>\r\n <es-table [(ngModel)]=\"res.items\" [DynamicRowColumnsDefinition]=\"res.est_cols\" [ArraymodeItemsPerPage]=\"10\"></es-table>\r\n </div>\r\n </ng-container>\r\n <ng-container *ngIf=\"SelectedResult && ShowSingleTable\">\r\n <div class=\"app-search-card\">\r\n <h4>{{SelectedResult.description}}</h4>\r\n <es-table [(ngModel)]=\"SelectedResult.items\" [DynamicRowColumnsDefinition]=\"SelectedResult.est_cols\" [ArraymodeItemsPerPage]=\"10\"></es-table>\r\n </div>\r\n </ng-container>\r\n </div>\r\n <!-- Spazio a destra -->\r\n <div class=\"col-md-1\"></div>\r\n </div>\r\n </ng-container>\r\n </div>\r\n </div>\r\n</ng-container>", styles: ["@import\"https://fonts.googleapis.com/css2?family=Lato&family=Sora&display=swap\";.app-sidebar{background:#344154;box-shadow:8px 0 6px -6px #1313130a,12px 0 16px -16px #1313130d;height:100%;min-height:100%;width:230px;overflow:hidden;display:block;z-index:9}.app-sidebar.menu-collapsed{width:50px}.app-sidebar.menu-collapsed a.sidebar-list-link b{display:none}.app-sidebar.menu-collapsed .sidebar-sublist{position:absolute;top:-1px;left:52px;width:0;display:block;overflow:hidden}.sidebar-list-item{display:block;position:relative;float:none;padding:0;border-bottom:1px solid #485974}.sidebar-item-wip{cursor:default}a.sidebar-list-link{display:block;height:42px;padding-left:18px!important;padding-top:0!important;text-shadow:none;font-size:13px;letter-spacing:.02em;text-decoration:none;color:#fff;line-height:42px;white-space:nowrap;overflow:hidden;cursor:pointer;transition:all .2s ease}a.sidebar-list-link i{margin-right:16px;width:16px;display:inline-block}a.sidebar-list-link b{display:block;opacity:1;width:14px;height:14px;line-height:14px;text-shadow:none;font-size:18px;position:absolute;right:10px;top:14px;padding:0;text-align:center;transition:transform .2s linear}a.sidebar-list-link:hover{background-color:#2a3544}.sidebar-list-item.sidebar-item-expanded>.sidebar-list-link b,.sidebar-sublist-item.sidebar-item-expanded>.sidebar-list-link b{transform:rotate(180deg)}.sidebar-sublist{display:none;padding:0;list-style:none;position:relative;background-color:#3e4d64}.sidebar-sublist li{display:block;float:none;padding:0;border-bottom:none;position:relative;border-top:1px solid #485974}.sidebar-sublist li a{display:block;text-shadow:none;font-size:13px;text-decoration:none;padding-left:30px!important;height:42px;line-height:42px}.sidebar-sublist li a:hover{background-color:#2a3544}.sidebar-item-expanded>ul.sidebar-sublist{display:block;background-color:#3e4d64}.subitem-submenu-link .fa{top:14px}.sidebar-hover-elem{width:4px;background-color:#fffac2;position:absolute;top:-90px;left:226px;transition:all .2s ease;transition-property:top,height;height:36px;display:block}.sidebar.menu-collapsed .sidebar-hover-elem{left:46px}.active-link{color:#fffac2!important;font-weight:700!important;background-color:#3e4d64}@media (max-width: 544px){.sidebar.menu-collapsed{width:0}.sidebar-hover-elem,.sidebar-select-elem{display:none}}.app-logo-container{height:60px;background-color:#2a3544;display:flex;position:relative;z-index:10;margin-bottom:-1px;border-bottom:1px solid #485974;color:#fff}.app-sidebar-search{height:39px;border-bottom:42px solid #344154}.app-logo-placeholder{text-align:center;font-size:1.2rem;text-transform:uppercase;font-weight:700;margin-top:15px!important}.app-logo-img{width:210px;margin:10px 0 0 10px}.app-logo-img-sm{padding-top:10px}.app-sidebar-footer{position:relative;background-color:#344154}.app-sidebar-footer-fade{top:-42px;position:absolute;background-image:linear-gradient(to top,#344154,rgba(52,65,84,0));height:42px;width:230px;z-index:100}.app-sidebar-footer-user-container{position:relative;display:flex;margin-top:5px;color:#fff}.app-sidebar-footer-user-img-placeholder{height:40px;min-width:40px;width:40px;text-align:center}.app-sidebar-footer-user-img{height:40px;min-height:40px;min-width:40px;width:40px;border-radius:50%;border:1px solid #485974}.app-sidebar-footer-user-status{background-color:#32cd32;border:1px solid green;border-radius:50%;position:absolute;left:29px;top:29px;height:11px;width:11px}.app-sidebar-footer-user-name-container{width:150px;white-space:nowrap;overflow:hidden;margin-left:10px}.username-text{z-index:1;min-width:140px;display:flex;font-size:16px}.username-text-animator:hover{transform:translate(100%);animation:my-animation 3s linear infinite}@keyframes my-animation{0%{transform:translate(0)}to{transform:translate(-50%)}}.tenantname-text{font-size:12px}.app-sidebar-footer-quick-ops{margin-top:10px;display:flex;justify-content:space-between}.app-sidebar-footer-op{color:#fffac2;font-weight:700;cursor:pointer}.app-sidebar-footer-ver{text-align:right;margin-top:30px;color:#fff}.app-search{position:relative}.app-search a{position:absolute;top:8px;right:14px;font-size:16px;color:#fff!important}.app-search .form-control{font-size:12px;letter-spacing:.03em;height:40px;color:#fff;padding:7px 40px 7px 20px;background:#3e4d64;box-shadow:none!important;border-top:none!important;border-left:none!important;border-right:none!important;border-bottom:1px solid #485974}\n"], dependencies: [{ kind: "directive", type: SlimScroll, selector: "[slim-scroll]", inputs: ["slimScrollOptions"] }, { kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: RouterLinkActive, selector: "[routerLinkActive]", inputs: ["routerLinkActiveOptions", "ariaCurrentWhenActive", "routerLinkActive"], outputs: ["isActiveChange"], exportAs: ["routerLinkActive"] }, { kind: "directive", type: RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "ngmodule", type: LocalizationModule }, { kind: "pipe", type: i1.LocalizePipe, name: "localize" }, { kind: "ngmodule", type: EsTableModule }, { kind: "component", type: i7.EsTableComponent, selector: "es-table", inputs: ["EsTableTemplate", "CornerMenuOptions", "ColumnsResizable", "ColumnsPinnable", "AutoUpdate", "Height", "EmptySpaceBackgroundColor", "EsTableHandledSearch", "MaxHeight", "ContainerClass", "XLSXExport", "CSVExport", "AllSearch", "HighCellDensity", "Selection", "ShowLoadingOnBootstrap", "Removal", "RemovalCondition", "Export", "ShiftClick", "CountLabel", "HidePaging", "HidePagingCount", "HidePagingButtons", "ContextMenu", "ExportFileName", "TableClass", "ExportFunction", "ExportOnlyVisibleColumns", "HasHeaderGroup", "HasSecondaryHeaderGroup", "HeaderHidden", "BodyHidden", "SelectionDisabled", "SingleSelection", "RowClassAssigner", "OrderByColumn", "MultipleOrderingDirectives", "HiddenColumns", "ColumnsOrdering", "SearchView", "SelectAll", "UseArrayModePaging", "DynamicRowColumnsDefinition", "DynamicOperations", "Hierarchy", "ParentKey", "OwnKey", "StartsExpanded", "SavePreferences", "DefaultAlignment", "PagingStyle", "RowGroupingPagingStyle", "ItemSourceProperty", "UseSelectionCache", "ShowItemGroupsColumns", "Editable", "RangeSelection", "SearchThrottle", "ArraymodeItemsPerPage"], outputs: ["onOrderChanged", "onSearchRequest", "onSelectionChanged", "onRemoval", "onAbortRemoval", "onModelChange", "onOpenContextMenu", "onCornerAction", "onDynamicOperation"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i8.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i8.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i8.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i8.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i8.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i8.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
281
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: Sidebar, decorators: [{
|
|
282
|
+
type: Component,
|
|
283
|
+
args: [{ selector: "sidebar", encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [NgClass, SlimScroll, NgFor, NgTemplateOutlet, NgIf, RouterLinkActive, RouterLink, LocalizationModule, EsTableModule, FormsModule], template: "<div #sidebar class=\"app-sidebar\" [class.menu-collapsed]=\"isMenuCollapsed\" (mouseleave.out-zone)=\"sendAwayHoverElement();\">\r\n <!--Jace Logo-->\r\n <div class=\"app-logo-container\">\r\n <div class=\"app-pointer\" [routerLink]=\"['/pages/dashboard']\" style=\"margin-bottom: 10px; overflow: hidden\">\r\n <!-- <div *ngIf=\"!isMenuCollapsed\" class=\"app-logo-img app-logo-placeholder d-flex\">\r\n <div class=\"app-margin-left-10\">\r\n <i style=\"color: #00aeef;\" class=\"fas fa-chevron-left\"></i> \r\n <i style=\"color: #01C38D;\" class=\"fas fa-chevron-right\"></i> \r\n </div>\r\n <div class=\"app-margin-left-10\">{{applicationName}}</div>\r\n </div> -->\r\n <img *ngIf=\"!isMenuCollapsed\" class=\"app-logo-img\" src=\"assets/img/logo/logo.png\" alt=\"\">\r\n <img *ngIf=\"isMenuCollapsed\" class=\"app-logo-img-sm\" src=\"assets/img/logo/logo_sm.png\" alt=\"\">\r\n </div>\r\n </div>\r\n <div *ngIf=\"!isMenuCollapsed\" class=\"app-sidebar-search\">\r\n <form novalidate role=\"search\" class=\"app-search\" (ngSubmit)=\"onSearchRequest()\">\r\n <input type=\"text\" placeholder=\"Ricerca...\" [(ngModel)]=\"searchTerm\" (ngModelChange)=\"onSearchModelChanged()\" name=\"search\" class=\"form-control\" autocomplete=\"off\">\r\n <a><i class=\"far fa-magnifying-glass\"></i></a>\r\n </form>\r\n </div>\r\n <!--Barra laterale con tutte le voci di Menu-->\r\n <ul class=\"nav nav-sidebar flex-column flex-nowrap\" style=\"position: relative; zoom: 1\" slim-scroll [slimScrollOptions]=\"{height: menuHeight}\">\r\n <li *ngFor=\"let item of menuItems; let last = last;\" \r\n class=\"sidebar-list-item level-{{item.level}}\" \r\n [style.margin-bottom]=\"last ? '42px' : '0px'\" \r\n [class.has-sub-menu]=\"item.subMenu\"\r\n [class.sidebar-item-expanded]=\"item.expanded\" \r\n [class.sidebar-item-wip]=\"item.wip\">\r\n <ng-container *ngTemplateOutlet=\"menuItem; context : { $implicit: item }\"></ng-container>\r\n </li>\r\n </ul>\r\n <!--Selettore Barra dei Menu-->\r\n <div class=\"sidebar-hover-elem\"></div>\r\n <!--Footer-->\r\n <div *ngIf=\"!isMenuCollapsed\" class=\"app-sidebar-footer\">\r\n <!--Minuscolo fade tra sidebar e inizio footer-->\r\n <div class=\"app-sidebar-footer-fade\"></div>\r\n <div class=\"app-padding-15\">\r\n <!--Informazioni utente collegato-->\r\n <div class=\"app-sidebar-footer-user-container\">\r\n <!--Mentre sto ancora caricando la ProfilePic mi assicuro di mostrare un placeholder-->\r\n <div *ngIf=\"!safeprofilepic\" class=\"app-sidebar-footer-user-img-placeholder\">\r\n <i class=\"far fa-2x fa-spinner fa-spin-pulse\" style=\"color: black; margin-top: 5px;\"></i>\r\n </div>\r\n <!--Una volta caricata la ProfilePic nascondo il placeholder e la mostro-->\r\n <ng-container *ngIf=\"safeprofilepic\">\r\n <img [src]=\"safeprofilepic\" alt=\"\" class=\"app-sidebar-footer-user-img app-pointer\" [routerLink]=\"['/pages/profile/user_info']\">\r\n <div class=\"app-sidebar-footer-user-status\"></div>\r\n </ng-container>\r\n <!--Username animato quando supera i 15 caratteri-->\r\n <div class=\"app-sidebar-footer-user-name-container\">\r\n <div class=\"username-text\" [class.username-text-animator]=\"user?.length > 15\">{{user}}</div>\r\n <div class=\"tenantname-text\">{{tenant}}</div>\r\n </div>\r\n </div>\r\n <!--Operazioni rapide (Logout, Cambia tenant, Guida, Supporto,...)-->\r\n <div class=\"app-sidebar-footer-quick-ops\">\r\n <div (click)=\"onLogout();\" class=\"app-sidebar-footer-op app-no-selection\"><i class=\"far fa-right-from-bracket\"></i> Logout</div>\r\n <div (click)=\"onChangeTenant();\" class=\"app-sidebar-footer-op app-no-selection\"><i class=\"far fa-right-left\"></i> Cambia Tenant</div>\r\n </div>\r\n <!--Versione corrente applicazione-->\r\n <div class=\"app-sidebar-footer-ver\">\r\n v{{applicationVersion}}\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n<ng-template #menuItem let-item>\r\n <a [attr.style.padding_left]=\"item.padding_left\" *ngIf=\"(!item.routerLink && !item.subMenu) || item.wip\" [href]=\"item.link ? item.link : '#'\" (click)=\"item.wip && $event.preventDefault()\" target=\"_blank\" class=\"sidebar-list-link {{item.cssClass || ''}}\" (mouseenter.out-zone)=\"hoverItem($event)\">\r\n <i *ngIf=\"item.icon\" class=\"{{ item.icon }}\"></i><span>{{ item.title | localize : lc }}</span>\r\n </a>\r\n\r\n <a [attr.style.padding_left]=\"item.padding_left\" *ngIf=\"item.routerLink && !item.subMenu && !item.wip\" class=\"sidebar-list-link {{item.cssClass || ''}}\" [routerLink]=\"[item.routerLink]\" [queryParams]=\"item.queryParams\" routerLinkActive=\"active-link\" (click.out-zone)=\"collapseMenu($event, item)\" (mouseenter.out-zone)=\"hoverItem($event)\">\r\n <i *ngIf=\"item.icon\" class=\"{{ item.icon }}\"></i><span>{{ item.title | localize : lc }}</span>\r\n </a>\r\n\r\n <a [attr.style.padding_left]=\"item.padding_left\" *ngIf=\"item.subMenu && !item.wip\" (click.out-zone)=\"collapseMenu($event, item)\" [attr.href]=\"''\" class=\"sidebar-list-link {{item.cssClass || ''}}\" (mouseenter.out-zone)=\"hoverItem($event)\">\r\n <i *ngIf=\"item.icon\" class=\"{{ item.icon }}\"></i><span>{{ item.title | localize : lc }}</span>\r\n <b class=\"far fa-angle-down\"></b>\r\n </a>\r\n\r\n <ul *ngIf=\"item.subMenu\" class=\"sidebar-sublist\">\r\n <li *ngFor=\"let subitem of item.subMenu\" class=\"sidebar-sublist-item level-{{subitem.level}}\" [class.sidebar-item-wip]=\"subitem.wip\">\r\n <ng-container *ngTemplateOutlet=\"menuItem; context : { $implicit: subitem }\"></ng-container>\r\n </li>\r\n </ul>\r\n</ng-template>\r\n\r\n<!-- Overlay per la ricerca globale -->\r\n<ng-container *ngIf=\"searchingTerm || searchResult\">\r\n <div class=\"app-absolute app-search-background\">\r\n <div class=\"app-search-result-box\">\r\n <ng-container *ngIf=\"searchingTerm\">\r\n <div class=\"app-search-card\"><i class=\"fa fa-spinner fa-spin\"></i>Sto effettuando la ricerca...</div>\r\n </ng-container>\r\n <ng-container *ngIf=\"searchResult && !searchingTerm\">\r\n <div class=\"row\" style=\"height: 100%;\">\r\n <!-- Spazio a sinistra -->\r\n <div class=\"col-md-1\"></div>\r\n <!-- Blocco con le categorie dei risultati -->\r\n <div class=\"col-md-3\">\r\n <div class=\"app-search-card\">\r\n <div class=\"app-relative\"><a class=\"fa fa-times text-danger app-absolute app-right-0 app-fs-20 app-pointer\" (click)=\"closeSearch();\"></a></div>\r\n <h4>Categorie di Ricerca</h4>\r\n <div class=\"app-pointer app-link\" [class.app-bold]=\"!SelectedResult && !ShowSingleTable\">\r\n <span (click)=\"FilterSearchResults()\">{{SelectedResult ? '-' : '>'}} Mostra Tutto</span>\r\n </div>\r\n <div *ngFor=\"let item of searchResult.results\" class=\"app-pointer app-link\" [class.app-bold]=\"SelectedResult?.description == item.description\">\r\n <span (click)=\"FilterSearchResults(item)\">{{SelectedResult?.description == item.description ? '>' : '-'}} Mostra {{item.description}} ({{item.items?.length}})</span>\r\n </div>\r\n </div>\r\n </div>\r\n <!-- Dettaglio risultati -->\r\n <div class=\"col-md-7\" style=\"overflow: auto; height: 100%;\">\r\n <ng-container *ngIf=\"!SelectedResult && !ShowSingleTable\">\r\n <div *ngFor=\"let res of searchResult.results; let i = index;\" class=\"app-search-card\" [style.margin-bottom.px]=\"i == (searchResult.results?.length - 1) ? 2 : 10\">\r\n <h4>{{res.description}}</h4>\r\n <es-table [(ngModel)]=\"res.items\" [DynamicRowColumnsDefinition]=\"res.est_cols\" [ArraymodeItemsPerPage]=\"10\"></es-table>\r\n </div>\r\n </ng-container>\r\n <ng-container *ngIf=\"SelectedResult && ShowSingleTable\">\r\n <div class=\"app-search-card\">\r\n <h4>{{SelectedResult.description}}</h4>\r\n <es-table [(ngModel)]=\"SelectedResult.items\" [DynamicRowColumnsDefinition]=\"SelectedResult.est_cols\" [ArraymodeItemsPerPage]=\"10\"></es-table>\r\n </div>\r\n </ng-container>\r\n </div>\r\n <!-- Spazio a destra -->\r\n <div class=\"col-md-1\"></div>\r\n </div>\r\n </ng-container>\r\n </div>\r\n </div>\r\n</ng-container>", styles: ["@import\"https://fonts.googleapis.com/css2?family=Lato&family=Sora&display=swap\";.app-sidebar{background:#344154;box-shadow:8px 0 6px -6px #1313130a,12px 0 16px -16px #1313130d;height:100%;min-height:100%;width:230px;overflow:hidden;display:block;z-index:9}.app-sidebar.menu-collapsed{width:50px}.app-sidebar.menu-collapsed a.sidebar-list-link b{display:none}.app-sidebar.menu-collapsed .sidebar-sublist{position:absolute;top:-1px;left:52px;width:0;display:block;overflow:hidden}.sidebar-list-item{display:block;position:relative;float:none;padding:0;border-bottom:1px solid #485974}.sidebar-item-wip{cursor:default}a.sidebar-list-link{display:block;height:42px;padding-left:18px!important;padding-top:0!important;text-shadow:none;font-size:13px;letter-spacing:.02em;text-decoration:none;color:#fff;line-height:42px;white-space:nowrap;overflow:hidden;cursor:pointer;transition:all .2s ease}a.sidebar-list-link i{margin-right:16px;width:16px;display:inline-block}a.sidebar-list-link b{display:block;opacity:1;width:14px;height:14px;line-height:14px;text-shadow:none;font-size:18px;position:absolute;right:10px;top:14px;padding:0;text-align:center;transition:transform .2s linear}a.sidebar-list-link:hover{background-color:#2a3544}.sidebar-list-item.sidebar-item-expanded>.sidebar-list-link b,.sidebar-sublist-item.sidebar-item-expanded>.sidebar-list-link b{transform:rotate(180deg)}.sidebar-sublist{display:none;padding:0;list-style:none;position:relative;background-color:#3e4d64}.sidebar-sublist li{display:block;float:none;padding:0;border-bottom:none;position:relative;border-top:1px solid #485974}.sidebar-sublist li a{display:block;text-shadow:none;font-size:13px;text-decoration:none;padding-left:30px!important;height:42px;line-height:42px}.sidebar-sublist li a:hover{background-color:#2a3544}.sidebar-item-expanded>ul.sidebar-sublist{display:block;background-color:#3e4d64}.subitem-submenu-link .fa{top:14px}.sidebar-hover-elem{width:4px;background-color:#fffac2;position:absolute;top:-90px;left:226px;transition:all .2s ease;transition-property:top,height;height:36px;display:block}.sidebar.menu-collapsed .sidebar-hover-elem{left:46px}.active-link{color:#fffac2!important;font-weight:700!important;background-color:#3e4d64}@media (max-width: 544px){.sidebar.menu-collapsed{width:0}.sidebar-hover-elem,.sidebar-select-elem{display:none}}.app-logo-container{height:60px;background-color:#2a3544;display:flex;position:relative;z-index:10;margin-bottom:-1px;border-bottom:1px solid #485974;color:#fff}.app-sidebar-search{height:39px;border-bottom:42px solid #344154}.app-logo-placeholder{text-align:center;font-size:1.2rem;text-transform:uppercase;font-weight:700;margin-top:15px!important}.app-logo-img{width:210px;margin:10px 0 0 10px}.app-logo-img-sm{padding-top:10px}.app-sidebar-footer{position:relative;background-color:#344154}.app-sidebar-footer-fade{top:-42px;position:absolute;background-image:linear-gradient(to top,#344154,rgba(52,65,84,0));height:42px;width:230px;z-index:100}.app-sidebar-footer-user-container{position:relative;display:flex;margin-top:5px;color:#fff}.app-sidebar-footer-user-img-placeholder{height:40px;min-width:40px;width:40px;text-align:center}.app-sidebar-footer-user-img{height:40px;min-height:40px;min-width:40px;width:40px;border-radius:50%;border:1px solid #485974}.app-sidebar-footer-user-status{background-color:#32cd32;border:1px solid green;border-radius:50%;position:absolute;left:29px;top:29px;height:11px;width:11px}.app-sidebar-footer-user-name-container{width:150px;white-space:nowrap;overflow:hidden;margin-left:10px}.username-text{z-index:1;min-width:140px;display:flex;font-size:16px}.username-text-animator:hover{transform:translate(100%);animation:my-animation 3s linear infinite}@keyframes my-animation{0%{transform:translate(0)}to{transform:translate(-50%)}}.tenantname-text{font-size:12px}.app-sidebar-footer-quick-ops{margin-top:10px;display:flex;justify-content:space-between}.app-sidebar-footer-op{color:#fffac2;font-weight:700;cursor:pointer}.app-sidebar-footer-ver{text-align:right;margin-top:30px;color:#fff}.app-search{position:relative}.app-search a{position:absolute;top:8px;right:14px;font-size:16px;color:#fff!important}.app-search .form-control{font-size:12px;letter-spacing:.03em;height:40px;color:#fff;padding:7px 40px 7px 20px;background:#3e4d64;box-shadow:none!important;border-top:none!important;border-left:none!important;border-right:none!important;border-bottom:1px solid #485974}\n"] }]
|
|
284
|
+
}], ctorParameters: function () { return [{ type: i1.LocalizationService }, { type: i0.Type, decorators: [{
|
|
285
|
+
type: Optional
|
|
286
|
+
}, {
|
|
287
|
+
type: Inject,
|
|
288
|
+
args: [MENU_LOCALIZATION]
|
|
289
|
+
}] }, { type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i2.Router }, { type: i3.AppState }, { type: i0.NgZone }, { type: i4.UtilityService }, { type: i5.AccessControlService }, { type: undefined, decorators: [{
|
|
290
|
+
type: Inject,
|
|
291
|
+
args: [MENU]
|
|
292
|
+
}] }, { type: i3.MenuFilteringService }, { type: i3.TokenService }, { type: i6.HTTPService }, { type: i4.MessageService }, { type: i3.GlobalSearchService }]; }, propDecorators: { sidebar: [{
|
|
293
|
+
type: ViewChild,
|
|
294
|
+
args: ["sidebar", { static: true }]
|
|
295
|
+
}], onWindowResize: [{
|
|
296
|
+
type: HostListener,
|
|
297
|
+
args: ["window:resize.out-zone"]
|
|
298
|
+
}] } });
|
|
299
|
+
// TODO: Spostare nel modulo preferenze account
|
|
300
|
+
export class ProfilePicture {
|
|
301
|
+
}
|
|
302
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lkZWJhci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlL2NvbXBvbmVudHMvc3JjL3BhZ2Utc3RydWN0dXJlL3NpZGViYXIvc2lkZWJhci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlL2NvbXBvbmVudHMvc3JjL3BhZ2Utc3RydWN0dXJlL3NpZGViYXIvc2lkZWJhci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxVQUFVO0FBQ1YsT0FBTyxFQUFFLHVCQUF1QixFQUFxQixTQUFTLEVBQWMsWUFBWSxFQUFFLE1BQU0sRUFBVSxRQUFRLEVBQVEsU0FBUyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzlLLE9BQU8sRUFBRSxhQUFhLEVBQVUsZ0JBQWdCLEVBQUUsVUFBVSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDdEYsT0FBTyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsZ0JBQWdCLEVBQUUsSUFBSSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFekUsaUJBQWlCO0FBQ2pCLE9BQU8sRUFBdUIsa0JBQWtCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUVsRixXQUFXO0FBQ1gsT0FBTyxFQUErQixJQUFJLEVBQUUsaUJBQWlCLEVBQXVDLE1BQU0sdUJBQXVCLENBQUM7QUFJbEksT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBRXZELFdBQVc7QUFDWCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRXRDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUVsRCxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsYUFBYSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDN0UsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7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QUFVLDJOQUFFLGtCQUFrQix5RkFBRSxhQUFhLDAyQ0FBRSxXQUFXOzJGQUVqSSxPQUFPO2tCQVRuQixTQUFTOytCQUNJLFNBQVMsaUJBQ0osaUJBQWlCLENBQUMsSUFBSSxtQkFDcEIsdUJBQXVCLENBQUMsTUFBTSxjQUduQyxJQUFJLFdBQ1AsQ0FBQyxPQUFPLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRSxnQkFBZ0IsRUFBRSxJQUFJLEVBQUUsZ0JBQWdCLEVBQUUsVUFBVSxFQUFFLGtCQUFrQixFQUFFLGFBQWEsRUFBRSxXQUFXLENBQUM7OzBCQXNCdEcsUUFBUTs7MEJBQUksTUFBTTsyQkFBQyxpQkFBaUI7OzBCQUN3RSxNQUFNOzJCQUFDLElBQUk7bU1BSnBILE9BQU87c0JBQTlDLFNBQVM7dUJBQUMsU0FBUyxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtnQkE0Ri9CLGNBQWM7c0JBRHBCLFlBQVk7dUJBQUMsd0JBQXdCOztBQTJNMUMsK0NBQStDO0FBQy9DLE1BQU0sT0FBTyxjQUFjO0NBRTFCIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQW5ndWxhclxyXG5pbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgRWxlbWVudFJlZiwgSG9zdExpc3RlbmVyLCBJbmplY3QsIE5nWm9uZSwgT3B0aW9uYWwsIFR5cGUsIFZpZXdDaGlsZCwgVmlld0VuY2Fwc3VsYXRpb24gfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQgeyBOYXZpZ2F0aW9uRW5kLCBSb3V0ZXIsIFJvdXRlckxpbmtBY3RpdmUsIFJvdXRlckxpbmsgfSBmcm9tIFwiQGFuZ3VsYXIvcm91dGVyXCI7XHJcbmltcG9ydCB7IE5nQ2xhc3MsIE5nRm9yLCBOZ1RlbXBsYXRlT3V0bGV0LCBOZ0lmIH0gZnJvbSBcIkBhbmd1bGFyL2NvbW1vblwiO1xyXG5cclxuLy8gQ29uZmlndXJhemlvbmlcclxuaW1wb3J0IHsgTG9jYWxpemF0aW9uU2VydmljZSwgTG9jYWxpemF0aW9uTW9kdWxlIH0gZnJvbSBcIkBlc2ZhZW56YS9sb2NhbGl6YXRpb25zXCI7XHJcblxyXG4vLyBFc0ZhZW56YVxyXG5pbXBvcnQgeyBBcHBsaWNhdGlvbk1lbnUsIEVudk9wdGlvbnMsIE1FTlUsIE1FTlVfTE9DQUxJWkFUSU9OLCBTZWFyY2hSZXN1bHQsIFNlYXJjaFJlc3VsdENvbnRhaW5lciB9IGZyb20gXCJAZXNmYWVuemEvY29yZS9kb21haW5cIjtcclxuaW1wb3J0IHsgQXBwU3RhdGUsIEdsb2JhbFNlYXJjaFNlcnZpY2UsIE1lbnVGaWx0ZXJpbmdTZXJ2aWNlLCBUb2tlblNlcnZpY2UgfSBmcm9tIFwiQGVzZmFlbnphL2NvcmUvc2VydmljZXNcIjtcclxuaW1wb3J0IHsgTWVzc2FnZVNlcnZpY2UsIFV0aWxpdHlTZXJ2aWNlIH0gZnJvbSBcIkBlc2ZhZW56YS9leHRlbnNpb25zXCI7XHJcbmltcG9ydCB7IEFjY2Vzc0NvbnRyb2xTZXJ2aWNlIH0gZnJvbSBcIkBlc2ZhZW56YS9hY2Nlc3MtY29udHJvbFwiO1xyXG5pbXBvcnQgeyBTbGltU2Nyb2xsIH0gZnJvbSBcIkBlc2ZhZW56YS9jb3JlL2RpcmVjdGl2ZXNcIjtcclxuXHJcbi8vIExpYnJlcmllXHJcbmltcG9ydCB7IGZpcnN0VmFsdWVGcm9tIH0gZnJvbSBcInJ4anNcIjtcclxuaW1wb3J0IHsgSFRUUFNlcnZpY2UgfSBmcm9tIFwiQGVzZmFlbnphL2h0dHBzZXJ2aWNlXCI7XHJcbmltcG9ydCB7IEh0dHBQYXJhbXMgfSBmcm9tIFwiQGFuZ3VsYXIvY29tbW9uL2h0dHBcIjtcclxuaW1wb3J0IHsgU2FmZVJlc291cmNlVXJsIH0gZnJvbSBcIkBhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXJcIjtcclxuaW1wb3J0IHsgRXNUYWJsZUNvbHVtbnNEZWZpbml0aW9uLCBFc1RhYmxlTW9kdWxlIH0gZnJvbSBcIkBlc2ZhZW56YS9lcy10YWJsZVwiO1xyXG5pbXBvcnQgeyBGb3Jtc01vZHVsZSB9IGZyb20gXCJAYW5ndWxhci9mb3Jtc1wiO1xyXG5cclxuLy8gQ2hpYW1hdGUgYWkgUmVwb3NpdG9yeVxyXG5jb25zdCBHRVRfVXNlcnNfR2V0UHJvZmlsZVBpY3R1cmU6IHN0cmluZyA9IFwiL2FwaS9Vc2Vycy9HZXRQcm9maWxlUGljdHVyZVwiO1xyXG5cclxuZGVjbGFyZSB2YXIgbXljb25maWc6IEVudk9wdGlvbnM7XHJcbmRlY2xhcmUgdmFyIGpRdWVyeTtcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gICAgc2VsZWN0b3I6IFwic2lkZWJhclwiLFxyXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcclxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxyXG4gICAgc3R5bGVVcmxzOiBbXCIuL3NpZGViYXIuY29tcG9uZW50LnNjc3NcIl0sXHJcbiAgICB0ZW1wbGF0ZVVybDogXCIuL3NpZGViYXIuY29tcG9uZW50Lmh0bWxcIixcclxuICAgIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgICBpbXBvcnRzOiBbTmdDbGFzcywgU2xpbVNjcm9sbCwgTmdGb3IsIE5nVGVtcGxhdGVPdXRsZXQsIE5nSWYsIFJvdXRlckxpbmtBY3RpdmUsIFJvdXRlckxpbmssIExvY2FsaXphdGlvbk1vZHVsZSwgRXNUYWJsZU1vZHVsZSwgRm9ybXNNb2R1bGVdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBTaWRlYmFyIHtcclxuICAgIHB1YmxpYyBtZW51SXRlbXM6IEFycmF5PGFueT47XHJcbiAgICBwdWJsaWMgbWVudUhlaWdodDogbnVtYmVyO1xyXG4gICAgcHVibGljIGlzTWVudUNvbGxhcHNlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gICAgcHVibGljIGlzTWVudVNob3VsZENvbGxhcHNlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICAgIHB1YmxpYyBzaG93SG92ZXJFbGVtOiBib29sZWFuO1xyXG4gICAgcHVibGljIGhvdmVyRWxlbUhlaWdodDogbnVtYmVyO1xyXG4gICAgcHVibGljIGhvdmVyRWxlbVRvcDogbnVtYmVyO1xyXG5cclxuICAgIHB1YmxpYyBhcHBsaWNhdGlvblZlcnNpb24gPSBteWNvbmZpZy5BcHBEYXRhLkNvbXBvbmVudFZlcnNpb247XHJcbiAgICBwdWJsaWMgYXBwbGljYXRpb25OYW1lID0gbXljb25maWcuQXBwRGF0YS5Nb2R1bGVEZXNjcmlwdGlvbjtcclxuICAgIHB1YmxpYyB1c2VyID0gXCJcIjtcclxuICAgIHB1YmxpYyB0ZW5hbnQgPSBcIlwiO1xyXG5cclxuICAgIHB1YmxpYyBTZWFyY2hNb2RlbCA9IFwiXCI7XHJcblxyXG4gICAgQFZpZXdDaGlsZChcInNpZGViYXJcIiwgeyBzdGF0aWM6IHRydWUgfSkgc2lkZWJhcjogRWxlbWVudFJlZjtcclxuXHJcbiAgICBjb25zdHJ1Y3RvcihcclxuICAgICAgICBwdWJsaWMgbGM6IExvY2FsaXphdGlvblNlcnZpY2UsIEBPcHRpb25hbCgpIEBJbmplY3QoTUVOVV9MT0NBTElaQVRJT04pIGxjTWVudTogVHlwZTxMb2NhbGl6YXRpb25TZXJ2aWNlPiwgcHJpdmF0ZSBjZHI6IENoYW5nZURldGVjdG9yUmVmLCBwcml2YXRlIF9lbGVtZW50UmVmOiBFbGVtZW50UmVmLFxyXG4gICAgICAgIHByaXZhdGUgX3JvdXRlcjogUm91dGVyLCBwdWJsaWMgX3N0YXRlOiBBcHBTdGF0ZSwgcHJpdmF0ZSB6b25lOiBOZ1pvbmUsIHByaXZhdGUgdXRpRXh0czogVXRpbGl0eVNlcnZpY2UsIHByaXZhdGUgYWFjOiBBY2Nlc3NDb250cm9sU2VydmljZSwgQEluamVjdChNRU5VKSBwcml2YXRlIG1lbnVJdGVtc1JhdzogQXBwbGljYXRpb25NZW51W10sXHJcbiAgICAgICAgcHJpdmF0ZSBtZW51RmlsdGVyaW5nU2VydmljZTogTWVudUZpbHRlcmluZ1NlcnZpY2UsIHB1YmxpYyBzcjogVG9rZW5TZXJ2aWNlLCBwcml2YXRlIGh0dHBzOiBIVFRQU2VydmljZSwgcHJpdmF0ZSBtc2dzOiBNZXNzYWdlU2VydmljZSwgcHVibGljIGdsb2JhbFNlYXJjaFNlcnZpY2U6IEdsb2JhbFNlYXJjaFNlcnZpY2UpIHtcclxuXHJcbiAgICAgICAgdGhpcy5sYyA9IHRoaXMubGMuZ2VuZXJhdGVGcm9tVHlwZShsY01lbnUpO1xyXG5cclxuICAgICAgICB0aGlzLl9zdGF0ZS5zdWJzY3JpYmUoXCJtZW51LmlzQ29sbGFwc2VkXCIsIChpc0NvbGxhcHNlZCkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmlzTWVudUNvbGxhcHNlZCA9IGlzQ29sbGFwc2VkO1xyXG4gICAgICAgICAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgdGhpcy5fc3RhdGUuc3Vic2NyaWJlKFwiYXBwbGljYXRpb24uRGVwbG95QXZhaWxhYmxlXCIsIChhdmFpbGFibGU6IGJvb2xlYW4pID0+IHtcclxuICAgICAgICAgICAgaWYgKGF2YWlsYWJsZSlcclxuICAgICAgICAgICAgICAgIHRoaXMubmdPbkluaXQoKTtcclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgdGhpcy5fcm91dGVyLmV2ZW50cy5zdWJzY3JpYmUoZXZlbnQgPT4ge1xyXG4gICAgICAgICAgICBpZiAoZXZlbnQgaW5zdGFuY2VvZiBOYXZpZ2F0aW9uRW5kKSB7XHJcbiAgICAgICAgICAgICAgICBsZXQgd2lkdGggPSAod2luZG93LmlubmVyV2lkdGggPiAwKSA/IHdpbmRvdy5pbm5lcldpZHRoIDogc2NyZWVuLndpZHRoO1xyXG4gICAgICAgICAgICAgICAgaWYgKHdpZHRoIDw9IDc2OCkgXHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fc3RhdGUubm90aWZ5RGF0YUNoYW5nZWQoXCJtZW51LmlzQ29sbGFwc2VkXCIsIHRydWUpO1xyXG4gICAgICAgICAgICAgICAgd2luZG93LnNjcm9sbFRvKDAsIDApO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIHRoaXMuZ2V0VXNlclByb2ZpbGVEYXRhKCk7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGFzeW5jIG5nT25Jbml0KCkge1xyXG4gICAgICAgIGxldCB0bXBNZW51SXRlbXMgPSB0aGlzLmdldE1lbnVJdGVtcygpO1xyXG4gICAgICAgIHRoaXMubWVudUl0ZW1zID0gYXdhaXQgZmlyc3RWYWx1ZUZyb20odGhpcy5tZW51RmlsdGVyaW5nU2VydmljZS5maWx0ZXIodG1wTWVudUl0ZW1zKSk7XHJcblxyXG4gICAgICAgIGlmICh0aGlzLl9zaG91bGRNZW51Q29sbGFwc2UoKSlcclxuICAgICAgICAgICAgdGhpcy5tZW51Q29sbGFwc2UoKTtcclxuXHJcbiAgICAgICAgdGhpcy51cGRhdGVTaWRlYmFySGVpZ2h0KCk7XHJcbiAgICAgICAgdGhpcy5fc3RhdGUuc2V0U2lkZWJhcldpZHRoKHRoaXMuc2lkZWJhci5uYXRpdmVFbGVtZW50Lm9mZnNldFdpZHRoKTtcclxuICAgICAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGdldE1lbnVJdGVtcygpOiBBcHBsaWNhdGlvbk1lbnVbXSB7XHJcbiAgICAgICAgdmFyIGl0ZW1zOiBBcHBsaWNhdGlvbk1lbnVbXSA9IFtdO1xyXG5cclxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMubWVudUl0ZW1zUmF3Lmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgIGxldCB0ID0gdGhpcy5tZW51SXRlbXNSYXdbaV07XHJcbiAgICAgICAgICAgICg8YW55PnQpLmxldmVsID0gMTtcclxuICAgICAgICAgICAgaWYgKCF0LmFjIHx8IHRoaXMuYWFjLmhhcyh0LmFjKSkge1xyXG4gICAgICAgICAgICAgICAgaWYgKCF0LnN1Yk1lbnUgfHwgdC5zdWJNZW51Lmxlbmd0aCA9PSAwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdC5pY29uID0gdC5pY29uID8/IFwiZmFyIGZhLWNpcmNsZS1zbWFsbFwiO1xyXG4gICAgICAgICAgICAgICAgICAgIGl0ZW1zLnB1c2godCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICB2YXIgdG9QdXNoID0gdGhpcy5jaGVja1N1Yk1lbnVPdmVyQ2xhaW1zKHQsIDEpO1xyXG4gICAgICAgICAgICAgICAgICAgIHRvUHVzaC5pY29uID0gdG9QdXNoLmljb24gPz8gXCJmYXIgZmEtY2lyY2xlLXNtYWxsXCI7XHJcbiAgICAgICAgICAgICAgICAgICAgaXRlbXMucHVzaCh0b1B1c2gpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4gaXRlbXM7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBjaGVja1N1Yk1lbnVPdmVyQ2xhaW1zKG1lbnVJdGVtOiBBcHBsaWNhdGlvbk1lbnUsIGxldmVsOiBudW1iZXIpOiBBcHBsaWNhdGlvbk1lbnUge1xyXG4gICAgICAgIHZhciBpdGVtOiBBcHBsaWNhdGlvbk1lbnUgPSB0aGlzLnV0aUV4dHMuZGVlcENsb25lKG1lbnVJdGVtKTtcclxuICAgICAgICBpdGVtLnN1Yk1lbnUgPSBbXTtcclxuXHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBtZW51SXRlbS5zdWJNZW51Lmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgIGxldCB0ID0gbWVudUl0ZW0uc3ViTWVudVtpXTtcclxuICAgICAgICAgICAgKDxhbnk+dCkubGV2ZWwgPSBsZXZlbCsxO1xyXG4gICAgICAgICAgICBpZiAoIXQuYWMgfHwgdGhpcy5hYWMuaGFzKHQuYWMpKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoIXQuc3ViTWVudSB8fCB0LnN1Yk1lbnUubGVuZ3RoID09IDApIHtcclxuICAgICAgICAgICAgICAgICAgICB0Lmljb24gPSB0Lmljb24gPz8gXCJmYXIgZmEtY2lyY2xlLXNtYWxsXCI7XHJcbiAgICAgICAgICAgICAgICAgICAgaXRlbS5zdWJNZW51LnB1c2godCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICB2YXIgdG9QdXNoID0gdGhpcy5jaGVja1N1Yk1lbnVPdmVyQ2xhaW1zKHQsIGxldmVsKzEpO1xyXG4gICAgICAgICAgICAgICAgICAgIHRvUHVzaC5pY29uID0gdG9QdXNoLmljb24gPz8gXCJmYXIgZmEtY2lyY2xlLXNtYWxsXCI7XHJcbiAgICAgICAgICAgICAgICAgICAgaXRlbS5zdWJNZW51LnB1c2godG9QdXNoKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAvLyBDYWxjb2xvIHF1aSBwZXIgbm9uIGRvdmVybG8gY2FsY29sYXJlIGxhdG8gSFRNTFxyXG4gICAgICAgICAgICAoPGFueT50KS5wYWRkaW5nX2xlZnQgPSBsZXZlbCA+IDIgPyAoNjUgKyAoKGxldmVsIC0gMykgKiAxNSkgKyAncHggIWltcG9ydGFudCcpIDogbnVsbDtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiBpdGVtO1xyXG4gICAgfVxyXG4gICAgXHJcbiAgICAvLyNyZWdpb24gSlF1ZXJ5XHJcbiAgICBASG9zdExpc3RlbmVyKFwid2luZG93OnJlc2l6ZS5vdXQtem9uZVwiKVxyXG4gICAgcHVibGljIG9uV2luZG93UmVzaXplKCk6IHZvaWQge1xyXG4gICAgICAgIHZhciBpc01lbnVTaG91bGRDb2xsYXBzZWQgPSB0aGlzLl9zaG91bGRNZW51Q29sbGFwc2UoKTtcclxuXHJcbiAgICAgICAgaWYgKHRoaXMuaXNNZW51U2hvdWxkQ29sbGFwc2VkICE9PSBpc01lbnVTaG91bGRDb2xsYXBzZWQpIHtcclxuICAgICAgICAgICAgdGhpcy5tZW51Q29sbGFwc2VTdGF0ZUNoYW5nZShpc01lbnVTaG91bGRDb2xsYXBzZWQpO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmlzTWVudVNob3VsZENvbGxhcHNlZCA9IGlzTWVudVNob3VsZENvbGxhcHNlZDtcclxuICAgICAgICB0aGlzLnVwZGF0ZVNpZGViYXJIZWlnaHQoKTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIF9zaG91bGRNZW51Q29sbGFwc2UoKTogYm9vbGVhbiB7XHJcbiAgICAgICAgcmV0dXJuIHdpbmRvdy5pbm5lcldpZHRoIDw9IDc2ODtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgbWVudUNvbGxhcHNlKCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMubWVudUNvbGxhcHNlU3RhdGVDaGFuZ2UodHJ1ZSk7XHJcbiAgICAgICAgdGhpcy5fc3RhdGUuc2V0U2lkZWJhcldpZHRoKHRoaXMuc2lkZWJhci5uYXRpdmVFbGVtZW50Lm9mZnNldFdpZHRoKTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgbWVudUNvbGxhcHNlU3RhdGVDaGFuZ2UoaXNDb2xsYXBzZWQ6IGJvb2xlYW4pOiB2b2lkIHtcclxuICAgICAgICB0aGlzLmlzTWVudUNvbGxhcHNlZCA9IGlzQ29sbGFwc2VkO1xyXG4gICAgICAgIHRoaXMuX3N0YXRlLm5vdGlmeURhdGFDaGFuZ2VkKFwibWVudS5pc0NvbGxhcHNlZFwiLCB0aGlzLmlzTWVudUNvbGxhcHNlZCk7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIG1lbnVFeHBhbmQoKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5tZW51Q29sbGFwc2VTdGF0ZUNoYW5nZShmYWxzZSk7XHJcbiAgICAgICAgdGhpcy5fc3RhdGUuc2V0U2lkZWJhcldpZHRoKHRoaXMuc2lkZWJhci5uYXRpdmVFbGVtZW50Lm9mZnNldFdpZHRoKTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgaG92ZXJJdGVtKGpRdWVyeWV2ZW50KTogdm9pZCB7XHJcbiAgICAgICAgaWYoIXRoaXMuaXNNZW51Q29sbGFwc2VkKSB7XHJcbiAgICAgICAgICAgIHRoaXMuc2hvd0hvdmVyRWxlbSA9IHRydWU7XHJcbiAgICAgICAgICAgIHRoaXMuaG92ZXJFbGVtSGVpZ2h0ID0galF1ZXJ5ZXZlbnQuY3VycmVudFRhcmdldC5jbGllbnRIZWlnaHQ7XHJcbiAgICAgICAgICAgIHRoaXMuaG92ZXJFbGVtVG9wID0galF1ZXJ5ZXZlbnQuY3VycmVudFRhcmdldC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS50b3A7XHJcbiAgICBcclxuICAgICAgICAgICAgalF1ZXJ5KFwiLnNpZGViYXItaG92ZXItZWxlbVwiKS5jc3MoXCJ0b3BcIiwgdGhpcy5ob3ZlckVsZW1Ub3AgKyBcInB4XCIpO1xyXG4gICAgICAgICAgICBqUXVlcnkoXCIuc2lkZWJhci1ob3Zlci1lbGVtXCIpLmNzcyhcImhlaWdodFwiLCB0aGlzLmhvdmVyRWxlbUhlaWdodCArIFwicHhcIik7XHJcbiAgICAgICAgICAgIGpRdWVyeShcIi5zaWRlYmFyLWhvdmVyLWVsZW1cIikuYWRkQ2xhc3MoXCJzaG93LWhvdmVyLWVsZW1cIik7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBzZW5kQXdheUhvdmVyRWxlbWVudCgpIHtcclxuICAgICAgICB0aGlzLmhvdmVyRWxlbVRvcCA9IC0yMDA7XHJcblxyXG4gICAgICAgIGpRdWVyeShcIi5zaWRlYmFyLWhvdmVyLWVsZW1cIikuY3NzKFwidG9wXCIsIHRoaXMuaG92ZXJFbGVtVG9wICsgXCJweFwiKTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgdXBkYXRlU2lkZWJhckhlaWdodCgpOiB2b2lkIHtcclxuICAgICAgICBsZXQgbWFyZ2luVG9wID0gNjAgKyA0MDtcclxuICAgICAgICBsZXQgZm9vdGVySGVpZ2h0ID0gMTUwO1xyXG5cclxuICAgICAgICB0aGlzLm1lbnVIZWlnaHQgPSB0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuY2hpbGRyZW5bMF0uY2xpZW50SGVpZ2h0IC0gbWFyZ2luVG9wIC0gZm9vdGVySGVpZ2h0O1xyXG4gICAgfVxyXG5cclxuICAgIC8vTm9ub3N0YW50ZSBxdWVzdGEgZnVuemlvbmUgc2lhIGNvbGxlZ2F0YSBjb24gKGNsaWNrLm91dC16b25lKSBwZXIgcXVhbGNoZSBtb3Rpdm8gYW5ndWxhciBsZSBlc2VndWUgY29tdW5xdWUgbmVsbGEgc3VhIHpvbmVcclxuICAgIC8vZ2VuZXJhbmRvIHVuIHBvJyBkaSBpcnJlc3BvbnNpdml0w6AgaW5pemlhbGUuLi4gc3VjY2VkZSBzb2xvIGNvbCBjbGljay4uLiBib2hcclxuICAgIHB1YmxpYyBjb2xsYXBzZU1lbnUoalF1ZXJ5ZXZlbnQsIGl0ZW0pOiBib29sZWFuIHtcclxuICAgICAgICBpZiAodGhpcy5pc01lbnVDb2xsYXBzZWQpXHJcbiAgICAgICAgICAgIHRoaXMubWVudUV4cGFuZCgpO1xyXG5cclxuICAgICAgICBpZiAoIWl0ZW0ubGV2ZWwpXHJcbiAgICAgICAgICAgIGNvbnNvbGUud2FybihcIkxpdmVsbG8gbm9uIHByZXNlbnRlIGluIHVuIG9nZ2V0dG8gZGVsIG1lbnUhXCIpO1xyXG5cclxuICAgICAgICAvL04uQjogVHV0dGUgbGUgZnVuemlvbmkgZGkgSlF1ZXJ5IGxlIGVzZ3VvIGZ1b3JpIGRhIEFuZ3VsYXIgZGF0byBjaGUgYyfvv70gdW5hIGJ1b25hIHByb2JhYmlsaXTvv70gY2hlIHNpYW5vIGV2ZW50aSBhc2luY3JvbmlcclxuICAgICAgICB0aGlzLnpvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT4geyB0aGlzLm91dHNpZGVBbmd1bGFyQ2xpY2tIYW5kbGVyKGpRdWVyeWV2ZW50LCBpdGVtKTsgfSk7XHJcblxyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIG91dHNpZGVBbmd1bGFyQ2xpY2tIYW5kbGVyKGpRdWVyeWV2ZW50LCBpdGVtKSB7XHJcbiAgICAgICAgbGV0IGxldmVsQ2xhc3MgPSBpdGVtLmxldmVsID8gXCJsZXZlbC1cIiArIChpdGVtLmxldmVsKSA6IFwiXCI7XHJcbiAgICAgICAgbGV0IGxldmVsQ2xhc3NQbHVzT25lID0gaXRlbS5sZXZlbCA/IFwibGV2ZWwtXCIgKyAoaXRlbS5sZXZlbCArIDEpIDogXCJcIjtcclxuICAgICAgICBsZXQgc2xpZGVQZXJpb2QgPSA0MDA7XHJcblxyXG4gICAgICAgIHZhciBsaW5rID0galF1ZXJ5KGpRdWVyeWV2ZW50LmN1cnJlbnRUYXJnZXQpO1xyXG5cclxuICAgICAgICAvL1NlIGwnZWxlbWVudG8gbm9uIMOoIGVzcGFuc29cclxuICAgICAgICBpZiAoIWxpbmsuY2xvc2VzdChcIi5zaWRlYmFyLWl0ZW0tZXhwYW5kZWRcIiArIFwiX1wiICsgbGV2ZWxDbGFzcykubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgIC8vVGlybyBzdSB0dXR0aSBnbGkgZWxlbWVudGkgZGVsbG8gc3Rlc3NvIGxpdmVsbG8gZXNwYW5zaSBlIGxpIGNoaXVkb1xyXG5cclxuICAgICAgICAgICAgLy9TZSBobyBjb21wcmVzc28gdW4gbWVudSB2YWRvIGEgdmVkZXJlIHNlIGMnw6ggYW5jaGUgdW4gYWx0cm8gbWVudSBkaSBsaXZlbGxvIHBp77+9IGJhc3NvIGRhIHJpY2hpdWRlcmVcclxuICAgICAgICAgICAgalF1ZXJ5KFwidWwubmF2LXNpZGViYXIgbGlcIiArIFwiLlwiICsgKGxldmVsQ2xhc3NQbHVzT25lKSkuZWFjaChmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICAgICAgICBsZXQgY2xvc2VzdExpID0galF1ZXJ5KHRoaXMpLmNsb3Nlc3QoXCJsaVwiKTtcclxuICAgICAgICAgICAgICAgIGlmIChjbG9zZXN0TGkuY2hpbGRyZW4oXCJ1bFwiKS5sZW5ndGggJiYgY2xvc2VzdExpLmhhc0NsYXNzKFwic2lkZWJhci1pdGVtLWV4cGFuZGVkXCIpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY2xvc2VzdExpLmNoaWxkcmVuKFwidWxcIikuc2xpZGVVcChzbGlkZVBlcmlvZCk7XHJcbiAgICAgICAgICAgICAgICAgICAgLy9MZSB1c28gc2VtcHJlIGVudHJhbWJlIGluc2llbWUuIExhIHByaW1hIMOoIGxhIGNsYXNzZSBwZXIgbGEgbG9naWNhLCBsYSBzZWNvbmRhIHBlciBsZSBhbmltYXppb25pXHJcbiAgICAgICAgICAgICAgICAgICAgY2xvc2VzdExpLnJlbW92ZUNsYXNzKFwic2lkZWJhci1pdGVtLWV4cGFuZGVkXCIgKyBcIl9cIiArIChsZXZlbENsYXNzUGx1c09uZSkpO1xyXG4gICAgICAgICAgICAgICAgICAgIGNsb3Nlc3RMaS5yZW1vdmVDbGFzcyhcInNpZGViYXItaXRlbS1leHBhbmRlZFwiKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSk7XHJcblxyXG4gICAgICAgICAgICAvL0RvcG9kaWNo77+9IHJpY2hpdWRvIHR1dHRpIHF1ZWxsaSBkZWwgbWlvIGxpdmVsbG8gYXR0dWFsZVxyXG4gICAgICAgICAgICBqUXVlcnkoXCJ1bC5uYXYtc2lkZWJhciBsaVwiICsgXCIuXCIgKyBsZXZlbENsYXNzKS5lYWNoKGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgICAgICAgIGxldCBjbG9zZXN0TGkgPSBqUXVlcnkodGhpcykuY2xvc2VzdChcImxpXCIpO1xyXG4gICAgICAgICAgICAgICAgaWYgKGNsb3Nlc3RMaS5jaGlsZHJlbihcInVsXCIpLmxlbmd0aCAmJiBjbG9zZXN0TGkuaGFzQ2xhc3MoXCJzaWRlYmFyLWl0ZW0tZXhwYW5kZWRcIikpIHtcclxuICAgICAgICAgICAgICAgICAgICBjbG9zZXN0TGkuY2hpbGRyZW4oXCJ1bFwiKS5zbGlkZVVwKHNsaWRlUGVyaW9kKTtcclxuICAgICAgICAgICAgICAgICAgICAvL0xlIHVzbyBzZW1wcmUgZW50cmFtYmUgaW5zaWVtZS4gTGEgcHJpbWEgw6ggbGEgY2xhc3NlIHBlciBsYSBsb2dpY2EsIGxhIHNlY29uZGEgcGVyIGxlIGFuaW1hemlvbmlcclxuICAgICAgICAgICAgICAgICAgICBjbG9zZXN0TGkucmVtb3ZlQ2xhc3MoXCJzaWRlYmFyLWl0ZW0tZXhwYW5kZWRcIiArIFwiX1wiICsgbGV2ZWxDbGFzcyk7XHJcbiAgICAgICAgICAgICAgICAgICAgY2xvc2VzdExpLnJlbW92ZUNsYXNzKFwic2lkZWJhci1pdGVtLWV4cGFuZGVkXCIpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgICAgIC8vRG9wb2RpY2jvv70gZXNwYW5kbyBxdWVsbG8gYXR0dWFsZVxyXG4gICAgICAgICAgICBsaW5rLm5leHQoKS5zbGlkZURvd24oc2xpZGVQZXJpb2QpO1xyXG5cclxuICAgICAgICAgICAgaWYgKGl0ZW0uc3ViTWVudSkge1xyXG4gICAgICAgICAgICAgICAgLy9MZSB1c28gc2VtcHJlIGVudHJhbWJlIGluc2llbWUuIExhIHByaW1hIMOoIGxhIGNsYXNzZSBwZXIgbGEgbG9naWNhLCBsYSBzZWNvbmRhIHBlciBsZSBhbmltYXppb25pXHJcbiAgICAgICAgICAgICAgICBsaW5rLmNsb3Nlc3QoXCJsaVwiKS5hZGRDbGFzcyhcInNpZGViYXItaXRlbS1leHBhbmRlZFwiICsgXCJfXCIgKyBsZXZlbENsYXNzKTtcclxuICAgICAgICAgICAgICAgIGxpbmsuY2xvc2VzdChcImxpXCIpLmFkZENsYXNzKFwic2lkZWJhci1pdGVtLWV4cGFuZGVkXCIpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgLy9BbHRyaW1lbnRpLCBzZSBsJ2VsZW1lbnRvIMOoIGdpw6AgZXNwYW5zbyBsbyBjaGl1ZG9cclxuICAgICAgICAgICAgaWYgKGl0ZW0uc3ViTWVudSkge1xyXG4gICAgICAgICAgICAgICAgLy9MZSB1c28gc2VtcHJlIGVudHJhbWJlIGluc2llbWUuIExhIHByaW1hIMOoIGxhIGNsYXNzZSBwZXIgbGEgbG9naWNhLCBsYSBzZWNvbmRhIHBlciBsZSBhbmltYXppb25pXHJcbiAgICAgICAgICAgICAgICBsaW5rLmNsb3Nlc3QoXCJsaVwiKS5yZW1vdmVDbGFzcyhcInNpZGViYXItaXRlbS1leHBhbmRlZFwiICsgXCJfXCIgKyBsZXZlbENsYXNzKTtcclxuICAgICAgICAgICAgICAgIGxpbmsuY2xvc2VzdChcImxpXCIpLnJlbW92ZUNsYXNzKFwic2lkZWJhci1pdGVtLWV4cGFuZGVkXCIpO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBsaW5rLm5leHQoKS5zbGlkZVVwKHNsaWRlUGVyaW9kKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICAvLyNlbmRyZWdpb25cclxuXHJcbiAgICBwdWJsaWMgb25DaGFuZ2VUZW5hbnQoKSB7XHJcbiAgICAgICAgd2luZG93LmxvY2F0aW9uLmhyZWYgPSBgJHtteWNvbmZpZy5BdXRoVXJsfS9sb2dpbi90ZW5hbnQ/Y2xpZW50PSR7bXljb25maWcuQ2xpZW50fWA7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIG9uTG9nb3V0KCkge1xyXG4gICAgICAgIHdpbmRvdy5sb2NhdGlvbi5ocmVmID0gYCR7bXljb25maWcuQXV0aFVybH0vbG9nb3V0P2NsaWVudD0ke215Y29uZmlnLkNsaWVudH1gO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIFRPRE86IFNhbHZhcmUgZGVudHJvIHVuYSBzZXJ2aWNlIHByZWZlcmVuemUgYWNjb3VudFxyXG4gICAgcHVibGljIHNhZmVwcm9maWxlcGljOiBTYWZlUmVzb3VyY2VVcmwgPSBudWxsO1xyXG5cclxuICAgIHByaXZhdGUgZ2V0VXNlclByb2ZpbGVEYXRhKCkge1xyXG4gICAgICAgIHZhciBpZGVudGl0eSA9IHRoaXMuc3IuZ2V0SmFjZUlkZW50aXR5KCk7XHJcblxyXG4gICAgICAgIGlmIChpZGVudGl0eSkge1xyXG4gICAgICAgICAgICB0aGlzLnVzZXIgPSBpZGVudGl0eS5GdWxsTmFtZTtcclxuICAgICAgICAgICAgdGhpcy50ZW5hbnQgPSBpZGVudGl0eS5UZW5hbnROYW1lO1xyXG5cclxuICAgICAgICAgICAgLy8gVE9ETzogTWV0dGVyZSBsb2dpY2EgZGVudHJvIHVuYSBzZXJ2aWNlIHByZWZlcmVuemUgYWNjb3VudFxyXG4gICAgICAgICAgICB0aGlzLmh0dHBzLmdldDxQcm9maWxlUGljdHVyZT4oR0VUX1VzZXJzX0dldFByb2ZpbGVQaWN0dXJlLCBuZXcgSHR0cFBhcmFtcygpLnNldCgnaWQnLCBpZGVudGl0eS5JZEFjY291bnQudG9TdHJpbmcoKSkpLnN1YnNjcmliZSh0ID0+IHtcclxuICAgICAgICAgICAgICAgIC8vdGhpcy5fc3RhdGUuc2V0U2FuaXRpemVyUGljUHJvZmlsZSh0LmltYWdlKTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIEdlc3Rpb25lIFJpY2VyY2EgR2xvYmFsZSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxyXG5cclxuICAgIHB1YmxpYyBTZWxlY3RlZFJlc3VsdDogU2VhcmNoUmVzdWx0ID0gbnVsbDtcclxuICAgIHB1YmxpYyBTaG93U2luZ2xlVGFibGU6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgICBzZWFyY2hUZXJtOiBzdHJpbmc7XHJcbiAgICBzZWFyY2hpbmdUZXJtOiBib29sZWFuID0gZmFsc2U7XHJcbiAgICBzZWFyY2hSZXN1bHQ6IFNlYXJjaFJlc3VsdENvbnRhaW5lcjtcclxuXHJcbiAgICBvblNlYXJjaFJlcXVlc3QoKSB7XHJcbiAgICAgICAgY29uc29sZS5sb2coXCJzZW50IVwiKVxyXG4gICAgICAgIHRoaXMuc2VhcmNoaW5nVGVybSA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5zZWFyY2hSZXN1bHQgPSBudWxsO1xyXG5cclxuICAgICAgICBpZiAoIXRoaXMuZ2xvYmFsU2VhcmNoU2VydmljZS5FbmFibGVkKVxyXG4gICAgICAgICAgICByZXR1cm47XHJcblxyXG4gICAgICAgIHRoaXMuZ2xvYmFsU2VhcmNoU2VydmljZS5zZWFyY2godGhpcy5zZWFyY2hUZXJtKS5zdWJzY3JpYmUodCA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuc2VhcmNoaW5nVGVybSA9IGZhbHNlO1xyXG4gICAgICAgICAgICB0aGlzLnNlYXJjaFJlc3VsdCA9IHQ7XHJcblxyXG4gICAgICAgICAgICB0aGlzLnNlYXJjaFJlc3VsdC5yZXN1bHRzLmZvckVhY2godCA9PiB7XHJcbiAgICAgICAgICAgICAgICB0LmVzdF9jb2xzID0gdC5jb2x1bW5zLm1hcChjID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBsZXQgY29sTGluayA9IHRoaXMuZ2xvYmFsU2VhcmNoU2VydmljZS5nZW5lcmF0ZUNvbHVtbkxpbmsoYyk7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBFc1RhYmxlQ29sdW1uc0RlZmluaXRpb24oYy5kZXNjcmlwdGlvbiwgYy5pZCwgY29sTGluaz8ucm91dGVQYXRoLCBjb2xMaW5rPy5yb3V0ZVByb3BlcnRpZXMpO1xyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIG9uU2VhcmNoTW9kZWxDaGFuZ2VkKCkge1xyXG4gICAgICAgIGNvbnNvbGUubG9nKFwiY2hhbmdlZCFcIilcclxuICAgICAgICBpZiAoIXRoaXMuc2VhcmNoaW5nVGVybSlcclxuICAgICAgICAgICAgdGhpcy5jbG9zZVNlYXJjaCgpO1xyXG4gICAgfVxyXG5cclxuICAgIGNsb3NlU2VhcmNoKCkge1xyXG4gICAgICAgIHRoaXMuc2VhcmNoaW5nVGVybSA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuc2VhcmNoUmVzdWx0ID0gbnVsbDtcclxuICAgIH1cclxuXHJcbiAgICBGaWx0ZXJTZWFyY2hSZXN1bHRzKGl0ZW06IFNlYXJjaFJlc3VsdCA9IG51bGwpIHtcclxuICAgICAgICB0aGlzLlNlbGVjdGVkUmVzdWx0ID0gbnVsbDtcclxuICAgICAgICB0aGlzLlNob3dTaW5nbGVUYWJsZSA9IHRydWU7XHJcblxyXG4gICAgICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZSgoKSA9PiB7XHJcbiAgICAgICAgICAgIGlmIChpdGVtKVxyXG4gICAgICAgICAgICAgICAgdGhpcy5TZWxlY3RlZFJlc3VsdCA9IHRoaXMuc2VhcmNoUmVzdWx0Py5yZXN1bHRzPy5maW5kKGYgPT4gZi5kZXNjcmlwdGlvbiA9PSBpdGVtLmRlc2NyaXB0aW9uKTtcclxuICAgICAgICAgICAgZWxzZVxyXG4gICAgICAgICAgICAgICAgdGhpcy5TaG93U2luZ2xlVGFibGUgPSBmYWxzZTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxufVxyXG5cclxuLy8gVE9ETzogU3Bvc3RhcmUgbmVsIG1vZHVsbyBwcmVmZXJlbnplIGFjY291bnRcclxuZXhwb3J0IGNsYXNzIFByb2ZpbGVQaWN0dXJle1xyXG4gICAgaW1hZ2U6IHN0cmluZztcclxufSIsIjxkaXYgI3NpZGViYXIgY2xhc3M9XCJhcHAtc2lkZWJhclwiIFtjbGFzcy5tZW51LWNvbGxhcHNlZF09XCJpc01lbnVDb2xsYXBzZWRcIiAobW91c2VsZWF2ZS5vdXQtem9uZSk9XCJzZW5kQXdheUhvdmVyRWxlbWVudCgpO1wiPlxyXG4gICAgPCEtLUphY2UgTG9nby0tPlxyXG4gICAgPGRpdiBjbGFzcz1cImFwcC1sb2dvLWNvbnRhaW5lclwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJhcHAtcG9pbnRlclwiIFtyb3V0ZXJMaW5rXT1cIlsnL3BhZ2VzL2Rhc2hib2FyZCddXCIgc3R5bGU9XCJtYXJnaW4tYm90dG9tOiAxMHB4OyBvdmVyZmxvdzogaGlkZGVuXCI+XHJcbiAgICAgICAgICAgIDwhLS0gPGRpdiAqbmdJZj1cIiFpc01lbnVDb2xsYXBzZWRcIiBjbGFzcz1cImFwcC1sb2dvLWltZyBhcHAtbG9nby1wbGFjZWhvbGRlciBkLWZsZXhcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhcHAtbWFyZ2luLWxlZnQtMTBcIj5cclxuICAgICAgICAgICAgICAgICAgICA8aSBzdHlsZT1cImNvbG9yOiAjMDBhZWVmO1wiIGNsYXNzPVwiZmFzIGZhLWNoZXZyb24tbGVmdFwiPjwvaT4mbmJzcDtcclxuICAgICAgICAgICAgICAgICAgICA8aSBzdHlsZT1cImNvbG9yOiAjMDFDMzhEO1wiIGNsYXNzPVwiZmFzIGZhLWNoZXZyb24tcmlnaHRcIj48L2k+Jm5ic3A7Jm5ic3A7XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhcHAtbWFyZ2luLWxlZnQtMTBcIj57e2FwcGxpY2F0aW9uTmFtZX19PC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PiAtLT5cclxuICAgICAgICAgICAgPGltZyAqbmdJZj1cIiFpc01lbnVDb2xsYXBzZWRcIiBjbGFzcz1cImFwcC1sb2dvLWltZ1wiIHNyYz1cImFzc2V0cy9pbWcvbG9nby9sb2dvLnBuZ1wiIGFsdD1cIlwiPlxyXG4gICAgICAgICAgICA8aW1nICpuZ0lmPVwiaXNNZW51Q29sbGFwc2VkXCIgY2xhc3M9XCJhcHAtbG9nby1pbWctc21cIiBzcmM9XCJhc3NldHMvaW1nL2xvZ28vbG9nb19zbS5wbmdcIiBhbHQ9XCJcIj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiAqbmdJZj1cIiFpc01lbnVDb2xsYXBzZWRcIiBjbGFzcz1cImFwcC1zaWRlYmFyLXNlYXJjaFwiPlxyXG4gICAgICAgIDxmb3JtIG5vdmFsaWRhdGUgcm9sZT1cInNlYXJjaFwiIGNsYXNzPVwiYXBwLXNlYXJjaFwiIChuZ1N1Ym1pdCk9XCJvblNlYXJjaFJlcXVlc3QoKVwiPlxyXG4gICAgICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiBwbGFjZWhvbGRlcj1cIlJpY2VyY2EuLi5cIiBbKG5nTW9kZWwpXT1cInNlYXJjaFRlcm1cIiAobmdNb2RlbENoYW5nZSk9XCJvblNlYXJjaE1vZGVsQ2hhbmdlZCgpXCIgbmFtZT1cInNlYXJjaFwiIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgYXV0b2NvbXBsZXRlPVwib2ZmXCI+XHJcbiAgICAgICAgICAgIDxhPjxpIGNsYXNzPVwiZmFyIGZhLW1hZ25pZnlpbmctZ2xhc3NcIj48L2k+PC9hPlxyXG4gICAgICAgIDwvZm9ybT5cclxuICAgIDwvZGl2PlxyXG4gICAgPCEtLUJhcnJhIGxhdGVyYWxlIGNvbiB0dXR0ZSBsZSB2b2NpIGRpIE1lbnUtLT5cclxuICAgIDx1bCBjbGFzcz1cIm5hdiBuYXYtc2lkZWJhciBmbGV4LWNvbHVtbiBmbGV4LW5vd3JhcFwiIHN0eWxlPVwicG9zaXRpb246IHJlbGF0aXZlOyB6b29tOiAxXCIgc2xpbS1zY3JvbGwgW3NsaW1TY3JvbGxPcHRpb25zXT1cIntoZWlnaHQ6IG1lbnVIZWlnaHR9XCI+XHJcbiAgICAgICAgPGxpICpuZ0Zvcj1cImxldCBpdGVtIG9mIG1lbnVJdGVtczsgbGV0IGxhc3QgPSBsYXN0O1wiIFxyXG4gICAgICAgICAgICBjbGFzcz1cInNpZGViYXItbGlzdC1pdGVtIGxldmVsLXt7aXRlbS5sZXZlbH19XCIgXHJcbiAgICAgICAgICAgIFtzdHlsZS5tYXJnaW4tYm90dG9tXT1cImxhc3QgPyAnNDJweCcgOiAnMHB4J1wiIFxyXG4gICAgICAgICAgICBbY2xhc3MuaGFzLXN1Yi1tZW51XT1cIml0ZW0uc3ViTWVudVwiXHJcbiAgICAgICAgICAgIFtjbGFzcy5zaWRlYmFyLWl0ZW0tZXhwYW5kZWRdPVwiaXRlbS5leHBhbmRlZFwiIFxyXG4gICAgICAgICAgICBbY2xhc3Muc2lkZWJhci1pdGVtLXdpcF09XCJpdGVtLndpcFwiPlxyXG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwibWVudUl0ZW07IGNvbnRleHQgOiB7ICRpbXBsaWNpdDogaXRlbSB9XCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgPC9saT5cclxuICAgIDwvdWw+XHJcbiAgICA8IS0tU2VsZXR0b3JlIEJhcnJhIGRlaSBNZW51LS0+XHJcbiAgICA8ZGl2IGNsYXNzPVwic2lkZWJhci1ob3Zlci1lbGVtXCI+PC9kaXY+XHJcbiAgICA8IS0tRm9vdGVyLS0+XHJcbiAgICA8ZGl2ICpuZ0lmPVwiIWlzTWVudUNvbGxhcHNlZFwiIGNsYXNzPVwiYXBwLXNpZGViYXItZm9vdGVyXCI+XHJcbiAgICAgICAgPCEtLU1pbnVzY29sbyBmYWRlIHRyYSBzaWRlYmFyIGUgaW5pemlvIGZvb3Rlci0tPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJhcHAtc2lkZWJhci1mb290ZXItZmFkZVwiPjwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJhcHAtcGFkZGluZy0xNVwiPlxyXG4gICAgICAgICAgICA8IS0tSW5mb3JtYXppb25pIHV0ZW50ZSBjb2xsZWdhdG8tLT5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFwcC1zaWRlYmFyLWZvb3Rlci11c2VyLWNvbnRhaW5lclwiPlxyXG4gICAgICAgICAgICAgICAgPCEtLU1lbnRyZSBzdG8gYW5jb3JhIGNhcmljYW5kbyBsYSBQcm9maWxlUGljIG1pIGFzc2ljdXJvIGRpIG1vc3RyYXJlIHVuIHBsYWNlaG9sZGVyLS0+XHJcbiAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiIXNhZmVwcm9maWxlcGljXCIgY2xhc3M9XCJhcHAtc2lkZWJhci1mb290ZXItdXNlci1pbWctcGxhY2Vob2xkZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhciBmYS0yeCBmYS1zcGlubmVyIGZhLXNwaW4tcHVsc2VcIiBzdHlsZT1cImNvbG9yOiBibGFjazsgbWFyZ2luLXRvcDogNXB4O1wiPjwvaT5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPCEtLVVuYSB2b2x0YSBjYXJpY2F0YSBsYSBQcm9maWxlUGljIG5hc2NvbmRvIGlsIHBsYWNlaG9sZGVyIGUgbGEgbW9zdHJvLS0+XHJcbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic2FmZXByb2ZpbGVwaWNcIj5cclxuICAgICAgICAgICAgICAgICAgICA8aW1nIFtzcmNdPVwic2FmZXByb2ZpbGVwaWNcIiBhbHQ9XCJcIiBjbGFzcz1cImFwcC1zaWRlYmFyLWZvb3Rlci11c2VyLWltZyBhcHAtcG9pbnRlclwiIFtyb3V0ZXJMaW5rXT1cIlsnL3BhZ2VzL3Byb2ZpbGUvdXNlcl9pbmZvJ11cIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXBwLXNpZGViYXItZm9vdGVyLXVzZXItc3RhdHVzXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgIDwhLS1Vc2VybmFtZSBhbmltYXRvIHF1YW5kbyBzdXBlcmEgaSAxNSBjYXJhdHRlcmktLT5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhcHAtc2lkZWJhci1mb290ZXItdXNlci1uYW1lLWNvbnRhaW5lclwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ1c2VybmFtZS10ZXh0XCIgW2NsYXNzLnVzZXJuYW1lLXRleHQtYW5pbWF0b3JdPVwidXNlcj8ubGVuZ3RoID4gMTVcIj57e3VzZXJ9fTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZW5hbnRuYW1lLXRleHRcIj57e3RlbmFudH19PC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwhLS1PcGVyYXppb25pIHJhcGlkZSAoTG9nb3V0LCBDYW1iaWEgdGVuYW50LCBHdWlkYSwgU3VwcG9ydG8sLi4uKS0tPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXBwLXNpZGViYXItZm9vdGVyLXF1aWNrLW9wc1wiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiAoY2xpY2spPVwib25Mb2dvdXQoKTtcIiBjbGFzcz1cImFwcC1zaWRlYmFyLWZvb3Rlci1vcCBhcHAtbm8tc2VsZWN0aW9uXCI+PGkgY2xhc3M9XCJmYXIgZmEtcmlnaHQtZnJvbS1icmFja2V0XCI+PC9pPiZuYnNwO0xvZ291dDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiAoY2xpY2spPVwib25DaGFuZ2VUZW5hbnQoKTtcIiBjbGFzcz1cImFwcC1zaWRlYmFyLWZvb3Rlci1vcCBhcHAtbm8tc2VsZWN0aW9uXCI+PGkgY2xhc3M9XCJmYXIgZmEtcmlnaHQtbGVmdFwiPjwvaT4mbmJzcDtDYW1iaWEgVGVuYW50PC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8IS0tVmVyc2lvbmUgY29ycmVudGUgYXBwbGljYXppb25lLS0+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhcHAtc2lkZWJhci1mb290ZXItdmVyXCI+XHJcbiAgICAgICAgICAgICAgICB2e3thcHBsaWNhdGlvblZlcnNpb259fVxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG48L2Rpdj5cclxuXHJcbjxuZy10ZW1wbGF0ZSAjbWVudUl0ZW0gbGV0LWl0ZW0+XHJcbiAgICA8YSBbYXR0ci5zdHlsZS5wYWRkaW5nX2xlZnRdPVwiaXRlbS5wYWRkaW5nX2xlZnRcIiAqbmdJZj1cIighaXRlbS5yb3V0ZXJMaW5rICYmICFpdGVtLnN1Yk1lbnUpIHx8IGl0ZW0ud2lwXCIgW2hyZWZdPVwiaXRlbS5saW5rID8gaXRlbS5saW5rIDogJyMnXCIgKGNsaWNrKT1cIml0ZW0ud2lwICYmICRldmVudC5wcmV2ZW50RGVmYXVsdCgpXCIgdGFyZ2V0PVwiX2JsYW5rXCIgY2xhc3M9XCJzaWRlYmFyLWxpc3QtbGluayB7e2l0ZW0uY3NzQ2xhc3MgfHwgJyd9fVwiIChtb3VzZWVudGVyLm91dC16b25lKT1cImhvdmVySXRlbSgkZXZlbnQpXCI+XHJcbiAgICAgICAgPGkgKm5nSWY9XCJpdGVtLmljb25cIiBjbGFzcz1cInt7IGl0ZW0uaWNvbiB9fVwiPjwvaT48c3Bhbj57eyBpdGVtLnRpdGxlIHwgbG9jYWxpemUgOiBsYyB9fTwvc3Bhbj5cclxuICAgIDwvYT5cclxuXHJcbiAgICA8YSBbYXR0ci5zdHlsZS5wYWRkaW5nX2xlZnRdPVwiaXRlbS5wYWRkaW5nX2xlZnRcIiAqbmdJZj1cIml0ZW0ucm91dGVyTGluayAmJiAhaXRlbS5zdWJNZW51ICYmICFpdGVtLndpcFwiIGNsYXNzPVwic2lkZWJhci1saXN0LWxpbmsge3tpdGVtLmNzc0NsYXNzIHx8ICcnfX1cIiBbcm91dGVyTGlua109XCJbaXRlbS5yb3V0ZXJMaW5rXVwiIFtxdWVyeVBhcmFtc109XCJpdGVtLnF1ZXJ5UGFyYW1zXCIgcm91dGVyTGlua0FjdGl2ZT1cImFjdGl2ZS1saW5rXCIgKGNsaWNrLm91dC16b25lKT1cImNvbGxhcHNlTWVudSgkZXZlbnQsIGl0ZW0pXCIgKG1vdXNlZW50ZXIub3V0LXpvbmUpPVwiaG92ZXJJdGVtKCRldmVudClcIj5cclxuICAgICAgICA8aSAqbmdJZj1cIml0ZW0uaWNvblwiIGNsYXNzPVwie3sgaXRlbS5pY29uIH19XCI+PC9pPjxzcGFuPnt7IGl0ZW0udGl0bGUgfCBsb2NhbGl6ZSA6IGxjIH19PC9zcGFuPlxyXG4gICAgPC9hPlxyXG5cclxuICAgIDxhIFthdHRyLnN0eWxlLnBhZGRpbmdfbGVmdF09XCJpdGVtLnBhZGRpbmdfbGVmdFwiICpuZ0lmPVwiaXRlbS5zdWJNZW51ICYmICFpdGVtLndpcFwiIChjbGljay5vdXQtem9uZSk9XCJjb2xsYXBzZU1lbnUoJGV2ZW50LCBpdGVtKVwiIFthdHRyLmhyZWZdPVwiJydcIiBjbGFzcz1cInNpZGViYXItbGlzdC1saW5rIHt7aXRlbS5jc3NDbGFzcyB8fCAnJ319XCIgKG1vdXNlZW50ZXIub3V0LXpvbmUpPVwiaG92ZXJJdGVtKCRldmVudClcIj5cclxuICAgICAgICA8aSAqbmdJZj1cIml0ZW0uaWNvblwiIGNsYXNzPVwie3sgaXRlbS5pY29uIH19XCI+PC9pPjxzcGFuPnt7IGl0ZW0udGl0bGUgfCBsb2NhbGl6ZSA6IGxjIH19PC9zcGFuPlxyXG4gICAgICAgIDxiIGNsYXNzPVwiZmFyIGZhLWFuZ2xlLWRvd25cIj48L2I+XHJcbiAgICA8L2E+XHJcblxyXG4gICAgPHVsICpuZ0lmPVwiaXRlbS5zdWJNZW51XCIgY2xhc3M9XCJzaWRlYmFyLXN1Ymxpc3RcIj5cclxuICAgICAgICA8bGkgKm5nRm9yPVwibGV0IHN1Yml0ZW0gb2YgaXRlbS5zdWJNZW51XCIgY2xhc3M9XCJzaWRlYmFyLXN1Ymxpc3QtaXRlbSBsZXZlbC17e3N1Yml0ZW0ubGV2ZWx9fVwiIFtjbGFzcy5zaWRlYmFyLWl0ZW0td2lwXT1cInN1Yml0ZW0ud2lwXCI+XHJcbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJtZW51SXRlbTsgY29udGV4dCA6IHsgJGltcGxpY2l0OiBzdWJpdGVtIH1cIj48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICA8L2xpPlxyXG4gICAgPC91bD5cclxuPC9uZy10ZW1wbGF0ZT5cclxuXHJcbjwhLS0gT3ZlcmxheSBwZXIgbGEgcmljZXJjYSBnbG9iYWxlIC0tPlxyXG48bmctY29udGFpbmVyICpuZ0lmPVwic2VhcmNoaW5nVGVybSB8fCBzZWFyY2hSZXN1bHRcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJhcHAtYWJzb2x1dGUgYXBwLXNlYXJjaC1iYWNrZ3JvdW5kXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImFwcC1zZWFyY2gtcmVzdWx0LWJveFwiPlxyXG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic2VhcmNoaW5nVGVybVwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFwcC1zZWFyY2gtY2FyZFwiPjxpIGNsYXNzPVwiZmEgZmEtc3Bpbm5lciBmYS1zcGluXCI+PC9pPlN0byBlZmZldHR1YW5kbyBsYSByaWNlcmNhLi4uPC9kaXY+XHJcbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic2VhcmNoUmVzdWx0ICYmICFzZWFyY2hpbmdUZXJtXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCIgc3R5bGU9XCJoZWlnaHQ6IDEwMCU7XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPCEtLSBTcGF6aW8gYSBzaW5pc3RyYSAtLT5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTFcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8IS0tIEJsb2NjbyBjb24gbGUgY2F0ZWdvcmllIGRlaSByaXN1bHRhdGkgLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhcHAtc2VhcmNoLWNhcmRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhcHAtcmVsYXRpdmVcIj48YSBjbGFzcz1cImZhIGZhLXRpbWVzIHRleHQtZGFuZ2VyIGFwcC1hYnNvbHV0ZSBhcHAtcmlnaHQtMCBhcHAtZnMtMjAgYXBwLXBvaW50ZXJcIiAoY2xpY2spPVwiY2xvc2VTZWFyY2goKTtcIj48L2E+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDQ+Q2F0ZWdvcmllIGRpIFJpY2VyY2E8L2g0PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFwcC1wb2ludGVyIGFwcC1saW5rXCIgW2NsYXNzLmFwcC1ib2xkXT1cIiFTZWxlY3RlZFJlc3VsdCAmJiAhU2hvd1NpbmdsZVRhYmxlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKGNsaWNrKT1cIkZpbHRlclNlYXJjaFJlc3VsdHMoKVwiPnt7U2VsZWN0ZWRSZXN1bHQgPyAnLScgOiAnPid9fSBNb3N0cmEgVHV0dG88L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IGl0ZW0gb2Ygc2VhcmNoUmVzdWx0LnJlc3VsdHNcIiBjbGFzcz1cImFwcC1wb2ludGVyIGFwcC1saW5rXCIgW2NsYXNzLmFwcC1ib2xkXT1cIlNlbGVjdGVkUmVzdWx0Py5kZXNjcmlwdGlvbiA9PSBpdGVtLmRlc2NyaXB0aW9uXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKGNsaWNrKT1cIkZpbHRlclNlYXJjaFJlc3VsdHMoaXRlbSlcIj57e1NlbGVjdGVkUmVzdWx0Py5kZXNjcmlwdGlvbiA9PSBpdGVtLmRlc2NyaXB0aW9uID8gJz4nIDogJy0nfX0gTW9zdHJhIHt7aXRlbS5kZXNjcmlwdGlvbn19ICh7e2l0ZW0uaXRlbXM/Lmxlbmd0aH19KTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8IS0tIERldHRhZ2xpbyByaXN1bHRhdGkgLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC03XCIgc3R5bGU9XCJvdmVyZmxvdzogYXV0bzsgaGVpZ2h0OiAxMDAlO1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIVNlbGVjdGVkUmVzdWx0ICYmICFTaG93U2luZ2xlVGFibGVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IHJlcyBvZiBzZWFyY2hSZXN1bHQucmVzdWx0czsgbGV0IGkgPSBpbmRleDtcIiBjbGFzcz1cImFwcC1zZWFyY2gtY2FyZFwiIFtzdHlsZS5tYXJnaW4tYm90dG9tLnB4XT1cImkgPT0gKHNlYXJjaFJlc3VsdC5yZXN1bHRzPy5sZW5ndGggLSAxKSA/IDIgOiAxMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoND57e3Jlcy5kZXNjcmlwdGlvbn19PC9oND5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZXMtdGFibGUgWyhuZ01vZGVsKV09XCJyZXMuaXRlbXNcIiBbRHluYW1pY1Jvd0NvbHVtbnNEZWZpbml0aW9uXT1cInJlcy5lc3RfY29sc1wiIFtBcnJheW1vZGVJdGVtc1BlclBhZ2VdPVwiMTBcIj48L2VzLXRhYmxlPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiU2VsZWN0ZWRSZXN1bHQgJiYgU2hvd1NpbmdsZVRhYmxlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXBwLXNlYXJjaC1jYXJkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGg0Pnt7U2VsZWN0ZWRSZXN1bHQuZGVzY3JpcHRpb259fTwvaDQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVzLXRhYmxlIFsobmdNb2RlbCldPVwiU2VsZWN0ZWRSZXN1bHQuaXRlbXNcIiBbRHluYW1pY1Jvd0NvbHVtbnNEZWZpbml0aW9uXT1cIlNlbGVjdGVkUmVzdWx0LmVzdF9jb2xzXCIgW0FycmF5bW9kZUl0ZW1zUGVyUGFnZV09XCIxMFwiPjwvZXMtdGFibGU+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPCEtLSBTcGF6aW8gYSBkZXN0cmEgLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuPC9uZy1jb250YWluZXI+Il19
|
|
@@ -1,19 +1,24 @@
|
|
|
1
|
-
export * from './back-top/back-top.component';
|
|
2
|
-
export * from './breadcrumb/breadcrumb.component';
|
|
3
|
-
export * from './error/404/pagenotfound.component';
|
|
4
|
-
export * from './error/500/servererror.component';
|
|
5
|
-
export * from './error/Angular/angularerror.component';
|
|
6
|
-
export * from './page/pages.component';
|
|
7
|
-
export * from './external-page/external_pages.component';
|
|
8
|
-
export * from './jace-login/jace-login.component';
|
|
9
|
-
export * from './navbar/navbar.component';
|
|
10
|
-
export * from './navbar/modules-board/jace-modules-board.component';
|
|
11
|
-
export * from './redirecter/redirecter.component';
|
|
12
|
-
export * from './sidebar/sidebar.component';
|
|
13
|
-
export * from './base/base.component';
|
|
14
|
-
export * from './base/reactive.component';
|
|
15
|
-
export * from './jace-resource/jace-resource.component';
|
|
1
|
+
export * from './page-structure/back-top/back-top.component';
|
|
2
|
+
export * from './page-structure/breadcrumb/breadcrumb.component';
|
|
3
|
+
export * from './page-structure/error/404/pagenotfound.component';
|
|
4
|
+
export * from './page-structure/error/500/servererror.component';
|
|
5
|
+
export * from './page-structure/error/Angular/angularerror.component';
|
|
6
|
+
export * from './page-structure/page/pages.component';
|
|
7
|
+
export * from './page-structure/external-page/external_pages.component';
|
|
8
|
+
export * from './page-structure/jace-login/jace-login.component';
|
|
9
|
+
export * from './page-structure/navbar/navbar.component';
|
|
10
|
+
export * from './page-structure/navbar/modules-board/jace-modules-board.component';
|
|
11
|
+
export * from './page-structure/redirecter/redirecter.component';
|
|
12
|
+
export * from './page-structure/sidebar/sidebar.component';
|
|
13
|
+
export * from './page-structure/base/base.component';
|
|
14
|
+
export * from './page-structure/base/reactive.component';
|
|
15
|
+
export * from './page-structure/jace-resource/jace-resource.component';
|
|
16
16
|
export * from './components.module';
|
|
17
17
|
export * from "./es-modal/es-modal.component";
|
|
18
18
|
export * from "./es-modal/es-modal-head/es-modal-head.component";
|
|
19
|
-
|
|
19
|
+
export * from './search/filters-topbar/filters-topbar.component';
|
|
20
|
+
export * from './search/filters-sidebar/filters-sidebar.component';
|
|
21
|
+
export * from './search/filters-sidebar-section/filters-sidebar-section.component';
|
|
22
|
+
export * from './search/filters-sidebar-item/filters-sidebar-item.component';
|
|
23
|
+
export * from './search/es-filters/es-filters.component';
|
|
24
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2NvcmUvY29tcG9uZW50cy9zcmMvcHVibGljLWFwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLDhDQUE4QyxDQUFDO0FBQzdELGNBQWMsa0RBQWtELENBQUM7QUFDakUsY0FBYyxtREFBbUQsQ0FBQztBQUNsRSxjQUFjLGtEQUFrRCxDQUFDO0FBQ2pFLGNBQWMsdURBQXVELENBQUM7QUFDdEUsY0FBYyx1Q0FBdUMsQ0FBQztBQUN0RCxjQUFjLHlEQUF5RCxDQUFDO0FBQ3hFLGNBQWMsa0RBQWtELENBQUM7QUFDakUsY0FBYywwQ0FBMEMsQ0FBQztBQUN6RCxjQUFjLG9FQUFvRSxDQUFDO0FBQ25GLGNBQWMsa0RBQWtELENBQUM7QUFDakUsY0FBYyw0Q0FBNEMsQ0FBQztBQUMzRCxjQUFjLHNDQUFzQyxDQUFDO0FBQ3JELGNBQWMsMENBQTBDLENBQUM7QUFDekQsY0FBYyx3REFBd0QsQ0FBQztBQUN2RSxjQUFjLHFCQUFxQixDQUFDO0FBQ3BDLGNBQWMsK0JBQStCLENBQUM7QUFDOUMsY0FBYyxrREFBa0QsQ0FBQztBQUNqRSxjQUFjLGtEQUFrRCxDQUFDO0FBQ2pFLGNBQWMsb0RBQW9ELENBQUM7QUFDbkUsY0FBYyxvRUFBb0UsQ0FBQztBQUNuRixjQUFjLDhEQUE4RCxDQUFDO0FBQzdFLGNBQWMsMENBQTBDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL3BhZ2Utc3RydWN0dXJlL2JhY2stdG9wL2JhY2stdG9wLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vcGFnZS1zdHJ1Y3R1cmUvYnJlYWRjcnVtYi9icmVhZGNydW1iLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vcGFnZS1zdHJ1Y3R1cmUvZXJyb3IvNDA0L3BhZ2Vub3Rmb3VuZC5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL3BhZ2Utc3RydWN0dXJlL2Vycm9yLzUwMC9zZXJ2ZXJlcnJvci5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL3BhZ2Utc3RydWN0dXJlL2Vycm9yL0FuZ3VsYXIvYW5ndWxhcmVycm9yLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vcGFnZS1zdHJ1Y3R1cmUvcGFnZS9wYWdlcy5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL3BhZ2Utc3RydWN0dXJlL2V4dGVybmFsLXBhZ2UvZXh0ZXJuYWxfcGFnZXMuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9wYWdlLXN0cnVjdHVyZS9qYWNlLWxvZ2luL2phY2UtbG9naW4uY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9wYWdlLXN0cnVjdHVyZS9uYXZiYXIvbmF2YmFyLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vcGFnZS1zdHJ1Y3R1cmUvbmF2YmFyL21vZHVsZXMtYm9hcmQvamFjZS1tb2R1bGVzLWJvYXJkLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vcGFnZS1zdHJ1Y3R1cmUvcmVkaXJlY3Rlci9yZWRpcmVjdGVyLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vcGFnZS1zdHJ1Y3R1cmUvc2lkZWJhci9zaWRlYmFyLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vcGFnZS1zdHJ1Y3R1cmUvYmFzZS9iYXNlLmNvbXBvbmVudCc7XHJcbmV4cG9ydCAqIGZyb20gJy4vcGFnZS1zdHJ1Y3R1cmUvYmFzZS9yZWFjdGl2ZS5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL3BhZ2Utc3RydWN0dXJlL2phY2UtcmVzb3VyY2UvamFjZS1yZXNvdXJjZS5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2NvbXBvbmVudHMubW9kdWxlJztcclxuZXhwb3J0ICogZnJvbSBcIi4vZXMtbW9kYWwvZXMtbW9kYWwuY29tcG9uZW50XCI7XHJcbmV4cG9ydCAqIGZyb20gXCIuL2VzLW1vZGFsL2VzLW1vZGFsLWhlYWQvZXMtbW9kYWwtaGVhZC5jb21wb25lbnRcIjtcclxuZXhwb3J0ICogZnJvbSAnLi9zZWFyY2gvZmlsdGVycy10b3BiYXIvZmlsdGVycy10b3BiYXIuY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9zZWFyY2gvZmlsdGVycy1zaWRlYmFyL2ZpbHRlcnMtc2lkZWJhci5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL3NlYXJjaC9maWx0ZXJzLXNpZGViYXItc2VjdGlvbi9maWx0ZXJzLXNpZGViYXItc2VjdGlvbi5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL3NlYXJjaC9maWx0ZXJzLXNpZGViYXItaXRlbS9maWx0ZXJzLXNpZGViYXItaXRlbS5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL3NlYXJjaC9lcy1maWx0ZXJzL2VzLWZpbHRlcnMuY29tcG9uZW50JzsiXX0=
|