@esfaenza/core 15.2.7 → 15.2.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/components/base/{navigable.component.d.ts → base.component.d.ts} +4 -5
- package/components/error/404/pagenotfound.component.d.ts +3 -2
- package/components/error/Angular/angularerror.component.d.ts +3 -4
- package/components/public-api.d.ts +1 -1
- package/esm2020/components/base/base.component.mjs +44 -0
- package/esm2020/components/error/404/pagenotfound.component.mjs +11 -8
- package/esm2020/components/error/500/servererror.component.mjs +6 -2
- package/esm2020/components/error/Angular/angularerror.component.mjs +14 -11
- package/esm2020/components/public-api.mjs +2 -2
- package/esm2020/lib/app.component.mjs +2 -2
- package/esm2020/services/classes/app.state.mjs +10 -4
- package/fesm2015/esfaenza-core-components.mjs +39 -28
- package/fesm2015/esfaenza-core-components.mjs.map +1 -1
- package/fesm2015/esfaenza-core-services.mjs +30 -25
- package/fesm2015/esfaenza-core-services.mjs.map +1 -1
- package/fesm2015/esfaenza-core.mjs +2 -2
- package/fesm2015/esfaenza-core.mjs.map +1 -1
- package/fesm2020/esfaenza-core-components.mjs +39 -28
- package/fesm2020/esfaenza-core-components.mjs.map +1 -1
- package/fesm2020/esfaenza-core-services.mjs +21 -16
- package/fesm2020/esfaenza-core-services.mjs.map +1 -1
- package/fesm2020/esfaenza-core.mjs +2 -2
- package/fesm2020/esfaenza-core.mjs.map +1 -1
- package/package.json +1 -1
- package/services/classes/app.state.d.ts +3 -2
- package/esm2020/components/base/navigable.component.mjs +0 -43
|
@@ -5,7 +5,7 @@ import * as i1 from 'ngx-cookie-service';
|
|
|
5
5
|
import { of, Subject } from 'rxjs';
|
|
6
6
|
import * as i2 from '@angular/common/http';
|
|
7
7
|
import { HttpErrorResponse, HttpHeaders } from '@angular/common/http';
|
|
8
|
-
import * as
|
|
8
|
+
import * as i5 from '@angular/router';
|
|
9
9
|
import { Router } from '@angular/router';
|
|
10
10
|
import * as i1$1 from '@esfaenza/localizations';
|
|
11
11
|
import { LocalizationService } from '@esfaenza/localizations';
|
|
@@ -20,9 +20,9 @@ import * as duration from 'dayjs/plugin/duration';
|
|
|
20
20
|
import * as minMax from 'dayjs/plugin/minMax';
|
|
21
21
|
import * as utc from 'dayjs/plugin/utc';
|
|
22
22
|
import * as i3 from '@esfaenza/signalr-notifications';
|
|
23
|
-
import * as i5 from '@esfaenza/access-control';
|
|
23
|
+
import * as i5$1 from '@esfaenza/access-control';
|
|
24
24
|
import { AccessControlRouteGuard } from '@esfaenza/access-control';
|
|
25
|
-
import * as i4$
|
|
25
|
+
import * as i4$1 from '@esfaenza/preferences';
|
|
26
26
|
import { CachePersistor, PreferencesPersistor } from '@esfaenza/preferences';
|
|
27
27
|
import { catchError, map } from 'rxjs/operators';
|
|
28
28
|
|
|
@@ -182,12 +182,13 @@ class AppState {
|
|
|
182
182
|
this.notifyDataChanged("modules.Retrieved", this._modules);
|
|
183
183
|
}
|
|
184
184
|
get Modules() { return this._modules; }
|
|
185
|
-
constructor(lc, bts, notifications, MessageDef, intercom) {
|
|
185
|
+
constructor(lc, bts, notifications, MessageDef, intercom, router) {
|
|
186
186
|
this.lc = lc;
|
|
187
187
|
this.bts = bts;
|
|
188
188
|
this.notifications = notifications;
|
|
189
189
|
this.MessageDef = MessageDef;
|
|
190
190
|
this.intercom = intercom;
|
|
191
|
+
this.router = router;
|
|
191
192
|
this.redirectingToLogin = false;
|
|
192
193
|
this.handlingError = false;
|
|
193
194
|
this.christmasTime = false;
|
|
@@ -223,6 +224,10 @@ class AppState {
|
|
|
223
224
|
// Ignoro i miei messaggi dato che mi interessano solo quelli degli altri iframe
|
|
224
225
|
if (event.source == window && event?.data?.type != "modal-open")
|
|
225
226
|
return;
|
|
227
|
+
if (event?.data?.type == "navigate") {
|
|
228
|
+
console.log(`Window message - navigate -> ${event?.data?.url}`);
|
|
229
|
+
this.router.navigate([event?.data?.url]);
|
|
230
|
+
}
|
|
226
231
|
if (event?.data?.type == "navigation") {
|
|
227
232
|
console.log(`Window message - Navigation -> ${event?.data?.internalNavigation ? "[internal]" : ""} ${event?.data?.title}`);
|
|
228
233
|
if (event?.data?.internalNavigation)
|
|
@@ -416,12 +421,12 @@ class AppState {
|
|
|
416
421
|
this.headerHeight = height;
|
|
417
422
|
}
|
|
418
423
|
}
|
|
419
|
-
AppState.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: AppState, deps: [{ token: i1$1.LocalizationService }, { token: TokenService }, { token: i3.NotificationsService }, { token: i3.BaseMessageService }, { token: i4.InterComService }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
424
|
+
AppState.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: AppState, deps: [{ token: i1$1.LocalizationService }, { token: TokenService }, { token: i3.NotificationsService }, { token: i3.BaseMessageService }, { token: i4.InterComService }, { token: i5.Router }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
420
425
|
AppState.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: AppState, providedIn: "root" });
|
|
421
426
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: AppState, decorators: [{
|
|
422
427
|
type: Injectable,
|
|
423
428
|
args: [{ providedIn: "root" }]
|
|
424
|
-
}], ctorParameters: function () { return [{ type: i1$1.LocalizationService }, { type: TokenService }, { type: i3.NotificationsService }, { type: i3.BaseMessageService }, { type: i4.InterComService }]; } });
|
|
429
|
+
}], ctorParameters: function () { return [{ type: i1$1.LocalizationService }, { type: TokenService }, { type: i3.NotificationsService }, { type: i3.BaseMessageService }, { type: i4.InterComService }, { type: i5.Router }]; } });
|
|
425
430
|
|
|
426
431
|
// Angular
|
|
427
432
|
class HTTPServiceExtensions {
|
|
@@ -497,11 +502,11 @@ class HTTPServiceExtensions {
|
|
|
497
502
|
}
|
|
498
503
|
}
|
|
499
504
|
}
|
|
500
|
-
HTTPServiceExtensions.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: HTTPServiceExtensions, deps: [{ token: i1$1.LocalizationService }, { token: TokenService }, { token: AppState }, { token:
|
|
505
|
+
HTTPServiceExtensions.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: HTTPServiceExtensions, deps: [{ token: i1$1.LocalizationService }, { token: TokenService }, { token: AppState }, { token: i5.Router }, { token: i5$1.AccessControlService }, { token: i4.MessageService }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
501
506
|
HTTPServiceExtensions.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: HTTPServiceExtensions });
|
|
502
507
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: HTTPServiceExtensions, decorators: [{
|
|
503
508
|
type: Injectable
|
|
504
|
-
}], ctorParameters: function () { return [{ type: i1$1.LocalizationService }, { type: TokenService }, { type: AppState }, { type:
|
|
509
|
+
}], ctorParameters: function () { return [{ type: i1$1.LocalizationService }, { type: TokenService }, { type: AppState }, { type: i5.Router }, { type: i5$1.AccessControlService }, { type: i4.MessageService }]; } });
|
|
505
510
|
|
|
506
511
|
// Angular
|
|
507
512
|
class MenuFilteringService {
|
|
@@ -558,12 +563,12 @@ class SessionRetriever {
|
|
|
558
563
|
return this.SessionIdentity;
|
|
559
564
|
}
|
|
560
565
|
}
|
|
561
|
-
SessionRetriever.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: SessionRetriever, deps: [{ token: TokenService }, { token:
|
|
566
|
+
SessionRetriever.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: SessionRetriever, deps: [{ token: TokenService }, { token: i5.Router }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
562
567
|
SessionRetriever.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: SessionRetriever, providedIn: "root" });
|
|
563
568
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: SessionRetriever, decorators: [{
|
|
564
569
|
type: Injectable,
|
|
565
570
|
args: [{ providedIn: "root" }]
|
|
566
|
-
}], ctorParameters: function () { return [{ type: TokenService }, { type:
|
|
571
|
+
}], ctorParameters: function () { return [{ type: TokenService }, { type: i5.Router }]; } });
|
|
567
572
|
|
|
568
573
|
// Angular
|
|
569
574
|
// Chiamate ai Repository
|
|
@@ -641,11 +646,11 @@ class ApplicationCachePersistor extends CachePersistor {
|
|
|
641
646
|
return `${this.getItemsUrl(sessionKey)}/${itemKey}`;
|
|
642
647
|
}
|
|
643
648
|
}
|
|
644
|
-
ApplicationCachePersistor.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: ApplicationCachePersistor, deps: [{ token: i1$1.LocalizationService }, { token: i2.HttpClient }, { token: TokenService }, { token: i4$
|
|
649
|
+
ApplicationCachePersistor.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: ApplicationCachePersistor, deps: [{ token: i1$1.LocalizationService }, { token: i2.HttpClient }, { token: TokenService }, { token: i4$1.BaseSessionRetriever }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
645
650
|
ApplicationCachePersistor.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: ApplicationCachePersistor });
|
|
646
651
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: ApplicationCachePersistor, decorators: [{
|
|
647
652
|
type: Injectable
|
|
648
|
-
}], ctorParameters: function () { return [{ type: i1$1.LocalizationService }, { type: i2.HttpClient }, { type: TokenService }, { type: i4$
|
|
653
|
+
}], ctorParameters: function () { return [{ type: i1$1.LocalizationService }, { type: i2.HttpClient }, { type: TokenService }, { type: i4$1.BaseSessionRetriever }]; } });
|
|
649
654
|
|
|
650
655
|
// Angular
|
|
651
656
|
// Chiamate ai Repository
|
|
@@ -723,11 +728,11 @@ class ApplicationPreferencesPersistor extends PreferencesPersistor {
|
|
|
723
728
|
return `${this.getItemsUrl(sessionKey)}/${itemKey}`;
|
|
724
729
|
}
|
|
725
730
|
}
|
|
726
|
-
ApplicationPreferencesPersistor.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: ApplicationPreferencesPersistor, deps: [{ token: i1$1.LocalizationService }, { token: i2.HttpClient }, { token: TokenService }, { token: i4$
|
|
731
|
+
ApplicationPreferencesPersistor.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: ApplicationPreferencesPersistor, deps: [{ token: i1$1.LocalizationService }, { token: i2.HttpClient }, { token: TokenService }, { token: i4$1.BaseSessionRetriever }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
727
732
|
ApplicationPreferencesPersistor.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: ApplicationPreferencesPersistor });
|
|
728
733
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: ApplicationPreferencesPersistor, decorators: [{
|
|
729
734
|
type: Injectable
|
|
730
|
-
}], ctorParameters: function () { return [{ type: i1$1.LocalizationService }, { type: i2.HttpClient }, { type: TokenService }, { type: i4$
|
|
735
|
+
}], ctorParameters: function () { return [{ type: i1$1.LocalizationService }, { type: i2.HttpClient }, { type: TokenService }, { type: i4$1.BaseSessionRetriever }]; } });
|
|
731
736
|
|
|
732
737
|
// Angular
|
|
733
738
|
class BaseRouterGuard extends AccessControlRouteGuard {
|
|
@@ -737,11 +742,11 @@ class BaseRouterGuard extends AccessControlRouteGuard {
|
|
|
737
742
|
acc.initializeIdentity(ts.getJaceIdentity());
|
|
738
743
|
}
|
|
739
744
|
}
|
|
740
|
-
BaseRouterGuard.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: BaseRouterGuard, deps: [{ token: i4.MessageService }, { token: i5.AccessControlService }, { token:
|
|
745
|
+
BaseRouterGuard.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: BaseRouterGuard, deps: [{ token: i4.MessageService }, { token: i5$1.AccessControlService }, { token: i5.Router }, { token: TokenService }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
741
746
|
BaseRouterGuard.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: BaseRouterGuard });
|
|
742
747
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: BaseRouterGuard, decorators: [{
|
|
743
748
|
type: Injectable
|
|
744
|
-
}], ctorParameters: function () { return [{ type: i4.MessageService }, { type: i5.AccessControlService }, { type:
|
|
749
|
+
}], ctorParameters: function () { return [{ type: i4.MessageService }, { type: i5$1.AccessControlService }, { type: i5.Router }, { type: TokenService }]; } });
|
|
745
750
|
|
|
746
751
|
/**
|
|
747
752
|
* Generated bundle index. Do not edit.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"esfaenza-core-services.mjs","sources":["../../../projects/core/services/src/classes/app.accesstoken.ts","../../../projects/core/services/src/classes/app.globalsearch.ts","../../../projects/core/services/src/classes/app.errorhandler.ts","../../../projects/core/services/src/classes/app.event.ts","../../../projects/core/services/src/classes/app.httpextensions.loc.ts","../../../projects/core/services/src/classes/app.state.ts","../../../projects/core/services/src/classes/app.httpextensions.ts","../../../projects/core/services/src/classes/app.menufilter.ts","../../../projects/core/services/src/classes/app.completedjobredirection.ts","../../../projects/core/services/src/classes/app.session.ts","../../../projects/core/services/src/classes/preferences/app.cache.persistor.ts","../../../projects/core/services/src/classes/preferences/app.preference.persistor.ts","../../../projects/core/services/src/classes/app.routeguard.ts","../../../projects/core/services/src/esfaenza-core-services.ts"],"sourcesContent":["// Angular\r\nimport { Inject, Injectable, Optional } from \"@angular/core\";\r\n\r\n// Direttive, Componenti, Librerie\r\nimport { CookieService } from \"ngx-cookie-service\";\r\n\r\n// Applicazione\r\nimport { AccountScope, JaceIdentity, USE_FAKE_ACCESS_TOKEN } from \"@esfaenza/core/domain\";\r\n\r\n@Injectable({ providedIn: \"root\" })\r\nexport class TokenService {\r\n \r\n public accountScope: AccountScope;\r\n\r\n constructor(public cs: CookieService, @Optional() @Inject(USE_FAKE_ACCESS_TOKEN) private USE_FAKE_ACCESS_TOKEN: boolean) { }\r\n\r\n clearTokens(): void {\r\n this.cs.delete(\"access_token\");\r\n }\r\n\r\n getAccessToken(): String {\r\n return this.USE_FAKE_ACCESS_TOKEN ? this.getFakeToken() : this.cs.get(\"accessToken\");\r\n }\r\n\r\n getJaceIdentity(): JaceIdentity {\r\n let token = this.USE_FAKE_ACCESS_TOKEN ? this.getFakeToken() : this.cs.get(\"accessToken\");\r\n if (!token)\r\n return null;\r\n\r\n let base64Url = token.split(\".\")[1];\r\n let base64 = base64Url.replace(\"-\", \"+\").replace(\"_\", \"/\");\r\n let tokenData = JSON.parse(decodeURIComponent(window.atob(base64).split(\"\").map(c => \"%\" + (\"00\" + c.charCodeAt(0).toString(16)).slice(-2)).join(\"\")));\r\n\r\n let identity: JaceIdentity = new JaceIdentity(this.accountScope);\r\n identity.IdAccount = tokenData.ACCOUNTID;\r\n identity.IdUser = tokenData.USERID;\r\n identity.DsUser = tokenData.USERNAME;\r\n identity.FullName = tokenData.USERDESCRIPTION;\r\n identity.Idtenant = tokenData.TENANT;\r\n identity.TenantName = tokenData.TENANTNAME;\r\n identity.ExpirationTime = new Date(tokenData.exp * 1000);//unix-epoch in secondi -> millisecondi\r\n\r\n return identity;\r\n }\r\n\r\n //Accesstoken fittizio ma valido, per simulare la connession corretta col backend\r\n private getFakeToken(): string {\r\n return \"eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJuYmYiOjE1OTA0MTU4NDYsImV4cCI6MTk5MDQyMDA2NSwiaXNzIjoiaHR0cDovL2F1dGhhcGlzdGFnaW5nYS5qYWNlLmVuZXJneXNvZnR3YXJlLnByaXYiLCJhdWQiOlsiaHR0cDovL2F1dGhhcGlzdGFnaW5nYS5qYWNlLmVuZXJneXNvZnR3YXJlLnByaXYvcmVzb3VyY2VzIiwiYXV0aGVudGljYXRpbyJdLCJjbGllbnRfaWQiOiJtZXRlcmluZ3N0YWdpbmciLCJzdWIiOiIxMDAzIiwiYXV0aF90aW1lIjoxNTkwNDE1ODQ2LCJpZHAiOiJsb2NhbCIsIkFDQ09VTlRJRCI6IjEwMDMiLCJVU0VSSUQiOiIyNTkiLCJVU0VSREVTQ1JJUFRJT04iOiJUZXN0IFVzZXIiLCJVU0VSTkFNRSI6IlRFU1QiLCJURU5BTlQiOiJGWCIsIlRFTkFOVE5BTUUiOiJGZW5peCBTcmwiLCJyb2xlIjpbIkJhY2tvZmZpY2UiLCJEYXRhIE1hbmFnZXIiLCJUcmFkaW5nIiwiUmVtaXQgTWFuYWdlciIsIlRlbmFudCBSZWFkZXIiLCJDb21wbC4gQVJFUkEgUmVhZGVyIiwiQ29tcGwuIEFSRVJBIFdyaXRlciBMMSIsIkNvbXBsLiBBUkVSQSBXcml0ZXIgTDIiLCJKYWNlIEFkbWluIl0sIk1PRFVMRSI6WyIzNiIsIjM3IiwiMTQiLCI1IiwiMzIiLCIxNSIsIjQyIiwiOCIsIjE3IiwiMTEiLCIyMSIsIjkiLCIzOCIsIjE4IiwiNyIsIjM0IiwiMTYiLCIyMCIsIjE5IiwiMSIsIjIiLCIzMSIsIjEyIiwiMTAiLCIzMyIsIjQwIiwiMjIiLCIxMyIsIjYiXSwiUEVSTUlTU0lPTiI6WyJleHRyYWN0X2RhdGEiLCJtZG1fcmVhZCIsIm1kbV9hZHZfb3AiLCJtZG1fY2ZnX2Jhc2UiLCJjcmVhdGVfdHJhZGUiLCJtZG1fbWFzc19kZWwiLCJzZW5kX2NvbW0iLCJtZG1fZmN0IiwibWRtX2NmZ19hZHYiLCJtZG1fY2ZnX3JlYWQiLCJtYW5hZ2VfZWxlIiwibWFuYWdlX2dhcyIsImNvbmZpcm1fdHJhZGUiLCJtZG1fY3VzdG9taXplIiwibmV3X2NvbW0iLCJtZG1fbWFzc19mY3QiLCJtZG1fb3AiLCJ2aWV3X2JpbGxpbmciLCJtZG1fbWFzc19vcCIsIm1kbV9hZHZfcmVhZCJdLCJqdGkiOiIwZTUzMDc1NjE2MDZlNDQ0ZTI4ODViMTFhMzE0NDQyMSIsInNjb3BlIjpbImF1dGgiLCJvZmZsaW5lX2FjY2VzcyJdLCJhbXIiOlsicGFzc3dvcmQiXSwiaWF0IjoxNTkwNDE2NDY1fQ.MNcphwkIwvLFDDpLaFDN3GK11lgT2aqvXa8s7bQJgdE\";\r\n }\r\n}","// Angular\r\nimport { Injectable } from \"@angular/core\";\r\n\r\n// Core\r\nimport { KeyValue, SearchResultContainer } from \"@esfaenza/core/domain\";\r\n\r\n// Rxjs\r\nimport { Observable, of } from \"rxjs\";\r\n\r\n@Injectable()\r\nexport class GlobalSearchService {\r\n public Enabled: boolean = false;\r\n\r\n /**\r\n * Effettua una ricerca in base a un termine generico\r\n * \r\n * @param term Termine da cercare\r\n * @returns {SearchResultContainer} Contenitore della ricerca\r\n */\r\n public search(term: string): Observable<SearchResultContainer> {\r\n return of(null);\r\n }\r\n\r\n /**\r\n * Data la definizione semplice di una colonna restituisce un oggetto che indica se bisogna presentere un link su di essa\r\n * \r\n * @param column Colonna per cui verificare la presentazione di un link. Esempio: {id: \"IDPARTY\", description: \"Cod. Controparte\"}\r\n * @returns {{ routePath: string, routeProperties: string[] }} Oggetto che indica un link con i propri binding. Ad esempio: {routePath: \"['/pages/parties/parties_details', { 'idModel': '{0}' }]\", routeProperties: [\"IDPARTY\"]}\r\n */\r\n public generateColumnLink(column: KeyValue): { routePath: string, routeProperties: string[] } {\r\n return null;\r\n }\r\n}","// Angular\r\nimport { ErrorHandler, Injectable, Injector } from \"@angular/core\";\r\nimport { HttpErrorResponse } from \"@angular/common/http\";\r\nimport { Router } from \"@angular/router\";\r\n\r\nimport { EnvOptions } from \"@esfaenza/core/domain\";\r\n\r\ndeclare var myconfig: EnvOptions\r\n\r\n@Injectable()\r\nexport class APPErrorHandler implements ErrorHandler {\r\n private router;\r\n\r\n constructor(private injector: Injector) { }\r\n\r\n handleError(error) {\r\n if (this.router == null)\r\n this.router = this.injector.get(Router);\r\n\r\n //Ignoro eventuali errori di javascript quando il redirect è attivo\r\n if (myconfig && myconfig.redirectInProgress) {\r\n console.log(\"Javascript error on redirect in progress, ignoring this event\");\r\n return;\r\n }\r\n\r\n //In caso io abbia impostato succesresultmandatory nell'httprequest e questa abbia dato errore tiro fuori un exception che dev'essere mostrata come si deve\r\n var newError = \"\";\r\n if (!error.message && !error.stack)\r\n newError = error\r\n else if (error instanceof HttpErrorResponse)\r\n newError = error.message;\r\n else\r\n newError = error.stack && error.stack.length > 1000 ? error.stack.substring(0, 999) + \"[...]\" : error.stack;\r\n\r\n var pars = { errorMessage: this.b64EncodeUnicode(newError), fromUrl: this.router.url };\r\n this.router.navigate([\"/anerr\", pars]);\r\n }\r\n\r\n b64EncodeUnicode(str) {\r\n // first we use encodeURIComponent to get percent-encoded UTF-8,\r\n // then we convert the percent encodings into raw bytes which\r\n // can be fed into btoa.\r\n return btoa(encodeURIComponent(str).replace(/%([0-9A-F]{2})/g, (match, p1) => String.fromCharCode(<any>(\"0x\" + p1))));\r\n }\r\n}","// Angular\r\nimport { Injectable, NgZone } from \"@angular/core\";\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class OutZoneEventPlugin {\r\n\r\n constructor(private zone: NgZone) { }\r\n\r\n supports(eventName: string): boolean {\r\n return eventName.endsWith('out-zone');\r\n }\r\n\r\n addEventListener(element: HTMLElement, eventName: string, originalHandler: Function): Function {\r\n let eventOriginalName = eventName.split('.')[0];\r\n let standardHandler = (event: Event) => originalHandler(event)\r\n if (eventName.endsWith('out-zone'))\r\n this.zone.runOutsideAngular(() => { element.addEventListener(eventOriginalName, standardHandler); });\r\n else\r\n element.addEventListener(eventOriginalName, standardHandler)\r\n\r\n return () => element.removeEventListener(eventOriginalName, standardHandler);\r\n }\r\n}","import { Injectable, Injector } from \"@angular/core\";\r\nimport { LocalizationService } from \"@esfaenza/localizations\";\r\n\r\n@Injectable()\r\nexport class HTTPServiceExtensionsLoc extends LocalizationService {\r\n constructor(injector: Injector) {\r\n super(injector);\r\n super.set(\"it->en\", \"Il Server sembra essere offline, prova a ricaricare la pagina\", [\"Server seems to be offline, try to reload this page\"]);\r\n }\r\n}","// Angular\r\nimport { ActivatedRouteSnapshot } from \"@angular/router\";\r\nimport { Injectable } from \"@angular/core\";\r\n\r\n// Configurazioni\r\nimport { BaseMessageService, NotificationsService, JobProgressDto } from \"@esfaenza/signalr-notifications\";\r\nimport { InboundMessageTypes, InterComMessage, InterComService } from \"@esfaenza/extensions\";\r\nimport { AdmMessageTypes, MK_ADM } from \"@esfaenza/admin-module\";\r\nimport { LocalizationService } from \"@esfaenza/localizations\";\r\nimport { TokenService } from \"./app.accesstoken\";\r\n\r\n// Core\r\nimport { ActiveModuleView, ApplicationJob, JaceIdentity } from \"@esfaenza/core/domain\";\r\n\r\n// Direttive, Componenti, Librerie\r\nimport * as customParseFormat from 'dayjs/plugin/customParseFormat';\r\nimport * as isSameOrBefore from 'dayjs/plugin/isSameOrBefore';\r\nimport * as isSameOrAfter from 'dayjs/plugin/isSameOrAfter';\r\nimport * as isBetween from 'dayjs/plugin/isBetween';\r\nimport * as duration from 'dayjs/plugin/duration';\r\nimport * as minMax from 'dayjs/plugin/minMax';\r\nimport * as utc from 'dayjs/plugin/utc';\r\nimport { Subject } from \"rxjs\";\r\n\r\ndeclare var dayjs: any;\r\n\r\n@Injectable({ providedIn: \"root\" })\r\nexport class AppState {\r\n\r\n public sidebarWidth: number;\r\n public headerHeight: number;\r\n public redirectingToLogin: boolean = false;\r\n public handlingError: boolean = false;\r\n public christmasTime: boolean = false;\r\n public halloweenTime: boolean = false;\r\n\r\n private JaceIdentity: JaceIdentity;\r\n\r\n public jobsInProgress: number = 0;\r\n public allJobs: ApplicationJob[] = [];\r\n private jobWithIdsCache: { [index: string]: ApplicationJob } = {};\r\n public notifyOnCompletedJobs: boolean = true;\r\n\r\n private _data = new Subject<Object>();\r\n private _dataStream$ = this._data.asObservable();\r\n\r\n private _subscriptions: Map<string, Array<Function>> = new Map<string, Array<Function>>();\r\n\r\n public ModulesLocalizations: { [id: string]: LocalizationService } = {};\r\n\r\n public Embedded: boolean = false;\r\n public EmbeddingLevel: number = 0;\r\n public MainWindow: any;\r\n\r\n private _modules: ActiveModuleView[];\r\n public set Modules(modules: ActiveModuleView[]) {\r\n this._modules = modules;\r\n this.notifyDataChanged(\"modules.Retrieved\", this._modules);\r\n }\r\n public get Modules(): ActiveModuleView[] { return this._modules; }\r\n\r\n constructor(private lc: LocalizationService, private bts: TokenService, private notifications: NotificationsService, private MessageDef: BaseMessageService, private intercom: InterComService) {\r\n this.setupEmbeddability();\r\n this.setupDayjs();\r\n this.setupSignalRJobListening();\r\n\r\n this.JaceIdentity = null;\r\n this._dataStream$.subscribe((data) => this._onEvent(data));\r\n\r\n //Decide se siamo attorno a natale\r\n var today = dayjs();\r\n var lowerBound = dayjs(\"18/12/\" + today.year(), \"DD/MM/YYYY\");\r\n var upperBound = dayjs(\"07/01/\" + (today.year() + 1), \"DD/MM/YYYY\");\r\n this.christmasTime = today > lowerBound && today < upperBound;\r\n\r\n //Decide se siamo attorno ad halloween\r\n var lowerBound = dayjs(\"28/10/\" + today.year(), \"DD/MM/YYYY\");\r\n var upperBound = dayjs(\"05/11/\" + today.year(), \"DD/MM/YYYY\");\r\n this.halloweenTime = today > lowerBound && today < upperBound;\r\n\r\n this.intercom.inbounds.subscribe((t: InterComMessage) => { this.handleInboundMessage(t); });\r\n }\r\n\r\n setupEmbeddability() {\r\n window.onmessage = (event: MessageEvent) => {\r\n // Ignoro i miei messaggi dato che mi interessano solo quelli degli altri iframe\r\n if (event.source == window && event?.data?.type != \"modal-open\")\r\n return;\r\n \r\n if (event?.data?.type == \"navigation\") {\r\n console.log(`Window message - Navigation -> ${event?.data?.internalNavigation ? \"[internal]\" : \"\"} ${event?.data?.title}`);\r\n \r\n if (event?.data?.internalNavigation)\r\n this.notifyDataChanged(\"menu.adjustSubNavigationTo\", event?.data?.title);\r\n else\r\n this.notifyDataChanged(\"menu.adjustNavigationTo\", event?.data?.title);\r\n }\r\n \r\n if (event?.data?.type == \"modal-open\") {\r\n const wrapper = document.body.getElementsByClassName(\"main-wrapper\")[0] as HTMLElement;\r\n let wrapperStyles = window.getComputedStyle(wrapper);\r\n const wrapperPaddingLeft = parseInt(wrapperStyles.getPropertyValue(\"padding-left\"));\r\n const wrapperPaddingRight = parseInt(wrapperStyles.getPropertyValue(\"padding-right\"));\r\n \r\n console.log(`Window message - Modal Open -> Backdrop Height: ${event?.data?.backdropHeight}`);\r\n \r\n var topHeight: number = 116; // valore fisso, distanza fra il top e l'inizio dell'iframe, non sarà mai diverso\r\n var rightSpace: number = wrapperPaddingRight; // valore fisso, distanza fra la fine dell'iframe e il lato sinistro dello schermo, non sarà mai diverso\r\n var leftSpace: number = this.sidebarWidth + wrapperPaddingLeft;\r\n \r\n let commonStyles = \"position: absolute; z-index: 9999; background-color: #000; opacity: 0.5; \";\r\n \r\n wrapper.style.setProperty(\"overflow\", \"hidden\", \"important\");\r\n \r\n const top = document.createElement(\"div\");\r\n top.className = \"embedded-modal-top\";\r\n top.style.cssText = commonStyles + `height: ${topHeight}px; top: 0; width: calc(100% - ${leftSpace}px); left: ${leftSpace}px`;\r\n top.id = \"top\";\r\n \r\n const left = document.createElement(\"div\");\r\n left.className = \"embedded-modal-left\";\r\n left.style.cssText = commonStyles + `height: 100%; top: 0; width: ${leftSpace}px;`;\r\n left.id = \"left\";\r\n \r\n const right = document.createElement(\"div\");\r\n right.className = \"embedded-modal-right\";\r\n right.style.cssText = commonStyles + `height: calc(100% - ${topHeight}px); top: ${topHeight}px; right: 0; width: ${rightSpace}px;`;\r\n right.id = \"right\";\r\n \r\n document.body.appendChild(top);\r\n document.body.appendChild(left);\r\n document.body.appendChild(right);\r\n }\r\n \r\n if (event?.data?.type == \"modal-close\") {\r\n console.log(`Window message - Modal Close`);\r\n \r\n let wrapper = document.body.getElementsByClassName(\"main-wrapper\")[0] as HTMLElement;\r\n wrapper.style.removeProperty(\"overflow\");\r\n \r\n const top = document.getElementById(\"top\");\r\n const left = document.getElementById(\"left\");\r\n const right = document.getElementById(\"right\");\r\n \r\n if (top)\r\n document.body.removeChild(top);\r\n if (left)\r\n document.body.removeChild(left);\r\n if (right)\r\n document.body.removeChild(right);\r\n }\r\n };\r\n \r\n this.subscribe(\"menu.isCollapsed\", () => {\r\n const wrapper = document.body.getElementsByClassName(\"main-wrapper\")[0] as HTMLElement;\r\n let wrapperStyles = window.getComputedStyle(wrapper);\r\n const wrapperPaddingLeft = parseInt(wrapperStyles.getPropertyValue(\"padding-left\"));\r\n var leftSpace: number = this.sidebarWidth + wrapperPaddingLeft;\r\n \r\n const left = document.getElementById(\"left\");\r\n const top = document.getElementById(\"top\");\r\n \r\n if (top) {\r\n top.style.setProperty(\"left\", (leftSpace) + \"px\");\r\n top.style.setProperty(\"width\", `calc(100% - ${leftSpace}px)`);\r\n }\r\n \r\n if (left)\r\n left.style.setProperty(\"width\", leftSpace + \"px\");\r\n });\r\n \r\n this.MainWindow = <{ parent: any, postMessage: Function }>window;\r\n while (this.MainWindow.parent != this.MainWindow) {\r\n this.MainWindow = this.MainWindow.parent;\r\n this.EmbeddingLevel++;\r\n this.Embedded = true;\r\n }\r\n \r\n if (this.Embedded)\r\n document.body.style.setProperty(\"overflow-y\", \"auto\", \"important\");\r\n }\r\n\r\n registerNavigationIfMeaningful(route?: ActivatedRouteSnapshot) {\r\n let title = route.data[\"title\"];\r\n let internal = route.data[\"internalNavigation\"]\r\n\r\n // Permette di chiamare sto registerNavigation a prescindere e fare opt out se non è una route navigabile\r\n if(!title) return;\r\n\r\n /*\r\n * Parent ({url: [{path: \"{module}\"}]})\r\n * Parent ({url: [{path: \"\"}]}) (Root del modulo lazy)\r\n * -> Navigazione attuale <-\r\n */\r\n let module = route.parent?.parent?.url[0]?.path;\r\n let loc = module ? this.ModulesLocalizations[module] : null;\r\n\r\n if (!module)\r\n console.error(\"Impossibile estrapolare il modulo dalla navigazione (Atteso Modulo al secondo livello di parentela partendo dal componente attuale): \" + route.pathFromRoot.map(v => v.url.map(segment => segment.toString()).join('/')).join('/'));\r\n\r\n this.notifyDataChanged(internal ? \"menu.adjustSubNavigationTo\" : \"menu.adjustNavigationTo\", loc ? loc.loc(title) : title);\r\n }\r\n\r\n handleInboundMessage(t: InterComMessage) {\r\n switch (t.type) {\r\n case InboundMessageTypes.Navigation:\r\n {\r\n this.notifyDataChanged(t.message.sub ? \"menu.adjustSubNavigationTo\" : \"menu.adjustNavigationTo\", t.message.routeTitle);\r\n this.intercom.send(AdmMessageTypes.Message, \"Navigation Message Received\", MK_ADM);\r\n }\r\n }\r\n }\r\n\r\n setupDayjs() {\r\n dayjs.extend((<any>customParseFormat).default || customParseFormat);\r\n dayjs.extend((<any>minMax).default || minMax);\r\n dayjs.extend((<any>isBetween).default || isBetween);\r\n dayjs.extend((<any>isSameOrBefore).default || isSameOrBefore);\r\n dayjs.extend((<any>isSameOrAfter).default || isSameOrAfter);\r\n dayjs.extend((<any>duration).default || duration);\r\n dayjs.extend((<any>utc).default || utc);\r\n\r\n // Require e collegamento con la localizzazione per dayjs\r\n import(\"dayjs/locale/\" + this.lc.SmallLocale + \".js\").then(locale => { dayjs.locale(locale); });\r\n }\r\n\r\n setupSignalRJobListening() {\r\n this.notifications.observe(this.MessageDef.IN_JobProgressNotification).subscribe((ev: JobProgressDto) => {\r\n var desc = ev.description + \" (\" + ev.user + \")\";\r\n let job: ApplicationJob = {\r\n id: ev.instance,\r\n description: desc,\r\n smalldescription: desc.length > 35 ? desc.substring(0, 30) + \"...\" : desc,\r\n percentage: this.roundToTwo(ev.progress),\r\n completed: ev.type == 'Completed',\r\n fileid: ev.resultfile,\r\n reportid: ev.resultreport,\r\n reportpars: ev.resultreportparams,\r\n complexreportid: ev.resultcomplexreport\r\n };\r\n\r\n switch (ev.type) {\r\n case \"Started\":\r\n if (this.jobWithIdsCache[ev.instance]) {\r\n console.warn(\"Job already registered on the 'Started' callback\");\r\n return;\r\n }\r\n this.jobWithIdsCache[ev.instance] = job;\r\n this.allJobs.splice(0, 0, job);\r\n break;\r\n case \"Progress\":\r\n // Se mi arriva un progress di un job che non ho significa che mi sono loggato ora con dei Job in corso\r\n // quindi per prima cosa devo metterlo in lista\r\n if (!this.jobWithIdsCache[ev.instance]) {\r\n this.jobWithIdsCache[ev.instance] = job;\r\n this.allJobs.splice(0, 0, job);\r\n }\r\n this.jobWithIdsCache[ev.instance].percentage = this.roundToTwo(ev.progress);\r\n break;\r\n case \"Completed\":\r\n if (!this.jobWithIdsCache[ev.instance]) {\r\n this.jobWithIdsCache[ev.instance] = job;\r\n this.allJobs.splice(0, 0, job);\r\n }\r\n var jobToUpdate = this.jobWithIdsCache[ev.instance];\r\n jobToUpdate.percentage = 100;\r\n jobToUpdate.fileid = ev.resultfile;\r\n jobToUpdate.reportid = ev.resultreport;\r\n jobToUpdate.reportpars = ev.resultreportparams;\r\n jobToUpdate.completed = true;\r\n\r\n if (this.notifyOnCompletedJobs)\r\n this.notifyDataChanged(\"app.completedJob\", jobToUpdate.description);\r\n\r\n break;\r\n }\r\n\r\n this.jobsInProgress = this.allJobs.filter(t => !t.completed).length;\r\n });\r\n }\r\n\r\n roundToTwo(num) {\r\n return Math.round(num * 100) / 100;\r\n }\r\n\r\n getJaceIDentity(): JaceIdentity {\r\n if (this.JaceIdentity)\r\n return this.JaceIdentity;\r\n this.JaceIdentity = this.bts.getJaceIdentity();\r\n return this.JaceIdentity;\r\n }\r\n\r\n notifyDataChanged(event, value) {\r\n this._data[event] = value;\r\n this._data.next({\r\n event: event,\r\n data: this._data[event]\r\n });\r\n }\r\n\r\n subscribe(event: string, callback: Function) {\r\n var subscribers = this._subscriptions.get(event) || [];\r\n subscribers.push(callback);\r\n\r\n this._subscriptions.set(event, subscribers);\r\n }\r\n\r\n _onEvent(data: any) {\r\n var subscribers = this._subscriptions.get(data[\"event\"]) || [];\r\n\r\n subscribers.forEach((callback) => {\r\n callback.call(null, data[\"data\"]);\r\n });\r\n }\r\n\r\n public setSidebarWidth(width: number) {\r\n this.sidebarWidth = width;\r\n }\r\n\r\n public setHeaderHeight(height: number) {\r\n this.headerHeight = height;\r\n }\r\n}","// Angular\r\nimport { Injectable } from \"@angular/core\";\r\nimport { Router } from \"@angular/router\";\r\n\r\n// Configurazioni\r\nimport { AccessControlService } from \"@esfaenza/access-control\";\r\nimport { HttpServiceExtensions } from \"@esfaenza/httpservice\";\r\nimport { LocalizationService } from \"@esfaenza/localizations\";\r\nimport { MessageService } from \"@esfaenza/extensions\";\r\n\r\n// Applicazione\r\nimport { HTTPServiceExtensionsLoc } from \"./app.httpextensions.loc\";\r\nimport { AppState } from \"./app.state\";\r\nimport { TokenService } from \"./app.accesstoken\";\r\n\r\nimport { EnvOptions } from \"@esfaenza/core/domain\";\r\n\r\ndeclare var myconfig: EnvOptions;\r\n\r\n@Injectable()\r\nexport class HTTPServiceExtensions implements HttpServiceExtensions {\r\n\r\n constructor(private lc: LocalizationService, private tks: TokenService, private as: AppState, private router: Router, private ac: AccessControlService, private msgs: MessageService) {\r\n this.lc = this.lc.generateFromType(HTTPServiceExtensionsLoc)\r\n }\r\n\r\n //Gestione Auth\r\n retrieveAccessToken(): string {\r\n return this.tks.getAccessToken().toString();\r\n }\r\n\r\n retrieveIdentity(): { IdUser: string; Idtenant: string; } {\r\n return <any>this.tks.getJaceIdentity();\r\n }\r\n\r\n //Gestione ridirezione al login / altre pagine\r\n readRedirectingToLogin(): boolean {\r\n return this.as.redirectingToLogin;\r\n }\r\n\r\n writeRedirectingToLogin(status: boolean) {\r\n this.as.redirectingToLogin = status;\r\n }\r\n\r\n redirectToLogin(): void {\r\n console.log(\"httpextensions: redirecting to login\");\r\n this.router.navigate([\"login\", { fromUrl: this.router.url }]);\r\n }\r\n\r\n readRedirectionStatus(): boolean {\r\n return myconfig?.redirectInProgress;\r\n }\r\n\r\n writeRedirectionStatus(status: boolean): void {\r\n myconfig.redirectInProgress = status;\r\n }\r\n\r\n //Gestione error handling flag\r\n readHandlingErrorStatus(): boolean {\r\n return this.as.handlingError;\r\n }\r\n\r\n writeHandlingErrorStatus(status: boolean) {\r\n this.as.handlingError = status;\r\n }\r\n\r\n // 444, se false passa a handleBlockingException\r\n handleNotConfiguredException(): boolean {\r\n if (this.ac.has(\"P:mdm_customize\")) {\r\n myconfig.redirectInProgress = true;\r\n this.as.handlingError = false;\r\n this.router.navigate([\"pages/adm/tenantconfig\"]);\r\n return true;\r\n }\r\n\r\n return false;\r\n }\r\n\r\n // 400, 403, 404, 444\r\n handleBlockingException(status: number, text: string) {\r\n this.msgs.simpleError(status + \": \" + text)\r\n this.as.handlingError = false;\r\n }\r\n\r\n // Tutto quello che non è gestito da handleBlockingException\r\n handleException(status: number, text: string) {\r\n if (status == 503) {\r\n this.msgs.simpleError(this.lc.loc(\"Il Server sembra essere offline, prova a ricaricare la pagina\"));\r\n this.as.handlingError = false;\r\n }\r\n else if (status == 542) {\r\n this.msgs.simpleError(text);\r\n this.as.handlingError = false;\r\n }\r\n else {\r\n var st = btoa(encodeURIComponent(text).replace(/%([0-9A-F]{2})/g, (match, p1) => String.fromCharCode(<any>(\"0x\" + p1))));\r\n var pars = { statusCode: status, statusText: st, fromUrl: this.router.url };\r\n this.router.navigate([\"iserr\", pars]);\r\n }\r\n }\r\n}","// Angular\r\nimport { Injectable } from \"@angular/core\";\r\n\r\n// Core\r\nimport { ApplicationMenu } from \"@esfaenza/core/domain\";\r\nimport { Observable, of } from \"rxjs\";\r\n\r\n@Injectable()\r\nexport class MenuFilteringService {\r\n /**\r\n * Applica un filtro agli elementi di menù in modo da poterli filtrare in base a condizioni arbitrarie (inclusi check lato BE)\r\n * \r\n * @param rawMenus Menù originali, non filtrati\r\n * @returns {Observable<ApplicationMenu[]>} Menù filtrati\r\n */\r\n public filter(rawMenus: ApplicationMenu[]): Observable<ApplicationMenu[]> {\r\n return of(rawMenus);\r\n }\r\n}","// Angular\r\nimport { Injectable } from \"@angular/core\";\r\n\r\n// Core\r\nimport { ApplicationJob } from \"@esfaenza/core/domain\";\r\n\r\n@Injectable()\r\nexport class CompletedJobRedirectionService {\r\n /**\r\n * Effettua un'operazione di redirect basata sul Job Completato\r\n * \r\n * @param completedJob Job appena completato per cui effettuare un redirect\r\n */\r\n public redirect(completedJob: ApplicationJob): void {\r\n\r\n }\r\n}","// Angular\r\nimport { Injectable } from \"@angular/core\";\r\nimport { Router } from \"@angular/router\";\r\n\r\n// Configurazioni\r\nimport { BaseSessionRetriever } from \"@esfaenza/preferences\";\r\n\r\n// Applicazione\r\nimport { TokenService } from \"./app.accesstoken\";\r\n\r\n// Core\r\nimport { EnvOptions } from \"@esfaenza/core/domain\";\r\n\r\ndeclare var myconfig: EnvOptions;\r\n\r\n@Injectable({ providedIn: \"root\" })\r\nexport class SessionRetriever implements BaseSessionRetriever {\r\n\r\n private SessionIdentity: string;\r\n\r\n constructor(private bts: TokenService, private router: Router) { }\r\n\r\n /** Tenant§Account§User§ModuleId */\r\n getSessionKey(): string {\r\n if (this.SessionIdentity)\r\n return this.SessionIdentity;\r\n\r\n // Se non ho un id mi manca il login, quindi via di qua\r\n var id = this.bts.getJaceIdentity();\r\n if (!id) {\r\n console.log(\"no identity, redirecting to login\")\r\n this.router.navigate([\"login\"]);\r\n return \"\";\r\n }\r\n\r\n this.SessionIdentity = \"\" + id.Idtenant + \"§\" + id.IdAccount + \"§\" + id.IdUser + \"§\" + myconfig?.AppData?.ModuleId;\r\n return this.SessionIdentity;\r\n }\r\n}","// Angular\r\nimport { HttpClient, HttpHeaders } from \"@angular/common/http\";\r\nimport { Injectable } from \"@angular/core\";\r\n\r\n// Configurazioni\r\nimport { BaseSessionRetriever, CachePersistor } from \"@esfaenza/preferences\";\r\nimport { LocalizationService } from \"@esfaenza/localizations\";\r\nimport { TokenService } from \"../app.accesstoken\";\r\n\r\n// Direttive, Componenti, Librerie\r\nimport { Observable, of } from \"rxjs\";\r\nimport { catchError, map } from \"rxjs/operators\";\r\n\r\n// Chiamate ai Repository\r\nconst BASE_Cache_Sessions: string = \"/api/Cache/sessions\";\r\n\r\n@Injectable()\r\nexport class ApplicationCachePersistor extends CachePersistor {\r\n\r\n // Passo direttamente dall'HttpClient nativo in quanto non posso passare dall'HttpService dato che \r\n // lui richiede il PreferencesService che richiede questa classe che richiede l'HttpService ecc ecc...\r\n constructor(private lc: LocalizationService, private http: HttpClient, private tks: TokenService, session: BaseSessionRetriever) { super(session); }\r\n\r\n public persist<T>(key: string, item: T): Observable<boolean> {\r\n let sk = this.session.getSessionKey();\r\n if (!sk) return of(false);\r\n\r\n return this.http.post<boolean>(this.getItemUrl(sk, key), JSON.stringify(item), { headers: this.getHeaders() }).pipe(catchError(e => of(false)));\r\n }\r\n\r\n public recover<T>(key?: string): Observable<T> {\r\n let sk = this.session.getSessionKey();\r\n if (!sk) return of(null);\r\n\r\n return this.http.get<string>(this.getItemUrl(sk, key), { headers: this.getHeaders() }).pipe(\r\n catchError(e => of(null)),\r\n map((res) => {\r\n var resProp = null;\r\n try { resProp = <T>JSON.parse(res); }\r\n catch { }\r\n return resProp;\r\n }));\r\n }\r\n\r\n public recoverAll(): Observable<{ [index: string]: any; }> {\r\n let sk = this.session.getSessionKey();\r\n if (!sk) return of(null);\r\n\r\n return this.http.get<{ [index: string]: any; }>(this.getSessionUrl(sk), { headers: this.getHeaders() }).pipe(\r\n catchError(e => of(null)),\r\n map((res) => {\r\n for (var prop in res) {\r\n var resProp = null;\r\n try { resProp = JSON.parse(res[prop]); }\r\n catch { }\r\n res[prop] = resProp;\r\n }\r\n return res\r\n }));\r\n }\r\n\r\n public remove(key?: string): Observable<boolean> {\r\n let sk = this.session.getSessionKey();\r\n if (!sk) return of(false);\r\n\r\n return this.http.delete<boolean>(this.getItemUrl(sk, key), { headers: this.getHeaders() }).pipe(catchError(e => of(false)));\r\n }\r\n\r\n public clear(): Observable<boolean> {\r\n let sk = this.session.getSessionKey();\r\n if (!sk) return of(false);\r\n\r\n return this.http.delete<boolean>(this.getItemsUrl(sk), { headers: this.getHeaders() }).pipe(catchError(e => of(false)));\r\n }\r\n\r\n private getHeaders(contentType: string = 'application/json'): HttpHeaders {\r\n return new HttpHeaders()\r\n .append(\"Content-Type\", contentType)\r\n .append(\"Accept\", \"application/json\")\r\n .append(\"Authorization\", \"Bearer \" + this.tks.getAccessToken())\r\n .append(\"Accept-Language\", this.lc.Locale);\r\n }\r\n\r\n private getSessionUrl(sessionKey: string): string {\r\n return `${BASE_Cache_Sessions}/${sessionKey}`;\r\n }\r\n\r\n private getItemsUrl(sessionKey: string): string {\r\n return `${this.getSessionUrl(sessionKey)}/items`;\r\n }\r\n\r\n private getItemUrl(sessionKey: string, itemKey: string): string {\r\n return `${this.getItemsUrl(sessionKey)}/${itemKey}`;\r\n }\r\n}","// Angular\r\nimport { HttpClient, HttpHeaders } from \"@angular/common/http\";\r\nimport { Injectable } from \"@angular/core\";\r\n\r\n// Configurazioni\r\nimport { BaseSessionRetriever, PreferencesPersistor } from \"@esfaenza/preferences\";\r\nimport { LocalizationService } from \"@esfaenza/localizations\";\r\nimport { TokenService } from \"../app.accesstoken\";\r\n\r\n// Direttive, Componenti, Librerie\r\nimport { Observable, of } from \"rxjs\";\r\nimport { catchError, map } from \"rxjs/operators\";\r\n\r\n// Chiamate ai Repository\r\nconst BASE_Preferences_Sessions: string = \"/api/Preferences/sessions\";\r\n\r\n@Injectable()\r\nexport class ApplicationPreferencesPersistor extends PreferencesPersistor {\r\n\r\n // Passo direttamente dall'HttpClient nativo in quanto non posso passare dall'HttpService dato che \r\n // lui richiede il PreferencesService che richiede questa classe che richiede l'HttpService ecc ecc...\r\n constructor(private lc: LocalizationService, private http: HttpClient, private tks: TokenService, session: BaseSessionRetriever) { super(session); }\r\n\r\n public persist<T>(key: string, item: T): Observable<boolean> {\r\n let sk = this.session.getSessionKey();\r\n if (!sk) return of(false);\r\n\r\n return this.http.post<boolean>(this.getItemUrl(sk, key), JSON.stringify(item), { headers: this.getHeaders() }).pipe(catchError(e => of(false)));\r\n }\r\n\r\n public recover<T>(key?: string): Observable<T> {\r\n let sk = this.session.getSessionKey();\r\n if (!sk) return of(null);\r\n\r\n return this.http.get<string>(this.getItemUrl(sk, key), { headers: this.getHeaders() }).pipe(map((res) => {\r\n var resProp = null;\r\n try { resProp = <T>JSON.parse(res); }\r\n catch { }\r\n return resProp;\r\n }));\r\n }\r\n\r\n public recoverAll(): Observable<{ [index: string]: any; }> {\r\n let sk = this.session.getSessionKey();\r\n if (!sk) return of(null);\r\n\r\n return this.http.get<{ [index: string]: any; }>(this.getSessionUrl(sk), { headers: this.getHeaders() }).pipe(\r\n catchError(e => of(null)),\r\n map((res) => {\r\n for (var prop in res) {\r\n var resProp = null;\r\n try { resProp = JSON.parse(res[prop]); }\r\n catch { }\r\n res[prop] = resProp;\r\n }\r\n return res\r\n }));\r\n }\r\n\r\n public remove(key?: string): Observable<boolean> {\r\n let sk = this.session.getSessionKey();\r\n if (!sk) return of(false);\r\n\r\n return this.http.delete<boolean>(this.getItemUrl(sk, key), { headers: this.getHeaders() }).pipe(catchError(e => of(false)));\r\n }\r\n\r\n public clear(): Observable<boolean> {\r\n let sk = this.session.getSessionKey();\r\n if (!sk) return of(false);\r\n\r\n return this.http.delete<boolean>(this.getItemsUrl(sk), { headers: this.getHeaders() }).pipe(catchError(e => of(false)));\r\n }\r\n\r\n private getHeaders(contentType: string = 'application/json'): HttpHeaders {\r\n return new HttpHeaders()\r\n .append(\"Content-Type\", contentType)\r\n .append(\"Accept\", \"application/json\")\r\n .append(\"Authorization\", \"Bearer \" + this.tks.getAccessToken())\r\n .append(\"Accept-Language\", this.lc.Locale);\r\n }\r\n\r\n private getSessionUrl(sessionKey: string): string {\r\n return `${BASE_Preferences_Sessions}/${sessionKey}`;\r\n }\r\n\r\n private getItemsUrl(sessionKey: string): string {\r\n return `${this.getSessionUrl(sessionKey)}/items`;\r\n }\r\n\r\n private getItemUrl(sessionKey: string, itemKey: string): string {\r\n return `${this.getItemsUrl(sessionKey)}/${itemKey}`;\r\n }\r\n}","// Angular\r\nimport { Injectable } from \"@angular/core\";\r\nimport { Router } from \"@angular/router\";\r\n\r\n// Configurazioni\r\nimport { AccessControlRouteGuard, AccessControlService } from \"@esfaenza/access-control\";\r\nimport { MessageService } from \"@esfaenza/extensions\";\r\n\r\nimport { TokenService } from \"./app.accesstoken\";\r\n\r\n@Injectable()\r\nexport class BaseRouterGuard extends AccessControlRouteGuard {\r\n constructor(ms: MessageService, acc: AccessControlService, router: Router, ts: TokenService) {\r\n super(ms, acc, router);\r\n\r\n if (!acc.Initialized)\r\n acc.initializeIdentity(ts.getJaceIdentity());\r\n }\r\n}","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1","i2.TokenService","i3.AppState","i4","i6","i1.TokenService","i2","i3.TokenService","i3","i4.TokenService"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"esfaenza-core-services.mjs","sources":["../../../projects/core/services/src/classes/app.accesstoken.ts","../../../projects/core/services/src/classes/app.globalsearch.ts","../../../projects/core/services/src/classes/app.errorhandler.ts","../../../projects/core/services/src/classes/app.event.ts","../../../projects/core/services/src/classes/app.httpextensions.loc.ts","../../../projects/core/services/src/classes/app.state.ts","../../../projects/core/services/src/classes/app.httpextensions.ts","../../../projects/core/services/src/classes/app.menufilter.ts","../../../projects/core/services/src/classes/app.completedjobredirection.ts","../../../projects/core/services/src/classes/app.session.ts","../../../projects/core/services/src/classes/preferences/app.cache.persistor.ts","../../../projects/core/services/src/classes/preferences/app.preference.persistor.ts","../../../projects/core/services/src/classes/app.routeguard.ts","../../../projects/core/services/src/esfaenza-core-services.ts"],"sourcesContent":["// Angular\r\nimport { Inject, Injectable, Optional } from \"@angular/core\";\r\n\r\n// Direttive, Componenti, Librerie\r\nimport { CookieService } from \"ngx-cookie-service\";\r\n\r\n// Applicazione\r\nimport { AccountScope, JaceIdentity, USE_FAKE_ACCESS_TOKEN } from \"@esfaenza/core/domain\";\r\n\r\n@Injectable({ providedIn: \"root\" })\r\nexport class TokenService {\r\n \r\n public accountScope: AccountScope;\r\n\r\n constructor(public cs: CookieService, @Optional() @Inject(USE_FAKE_ACCESS_TOKEN) private USE_FAKE_ACCESS_TOKEN: boolean) { }\r\n\r\n clearTokens(): void {\r\n this.cs.delete(\"access_token\");\r\n }\r\n\r\n getAccessToken(): String {\r\n return this.USE_FAKE_ACCESS_TOKEN ? this.getFakeToken() : this.cs.get(\"accessToken\");\r\n }\r\n\r\n getJaceIdentity(): JaceIdentity {\r\n let token = this.USE_FAKE_ACCESS_TOKEN ? this.getFakeToken() : this.cs.get(\"accessToken\");\r\n if (!token)\r\n return null;\r\n\r\n let base64Url = token.split(\".\")[1];\r\n let base64 = base64Url.replace(\"-\", \"+\").replace(\"_\", \"/\");\r\n let tokenData = JSON.parse(decodeURIComponent(window.atob(base64).split(\"\").map(c => \"%\" + (\"00\" + c.charCodeAt(0).toString(16)).slice(-2)).join(\"\")));\r\n\r\n let identity: JaceIdentity = new JaceIdentity(this.accountScope);\r\n identity.IdAccount = tokenData.ACCOUNTID;\r\n identity.IdUser = tokenData.USERID;\r\n identity.DsUser = tokenData.USERNAME;\r\n identity.FullName = tokenData.USERDESCRIPTION;\r\n identity.Idtenant = tokenData.TENANT;\r\n identity.TenantName = tokenData.TENANTNAME;\r\n identity.ExpirationTime = new Date(tokenData.exp * 1000);//unix-epoch in secondi -> millisecondi\r\n\r\n return identity;\r\n }\r\n\r\n //Accesstoken fittizio ma valido, per simulare la connession corretta col backend\r\n private getFakeToken(): string {\r\n return \"eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJuYmYiOjE1OTA0MTU4NDYsImV4cCI6MTk5MDQyMDA2NSwiaXNzIjoiaHR0cDovL2F1dGhhcGlzdGFnaW5nYS5qYWNlLmVuZXJneXNvZnR3YXJlLnByaXYiLCJhdWQiOlsiaHR0cDovL2F1dGhhcGlzdGFnaW5nYS5qYWNlLmVuZXJneXNvZnR3YXJlLnByaXYvcmVzb3VyY2VzIiwiYXV0aGVudGljYXRpbyJdLCJjbGllbnRfaWQiOiJtZXRlcmluZ3N0YWdpbmciLCJzdWIiOiIxMDAzIiwiYXV0aF90aW1lIjoxNTkwNDE1ODQ2LCJpZHAiOiJsb2NhbCIsIkFDQ09VTlRJRCI6IjEwMDMiLCJVU0VSSUQiOiIyNTkiLCJVU0VSREVTQ1JJUFRJT04iOiJUZXN0IFVzZXIiLCJVU0VSTkFNRSI6IlRFU1QiLCJURU5BTlQiOiJGWCIsIlRFTkFOVE5BTUUiOiJGZW5peCBTcmwiLCJyb2xlIjpbIkJhY2tvZmZpY2UiLCJEYXRhIE1hbmFnZXIiLCJUcmFkaW5nIiwiUmVtaXQgTWFuYWdlciIsIlRlbmFudCBSZWFkZXIiLCJDb21wbC4gQVJFUkEgUmVhZGVyIiwiQ29tcGwuIEFSRVJBIFdyaXRlciBMMSIsIkNvbXBsLiBBUkVSQSBXcml0ZXIgTDIiLCJKYWNlIEFkbWluIl0sIk1PRFVMRSI6WyIzNiIsIjM3IiwiMTQiLCI1IiwiMzIiLCIxNSIsIjQyIiwiOCIsIjE3IiwiMTEiLCIyMSIsIjkiLCIzOCIsIjE4IiwiNyIsIjM0IiwiMTYiLCIyMCIsIjE5IiwiMSIsIjIiLCIzMSIsIjEyIiwiMTAiLCIzMyIsIjQwIiwiMjIiLCIxMyIsIjYiXSwiUEVSTUlTU0lPTiI6WyJleHRyYWN0X2RhdGEiLCJtZG1fcmVhZCIsIm1kbV9hZHZfb3AiLCJtZG1fY2ZnX2Jhc2UiLCJjcmVhdGVfdHJhZGUiLCJtZG1fbWFzc19kZWwiLCJzZW5kX2NvbW0iLCJtZG1fZmN0IiwibWRtX2NmZ19hZHYiLCJtZG1fY2ZnX3JlYWQiLCJtYW5hZ2VfZWxlIiwibWFuYWdlX2dhcyIsImNvbmZpcm1fdHJhZGUiLCJtZG1fY3VzdG9taXplIiwibmV3X2NvbW0iLCJtZG1fbWFzc19mY3QiLCJtZG1fb3AiLCJ2aWV3X2JpbGxpbmciLCJtZG1fbWFzc19vcCIsIm1kbV9hZHZfcmVhZCJdLCJqdGkiOiIwZTUzMDc1NjE2MDZlNDQ0ZTI4ODViMTFhMzE0NDQyMSIsInNjb3BlIjpbImF1dGgiLCJvZmZsaW5lX2FjY2VzcyJdLCJhbXIiOlsicGFzc3dvcmQiXSwiaWF0IjoxNTkwNDE2NDY1fQ.MNcphwkIwvLFDDpLaFDN3GK11lgT2aqvXa8s7bQJgdE\";\r\n }\r\n}","// Angular\r\nimport { Injectable } from \"@angular/core\";\r\n\r\n// Core\r\nimport { KeyValue, SearchResultContainer } from \"@esfaenza/core/domain\";\r\n\r\n// Rxjs\r\nimport { Observable, of } from \"rxjs\";\r\n\r\n@Injectable()\r\nexport class GlobalSearchService {\r\n public Enabled: boolean = false;\r\n\r\n /**\r\n * Effettua una ricerca in base a un termine generico\r\n * \r\n * @param term Termine da cercare\r\n * @returns {SearchResultContainer} Contenitore della ricerca\r\n */\r\n public search(term: string): Observable<SearchResultContainer> {\r\n return of(null);\r\n }\r\n\r\n /**\r\n * Data la definizione semplice di una colonna restituisce un oggetto che indica se bisogna presentere un link su di essa\r\n * \r\n * @param column Colonna per cui verificare la presentazione di un link. Esempio: {id: \"IDPARTY\", description: \"Cod. Controparte\"}\r\n * @returns {{ routePath: string, routeProperties: string[] }} Oggetto che indica un link con i propri binding. Ad esempio: {routePath: \"['/pages/parties/parties_details', { 'idModel': '{0}' }]\", routeProperties: [\"IDPARTY\"]}\r\n */\r\n public generateColumnLink(column: KeyValue): { routePath: string, routeProperties: string[] } {\r\n return null;\r\n }\r\n}","// Angular\r\nimport { ErrorHandler, Injectable, Injector } from \"@angular/core\";\r\nimport { HttpErrorResponse } from \"@angular/common/http\";\r\nimport { Router } from \"@angular/router\";\r\n\r\nimport { EnvOptions } from \"@esfaenza/core/domain\";\r\n\r\ndeclare var myconfig: EnvOptions\r\n\r\n@Injectable()\r\nexport class APPErrorHandler implements ErrorHandler {\r\n private router;\r\n\r\n constructor(private injector: Injector) { }\r\n\r\n handleError(error) {\r\n if (this.router == null)\r\n this.router = this.injector.get(Router);\r\n\r\n //Ignoro eventuali errori di javascript quando il redirect è attivo\r\n if (myconfig && myconfig.redirectInProgress) {\r\n console.log(\"Javascript error on redirect in progress, ignoring this event\");\r\n return;\r\n }\r\n\r\n //In caso io abbia impostato succesresultmandatory nell'httprequest e questa abbia dato errore tiro fuori un exception che dev'essere mostrata come si deve\r\n var newError = \"\";\r\n if (!error.message && !error.stack)\r\n newError = error\r\n else if (error instanceof HttpErrorResponse)\r\n newError = error.message;\r\n else\r\n newError = error.stack && error.stack.length > 1000 ? error.stack.substring(0, 999) + \"[...]\" : error.stack;\r\n\r\n var pars = { errorMessage: this.b64EncodeUnicode(newError), fromUrl: this.router.url };\r\n this.router.navigate([\"/anerr\", pars]);\r\n }\r\n\r\n b64EncodeUnicode(str) {\r\n // first we use encodeURIComponent to get percent-encoded UTF-8,\r\n // then we convert the percent encodings into raw bytes which\r\n // can be fed into btoa.\r\n return btoa(encodeURIComponent(str).replace(/%([0-9A-F]{2})/g, (match, p1) => String.fromCharCode(<any>(\"0x\" + p1))));\r\n }\r\n}","// Angular\r\nimport { Injectable, NgZone } from \"@angular/core\";\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class OutZoneEventPlugin {\r\n\r\n constructor(private zone: NgZone) { }\r\n\r\n supports(eventName: string): boolean {\r\n return eventName.endsWith('out-zone');\r\n }\r\n\r\n addEventListener(element: HTMLElement, eventName: string, originalHandler: Function): Function {\r\n let eventOriginalName = eventName.split('.')[0];\r\n let standardHandler = (event: Event) => originalHandler(event)\r\n if (eventName.endsWith('out-zone'))\r\n this.zone.runOutsideAngular(() => { element.addEventListener(eventOriginalName, standardHandler); });\r\n else\r\n element.addEventListener(eventOriginalName, standardHandler)\r\n\r\n return () => element.removeEventListener(eventOriginalName, standardHandler);\r\n }\r\n}","import { Injectable, Injector } from \"@angular/core\";\r\nimport { LocalizationService } from \"@esfaenza/localizations\";\r\n\r\n@Injectable()\r\nexport class HTTPServiceExtensionsLoc extends LocalizationService {\r\n constructor(injector: Injector) {\r\n super(injector);\r\n super.set(\"it->en\", \"Il Server sembra essere offline, prova a ricaricare la pagina\", [\"Server seems to be offline, try to reload this page\"]);\r\n }\r\n}","// Angular\r\nimport { ActivatedRouteSnapshot, Router } from \"@angular/router\";\r\nimport { Injectable } from \"@angular/core\";\r\n\r\n// Configurazioni\r\nimport { BaseMessageService, NotificationsService, JobProgressDto } from \"@esfaenza/signalr-notifications\";\r\nimport { InboundMessageTypes, InterComMessage, InterComService } from \"@esfaenza/extensions\";\r\nimport { AdmMessageTypes, MK_ADM } from \"@esfaenza/admin-module\";\r\nimport { LocalizationService } from \"@esfaenza/localizations\";\r\nimport { TokenService } from \"./app.accesstoken\";\r\n\r\n// Core\r\nimport { ActiveModuleView, ApplicationJob, JaceIdentity } from \"@esfaenza/core/domain\";\r\n\r\n// Direttive, Componenti, Librerie\r\nimport * as customParseFormat from 'dayjs/plugin/customParseFormat';\r\nimport * as isSameOrBefore from 'dayjs/plugin/isSameOrBefore';\r\nimport * as isSameOrAfter from 'dayjs/plugin/isSameOrAfter';\r\nimport * as isBetween from 'dayjs/plugin/isBetween';\r\nimport * as duration from 'dayjs/plugin/duration';\r\nimport * as minMax from 'dayjs/plugin/minMax';\r\nimport * as utc from 'dayjs/plugin/utc';\r\nimport { Subject } from \"rxjs\";\r\n\r\ndeclare var dayjs: any;\r\n\r\n@Injectable({ providedIn: \"root\" })\r\nexport class AppState {\r\n\r\n public sidebarWidth: number;\r\n public headerHeight: number;\r\n public redirectingToLogin: boolean = false;\r\n public handlingError: boolean = false;\r\n public christmasTime: boolean = false;\r\n public halloweenTime: boolean = false;\r\n\r\n private JaceIdentity: JaceIdentity;\r\n\r\n public jobsInProgress: number = 0;\r\n public allJobs: ApplicationJob[] = [];\r\n private jobWithIdsCache: { [index: string]: ApplicationJob } = {};\r\n public notifyOnCompletedJobs: boolean = true;\r\n\r\n private _data = new Subject<Object>();\r\n private _dataStream$ = this._data.asObservable();\r\n\r\n private _subscriptions: Map<string, Array<Function>> = new Map<string, Array<Function>>();\r\n\r\n public ModulesLocalizations: { [id: string]: LocalizationService } = {};\r\n\r\n public Embedded: boolean = false;\r\n public EmbeddingLevel: number = 0;\r\n public MainWindow: any;\r\n\r\n private _modules: ActiveModuleView[];\r\n public set Modules(modules: ActiveModuleView[]) {\r\n this._modules = modules;\r\n this.notifyDataChanged(\"modules.Retrieved\", this._modules);\r\n }\r\n public get Modules(): ActiveModuleView[] { return this._modules; }\r\n\r\n constructor(private lc: LocalizationService, private bts: TokenService, private notifications: NotificationsService, private MessageDef: BaseMessageService, private intercom: InterComService, private router: Router) {\r\n this.setupEmbeddability();\r\n this.setupDayjs();\r\n this.setupSignalRJobListening();\r\n\r\n this.JaceIdentity = null;\r\n this._dataStream$.subscribe((data) => this._onEvent(data));\r\n\r\n //Decide se siamo attorno a natale\r\n var today = dayjs();\r\n var lowerBound = dayjs(\"18/12/\" + today.year(), \"DD/MM/YYYY\");\r\n var upperBound = dayjs(\"07/01/\" + (today.year() + 1), \"DD/MM/YYYY\");\r\n this.christmasTime = today > lowerBound && today < upperBound;\r\n\r\n //Decide se siamo attorno ad halloween\r\n var lowerBound = dayjs(\"28/10/\" + today.year(), \"DD/MM/YYYY\");\r\n var upperBound = dayjs(\"05/11/\" + today.year(), \"DD/MM/YYYY\");\r\n this.halloweenTime = today > lowerBound && today < upperBound;\r\n\r\n this.intercom.inbounds.subscribe((t: InterComMessage) => { this.handleInboundMessage(t); });\r\n }\r\n\r\n setupEmbeddability() {\r\n window.onmessage = (event: MessageEvent) => {\r\n // Ignoro i miei messaggi dato che mi interessano solo quelli degli altri iframe\r\n if (event.source == window && event?.data?.type != \"modal-open\")\r\n return;\r\n \r\n if (event?.data?.type == \"navigate\") {\r\n console.log(`Window message - navigate -> ${event?.data?.url}`);\r\n \r\n this.router.navigate([event?.data?.url]);\r\n }\r\n\r\n if (event?.data?.type == \"navigation\") {\r\n console.log(`Window message - Navigation -> ${event?.data?.internalNavigation ? \"[internal]\" : \"\"} ${event?.data?.title}`);\r\n \r\n if (event?.data?.internalNavigation)\r\n this.notifyDataChanged(\"menu.adjustSubNavigationTo\", event?.data?.title);\r\n else\r\n this.notifyDataChanged(\"menu.adjustNavigationTo\", event?.data?.title);\r\n }\r\n \r\n if (event?.data?.type == \"modal-open\") {\r\n const wrapper = document.body.getElementsByClassName(\"main-wrapper\")[0] as HTMLElement;\r\n let wrapperStyles = window.getComputedStyle(wrapper);\r\n const wrapperPaddingLeft = parseInt(wrapperStyles.getPropertyValue(\"padding-left\"));\r\n const wrapperPaddingRight = parseInt(wrapperStyles.getPropertyValue(\"padding-right\"));\r\n \r\n console.log(`Window message - Modal Open -> Backdrop Height: ${event?.data?.backdropHeight}`);\r\n \r\n var topHeight: number = 116; // valore fisso, distanza fra il top e l'inizio dell'iframe, non sarà mai diverso\r\n var rightSpace: number = wrapperPaddingRight; // valore fisso, distanza fra la fine dell'iframe e il lato sinistro dello schermo, non sarà mai diverso\r\n var leftSpace: number = this.sidebarWidth + wrapperPaddingLeft;\r\n \r\n let commonStyles = \"position: absolute; z-index: 9999; background-color: #000; opacity: 0.5; \";\r\n \r\n wrapper.style.setProperty(\"overflow\", \"hidden\", \"important\");\r\n \r\n const top = document.createElement(\"div\");\r\n top.className = \"embedded-modal-top\";\r\n top.style.cssText = commonStyles + `height: ${topHeight}px; top: 0; width: calc(100% - ${leftSpace}px); left: ${leftSpace}px`;\r\n top.id = \"top\";\r\n \r\n const left = document.createElement(\"div\");\r\n left.className = \"embedded-modal-left\";\r\n left.style.cssText = commonStyles + `height: 100%; top: 0; width: ${leftSpace}px;`;\r\n left.id = \"left\";\r\n \r\n const right = document.createElement(\"div\");\r\n right.className = \"embedded-modal-right\";\r\n right.style.cssText = commonStyles + `height: calc(100% - ${topHeight}px); top: ${topHeight}px; right: 0; width: ${rightSpace}px;`;\r\n right.id = \"right\";\r\n \r\n document.body.appendChild(top);\r\n document.body.appendChild(left);\r\n document.body.appendChild(right);\r\n }\r\n \r\n if (event?.data?.type == \"modal-close\") {\r\n console.log(`Window message - Modal Close`);\r\n \r\n let wrapper = document.body.getElementsByClassName(\"main-wrapper\")[0] as HTMLElement;\r\n wrapper.style.removeProperty(\"overflow\");\r\n \r\n const top = document.getElementById(\"top\");\r\n const left = document.getElementById(\"left\");\r\n const right = document.getElementById(\"right\");\r\n \r\n if (top)\r\n document.body.removeChild(top);\r\n if (left)\r\n document.body.removeChild(left);\r\n if (right)\r\n document.body.removeChild(right);\r\n }\r\n };\r\n \r\n this.subscribe(\"menu.isCollapsed\", () => {\r\n const wrapper = document.body.getElementsByClassName(\"main-wrapper\")[0] as HTMLElement;\r\n let wrapperStyles = window.getComputedStyle(wrapper);\r\n const wrapperPaddingLeft = parseInt(wrapperStyles.getPropertyValue(\"padding-left\"));\r\n var leftSpace: number = this.sidebarWidth + wrapperPaddingLeft;\r\n \r\n const left = document.getElementById(\"left\");\r\n const top = document.getElementById(\"top\");\r\n \r\n if (top) {\r\n top.style.setProperty(\"left\", (leftSpace) + \"px\");\r\n top.style.setProperty(\"width\", `calc(100% - ${leftSpace}px)`);\r\n }\r\n \r\n if (left)\r\n left.style.setProperty(\"width\", leftSpace + \"px\");\r\n });\r\n \r\n this.MainWindow = <{ parent: any, postMessage: Function }>window;\r\n while (this.MainWindow.parent != this.MainWindow) {\r\n this.MainWindow = this.MainWindow.parent;\r\n this.EmbeddingLevel++;\r\n this.Embedded = true;\r\n }\r\n \r\n if (this.Embedded)\r\n document.body.style.setProperty(\"overflow-y\", \"auto\", \"important\");\r\n }\r\n\r\n registerNavigationIfMeaningful(route?: ActivatedRouteSnapshot) {\r\n let title = route.data[\"title\"];\r\n let internal = route.data[\"internalNavigation\"]\r\n\r\n // Permette di chiamare sto registerNavigation a prescindere e fare opt out se non è una route navigabile\r\n if(!title) return;\r\n\r\n /*\r\n * Parent ({url: [{path: \"{module}\"}]})\r\n * Parent ({url: [{path: \"\"}]}) (Root del modulo lazy)\r\n * -> Navigazione attuale <-\r\n */\r\n let module = route.parent?.parent?.url[0]?.path;\r\n let loc = module ? this.ModulesLocalizations[module] : null;\r\n\r\n if (!module)\r\n console.error(\"Impossibile estrapolare il modulo dalla navigazione (Atteso Modulo al secondo livello di parentela partendo dal componente attuale): \" + route.pathFromRoot.map(v => v.url.map(segment => segment.toString()).join('/')).join('/'));\r\n\r\n this.notifyDataChanged(internal ? \"menu.adjustSubNavigationTo\" : \"menu.adjustNavigationTo\", loc ? loc.loc(title) : title);\r\n }\r\n\r\n handleInboundMessage(t: InterComMessage) {\r\n switch (t.type) {\r\n case InboundMessageTypes.Navigation:\r\n {\r\n this.notifyDataChanged(t.message.sub ? \"menu.adjustSubNavigationTo\" : \"menu.adjustNavigationTo\", t.message.routeTitle);\r\n this.intercom.send(AdmMessageTypes.Message, \"Navigation Message Received\", MK_ADM);\r\n }\r\n }\r\n }\r\n\r\n setupDayjs() {\r\n dayjs.extend((<any>customParseFormat).default || customParseFormat);\r\n dayjs.extend((<any>minMax).default || minMax);\r\n dayjs.extend((<any>isBetween).default || isBetween);\r\n dayjs.extend((<any>isSameOrBefore).default || isSameOrBefore);\r\n dayjs.extend((<any>isSameOrAfter).default || isSameOrAfter);\r\n dayjs.extend((<any>duration).default || duration);\r\n dayjs.extend((<any>utc).default || utc);\r\n\r\n // Require e collegamento con la localizzazione per dayjs\r\n import(\"dayjs/locale/\" + this.lc.SmallLocale + \".js\").then(locale => { dayjs.locale(locale); });\r\n }\r\n\r\n setupSignalRJobListening() {\r\n this.notifications.observe(this.MessageDef.IN_JobProgressNotification).subscribe((ev: JobProgressDto) => {\r\n var desc = ev.description + \" (\" + ev.user + \")\";\r\n let job: ApplicationJob = {\r\n id: ev.instance,\r\n description: desc,\r\n smalldescription: desc.length > 35 ? desc.substring(0, 30) + \"...\" : desc,\r\n percentage: this.roundToTwo(ev.progress),\r\n completed: ev.type == 'Completed',\r\n fileid: ev.resultfile,\r\n reportid: ev.resultreport,\r\n reportpars: ev.resultreportparams,\r\n complexreportid: ev.resultcomplexreport\r\n };\r\n\r\n switch (ev.type) {\r\n case \"Started\":\r\n if (this.jobWithIdsCache[ev.instance]) {\r\n console.warn(\"Job already registered on the 'Started' callback\");\r\n return;\r\n }\r\n this.jobWithIdsCache[ev.instance] = job;\r\n this.allJobs.splice(0, 0, job);\r\n break;\r\n case \"Progress\":\r\n // Se mi arriva un progress di un job che non ho significa che mi sono loggato ora con dei Job in corso\r\n // quindi per prima cosa devo metterlo in lista\r\n if (!this.jobWithIdsCache[ev.instance]) {\r\n this.jobWithIdsCache[ev.instance] = job;\r\n this.allJobs.splice(0, 0, job);\r\n }\r\n this.jobWithIdsCache[ev.instance].percentage = this.roundToTwo(ev.progress);\r\n break;\r\n case \"Completed\":\r\n if (!this.jobWithIdsCache[ev.instance]) {\r\n this.jobWithIdsCache[ev.instance] = job;\r\n this.allJobs.splice(0, 0, job);\r\n }\r\n var jobToUpdate = this.jobWithIdsCache[ev.instance];\r\n jobToUpdate.percentage = 100;\r\n jobToUpdate.fileid = ev.resultfile;\r\n jobToUpdate.reportid = ev.resultreport;\r\n jobToUpdate.reportpars = ev.resultreportparams;\r\n jobToUpdate.completed = true;\r\n\r\n if (this.notifyOnCompletedJobs)\r\n this.notifyDataChanged(\"app.completedJob\", jobToUpdate.description);\r\n\r\n break;\r\n }\r\n\r\n this.jobsInProgress = this.allJobs.filter(t => !t.completed).length;\r\n });\r\n }\r\n\r\n roundToTwo(num) {\r\n return Math.round(num * 100) / 100;\r\n }\r\n\r\n getJaceIDentity(): JaceIdentity {\r\n if (this.JaceIdentity)\r\n return this.JaceIdentity;\r\n this.JaceIdentity = this.bts.getJaceIdentity();\r\n return this.JaceIdentity;\r\n }\r\n\r\n notifyDataChanged(event, value) {\r\n this._data[event] = value;\r\n this._data.next({\r\n event: event,\r\n data: this._data[event]\r\n });\r\n }\r\n\r\n subscribe(event: string, callback: Function) {\r\n var subscribers = this._subscriptions.get(event) || [];\r\n subscribers.push(callback);\r\n\r\n this._subscriptions.set(event, subscribers);\r\n }\r\n\r\n _onEvent(data: any) {\r\n var subscribers = this._subscriptions.get(data[\"event\"]) || [];\r\n\r\n subscribers.forEach((callback) => {\r\n callback.call(null, data[\"data\"]);\r\n });\r\n }\r\n\r\n public setSidebarWidth(width: number) {\r\n this.sidebarWidth = width;\r\n }\r\n\r\n public setHeaderHeight(height: number) {\r\n this.headerHeight = height;\r\n }\r\n}","// Angular\r\nimport { Injectable } from \"@angular/core\";\r\nimport { Router } from \"@angular/router\";\r\n\r\n// Configurazioni\r\nimport { AccessControlService } from \"@esfaenza/access-control\";\r\nimport { HttpServiceExtensions } from \"@esfaenza/httpservice\";\r\nimport { LocalizationService } from \"@esfaenza/localizations\";\r\nimport { MessageService } from \"@esfaenza/extensions\";\r\n\r\n// Applicazione\r\nimport { HTTPServiceExtensionsLoc } from \"./app.httpextensions.loc\";\r\nimport { AppState } from \"./app.state\";\r\nimport { TokenService } from \"./app.accesstoken\";\r\n\r\nimport { EnvOptions } from \"@esfaenza/core/domain\";\r\n\r\ndeclare var myconfig: EnvOptions;\r\n\r\n@Injectable()\r\nexport class HTTPServiceExtensions implements HttpServiceExtensions {\r\n\r\n constructor(private lc: LocalizationService, private tks: TokenService, private as: AppState, private router: Router, private ac: AccessControlService, private msgs: MessageService) {\r\n this.lc = this.lc.generateFromType(HTTPServiceExtensionsLoc)\r\n }\r\n\r\n //Gestione Auth\r\n retrieveAccessToken(): string {\r\n return this.tks.getAccessToken().toString();\r\n }\r\n\r\n retrieveIdentity(): { IdUser: string; Idtenant: string; } {\r\n return <any>this.tks.getJaceIdentity();\r\n }\r\n\r\n //Gestione ridirezione al login / altre pagine\r\n readRedirectingToLogin(): boolean {\r\n return this.as.redirectingToLogin;\r\n }\r\n\r\n writeRedirectingToLogin(status: boolean) {\r\n this.as.redirectingToLogin = status;\r\n }\r\n\r\n redirectToLogin(): void {\r\n console.log(\"httpextensions: redirecting to login\");\r\n this.router.navigate([\"login\", { fromUrl: this.router.url }]);\r\n }\r\n\r\n readRedirectionStatus(): boolean {\r\n return myconfig?.redirectInProgress;\r\n }\r\n\r\n writeRedirectionStatus(status: boolean): void {\r\n myconfig.redirectInProgress = status;\r\n }\r\n\r\n //Gestione error handling flag\r\n readHandlingErrorStatus(): boolean {\r\n return this.as.handlingError;\r\n }\r\n\r\n writeHandlingErrorStatus(status: boolean) {\r\n this.as.handlingError = status;\r\n }\r\n\r\n // 444, se false passa a handleBlockingException\r\n handleNotConfiguredException(): boolean {\r\n if (this.ac.has(\"P:mdm_customize\")) {\r\n myconfig.redirectInProgress = true;\r\n this.as.handlingError = false;\r\n this.router.navigate([\"pages/adm/tenantconfig\"]);\r\n return true;\r\n }\r\n\r\n return false;\r\n }\r\n\r\n // 400, 403, 404, 444\r\n handleBlockingException(status: number, text: string) {\r\n this.msgs.simpleError(status + \": \" + text)\r\n this.as.handlingError = false;\r\n }\r\n\r\n // Tutto quello che non è gestito da handleBlockingException\r\n handleException(status: number, text: string) {\r\n if (status == 503) {\r\n this.msgs.simpleError(this.lc.loc(\"Il Server sembra essere offline, prova a ricaricare la pagina\"));\r\n this.as.handlingError = false;\r\n }\r\n else if (status == 542) {\r\n this.msgs.simpleError(text);\r\n this.as.handlingError = false;\r\n }\r\n else {\r\n var st = btoa(encodeURIComponent(text).replace(/%([0-9A-F]{2})/g, (match, p1) => String.fromCharCode(<any>(\"0x\" + p1))));\r\n var pars = { statusCode: status, statusText: st, fromUrl: this.router.url };\r\n this.router.navigate([\"iserr\", pars]);\r\n }\r\n }\r\n}","// Angular\r\nimport { Injectable } from \"@angular/core\";\r\n\r\n// Core\r\nimport { ApplicationMenu } from \"@esfaenza/core/domain\";\r\nimport { Observable, of } from \"rxjs\";\r\n\r\n@Injectable()\r\nexport class MenuFilteringService {\r\n /**\r\n * Applica un filtro agli elementi di menù in modo da poterli filtrare in base a condizioni arbitrarie (inclusi check lato BE)\r\n * \r\n * @param rawMenus Menù originali, non filtrati\r\n * @returns {Observable<ApplicationMenu[]>} Menù filtrati\r\n */\r\n public filter(rawMenus: ApplicationMenu[]): Observable<ApplicationMenu[]> {\r\n return of(rawMenus);\r\n }\r\n}","// Angular\r\nimport { Injectable } from \"@angular/core\";\r\n\r\n// Core\r\nimport { ApplicationJob } from \"@esfaenza/core/domain\";\r\n\r\n@Injectable()\r\nexport class CompletedJobRedirectionService {\r\n /**\r\n * Effettua un'operazione di redirect basata sul Job Completato\r\n * \r\n * @param completedJob Job appena completato per cui effettuare un redirect\r\n */\r\n public redirect(completedJob: ApplicationJob): void {\r\n\r\n }\r\n}","// Angular\r\nimport { Injectable } from \"@angular/core\";\r\nimport { Router } from \"@angular/router\";\r\n\r\n// Configurazioni\r\nimport { BaseSessionRetriever } from \"@esfaenza/preferences\";\r\n\r\n// Applicazione\r\nimport { TokenService } from \"./app.accesstoken\";\r\n\r\n// Core\r\nimport { EnvOptions } from \"@esfaenza/core/domain\";\r\n\r\ndeclare var myconfig: EnvOptions;\r\n\r\n@Injectable({ providedIn: \"root\" })\r\nexport class SessionRetriever implements BaseSessionRetriever {\r\n\r\n private SessionIdentity: string;\r\n\r\n constructor(private bts: TokenService, private router: Router) { }\r\n\r\n /** Tenant§Account§User§ModuleId */\r\n getSessionKey(): string {\r\n if (this.SessionIdentity)\r\n return this.SessionIdentity;\r\n\r\n // Se non ho un id mi manca il login, quindi via di qua\r\n var id = this.bts.getJaceIdentity();\r\n if (!id) {\r\n console.log(\"no identity, redirecting to login\")\r\n this.router.navigate([\"login\"]);\r\n return \"\";\r\n }\r\n\r\n this.SessionIdentity = \"\" + id.Idtenant + \"§\" + id.IdAccount + \"§\" + id.IdUser + \"§\" + myconfig?.AppData?.ModuleId;\r\n return this.SessionIdentity;\r\n }\r\n}","// Angular\r\nimport { HttpClient, HttpHeaders } from \"@angular/common/http\";\r\nimport { Injectable } from \"@angular/core\";\r\n\r\n// Configurazioni\r\nimport { BaseSessionRetriever, CachePersistor } from \"@esfaenza/preferences\";\r\nimport { LocalizationService } from \"@esfaenza/localizations\";\r\nimport { TokenService } from \"../app.accesstoken\";\r\n\r\n// Direttive, Componenti, Librerie\r\nimport { Observable, of } from \"rxjs\";\r\nimport { catchError, map } from \"rxjs/operators\";\r\n\r\n// Chiamate ai Repository\r\nconst BASE_Cache_Sessions: string = \"/api/Cache/sessions\";\r\n\r\n@Injectable()\r\nexport class ApplicationCachePersistor extends CachePersistor {\r\n\r\n // Passo direttamente dall'HttpClient nativo in quanto non posso passare dall'HttpService dato che \r\n // lui richiede il PreferencesService che richiede questa classe che richiede l'HttpService ecc ecc...\r\n constructor(private lc: LocalizationService, private http: HttpClient, private tks: TokenService, session: BaseSessionRetriever) { super(session); }\r\n\r\n public persist<T>(key: string, item: T): Observable<boolean> {\r\n let sk = this.session.getSessionKey();\r\n if (!sk) return of(false);\r\n\r\n return this.http.post<boolean>(this.getItemUrl(sk, key), JSON.stringify(item), { headers: this.getHeaders() }).pipe(catchError(e => of(false)));\r\n }\r\n\r\n public recover<T>(key?: string): Observable<T> {\r\n let sk = this.session.getSessionKey();\r\n if (!sk) return of(null);\r\n\r\n return this.http.get<string>(this.getItemUrl(sk, key), { headers: this.getHeaders() }).pipe(\r\n catchError(e => of(null)),\r\n map((res) => {\r\n var resProp = null;\r\n try { resProp = <T>JSON.parse(res); }\r\n catch { }\r\n return resProp;\r\n }));\r\n }\r\n\r\n public recoverAll(): Observable<{ [index: string]: any; }> {\r\n let sk = this.session.getSessionKey();\r\n if (!sk) return of(null);\r\n\r\n return this.http.get<{ [index: string]: any; }>(this.getSessionUrl(sk), { headers: this.getHeaders() }).pipe(\r\n catchError(e => of(null)),\r\n map((res) => {\r\n for (var prop in res) {\r\n var resProp = null;\r\n try { resProp = JSON.parse(res[prop]); }\r\n catch { }\r\n res[prop] = resProp;\r\n }\r\n return res\r\n }));\r\n }\r\n\r\n public remove(key?: string): Observable<boolean> {\r\n let sk = this.session.getSessionKey();\r\n if (!sk) return of(false);\r\n\r\n return this.http.delete<boolean>(this.getItemUrl(sk, key), { headers: this.getHeaders() }).pipe(catchError(e => of(false)));\r\n }\r\n\r\n public clear(): Observable<boolean> {\r\n let sk = this.session.getSessionKey();\r\n if (!sk) return of(false);\r\n\r\n return this.http.delete<boolean>(this.getItemsUrl(sk), { headers: this.getHeaders() }).pipe(catchError(e => of(false)));\r\n }\r\n\r\n private getHeaders(contentType: string = 'application/json'): HttpHeaders {\r\n return new HttpHeaders()\r\n .append(\"Content-Type\", contentType)\r\n .append(\"Accept\", \"application/json\")\r\n .append(\"Authorization\", \"Bearer \" + this.tks.getAccessToken())\r\n .append(\"Accept-Language\", this.lc.Locale);\r\n }\r\n\r\n private getSessionUrl(sessionKey: string): string {\r\n return `${BASE_Cache_Sessions}/${sessionKey}`;\r\n }\r\n\r\n private getItemsUrl(sessionKey: string): string {\r\n return `${this.getSessionUrl(sessionKey)}/items`;\r\n }\r\n\r\n private getItemUrl(sessionKey: string, itemKey: string): string {\r\n return `${this.getItemsUrl(sessionKey)}/${itemKey}`;\r\n }\r\n}","// Angular\r\nimport { HttpClient, HttpHeaders } from \"@angular/common/http\";\r\nimport { Injectable } from \"@angular/core\";\r\n\r\n// Configurazioni\r\nimport { BaseSessionRetriever, PreferencesPersistor } from \"@esfaenza/preferences\";\r\nimport { LocalizationService } from \"@esfaenza/localizations\";\r\nimport { TokenService } from \"../app.accesstoken\";\r\n\r\n// Direttive, Componenti, Librerie\r\nimport { Observable, of } from \"rxjs\";\r\nimport { catchError, map } from \"rxjs/operators\";\r\n\r\n// Chiamate ai Repository\r\nconst BASE_Preferences_Sessions: string = \"/api/Preferences/sessions\";\r\n\r\n@Injectable()\r\nexport class ApplicationPreferencesPersistor extends PreferencesPersistor {\r\n\r\n // Passo direttamente dall'HttpClient nativo in quanto non posso passare dall'HttpService dato che \r\n // lui richiede il PreferencesService che richiede questa classe che richiede l'HttpService ecc ecc...\r\n constructor(private lc: LocalizationService, private http: HttpClient, private tks: TokenService, session: BaseSessionRetriever) { super(session); }\r\n\r\n public persist<T>(key: string, item: T): Observable<boolean> {\r\n let sk = this.session.getSessionKey();\r\n if (!sk) return of(false);\r\n\r\n return this.http.post<boolean>(this.getItemUrl(sk, key), JSON.stringify(item), { headers: this.getHeaders() }).pipe(catchError(e => of(false)));\r\n }\r\n\r\n public recover<T>(key?: string): Observable<T> {\r\n let sk = this.session.getSessionKey();\r\n if (!sk) return of(null);\r\n\r\n return this.http.get<string>(this.getItemUrl(sk, key), { headers: this.getHeaders() }).pipe(map((res) => {\r\n var resProp = null;\r\n try { resProp = <T>JSON.parse(res); }\r\n catch { }\r\n return resProp;\r\n }));\r\n }\r\n\r\n public recoverAll(): Observable<{ [index: string]: any; }> {\r\n let sk = this.session.getSessionKey();\r\n if (!sk) return of(null);\r\n\r\n return this.http.get<{ [index: string]: any; }>(this.getSessionUrl(sk), { headers: this.getHeaders() }).pipe(\r\n catchError(e => of(null)),\r\n map((res) => {\r\n for (var prop in res) {\r\n var resProp = null;\r\n try { resProp = JSON.parse(res[prop]); }\r\n catch { }\r\n res[prop] = resProp;\r\n }\r\n return res\r\n }));\r\n }\r\n\r\n public remove(key?: string): Observable<boolean> {\r\n let sk = this.session.getSessionKey();\r\n if (!sk) return of(false);\r\n\r\n return this.http.delete<boolean>(this.getItemUrl(sk, key), { headers: this.getHeaders() }).pipe(catchError(e => of(false)));\r\n }\r\n\r\n public clear(): Observable<boolean> {\r\n let sk = this.session.getSessionKey();\r\n if (!sk) return of(false);\r\n\r\n return this.http.delete<boolean>(this.getItemsUrl(sk), { headers: this.getHeaders() }).pipe(catchError(e => of(false)));\r\n }\r\n\r\n private getHeaders(contentType: string = 'application/json'): HttpHeaders {\r\n return new HttpHeaders()\r\n .append(\"Content-Type\", contentType)\r\n .append(\"Accept\", \"application/json\")\r\n .append(\"Authorization\", \"Bearer \" + this.tks.getAccessToken())\r\n .append(\"Accept-Language\", this.lc.Locale);\r\n }\r\n\r\n private getSessionUrl(sessionKey: string): string {\r\n return `${BASE_Preferences_Sessions}/${sessionKey}`;\r\n }\r\n\r\n private getItemsUrl(sessionKey: string): string {\r\n return `${this.getSessionUrl(sessionKey)}/items`;\r\n }\r\n\r\n private getItemUrl(sessionKey: string, itemKey: string): string {\r\n return `${this.getItemsUrl(sessionKey)}/${itemKey}`;\r\n }\r\n}","// Angular\r\nimport { Injectable } from \"@angular/core\";\r\nimport { Router } from \"@angular/router\";\r\n\r\n// Configurazioni\r\nimport { AccessControlRouteGuard, AccessControlService } from \"@esfaenza/access-control\";\r\nimport { MessageService } from \"@esfaenza/extensions\";\r\n\r\nimport { TokenService } from \"./app.accesstoken\";\r\n\r\n@Injectable()\r\nexport class BaseRouterGuard extends AccessControlRouteGuard {\r\n constructor(ms: MessageService, acc: AccessControlService, router: Router, ts: TokenService) {\r\n super(ms, acc, router);\r\n\r\n if (!acc.Initialized)\r\n acc.initializeIdentity(ts.getJaceIdentity());\r\n }\r\n}","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1","i2.TokenService","i3.AppState","i4","i5","i6","i1.TokenService","i2","i3.TokenService","i3","i4.TokenService"],"mappings":"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"}
|