@esfaenza/core 15.2.5 → 15.2.6
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/components/base/navigable.component.d.ts +17 -0
- package/components/base/reactive.component.d.ts +9 -0
- package/components/breadcrumb/breadcrumb.component.d.ts +4 -0
- package/components/components.module.d.ts +11 -9
- package/components/jace-resource/jace-resource.component.d.ts +22 -0
- package/components/navbar/navbar.component.d.ts +22 -17
- package/components/public-api.d.ts +3 -0
- package/components/sidebar/sidebar.component.d.ts +13 -8
- package/domain/models/core/ApplicationJob.d.ts +12 -0
- package/domain/models/core/GenericItem.d.ts +10 -0
- package/domain/models/core/KeyValue.d.ts +5 -0
- package/domain/models/global_search/SaerchResultContainer.d.ts +5 -0
- package/domain/models/global_search/SearchResult.d.ts +10 -0
- package/domain/models/jace/{classes/ActiveModuleView.d.ts → ActiveModuleView.d.ts} +0 -5
- package/domain/models/jace/CategoriesWithModules.d.ts +6 -0
- package/domain/models/jace/{classes/JaceAccount.d.ts → JaceAccount.d.ts} +0 -9
- package/domain/models/jace/{classes/JaceIdentity.d.ts → JaceIdentity.d.ts} +1 -3
- package/domain/models/jace/JaceUser.d.ts +9 -0
- package/domain/public-api.d.ts +16 -10
- package/domain/tokens.d.ts +1 -1
- package/esm2020/components/base/navigable.component.mjs +43 -0
- package/esm2020/components/base/reactive.component.mjs +26 -0
- package/esm2020/components/breadcrumb/breadcrumb.component.mjs +34 -29
- package/esm2020/components/components.module.mjs +15 -8
- package/esm2020/components/error/Angular/angularerror.component.mjs +7 -5
- package/esm2020/components/external-page/external_pages.component.mjs +1 -2
- package/esm2020/components/jace-resource/jace-resource.component.mjs +65 -0
- package/esm2020/components/navbar/modules-board/jace-modules-board.component.mjs +1 -1
- package/esm2020/components/navbar/navbar.component.mjs +80 -60
- package/esm2020/components/public-api.mjs +4 -1
- package/esm2020/components/sidebar/sidebar.component.mjs +67 -39
- package/esm2020/domain/models/core/ApplicationJob.mjs +3 -0
- package/esm2020/domain/models/core/ApplicationMenu.mjs +26 -0
- package/esm2020/domain/models/core/EnvOptions.mjs +13 -0
- package/esm2020/domain/models/core/GenericItem.mjs +12 -0
- package/esm2020/domain/models/core/KeyValue.mjs +15 -0
- package/esm2020/domain/models/global_search/SaerchResultContainer.mjs +6 -0
- package/esm2020/domain/models/global_search/SearchResult.mjs +8 -0
- package/esm2020/domain/models/jace/AccountScope.mjs +8 -0
- package/esm2020/domain/models/jace/ActiveModuleView.mjs +3 -0
- package/esm2020/domain/models/jace/CategoriesWithModules.mjs +7 -0
- package/esm2020/domain/models/jace/JaceAccount.mjs +3 -0
- package/esm2020/domain/models/jace/JaceIdentity.mjs +13 -0
- package/esm2020/domain/models/jace/JaceModule.mjs +3 -0
- package/esm2020/domain/models/jace/JacePermission.mjs +3 -0
- package/esm2020/domain/models/jace/JaceRole.mjs +8 -0
- package/esm2020/domain/models/jace/JaceUser.mjs +3 -0
- package/esm2020/domain/public-api.mjs +17 -11
- package/esm2020/domain/tokens.mjs +1 -1
- package/esm2020/lib/app.component.mjs +2 -2
- package/esm2020/lib/core.module.mjs +8 -7
- package/esm2020/pipes/classes/included_in.pipe.mjs +17 -0
- package/esm2020/pipes/{safe_html → classes}/safe_html.pipe.mjs +1 -1
- package/esm2020/pipes/{safe_script → classes}/safe_script.pipe.mjs +1 -1
- package/esm2020/pipes/{safe_style → classes}/safe_style.pipe.mjs +1 -1
- package/esm2020/pipes/classes/safe_url.pipe.mjs +18 -0
- package/esm2020/pipes/pipes.module.mjs +6 -6
- package/esm2020/pipes/public-api.mjs +6 -6
- package/esm2020/services/classes/app.completedjobredirection.mjs +18 -0
- package/esm2020/services/classes/app.globalsearch.mjs +34 -0
- package/esm2020/services/classes/app.menufilter.mjs +21 -0
- package/esm2020/services/classes/app.state.mjs +101 -9
- package/esm2020/services/public-api.mjs +4 -1
- package/fesm2015/esfaenza-core-components.mjs +331 -207
- package/fesm2015/esfaenza-core-components.mjs.map +1 -1
- package/fesm2015/esfaenza-core-domain.mjs +55 -15
- package/fesm2015/esfaenza-core-domain.mjs.map +1 -1
- package/fesm2015/esfaenza-core-pipes.mjs +2 -2
- package/fesm2015/esfaenza-core-pipes.mjs.map +1 -1
- package/fesm2015/esfaenza-core-services.mjs +168 -10
- package/fesm2015/esfaenza-core-services.mjs.map +1 -1
- package/fesm2015/esfaenza-core.mjs +11 -10
- package/fesm2015/esfaenza-core.mjs.map +1 -1
- package/fesm2020/esfaenza-core-components.mjs +323 -201
- package/fesm2020/esfaenza-core-components.mjs.map +1 -1
- package/fesm2020/esfaenza-core-domain.mjs +54 -14
- package/fesm2020/esfaenza-core-domain.mjs.map +1 -1
- package/fesm2020/esfaenza-core-pipes.mjs +2 -2
- package/fesm2020/esfaenza-core-pipes.mjs.map +1 -1
- package/fesm2020/esfaenza-core-services.mjs +167 -10
- package/fesm2020/esfaenza-core-services.mjs.map +1 -1
- package/fesm2020/esfaenza-core.mjs +11 -10
- package/fesm2020/esfaenza-core.mjs.map +1 -1
- package/lib/core.module.d.ts +6 -8
- package/package.json +1 -1
- package/pipes/{safe_url → classes}/safe_url.pipe.d.ts +1 -1
- package/pipes/pipes.module.d.ts +5 -5
- package/pipes/public-api.d.ts +5 -5
- package/services/classes/app.completedjobredirection.d.ts +12 -0
- package/services/classes/app.globalsearch.d.ts +25 -0
- package/services/classes/app.menufilter.d.ts +14 -0
- package/services/classes/app.state.d.ts +10 -17
- package/services/public-api.d.ts +3 -0
- package/theme/initial.scss +0 -8
- package/components/sidebar/sidebar.component.service.d.ts +0 -27
- package/domain/models/jace/classes/User.d.ts +0 -4
- package/esm2020/components/sidebar/sidebar.component.service.mjs +0 -58
- package/esm2020/domain/models/core/classes/ApplicationMenu.mjs +0 -26
- package/esm2020/domain/models/core/classes/EnvOptions.mjs +0 -13
- package/esm2020/domain/models/jace/classes/AccountScope.mjs +0 -8
- package/esm2020/domain/models/jace/classes/ActiveModuleView.mjs +0 -9
- package/esm2020/domain/models/jace/classes/JaceAccount.mjs +0 -5
- package/esm2020/domain/models/jace/classes/JaceIdentity.mjs +0 -16
- package/esm2020/domain/models/jace/classes/JaceModule.mjs +0 -3
- package/esm2020/domain/models/jace/classes/JacePermission.mjs +0 -3
- package/esm2020/domain/models/jace/classes/JaceRole.mjs +0 -8
- package/esm2020/domain/models/jace/classes/User.mjs +0 -3
- package/esm2020/pipes/included_in/included_in.pipe.mjs +0 -17
- package/esm2020/pipes/safe_url/safe_url.pipe.mjs +0 -18
- /package/domain/models/core/{classes/ApplicationMenu.d.ts → ApplicationMenu.d.ts} +0 -0
- /package/domain/models/core/{classes/EnvOptions.d.ts → EnvOptions.d.ts} +0 -0
- /package/domain/models/jace/{classes/AccountScope.d.ts → AccountScope.d.ts} +0 -0
- /package/domain/models/jace/{classes/JaceModule.d.ts → JaceModule.d.ts} +0 -0
- /package/domain/models/jace/{classes/JacePermission.d.ts → JacePermission.d.ts} +0 -0
- /package/domain/models/jace/{classes/JaceRole.d.ts → JaceRole.d.ts} +0 -0
- /package/pipes/{included_in → classes}/included_in.pipe.d.ts +0 -0
- /package/pipes/{safe_html → classes}/safe_html.pipe.d.ts +0 -0
- /package/pipes/{safe_script → classes}/safe_script.pipe.d.ts +0 -0
- /package/pipes/{safe_style → classes}/safe_style.pipe.d.ts +0 -0
|
@@ -1,18 +1,21 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
|
-
import { Component, ViewEncapsulation, Input, ViewChild, HostListener, Injectable, ChangeDetectionStrategy,
|
|
3
|
-
import * as
|
|
2
|
+
import { Component, ViewEncapsulation, Input, ViewChild, HostListener, Injectable, ChangeDetectionStrategy, Optional, Inject, NgModule } from '@angular/core';
|
|
3
|
+
import * as i2 from '@esfaenza/core/services';
|
|
4
|
+
import { AppState } from '@esfaenza/core/services';
|
|
4
5
|
import * as i1 from '@angular/router';
|
|
5
|
-
import { NavigationEnd, RouterModule } from '@angular/router';
|
|
6
|
+
import { NavigationEnd, ActivatedRoute, RouterModule } from '@angular/router';
|
|
6
7
|
import * as i3 from '@angular/platform-browser';
|
|
7
8
|
import * as i3$1 from '@angular/common';
|
|
8
9
|
import { CommonModule } from '@angular/common';
|
|
9
10
|
import * as i1$1 from '@esfaenza/preferences';
|
|
10
11
|
import * as i3$2 from '@esfaenza/httpservice';
|
|
11
|
-
import * as
|
|
12
|
+
import * as i5 from '@esfaenza/localizations';
|
|
12
13
|
import { LocalizationService, LocalizationModule } from '@esfaenza/localizations';
|
|
13
|
-
import {
|
|
14
|
-
import * as
|
|
15
|
-
import
|
|
14
|
+
import { ReplaySubject, interval, startWith, takeUntil, takeWhile, firstValueFrom } from 'rxjs';
|
|
15
|
+
import * as i13 from '@esfaenza/es-table';
|
|
16
|
+
import { EsTableColumnsDefinition, EsTableModule } from '@esfaenza/es-table';
|
|
17
|
+
import * as i3$3 from '@esfaenza/signalr-notifications';
|
|
18
|
+
import * as i4 from '@esfaenza/extensions';
|
|
16
19
|
import * as i9 from '@angular/forms';
|
|
17
20
|
import { FormsModule } from '@angular/forms';
|
|
18
21
|
import * as i10 from 'ngx-bootstrap/progressbar';
|
|
@@ -21,10 +24,12 @@ import * as i11 from '@angular/material/slide-toggle';
|
|
|
21
24
|
import { MatSlideToggleModule } from '@angular/material/slide-toggle';
|
|
22
25
|
import * as i12 from 'ngx-bootstrap/dropdown';
|
|
23
26
|
import { BsDropdownModule } from 'ngx-bootstrap/dropdown';
|
|
24
|
-
import { CategoriesWithModules,
|
|
25
|
-
import
|
|
26
|
-
import * as
|
|
27
|
+
import { CategoriesWithModules, MENU_LOCALIZATION, MENU, REDIRECT_MAP } from '@esfaenza/core/domain';
|
|
28
|
+
import { __awaiter } from 'tslib';
|
|
29
|
+
import * as i5$1 from '@esfaenza/access-control';
|
|
30
|
+
import * as i7 from '@esfaenza/core/directives';
|
|
27
31
|
import { DirectivesModule } from '@esfaenza/core/directives';
|
|
32
|
+
import { takeUntil as takeUntil$1 } from 'rxjs/operators';
|
|
28
33
|
|
|
29
34
|
// Angular
|
|
30
35
|
class BackTop {
|
|
@@ -75,46 +80,51 @@ class Breadcrumb {
|
|
|
75
80
|
this._titleService = _titleService;
|
|
76
81
|
this.activePageTitle = "";
|
|
77
82
|
this.subActiveLinks = [];
|
|
78
|
-
this._state.subscribe("menu.adjustNavigationTo", (activeLink) =>
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
/*Gestione della navigazione interna:
|
|
86
|
-
Essenzialmente controllo se la lista di subnavigation gi� contiene l'elemento in cui sono ora,
|
|
87
|
-
se lo contiene gi� significa che ci sono tornato sopra premendo back(browser o pagina), quindi
|
|
88
|
-
elimino l'ultimo elemento della lista per ristabilire la situazione, se invece l'elemento non esiste
|
|
89
|
-
vuol dire che ci ho navigato sopra, quindi lo aggiungo.*/
|
|
90
|
-
this._state.subscribe("menu.adjustSubNavigationTo", (activeLink) => {
|
|
91
|
-
if (activeLink) {
|
|
92
|
-
var index = this.subActiveLinks.indexOf(activeLink);
|
|
93
|
-
if (index != -1 && (index + 1) != this.subActiveLinks.length)
|
|
94
|
-
this.subActiveLinks.pop();
|
|
95
|
-
if (index == -1 && this.activePageTitle != activeLink)
|
|
96
|
-
this.subActiveLinks.push(activeLink);
|
|
97
|
-
this._titleService.setTitle(myconfig.AppData.ModuleDescription + " > " + activeLink);
|
|
98
|
-
}
|
|
99
|
-
});
|
|
100
|
-
this._state.subscribe("menu.removeLastSubNavigation", () => {
|
|
101
|
-
this.subActiveLinks.pop();
|
|
102
|
-
});
|
|
103
|
-
this._state.subscribe("menu.cleanupSubNavigation", () => {
|
|
83
|
+
this._state.subscribe("menu.adjustNavigationTo", (activeLink) => this.adjustNavigationTo(activeLink));
|
|
84
|
+
this._state.subscribe("menu.adjustSubNavigationTo", (activeLink) => this.adjustSubNavigationTo(activeLink));
|
|
85
|
+
this._state.subscribe("menu.removeLastSubNavigation", () => this.removeLastSubNavigation());
|
|
86
|
+
this._state.subscribe("menu.cleanupSubNavigation", () => this.cleanupSubNavigation());
|
|
87
|
+
}
|
|
88
|
+
adjustNavigationTo(activeLink) {
|
|
89
|
+
if (activeLink) {
|
|
104
90
|
this.subActiveLinks = [];
|
|
105
|
-
|
|
91
|
+
this.activePageTitle = activeLink;
|
|
92
|
+
this._titleService.setTitle(myconfig.AppData.ModuleDescription + " > " + activeLink);
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
/*Gestione della navigazione interna:
|
|
96
|
+
Essenzialmente controllo se la lista di subnavigation già contiene l'elemento in cui sono ora,
|
|
97
|
+
se lo contiene già significa che ci sono tornato sopra premendo back(browser o pagina), quindi
|
|
98
|
+
elimino l'ultimo elemento della lista per ristabilire la situazione, se invece l'elemento non esiste
|
|
99
|
+
vuol dire che ci ho navigato sopra, quindi lo aggiungo.*/
|
|
100
|
+
adjustSubNavigationTo(activeLink) {
|
|
101
|
+
if (activeLink) {
|
|
102
|
+
var index = this.subActiveLinks.indexOf(activeLink);
|
|
103
|
+
if (index != -1 && (index + 1) != this.subActiveLinks.length)
|
|
104
|
+
this.subActiveLinks.pop();
|
|
105
|
+
if (index == -1 && this.activePageTitle != activeLink)
|
|
106
|
+
this.subActiveLinks.push(activeLink);
|
|
107
|
+
this._titleService.setTitle(myconfig.AppData.ModuleDescription + " > " + activeLink);
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
removeLastSubNavigation() {
|
|
111
|
+
this.subActiveLinks.pop();
|
|
112
|
+
}
|
|
113
|
+
cleanupSubNavigation() {
|
|
114
|
+
this.subActiveLinks = [];
|
|
106
115
|
}
|
|
107
116
|
ngOnInit() {
|
|
108
|
-
if (!this.activePageTitle)
|
|
117
|
+
if (!this.activePageTitle) {
|
|
109
118
|
this.activePageTitle = this._activatedRoute.snapshot.firstChild.data["title"];
|
|
119
|
+
}
|
|
110
120
|
}
|
|
111
121
|
}
|
|
112
|
-
Breadcrumb.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: Breadcrumb, deps: [{ token:
|
|
122
|
+
Breadcrumb.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: Breadcrumb, deps: [{ token: i2.AppState }, { token: i1.ActivatedRoute }, { token: i3.Title }], target: i0.ɵɵFactoryTarget.Component });
|
|
113
123
|
Breadcrumb.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.9", type: Breadcrumb, selector: "breadcrumb", ngImport: i0, template: "<div class=\"clearfix\">\r\n <ol class=\"breadcrumb\">\r\n <li class=\"breadcrumb-item fa fa-home m-t-3\"></li>\r\n <li class=\"breadcrumb-item active text-uppercase\">{{ activePageTitle }}</li>\r\n <li class=\"breadcrumb-item active text-uppercase e2eLeafPage\" *ngFor=\"let link of subActiveLinks\">{{ link }}</li>\r\n </ol>\r\n</div>", styles: [".breadcrumb{padding:0;background:transparent;color:#242424;font-size:14px;margin-bottom:15px}.breadcrumb-item+.breadcrumb-item:before{color:#242424;content:\">\"}.breadcrumb-item{float:left}.breadcrumb-item.active{color:#242424;font-weight:700}\n"], dependencies: [{ kind: "directive", type: i3$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }], encapsulation: i0.ViewEncapsulation.None });
|
|
114
124
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: Breadcrumb, decorators: [{
|
|
115
125
|
type: Component,
|
|
116
126
|
args: [{ selector: "breadcrumb", encapsulation: ViewEncapsulation.None, template: "<div class=\"clearfix\">\r\n <ol class=\"breadcrumb\">\r\n <li class=\"breadcrumb-item fa fa-home m-t-3\"></li>\r\n <li class=\"breadcrumb-item active text-uppercase\">{{ activePageTitle }}</li>\r\n <li class=\"breadcrumb-item active text-uppercase e2eLeafPage\" *ngFor=\"let link of subActiveLinks\">{{ link }}</li>\r\n </ol>\r\n</div>", styles: [".breadcrumb{padding:0;background:transparent;color:#242424;font-size:14px;margin-bottom:15px}.breadcrumb-item+.breadcrumb-item:before{color:#242424;content:\">\"}.breadcrumb-item{float:left}.breadcrumb-item.active{color:#242424;font-weight:700}\n"] }]
|
|
117
|
-
}], ctorParameters: function () { return [{ type:
|
|
127
|
+
}], ctorParameters: function () { return [{ type: i2.AppState }, { type: i1.ActivatedRoute }, { type: i3.Title }]; } });
|
|
118
128
|
|
|
119
129
|
// Angular
|
|
120
130
|
class PageNotFoundComponent {
|
|
@@ -162,12 +172,12 @@ class ServerErrorComponent {
|
|
|
162
172
|
this.router.navigate(["/pages/dashboard"]);
|
|
163
173
|
}
|
|
164
174
|
}
|
|
165
|
-
ServerErrorComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: ServerErrorComponent, deps: [{ token: i1.Router }, { token: i1.ActivatedRoute }, { token:
|
|
175
|
+
ServerErrorComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: ServerErrorComponent, deps: [{ token: i1.Router }, { token: i1.ActivatedRoute }, { token: i2.AppState }], target: i0.ɵɵFactoryTarget.Component });
|
|
166
176
|
ServerErrorComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.9", type: ServerErrorComponent, selector: "servererror", ngImport: i0, template: "<div class=\"container\">\r\n <div class=\"row\">\r\n <div class=\"col-xl-6 col-md-6 col-10 offset-xl-3 offset-md-3 offset-xs-1 p-t-10\">\r\n <div class=\"card\">\r\n <div class=\"card-body text-center\">\r\n <h1 class=\"display-1\" *ngIf=\"!statusCode\"> </h1>\r\n <h1 class=\"display-1\" *ngIf=\"statusCode\">{{statusCode}}</h1>\r\n <h6 class=\"card-title\" *ngIf=\"!statusText\"> </h6>\r\n <h6 class=\"card-title\" style=\"word-wrap:break-word; max-height: 500px; overflow: auto\" *ngIf=\"statusText\">{{statusText}}</h6>\r\n <div>\r\n <button type=\"button\" class=\"btn btn-secondary pull-right\" (click)=\"goDashboard()\">Vai alla Dashboard</button>\r\n <button type=\"button\" class=\"btn btn-secondary pull-left\" (click)=\"goPreviousPage()\">Torna alla pagina precedente</button>\r\n <div class=\"clearfix\"></div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>", dependencies: [{ kind: "directive", type: i3$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], encapsulation: i0.ViewEncapsulation.None });
|
|
167
177
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: ServerErrorComponent, decorators: [{
|
|
168
178
|
type: Component,
|
|
169
179
|
args: [{ selector: "servererror", encapsulation: ViewEncapsulation.None, template: "<div class=\"container\">\r\n <div class=\"row\">\r\n <div class=\"col-xl-6 col-md-6 col-10 offset-xl-3 offset-md-3 offset-xs-1 p-t-10\">\r\n <div class=\"card\">\r\n <div class=\"card-body text-center\">\r\n <h1 class=\"display-1\" *ngIf=\"!statusCode\"> </h1>\r\n <h1 class=\"display-1\" *ngIf=\"statusCode\">{{statusCode}}</h1>\r\n <h6 class=\"card-title\" *ngIf=\"!statusText\"> </h6>\r\n <h6 class=\"card-title\" style=\"word-wrap:break-word; max-height: 500px; overflow: auto\" *ngIf=\"statusText\">{{statusText}}</h6>\r\n <div>\r\n <button type=\"button\" class=\"btn btn-secondary pull-right\" (click)=\"goDashboard()\">Vai alla Dashboard</button>\r\n <button type=\"button\" class=\"btn btn-secondary pull-left\" (click)=\"goPreviousPage()\">Torna alla pagina precedente</button>\r\n <div class=\"clearfix\"></div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>" }]
|
|
170
|
-
}], ctorParameters: function () { return [{ type: i1.Router }, { type: i1.ActivatedRoute }, { type:
|
|
180
|
+
}], ctorParameters: function () { return [{ type: i1.Router }, { type: i1.ActivatedRoute }, { type: i2.AppState }]; } });
|
|
171
181
|
|
|
172
182
|
// Angular
|
|
173
183
|
class AngularErrorComponent {
|
|
@@ -187,30 +197,32 @@ class AngularErrorComponent {
|
|
|
187
197
|
console.error(this.errorMessage);
|
|
188
198
|
}
|
|
189
199
|
ngOnInit() {
|
|
190
|
-
var item =
|
|
200
|
+
var item = localStorage.getItem("Reload");
|
|
191
201
|
if (item) {
|
|
192
|
-
|
|
202
|
+
localStorage.removeItem("Reload");
|
|
193
203
|
this.router.navigate([item]);
|
|
194
204
|
}
|
|
195
205
|
}
|
|
196
206
|
b64DecodeUnicode(str) {
|
|
197
|
-
//
|
|
207
|
+
// Bytestream -> Encoding % -> Stringa originale
|
|
198
208
|
return decodeURIComponent(atob(str).split("").map(c => "%" + ("00" + c.charCodeAt(0).toString(16)).slice(-2)).join(""));
|
|
199
209
|
}
|
|
200
210
|
goPreviousPage() {
|
|
201
|
-
|
|
211
|
+
// Reload per forzare il ricaricamento del javascript (in modo che lo stato dell'applicazione sia a posto)
|
|
212
|
+
// all'onInit la pagina prenderà la root a cui navigare dal localStorage
|
|
213
|
+
localStorage.setItem("Reload", this.previousUrl);
|
|
202
214
|
location.reload();
|
|
203
215
|
}
|
|
204
216
|
goDashboard() {
|
|
205
217
|
this.router.navigate(["/pages/dashboard"]);
|
|
206
218
|
}
|
|
207
219
|
}
|
|
208
|
-
AngularErrorComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: AngularErrorComponent, deps: [{ token: i1.Router }, { token: i1.ActivatedRoute }, { token: i1$1.CacheService }, { token: i3$2.HTTPService }, { token:
|
|
220
|
+
AngularErrorComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: AngularErrorComponent, deps: [{ token: i1.Router }, { token: i1.ActivatedRoute }, { token: i1$1.CacheService }, { token: i3$2.HTTPService }, { token: i2.TokenService }], target: i0.ɵɵFactoryTarget.Component });
|
|
209
221
|
AngularErrorComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.9", type: AngularErrorComponent, selector: "angularerror", ngImport: i0, template: "<div class=\"container\">\r\n <div class=\"row\">\r\n <div class=\"col-xl-8 col-md-10 col-10 offset-xl-2 offset-xs-1 p-t-10\">\r\n <div class=\"card\">\r\n <div class=\"card-body text-center\">\r\n <h1 class=\"display-4\">Qualcosa è andato storto.</h1>\r\n <h6>\r\n <small>\r\n Si è verificato un errore interno all'applicazione. Questo non dovrebbe accadere. Prova a ricaricare la pagina precedente e rieffettuare le stesse operazioni, se il problema persiste contatta il service desk allegando una breve descrizione delle operazioni che stavi eseguendo e questo messaggio d'errore:\r\n </small>\r\n </h6>\r\n <h6 class=\"card-title text-danger app-margin-top-10 text-left\" style=\"word-wrap:break-word\" *ngIf=\"identityInfos\"><em>{{identityInfos}}</em></h6>\r\n <h6 class=\"card-title text-danger app-margin-top-10 text-left\" style=\"word-wrap:break-word\" *ngIf=\"errorFrom\"><em>{{errorFrom}}</em></h6>\r\n <h6 class=\"card-title text-danger app-margin-top-10 text-left\" style=\"word-wrap:break-word\" *ngIf=\"errorLastCalls\"><em>{{errorLastCalls}}</em></h6>\r\n <h6 class=\"card-title text-danger app-margin-top-10 text-left\" style=\"word-wrap:break-word\" *ngIf=\"errorMessage\"><em>{{errorMessage}}</em></h6>\r\n <div>\r\n <button type=\"button\" class=\"btn btn-secondary pull-right\" (click)=\"goDashboard()\">Vai alla Dashboard</button>\r\n <button type=\"button\" class=\"btn btn-secondary pull-right app-margin-right-10\" (click)=\"goPreviousPage()\">Torna alla pagina precedente</button>\r\n <div class=\"clearfix\"></div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>", dependencies: [{ kind: "directive", type: i3$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], encapsulation: i0.ViewEncapsulation.None });
|
|
210
222
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: AngularErrorComponent, decorators: [{
|
|
211
223
|
type: Component,
|
|
212
224
|
args: [{ selector: "angularerror", encapsulation: ViewEncapsulation.None, template: "<div class=\"container\">\r\n <div class=\"row\">\r\n <div class=\"col-xl-8 col-md-10 col-10 offset-xl-2 offset-xs-1 p-t-10\">\r\n <div class=\"card\">\r\n <div class=\"card-body text-center\">\r\n <h1 class=\"display-4\">Qualcosa è andato storto.</h1>\r\n <h6>\r\n <small>\r\n Si è verificato un errore interno all'applicazione. Questo non dovrebbe accadere. Prova a ricaricare la pagina precedente e rieffettuare le stesse operazioni, se il problema persiste contatta il service desk allegando una breve descrizione delle operazioni che stavi eseguendo e questo messaggio d'errore:\r\n </small>\r\n </h6>\r\n <h6 class=\"card-title text-danger app-margin-top-10 text-left\" style=\"word-wrap:break-word\" *ngIf=\"identityInfos\"><em>{{identityInfos}}</em></h6>\r\n <h6 class=\"card-title text-danger app-margin-top-10 text-left\" style=\"word-wrap:break-word\" *ngIf=\"errorFrom\"><em>{{errorFrom}}</em></h6>\r\n <h6 class=\"card-title text-danger app-margin-top-10 text-left\" style=\"word-wrap:break-word\" *ngIf=\"errorLastCalls\"><em>{{errorLastCalls}}</em></h6>\r\n <h6 class=\"card-title text-danger app-margin-top-10 text-left\" style=\"word-wrap:break-word\" *ngIf=\"errorMessage\"><em>{{errorMessage}}</em></h6>\r\n <div>\r\n <button type=\"button\" class=\"btn btn-secondary pull-right\" (click)=\"goDashboard()\">Vai alla Dashboard</button>\r\n <button type=\"button\" class=\"btn btn-secondary pull-right app-margin-right-10\" (click)=\"goPreviousPage()\">Torna alla pagina precedente</button>\r\n <div class=\"clearfix\"></div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>" }]
|
|
213
|
-
}], ctorParameters: function () { return [{ type: i1.Router }, { type: i1.ActivatedRoute }, { type: i1$1.CacheService }, { type: i3$2.HTTPService }, { type:
|
|
225
|
+
}], ctorParameters: function () { return [{ type: i1.Router }, { type: i1.ActivatedRoute }, { type: i1$1.CacheService }, { type: i3$2.HTTPService }, { type: i2.TokenService }]; } });
|
|
214
226
|
|
|
215
227
|
class NavBarLoc extends LocalizationService {
|
|
216
228
|
constructor(injector) {
|
|
@@ -245,6 +257,28 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImpor
|
|
|
245
257
|
type: Injectable
|
|
246
258
|
}], ctorParameters: function () { return [{ type: i0.Injector }]; } });
|
|
247
259
|
|
|
260
|
+
// Angular
|
|
261
|
+
class ReactiveComponent {
|
|
262
|
+
constructor() {
|
|
263
|
+
this.Subscriptions = [];
|
|
264
|
+
this.destroyed$ = new ReplaySubject(1);
|
|
265
|
+
}
|
|
266
|
+
ngOnDestroy() {
|
|
267
|
+
this.destroyed$.next(true);
|
|
268
|
+
this.destroyed$.complete();
|
|
269
|
+
if (!this.Subscriptions)
|
|
270
|
+
return;
|
|
271
|
+
for (let i = 0; i < this.Subscriptions.length; i++)
|
|
272
|
+
this.Subscriptions[i].unsubscribe();
|
|
273
|
+
}
|
|
274
|
+
}
|
|
275
|
+
ReactiveComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: ReactiveComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
276
|
+
ReactiveComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.9", type: ReactiveComponent, selector: "ng-component", ngImport: i0, template: '', isInline: true });
|
|
277
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: ReactiveComponent, decorators: [{
|
|
278
|
+
type: Component,
|
|
279
|
+
args: [{ template: '' }]
|
|
280
|
+
}] });
|
|
281
|
+
|
|
248
282
|
// Angular
|
|
249
283
|
class JaceModulesBoardComponent {
|
|
250
284
|
constructor(bts) {
|
|
@@ -271,12 +305,12 @@ class JaceModulesBoardComponent {
|
|
|
271
305
|
});
|
|
272
306
|
}
|
|
273
307
|
}
|
|
274
|
-
JaceModulesBoardComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: JaceModulesBoardComponent, deps: [{ token:
|
|
308
|
+
JaceModulesBoardComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: JaceModulesBoardComponent, deps: [{ token: i2.TokenService }], target: i0.ɵɵFactoryTarget.Component });
|
|
275
309
|
JaceModulesBoardComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.9", type: JaceModulesBoardComponent, selector: "jace-modules-board", inputs: { Modules: "Modules" }, ngImport: i0, template: "<div *ngIf=\"Categories\">\r\n <div *ngFor=\"let cat of Categories\">\r\n <div class=\"row\">\r\n <div class=\"section-title app-padding-left-0 app-padding-top-0\">\r\n {{cat.category}}\r\n </div>\r\n </div>\r\n <div *ngFor=\"let modRow of cat.module_rows\" class=\"row app-padding-left-10 app-padding-right-15\">\r\n <div class=\"module\" [class.module-available]=\"module.href\" [class.module-unavailable]=\"!module.href\" *ngFor=\"let module of modRow\">\r\n <a [href]=\"module.href\">\r\n <div class=\"module-name\"><span>{{module.name}}</span></div>\r\n <div class=\"module-footer\">\r\n <span class=\"fa-stack\"><i class=\"fa fa-circle-thin fa-stack-2x\"></i><i class=\"fa fa-chevron-right fa-stack-1x\"></i></span>\r\n </div>\r\n </a>\r\n </div>\r\n </div>\r\n </div>\r\n</div>", styles: [".module{padding:.4em .4em .4em .7em;height:6em;width:11.5em;background:#3d3d3d;border:1px solid #383737;border-radius:5px;text-align:center;color:#f7ca26;border-top:3px solid transparent;border-bottom:3px solid transparent;margin-left:5px;margin-bottom:5px}.module-name{color:#fcf9cf;font-family:Passion One,cursive;font-size:18px;text-transform:uppercase;text-align:left;height:65%;white-space:pre-line}.module-footer{height:25%;text-align:right;color:#f7ca26}.module-available{cursor:pointer}.module-available:hover{border-top:3px solid #8e9aaf;border-bottom:3px solid #8e9aaf;background-color:#242d3a;box-shadow:3px 3px 2px #151515}.module-available:hover .module-name{color:#fff}.module-available:hover .module-footer{color:#f7ca26}.module-unavailable,.module-unavailable .module-name,.module-unavailable .module-footer{cursor:not-allowed}.module-unavailable .module-name,.module-unavailable .module-footer{color:#7d7d7d!important}.section-title{margin-left:15px;margin-right:15px;text-align:left;color:#f7ca26;padding:.4em .4em .4em .7em;border-radius:5px;font-family:Passion One,cursive;font-size:20px;text-transform:uppercase}\n"], dependencies: [{ kind: "directive", type: i3$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
276
310
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: JaceModulesBoardComponent, decorators: [{
|
|
277
311
|
type: Component,
|
|
278
312
|
args: [{ selector: "jace-modules-board", changeDetection: ChangeDetectionStrategy.OnPush, template: "<div *ngIf=\"Categories\">\r\n <div *ngFor=\"let cat of Categories\">\r\n <div class=\"row\">\r\n <div class=\"section-title app-padding-left-0 app-padding-top-0\">\r\n {{cat.category}}\r\n </div>\r\n </div>\r\n <div *ngFor=\"let modRow of cat.module_rows\" class=\"row app-padding-left-10 app-padding-right-15\">\r\n <div class=\"module\" [class.module-available]=\"module.href\" [class.module-unavailable]=\"!module.href\" *ngFor=\"let module of modRow\">\r\n <a [href]=\"module.href\">\r\n <div class=\"module-name\"><span>{{module.name}}</span></div>\r\n <div class=\"module-footer\">\r\n <span class=\"fa-stack\"><i class=\"fa fa-circle-thin fa-stack-2x\"></i><i class=\"fa fa-chevron-right fa-stack-1x\"></i></span>\r\n </div>\r\n </a>\r\n </div>\r\n </div>\r\n </div>\r\n</div>", styles: [".module{padding:.4em .4em .4em .7em;height:6em;width:11.5em;background:#3d3d3d;border:1px solid #383737;border-radius:5px;text-align:center;color:#f7ca26;border-top:3px solid transparent;border-bottom:3px solid transparent;margin-left:5px;margin-bottom:5px}.module-name{color:#fcf9cf;font-family:Passion One,cursive;font-size:18px;text-transform:uppercase;text-align:left;height:65%;white-space:pre-line}.module-footer{height:25%;text-align:right;color:#f7ca26}.module-available{cursor:pointer}.module-available:hover{border-top:3px solid #8e9aaf;border-bottom:3px solid #8e9aaf;background-color:#242d3a;box-shadow:3px 3px 2px #151515}.module-available:hover .module-name{color:#fff}.module-available:hover .module-footer{color:#f7ca26}.module-unavailable,.module-unavailable .module-name,.module-unavailable .module-footer{cursor:not-allowed}.module-unavailable .module-name,.module-unavailable .module-footer{color:#7d7d7d!important}.section-title{margin-left:15px;margin-right:15px;text-align:left;color:#f7ca26;padding:.4em .4em .4em .7em;border-radius:5px;font-family:Passion One,cursive;font-size:20px;text-transform:uppercase}\n"] }]
|
|
279
|
-
}], ctorParameters: function () { return [{ type:
|
|
313
|
+
}], ctorParameters: function () { return [{ type: i2.TokenService }]; }, propDecorators: { Modules: [{
|
|
280
314
|
type: Input
|
|
281
315
|
}] } });
|
|
282
316
|
|
|
@@ -284,10 +318,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImpor
|
|
|
284
318
|
// Chiamate ai Repository
|
|
285
319
|
const GET_Jace_GetActiveJaceModules = "/api/Jace/GetActiveJaceModules";
|
|
286
320
|
const GET_Adm_ClearAllCaches = "/api/Adm/ClearAllCaches";
|
|
287
|
-
class Navbar {
|
|
288
|
-
constructor(prefsService, cacheService, MessageDef, notifications, msgExts, lc, http, cdr, _state, sr, router) {
|
|
321
|
+
class Navbar extends ReactiveComponent {
|
|
322
|
+
constructor(prefsService, cacheService, globalSearchService, MessageDef, notifications, msgExts, lc, http, cdr, _state, sr, router, cjrService) {
|
|
323
|
+
super();
|
|
289
324
|
this.prefsService = prefsService;
|
|
290
325
|
this.cacheService = cacheService;
|
|
326
|
+
this.globalSearchService = globalSearchService;
|
|
291
327
|
this.MessageDef = MessageDef;
|
|
292
328
|
this.notifications = notifications;
|
|
293
329
|
this.msgExts = msgExts;
|
|
@@ -297,67 +333,60 @@ class Navbar {
|
|
|
297
333
|
this._state = _state;
|
|
298
334
|
this.sr = sr;
|
|
299
335
|
this.router = router;
|
|
300
|
-
this.
|
|
301
|
-
this.isMenuCollapsed = false;
|
|
336
|
+
this.cjrService = cjrService;
|
|
302
337
|
this.applicationVersion = myconfig.AppData.ComponentVersion;
|
|
303
|
-
this.
|
|
338
|
+
this.applicationEnvironment = myconfig.AppData.ComponentEnvironment;
|
|
339
|
+
this.isMenuCollapsed = false;
|
|
304
340
|
this.anomaliesProcessing = false;
|
|
305
|
-
this.IsJaceAdmin = false;
|
|
306
341
|
this.newVersionWarned = false;
|
|
307
|
-
|
|
342
|
+
// ***************************************** Gestione Ricerca Globale *****************************************
|
|
343
|
+
this.SelectedResult = null;
|
|
344
|
+
this.ShowSingleTable = false;
|
|
345
|
+
this.searchingTerm = false;
|
|
308
346
|
this._state.subscribe("menu.isCollapsed", (isCollapsed) => { this.isMenuCollapsed = isCollapsed; });
|
|
309
|
-
this.thisLoc = lc.Locale;
|
|
310
|
-
this.checkIdentity();
|
|
311
|
-
this.getActiveJaceModules();
|
|
312
|
-
interval(1000).pipe(takeUntil(this.destroyed$)).subscribe(t => {
|
|
313
|
-
if (!myconfig.redirectInProgress)
|
|
314
|
-
this.checkIdentity();
|
|
315
|
-
});
|
|
316
|
-
this.startSignalRListening();
|
|
317
347
|
this._state.subscribe("app.completedJob", (jobDescription) => {
|
|
318
348
|
this.msgExts.simpleSuccess(this.lc.loc("Job Completato") + ": " + jobDescription);
|
|
319
349
|
});
|
|
350
|
+
this.handleBaseNotifications();
|
|
351
|
+
this.getActiveJaceModules();
|
|
352
|
+
// Appena la pagina parte, poi ogni secondo, controllo l'identity per verificare se rimane la stessa
|
|
353
|
+
interval(1000).pipe(startWith(0), takeUntil(this.destroyed$), takeWhile(_ => !myconfig.redirectInProgress)).subscribe(t => {
|
|
354
|
+
this.checkIdentity();
|
|
355
|
+
});
|
|
320
356
|
}
|
|
321
357
|
ngOnDestroy() {
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
this.
|
|
358
|
+
super.ngOnDestroy();
|
|
359
|
+
//Quando viene distrutta la navbar devo distruggere anche il client di signalr perchè vuol dire che ho chiuso la pagina
|
|
360
|
+
this.notifications.disconnect();
|
|
325
361
|
}
|
|
326
|
-
|
|
327
|
-
this.
|
|
362
|
+
handleBaseNotifications() {
|
|
363
|
+
this.notifications.send(this.MessageDef.OUT_QueryJobStatus, null);
|
|
364
|
+
this.notifications.observe(this.MessageDef.IN_SendVersion).pipe(takeUntil(this.destroyed$)).subscribe((message) => {
|
|
328
365
|
if (message != myconfig.AppData.ComponentVersion && !this.newVersionWarned) {
|
|
329
366
|
this.msgExts.simpleWarning(this.lc.loc("È disponibile una nuova versione per l'applicazione corrente. Si suggerisce di ricaricare la pagina (CTRL + F5)"));
|
|
330
367
|
this.newVersionWarned = true;
|
|
331
368
|
}
|
|
332
|
-
})
|
|
333
|
-
}
|
|
334
|
-
stopSignalRListening() {
|
|
335
|
-
//Quando viene distrutta la navbar devo distruggere anche il client di signalr perch� vuol dire che ho chiuso la pagina
|
|
336
|
-
this.notificationsSubs.forEach(i => { i.unsubscribe(); });
|
|
337
|
-
this.notifications.disconnect();
|
|
369
|
+
});
|
|
338
370
|
}
|
|
339
371
|
checkIdentity() {
|
|
340
372
|
let id = this.sr.getJaceIdentity();
|
|
341
|
-
let idLast = this.
|
|
373
|
+
let idLast = this.CurrentIdentity;
|
|
342
374
|
if (!id)
|
|
343
375
|
return;
|
|
344
|
-
this.
|
|
345
|
-
if (this.
|
|
376
|
+
this.checkSessionTimeout(id);
|
|
377
|
+
if (this.CurrentIdentity && (id.IdAccount != (idLast === null || idLast === void 0 ? void 0 : idLast.IdAccount) || id.IdUser != (idLast === null || idLast === void 0 ? void 0 : idLast.IdUser) || id.Idtenant != (idLast === null || idLast === void 0 ? void 0 : idLast.Idtenant))) {
|
|
346
378
|
this.msgExts.simpleWarning(this.lc.loc("Le informazioni di Sessione (Tenant/Account) sono cambiate a seguito di un login su modulo diverso utilizzando diverso Tenant/Utente sullo stesso browser. Si suggerisce di ricaricare la pagina (CTRL + F5)"));
|
|
347
379
|
this.cdr.markForCheck();
|
|
348
380
|
}
|
|
349
|
-
this.
|
|
350
|
-
this.Permissions = id.Permissions;
|
|
351
|
-
this.Roles = id.Roles;
|
|
352
|
-
this.IsJaceAdmin = id.Roles.some(t => t == "Jace Admin") && !id.Permissions.some(t => t == "alg_custom");
|
|
381
|
+
this.CurrentIdentity = id;
|
|
353
382
|
}
|
|
354
383
|
getActiveJaceModules() {
|
|
355
384
|
this.http.get(GET_Jace_GetActiveJaceModules).subscribe(res => {
|
|
356
385
|
this.Modules = res;
|
|
386
|
+
this._state.Modules = this.Modules;
|
|
357
387
|
});
|
|
358
388
|
}
|
|
359
|
-
|
|
360
|
-
//10 minuti prima
|
|
389
|
+
checkSessionTimeout(identity) {
|
|
361
390
|
if (dayjs() >= dayjs(identity.ExpirationTime).subtract(10, 'minutes') && !myconfig.redirectInProgress) {
|
|
362
391
|
myconfig.redirectInProgress = true;
|
|
363
392
|
this.msgExts.expiredSessionMessage(this.lc.loc('Expired session'), this.lc.loc("L'attuale sessione di lavoro non è più valida.<br>Si prega di eseguire nuovamente il login."), () => {
|
|
@@ -409,97 +438,69 @@ class Navbar {
|
|
|
409
438
|
this.msgExts.clearMessages();
|
|
410
439
|
}
|
|
411
440
|
completedJobClicked(job) {
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
|
|
441
|
+
this.cjrService.redirect(job);
|
|
442
|
+
}
|
|
443
|
+
searchRequest() {
|
|
444
|
+
this.searchingTerm = true;
|
|
445
|
+
this.searchResult = null;
|
|
446
|
+
if (!this.globalSearchService.Enabled)
|
|
447
|
+
return;
|
|
448
|
+
this.globalSearchService.search(this.searchTerm).subscribe(t => {
|
|
449
|
+
this.searchingTerm = false;
|
|
450
|
+
this.searchResult = t;
|
|
451
|
+
this.searchResult.results.forEach(t => {
|
|
452
|
+
t.est_cols = t.columns.map(c => {
|
|
453
|
+
let colLink = this.globalSearchService.generateColumnLink(c);
|
|
454
|
+
return new EsTableColumnsDefinition(c.description, c.id, colLink === null || colLink === void 0 ? void 0 : colLink.routePath, colLink === null || colLink === void 0 ? void 0 : colLink.routeProperties);
|
|
455
|
+
});
|
|
456
|
+
});
|
|
457
|
+
});
|
|
458
|
+
}
|
|
459
|
+
searchModelChanged() {
|
|
460
|
+
if (!this.searchingTerm)
|
|
461
|
+
this.closeSearch();
|
|
462
|
+
}
|
|
463
|
+
closeSearch() {
|
|
464
|
+
this.searchingTerm = false;
|
|
465
|
+
this.searchResult = null;
|
|
466
|
+
}
|
|
467
|
+
FilterSearchResults(item = null) {
|
|
468
|
+
this.SelectedResult = null;
|
|
469
|
+
this.ShowSingleTable = true;
|
|
470
|
+
requestAnimationFrame(() => {
|
|
471
|
+
var _a, _b;
|
|
472
|
+
if (item)
|
|
473
|
+
this.SelectedResult = (_b = (_a = this.searchResult) === null || _a === void 0 ? void 0 : _a.results) === null || _b === void 0 ? void 0 : _b.find(f => f.description == item.description);
|
|
474
|
+
else
|
|
475
|
+
this.ShowSingleTable = false;
|
|
476
|
+
});
|
|
425
477
|
}
|
|
426
478
|
}
|
|
427
|
-
Navbar.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: Navbar, deps: [{ token: i1$1.PreferencesService }, { token: i1$1.CacheService }, { token: i2.
|
|
428
|
-
Navbar.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.9", type: Navbar, selector: "navbar", viewQueries: [{ propertyName: "navbar", first: true, predicate: ["navbar"], descendants: true }], ngImport: i0, template: "<nav #navbar class=\"nav az-navbar fixed-top\">\r\n <a class=\"navbar-brand\" routerLink=\"/pages/dashboard\">\r\n <img src=\"../assets/img/logo/logo.png\" alt=\"\" class=\"d-md-block d-none\"\r\n style=\"margin-top: 10px; margin-bottom: -10px;\">\r\n <div class=\"app-fe-v d-md-block d-none\">{{ applicationVersion }}</div>\r\n\r\n <img src=\"../assets/img/logo/logo_sm.png\" alt=\"\" class=\"d-md-none\"\r\n style=\"margin-top: 10px; margin-bottom: -10px;\">\r\n <div class=\"app-fe-sm-v d-md-none\">{{ applicationVersion }}</div>\r\n </a>\r\n\r\n <ul class=\"nav navbar-nav navbar-fillable\">\r\n <li>\r\n <a (click)=\"toggleMenu()\" class=\"collapse-menu-link fa fa-navicon\"></a>\r\n </li>\r\n <li class=\"d-none d-md-block\">\r\n <form role=\"search\" class=\"app-search\">\r\n <input type=\"text\" placeholder=\"Search...\" class=\"form-control\">\r\n <a><i class=\"fa fa-search\" style=\"color: #aaa\"></i></a>\r\n </form>\r\n </li>\r\n\r\n <ul class=\"nav right-section\">\r\n\r\n <!--Dropdown job in esecuzione-->\r\n <div class=\"pull-right user-menu app-no-selection app-margin-right-10\" dropdown container=\"body\" placement=\"bottom right\">\r\n <a [class.fa-spin]=\"_state.jobsInProgress > 0\" class=\"fa fa-cog dropdown-toggle app-pointer nav-jobs-icon\" dropdownToggle></a>\r\n <ul *dropdownMenu class=\"nav-jobs-menu\" role=\"menu\">\r\n <div class=\"nav-jobs-menu-header\">\r\n <span>{{'Job Applicativi' | localize : lc}}</span>\r\n <span class=\"pull-right m-t-min-2\"><mat-slide-toggle [(ngModel)]=\"_state.notifyOnCompletedJobs\" (click)=\"clearMessages(); $event.stopPropagation();\"></mat-slide-toggle></span>\r\n <span class=\"pull-right app-margin-right-5\">{{'Notifiche' | localize : lc}}:</span>\r\n </div>\r\n <div class=\"nav-jobs-menu-list\">\r\n <div *ngIf=\"_state.allJobs.length == 0\" class=\"nav-jobs-menu-list-empty\">\r\n <div>{{\"Al momento non c'\u00E8 nulla in esecuzione\" | localize : lc}}</div>\r\n </div>\r\n <div *ngFor=\"let job of _state.allJobs; let last = last\" [class.app-margin-bottom-5]=\"!last\">\r\n <span class=\"nav-jobs-menu-list-description\">\r\n <span *ngIf=\"!job.completed\" title=\"{{job.description}}\">{{job.smalldescription}}</span>\r\n <span *ngIf=\"job.completed\" title=\"{{job.description}}\" class=\"app-link app-no-selection app-inline app-pointer\" (click)=\"completedJobClicked(job); $event.stopPropagation();\">{{job.smalldescription}}</span>\r\n <strong class=\"pull-right\" *ngIf=\"!job.completed\">{{job.percentage}}%</strong>\r\n <strong class=\"pull-right\" *ngIf=\"job.completed\">{{ 'Completed' | localize : lc }}</strong>\r\n </span>\r\n <div class=\"progress progress-sm\">\r\n <progressbar *ngIf=\"!job.completed\" [max]=\"100\" [value]=\"job.percentage\" [striped]=\"true\" [animate]=\"true\"></progressbar>\r\n <progressbar *ngIf=\"job.completed\" type=\"success\" [max]=\"100\" [value]=\"100\" [striped]=\"false\" [animate]=\"false\"></progressbar>\r\n </div>\r\n </div>\r\n </div>\r\n </ul>\r\n </div>\r\n\r\n <!--Dropdown moduli-->\r\n <div class=\"pull-right user-menu app-no-selection app-margin-right-10\" dropdown container=\"body\" placement=\"bottom right\">\r\n <a class=\"fa fa-th module-nav-menu-link dropdown-toggle app-pointer\" dropdownToggle>\r\n </a>\r\n <ul *dropdownMenu class=\"module-board-menu container\" role=\"menu\">\r\n <div class=\"app-relative\">\r\n <jace-modules-board [Modules]=\"Modules\"></jace-modules-board>\r\n </div>\r\n </ul>\r\n </div>\r\n\r\n <!-- USER MENU -->\r\n <div class=\"pull-right user-menu app-no-selection\" dropdown container=\"body\" placement=\"bottom right\" style=\"height:50px;\">\r\n <a class=\"dropdown-toggle user-link app-pointer\" dropdownToggle>\r\n <div class=\"pull-left app-margin-right-10 app-relative\">\r\n <img src='../assets/img/users/user.jpg' alt=\"user-img\" class=\"img-circle user-img\">\r\n <img src='../assets/img/events/christmas.png' alt=\"user-img\" class=\"img-circle user-img app-absolute app-right-0\" *ngIf=\"_state.christmasTime\">\r\n <img src='../assets/img/events/halloween.png' alt=\"user-img\" class=\"img-circle user-img app-absolute app-right-0\" *ngIf=\"_state.halloweenTime\">\r\n </div>\r\n <div class=\"pull-right d-none d-sm-block\">\r\n <div class=\"app-white-text\">\r\n {{LastIdentity?.FullName}} - ({{LastIdentity?.TenantName}})\r\n </div>\r\n <div class=\"app-white-text text-sm-center\">\r\n <ng-container *ngIf=\"myconfig.AppData.ComponentEnvironment == 2\">\r\n {{'Ambiente di Sviluppo' | localize : lc}}\r\n </ng-container>\r\n <ng-container *ngIf=\"myconfig.AppData.ComponentEnvironment == 5\">\r\n {{'Ambiente di Staging' | localize : lc}}\r\n </ng-container>\r\n <ng-container *ngIf=\"myconfig.AppData.ComponentEnvironment == 6\">\r\n {{'Ambiente di Staging A' | localize : lc}}\r\n </ng-container>\r\n <ng-container *ngIf=\"myconfig.AppData.ComponentEnvironment == 1\">\r\n {{'Ambiente di Produzione' | localize : lc}}\r\n </ng-container>\r\n </div>\r\n </div>\r\n <div class=\"clearfix\"></div>\r\n </a>\r\n\r\n <ul *dropdownMenu class=\"dropdown-menu dropdown-menu-right-user app-no-padding\" role=\"menu\">\r\n <li class=\"user-info\">\r\n <div class=\"app-relative\">\r\n <img src='../assets/img/users/user.jpg' alt=\"user-img\" class=\"img-circle user-img\">\r\n <img src='../assets/img/events/christmas.png' alt=\"user-img\" class=\"img-circle user-img app-absolute app-right-0\" style=\"right:62px;\" *ngIf=\"_state.christmasTime\">\r\n <img src='../assets/img/events/halloween.png' alt=\"user-img\" class=\"img-circle user-img app-absolute app-right-0\" style=\"right:62px;\" *ngIf=\"_state.halloweenTime\">\r\n </div>\r\n <div class=\"app-white-text app-margin-top-10 app-margin-bottom-10\">\r\n <div>\r\n {{LastIdentity?.FullName}} - ({{LastIdentity?.TenantName}})\r\n </div>\r\n <div *ngIf=\"myconfig.AppData.ComponentEnvironment == 2\">\r\n {{'Ambiente di Sviluppo' | localize : lc}}\r\n </div>\r\n <div *ngIf=\"myconfig.AppData.ComponentEnvironment == 5\">\r\n {{'Ambiente di Staging' | localize : lc}}\r\n </div>\r\n <div *ngIf=\"myconfig.AppData.ComponentEnvironment == 6\">\r\n {{'Ambiente di Staging A' | localize : lc}}\r\n </div>\r\n <div [hidden]=\"true\">\r\n <div>Permissions:</div>\r\n <div *ngFor=\"let p of Permissions\">{{p}}</div>\r\n <div>Roles:</div>\r\n <div *ngFor=\"let r of Roles\">{{r}}</div>\r\n </div>\r\n </div>\r\n </li>\r\n <a class=\"dropdown-item app-pointer\" *ngIf=\"thisLoc == 'en-US'\" (click)=\"lc.changeLocale('it-IT')\"><i class=\"fa fa-globe\"> </i>Switch to Italian Site</a>\r\n <a class=\"dropdown-item app-pointer\" *ngIf=\"thisLoc == 'it-IT'\" (click)=\"lc.changeLocale('en-US')\"><i class=\"fa fa-globe\"> </i>Passa al Sito in Inglese</a>\r\n <a class=\"dropdown-item app-pointer\" (click)=\"changeModule()\"><i class=\"fa fa-th\"> </i>{{'Cambia Modulo' | localize : lc}}</a>\r\n <a class=\"dropdown-item app-pointer\" (click)=\"changeTenant()\"><i class=\"fa fa-building\"> </i>{{'Cambia Tenant' | localize : lc}}</a>\r\n <a class=\"dropdown-item app-pointer\" (click)=\"clearUserPreferences()\"><i class=\"fa fa-user-times\"> </i>{{'Ripulisci le Preferenze Utente' | localize : lc}}</a>\r\n <a class=\"dropdown-item app-pointer\" (click)=\"clearAll()\"><i class=\"fa fa-recycle \"> </i>{{'Ripulisci la Cache' | localize : lc}}</a>\r\n <div class=\"dropdown-divider\"></div>\r\n <a class=\"dropdown-item app-pointer\" (click)=\"logout()\"><i class=\"fa fa-power-off\"> </i>Log out</a>\r\n </ul>\r\n </div>\r\n </ul>\r\n </ul>\r\n</nav>", styles: [".nav-jobs-icon{position:absolute;left:-20px;margin:0;padding:0;top:10px;color:#fff!important;font-size:20px}.nav-jobs-menu{width:350px;height:250px;background:white;margin:2px 0 0;padding:5px;border:1px solid #ccc}.nav-jobs-menu-header{padding:8px;font-size:14px;background-color:#242d3a;margin-top:-5px;margin-left:-5px;margin-right:-5px}.nav-jobs-menu-header span{color:#fffc}.nav-jobs-menu-list{position:relative;overflow:auto;width:auto;height:203px;padding:5px}.nav-jobs-menu-list-description{font-size:13px;color:#666}.nav-jobs-menu-list-empty{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);font-size:15px;text-align:center}.nav.az-navbar{height:60px;align-items:center;background-color:#242d3a}.nav.az-navbar .navbar-brand{width:205px;padding-top:0;font-size:0;margin-left:10px}.navbar-nav{flex-direction:row}#lines{border-bottom:7px double;border-top:2px solid;border-color:#ffffffe6;content:\"\";height:3px;width:20px;box-sizing:content-box;cursor:pointer}#lines:hover{opacity:.8}.app-search{position:relative;margin-left:20px}.app-search a{position:absolute;top:3px;right:14px;font-size:16px;color:#ffffff4d}.app-search .form-control{border:1px solid rgba(255,255,255,.1);font-size:11px;letter-spacing:.03em;height:30px;color:#fff;padding:7px 40px 7px 20px;background:rgba(255,255,255,.05);box-shadow:none;border-radius:30px;width:190px}.app-search input{border:1px solid rgba(255,255,255,.1);font-size:12px;letter-spacing:.03em;height:30px;color:#fff;padding:7px 40px 7px 20px;background:rgba(255,255,255,.05);box-shadow:none;border-radius:30px;width:240px}.completer-selected-row{background-color:#0275d8!important;color:#fff!important;width:100%!important}.completer-row{width:100%!important;color:#fff!important}.completer-dropdown{margin-top:2px!important;background-color:#344154f7!important;color:#fff;border-color:#111!important;box-shadow:0 6px 12px #0003}.search-results{left:-85px;top:-2px;z-index:1050;color:#fff;background-color:#344154f7}.search-results .btn-sm{padding:.15rem .25rem;font-size:.5rem}.search-results:before{content:\"\";border:0px}.search-results a{color:#242d3a}.search-results a:hover{color:#fff;background-color:#0275d8;cursor:pointer}.search-results a i{margin-right:8px}.right-section{position:absolute;right:10px;top:10px}.user-menu{font-size:14px}.user-menu .dropdown-toggle:after{display:none}.user-menu .dropdown-menu{right:0;top:auto!important;left:auto!important;margin-top:10px;padding-top:0;overflow:hidden;border-radius:0;font-size:14px;box-shadow:0 6px 12px #0003;transform:none!important}.user-menu .dropdown-menu a{color:#242d3a}.user-menu .dropdown-menu a:hover{color:#fff;background-color:#242d3a}.user-menu .dropdown-menu a i{margin-right:8px}.user-link{margin-right:6px}.user-link span{color:#fff;margin-left:7px;letter-spacing:.02em}.user-link img{width:40px;border-radius:50%}.user-link:hover,.user-link:focus{text-decoration:none}.user-info{background-color:#242d3a;padding:8px;text-align:center;width:240px;margin-bottom:5px}.user-info img{width:100px;margin-top:5px;border-radius:50%}.user-info p{color:#ebebeb;margin-top:10px}.user-info small{display:block}@media (max-width: 767px){.nav.az-navbar .navbar-brand{width:auto}}.navbar-search{color:#ffffff80!important}.navbar-help{font-size:20px!important;color:#ffffff80!important;border:1px solid rgba(255,255,255,.1);margin-left:5px!important;padding:5px 10px 2px 8px!important;border-radius:50%;background-color:#ffffff0d;cursor:pointer;width:31px;height:31px}.navbar-fill{margin-top:-5px;margin-bottom:-5px;margin-left:10px;width:calc(100% - 530px)}.navbar-fillable{width:calc(100% - 231px)}.navbar-floating-label{position:absolute;top:-9px;left:-5px;background:#242D3A;padding-left:5px;padding-right:5px;color:#ffffffe6!important}.collapse-menu-link{color:#fff!important;font-size:20px;padding-top:5px;cursor:pointer}.module-nav-menu-link{color:#fff!important;font-size:20px;padding-top:10px;padding-right:5px;cursor:pointer}.module-board-menu{position:relative;top:1px;background-color:#1f1f1f;padding:15px}.overlay{height:100%;width:100%;display:none;padding-left:10%;padding-right:10%;position:fixed;z-index:999999;left:0;top:0;background-color:#000;background-color:#000000e6;overflow-x:hidden;transition:.5s}.overlay-content{position:relative;top:25%;width:100%;text-align:center;margin-top:30px}.overlay p{padding:8px;text-decoration:none;font-size:36px;color:#818181;display:block;transition:.3s}.overlay a:hover,.overlay a:focus{color:#f1f1f1}.overlay .closebtn{position:absolute;top:20px;right:45px;font-size:60px}@media screen and (max-height: 450px){.overlay a{font-size:20px}.overlay .closebtn{font-size:40px;top:15px;right:35px}}\n"], dependencies: [{ kind: "directive", type: i3$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: i9.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i9.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i9.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i9.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i9.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "component", type: i10.ProgressbarComponent, selector: "progressbar", inputs: ["max", "animate", "striped", "type", "value"] }, { kind: "component", type: i11.MatSlideToggle, selector: "mat-slide-toggle", inputs: ["disabled", "disableRipple", "color", "tabIndex"], exportAs: ["matSlideToggle"] }, { kind: "directive", type: i12.BsDropdownMenuDirective, selector: "[bsDropdownMenu],[dropdownMenu]", exportAs: ["bs-dropdown-menu"] }, { kind: "directive", type: i12.BsDropdownToggleDirective, selector: "[bsDropdownToggle],[dropdownToggle]", exportAs: ["bs-dropdown-toggle"] }, { kind: "directive", type: i12.BsDropdownDirective, selector: "[bsDropdown], [dropdown]", inputs: ["placement", "triggers", "container", "dropup", "autoClose", "isAnimated", "insideClick", "isDisabled", "isOpen"], outputs: ["isOpenChange", "onShown", "onHidden"], exportAs: ["bs-dropdown"] }, { kind: "component", type: JaceModulesBoardComponent, selector: "jace-modules-board", inputs: ["Modules"] }, { kind: "pipe", type: i4$1.LocalizePipe, name: "localize" }], viewProviders: [{ provide: LocalizationService, useClass: NavBarLoc }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
479
|
+
Navbar.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: Navbar, deps: [{ token: i1$1.PreferencesService }, { token: i1$1.CacheService }, { token: i2.GlobalSearchService }, { token: i3$3.BaseMessageService }, { token: i3$3.NotificationsService }, { token: i4.MessageService }, { token: i5.LocalizationService }, { token: i3$2.HTTPService }, { token: i0.ChangeDetectorRef }, { token: i2.AppState }, { token: i2.TokenService }, { token: i1.Router }, { token: i2.CompletedJobRedirectionService }], target: i0.ɵɵFactoryTarget.Component });
|
|
480
|
+
Navbar.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.9", type: Navbar, selector: "navbar", viewQueries: [{ propertyName: "navbar", first: true, predicate: ["navbar"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<nav #navbar class=\"nav az-navbar fixed-top\">\r\n <!-- Logo -->\r\n <a class=\"navbar-brand\" routerLink=\"/pages/dashboard\">\r\n <img src=\"../assets/img/logo/logo.png\" class=\"d-md-block d-none\" style=\"margin-top: 10px; margin-bottom: -10px;\">\r\n <div class=\"app-fe-v d-md-block d-none\">{{ applicationVersion }}</div>\r\n\r\n <img src=\"../assets/img/logo/logo_sm.png\" class=\"d-md-none\" style=\"margin-top: 10px; margin-bottom: -10px;\">\r\n <div class=\"app-fe-sm-v d-md-none\">{{ applicationVersion }}</div>\r\n </a>\r\n\r\n <ul class=\"nav navbar-nav navbar-fillable\">\r\n <!-- Collapse men\u00F9 a sinistra -->\r\n <li><a (click)=\"toggleMenu()\" class=\"collapse-menu-link fa fa-navicon\"></a></li>\r\n\r\n <!-- Search -->\r\n <li class=\"d-none d-md-block app-relative\">\r\n <form class=\"app-search\" role=\"search\" (ngSubmit)=\"searchRequest()\">\r\n <input type=\"text\" placeholder=\"Search...\" [(ngModel)]=\"searchTerm\" (ngModelChange)=\"searchModelChanged()\" [ngModelOptions]=\"{standalone : true}\" class=\"form-control\" autocomplete=\"off\">\r\n <a><i class=\"ion-ios-search-strong\"></i></a>\r\n <button hidden></button>\r\n </form>\r\n </li>\r\n\r\n <ul class=\"nav right-section\">\r\n\r\n <!--Dropdown job in esecuzione-->\r\n <div class=\"pull-right user-menu app-no-selection app-margin-right-10\" dropdown container=\"body\" placement=\"bottom right\">\r\n <a [class.fa-spin]=\"_state.jobsInProgress > 0\" class=\"fa fa-cog dropdown-toggle app-pointer nav-jobs-icon\" dropdownToggle></a>\r\n <ul *dropdownMenu class=\"nav-jobs-menu\" role=\"menu\">\r\n <div class=\"nav-jobs-menu-header\">\r\n <span>{{'Job Applicativi' | localize : lc}}</span>\r\n <span class=\"pull-right m-t-min-2\"><mat-slide-toggle [(ngModel)]=\"_state.notifyOnCompletedJobs\" (click)=\"clearMessages(); $event.stopPropagation();\"></mat-slide-toggle></span>\r\n <span class=\"pull-right app-margin-right-5\">{{'Notifiche' | localize : lc}}:</span>\r\n </div>\r\n <div class=\"nav-jobs-menu-list\">\r\n <div *ngIf=\"_state.allJobs.length == 0\" class=\"nav-jobs-menu-list-empty\">\r\n <div>{{\"Al momento non c'\u00E8 nulla in esecuzione\" | localize : lc}}</div>\r\n </div>\r\n <div *ngFor=\"let job of _state.allJobs; let last = last\" [class.app-margin-bottom-5]=\"!last\">\r\n <span class=\"nav-jobs-menu-list-description\">\r\n <span *ngIf=\"!job.completed\" title=\"{{job.description}}\">{{job.smalldescription}}</span>\r\n <span *ngIf=\"job.completed\" title=\"{{job.description}}\" class=\"app-link app-no-selection app-inline app-pointer\" (click)=\"completedJobClicked(job); $event.stopPropagation();\">{{job.smalldescription}}</span>\r\n <strong class=\"pull-right\" *ngIf=\"!job.completed\">{{job.percentage}}%</strong>\r\n <strong class=\"pull-right\" *ngIf=\"job.completed\">{{ 'Completed' | localize : lc }}</strong>\r\n </span>\r\n <div class=\"progress progress-sm\">\r\n <progressbar *ngIf=\"!job.completed\" [max]=\"100\" [value]=\"job.percentage\" [striped]=\"true\" [animate]=\"true\"></progressbar>\r\n <progressbar *ngIf=\"job.completed\" type=\"success\" [max]=\"100\" [value]=\"100\" [striped]=\"false\" [animate]=\"false\"></progressbar>\r\n </div>\r\n </div>\r\n </div>\r\n </ul>\r\n </div>\r\n\r\n <!--Dropdown moduli-->\r\n <div class=\"pull-right user-menu app-no-selection app-margin-right-10\" dropdown container=\"body\" placement=\"bottom right\">\r\n <a class=\"fa fa-th module-nav-menu-link dropdown-toggle app-pointer\" dropdownToggle></a>\r\n <ul *dropdownMenu class=\"module-board-menu container\" role=\"menu\">\r\n <div class=\"app-relative\"><jace-modules-board [Modules]=\"Modules\"></jace-modules-board></div>\r\n </ul>\r\n </div>\r\n\r\n <!-- Calendar ??? TODO ??? -->\r\n\r\n <!-- Chatrooms ??? TODO ??? -->\r\n\r\n <!--Dropdown User Menu-->\r\n <div class=\"pull-right user-menu app-no-selection\" dropdown container=\"body\" placement=\"bottom right\" style=\"height:50px;\">\r\n <a class=\"dropdown-toggle user-link app-pointer\" dropdownToggle>\r\n <div class=\"pull-left app-margin-right-10 app-relative\">\r\n <ng-container *ngTemplateOutlet=\"userIcon;\"></ng-container>\r\n </div>\r\n <div class=\"app-white-text pull-right d-none d-sm-block\">\r\n <ng-container *ngTemplateOutlet=\"debugInfos\"></ng-container>\r\n </div>\r\n <div class=\"clearfix\"></div>\r\n </a>\r\n\r\n <ul *dropdownMenu class=\"dropdown-menu dropdown-menu-right-user app-no-padding\" role=\"menu\">\r\n <li class=\"user-info\">\r\n <div class=\"app-relative\">\r\n <ng-container *ngTemplateOutlet=\"userIcon; context: { $implicit: {right: 62} }\"></ng-container>\r\n </div>\r\n <div class=\"app-white-text app-margin-top-10 app-margin-bottom-10\">\r\n <ng-container *ngTemplateOutlet=\"debugInfos\"></ng-container>\r\n </div>\r\n </li>\r\n <a class=\"dropdown-item app-pointer\" *ngIf=\"lc.Locale == 'en-US'\" (click)=\"lc.changeLocale('it-IT')\"><i class=\"fa fa-globe\"> </i>Switch to Italian Site</a>\r\n <a class=\"dropdown-item app-pointer\" *ngIf=\"lc.Locale == 'it-IT'\" (click)=\"lc.changeLocale('en-US')\"><i class=\"fa fa-globe\"> </i>Passa al Sito in Inglese</a>\r\n <a class=\"dropdown-item app-pointer\" (click)=\"changeModule()\"><i class=\"fa fa-th\"> </i>{{'Cambia Modulo' | localize : lc}}</a>\r\n <a class=\"dropdown-item app-pointer\" (click)=\"changeTenant()\"><i class=\"fa fa-building\"> </i>{{'Cambia Tenant' | localize : lc}}</a>\r\n <a class=\"dropdown-item app-pointer\" (click)=\"clearUserPreferences()\"><i class=\"fa fa-user-times\"> </i>{{'Ripulisci le Preferenze Utente' | localize : lc}}</a>\r\n <a class=\"dropdown-item app-pointer\" (click)=\"clearAll()\"><i class=\"fa fa-recycle \"> </i>{{'Ripulisci la Cache' | localize : lc}}</a>\r\n <div class=\"dropdown-divider\"></div>\r\n <a class=\"dropdown-item app-pointer\" (click)=\"logout()\"><i class=\"fa fa-power-off\"> </i>Log out</a>\r\n </ul>\r\n </div>\r\n </ul>\r\n </ul>\r\n</nav>\r\n\r\n<!-- Template per l'icona dell'utente -->\r\n<ng-template #userIcon let-context>\r\n <img src='../assets/img/users/user.jpg' alt=\"user-img\" class=\"img-circle user-img\">\r\n <img src='../assets/img/events/christmas.png' alt=\"user-img\" class=\"img-circle user-img app-absolute app-right-0\" [style.right.px]=\"context.right || undefined\" *ngIf=\"_state.christmasTime\">\r\n <img src='../assets/img/events/halloween.png' alt=\"user-img\" class=\"img-circle user-img app-absolute app-right-0\" [style.right.px]=\"context.right || undefined\" *ngIf=\"_state.halloweenTime\">\r\n</ng-template>\r\n\r\n<!-- Template per le informaizoni di debug: Ambiente, ruoli, permessi ecc -->\r\n<ng-template #debugInfos>\r\n <div>{{CurrentIdentity?.FullName}} - ({{CurrentIdentity?.TenantName}})</div>\r\n <div class=\"text-sm-center\">\r\n <ng-container *ngIf=\"applicationEnvironment == 2\">{{'Ambiente di Sviluppo' | localize : lc}}</ng-container>\r\n <ng-container *ngIf=\"applicationEnvironment == 5\">{{'Ambiente di Staging' | localize : lc}}</ng-container>\r\n <ng-container *ngIf=\"applicationEnvironment == 6\">{{'Ambiente di Staging A' | localize : lc}}</ng-container>\r\n <ng-container *ngIf=\"applicationEnvironment == 1\">{{'Ambiente di Produzione' | localize : lc}}</ng-container>\r\n </div>\r\n <div [hidden]=\"true\">\r\n <div>Permissions:</div>\r\n <div *ngFor=\"let p of CurrentIdentity.Permissions\">{{p}}</div>\r\n <div>Roles:</div>\r\n <div *ngFor=\"let r of CurrentIdentity.Roles\">{{r}}</div>\r\n </div>\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: [".nav-jobs-icon{position:absolute;left:-20px;margin:0;padding:0;top:10px;color:#fff!important;font-size:20px}.nav-jobs-menu{width:350px;height:250px;background:white;margin:2px 0 0;padding:5px;border:1px solid #ccc}.nav-jobs-menu-header{padding:8px;font-size:14px;background-color:#242d3a;margin-top:-5px;margin-left:-5px;margin-right:-5px}.nav-jobs-menu-header span{color:#fffc}.nav-jobs-menu-list{position:relative;overflow:auto;width:auto;height:203px;padding:5px}.nav-jobs-menu-list-description{font-size:13px;color:#666}.nav-jobs-menu-list-empty{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);font-size:15px;text-align:center}.nav.az-navbar{height:60px;align-items:center;background-color:#242d3a}.nav.az-navbar .navbar-brand{width:205px;padding-top:0;font-size:0;margin-left:10px}.navbar-nav{flex-direction:row}#lines{border-bottom:7px double;border-top:2px solid;border-color:#ffffffe6;content:\"\";height:3px;width:20px;box-sizing:content-box;cursor:pointer}#lines:hover{opacity:.8}.app-search{position:relative;margin-left:20px}.app-search a{position:absolute;top:3px;right:14px;font-size:16px;color:#ffffff4d}.app-search .form-control{border:1px solid rgba(255,255,255,.1);font-size:11px;letter-spacing:.03em;height:30px;color:#fff;padding:7px 40px 7px 20px;background:rgba(255,255,255,.05);box-shadow:none;border-radius:30px;width:190px}.app-search input{border:1px solid rgba(255,255,255,.1);font-size:12px;letter-spacing:.03em;height:30px;color:#fff;padding:7px 40px 7px 20px;background:rgba(255,255,255,.05);box-shadow:none;border-radius:30px;width:240px}.completer-selected-row{background-color:#0275d8!important;color:#fff!important;width:100%!important}.completer-row{width:100%!important;color:#fff!important}.completer-dropdown{margin-top:2px!important;background-color:#344154f7!important;color:#fff;border-color:#111!important;box-shadow:0 6px 12px #0003}.search-results{left:-85px;top:-2px;z-index:1050;color:#fff;background-color:#344154f7}.search-results .btn-sm{padding:.15rem .25rem;font-size:.5rem}.search-results:before{content:\"\";border:0px}.search-results a{color:#242d3a}.search-results a:hover{color:#fff;background-color:#0275d8;cursor:pointer}.search-results a i{margin-right:8px}.right-section{position:absolute;right:10px;top:10px}.user-menu{font-size:14px}.user-menu .dropdown-toggle:after{display:none}.user-menu .dropdown-menu{right:0;top:auto!important;left:auto!important;margin-top:10px;padding-top:0;overflow:hidden;border-radius:0;font-size:14px;box-shadow:0 6px 12px #0003;transform:none!important}.user-menu .dropdown-menu a{color:#242d3a}.user-menu .dropdown-menu a:hover{color:#fff;background-color:#242d3a}.user-menu .dropdown-menu a i{margin-right:8px}.user-link{margin-right:6px}.user-link span{color:#fff;margin-left:7px;letter-spacing:.02em}.user-link img{width:40px;border-radius:50%}.user-link:hover,.user-link:focus{text-decoration:none}.user-info{background-color:#242d3a;padding:8px;text-align:center;width:240px;margin-bottom:5px}.user-info img{width:100px;margin-top:5px;border-radius:50%}.user-info p{color:#ebebeb;margin-top:10px}.user-info small{display:block}@media (max-width: 767px){.nav.az-navbar .navbar-brand{width:auto}}.navbar-search{color:#ffffff80!important}.navbar-help{font-size:20px!important;color:#ffffff80!important;border:1px solid rgba(255,255,255,.1);margin-left:5px!important;padding:5px 10px 2px 8px!important;border-radius:50%;background-color:#ffffff0d;cursor:pointer;width:31px;height:31px}.navbar-fill{margin-top:-5px;margin-bottom:-5px;margin-left:10px;width:calc(100% - 530px)}.navbar-fillable{width:calc(100% - 231px)}.navbar-floating-label{position:absolute;top:-9px;left:-5px;background:#242D3A;padding-left:5px;padding-right:5px;color:#ffffffe6!important}.collapse-menu-link{color:#fff!important;font-size:20px;padding-top:5px;cursor:pointer}.module-nav-menu-link{color:#fff!important;font-size:20px;padding-top:10px;padding-right:5px;cursor:pointer}.module-board-menu{position:relative;top:1px;background-color:#1f1f1f;padding:15px}.overlay{height:100%;width:100%;display:none;padding-left:10%;padding-right:10%;position:fixed;z-index:999999;left:0;top:0;background-color:#000;background-color:#000000e6;overflow-x:hidden;transition:.5s}.overlay-content{position:relative;top:25%;width:100%;text-align:center;margin-top:30px}.overlay p{padding:8px;text-decoration:none;font-size:36px;color:#818181;display:block;transition:.3s}.overlay a:hover,.overlay a:focus{color:#f1f1f1}.overlay .closebtn{position:absolute;top:20px;right:45px;font-size:60px}@media screen and (max-height: 450px){.overlay a{font-size:20px}.overlay .closebtn{font-size:40px;top:15px;right:35px}}\n"], dependencies: [{ kind: "directive", type: i3$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3$1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i1.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: i9.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i9.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: i9.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i9.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i9.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i9.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "component", type: i10.ProgressbarComponent, selector: "progressbar", inputs: ["max", "animate", "striped", "type", "value"] }, { kind: "component", type: i11.MatSlideToggle, selector: "mat-slide-toggle", inputs: ["disabled", "disableRipple", "color", "tabIndex"], exportAs: ["matSlideToggle"] }, { kind: "directive", type: i12.BsDropdownMenuDirective, selector: "[bsDropdownMenu],[dropdownMenu]", exportAs: ["bs-dropdown-menu"] }, { kind: "directive", type: i12.BsDropdownToggleDirective, selector: "[bsDropdownToggle],[dropdownToggle]", exportAs: ["bs-dropdown-toggle"] }, { kind: "directive", type: i12.BsDropdownDirective, selector: "[bsDropdown], [dropdown]", inputs: ["placement", "triggers", "container", "dropup", "autoClose", "isAnimated", "insideClick", "isDisabled", "isOpen"], outputs: ["isOpenChange", "onShown", "onHidden"], exportAs: ["bs-dropdown"] }, { kind: "component", type: i13.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: "component", type: JaceModulesBoardComponent, selector: "jace-modules-board", inputs: ["Modules"] }, { kind: "pipe", type: i5.LocalizePipe, name: "localize" }], viewProviders: [{ provide: LocalizationService, useClass: NavBarLoc }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
429
481
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: Navbar, decorators: [{
|
|
430
482
|
type: Component,
|
|
431
|
-
args: [{ selector: "navbar", viewProviders: [{ provide: LocalizationService, useClass: NavBarLoc }], encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, template: "<nav #navbar class=\"nav az-navbar fixed-top\">\r\n <a class=\"navbar-brand\" routerLink=\"/pages/dashboard\">\r\n <img src=\"../assets/img/logo/logo.png\" alt=\"\" class=\"d-md-block d-none\"\r\n style=\"margin-top: 10px; margin-bottom: -10px;\">\r\n <div class=\"app-fe-v d-md-block d-none\">{{ applicationVersion }}</div>\r\n\r\n <img src=\"../assets/img/logo/logo_sm.png\" alt=\"\" class=\"d-md-none\"\r\n style=\"margin-top: 10px; margin-bottom: -10px;\">\r\n <div class=\"app-fe-sm-v d-md-none\">{{ applicationVersion }}</div>\r\n </a>\r\n\r\n <ul class=\"nav navbar-nav navbar-fillable\">\r\n <li>\r\n <a (click)=\"toggleMenu()\" class=\"collapse-menu-link fa fa-navicon\"></a>\r\n </li>\r\n <li class=\"d-none d-md-block\">\r\n <form role=\"search\" class=\"app-search\">\r\n <input type=\"text\" placeholder=\"Search...\" class=\"form-control\">\r\n <a><i class=\"fa fa-search\" style=\"color: #aaa\"></i></a>\r\n </form>\r\n </li>\r\n\r\n <ul class=\"nav right-section\">\r\n\r\n <!--Dropdown job in esecuzione-->\r\n <div class=\"pull-right user-menu app-no-selection app-margin-right-10\" dropdown container=\"body\" placement=\"bottom right\">\r\n <a [class.fa-spin]=\"_state.jobsInProgress > 0\" class=\"fa fa-cog dropdown-toggle app-pointer nav-jobs-icon\" dropdownToggle></a>\r\n <ul *dropdownMenu class=\"nav-jobs-menu\" role=\"menu\">\r\n <div class=\"nav-jobs-menu-header\">\r\n <span>{{'Job Applicativi' | localize : lc}}</span>\r\n <span class=\"pull-right m-t-min-2\"><mat-slide-toggle [(ngModel)]=\"_state.notifyOnCompletedJobs\" (click)=\"clearMessages(); $event.stopPropagation();\"></mat-slide-toggle></span>\r\n <span class=\"pull-right app-margin-right-5\">{{'Notifiche' | localize : lc}}:</span>\r\n </div>\r\n <div class=\"nav-jobs-menu-list\">\r\n <div *ngIf=\"_state.allJobs.length == 0\" class=\"nav-jobs-menu-list-empty\">\r\n <div>{{\"Al momento non c'\u00E8 nulla in esecuzione\" | localize : lc}}</div>\r\n </div>\r\n <div *ngFor=\"let job of _state.allJobs; let last = last\" [class.app-margin-bottom-5]=\"!last\">\r\n <span class=\"nav-jobs-menu-list-description\">\r\n <span *ngIf=\"!job.completed\" title=\"{{job.description}}\">{{job.smalldescription}}</span>\r\n <span *ngIf=\"job.completed\" title=\"{{job.description}}\" class=\"app-link app-no-selection app-inline app-pointer\" (click)=\"completedJobClicked(job); $event.stopPropagation();\">{{job.smalldescription}}</span>\r\n <strong class=\"pull-right\" *ngIf=\"!job.completed\">{{job.percentage}}%</strong>\r\n <strong class=\"pull-right\" *ngIf=\"job.completed\">{{ 'Completed' | localize : lc }}</strong>\r\n </span>\r\n <div class=\"progress progress-sm\">\r\n <progressbar *ngIf=\"!job.completed\" [max]=\"100\" [value]=\"job.percentage\" [striped]=\"true\" [animate]=\"true\"></progressbar>\r\n <progressbar *ngIf=\"job.completed\" type=\"success\" [max]=\"100\" [value]=\"100\" [striped]=\"false\" [animate]=\"false\"></progressbar>\r\n </div>\r\n </div>\r\n </div>\r\n </ul>\r\n </div>\r\n\r\n <!--Dropdown moduli-->\r\n <div class=\"pull-right user-menu app-no-selection app-margin-right-10\" dropdown container=\"body\" placement=\"bottom right\">\r\n <a class=\"fa fa-th module-nav-menu-link dropdown-toggle app-pointer\" dropdownToggle>\r\n </a>\r\n <ul *dropdownMenu class=\"module-board-menu container\" role=\"menu\">\r\n <div class=\"app-relative\">\r\n <jace-modules-board [Modules]=\"Modules\"></jace-modules-board>\r\n </div>\r\n </ul>\r\n </div>\r\n\r\n <!-- USER MENU -->\r\n <div class=\"pull-right user-menu app-no-selection\" dropdown container=\"body\" placement=\"bottom right\" style=\"height:50px;\">\r\n <a class=\"dropdown-toggle user-link app-pointer\" dropdownToggle>\r\n <div class=\"pull-left app-margin-right-10 app-relative\">\r\n <img src='../assets/img/users/user.jpg' alt=\"user-img\" class=\"img-circle user-img\">\r\n <img src='../assets/img/events/christmas.png' alt=\"user-img\" class=\"img-circle user-img app-absolute app-right-0\" *ngIf=\"_state.christmasTime\">\r\n <img src='../assets/img/events/halloween.png' alt=\"user-img\" class=\"img-circle user-img app-absolute app-right-0\" *ngIf=\"_state.halloweenTime\">\r\n </div>\r\n <div class=\"pull-right d-none d-sm-block\">\r\n <div class=\"app-white-text\">\r\n {{LastIdentity?.FullName}} - ({{LastIdentity?.TenantName}})\r\n </div>\r\n <div class=\"app-white-text text-sm-center\">\r\n <ng-container *ngIf=\"myconfig.AppData.ComponentEnvironment == 2\">\r\n {{'Ambiente di Sviluppo' | localize : lc}}\r\n </ng-container>\r\n <ng-container *ngIf=\"myconfig.AppData.ComponentEnvironment == 5\">\r\n {{'Ambiente di Staging' | localize : lc}}\r\n </ng-container>\r\n <ng-container *ngIf=\"myconfig.AppData.ComponentEnvironment == 6\">\r\n {{'Ambiente di Staging A' | localize : lc}}\r\n </ng-container>\r\n <ng-container *ngIf=\"myconfig.AppData.ComponentEnvironment == 1\">\r\n {{'Ambiente di Produzione' | localize : lc}}\r\n </ng-container>\r\n </div>\r\n </div>\r\n <div class=\"clearfix\"></div>\r\n </a>\r\n\r\n <ul *dropdownMenu class=\"dropdown-menu dropdown-menu-right-user app-no-padding\" role=\"menu\">\r\n <li class=\"user-info\">\r\n <div class=\"app-relative\">\r\n <img src='../assets/img/users/user.jpg' alt=\"user-img\" class=\"img-circle user-img\">\r\n <img src='../assets/img/events/christmas.png' alt=\"user-img\" class=\"img-circle user-img app-absolute app-right-0\" style=\"right:62px;\" *ngIf=\"_state.christmasTime\">\r\n <img src='../assets/img/events/halloween.png' alt=\"user-img\" class=\"img-circle user-img app-absolute app-right-0\" style=\"right:62px;\" *ngIf=\"_state.halloweenTime\">\r\n </div>\r\n <div class=\"app-white-text app-margin-top-10 app-margin-bottom-10\">\r\n <div>\r\n {{LastIdentity?.FullName}} - ({{LastIdentity?.TenantName}})\r\n </div>\r\n <div *ngIf=\"myconfig.AppData.ComponentEnvironment == 2\">\r\n {{'Ambiente di Sviluppo' | localize : lc}}\r\n </div>\r\n <div *ngIf=\"myconfig.AppData.ComponentEnvironment == 5\">\r\n {{'Ambiente di Staging' | localize : lc}}\r\n </div>\r\n <div *ngIf=\"myconfig.AppData.ComponentEnvironment == 6\">\r\n {{'Ambiente di Staging A' | localize : lc}}\r\n </div>\r\n <div [hidden]=\"true\">\r\n <div>Permissions:</div>\r\n <div *ngFor=\"let p of Permissions\">{{p}}</div>\r\n <div>Roles:</div>\r\n <div *ngFor=\"let r of Roles\">{{r}}</div>\r\n </div>\r\n </div>\r\n </li>\r\n <a class=\"dropdown-item app-pointer\" *ngIf=\"thisLoc == 'en-US'\" (click)=\"lc.changeLocale('it-IT')\"><i class=\"fa fa-globe\"> </i>Switch to Italian Site</a>\r\n <a class=\"dropdown-item app-pointer\" *ngIf=\"thisLoc == 'it-IT'\" (click)=\"lc.changeLocale('en-US')\"><i class=\"fa fa-globe\"> </i>Passa al Sito in Inglese</a>\r\n <a class=\"dropdown-item app-pointer\" (click)=\"changeModule()\"><i class=\"fa fa-th\"> </i>{{'Cambia Modulo' | localize : lc}}</a>\r\n <a class=\"dropdown-item app-pointer\" (click)=\"changeTenant()\"><i class=\"fa fa-building\"> </i>{{'Cambia Tenant' | localize : lc}}</a>\r\n <a class=\"dropdown-item app-pointer\" (click)=\"clearUserPreferences()\"><i class=\"fa fa-user-times\"> </i>{{'Ripulisci le Preferenze Utente' | localize : lc}}</a>\r\n <a class=\"dropdown-item app-pointer\" (click)=\"clearAll()\"><i class=\"fa fa-recycle \"> </i>{{'Ripulisci la Cache' | localize : lc}}</a>\r\n <div class=\"dropdown-divider\"></div>\r\n <a class=\"dropdown-item app-pointer\" (click)=\"logout()\"><i class=\"fa fa-power-off\"> </i>Log out</a>\r\n </ul>\r\n </div>\r\n </ul>\r\n </ul>\r\n</nav>", styles: [".nav-jobs-icon{position:absolute;left:-20px;margin:0;padding:0;top:10px;color:#fff!important;font-size:20px}.nav-jobs-menu{width:350px;height:250px;background:white;margin:2px 0 0;padding:5px;border:1px solid #ccc}.nav-jobs-menu-header{padding:8px;font-size:14px;background-color:#242d3a;margin-top:-5px;margin-left:-5px;margin-right:-5px}.nav-jobs-menu-header span{color:#fffc}.nav-jobs-menu-list{position:relative;overflow:auto;width:auto;height:203px;padding:5px}.nav-jobs-menu-list-description{font-size:13px;color:#666}.nav-jobs-menu-list-empty{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);font-size:15px;text-align:center}.nav.az-navbar{height:60px;align-items:center;background-color:#242d3a}.nav.az-navbar .navbar-brand{width:205px;padding-top:0;font-size:0;margin-left:10px}.navbar-nav{flex-direction:row}#lines{border-bottom:7px double;border-top:2px solid;border-color:#ffffffe6;content:\"\";height:3px;width:20px;box-sizing:content-box;cursor:pointer}#lines:hover{opacity:.8}.app-search{position:relative;margin-left:20px}.app-search a{position:absolute;top:3px;right:14px;font-size:16px;color:#ffffff4d}.app-search .form-control{border:1px solid rgba(255,255,255,.1);font-size:11px;letter-spacing:.03em;height:30px;color:#fff;padding:7px 40px 7px 20px;background:rgba(255,255,255,.05);box-shadow:none;border-radius:30px;width:190px}.app-search input{border:1px solid rgba(255,255,255,.1);font-size:12px;letter-spacing:.03em;height:30px;color:#fff;padding:7px 40px 7px 20px;background:rgba(255,255,255,.05);box-shadow:none;border-radius:30px;width:240px}.completer-selected-row{background-color:#0275d8!important;color:#fff!important;width:100%!important}.completer-row{width:100%!important;color:#fff!important}.completer-dropdown{margin-top:2px!important;background-color:#344154f7!important;color:#fff;border-color:#111!important;box-shadow:0 6px 12px #0003}.search-results{left:-85px;top:-2px;z-index:1050;color:#fff;background-color:#344154f7}.search-results .btn-sm{padding:.15rem .25rem;font-size:.5rem}.search-results:before{content:\"\";border:0px}.search-results a{color:#242d3a}.search-results a:hover{color:#fff;background-color:#0275d8;cursor:pointer}.search-results a i{margin-right:8px}.right-section{position:absolute;right:10px;top:10px}.user-menu{font-size:14px}.user-menu .dropdown-toggle:after{display:none}.user-menu .dropdown-menu{right:0;top:auto!important;left:auto!important;margin-top:10px;padding-top:0;overflow:hidden;border-radius:0;font-size:14px;box-shadow:0 6px 12px #0003;transform:none!important}.user-menu .dropdown-menu a{color:#242d3a}.user-menu .dropdown-menu a:hover{color:#fff;background-color:#242d3a}.user-menu .dropdown-menu a i{margin-right:8px}.user-link{margin-right:6px}.user-link span{color:#fff;margin-left:7px;letter-spacing:.02em}.user-link img{width:40px;border-radius:50%}.user-link:hover,.user-link:focus{text-decoration:none}.user-info{background-color:#242d3a;padding:8px;text-align:center;width:240px;margin-bottom:5px}.user-info img{width:100px;margin-top:5px;border-radius:50%}.user-info p{color:#ebebeb;margin-top:10px}.user-info small{display:block}@media (max-width: 767px){.nav.az-navbar .navbar-brand{width:auto}}.navbar-search{color:#ffffff80!important}.navbar-help{font-size:20px!important;color:#ffffff80!important;border:1px solid rgba(255,255,255,.1);margin-left:5px!important;padding:5px 10px 2px 8px!important;border-radius:50%;background-color:#ffffff0d;cursor:pointer;width:31px;height:31px}.navbar-fill{margin-top:-5px;margin-bottom:-5px;margin-left:10px;width:calc(100% - 530px)}.navbar-fillable{width:calc(100% - 231px)}.navbar-floating-label{position:absolute;top:-9px;left:-5px;background:#242D3A;padding-left:5px;padding-right:5px;color:#ffffffe6!important}.collapse-menu-link{color:#fff!important;font-size:20px;padding-top:5px;cursor:pointer}.module-nav-menu-link{color:#fff!important;font-size:20px;padding-top:10px;padding-right:5px;cursor:pointer}.module-board-menu{position:relative;top:1px;background-color:#1f1f1f;padding:15px}.overlay{height:100%;width:100%;display:none;padding-left:10%;padding-right:10%;position:fixed;z-index:999999;left:0;top:0;background-color:#000;background-color:#000000e6;overflow-x:hidden;transition:.5s}.overlay-content{position:relative;top:25%;width:100%;text-align:center;margin-top:30px}.overlay p{padding:8px;text-decoration:none;font-size:36px;color:#818181;display:block;transition:.3s}.overlay a:hover,.overlay a:focus{color:#f1f1f1}.overlay .closebtn{position:absolute;top:20px;right:45px;font-size:60px}@media screen and (max-height: 450px){.overlay a{font-size:20px}.overlay .closebtn{font-size:40px;top:15px;right:35px}}\n"] }]
|
|
432
|
-
}], ctorParameters: function () { return [{ type: i1$1.PreferencesService }, { type: i1$1.CacheService }, { type: i2.
|
|
483
|
+
args: [{ selector: "navbar", viewProviders: [{ provide: LocalizationService, useClass: NavBarLoc }], encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, template: "<nav #navbar class=\"nav az-navbar fixed-top\">\r\n <!-- Logo -->\r\n <a class=\"navbar-brand\" routerLink=\"/pages/dashboard\">\r\n <img src=\"../assets/img/logo/logo.png\" class=\"d-md-block d-none\" style=\"margin-top: 10px; margin-bottom: -10px;\">\r\n <div class=\"app-fe-v d-md-block d-none\">{{ applicationVersion }}</div>\r\n\r\n <img src=\"../assets/img/logo/logo_sm.png\" class=\"d-md-none\" style=\"margin-top: 10px; margin-bottom: -10px;\">\r\n <div class=\"app-fe-sm-v d-md-none\">{{ applicationVersion }}</div>\r\n </a>\r\n\r\n <ul class=\"nav navbar-nav navbar-fillable\">\r\n <!-- Collapse men\u00F9 a sinistra -->\r\n <li><a (click)=\"toggleMenu()\" class=\"collapse-menu-link fa fa-navicon\"></a></li>\r\n\r\n <!-- Search -->\r\n <li class=\"d-none d-md-block app-relative\">\r\n <form class=\"app-search\" role=\"search\" (ngSubmit)=\"searchRequest()\">\r\n <input type=\"text\" placeholder=\"Search...\" [(ngModel)]=\"searchTerm\" (ngModelChange)=\"searchModelChanged()\" [ngModelOptions]=\"{standalone : true}\" class=\"form-control\" autocomplete=\"off\">\r\n <a><i class=\"ion-ios-search-strong\"></i></a>\r\n <button hidden></button>\r\n </form>\r\n </li>\r\n\r\n <ul class=\"nav right-section\">\r\n\r\n <!--Dropdown job in esecuzione-->\r\n <div class=\"pull-right user-menu app-no-selection app-margin-right-10\" dropdown container=\"body\" placement=\"bottom right\">\r\n <a [class.fa-spin]=\"_state.jobsInProgress > 0\" class=\"fa fa-cog dropdown-toggle app-pointer nav-jobs-icon\" dropdownToggle></a>\r\n <ul *dropdownMenu class=\"nav-jobs-menu\" role=\"menu\">\r\n <div class=\"nav-jobs-menu-header\">\r\n <span>{{'Job Applicativi' | localize : lc}}</span>\r\n <span class=\"pull-right m-t-min-2\"><mat-slide-toggle [(ngModel)]=\"_state.notifyOnCompletedJobs\" (click)=\"clearMessages(); $event.stopPropagation();\"></mat-slide-toggle></span>\r\n <span class=\"pull-right app-margin-right-5\">{{'Notifiche' | localize : lc}}:</span>\r\n </div>\r\n <div class=\"nav-jobs-menu-list\">\r\n <div *ngIf=\"_state.allJobs.length == 0\" class=\"nav-jobs-menu-list-empty\">\r\n <div>{{\"Al momento non c'\u00E8 nulla in esecuzione\" | localize : lc}}</div>\r\n </div>\r\n <div *ngFor=\"let job of _state.allJobs; let last = last\" [class.app-margin-bottom-5]=\"!last\">\r\n <span class=\"nav-jobs-menu-list-description\">\r\n <span *ngIf=\"!job.completed\" title=\"{{job.description}}\">{{job.smalldescription}}</span>\r\n <span *ngIf=\"job.completed\" title=\"{{job.description}}\" class=\"app-link app-no-selection app-inline app-pointer\" (click)=\"completedJobClicked(job); $event.stopPropagation();\">{{job.smalldescription}}</span>\r\n <strong class=\"pull-right\" *ngIf=\"!job.completed\">{{job.percentage}}%</strong>\r\n <strong class=\"pull-right\" *ngIf=\"job.completed\">{{ 'Completed' | localize : lc }}</strong>\r\n </span>\r\n <div class=\"progress progress-sm\">\r\n <progressbar *ngIf=\"!job.completed\" [max]=\"100\" [value]=\"job.percentage\" [striped]=\"true\" [animate]=\"true\"></progressbar>\r\n <progressbar *ngIf=\"job.completed\" type=\"success\" [max]=\"100\" [value]=\"100\" [striped]=\"false\" [animate]=\"false\"></progressbar>\r\n </div>\r\n </div>\r\n </div>\r\n </ul>\r\n </div>\r\n\r\n <!--Dropdown moduli-->\r\n <div class=\"pull-right user-menu app-no-selection app-margin-right-10\" dropdown container=\"body\" placement=\"bottom right\">\r\n <a class=\"fa fa-th module-nav-menu-link dropdown-toggle app-pointer\" dropdownToggle></a>\r\n <ul *dropdownMenu class=\"module-board-menu container\" role=\"menu\">\r\n <div class=\"app-relative\"><jace-modules-board [Modules]=\"Modules\"></jace-modules-board></div>\r\n </ul>\r\n </div>\r\n\r\n <!-- Calendar ??? TODO ??? -->\r\n\r\n <!-- Chatrooms ??? TODO ??? -->\r\n\r\n <!--Dropdown User Menu-->\r\n <div class=\"pull-right user-menu app-no-selection\" dropdown container=\"body\" placement=\"bottom right\" style=\"height:50px;\">\r\n <a class=\"dropdown-toggle user-link app-pointer\" dropdownToggle>\r\n <div class=\"pull-left app-margin-right-10 app-relative\">\r\n <ng-container *ngTemplateOutlet=\"userIcon;\"></ng-container>\r\n </div>\r\n <div class=\"app-white-text pull-right d-none d-sm-block\">\r\n <ng-container *ngTemplateOutlet=\"debugInfos\"></ng-container>\r\n </div>\r\n <div class=\"clearfix\"></div>\r\n </a>\r\n\r\n <ul *dropdownMenu class=\"dropdown-menu dropdown-menu-right-user app-no-padding\" role=\"menu\">\r\n <li class=\"user-info\">\r\n <div class=\"app-relative\">\r\n <ng-container *ngTemplateOutlet=\"userIcon; context: { $implicit: {right: 62} }\"></ng-container>\r\n </div>\r\n <div class=\"app-white-text app-margin-top-10 app-margin-bottom-10\">\r\n <ng-container *ngTemplateOutlet=\"debugInfos\"></ng-container>\r\n </div>\r\n </li>\r\n <a class=\"dropdown-item app-pointer\" *ngIf=\"lc.Locale == 'en-US'\" (click)=\"lc.changeLocale('it-IT')\"><i class=\"fa fa-globe\"> </i>Switch to Italian Site</a>\r\n <a class=\"dropdown-item app-pointer\" *ngIf=\"lc.Locale == 'it-IT'\" (click)=\"lc.changeLocale('en-US')\"><i class=\"fa fa-globe\"> </i>Passa al Sito in Inglese</a>\r\n <a class=\"dropdown-item app-pointer\" (click)=\"changeModule()\"><i class=\"fa fa-th\"> </i>{{'Cambia Modulo' | localize : lc}}</a>\r\n <a class=\"dropdown-item app-pointer\" (click)=\"changeTenant()\"><i class=\"fa fa-building\"> </i>{{'Cambia Tenant' | localize : lc}}</a>\r\n <a class=\"dropdown-item app-pointer\" (click)=\"clearUserPreferences()\"><i class=\"fa fa-user-times\"> </i>{{'Ripulisci le Preferenze Utente' | localize : lc}}</a>\r\n <a class=\"dropdown-item app-pointer\" (click)=\"clearAll()\"><i class=\"fa fa-recycle \"> </i>{{'Ripulisci la Cache' | localize : lc}}</a>\r\n <div class=\"dropdown-divider\"></div>\r\n <a class=\"dropdown-item app-pointer\" (click)=\"logout()\"><i class=\"fa fa-power-off\"> </i>Log out</a>\r\n </ul>\r\n </div>\r\n </ul>\r\n </ul>\r\n</nav>\r\n\r\n<!-- Template per l'icona dell'utente -->\r\n<ng-template #userIcon let-context>\r\n <img src='../assets/img/users/user.jpg' alt=\"user-img\" class=\"img-circle user-img\">\r\n <img src='../assets/img/events/christmas.png' alt=\"user-img\" class=\"img-circle user-img app-absolute app-right-0\" [style.right.px]=\"context.right || undefined\" *ngIf=\"_state.christmasTime\">\r\n <img src='../assets/img/events/halloween.png' alt=\"user-img\" class=\"img-circle user-img app-absolute app-right-0\" [style.right.px]=\"context.right || undefined\" *ngIf=\"_state.halloweenTime\">\r\n</ng-template>\r\n\r\n<!-- Template per le informaizoni di debug: Ambiente, ruoli, permessi ecc -->\r\n<ng-template #debugInfos>\r\n <div>{{CurrentIdentity?.FullName}} - ({{CurrentIdentity?.TenantName}})</div>\r\n <div class=\"text-sm-center\">\r\n <ng-container *ngIf=\"applicationEnvironment == 2\">{{'Ambiente di Sviluppo' | localize : lc}}</ng-container>\r\n <ng-container *ngIf=\"applicationEnvironment == 5\">{{'Ambiente di Staging' | localize : lc}}</ng-container>\r\n <ng-container *ngIf=\"applicationEnvironment == 6\">{{'Ambiente di Staging A' | localize : lc}}</ng-container>\r\n <ng-container *ngIf=\"applicationEnvironment == 1\">{{'Ambiente di Produzione' | localize : lc}}</ng-container>\r\n </div>\r\n <div [hidden]=\"true\">\r\n <div>Permissions:</div>\r\n <div *ngFor=\"let p of CurrentIdentity.Permissions\">{{p}}</div>\r\n <div>Roles:</div>\r\n <div *ngFor=\"let r of CurrentIdentity.Roles\">{{r}}</div>\r\n </div>\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: [".nav-jobs-icon{position:absolute;left:-20px;margin:0;padding:0;top:10px;color:#fff!important;font-size:20px}.nav-jobs-menu{width:350px;height:250px;background:white;margin:2px 0 0;padding:5px;border:1px solid #ccc}.nav-jobs-menu-header{padding:8px;font-size:14px;background-color:#242d3a;margin-top:-5px;margin-left:-5px;margin-right:-5px}.nav-jobs-menu-header span{color:#fffc}.nav-jobs-menu-list{position:relative;overflow:auto;width:auto;height:203px;padding:5px}.nav-jobs-menu-list-description{font-size:13px;color:#666}.nav-jobs-menu-list-empty{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);font-size:15px;text-align:center}.nav.az-navbar{height:60px;align-items:center;background-color:#242d3a}.nav.az-navbar .navbar-brand{width:205px;padding-top:0;font-size:0;margin-left:10px}.navbar-nav{flex-direction:row}#lines{border-bottom:7px double;border-top:2px solid;border-color:#ffffffe6;content:\"\";height:3px;width:20px;box-sizing:content-box;cursor:pointer}#lines:hover{opacity:.8}.app-search{position:relative;margin-left:20px}.app-search a{position:absolute;top:3px;right:14px;font-size:16px;color:#ffffff4d}.app-search .form-control{border:1px solid rgba(255,255,255,.1);font-size:11px;letter-spacing:.03em;height:30px;color:#fff;padding:7px 40px 7px 20px;background:rgba(255,255,255,.05);box-shadow:none;border-radius:30px;width:190px}.app-search input{border:1px solid rgba(255,255,255,.1);font-size:12px;letter-spacing:.03em;height:30px;color:#fff;padding:7px 40px 7px 20px;background:rgba(255,255,255,.05);box-shadow:none;border-radius:30px;width:240px}.completer-selected-row{background-color:#0275d8!important;color:#fff!important;width:100%!important}.completer-row{width:100%!important;color:#fff!important}.completer-dropdown{margin-top:2px!important;background-color:#344154f7!important;color:#fff;border-color:#111!important;box-shadow:0 6px 12px #0003}.search-results{left:-85px;top:-2px;z-index:1050;color:#fff;background-color:#344154f7}.search-results .btn-sm{padding:.15rem .25rem;font-size:.5rem}.search-results:before{content:\"\";border:0px}.search-results a{color:#242d3a}.search-results a:hover{color:#fff;background-color:#0275d8;cursor:pointer}.search-results a i{margin-right:8px}.right-section{position:absolute;right:10px;top:10px}.user-menu{font-size:14px}.user-menu .dropdown-toggle:after{display:none}.user-menu .dropdown-menu{right:0;top:auto!important;left:auto!important;margin-top:10px;padding-top:0;overflow:hidden;border-radius:0;font-size:14px;box-shadow:0 6px 12px #0003;transform:none!important}.user-menu .dropdown-menu a{color:#242d3a}.user-menu .dropdown-menu a:hover{color:#fff;background-color:#242d3a}.user-menu .dropdown-menu a i{margin-right:8px}.user-link{margin-right:6px}.user-link span{color:#fff;margin-left:7px;letter-spacing:.02em}.user-link img{width:40px;border-radius:50%}.user-link:hover,.user-link:focus{text-decoration:none}.user-info{background-color:#242d3a;padding:8px;text-align:center;width:240px;margin-bottom:5px}.user-info img{width:100px;margin-top:5px;border-radius:50%}.user-info p{color:#ebebeb;margin-top:10px}.user-info small{display:block}@media (max-width: 767px){.nav.az-navbar .navbar-brand{width:auto}}.navbar-search{color:#ffffff80!important}.navbar-help{font-size:20px!important;color:#ffffff80!important;border:1px solid rgba(255,255,255,.1);margin-left:5px!important;padding:5px 10px 2px 8px!important;border-radius:50%;background-color:#ffffff0d;cursor:pointer;width:31px;height:31px}.navbar-fill{margin-top:-5px;margin-bottom:-5px;margin-left:10px;width:calc(100% - 530px)}.navbar-fillable{width:calc(100% - 231px)}.navbar-floating-label{position:absolute;top:-9px;left:-5px;background:#242D3A;padding-left:5px;padding-right:5px;color:#ffffffe6!important}.collapse-menu-link{color:#fff!important;font-size:20px;padding-top:5px;cursor:pointer}.module-nav-menu-link{color:#fff!important;font-size:20px;padding-top:10px;padding-right:5px;cursor:pointer}.module-board-menu{position:relative;top:1px;background-color:#1f1f1f;padding:15px}.overlay{height:100%;width:100%;display:none;padding-left:10%;padding-right:10%;position:fixed;z-index:999999;left:0;top:0;background-color:#000;background-color:#000000e6;overflow-x:hidden;transition:.5s}.overlay-content{position:relative;top:25%;width:100%;text-align:center;margin-top:30px}.overlay p{padding:8px;text-decoration:none;font-size:36px;color:#818181;display:block;transition:.3s}.overlay a:hover,.overlay a:focus{color:#f1f1f1}.overlay .closebtn{position:absolute;top:20px;right:45px;font-size:60px}@media screen and (max-height: 450px){.overlay a{font-size:20px}.overlay .closebtn{font-size:40px;top:15px;right:35px}}\n"] }]
|
|
484
|
+
}], ctorParameters: function () { return [{ type: i1$1.PreferencesService }, { type: i1$1.CacheService }, { type: i2.GlobalSearchService }, { type: i3$3.BaseMessageService }, { type: i3$3.NotificationsService }, { type: i4.MessageService }, { type: i5.LocalizationService }, { type: i3$2.HTTPService }, { type: i0.ChangeDetectorRef }, { type: i2.AppState }, { type: i2.TokenService }, { type: i1.Router }, { type: i2.CompletedJobRedirectionService }]; }, propDecorators: { navbar: [{
|
|
433
485
|
type: ViewChild,
|
|
434
486
|
args: ["navbar", { static: false }]
|
|
435
487
|
}] } });
|
|
436
488
|
|
|
437
|
-
// Angular
|
|
438
|
-
class SidebarService {
|
|
439
|
-
constructor(utiExts, aac, menuItems) {
|
|
440
|
-
this.utiExts = utiExts;
|
|
441
|
-
this.aac = aac;
|
|
442
|
-
this.menuItems = menuItems;
|
|
443
|
-
this.custom_permissions = [];
|
|
444
|
-
}
|
|
445
|
-
getMenuItems() {
|
|
446
|
-
var items = [];
|
|
447
|
-
var itemsTMP = this.utiExts.deepClone(this.menuItems);
|
|
448
|
-
itemsTMP.forEach(t => {
|
|
449
|
-
if (!t.ac || this.aac.has(t.ac)) {
|
|
450
|
-
if (!t.subMenu || t.subMenu.length == 0)
|
|
451
|
-
items.push(t);
|
|
452
|
-
else {
|
|
453
|
-
var toPush = this.checkSubMenuOverClaims(t);
|
|
454
|
-
items.push(toPush);
|
|
455
|
-
}
|
|
456
|
-
}
|
|
457
|
-
// Calcolo qui per non doverlo calcolare lato HTML
|
|
458
|
-
t.padding_left = t.level > 2 ? (65 + ((t.level - 3) * 15) + 'px !important') : null;
|
|
459
|
-
});
|
|
460
|
-
return items;
|
|
461
|
-
}
|
|
462
|
-
checkSubMenuOverClaims(menuItem) {
|
|
463
|
-
var menuTMP = this.utiExts.deepClone(menuItem);
|
|
464
|
-
menuTMP.subMenu = [];
|
|
465
|
-
menuItem.subMenu.forEach(t => {
|
|
466
|
-
if (!t.ac || this.aac.has(t.ac)) {
|
|
467
|
-
if (!t.subMenu || t.subMenu.length == 0)
|
|
468
|
-
menuTMP.subMenu.push(t);
|
|
469
|
-
else {
|
|
470
|
-
var toPush = this.checkSubMenuOverClaims(t);
|
|
471
|
-
menuTMP.subMenu.push(toPush);
|
|
472
|
-
}
|
|
473
|
-
}
|
|
474
|
-
});
|
|
475
|
-
return menuTMP;
|
|
476
|
-
}
|
|
477
|
-
}
|
|
478
|
-
SidebarService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: SidebarService, deps: [{ token: i3$3.UtilityService }, { token: i2$1.AccessControlService }, { token: MENU }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
479
|
-
SidebarService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: SidebarService });
|
|
480
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: SidebarService, decorators: [{
|
|
481
|
-
type: Injectable
|
|
482
|
-
}], ctorParameters: function () {
|
|
483
|
-
return [{ type: i3$3.UtilityService }, { type: i2$1.AccessControlService }, { type: undefined, decorators: [{
|
|
484
|
-
type: Inject,
|
|
485
|
-
args: [MENU]
|
|
486
|
-
}] }];
|
|
487
|
-
} });
|
|
488
|
-
class MenuItem {
|
|
489
|
-
}
|
|
490
|
-
|
|
491
|
-
// Angular
|
|
492
489
|
class Sidebar {
|
|
493
|
-
constructor(lc, lcMenu, cdr, _elementRef, _router, _state,
|
|
490
|
+
constructor(lc, lcMenu, cdr, _elementRef, _router, _state, zone, utiExts, aac, menuItemsRaw, menuFilteringService) {
|
|
494
491
|
this.lc = lc;
|
|
495
492
|
this.cdr = cdr;
|
|
496
493
|
this._elementRef = _elementRef;
|
|
497
494
|
this._router = _router;
|
|
498
495
|
this._state = _state;
|
|
499
|
-
this._sidebarService = _sidebarService;
|
|
500
496
|
this.zone = zone;
|
|
497
|
+
this.utiExts = utiExts;
|
|
498
|
+
this.aac = aac;
|
|
499
|
+
this.menuItemsRaw = menuItemsRaw;
|
|
500
|
+
this.menuFilteringService = menuFilteringService;
|
|
501
501
|
this.isMenuCollapsed = false;
|
|
502
502
|
this.isMenuShouldCollapsed = false;
|
|
503
|
+
this.lc = this.lc.generateFromType(lcMenu);
|
|
503
504
|
this._state.subscribe("menu.isCollapsed", (isCollapsed) => {
|
|
504
505
|
this.isMenuCollapsed = isCollapsed;
|
|
505
506
|
this.cdr.markForCheck();
|
|
@@ -511,35 +512,57 @@ class Sidebar {
|
|
|
511
512
|
this._router.events.subscribe(event => {
|
|
512
513
|
if (event instanceof NavigationEnd) {
|
|
513
514
|
let width = (window.innerWidth > 0) ? window.innerWidth : screen.width;
|
|
514
|
-
if (width <= 768)
|
|
515
|
+
if (width <= 768)
|
|
515
516
|
this._state.notifyDataChanged("menu.isCollapsed", true);
|
|
516
|
-
}
|
|
517
517
|
window.scrollTo(0, 0);
|
|
518
518
|
}
|
|
519
519
|
});
|
|
520
|
-
this.lc = this.lc.generateFromType(lcMenu);
|
|
521
520
|
}
|
|
522
521
|
ngOnInit() {
|
|
523
|
-
|
|
524
|
-
|
|
525
|
-
|
|
526
|
-
|
|
527
|
-
|
|
528
|
-
|
|
529
|
-
|
|
530
|
-
this.
|
|
531
|
-
|
|
532
|
-
if (this._shouldMenuCollapse())
|
|
533
|
-
this.menuCollapse();
|
|
534
|
-
this.updateSidebarHeight();
|
|
535
|
-
this._state.setSidebarWidth(this.sidebar.nativeElement.offsetWidth);
|
|
522
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
523
|
+
let tmpMenuItems = this.getMenuItems();
|
|
524
|
+
this.menuItems = yield firstValueFrom(this.menuFilteringService.filter(tmpMenuItems));
|
|
525
|
+
if (this._shouldMenuCollapse())
|
|
526
|
+
this.menuCollapse();
|
|
527
|
+
this.updateSidebarHeight();
|
|
528
|
+
this._state.setSidebarWidth(this.sidebar.nativeElement.offsetWidth);
|
|
529
|
+
this.cdr.markForCheck();
|
|
530
|
+
});
|
|
536
531
|
}
|
|
537
|
-
|
|
538
|
-
|
|
539
|
-
|
|
540
|
-
|
|
541
|
-
|
|
542
|
-
this.
|
|
532
|
+
getMenuItems() {
|
|
533
|
+
var items = [];
|
|
534
|
+
for (let i = 0; i < this.menuItemsRaw.length; i++) {
|
|
535
|
+
let t = this.menuItemsRaw[i];
|
|
536
|
+
t.level = 1;
|
|
537
|
+
if (!t.ac || this.aac.has(t.ac)) {
|
|
538
|
+
if (!t.subMenu || t.subMenu.length == 0)
|
|
539
|
+
items.push(t);
|
|
540
|
+
else {
|
|
541
|
+
var toPush = this.checkSubMenuOverClaims(t, 1);
|
|
542
|
+
items.push(toPush);
|
|
543
|
+
}
|
|
544
|
+
}
|
|
545
|
+
}
|
|
546
|
+
return items;
|
|
547
|
+
}
|
|
548
|
+
checkSubMenuOverClaims(menuItem, level) {
|
|
549
|
+
var item = this.utiExts.deepClone(menuItem);
|
|
550
|
+
item.subMenu = [];
|
|
551
|
+
for (let i = 0; i < menuItem.subMenu.length; i++) {
|
|
552
|
+
let t = menuItem.subMenu[i];
|
|
553
|
+
t.level = level + 1;
|
|
554
|
+
if (!t.ac || this.aac.has(t.ac)) {
|
|
555
|
+
if (!t.subMenu || t.subMenu.length == 0)
|
|
556
|
+
item.subMenu.push(t);
|
|
557
|
+
else {
|
|
558
|
+
var toPush = this.checkSubMenuOverClaims(t, level + 1);
|
|
559
|
+
item.subMenu.push(toPush);
|
|
560
|
+
}
|
|
561
|
+
}
|
|
562
|
+
// Calcolo qui per non doverlo calcolare lato HTML
|
|
563
|
+
t.padding_left = level > 2 ? (65 + ((level - 3) * 15) + 'px !important') : null;
|
|
564
|
+
}
|
|
565
|
+
return item;
|
|
543
566
|
}
|
|
544
567
|
onWindowResize() {
|
|
545
568
|
var isMenuShouldCollapsed = this._shouldMenuCollapse();
|
|
@@ -580,7 +603,7 @@ class Sidebar {
|
|
|
580
603
|
this.menuHeight = this._elementRef.nativeElement.children[0].clientHeight - 60;
|
|
581
604
|
}
|
|
582
605
|
//Nonostante questa funzione sia collegata con (click.out-zone) per qualche motivo angular le esegue comunque nella sua zone
|
|
583
|
-
//generando un po' di
|
|
606
|
+
//generando un po' di irresponsività iniziale... succede solo col click... boh
|
|
584
607
|
collapseMenu($event, item) {
|
|
585
608
|
if (this.isMenuCollapsed)
|
|
586
609
|
this.menuExpand();
|
|
@@ -595,15 +618,15 @@ class Sidebar {
|
|
|
595
618
|
let levelClassPlusOne = item.level ? "level-" + (item.level + 1) : "";
|
|
596
619
|
let slidePeriod = 400;
|
|
597
620
|
var link = jQuery($event.currentTarget);
|
|
598
|
-
//Se l'elemento non
|
|
621
|
+
//Se l'elemento non è espanso
|
|
599
622
|
if (!link.closest(".sidebar-item-expanded" + "_" + levelClass).length) {
|
|
600
623
|
//Tiro su tutti gli elementi dello stesso livello espansi e li chiudo
|
|
601
|
-
//Se ho compresso un menu vado a vedere se c'
|
|
624
|
+
//Se ho compresso un menu vado a vedere se c'è anche un altro menu di livello pi� basso da richiudere
|
|
602
625
|
jQuery("ul.nav-sidebar li" + "." + (levelClassPlusOne)).each(function () {
|
|
603
626
|
let closestLi = jQuery(this).closest("li");
|
|
604
627
|
if (closestLi.children("ul").length && closestLi.hasClass("sidebar-item-expanded")) {
|
|
605
628
|
closestLi.children("ul").slideUp(slidePeriod);
|
|
606
|
-
//Le uso sempre entrambe insieme. La prima
|
|
629
|
+
//Le uso sempre entrambe insieme. La prima è la classe per la logica, la seconda per le animazioni
|
|
607
630
|
closestLi.removeClass("sidebar-item-expanded" + "_" + (levelClassPlusOne));
|
|
608
631
|
closestLi.removeClass("sidebar-item-expanded");
|
|
609
632
|
}
|
|
@@ -613,7 +636,7 @@ class Sidebar {
|
|
|
613
636
|
let closestLi = jQuery(this).closest("li");
|
|
614
637
|
if (closestLi.children("ul").length && closestLi.hasClass("sidebar-item-expanded")) {
|
|
615
638
|
closestLi.children("ul").slideUp(slidePeriod);
|
|
616
|
-
//Le uso sempre entrambe insieme. La prima
|
|
639
|
+
//Le uso sempre entrambe insieme. La prima è la classe per la logica, la seconda per le animazioni
|
|
617
640
|
closestLi.removeClass("sidebar-item-expanded" + "_" + levelClass);
|
|
618
641
|
closestLi.removeClass("sidebar-item-expanded");
|
|
619
642
|
}
|
|
@@ -621,15 +644,15 @@ class Sidebar {
|
|
|
621
644
|
//Dopodich� espando quello attuale
|
|
622
645
|
link.next().slideDown(slidePeriod);
|
|
623
646
|
if (item.subMenu) {
|
|
624
|
-
//Le uso sempre entrambe insieme. La prima
|
|
647
|
+
//Le uso sempre entrambe insieme. La prima è la classe per la logica, la seconda per le animazioni
|
|
625
648
|
link.closest("li").addClass("sidebar-item-expanded" + "_" + levelClass);
|
|
626
649
|
link.closest("li").addClass("sidebar-item-expanded");
|
|
627
650
|
}
|
|
628
651
|
}
|
|
629
652
|
else {
|
|
630
|
-
//Altrimenti, se l'elemento
|
|
653
|
+
//Altrimenti, se l'elemento è già espanso lo chiudo
|
|
631
654
|
if (item.subMenu) {
|
|
632
|
-
//Le uso sempre entrambe insieme. La prima
|
|
655
|
+
//Le uso sempre entrambe insieme. La prima è la classe per la logica, la seconda per le animazioni
|
|
633
656
|
link.closest("li").removeClass("sidebar-item-expanded" + "_" + levelClass);
|
|
634
657
|
link.closest("li").removeClass("sidebar-item-expanded");
|
|
635
658
|
}
|
|
@@ -637,18 +660,21 @@ class Sidebar {
|
|
|
637
660
|
}
|
|
638
661
|
}
|
|
639
662
|
}
|
|
640
|
-
Sidebar.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: Sidebar, deps: [{ token:
|
|
641
|
-
Sidebar.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.9", type: Sidebar, selector: "sidebar", host: { listeners: { "window:resize": "onWindowResize()" } },
|
|
663
|
+
Sidebar.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: Sidebar, deps: [{ token: i5.LocalizationService }, { token: MENU_LOCALIZATION, optional: true }, { token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i1.Router }, { token: i2.AppState }, { token: i0.NgZone }, { token: i4.UtilityService }, { token: i5$1.AccessControlService }, { token: MENU }, { token: i2.MenuFilteringService }], target: i0.ɵɵFactoryTarget.Component });
|
|
664
|
+
Sidebar.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.9", type: Sidebar, selector: "sidebar", host: { listeners: { "window:resize": "onWindowResize()" } }, viewQueries: [{ propertyName: "sidebar", first: true, predicate: ["sidebar"], descendants: true, static: true }], ngImport: i0, template: "<div class=\"app-sidebar\" #sidebar [ngClass]=\"{'menu-collapsed': isMenuCollapsed}\" (mouseleave.out-zone)=\"sendAwayHoverElement();\">\r\n <ul class=\"nav nav-sidebar flex-column flex-nowrap\" slim-scroll [slimScrollOptions]=\"{height: menuHeight}\" style=\"position:relative; zoom:1\">\r\n\r\n <li *ngFor=\"let item of menuItems\" class=\"sidebar-list-item level-{{item.level}}\" [ngClass]=\"{'has-sub-menu': item.subMenu, 'sidebar-item-expanded': item.expanded}\" [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\r\n <div class=\"sidebar-hover-elem\"></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=\"fa 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>", styles: [".app-sidebar{background:#344154;height:100%;min-height:100%;position:fixed;width:230px;overflow:hidden;display:block;z-index:9;margin-top:60px}.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 rgba(36,45,58,.5);box-shadow:0 1px #ffffff1a}.sidebar-item-wip{cursor:default}.sidebar-item-wip a{color:#999!important}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;color:#fff;transition:transform .2s linear}a.sidebar-list-link:hover{background-color:#242d3a}.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:#242d3a80}.sidebar-sublist li{display:block;float:none;padding:0;border-bottom:none;position:relative;border-bottom:1px solid rgba(36,45,58,.7)}.sidebar-sublist li:last-child{border-bottom:none}.sidebar-sublist li a{display:block;text-shadow:none;font-size:13px;text-decoration:none;color:#fff;padding-left:40px!important;height:42px;line-height:42px}.sidebar-sublist li a:before{font-family:FontAwesome;content:\"\\f1db\";margin-right:10px;font-size:10px}.sidebar-sublist li a:hover{background-color:#242d3a}.sidebar-sublist .subitem-submenu-list li{border-top:1px solid rgba(36,45,58,.7)}.sidebar-item-expanded>ul.sidebar-sublist{display:block;background-color:#242d3a80}.subitem-submenu-link .fa{top:14px}.sidebar-hover-elem{width:4px;background:#637CA0;position:absolute;top:-150px;left:226px;transition:all .2s ease;transition-property:top,height;height:36px;display:block}.sidebar.menu-collapsed .sidebar-hover-elem{left:46px}.active-link{background-color:#637ca0}@media (max-width: 544px){.sidebar.menu-collapsed{width:0}.sidebar-hover-elem,.sidebar-select-elem{display:none}}\n"], dependencies: [{ kind: "directive", type: i3$1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3$1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i1.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: i1.RouterLinkActive, selector: "[routerLinkActive]", inputs: ["routerLinkActiveOptions", "ariaCurrentWhenActive", "routerLinkActive"], outputs: ["isActiveChange"], exportAs: ["routerLinkActive"] }, { kind: "directive", type: i7.SlimScroll, selector: "[slim-scroll]", inputs: ["slimScrollOptions"] }, { kind: "pipe", type: i5.LocalizePipe, name: "localize" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
642
665
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: Sidebar, decorators: [{
|
|
643
666
|
type: Component,
|
|
644
|
-
args: [{ selector: "sidebar", encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush,
|
|
667
|
+
args: [{ selector: "sidebar", encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"app-sidebar\" #sidebar [ngClass]=\"{'menu-collapsed': isMenuCollapsed}\" (mouseleave.out-zone)=\"sendAwayHoverElement();\">\r\n <ul class=\"nav nav-sidebar flex-column flex-nowrap\" slim-scroll [slimScrollOptions]=\"{height: menuHeight}\" style=\"position:relative; zoom:1\">\r\n\r\n <li *ngFor=\"let item of menuItems\" class=\"sidebar-list-item level-{{item.level}}\" [ngClass]=\"{'has-sub-menu': item.subMenu, 'sidebar-item-expanded': item.expanded}\" [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\r\n <div class=\"sidebar-hover-elem\"></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=\"fa 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>", styles: [".app-sidebar{background:#344154;height:100%;min-height:100%;position:fixed;width:230px;overflow:hidden;display:block;z-index:9;margin-top:60px}.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 rgba(36,45,58,.5);box-shadow:0 1px #ffffff1a}.sidebar-item-wip{cursor:default}.sidebar-item-wip a{color:#999!important}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;color:#fff;transition:transform .2s linear}a.sidebar-list-link:hover{background-color:#242d3a}.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:#242d3a80}.sidebar-sublist li{display:block;float:none;padding:0;border-bottom:none;position:relative;border-bottom:1px solid rgba(36,45,58,.7)}.sidebar-sublist li:last-child{border-bottom:none}.sidebar-sublist li a{display:block;text-shadow:none;font-size:13px;text-decoration:none;color:#fff;padding-left:40px!important;height:42px;line-height:42px}.sidebar-sublist li a:before{font-family:FontAwesome;content:\"\\f1db\";margin-right:10px;font-size:10px}.sidebar-sublist li a:hover{background-color:#242d3a}.sidebar-sublist .subitem-submenu-list li{border-top:1px solid rgba(36,45,58,.7)}.sidebar-item-expanded>ul.sidebar-sublist{display:block;background-color:#242d3a80}.subitem-submenu-link .fa{top:14px}.sidebar-hover-elem{width:4px;background:#637CA0;position:absolute;top:-150px;left:226px;transition:all .2s ease;transition-property:top,height;height:36px;display:block}.sidebar.menu-collapsed .sidebar-hover-elem{left:46px}.active-link{background-color:#637ca0}@media (max-width: 544px){.sidebar.menu-collapsed{width:0}.sidebar-hover-elem,.sidebar-select-elem{display:none}}\n"] }]
|
|
645
668
|
}], ctorParameters: function () {
|
|
646
|
-
return [{ type:
|
|
669
|
+
return [{ type: i5.LocalizationService }, { type: i0.Type, decorators: [{
|
|
647
670
|
type: Optional
|
|
648
671
|
}, {
|
|
649
672
|
type: Inject,
|
|
650
673
|
args: [MENU_LOCALIZATION]
|
|
651
|
-
}] }, { type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i1.Router }, { type:
|
|
674
|
+
}] }, { type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i1.Router }, { type: i2.AppState }, { type: i0.NgZone }, { type: i4.UtilityService }, { type: i5$1.AccessControlService }, { type: undefined, decorators: [{
|
|
675
|
+
type: Inject,
|
|
676
|
+
args: [MENU]
|
|
677
|
+
}] }, { type: i2.MenuFilteringService }];
|
|
652
678
|
}, propDecorators: { sidebar: [{
|
|
653
679
|
type: ViewChild,
|
|
654
680
|
args: ["sidebar", { static: true }]
|
|
@@ -694,12 +720,12 @@ class PagesComponent {
|
|
|
694
720
|
this.getHeight();
|
|
695
721
|
}
|
|
696
722
|
}
|
|
697
|
-
PagesComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: PagesComponent, deps: [{ token: i3.DomSanitizer }, { token:
|
|
723
|
+
PagesComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: PagesComponent, deps: [{ token: i3.DomSanitizer }, { token: i2.AppState }, { token: i3$1.Location }, { token: i1.Router }], target: i0.ɵɵFactoryTarget.Component });
|
|
698
724
|
PagesComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.9", type: PagesComponent, selector: "pages", host: { listeners: { "window:resize": "onResize($event)" } }, ngImport: i0, template: "<navbar></navbar>\r\n<div class=\"container-fluid\">\r\n <div class=\"row\">\r\n <sidebar></sidebar>\r\n <div class=\"main-wrapper\" [style.max-height.px]=\"maxHeight\" [ngClass]=\"{'menu-collapsed': isMenuCollapsed}\">\r\n <div class=\"az-overlay\" *ngIf=\"!isMenuCollapsed\" (click)=\"hideMenu()\"></div>\r\n\r\n <div class=\"main\">\r\n <breadcrumb></breadcrumb>\r\n <router-outlet></router-outlet>\r\n </div>\r\n\r\n <back-top [position]=\"200\"></back-top>\r\n </div>\r\n </div>\r\n</div>", styles: [".main-wrapper{margin-left:230px;padding:20px 40px;margin-top:60px;position:relative;width:100%;overflow:auto}.main-wrapper.menu-collapsed{margin-left:50px}.main{height:100%;min-height:500px}.footer{padding-top:20px}.footer .footer-main{display:inline-block}.footer .footer-main .copyright{color:#242424;font-size:14px}.footer .footer-main .copyright a{color:#242d3a}.footer .footer-main .share{padding-left:5px;margin:0}.footer .footer-main .share li{list-style:none;float:left;margin-left:10px}.footer .footer-main .share li i{cursor:pointer;transition:all .1s ease;color:#fff;padding:9px 9px 6px;font-size:12px;border-radius:50%;background-color:#242d3a}.footer .footer-main .share li i.socicon-facebook{background-color:#3b5998}.footer .footer-main .share li i.socicon-twitter{background-color:#55acee}.footer .footer-main .share li i.socicon-instagram{background-color:#8a3ab9}.footer .footer-main .share li i.socicon-pinterest{background-color:#c92228}.footer .footer-main .share li i:hover{opacity:.9}.footer .created{color:#242424;font-size:14px}.footer .created i{color:red}.az-overlay{position:fixed;inset:0;z-index:8;background:rgba(36,45,58,.2);width:100%;height:100%;display:none}@media (max-width: 544px){.main-wrapper,.main-wrapper.menu-collapsed{margin-left:0;padding:30px 20px}.az-overlay{display:block}.footer .footer-main,.footer .created{float:none}}@media (min-width: 544px) and (max-width: 768px){.main-wrapper,.main-wrapper.menu-collapsed{margin-left:50px}.az-overlay{display:block}}\n"], dependencies: [{ kind: "directive", type: i3$1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.RouterOutlet, selector: "router-outlet", inputs: ["name"], outputs: ["activate", "deactivate", "attach", "detach"], exportAs: ["outlet"] }, { kind: "component", type: BackTop, selector: "back-top", inputs: ["position", "showSpeed", "moveSpeed"] }, { kind: "component", type: Breadcrumb, selector: "breadcrumb" }, { kind: "component", type: Navbar, selector: "navbar" }, { kind: "component", type: Sidebar, selector: "sidebar" }], encapsulation: i0.ViewEncapsulation.None });
|
|
699
725
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: PagesComponent, decorators: [{
|
|
700
726
|
type: Component,
|
|
701
727
|
args: [{ selector: "pages", encapsulation: ViewEncapsulation.None, template: "<navbar></navbar>\r\n<div class=\"container-fluid\">\r\n <div class=\"row\">\r\n <sidebar></sidebar>\r\n <div class=\"main-wrapper\" [style.max-height.px]=\"maxHeight\" [ngClass]=\"{'menu-collapsed': isMenuCollapsed}\">\r\n <div class=\"az-overlay\" *ngIf=\"!isMenuCollapsed\" (click)=\"hideMenu()\"></div>\r\n\r\n <div class=\"main\">\r\n <breadcrumb></breadcrumb>\r\n <router-outlet></router-outlet>\r\n </div>\r\n\r\n <back-top [position]=\"200\"></back-top>\r\n </div>\r\n </div>\r\n</div>", styles: [".main-wrapper{margin-left:230px;padding:20px 40px;margin-top:60px;position:relative;width:100%;overflow:auto}.main-wrapper.menu-collapsed{margin-left:50px}.main{height:100%;min-height:500px}.footer{padding-top:20px}.footer .footer-main{display:inline-block}.footer .footer-main .copyright{color:#242424;font-size:14px}.footer .footer-main .copyright a{color:#242d3a}.footer .footer-main .share{padding-left:5px;margin:0}.footer .footer-main .share li{list-style:none;float:left;margin-left:10px}.footer .footer-main .share li i{cursor:pointer;transition:all .1s ease;color:#fff;padding:9px 9px 6px;font-size:12px;border-radius:50%;background-color:#242d3a}.footer .footer-main .share li i.socicon-facebook{background-color:#3b5998}.footer .footer-main .share li i.socicon-twitter{background-color:#55acee}.footer .footer-main .share li i.socicon-instagram{background-color:#8a3ab9}.footer .footer-main .share li i.socicon-pinterest{background-color:#c92228}.footer .footer-main .share li i:hover{opacity:.9}.footer .created{color:#242424;font-size:14px}.footer .created i{color:red}.az-overlay{position:fixed;inset:0;z-index:8;background:rgba(36,45,58,.2);width:100%;height:100%;display:none}@media (max-width: 544px){.main-wrapper,.main-wrapper.menu-collapsed{margin-left:0;padding:30px 20px}.az-overlay{display:block}.footer .footer-main,.footer .created{float:none}}@media (min-width: 544px) and (max-width: 768px){.main-wrapper,.main-wrapper.menu-collapsed{margin-left:50px}.az-overlay{display:block}}\n"] }]
|
|
702
|
-
}], ctorParameters: function () { return [{ type: i3.DomSanitizer }, { type:
|
|
728
|
+
}], ctorParameters: function () { return [{ type: i3.DomSanitizer }, { type: i2.AppState }, { type: i3$1.Location }, { type: i1.Router }]; }, propDecorators: { onResize: [{
|
|
703
729
|
type: HostListener,
|
|
704
730
|
args: ['window:resize', ['$event']]
|
|
705
731
|
}] } });
|
|
@@ -715,7 +741,6 @@ class ExternalPagesComponent {
|
|
|
715
741
|
this.Username = "";
|
|
716
742
|
this.Password = "";
|
|
717
743
|
this.Tenant = "";
|
|
718
|
-
this._state.registerNavigation(this.route.snapshot);
|
|
719
744
|
this.Username = this.route.snapshot.params["user"];
|
|
720
745
|
this.Password = this.route.snapshot.params["pswd"];
|
|
721
746
|
this.Tenant = this.route.snapshot.params["tnt"];
|
|
@@ -736,12 +761,12 @@ class ExternalPagesComponent {
|
|
|
736
761
|
});
|
|
737
762
|
}
|
|
738
763
|
}
|
|
739
|
-
ExternalPagesComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: ExternalPagesComponent, deps: [{ token:
|
|
764
|
+
ExternalPagesComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: ExternalPagesComponent, deps: [{ token: i5$1.AccessControlService }, { token: i5.LocalizationService }, { token: i3$2.HTTPService }, { token: i2.AppState }, { token: i1.ActivatedRoute }, { token: i2.TokenService }], target: i0.ɵɵFactoryTarget.Component });
|
|
740
765
|
ExternalPagesComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.9", type: ExternalPagesComponent, selector: "external-pages", ngImport: i0, template: "<router-outlet></router-outlet>", dependencies: [{ kind: "directive", type: i1.RouterOutlet, selector: "router-outlet", inputs: ["name"], outputs: ["activate", "deactivate", "attach", "detach"], exportAs: ["outlet"] }] });
|
|
741
766
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: ExternalPagesComponent, decorators: [{
|
|
742
767
|
type: Component,
|
|
743
768
|
args: [{ selector: "external-pages", template: "<router-outlet></router-outlet>" }]
|
|
744
|
-
}], ctorParameters: function () { return [{ type:
|
|
769
|
+
}], ctorParameters: function () { return [{ type: i5$1.AccessControlService }, { type: i5.LocalizationService }, { type: i3$2.HTTPService }, { type: i2.AppState }, { type: i1.ActivatedRoute }, { type: i2.TokenService }]; } });
|
|
745
770
|
|
|
746
771
|
// Angular
|
|
747
772
|
class JaceLoginComponent {
|
|
@@ -795,13 +820,13 @@ class RedirecterComponent {
|
|
|
795
820
|
}
|
|
796
821
|
}
|
|
797
822
|
}
|
|
798
|
-
RedirecterComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: RedirecterComponent, deps: [{ token:
|
|
823
|
+
RedirecterComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: RedirecterComponent, deps: [{ token: i2.AppState }, { token: i1.ActivatedRoute }, { token: i1.Router }, { token: REDIRECT_MAP, optional: true }], target: i0.ɵɵFactoryTarget.Component });
|
|
799
824
|
RedirecterComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.9", type: RedirecterComponent, selector: "redirecter", ngImport: i0, template: "<div *ngIf=\"Error\">{{Error}}</div>", dependencies: [{ kind: "directive", type: i3$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], encapsulation: i0.ViewEncapsulation.None });
|
|
800
825
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: RedirecterComponent, decorators: [{
|
|
801
826
|
type: Component,
|
|
802
827
|
args: [{ selector: "redirecter", encapsulation: ViewEncapsulation.None, template: "<div *ngIf=\"Error\">{{Error}}</div>" }]
|
|
803
828
|
}], ctorParameters: function () {
|
|
804
|
-
return [{ type:
|
|
829
|
+
return [{ type: i2.AppState }, { type: i1.ActivatedRoute }, { type: i1.Router }, { type: undefined, decorators: [{
|
|
805
830
|
type: Optional
|
|
806
831
|
}, {
|
|
807
832
|
type: Inject,
|
|
@@ -809,6 +834,102 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImpor
|
|
|
809
834
|
}] }];
|
|
810
835
|
} });
|
|
811
836
|
|
|
837
|
+
// Angular
|
|
838
|
+
class NavigableComponent extends ReactiveComponent {
|
|
839
|
+
constructor(injector) {
|
|
840
|
+
super();
|
|
841
|
+
this.Parameters = null;
|
|
842
|
+
let _activatedRoute = injector.get(ActivatedRoute);
|
|
843
|
+
let _state = injector.get(AppState);
|
|
844
|
+
_state.registerNavigationIfMeaningful(_activatedRoute.snapshot);
|
|
845
|
+
// Parametri in maniera "dinamica"
|
|
846
|
+
_activatedRoute.params.pipe(takeUntil$1(this.destroyed$)).subscribe(t => { this.Parameters = t; });
|
|
847
|
+
// Tutto il resto in maniera statica tanto non cambia
|
|
848
|
+
let segs = _activatedRoute.snapshot._urlSegment.segments;
|
|
849
|
+
this.CompletePath = "/" + segs.map(t => t.path).join('/');
|
|
850
|
+
this.ComponentPath = "/" + segs.filter((t, i) => i != 0).map(t => t.path).join('/');
|
|
851
|
+
this.BasePath = "/" + segs[0].path;
|
|
852
|
+
this.InternalNavigation = _activatedRoute.snapshot.data["internalNavigation"] || false;
|
|
853
|
+
this.Title = _activatedRoute.snapshot.data["title"] || "";
|
|
854
|
+
// Per i componenti navigabili non embeddati è inutile mandare il messaggio di navigazione
|
|
855
|
+
if (!_state.Embedded)
|
|
856
|
+
return;
|
|
857
|
+
// Se sono dentro un iframe risalgo a quello di livello più alto in assoluto
|
|
858
|
+
let tmpWindow = window;
|
|
859
|
+
// Quando il parent non esiste window. parent è un riferimento a se stesso
|
|
860
|
+
while (tmpWindow.parent != tmpWindow)
|
|
861
|
+
tmpWindow = tmpWindow.parent;
|
|
862
|
+
tmpWindow.postMessage({ type: "navigation", url: this.CompletePath, internalNavigation: this.InternalNavigation, title: this.Title }, "*");
|
|
863
|
+
}
|
|
864
|
+
}
|
|
865
|
+
NavigableComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: NavigableComponent, deps: [{ token: i0.Injector }], target: i0.ɵɵFactoryTarget.Component });
|
|
866
|
+
NavigableComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.9", type: NavigableComponent, selector: "ng-component", usesInheritance: true, ngImport: i0, template: '', isInline: true });
|
|
867
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: NavigableComponent, decorators: [{
|
|
868
|
+
type: Component,
|
|
869
|
+
args: [{ template: '' }]
|
|
870
|
+
}], ctorParameters: function () { return [{ type: i0.Injector }]; } });
|
|
871
|
+
|
|
872
|
+
// Angular
|
|
873
|
+
class JaceResourceComponent {
|
|
874
|
+
constructor(cdr, _state, sanitizer) {
|
|
875
|
+
this.cdr = cdr;
|
|
876
|
+
this._state = _state;
|
|
877
|
+
this.sanitizer = sanitizer;
|
|
878
|
+
this.Module = "";
|
|
879
|
+
this.ModuleKeyType = 'altid';
|
|
880
|
+
this.Page = "";
|
|
881
|
+
this.Height = 0;
|
|
882
|
+
this.sanitizedSourceResource = null;
|
|
883
|
+
}
|
|
884
|
+
ngOnInit() {
|
|
885
|
+
var _a;
|
|
886
|
+
console.log("Initializing jace resource for " + this.Module);
|
|
887
|
+
if (((_a = this._state.Modules) === null || _a === void 0 ? void 0 : _a.length) > 0)
|
|
888
|
+
this.afterModulesRetrieve(this._state.Modules);
|
|
889
|
+
else {
|
|
890
|
+
this._state.subscribe("modules.Retrieved", (modules) => {
|
|
891
|
+
this.afterModulesRetrieve(modules);
|
|
892
|
+
this.cdr.markForCheck();
|
|
893
|
+
});
|
|
894
|
+
}
|
|
895
|
+
}
|
|
896
|
+
ngAfterViewInit() {
|
|
897
|
+
//let frame = document.getElementById("externalFrame");
|
|
898
|
+
//let rect = frame.getBoundingClientRect();
|
|
899
|
+
this.Height = window.innerHeight - 116;
|
|
900
|
+
console.log("Height: " + this.Height);
|
|
901
|
+
this.cdr.markForCheck();
|
|
902
|
+
}
|
|
903
|
+
afterModulesRetrieve(modules) {
|
|
904
|
+
let module = modules.find(t => (this.ModuleKeyType == 'id' ? t.idmodule : this.ModuleKeyType == 'altid' ? t.altname : "") == this.Module);
|
|
905
|
+
if (!module) {
|
|
906
|
+
console.error(`Impossibile trovare il modulo con ${this.ModuleKeyType} uguale a ${this.Module}`);
|
|
907
|
+
this.sanitizedSourceResource = null;
|
|
908
|
+
}
|
|
909
|
+
if (this.Page.startsWith("pages") || this.Page.startsWith("/pages")) {
|
|
910
|
+
console.error(`L'url della pagina da visitare non deve partire con 'pages', scrivere solo {modulo}/{pagina}`);
|
|
911
|
+
this.sanitizedSourceResource = null;
|
|
912
|
+
}
|
|
913
|
+
let moduleUrl = myconfig.AuthUrl.includes("localhost") ? `http://localhost:${this.Localhost}` : module.uiurl;
|
|
914
|
+
let finalUrl = `${moduleUrl}/#/pages_ext/${this.Page}`;
|
|
915
|
+
this.sanitizedSourceResource = this.sanitizer.bypassSecurityTrustResourceUrl(finalUrl);
|
|
916
|
+
}
|
|
917
|
+
}
|
|
918
|
+
JaceResourceComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: JaceResourceComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i2.AppState }, { token: i3.DomSanitizer }], target: i0.ɵɵFactoryTarget.Component });
|
|
919
|
+
JaceResourceComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.9", type: JaceResourceComponent, selector: "jace-resource", inputs: { Module: "Module", ModuleKeyType: "ModuleKeyType", Page: "Page", Localhost: "Localhost" }, ngImport: i0, template: "<iframe *ngIf=\"!!sanitizedSourceResource\" id=\"externalFrame\" style=\"width: 100%; border: none;\" [style.height.px]=\"Height\" \r\n [src]=\"sanitizedSourceResource\">\r\n</iframe>", dependencies: [{ kind: "directive", type: i3$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
920
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: JaceResourceComponent, decorators: [{
|
|
921
|
+
type: Component,
|
|
922
|
+
args: [{ selector: "jace-resource", encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, template: "<iframe *ngIf=\"!!sanitizedSourceResource\" id=\"externalFrame\" style=\"width: 100%; border: none;\" [style.height.px]=\"Height\" \r\n [src]=\"sanitizedSourceResource\">\r\n</iframe>" }]
|
|
923
|
+
}], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i2.AppState }, { type: i3.DomSanitizer }]; }, propDecorators: { Module: [{
|
|
924
|
+
type: Input
|
|
925
|
+
}], ModuleKeyType: [{
|
|
926
|
+
type: Input
|
|
927
|
+
}], Page: [{
|
|
928
|
+
type: Input
|
|
929
|
+
}], Localhost: [{
|
|
930
|
+
type: Input
|
|
931
|
+
}] } });
|
|
932
|
+
|
|
812
933
|
// Angular
|
|
813
934
|
const COMPONENTS = [
|
|
814
935
|
BackTop,
|
|
@@ -822,7 +943,8 @@ const COMPONENTS = [
|
|
|
822
943
|
JaceModulesBoardComponent,
|
|
823
944
|
Navbar,
|
|
824
945
|
RedirecterComponent,
|
|
825
|
-
Sidebar
|
|
946
|
+
Sidebar,
|
|
947
|
+
JaceResourceComponent
|
|
826
948
|
];
|
|
827
949
|
class ComponentsModule {
|
|
828
950
|
}
|
|
@@ -838,7 +960,8 @@ ComponentsModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", versio
|
|
|
838
960
|
JaceModulesBoardComponent,
|
|
839
961
|
Navbar,
|
|
840
962
|
RedirecterComponent,
|
|
841
|
-
Sidebar
|
|
963
|
+
Sidebar,
|
|
964
|
+
JaceResourceComponent], imports: [CommonModule, RouterModule, FormsModule, DirectivesModule, LocalizationModule, ProgressbarModule, MatSlideToggleModule, BsDropdownModule, EsTableModule], exports: [BackTop,
|
|
842
965
|
Breadcrumb,
|
|
843
966
|
PageNotFoundComponent,
|
|
844
967
|
ServerErrorComponent,
|
|
@@ -849,12 +972,13 @@ ComponentsModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", versio
|
|
|
849
972
|
JaceModulesBoardComponent,
|
|
850
973
|
Navbar,
|
|
851
974
|
RedirecterComponent,
|
|
852
|
-
Sidebar
|
|
853
|
-
|
|
975
|
+
Sidebar,
|
|
976
|
+
JaceResourceComponent] });
|
|
977
|
+
ComponentsModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: ComponentsModule, imports: [CommonModule, RouterModule, FormsModule, DirectivesModule, LocalizationModule, ProgressbarModule, MatSlideToggleModule, BsDropdownModule, EsTableModule] });
|
|
854
978
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: ComponentsModule, decorators: [{
|
|
855
979
|
type: NgModule,
|
|
856
980
|
args: [{
|
|
857
|
-
imports: [CommonModule, RouterModule, FormsModule, DirectivesModule, LocalizationModule, ProgressbarModule, MatSlideToggleModule, BsDropdownModule],
|
|
981
|
+
imports: [CommonModule, RouterModule, FormsModule, DirectivesModule, LocalizationModule, ProgressbarModule, MatSlideToggleModule, BsDropdownModule, EsTableModule],
|
|
858
982
|
declarations: [...COMPONENTS],
|
|
859
983
|
exports: [...COMPONENTS]
|
|
860
984
|
}]
|
|
@@ -864,5 +988,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImpor
|
|
|
864
988
|
* Generated bundle index. Do not edit.
|
|
865
989
|
*/
|
|
866
990
|
|
|
867
|
-
export { AngularErrorComponent, BackTop, Breadcrumb, ComponentsModule, ExternalPagesComponent, JaceLoginComponent, JaceModulesBoardComponent, Navbar, PageNotFoundComponent, PagesComponent, RedirecterComponent, ServerErrorComponent, Sidebar };
|
|
991
|
+
export { AngularErrorComponent, BackTop, Breadcrumb, ComponentsModule, ExternalPagesComponent, JaceLoginComponent, JaceModulesBoardComponent, JaceResourceComponent, Navbar, NavigableComponent, PageNotFoundComponent, PagesComponent, ReactiveComponent, RedirecterComponent, ServerErrorComponent, Sidebar };
|
|
868
992
|
//# sourceMappingURL=esfaenza-core-components.mjs.map
|