@esfaenza/core 15.2.8 → 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.
@@ -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 i4$1 from '@angular/router';
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$2 from '@esfaenza/preferences';
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: i4$1.Router }, { token: i5.AccessControlService }, { token: i4.MessageService }], target: i0.ɵɵFactoryTarget.Injectable });
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: i4$1.Router }, { type: i5.AccessControlService }, { type: i4.MessageService }]; } });
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: i4$1.Router }], target: i0.ɵɵFactoryTarget.Injectable });
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: i4$1.Router }]; } });
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$2.BaseSessionRetriever }], target: i0.ɵɵFactoryTarget.Injectable });
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$2.BaseSessionRetriever }]; } });
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$2.BaseSessionRetriever }], target: i0.ɵɵFactoryTarget.Injectable });
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$2.BaseSessionRetriever }]; } });
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: i4$1.Router }, { token: TokenService }], target: i0.ɵɵFactoryTarget.Injectable });
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: i4$1.Router }, { type: TokenService }]; } });
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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"}