@esfaenza/core 15.2.42-beta2 → 15.2.42-beta4
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/components.module.d.ts +5 -1
- package/components/operations/ops-menu/ops-menu.component.d.ts +6 -0
- package/components/operations/ops-menu-category/ops-menu-category.component.d.ts +8 -0
- package/components/operations/ops-menu-operation/ops-menu-operation.component.d.ts +9 -0
- package/components/page-structure/sidebar/sidebar.component.d.ts +5 -9
- package/components/page-structure/user-infos/user-infos.component.d.ts +63 -0
- package/components/page-structure/user-infos/user-infos.component.loc.d.ts +8 -0
- package/components/public-api.d.ts +6 -0
- package/components/search/base/base-search.d.ts +34 -0
- package/components/span/labeled-span/labeled-span.component.d.ts +11 -0
- package/domain/models/user/UpdateAccountRecoverySettingsDto.d.ts +3 -4
- package/domain/models/user/UpdatePasswordDto.d.ts +9 -0
- package/domain/models/user/UpdateProfilePictureDto.d.ts +4 -0
- package/domain/public-api.d.ts +2 -2
- package/esm2020/components/components.module.mjs +20 -4
- package/esm2020/components/operations/ops-menu/ops-menu.component.mjs +12 -0
- package/esm2020/components/operations/ops-menu-category/ops-menu-category.component.mjs +21 -0
- package/esm2020/components/operations/ops-menu-operation/ops-menu-operation.component.mjs +19 -0
- package/esm2020/components/page-structure/error/404/pagenotfound.component.mjs +1 -1
- package/esm2020/components/page-structure/page/pages.component.mjs +3 -3
- package/esm2020/components/page-structure/sidebar/sidebar.component.mjs +10 -18
- package/esm2020/components/page-structure/user-infos/user-infos.component.loc.mjs +43 -0
- package/esm2020/components/page-structure/user-infos/user-infos.component.mjs +160 -0
- package/esm2020/components/public-api.mjs +7 -1
- package/esm2020/components/search/base/base-search.mjs +112 -0
- package/esm2020/components/span/labeled-span/labeled-span.component.mjs +25 -0
- package/esm2020/domain/models/user/UpdateAccountRecoverySettingsDto.mjs +2 -3
- package/esm2020/domain/models/user/UpdatePasswordDto.mjs +11 -0
- package/esm2020/domain/models/user/UpdateProfilePictureDto.mjs +6 -0
- package/esm2020/domain/public-api.mjs +3 -3
- package/esm2020/lib/app.component.mjs +2 -2
- package/esm2020/lib/core.module.mjs +7 -4
- package/esm2020/pipes/pipes.module.mjs +1 -1
- package/esm2020/services/classes/preferences/app.preference.persistor.mjs +1 -1
- package/esm2020/services/classes/preferences/user/app.userpreferences.base.mjs +25 -33
- package/fesm2015/esfaenza-core-components.mjs +429 -65
- package/fesm2015/esfaenza-core-components.mjs.map +1 -1
- package/fesm2015/esfaenza-core-domain.mjs +4 -5
- package/fesm2015/esfaenza-core-domain.mjs.map +1 -1
- package/fesm2015/esfaenza-core-pipes.mjs.map +1 -1
- package/fesm2015/esfaenza-core-services.mjs +24 -32
- package/fesm2015/esfaenza-core-services.mjs.map +1 -1
- package/fesm2015/esfaenza-core.mjs +8 -5
- package/fesm2015/esfaenza-core.mjs.map +1 -1
- package/fesm2020/esfaenza-core-components.mjs +417 -65
- package/fesm2020/esfaenza-core-components.mjs.map +1 -1
- package/fesm2020/esfaenza-core-domain.mjs +4 -5
- package/fesm2020/esfaenza-core-domain.mjs.map +1 -1
- package/fesm2020/esfaenza-core-pipes.mjs.map +1 -1
- package/fesm2020/esfaenza-core-services.mjs +27 -35
- package/fesm2020/esfaenza-core-services.mjs.map +1 -1
- package/fesm2020/esfaenza-core.mjs +8 -5
- package/fesm2020/esfaenza-core.mjs.map +1 -1
- package/package.json +1 -1
- package/services/classes/preferences/user/app.userpreferences.base.d.ts +6 -6
- package/domain/models/user/ChangePasswordDto.d.ts +0 -9
- package/domain/models/user/ChangeProfilePictureDto.d.ts +0 -4
- package/esm2020/domain/models/user/ChangePasswordDto.mjs +0 -11
- package/esm2020/domain/models/user/ChangeProfilePictureDto.mjs +0 -6
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"esfaenza-core-components.mjs","sources":["../../../projects/core/components/src/page-structure/back-top/back-top.component.ts","../../../projects/core/components/src/page-structure/back-top/back-top.component.html","../../../projects/core/components/src/page-structure/breadcrumb/breadcrumb.component.ts","../../../projects/core/components/src/page-structure/breadcrumb/breadcrumb.component.html","../../../projects/core/components/src/page-structure/error/404/pagenotfound.component.ts","../../../projects/core/components/src/page-structure/error/404/pagenotfound.component.html","../../../projects/core/components/src/page-structure/error/500/servererror.component.ts","../../../projects/core/components/src/page-structure/error/500/servererror.component.html","../../../projects/core/components/src/page-structure/error/Angular/angularerror.component.ts","../../../projects/core/components/src/page-structure/error/Angular/angularerror.component.html","../../../projects/core/components/src/page-structure/sidebar/sidebar.component.ts","../../../projects/core/components/src/page-structure/sidebar/sidebar.component.html","../../../projects/core/components/src/page-structure/navbar/navbar.component.loc.ts","../../../projects/core/components/src/page-structure/base/reactive.component.ts","../../../projects/core/components/src/page-structure/navbar/modules-board/jace-modules-board.component.ts","../../../projects/core/components/src/page-structure/navbar/modules-board/jace-modules-board.component.html","../../../projects/core/components/src/page-structure/navbar/navbar.component.ts","../../../projects/core/components/src/page-structure/navbar/navbar.component.html","../../../projects/core/components/src/page-structure/page/pages.component.ts","../../../projects/core/components/src/page-structure/page/pages.component.html","../../../projects/core/components/src/page-structure/external-page/external_pages.component.ts","../../../projects/core/components/src/page-structure/external-page/external_pages.component.html","../../../projects/core/components/src/page-structure/jace-login/jace-login.component.ts","../../../projects/core/components/src/page-structure/jace-login/jace-login.component.html","../../../projects/core/components/src/page-structure/redirecter/redirecter.component.ts","../../../projects/core/components/src/page-structure/redirecter/redirecter.component.html","../../../projects/core/components/src/page-structure/base/base.component.ts","../../../projects/core/components/src/page-structure/jace-resource/jace-resource.component.ts","../../../projects/core/components/src/page-structure/jace-resource/jace-resource.component.html","../../../projects/core/components/src/es-modal/es-modal.component.ts","../../../projects/core/components/src/es-modal/es-modal.component.html","../../../projects/core/components/src/es-modal/es-modal-head/es-modal-head.component.ts","../../../projects/core/components/src/es-modal/es-modal-head/es-modal-head.component.html","../../../projects/core/components/src/search/filters-topbar/filters-topbar.component.ts","../../../projects/core/components/src/search/filters-topbar/filters-topbar.component.html","../../../projects/core/components/src/search/filters-sidebar/filters-sidebar.component.ts","../../../projects/core/components/src/search/filters-sidebar/filters-sidebar.component.html","../../../projects/core/components/src/search/filters-sidebar-section/filters-sidebar-section.component.ts","../../../projects/core/components/src/search/filters-sidebar-section/filters-sidebar-section.component.html","../../../projects/core/components/src/search/es-filters/es-filters.service.ts","../../../projects/core/components/src/search/filters-sidebar-item/filters-sidebar-item.component.ts","../../../projects/core/components/src/search/filters-sidebar-item/filters-sidebar-item.component.html","../../../projects/core/components/src/search/es-filters/es-filters.component.ts","../../../projects/core/components/src/search/es-filters/es-filters.component.html","../../../projects/core/components/src/components.module.ts","../../../projects/core/components/src/esfaenza-core-components.ts"],"sourcesContent":["// Angular\r\nimport { Component, ElementRef, HostListener, Input, ViewChild, ViewEncapsulation } from \"@angular/core\";\r\n\r\ndeclare var $;\r\n\r\n@Component({\r\n selector: \"back-top\",\r\n encapsulation: ViewEncapsulation.None,\r\n styleUrls: [\"./back-top.component.scss\"],\r\n templateUrl: \"./back-top.component.html\",\r\n standalone: true\r\n})\r\nexport class BackTop {\r\n @Input() position: number = 400;\r\n @Input() showSpeed: number = 500;\r\n @Input() moveSpeed: number = 1000;\r\n\r\n @ViewChild(\"backTop\", { static: false }) private _selector: ElementRef;\r\n\r\n ngAfterViewInit() {\r\n this._onWindowScroll();\r\n }\r\n\r\n @HostListener(\"click\")\r\n _onClick(): boolean {\r\n $(\"html, body\").animate({ scrollTop: 0 }, { duration: this.moveSpeed });\r\n return false;\r\n }\r\n\r\n @HostListener(\"window:scroll.out-zone\")\r\n _onWindowScroll(): void {\r\n let el = this._selector.nativeElement;\r\n window.scrollY > this.position ? $(el).fadeIn(this.showSpeed) : $(el).fadeOut(this.showSpeed);\r\n }\r\n}","<i #backTop class=\"fa fa-angle-up back-to-top\" title=\"Back to Top\"></i>","// Angular\r\nimport { NgFor, NgIf } from \"@angular/common\";\r\nimport { Component, ViewEncapsulation } from \"@angular/core\";\r\nimport { Title } from \"@angular/platform-browser\";\r\nimport { ActivatedRoute, Data, NavigationEnd, Router, RouterLink, UrlTree } from \"@angular/router\";\r\nimport { EnvOptions } from \"@esfaenza/core/domain\";\r\nimport { AppState } from \"@esfaenza/core/services\";\r\n\r\n// Configurazioni\r\nimport { combineLatest, of } from \"rxjs\";\r\nimport { filter, map, mergeMap } from \"rxjs/operators\";\r\n\r\ndeclare var myconfig: EnvOptions;\r\n\r\n@Component({\r\n selector: \"breadcrumb\",\r\n encapsulation: ViewEncapsulation.None,\r\n styleUrls: [\"./breadcrumb.component.scss\"],\r\n templateUrl: \"./breadcrumb.component.html\",\r\n standalone: true,\r\n imports: [NgIf, NgFor, RouterLink]\r\n})\r\nexport class Breadcrumb {\r\n public MainLink: BreadcrumbItem = { title: \"Dashboard\", routerLink: [\"/pages/dashboard\"] };\r\n public SubLinks: BreadcrumbItem[] = [];\r\n\r\n constructor(public _state: AppState, private router: Router, private _activatedRoute: ActivatedRoute, private _titleService: Title) {\r\n this.router.events.pipe(\r\n filter(event => event instanceof NavigationEnd),\r\n map((event: NavigationEnd) => { return { event: event, route: this._activatedRoute } }),\r\n map((routeWithEvent) => {\r\n while (routeWithEvent.route.firstChild)\r\n routeWithEvent.route = routeWithEvent.route.firstChild;\r\n return routeWithEvent;\r\n }),\r\n mergeMap(routeWithEvent =>\r\n combineLatest(\r\n of(routeWithEvent.event.url).pipe(map(url => this.router.parseUrl(url))),\r\n routeWithEvent.route.data)\r\n )\r\n ).subscribe((treePlusData: [UrlTree, Data]) => {\r\n let data = treePlusData[1];\r\n let tree = treePlusData[0];\r\n\r\n // true = SUB - dettaglio\r\n // false = MAIN - ricerca/dashboard\r\n let internalNavigation = data[\"InternalNavigation\"];\r\n let title = data[\"title\"];\r\n if (internalNavigation) { this.onSubNavigation(tree, title); }\r\n else { this.onMainNavigation(tree, title); }\r\n this._titleService.setTitle(myconfig.AppData.ModuleDescription + \" > \" + title);\r\n });\r\n }\r\n\r\n ngOnInit() { }\r\n\r\n onSubNavigation(tree: UrlTree, title: string) {\r\n let index = this.SubLinks.indexOf(this.SubLinks.find(f => f.title == title));\r\n let difference = this.SubLinks.length - (index + 1)\r\n if (index != -1 && (index + 1) != this.SubLinks.length) {\r\n for (let i = 0; i < difference; i++)\r\n this.SubLinks.pop();\r\n }\r\n if (index == -1 && this.MainLink.title != title)\r\n this.SubLinks.push({ title: title, routerLink: this.getRouterLink(tree) });\r\n }\r\n\r\n onMainNavigation(tree: UrlTree, title: string) {\r\n this.SubLinks = [];\r\n this.MainLink = { title: title, routerLink: this.getRouterLink(tree) };\r\n }\r\n\r\n private getRouterLink(tree: UrlTree) {\r\n let segs = tree?.root?.children?.[\"primary\"]?.segments ?? [];\r\n let route = \"/\" + segs.map(t => t.path).join('/');\r\n let params = segs[segs.length - 1]?.parameters;\r\n\r\n return [route, params];\r\n }\r\n}\r\n\r\nexport class BreadcrumbItem {\r\n title: string;\r\n routerLink: any[];\r\n}","<ol class=\"breadcrumb app-no-selection\">\r\n <li class=\"breadcrumb-item text-uppercase breadcrumb-link\" [routerLink]=\"['/pages/dashboard']\">Dashboard</li>\r\n <li *ngIf=\"MainLink?.title != 'Dashboard'\" [routerLink]=\"MainLink.routerLink\" class=\"breadcrumb-item text-uppercase breadcrumb-link\">{{MainLink.title}}</li>\r\n <li *ngFor=\"let link of SubLinks\" class=\"breadcrumb-item text-uppercase breadcrumb-link\" [routerLink]=\"link.routerLink\">{{link.title}}</li>\r\n</ol>","// Angular\r\nimport { Component, ViewEncapsulation } from \"@angular/core\";\r\nimport { Location } from \"@angular/common\";\r\nimport { Router } from \"@angular/router\";\r\n\r\nimport { AppState } from \"@esfaenza/core/services\";\r\n\r\n@Component({\r\n selector: \"pagenotfound\",\r\n encapsulation: ViewEncapsulation.None,\r\n templateUrl: \"./pagenotfound.component.html\",\r\n standalone: true\r\n})\r\nexport class PageNotFoundComponent {\r\n router: Router;\r\n\r\n constructor(router: Router, private _location: Location, private as: AppState) {\r\n this.router = router;\r\n }\r\n\r\n goPreviousPage() {\r\n this._location.back();\r\n }\r\n\r\n goDashboard() {\r\n let url = `/pages/dashboard`;\r\n if (this.as.Embedded)\r\n this.as.MainWindow.postMessage({ type: \"navigate\", url }, \"*\");\r\n else\r\n this.router.navigate([url]);\r\n\r\n }\r\n}","<div class=\"container\">\r\n <div class=\"row\">\r\n <div class=\"col-xl-6 col-md-6 col-10 offset-xl-3 offset-md-3 offset-xs-1 p-t-10\">\r\n <div class=\"card\">\r\n <div class=\"card-body text-center\">\r\n <h1 class=\"display-1\">404</h1>\r\n <h6 class=\"card-title\">La risorsa richiesta non è stata trovata ma in futuro potrebbe essere disponibile.</h6>\r\n <div>\r\n <button type=\"button\" class=\"btn btn-secondary pull-right\" (click)=\"goDashboard()\">Vai alla Dashboard</button>\r\n <button type=\"button\" class=\"btn btn-secondary pull-left\" (click)=\"goPreviousPage()\">Torna alla pagina precedente</button>\r\n <div class=\"clearfix\"></div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>","// Angular\r\nimport { Component, ViewEncapsulation } from \"@angular/core\";\r\nimport { ActivatedRoute, Router } from \"@angular/router\";\r\nimport { NgIf } from \"@angular/common\";\r\n\r\n// Configurazioni\r\nimport { AppState } from \"@esfaenza/core/services\";\r\n\r\n\r\n@Component({\r\n selector: \"servererror\",\r\n encapsulation: ViewEncapsulation.None,\r\n templateUrl: \"./servererror.component.html\",\r\n standalone: true,\r\n imports: [NgIf]\r\n})\r\nexport class ServerErrorComponent {\r\n statusCode: string;\r\n statusText: string;\r\n previousUrl: string;\r\n\r\n constructor(private router: Router, private route: ActivatedRoute, private as: AppState) {\r\n this.statusCode = this.route.snapshot.params[\"statusCode\"];\r\n this.statusText = this.b64DecodeUnicode(this.route.snapshot.params[\"statusText\"]);\r\n this.previousUrl = this.route.snapshot.params[\"fromUrl\"];\r\n\r\n //Dopo 1 secondo considero la sfilza di errori finita\r\n setTimeout(() => { this.as.handlingError = false; }, 1000);\r\n }\r\n\r\n b64DecodeUnicode(str) {\r\n // Going backwards: from bytestream, to percent-encoding, to original string.\r\n return decodeURIComponent(atob(str).split(\"\").map(c => \"%\" + (\"00\" + c.charCodeAt(0).toString(16)).slice(-2)).join(\"\"));\r\n }\r\n\r\n goPreviousPage() {\r\n this.router.navigateByUrl(this.previousUrl);\r\n }\r\n\r\n goDashboard() {\r\n let url = `/pages/dashboard`;\r\n if (this.as.Embedded)\r\n this.as.MainWindow.postMessage({ type: \"navigate\", url }, \"*\");\r\n else\r\n this.router.navigate([url]);\r\n }\r\n}","<div class=\"container\">\r\n <div class=\"row\">\r\n <div class=\"col-xl-6 col-md-6 col-10 offset-xl-3 offset-md-3 offset-xs-1 p-t-10\">\r\n <div class=\"card\">\r\n <div class=\"card-body text-center\">\r\n <h1 class=\"display-1\" *ngIf=\"!statusCode\"> </h1>\r\n <h1 class=\"display-1\" *ngIf=\"statusCode\">{{statusCode}}</h1>\r\n <h6 class=\"card-title\" *ngIf=\"!statusText\"> </h6>\r\n <h6 class=\"card-title\" style=\"word-wrap:break-word; max-height: 500px; overflow: auto\" *ngIf=\"statusText\">{{statusText}}</h6>\r\n <div>\r\n <button type=\"button\" class=\"btn btn-secondary pull-right\" (click)=\"goDashboard()\">Vai alla Dashboard</button>\r\n <button type=\"button\" class=\"btn btn-secondary pull-left\" (click)=\"goPreviousPage()\">Torna alla pagina precedente</button>\r\n <div class=\"clearfix\"></div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>","// Angular\r\nimport { Component, ViewEncapsulation } from \"@angular/core\";\r\nimport { ActivatedRoute, Router } from \"@angular/router\";\r\nimport { NgIf } from \"@angular/common\";\r\n\r\n// Configurazioni\r\nimport { HTTPService } from \"@esfaenza/httpservice\";\r\nimport { AppState, TokenService } from \"@esfaenza/core/services\";\r\n\r\n@Component({\r\n selector: \"angularerror\",\r\n encapsulation: ViewEncapsulation.None,\r\n templateUrl: \"./angularerror.component.html\",\r\n standalone: true,\r\n imports: [NgIf]\r\n})\r\nexport class AngularErrorComponent {\r\n\r\n errorMessage: string;\r\n errorFrom: string;\r\n errorLastCalls: string;\r\n previousUrl: string;\r\n identityInfos: string;\r\n\r\n constructor(private router: Router, private route: ActivatedRoute, private http: HTTPService, private bts: TokenService, private as: AppState) {\r\n\r\n let identity = this.bts.getJaceIdentity();\r\n this.previousUrl = this.route.snapshot.params[\"fromUrl\"];\r\n let calls = (this.http.LastThreeCompletedCalls[0] || \"<empty>\") + \", \" + (this.http.LastThreeCompletedCalls[1] || \"<empty>\") + \", \" + (this.http.LastThreeCompletedCalls[2] || \"<empty>\");\r\n this.errorFrom = \"From page: \" + (this.previousUrl || \"<missing>\");\r\n this.errorLastCalls = \"Last three calls: \" + calls;\r\n this.identityInfos = \"Logged user: \" + (identity?.Idtenant || '??') + \"-\" + (identity?.DsUser || '???????');\r\n this.errorMessage = this.b64DecodeUnicode(this.route.snapshot.params[\"errorMessage\"]);\r\n\r\n console.error(this.errorMessage);\r\n }\r\n\r\n ngOnInit() {\r\n var item = localStorage.getItem(\"Reload\");\r\n if (item) {\r\n localStorage.removeItem(\"Reload\");\r\n this.router.navigateByUrl(item);\r\n }\r\n }\r\n\r\n b64DecodeUnicode(str) {\r\n // Bytestream -> Encoding % -> Stringa originale\r\n return decodeURIComponent(atob(str).split(\"\").map(c => \"%\" + (\"00\" + c.charCodeAt(0).toString(16)).slice(-2)).join(\"\"));\r\n }\r\n\r\n goPreviousPage() {\r\n // Reload per forzare il ricaricamento del javascript (in modo che lo stato dell'applicazione sia a posto)\r\n // all'onInit la pagina prenderà la root a cui navigare dal localStorage\r\n localStorage.setItem(\"Reload\", this.previousUrl);\r\n location.reload();\r\n }\r\n\r\n goDashboard() {\r\n let url = `/pages/dashboard`;\r\n if (this.as.Embedded)\r\n this.as.MainWindow.postMessage({ type: \"navigate\", url }, \"*\");\r\n else\r\n this.router.navigate([url]);\r\n }\r\n}","<div class=\"container\">\r\n <div class=\"row\">\r\n <div class=\"col-xl-8 col-md-10 col-10 offset-xl-2 offset-xs-1 p-t-10\">\r\n <div class=\"card\">\r\n <div class=\"card-body text-center\">\r\n <h1 class=\"display-4\">Qualcosa è andato storto.</h1>\r\n <h6>\r\n <small>\r\n Si è verificato un errore interno all'applicazione. Questo non dovrebbe accadere. Prova a ricaricare la pagina precedente e rieffettuare le stesse operazioni, se il problema persiste contatta il service desk allegando una breve descrizione delle operazioni che stavi eseguendo e questo messaggio d'errore:\r\n </small>\r\n </h6>\r\n <h6 class=\"card-title text-danger app-margin-top-10 text-left\" style=\"word-wrap:break-word\" *ngIf=\"identityInfos\"><em>{{identityInfos}}</em></h6>\r\n <h6 class=\"card-title text-danger app-margin-top-10 text-left\" style=\"word-wrap:break-word\" *ngIf=\"errorFrom\"><em>{{errorFrom}}</em></h6>\r\n <h6 class=\"card-title text-danger app-margin-top-10 text-left\" style=\"word-wrap:break-word\" *ngIf=\"errorLastCalls\"><em>{{errorLastCalls}}</em></h6>\r\n <h6 class=\"card-title text-danger app-margin-top-10 text-left\" style=\"word-wrap:break-word\" *ngIf=\"errorMessage\"><em>{{errorMessage}}</em></h6>\r\n <div>\r\n <button type=\"button\" class=\"btn btn-secondary pull-right\" (click)=\"goDashboard()\">Vai alla Dashboard</button>\r\n <button type=\"button\" class=\"btn btn-secondary pull-right app-margin-right-10\" (click)=\"goPreviousPage()\">Torna alla pagina precedente</button>\r\n <div class=\"clearfix\"></div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>","// Angular\r\nimport { ChangeDetectionStrategy, ChangeDetectorRef, Component, ElementRef, HostListener, Inject, NgZone, Optional, Type, ViewChild, ViewEncapsulation } from \"@angular/core\";\r\nimport { NavigationEnd, Router, RouterLinkActive, RouterLink } from \"@angular/router\";\r\nimport { NgClass, NgFor, NgTemplateOutlet, NgIf } from \"@angular/common\";\r\n\r\n// Configurazioni\r\nimport { LocalizationService, LocalizationModule } from \"@esfaenza/localizations\";\r\n\r\n// EsFaenza\r\nimport { ApplicationMenu, EnvOptions, MENU, MENU_LOCALIZATION, SearchResult, SearchResultContainer } from \"@esfaenza/core/domain\";\r\nimport { AppState, GlobalSearchService, MenuFilteringService, TokenService } from \"@esfaenza/core/services\";\r\nimport { MessageService, UtilityService } from \"@esfaenza/extensions\";\r\nimport { AccessControlService } from \"@esfaenza/access-control\";\r\nimport { SlimScroll } from \"@esfaenza/core/directives\";\r\n\r\n// Librerie\r\nimport { firstValueFrom } from \"rxjs\";\r\nimport { HTTPService } from \"@esfaenza/httpservice\";\r\nimport { HttpParams } from \"@angular/common/http\";\r\nimport { SafeResourceUrl } from \"@angular/platform-browser\";\r\nimport { EsTableColumnsDefinition, EsTableModule } from \"@esfaenza/es-table\";\r\nimport { FormsModule } from \"@angular/forms\";\r\n\r\n// Chiamate ai Repository\r\nconst GET_Users_GetProfilePicture: string = \"/api/Users/GetProfilePicture\";\r\n\r\ndeclare var myconfig: EnvOptions;\r\ndeclare var jQuery;\r\n\r\n@Component({\r\n selector: \"sidebar\",\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n styleUrls: [\"./sidebar.component.scss\"],\r\n templateUrl: \"./sidebar.component.html\",\r\n standalone: true,\r\n imports: [NgClass, SlimScroll, NgFor, NgTemplateOutlet, NgIf, RouterLinkActive, RouterLink, LocalizationModule, EsTableModule, FormsModule]\r\n})\r\nexport class Sidebar {\r\n public menuItems: Array<any>;\r\n public menuHeight: number;\r\n public isMenuCollapsed: boolean = false;\r\n public isMenuShouldCollapsed: boolean = false;\r\n\r\n public showHoverElem: boolean;\r\n public hoverElemHeight: number;\r\n public hoverElemTop: number;\r\n\r\n public applicationVersion = myconfig.AppData.ComponentVersion;\r\n public applicationName = myconfig.AppData.ModuleDescription;\r\n public user = \"\";\r\n public tenant = \"\";\r\n\r\n public SearchModel = \"\";\r\n\r\n @ViewChild(\"sidebar\", { static: true }) sidebar: ElementRef;\r\n\r\n constructor(\r\n public lc: LocalizationService, @Optional() @Inject(MENU_LOCALIZATION) lcMenu: Type<LocalizationService>, private cdr: ChangeDetectorRef, private _elementRef: ElementRef,\r\n private _router: Router, public _state: AppState, private zone: NgZone, private utiExts: UtilityService, private aac: AccessControlService, @Inject(MENU) private menuItemsRaw: ApplicationMenu[],\r\n private menuFilteringService: MenuFilteringService, public sr: TokenService, private https: HTTPService, private msgs: MessageService, public globalSearchService: GlobalSearchService) {\r\n\r\n this.lc = this.lc.generateFromType(lcMenu);\r\n\r\n this._state.subscribe(\"menu.isCollapsed\", (isCollapsed) => {\r\n this.isMenuCollapsed = isCollapsed;\r\n this.cdr.markForCheck();\r\n });\r\n\r\n this._state.subscribe(\"application.DeployAvailable\", (available: boolean) => {\r\n if (available)\r\n this.ngOnInit();\r\n });\r\n\r\n this._router.events.subscribe(event => {\r\n if (event instanceof NavigationEnd) {\r\n let width = (window.innerWidth > 0) ? window.innerWidth : screen.width;\r\n if (width <= 768) \r\n this._state.notifyDataChanged(\"menu.isCollapsed\", true);\r\n window.scrollTo(0, 0);\r\n }\r\n });\r\n\r\n this.getUserProfileData();\r\n }\r\n\r\n public async ngOnInit() {\r\n let tmpMenuItems = this.getMenuItems();\r\n this.menuItems = await firstValueFrom(this.menuFilteringService.filter(tmpMenuItems));\r\n\r\n if (this._shouldMenuCollapse())\r\n this.menuCollapse();\r\n\r\n this.updateSidebarHeight();\r\n this._state.setSidebarWidth(this.sidebar.nativeElement.offsetWidth);\r\n this.cdr.markForCheck();\r\n }\r\n\r\n private getMenuItems(): ApplicationMenu[] {\r\n var items: ApplicationMenu[] = [];\r\n\r\n for (let i = 0; i < this.menuItemsRaw.length; i++) {\r\n let t = this.menuItemsRaw[i];\r\n (<any>t).level = 1;\r\n if (!t.ac || this.aac.has(t.ac)) {\r\n if (!t.subMenu || t.subMenu.length == 0) {\r\n t.icon = t.icon ?? \"far fa-circle-small\";\r\n items.push(t);\r\n }\r\n else {\r\n var toPush = this.checkSubMenuOverClaims(t, 1);\r\n toPush.icon = toPush.icon ?? \"far fa-circle-small\";\r\n items.push(toPush);\r\n }\r\n }\r\n }\r\n\r\n return items;\r\n }\r\n\r\n private checkSubMenuOverClaims(menuItem: ApplicationMenu, level: number): ApplicationMenu {\r\n var item: ApplicationMenu = this.utiExts.deepClone(menuItem);\r\n item.subMenu = [];\r\n\r\n for (let i = 0; i < menuItem.subMenu.length; i++) {\r\n let t = menuItem.subMenu[i];\r\n (<any>t).level = level+1;\r\n if (!t.ac || this.aac.has(t.ac)) {\r\n if (!t.subMenu || t.subMenu.length == 0) {\r\n t.icon = t.icon ?? \"far fa-circle-small\";\r\n item.subMenu.push(t);\r\n }\r\n else {\r\n var toPush = this.checkSubMenuOverClaims(t, level+1);\r\n toPush.icon = toPush.icon ?? \"far fa-circle-small\";\r\n item.subMenu.push(toPush);\r\n }\r\n }\r\n // Calcolo qui per non doverlo calcolare lato HTML\r\n (<any>t).padding_left = level > 2 ? (65 + ((level - 3) * 15) + 'px !important') : null;\r\n }\r\n\r\n return item;\r\n }\r\n \r\n //#region JQuery\r\n @HostListener(\"window:resize.out-zone\")\r\n public onWindowResize(): void {\r\n var isMenuShouldCollapsed = this._shouldMenuCollapse();\r\n\r\n if (this.isMenuShouldCollapsed !== isMenuShouldCollapsed) {\r\n this.menuCollapseStateChange(isMenuShouldCollapsed);\r\n }\r\n this.isMenuShouldCollapsed = isMenuShouldCollapsed;\r\n this.updateSidebarHeight();\r\n }\r\n\r\n private _shouldMenuCollapse(): boolean {\r\n return window.innerWidth <= 768;\r\n }\r\n\r\n public menuCollapse(): void {\r\n this.menuCollapseStateChange(true);\r\n this._state.setSidebarWidth(this.sidebar.nativeElement.offsetWidth);\r\n }\r\n\r\n public menuCollapseStateChange(isCollapsed: boolean): void {\r\n this.isMenuCollapsed = isCollapsed;\r\n this._state.notifyDataChanged(\"menu.isCollapsed\", this.isMenuCollapsed);\r\n }\r\n\r\n public menuExpand(): void {\r\n this.menuCollapseStateChange(false);\r\n this._state.setSidebarWidth(this.sidebar.nativeElement.offsetWidth);\r\n }\r\n\r\n public hoverItem(jQueryevent): void {\r\n if(!this.isMenuCollapsed) {\r\n this.showHoverElem = true;\r\n this.hoverElemHeight = jQueryevent.currentTarget.clientHeight;\r\n this.hoverElemTop = jQueryevent.currentTarget.getBoundingClientRect().top;\r\n \r\n jQuery(\".sidebar-hover-elem\").css(\"top\", this.hoverElemTop + \"px\");\r\n jQuery(\".sidebar-hover-elem\").css(\"height\", this.hoverElemHeight + \"px\");\r\n jQuery(\".sidebar-hover-elem\").addClass(\"show-hover-elem\");\r\n }\r\n }\r\n\r\n public sendAwayHoverElement() {\r\n this.hoverElemTop = -200;\r\n\r\n jQuery(\".sidebar-hover-elem\").css(\"top\", this.hoverElemTop + \"px\");\r\n }\r\n\r\n public updateSidebarHeight(): void {\r\n let marginTop = 60 + 40;\r\n let footerHeight = 150;\r\n\r\n this.menuHeight = this._elementRef.nativeElement.children[0].clientHeight - marginTop - footerHeight;\r\n }\r\n\r\n //Nonostante questa funzione sia collegata con (click.out-zone) per qualche motivo angular le esegue comunque nella sua zone\r\n //generando un po' di irresponsività iniziale... succede solo col click... boh\r\n public collapseMenu(jQueryevent, item): boolean {\r\n if (this.isMenuCollapsed)\r\n this.menuExpand();\r\n\r\n if (!item.level)\r\n console.warn(\"Livello non presente in un oggetto del menu!\");\r\n\r\n //N.B: Tutte le funzioni di JQuery le esguo fuori da Angular dato che c'� una buona probabilit� che siano eventi asincroni\r\n this.zone.runOutsideAngular(() => { this.outsideAngularClickHandler(jQueryevent, item); });\r\n\r\n return false;\r\n }\r\n\r\n private outsideAngularClickHandler(jQueryevent, item) {\r\n let levelClass = item.level ? \"level-\" + (item.level) : \"\";\r\n let levelClassPlusOne = item.level ? \"level-\" + (item.level + 1) : \"\";\r\n let slidePeriod = 400;\r\n\r\n var link = jQuery(jQueryevent.currentTarget);\r\n\r\n //Se l'elemento non è espanso\r\n if (!link.closest(\".sidebar-item-expanded\" + \"_\" + levelClass).length) {\r\n //Tiro su tutti gli elementi dello stesso livello espansi e li chiudo\r\n\r\n //Se ho compresso un menu vado a vedere se c'è anche un altro menu di livello pi� basso da richiudere\r\n jQuery(\"ul.nav-sidebar li\" + \".\" + (levelClassPlusOne)).each(function () {\r\n let closestLi = jQuery(this).closest(\"li\");\r\n if (closestLi.children(\"ul\").length && closestLi.hasClass(\"sidebar-item-expanded\")) {\r\n closestLi.children(\"ul\").slideUp(slidePeriod);\r\n //Le uso sempre entrambe insieme. La prima è la classe per la logica, la seconda per le animazioni\r\n closestLi.removeClass(\"sidebar-item-expanded\" + \"_\" + (levelClassPlusOne));\r\n closestLi.removeClass(\"sidebar-item-expanded\");\r\n }\r\n });\r\n\r\n //Dopodich� richiudo tutti quelli del mio livello attuale\r\n jQuery(\"ul.nav-sidebar li\" + \".\" + levelClass).each(function () {\r\n let closestLi = jQuery(this).closest(\"li\");\r\n if (closestLi.children(\"ul\").length && closestLi.hasClass(\"sidebar-item-expanded\")) {\r\n closestLi.children(\"ul\").slideUp(slidePeriod);\r\n //Le uso sempre entrambe insieme. La prima è la classe per la logica, la seconda per le animazioni\r\n closestLi.removeClass(\"sidebar-item-expanded\" + \"_\" + levelClass);\r\n closestLi.removeClass(\"sidebar-item-expanded\");\r\n }\r\n });\r\n\r\n //Dopodich� espando quello attuale\r\n link.next().slideDown(slidePeriod);\r\n\r\n if (item.subMenu) {\r\n //Le uso sempre entrambe insieme. La prima è la classe per la logica, la seconda per le animazioni\r\n link.closest(\"li\").addClass(\"sidebar-item-expanded\" + \"_\" + levelClass);\r\n link.closest(\"li\").addClass(\"sidebar-item-expanded\");\r\n }\r\n } else {\r\n //Altrimenti, se l'elemento è già espanso lo chiudo\r\n if (item.subMenu) {\r\n //Le uso sempre entrambe insieme. La prima è la classe per la logica, la seconda per le animazioni\r\n link.closest(\"li\").removeClass(\"sidebar-item-expanded\" + \"_\" + levelClass);\r\n link.closest(\"li\").removeClass(\"sidebar-item-expanded\");\r\n }\r\n\r\n link.next().slideUp(slidePeriod);\r\n }\r\n }\r\n //#endregion\r\n\r\n public onChangeTenant() {\r\n window.location.href = `${myconfig.AuthUrl}/login/tenant?client=${myconfig.Client}`;\r\n }\r\n\r\n public onLogout() {\r\n window.location.href = `${myconfig.AuthUrl}/logout?client=${myconfig.Client}`;\r\n }\r\n\r\n // TODO: Salvare dentro una service preferenze account\r\n public safeprofilepic: SafeResourceUrl = null;\r\n\r\n private getUserProfileData() {\r\n var identity = this.sr.getJaceIdentity();\r\n\r\n if (identity) {\r\n this.user = identity.FullName;\r\n this.tenant = identity.TenantName;\r\n\r\n // TODO: Mettere logica dentro una service preferenze account\r\n this.https.get<ProfilePicture>(GET_Users_GetProfilePicture, new HttpParams().set('id', identity.IdAccount.toString())).subscribe(t => {\r\n //this._state.setSanitizerPicProfile(t.image);\r\n });\r\n }\r\n }\r\n\r\n // ***************************************** Gestione Ricerca Globale *****************************************\r\n\r\n public SelectedResult: SearchResult = null;\r\n public ShowSingleTable: boolean = false;\r\n\r\n searchTerm: string;\r\n searchingTerm: boolean = false;\r\n searchResult: SearchResultContainer;\r\n\r\n onSearchRequest() {\r\n console.log(\"sent!\")\r\n this.searchingTerm = true;\r\n this.searchResult = null;\r\n\r\n if (!this.globalSearchService.Enabled)\r\n return;\r\n\r\n this.globalSearchService.search(this.searchTerm).subscribe(t => {\r\n this.searchingTerm = false;\r\n this.searchResult = t;\r\n\r\n this.searchResult.results.forEach(t => {\r\n t.est_cols = t.columns.map(c => {\r\n let colLink = this.globalSearchService.generateColumnLink(c);\r\n return new EsTableColumnsDefinition(c.description, c.id, colLink?.routePath, colLink?.routeProperties);\r\n });\r\n });\r\n });\r\n }\r\n\r\n onSearchModelChanged() {\r\n console.log(\"changed!\")\r\n if (!this.searchingTerm)\r\n this.closeSearch();\r\n }\r\n\r\n closeSearch() {\r\n this.searchingTerm = false;\r\n this.searchResult = null;\r\n }\r\n\r\n FilterSearchResults(item: SearchResult = null) {\r\n this.SelectedResult = null;\r\n this.ShowSingleTable = true;\r\n\r\n requestAnimationFrame(() => {\r\n if (item)\r\n this.SelectedResult = this.searchResult?.results?.find(f => f.description == item.description);\r\n else\r\n this.ShowSingleTable = false;\r\n });\r\n }\r\n}\r\n\r\n// TODO: Spostare nel modulo preferenze account\r\nexport class ProfilePicture{\r\n image: string;\r\n}","<div #sidebar class=\"app-sidebar\" [class.menu-collapsed]=\"isMenuCollapsed\" (mouseleave.out-zone)=\"sendAwayHoverElement();\">\r\n <!--Jace Logo-->\r\n <div class=\"app-logo-container\">\r\n <div class=\"app-pointer\" [routerLink]=\"['/pages/dashboard']\" style=\"margin-bottom: 10px; overflow: hidden\">\r\n <!-- <div *ngIf=\"!isMenuCollapsed\" class=\"app-logo-img app-logo-placeholder d-flex\">\r\n <div class=\"app-margin-left-10\">\r\n <i style=\"color: #00aeef;\" class=\"fas fa-chevron-left\"></i> \r\n <i style=\"color: #01C38D;\" class=\"fas fa-chevron-right\"></i> \r\n </div>\r\n <div class=\"app-margin-left-10\">{{applicationName}}</div>\r\n </div> -->\r\n <img *ngIf=\"!isMenuCollapsed\" class=\"app-logo-img\" src=\"assets/img/logo/logo.png\" alt=\"\">\r\n <img *ngIf=\"isMenuCollapsed\" class=\"app-logo-img-sm\" src=\"assets/img/logo/logo_sm.png\" alt=\"\">\r\n </div>\r\n </div>\r\n <div *ngIf=\"!isMenuCollapsed\" class=\"app-sidebar-search\">\r\n <form novalidate role=\"search\" class=\"app-search\" (ngSubmit)=\"onSearchRequest()\">\r\n <input type=\"text\" placeholder=\"Ricerca...\" [(ngModel)]=\"searchTerm\" (ngModelChange)=\"onSearchModelChanged()\" name=\"search\" class=\"form-control\" autocomplete=\"off\">\r\n <a><i class=\"far fa-magnifying-glass\"></i></a>\r\n </form>\r\n </div>\r\n <!--Barra laterale con tutte le voci di Menu-->\r\n <ul class=\"nav nav-sidebar flex-column flex-nowrap\" style=\"position: relative; zoom: 1\" slim-scroll [slimScrollOptions]=\"{height: menuHeight}\">\r\n <li *ngFor=\"let item of menuItems; let last = last;\" \r\n class=\"sidebar-list-item level-{{item.level}}\" \r\n [style.margin-bottom]=\"last ? '42px' : '0px'\" \r\n [class.has-sub-menu]=\"item.subMenu\"\r\n [class.sidebar-item-expanded]=\"item.expanded\" \r\n [class.sidebar-item-wip]=\"item.wip\">\r\n <ng-container *ngTemplateOutlet=\"menuItem; context : { $implicit: item }\"></ng-container>\r\n </li>\r\n </ul>\r\n <!--Selettore Barra dei Menu-->\r\n <div class=\"sidebar-hover-elem\"></div>\r\n <!--Footer-->\r\n <div *ngIf=\"!isMenuCollapsed\" class=\"app-sidebar-footer\">\r\n <!--Minuscolo fade tra sidebar e inizio footer-->\r\n <div class=\"app-sidebar-footer-fade\"></div>\r\n <div class=\"app-padding-15\">\r\n <!--Informazioni utente collegato-->\r\n <div class=\"app-sidebar-footer-user-container\">\r\n <!--Mentre sto ancora caricando la ProfilePic mi assicuro di mostrare un placeholder-->\r\n <div *ngIf=\"!safeprofilepic\" class=\"app-sidebar-footer-user-img-placeholder\">\r\n <i class=\"far fa-2x fa-spinner fa-spin-pulse\" style=\"color: black; margin-top: 5px;\"></i>\r\n </div>\r\n <!--Una volta caricata la ProfilePic nascondo il placeholder e la mostro-->\r\n <ng-container *ngIf=\"safeprofilepic\">\r\n <img [src]=\"safeprofilepic\" alt=\"\" class=\"app-sidebar-footer-user-img app-pointer\" [routerLink]=\"['/pages/profile/user_info']\">\r\n <div class=\"app-sidebar-footer-user-status\"></div>\r\n </ng-container>\r\n <!--Username animato quando supera i 15 caratteri-->\r\n <div class=\"app-sidebar-footer-user-name-container\">\r\n <div class=\"username-text\" [class.username-text-animator]=\"user?.length > 15\">{{user}}</div>\r\n <div class=\"tenantname-text\">{{tenant}}</div>\r\n </div>\r\n </div>\r\n <!--Operazioni rapide (Logout, Cambia tenant, Guida, Supporto,...)-->\r\n <div class=\"app-sidebar-footer-quick-ops\">\r\n <div (click)=\"onLogout();\" class=\"app-sidebar-footer-op app-no-selection\"><i class=\"far fa-right-from-bracket\"></i> Logout</div>\r\n <div (click)=\"onChangeTenant();\" class=\"app-sidebar-footer-op app-no-selection\"><i class=\"far fa-right-left\"></i> Cambia Tenant</div>\r\n </div>\r\n <!--Versione corrente applicazione-->\r\n <div class=\"app-sidebar-footer-ver\">\r\n v{{applicationVersion}}\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n<ng-template #menuItem let-item>\r\n <a [attr.style.padding_left]=\"item.padding_left\" *ngIf=\"(!item.routerLink && !item.subMenu) || item.wip\" [href]=\"item.link ? item.link : '#'\" (click)=\"item.wip && $event.preventDefault()\" target=\"_blank\" class=\"sidebar-list-link {{item.cssClass || ''}}\" (mouseenter.out-zone)=\"hoverItem($event)\">\r\n <i *ngIf=\"item.icon\" class=\"{{ item.icon }}\"></i><span>{{ item.title | localize : lc }}</span>\r\n </a>\r\n\r\n <a [attr.style.padding_left]=\"item.padding_left\" *ngIf=\"item.routerLink && !item.subMenu && !item.wip\" class=\"sidebar-list-link {{item.cssClass || ''}}\" [routerLink]=\"[item.routerLink]\" [queryParams]=\"item.queryParams\" routerLinkActive=\"active-link\" (click.out-zone)=\"collapseMenu($event, item)\" (mouseenter.out-zone)=\"hoverItem($event)\">\r\n <i *ngIf=\"item.icon\" class=\"{{ item.icon }}\"></i><span>{{ item.title | localize : lc }}</span>\r\n </a>\r\n\r\n <a [attr.style.padding_left]=\"item.padding_left\" *ngIf=\"item.subMenu && !item.wip\" (click.out-zone)=\"collapseMenu($event, item)\" [attr.href]=\"''\" class=\"sidebar-list-link {{item.cssClass || ''}}\" (mouseenter.out-zone)=\"hoverItem($event)\">\r\n <i *ngIf=\"item.icon\" class=\"{{ item.icon }}\"></i><span>{{ item.title | localize : lc }}</span>\r\n <b class=\"far fa-angle-down\"></b>\r\n </a>\r\n\r\n <ul *ngIf=\"item.subMenu\" class=\"sidebar-sublist\">\r\n <li *ngFor=\"let subitem of item.subMenu\" class=\"sidebar-sublist-item level-{{subitem.level}}\" [class.sidebar-item-wip]=\"subitem.wip\">\r\n <ng-container *ngTemplateOutlet=\"menuItem; context : { $implicit: subitem }\"></ng-container>\r\n </li>\r\n </ul>\r\n</ng-template>\r\n\r\n<!-- Overlay per la ricerca globale -->\r\n<ng-container *ngIf=\"searchingTerm || searchResult\">\r\n <div class=\"app-absolute app-search-background\">\r\n <div class=\"app-search-result-box\">\r\n <ng-container *ngIf=\"searchingTerm\">\r\n <div class=\"app-search-card\"><i class=\"fa fa-spinner fa-spin\"></i>Sto effettuando la ricerca...</div>\r\n </ng-container>\r\n <ng-container *ngIf=\"searchResult && !searchingTerm\">\r\n <div class=\"row\" style=\"height: 100%;\">\r\n <!-- Spazio a sinistra -->\r\n <div class=\"col-md-1\"></div>\r\n <!-- Blocco con le categorie dei risultati -->\r\n <div class=\"col-md-3\">\r\n <div class=\"app-search-card\">\r\n <div class=\"app-relative\"><a class=\"fa fa-times text-danger app-absolute app-right-0 app-fs-20 app-pointer\" (click)=\"closeSearch();\"></a></div>\r\n <h4>Categorie di Ricerca</h4>\r\n <div class=\"app-pointer app-link\" [class.app-bold]=\"!SelectedResult && !ShowSingleTable\">\r\n <span (click)=\"FilterSearchResults()\">{{SelectedResult ? '-' : '>'}} Mostra Tutto</span>\r\n </div>\r\n <div *ngFor=\"let item of searchResult.results\" class=\"app-pointer app-link\" [class.app-bold]=\"SelectedResult?.description == item.description\">\r\n <span (click)=\"FilterSearchResults(item)\">{{SelectedResult?.description == item.description ? '>' : '-'}} Mostra {{item.description}} ({{item.items?.length}})</span>\r\n </div>\r\n </div>\r\n </div>\r\n <!-- Dettaglio risultati -->\r\n <div class=\"col-md-7\" style=\"overflow: auto; height: 100%;\">\r\n <ng-container *ngIf=\"!SelectedResult && !ShowSingleTable\">\r\n <div *ngFor=\"let res of searchResult.results; let i = index;\" class=\"app-search-card\" [style.margin-bottom.px]=\"i == (searchResult.results?.length - 1) ? 2 : 10\">\r\n <h4>{{res.description}}</h4>\r\n <es-table [(ngModel)]=\"res.items\" [DynamicRowColumnsDefinition]=\"res.est_cols\" [ArraymodeItemsPerPage]=\"10\"></es-table>\r\n </div>\r\n </ng-container>\r\n <ng-container *ngIf=\"SelectedResult && ShowSingleTable\">\r\n <div class=\"app-search-card\">\r\n <h4>{{SelectedResult.description}}</h4>\r\n <es-table [(ngModel)]=\"SelectedResult.items\" [DynamicRowColumnsDefinition]=\"SelectedResult.est_cols\" [ArraymodeItemsPerPage]=\"10\"></es-table>\r\n </div>\r\n </ng-container>\r\n </div>\r\n <!-- Spazio a destra -->\r\n <div class=\"col-md-1\"></div>\r\n </div>\r\n </ng-container>\r\n </div>\r\n </div>\r\n</ng-container>","import { Injectable, Injector } from \"@angular/core\";\r\nimport { LocalizationService } from \"@esfaenza/localizations\";\r\n\r\n@Injectable()\r\nexport class NavBarLoc extends LocalizationService {\r\n constructor(injector: Injector) {\r\n super(injector);\r\n super.set(\"it->en\", \"Sessione Scaduta\", [\"Expired session\"]);\r\n super.set(\"it->en\", \"Backend Offline\", [\"Backend Offline\"]);\r\n super.set(\"it->en\", \"Sembra che il Backend sia momentaneamente offline. Questa pagina si aggiornera' automaticamente non appena la situazione tornera' alla normalita'. Ci scusiamo per il disagio\", [\"Backend seems to be currently offline. This page will reset itself when the situation goes back to normal. Sorry for the inconvenience\"]);\r\n super.set(\"it->en\", \"Ripulisci la Cache\", [\"Clear Caches\"]);\r\n super.set(\"it->en\", \"Cache Ripulita\", [\"Cache Cleared\"]);\r\n super.set(\"it->en\", \"Ambiente di Produzione\", [\"Production Environment\"]);\r\n super.set(\"it->en\", \"È disponibile una nuova versione per l'applicazione corrente. Si suggerisce di ricaricare la pagina (CTRL + F5)\", [\"A new version is available for this application. It is suggested to reload this page (CTRL + F5)\"])\r\n super.set(\"it->en\", \"Le informazioni di Sessione (Tenant/Account) sono cambiate a seguito di un login su modulo diverso utilizzando diverso Tenant/Utente sullo stesso browser. Si suggerisce di ricaricare la pagina (CTRL + F5)\", [\"Session informations (Tenant/Account) has changed after a login to a different module with the same Tenant/Username using the same browser. It is suggested to reload this page (CTRL + F5)\"]);\r\n super.set(\"it->en\", \"Cambia Modulo\", [\"Change module\"]);\r\n super.set(\"it->en\", \"Cambia Tenant\", [\"Change tenant\"]);\r\n super.set(\"it->en\", \"Usa notifiche semplici\", [\"Use simple alerts\"]);\r\n super.set(\"it->en\", \"Consenti notifiche eleganti\", [\"Allow fancy alerts\"]);\r\n super.set(\"it->en\", \"Ambiente di Sviluppo\", [\"Development Environment\"]);\r\n super.set(\"it->en\", \"Ripulisci le Preferenze Utente\", [\"Clear User Preferences\"]);\r\n super.set(\"it->en\", \"Preferenze utente ripulite\", [\"User preferences has been cleared\"]);\r\n super.set(\"it->en\", \"Ambiente di Staging\", [\"Staging Environment\"]);\r\n super.set(\"it->en\", \"Ambiente di Staging A\", [\"Staging A Environment\"]);\r\n super.set(\"it->en\", \"L'attuale sessione di lavoro non è più valida.<br>Si prega di eseguire nuovamente il login.\", [\"Current session has expired.<br>Please login back into the application.\"]);\r\n super.set(\"it->en\", \"Notifiche\", [\"Notifications\"]);\r\n super.set(\"it->en\", \"Job Applicativi\", [\"Application Jobs\"]);\r\n super.set(\"it->en\", \"Al momento non c'è nulla in esecuzione\", [\"Nothing being executed at the moment\"]);\r\n super.set(\"it->en\", \"Job Completato\", [\"Job Completed\"]);\r\n }\r\n}","// Angular\r\nimport { Component } from \"@angular/core\";\r\n\r\n// Direttive, Componenti, Librerie\r\nimport { ReplaySubject, Subscription } from \"rxjs\";\r\n\r\n@Component({ template: '' })\r\nexport abstract class ReactiveComponent {\r\n\r\n protected Subscriptions: Subscription[] = [];\r\n protected destroyed$: ReplaySubject<boolean> = new ReplaySubject(1);\r\n\r\n ngOnDestroy() {\r\n this.destroyed$.next(true);\r\n this.destroyed$.complete();\r\n\r\n if (!this.Subscriptions)\r\n return;\r\n\r\n for (let i = 0; i < this.Subscriptions.length; i++)\r\n this.Subscriptions[i].unsubscribe();\r\n }\r\n}","// Angular\r\nimport { ChangeDetectionStrategy, Component, Input, ViewEncapsulation } from \"@angular/core\";\r\nimport { NgIf, NgFor } from \"@angular/common\";\r\n\r\n// Configurazioni\r\nimport { TokenService } from \"@esfaenza/core/services\";\r\n\r\n// Applicazione\r\nimport { ActiveModuleView, CategoriesWithModules } from \"@esfaenza/core/domain\";\r\n\r\n@Component({\r\n selector: \"jace-modules-board\",\r\n templateUrl: \"jace-modules-board.component.html\",\r\n styleUrls: [\"jace-modules-board.component.scss\"],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n encapsulation: ViewEncapsulation.None,\r\n standalone: true,\r\n imports: [NgIf, NgFor]\r\n})\r\nexport class JaceModulesBoardComponent {\r\n @Input() Modules : ActiveModuleView[];\r\n \r\n public Categories: CategoriesWithModules[] = [];\r\n private Tenant: string;\r\n\r\n constructor(private bts: TokenService) { \r\n this.Tenant = this.bts.getJaceIdentity().Idtenant;\r\n }\r\n\r\n ngOnInit() {\r\n if(!this.Modules)\r\n return;\r\n\r\n this.Modules.forEach(m => {\r\n //Fixo href\r\n m.href = m.uiurl?.replace(\"{tenant}\", this.Tenant)\r\n\r\n //Aggiungo il modulo alla categoria giusta. In ogni \"fila\" di moduli non ce ne possono essere pi� di 6\r\n var prev = this.Categories.find(c => c.category.toUpperCase() == m.category.toUpperCase());\r\n var lastRow = prev?.module_rows[prev.module_rows.length - 1];\r\n\r\n if (prev && lastRow.length < 6)\r\n lastRow.push(m);\r\n else if (prev && lastRow.length == 6)\r\n prev.module_rows.push([m]);\r\n else\r\n this.Categories.push(new CategoriesWithModules(m))\r\n });\r\n }\r\n}","<div class=\"module-backdrop\">\r\n <div class=\"module-container\">\r\n <div class=\"module-container-title\">Cambia Modulo</div>\r\n <div *ngFor=\"let cat of Categories; let catFirst = first;\">\r\n <div class=\"module-title\" [style.margin-top.px]=\"catFirst ? 0 : 10\">{{cat.category}}</div>\r\n <div *ngFor=\"let row of cat.module_rows\" class=\"d-flex\">\r\n <ng-container *ngFor=\"let mod of row; let modFirst = first;\">\r\n <a *ngIf=\"mod.href\" [href]=\"mod.href\">\r\n <div class=\"module module-available\" [style.margin]=\"modFirst ? '0px' : '0px 0px 15px 15px'\">\r\n <div class=\"module-name\"><span>{{mod.name}}</span></div>\r\n <div class=\"module-footer\">{{'Disponibile'}}</div>\r\n </div>\r\n </a>\r\n <a *ngIf=\"!mod.href\">\r\n <div class=\"module module-unavailable\" [style.margin]=\"modFirst ? '0px' : '0px 0px 15px 15px'\">\r\n <div class=\"module-name\"><span>{{mod.name}}</span></div>\r\n <div class=\"module-footer\">{{'Non disponibile'}}</div>\r\n </div>\r\n </a>\r\n </ng-container>\r\n </div>\r\n </div>\r\n </div>\r\n</div>","// Angular\r\nimport { ChangeDetectionStrategy, ChangeDetectorRef, Component, ElementRef, Inject, Type, ViewChild, ViewEncapsulation } from \"@angular/core\";\r\nimport { Router, RouterLink } from \"@angular/router\";\r\nimport { MatSlideToggleModule } from \"@angular/material/slide-toggle\";\r\nimport { NgIf, NgFor, NgTemplateOutlet } from \"@angular/common\";\r\nimport { FormsModule } from \"@angular/forms\";\r\n\r\n// Configurazioni\r\nimport { BaseMessageService, NotificationsService } from \"@esfaenza/signalr-notifications\";\r\nimport { CacheService, PreferencesService } from \"@esfaenza/preferences\";\r\nimport { LocalizationService, LocalizationModule } from \"@esfaenza/localizations\";\r\nimport { MessageService } from \"@esfaenza/extensions\";\r\nimport { HTTPService } from \"@esfaenza/httpservice\";\r\n\r\n// EsFaenza\r\nimport { ComponentHostDirective } from \"@esfaenza/core/directives\";\r\nimport { JaceIdentity, ActiveModuleView, EnvOptions, ApplicationJob, NAVBAR_EXTENSIONS } from \"@esfaenza/core/domain\";\r\nimport { AppState, CompletedJobRedirectionService, TokenService } from \"@esfaenza/core/services\";\r\n\r\n// Librerie\r\nimport { interval, startWith, takeUntil, takeWhile } from \"rxjs\";\r\nimport { ProgressbarModule } from \"ngx-bootstrap/progressbar\";\r\nimport { BsDropdownModule } from \"ngx-bootstrap/dropdown\";\r\n\r\n// Applicazione\r\nimport { NavBarLoc } from \"./navbar.component.loc\";\r\n\r\n// Componenti\r\nimport { ReactiveComponent } from \"../base/reactive.component\";\r\nimport { JaceModulesBoardComponent } from \"./modules-board/jace-modules-board.component\";\r\n\r\n// Chiamate ai Repository\r\nconst GET_Jace_GetActiveJaceModules: string = \"/api/Jace/GetActiveJaceModules\";\r\nconst GET_Adm_ClearAllCaches: string = \"/api/Adm/ClearAllCaches\";\r\n\r\ndeclare var myconfig: EnvOptions;\r\ndeclare var dayjs;\r\n\r\n@Component({\r\n selector: \"navbar\",\r\n viewProviders: [{ provide: LocalizationService, useClass: NavBarLoc }],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n styleUrls: [\"./navbar.component.scss\"],\r\n templateUrl: \"./navbar.component.html\",\r\n standalone: true,\r\n imports: [RouterLink, FormsModule, BsDropdownModule, MatSlideToggleModule, NgIf, NgFor, ProgressbarModule, JaceModulesBoardComponent, ComponentHostDirective, NgTemplateOutlet, LocalizationModule]\r\n})\r\nexport class Navbar extends ReactiveComponent {\r\n\r\n public applicationVersion = myconfig.AppData.ComponentVersion;\r\n public applicationEnvironment = myconfig.AppData.ComponentEnvironment;\r\n\r\n public isMenuCollapsed: boolean = false;\r\n public anomaliesProcessing: boolean = false;\r\n\r\n public CurrentIdentity: JaceIdentity;\r\n\r\n private newVersionWarned: boolean = false;\r\n @ViewChild(\"navbar\", { static: false }) navbar: ElementRef;\r\n\r\n public Modules: ActiveModuleView[];\r\n\r\n constructor(\r\n private prefsService: PreferencesService, private cacheService: CacheService, private MessageDef: BaseMessageService,\r\n private notifications: NotificationsService, private msgExts: MessageService, public lc: LocalizationService, private http: HTTPService, public cdr: ChangeDetectorRef,\r\n public _state: AppState, public sr: TokenService, private router: Router, private cjrService: CompletedJobRedirectionService, @Inject(NAVBAR_EXTENSIONS) public extensionComponents: Type<any>[]) {\r\n super();\r\n\r\n this._state.subscribe(\"menu.isCollapsed\", (isCollapsed) => { this.isMenuCollapsed = isCollapsed; });\r\n this._state.subscribe(\"app.completedJob\", (jobDescription) => {\r\n this.msgExts.simpleSuccess(this.lc.loc(\"Job Completato\") + \": \" + jobDescription);\r\n });\r\n\r\n this.handleBaseNotifications();\r\n this.getActiveJaceModules();\r\n\r\n // Appena la pagina parte, poi ogni secondo, controllo l'identity per verificare se rimane la stessa\r\n interval(1000).pipe(\r\n startWith(0),\r\n takeUntil(this.destroyed$),\r\n takeWhile(_ => !myconfig.redirectInProgress)\r\n ).subscribe(t => {\r\n this.checkIdentity();\r\n })\r\n }\r\n\r\n override ngOnDestroy() {\r\n super.ngOnDestroy();\r\n //Quando viene distrutta la navbar devo distruggere anche il client di signalr perchè vuol dire che ho chiuso la pagina\r\n this.notifications.disconnect();\r\n }\r\n\r\n private handleBaseNotifications() {\r\n this.notifications.send(this.MessageDef.OUT_QueryJobStatus, null);\r\n this.notifications.observe(this.MessageDef.IN_SendVersion).pipe(takeUntil(this.destroyed$)).subscribe((message) => {\r\n if (message != myconfig.AppData.ComponentVersion && !this.newVersionWarned) {\r\n this.msgExts.simpleWarning(this.lc.loc(\"È disponibile una nuova versione per l'applicazione corrente. Si suggerisce di ricaricare la pagina (CTRL + F5)\"));\r\n this.newVersionWarned = true;\r\n }\r\n });\r\n }\r\n\r\n private checkIdentity() {\r\n let id = this.sr.getJaceIdentity();\r\n let idLast = this.CurrentIdentity;\r\n\r\n if (!id) return;\r\n\r\n this.checkSessionTimeout(id);\r\n\r\n if (this.CurrentIdentity && (id.IdAccount != idLast?.IdAccount || id.IdUser != idLast?.IdUser || id.Idtenant != idLast?.Idtenant)) {\r\n this.msgExts.simpleWarning(this.lc.loc(\"Le informazioni di Sessione (Tenant/Account) sono cambiate a seguito di un login su modulo diverso utilizzando diverso Tenant/Utente sullo stesso browser. Si suggerisce di ricaricare la pagina (CTRL + F5)\"));\r\n this.cdr.markForCheck();\r\n }\r\n\r\n this.CurrentIdentity = id;\r\n }\r\n\r\n getActiveJaceModules() {\r\n this.http.get<ActiveModuleView[]>(GET_Jace_GetActiveJaceModules).subscribe(res => {\r\n this.Modules = res;\r\n this._state.Modules = this.Modules;\r\n });\r\n }\r\n\r\n private checkSessionTimeout(identity: JaceIdentity) {\r\n if (dayjs() >= dayjs(identity.ExpirationTime).subtract(10, 'minutes') && !myconfig.redirectInProgress) {\r\n myconfig.redirectInProgress = true;\r\n\r\n this.msgExts.expiredSessionMessage(\r\n this.lc.loc('Expired session'),\r\n this.lc.loc(\"L'attuale sessione di lavoro non è più valida.<br>Si prega di eseguire nuovamente il login.\"),\r\n () => {\r\n myconfig.redirectInProgress = false;\r\n console.log(\"checkSessionTimeout - redirecting to login\")\r\n this.router.navigate([\"login\"]);\r\n }\r\n );\r\n }\r\n }\r\n\r\n ngAfterViewInit() {\r\n this._state.setHeaderHeight(this.navbar.nativeElement.offsetHeight);\r\n }\r\n\r\n public toggleMenu() {\r\n this.isMenuCollapsed = !this.isMenuCollapsed;\r\n this._state.notifyDataChanged(\"menu.isCollapsed\", this.isMenuCollapsed);\r\n }\r\n\r\n public logout() {\r\n window.location.href = `${myconfig.AuthUrl}/logout?client=${myconfig.Client}`;\r\n }\r\n\r\n public changeModule() {\r\n window.location.href = myconfig.JaceDashboardUrl;\r\n }\r\n\r\n public changeTenant() {\r\n window.location.href = `${myconfig.AuthUrl}/login/tenant?client=${myconfig.Client}`;\r\n }\r\n\r\n clearUserPreferences() {\r\n this.prefsService.clear().subscribe();\r\n this.msgExts.simpleSuccess(this.lc.loc(\"Preferenze utente ripulite\"));\r\n }\r\n\r\n clearAll() {\r\n this.cacheService.clear().subscribe();\r\n this.http.resetHttpUntimedCacheStorage();\r\n this.http.resetHttpTimedCacheStorage();\r\n this.http.get(GET_Adm_ClearAllCaches).subscribe(_ => {\r\n this.msgExts.simpleSuccess(this.lc.loc(\"Cache Ripulita\"));\r\n });\r\n }\r\n\r\n clearMessages() {\r\n this.msgExts.clearMessages();\r\n }\r\n\r\n completedJobClicked(job: ApplicationJob) {\r\n this.cjrService.redirect(job);\r\n }\r\n\r\n // Jace Module Dashboard\r\n public showModules: boolean = false;\r\n onShowModules() {\r\n this.showModules = !this.showModules;\r\n }\r\n}","<nav #navbar class=\"nav enuma-navbar\" [style.width]=\"isMenuCollapsed ? 'calc(100vw - 42px)' : 'calc(100vw - 230px)'\">\r\n <div class=\"d-flex\" style=\"width: 100%;\">\r\n <div><a (click)=\"toggleMenu()\" class=\"far fa-bars nav-icon app-padding-top-5 app-padding-left-15\"></a></div>\r\n <div class=\"app-padding-top-5 app-padding-left-15\"><ng-content></ng-content></div>\r\n <div style=\"margin-left: auto; display: flex;\">\r\n <!--Notifications (Jobs)-->\r\n <div class=\"user-menu app-no-selection app-margin-right-15\" dropdown container=\"body\" placement=\"bottom right\">\r\n <!--TODO: Spostare in modulo a parte _state.jobsInProgress, _state.jobsInProgress, ecc...-->\r\n <div *ngIf=\"_state.jobsInProgress > 0\" class=\"fa-beat-fade nav-jobs-icon-notification\"></div>\r\n <a [class.fa-shake]=\"_state.jobsInProgress > 0\" class=\"far fa-bell module-nav-menu-link dropdown-toggle app-pointer\" style=\"--fa-animation-duration: 3s; --fa-animation-iteration-count: 1;\" dropdownToggle></a>\r\n <ul *dropdownMenu class=\"nav-jobs-menu\" role=\"menu\">\r\n <div class=\"nav-jobs-menu-header\">\r\n <span>{{'Job Applicativi' | localize : lc}}</span>\r\n <span class=\"pull-right m-t-min-2\"><mat-slide-toggle [(ngModel)]=\"_state.notifyOnCompletedJobs\" (click)=\"clearMessages(); $event.stopPropagation();\"></mat-slide-toggle></span>\r\n <span class=\"pull-right app-margin-right-5\">{{'Notifiche' | localize : lc}}:</span>\r\n </div>\r\n <div class=\"nav-jobs-menu-list\">\r\n <div *ngIf=\"_state.allJobs.length == 0\" class=\"nav-jobs-menu-list-empty\">\r\n <div>{{\"Al momento non c'è nulla in esecuzione\" | localize : lc}}</div>\r\n </div>\r\n <div *ngFor=\"let job of _state.allJobs; let last = last\" [class.app-margin-bottom-5]=\"!last\">\r\n <span class=\"nav-jobs-menu-list-description\">\r\n <span *ngIf=\"!job.completed\" title=\"{{job.description}}\">{{job.smalldescription}}</span>\r\n <span *ngIf=\"job.completed\" title=\"{{job.description}}\"\r\n class=\"app-link app-no-selection app-inline app-pointer\"\r\n (click)=\"completedJobClicked(job); $event.stopPropagation();\">{{job.smalldescription}}</span>\r\n <strong class=\"pull-right\" *ngIf=\"!job.completed\">{{job.percentage}}%</strong>\r\n <strong class=\"pull-right\" *ngIf=\"job.completed\">{{'Completed' | localize : lc}}</strong>\r\n </span>\r\n <div class=\"progress progress-sm\">\r\n <progressbar *ngIf=\"!job.completed\" [max]=\"100\" [value]=\"job.percentage\" [striped]=\"true\"\r\n [animate]=\"true\"></progressbar>\r\n <progressbar *ngIf=\"job.completed\" type=\"success\" [max]=\"100\" [value]=\"100\" [striped]=\"false\"\r\n [animate]=\"false\"></progressbar>\r\n </div>\r\n </div>\r\n </div>\r\n </ul>\r\n </div>\r\n \r\n <!--Other Modules-->\r\n <div class=\"user-menu app-no-selection app-margin-right-15\" dropdown container=\"body\" placement=\"bottom right\">\r\n <a (click)=\"onShowModules()\" class=\"far fa-cubes module-nav-menu-link dropdown-toggle app-pointer\"></a>\r\n </div>\r\n \r\n <!--Quick Actions-->\r\n <div class=\"user-menu app-no-selection app-margin-right-15\" dropdown container=\"body\" placement=\"bottom right\">\r\n <a class=\"far fa-folder-gear module-nav-menu-link dropdown-toggle app-pointer\" dropdownToggle></a>\r\n <ul *dropdownMenu class=\"dropdown-menu dropdown-menu-right-user app-no-padding\" role=\"menu\">\r\n <li class=\"d-flex dropdown-title-bg\">\r\n <div class=\"dropdown-title\">Gestisci Cache Utente</div>\r\n </li>\r\n <li class=\"dropdown-top\"></li>\r\n <li class=\"dropdown-item app-pointer\" (click)=\"clearUserPreferences()\">\r\n <i class=\"far fa-user-times app-margin-right-10\"></i>{{'Ripulisci le Preferenze Utente' | localize : lc}}\r\n </li>\r\n <!-- <li class=\"dropdown-divider\"></li> -->\r\n <li class=\"dropdown-item app-pointer\" (click)=\"clearAll()\">\r\n <i class=\"far fa-broom-wide app-margin-right-10\"></i>{{'Ripulisci la Cache' | localize : lc}}\r\n </li>\r\n <li class=\"dropdown-bot\"></li>\r\n </ul>\r\n </div>\r\n \r\n <!--Punti di estensione per Calendar, Chatroom e chi più ne ha più ne metta...-->\r\n <div class=\"user-menu app-no-selection app-margin-right-15\" *ngFor=\"let comp of extensionComponents\">\r\n <ng-template [componentHost]=\"comp\"></ng-template>\r\n </div>\r\n </div>\r\n <div>\r\n <div class=\"nav-environment app-no-selection\">\r\n <ng-container *ngIf=\"applicationEnvironment == 1\">{{'Ambiente di Produzione' | localize : lc}}</ng-container>\r\n <ng-container *ngIf=\"applicationEnvironment == 2\">{{'Ambiente di Sviluppo' | localize : lc}}</ng-container>\r\n <ng-container *ngIf=\"applicationEnvironment == 5\">{{'Ambiente di Staging' | localize : lc}}</ng-container>\r\n <ng-container *ngIf=\"applicationEnvironment == 6\">{{'Ambiente di Staging A' | localize : lc}}</ng-container>\r\n </div>\r\n </div>\r\n <!--Debugging ruoli e permessi-->\r\n <div [hidden]=\"true\">\r\n <div>Permissions:</div>\r\n <div *ngFor=\"let p of CurrentIdentity.Permissions\">{{p}}</div>\r\n <div>Roles:</div>\r\n <div *ngFor=\"let r of CurrentIdentity.Roles\">{{r}}</div>\r\n </div>\r\n </div>\r\n</nav>\r\n\r\n<jace-modules-board *ngIf=\"showModules\" [Modules]=\"Modules\"></jace-modules-board>","// Angular\r\nimport { Component, HostListener, ViewEncapsulation } from \"@angular/core\";\r\nimport { DomSanitizer, SafeResourceUrl } from \"@angular/platform-browser\";\r\nimport { Location, NgClass, NgIf } from \"@angular/common\";\r\nimport { Router, RouterOutlet } from \"@angular/router\";\r\n\r\n// Configurazioni\r\nimport { AppState } from \"@esfaenza/core/services\";\r\n\r\n// Componenti\r\nimport { BackTop } from \"../back-top/back-top.component\";\r\nimport { Breadcrumb } from \"../breadcrumb/breadcrumb.component\";\r\nimport { Sidebar } from \"../sidebar/sidebar.component\";\r\nimport { Navbar } from \"../navbar/navbar.component\";\r\n\r\ndeclare var jQuery;\r\n\r\n@Component({\r\n selector: \"pages\",\r\n encapsulation: ViewEncapsulation.None,\r\n styleUrls: [\"./pages.component.scss\"],\r\n templateUrl: \"./pages.component.html\",\r\n standalone: true,\r\n imports: [Navbar, Sidebar, NgClass, NgIf, Breadcrumb, RouterOutlet, BackTop]\r\n})\r\nexport class PagesComponent {\r\n public isMenuCollapsed: boolean = false;\r\n public maxHeight: number = 0;\r\n public dynamicCSSUrl: SafeResourceUrl = null;\r\n public loadedModuleCss: string = \"\";\r\n\r\n constructor(public sanitizer: DomSanitizer, public _state: AppState, private _location: Location, public router: Router) {\r\n this._state.subscribe(\"menu.isCollapsed\", (isCollapsed) => {\r\n this.isMenuCollapsed = isCollapsed;\r\n });\r\n }\r\n\r\n ngOnInit() {\r\n this.getCurrentPageName();\r\n this.getHeight();\r\n }\r\n\r\n getCurrentPageName(): void {\r\n var url = this._location.path();\r\n setTimeout(function () {\r\n window.scrollTo(0, 0);\r\n jQuery('a[href=\"#' + url + '\"]').closest(\"li\").closest(\"ul\").closest(\"li\").addClass(\"sidebar-item-expanded\");\r\n });\r\n }\r\n\r\n public hideMenu(): void {\r\n this._state.notifyDataChanged(\"menu.isCollapsed\", true);\r\n }\r\n\r\n public getHeight() {\r\n var html = document.documentElement;\r\n this.maxHeight = html.clientHeight - 60;\r\n }\r\n\r\n @HostListener('window:resize', ['$event'])\r\n onResize(event) {\r\n this.getHeight();\r\n }\r\n}","<div class=\"pages-container\">\r\n <sidebar></sidebar>\r\n <div>\r\n <navbar>\r\n <breadcrumb></breadcrumb>\r\n </navbar>\r\n <div class=\"main-wrapper\" [style.max-height.px]=\"maxHeight\" [ngClass]=\"{'menu-collapsed': isMenuCollapsed}\">\r\n <div class=\"az-overlay\" *ngIf=\"!isMenuCollapsed\" (click)=\"hideMenu()\"></div>\r\n <div class=\"main\">\r\n <router-outlet></router-outlet>\r\n </div>\r\n <back-top [position]=\"200\"></back-top>\r\n </div>\r\n </div>\r\n</div>","// Angular\r\nimport { ActivatedRoute, RouterOutlet } from \"@angular/router\";\r\nimport { Component } from \"@angular/core\";\r\n\r\n// Configurazioni\r\nimport { AccessControlService } from \"@esfaenza/access-control\";\r\nimport { LocalizationService } from \"@esfaenza/localizations\";\r\nimport { HTTPService } from \"@esfaenza/httpservice\";\r\n\r\nimport { AppState, TokenService } from \"@esfaenza/core/services\";\r\nimport { EnvOptions } from \"@esfaenza/core/domain\";\r\n\r\ndeclare var myconfig: EnvOptions;\r\n\r\n@Component({\r\n selector: \"external-pages\",\r\n templateUrl: \"./external_pages.component.html\",\r\n standalone: true,\r\n imports: [RouterOutlet]\r\n})\r\nexport class ExternalPagesComponent {\r\n private Username: string = \"\";\r\n private Password: string = \"\";\r\n private Tenant: string = \"\";\r\n\r\n constructor(private aac: AccessControlService, public lc: LocalizationService, private http: HTTPService, private _state: AppState, private route: ActivatedRoute, private bts: TokenService) {\r\n this.Username = this.route.snapshot.params[\"user\"];\r\n this.Password = this.route.snapshot.params[\"pswd\"];\r\n this.Tenant = this.route.snapshot.params[\"tnt\"];\r\n }\r\n\r\n ngOnInit() {\r\n console.log(\"Caricamento pagina nell'IFRAME completato!\");\r\n console.log(\"[\" + this.Tenant + \"]\" + this.Username + \" - \" + this.Password);\r\n\r\n // Le info di login che ho passato sono le stesse delle info di login salvate nel token --> È un redirect da un sito esterno ma il token c'è già. Esco\r\n // Ho un token di login e non ho nessuna info sull'utente da usare --> È un redirect da Jace, quindi sono a posto. Esco\r\n let currentIdentity = this.bts.getJaceIdentity();\r\n if (currentIdentity && (!(this.Tenant + this.Username + this.Password) || currentIdentity.Idtenant == this.Tenant && currentIdentity.DsUser == this.Username)) {\r\n this.aac.initializeIdentity(currentIdentity);\r\n return;\r\n }\r\n\r\n // Altrimenti devo effettuare il login\r\n let LoginDTO = { tenant: \"FX\", username: this.Username, password: this.Password, client_id: \"jacedev\" };\r\n this.http.post(`${myconfig.AuthUrl}/api/login/dologin`, LoginDTO).subscribe(t => {\r\n });\r\n }\r\n}","<router-outlet></router-outlet>","// Angular\r\nimport { Component, ViewEncapsulation } from \"@angular/core\";\r\n\r\nimport { EnvOptions } from \"@esfaenza/core/domain\";\r\n\r\ndeclare var myconfig: EnvOptions;\r\n\r\n@Component({\r\n selector: \"login\",\r\n encapsulation: ViewEncapsulation.None,\r\n styleUrls: [\"./jace-login.component.scss\"],\r\n templateUrl: \"./jace-login.component.html\",\r\n standalone: true\r\n})\r\nexport class JaceLoginComponent {\r\n\r\n ngOnInit() {\r\n\r\n if (myconfig.AuthUrl)\r\n window.location.href = `${myconfig.AuthUrl}/login/form?client=${myconfig.Client}`;\r\n else\r\n console.error(\"myconfig.AuthUrl is not provided\");\r\n }\r\n}\r\n","<div class=\"login-container\">\r\n <div class=\"redirecting-div\">\r\n <div class=\"redirecting-message\"><h1>Redirecting to login...</h1></div>\r\n <div class=\"signal\"></div>\r\n </div>\r\n</div>\r\n","// Angular\r\nimport { Component, Inject, Optional, ViewEncapsulation } from \"@angular/core\";\r\nimport { ActivatedRoute, Router } from \"@angular/router\";\r\nimport { NgIf } from \"@angular/common\";\r\n\r\n// Configurazioni\r\nimport { AppState } from \"@esfaenza/core/services\";\r\n\r\n// Applicazione\r\nimport { REDIRECT_MAP } from \"@esfaenza/core/domain\";\r\n\r\n// TODO: loc.ts\r\n@Component({\r\n selector: \"redirecter\",\r\n encapsulation: ViewEncapsulation.None,\r\n templateUrl: \"./redirecter.component.html\",\r\n standalone: true,\r\n imports: [NgIf]\r\n})\r\nexport class RedirecterComponent {\r\n\r\n public Error: string = \"\";\r\n\r\n constructor(public _state: AppState, private route: ActivatedRoute, public router: Router, @Optional() @Inject(REDIRECT_MAP) private redirectMap: { [index: string]: { url: string, params: string[] } }) { }\r\n\r\n ngOnInit() {\r\n let url: string = this.route.snapshot.params[\"url\"];\r\n //§ = 167... non so perché ma scrivendolo esplicitamente non funziona\r\n let parts = url.split(String.fromCharCode(167)).filter(s => !!s);\r\n\r\n if (parts.length < 2) {\r\n this.Error = \"L'url passato è incompleto. Impossibile riconoscerlo\";\r\n return;\r\n }\r\n else {\r\n var redirect = this.redirectMap[parts[0]];\r\n if (!redirect) {\r\n this.Error = \"L'url passato fa riferimento a un oggetto non navigabile. Impossibile procedere\";\r\n return;\r\n }\r\n\r\n if (redirect.params.length != parts.length - 1) {\r\n this.Error = \"Il numero di parametri richiesti per navigare all'entità richiesta è diverso dal numero di parametri passato\";\r\n return;\r\n }\r\n\r\n let parObject = {};\r\n redirect.params.forEach((t, i) => parObject[t] = parts[i + 1]);\r\n this.router.navigate([\"pages/\" + redirect.url, parObject]);\r\n }\r\n }\r\n}","<div *ngIf=\"Error\">{{Error}}</div>","// Angular\r\nimport { Component, Injector } from \"@angular/core\";\r\nimport { ActivatedRoute, Router, UrlSegmentGroup } from \"@angular/router\";\r\n\r\n// Direttive, Componenti, Librerie\r\nimport { takeUntil } from \"rxjs/operators\";\r\n\r\n// Core\r\nimport { AppState } from \"@esfaenza/core/services\";\r\n\r\nimport { ReactiveComponent } from \"./reactive.component\";\r\nimport { EMBEDDED_ROUTE, ROUTE } from \"@esfaenza/core/domain\";\r\n\r\n@Component({ template: '' })\r\nexport abstract class BaseComponent extends ReactiveComponent {\r\n\r\n /*\r\n * Blocco di informazioni sulla route attuale\r\n * Route: /pages/module/component;idModel=123\r\n * \r\n * CompletePath: /pages/module/component\r\n * ComponentPath: module/component\r\n * BasePath: /pages (equivalente a ROUTE o EMBEDDED_ROUTE)\r\n * Parameters: { \"idModel\" : \"123\" }\r\n */\r\n protected CompletePath: string;\r\n protected ComponentPath: string;\r\n protected BasePath: string;\r\n protected NavigationParameters: { [name: string]: string } = null;\r\n\r\n // Informazioni prese dai dati extra della route\r\n protected InternalNavigation: boolean;\r\n protected NavigationTitle: string;\r\n\r\n private _router: Router;\r\n \r\n constructor(injector: Injector) {\r\n super();\r\n\r\n let _activatedRoute: ActivatedRoute = injector.get(ActivatedRoute);\r\n let _state: AppState = injector.get(AppState);\r\n this._router = injector.get(Router);\r\n\r\n _state.registerNavigationIfMeaningful(_activatedRoute.snapshot);\r\n\r\n // Parametri in maniera \"dinamica\"\r\n _activatedRoute.params.pipe(takeUntil(this.destroyed$)).subscribe(t => { this.NavigationParameters = t; })\r\n\r\n // Tutto il resto in maniera statica tanto non cambia\r\n let segs = (<UrlSegmentGroup>(<any>_activatedRoute.snapshot)._urlSegment).segments;\r\n this.CompletePath = \"/\" + segs.map(t => t.path).join('/');\r\n this.ComponentPath = \"/\" + segs.filter((t, i) => i != 0).map(t => t.path).join('/');\r\n this.BasePath = \"/\" + segs[0].path;\r\n\r\n this.InternalNavigation = _activatedRoute.snapshot.data[\"internalNavigation\"] || false;\r\n this.NavigationTitle = _activatedRoute.snapshot.data[\"title\"] || \"\";\r\n\r\n // Per i componenti navigabili non embeddati è inutile mandare il messaggio di navigazione\r\n // Così come per quelli per cui non esiste un titolo (cioè compoennti verso cui non si è navigato direttamente)\r\n if(!_state.Embedded || !this.NavigationTitle)\r\n return;\r\n\r\n // Se sono dentro un iframe risalgo a quello di livello più alto in assoluto\r\n let tmpWindow = <{ parent: any, postMessage: Function }>window;\r\n // Quando il parent non esiste window. parent è un riferimento a se stesso\r\n while (tmpWindow.parent != tmpWindow)\r\n tmpWindow = tmpWindow.parent;\r\n\r\n tmpWindow.postMessage({ type: \"navigation\", url: this.CompletePath, internalNavigation: this.InternalNavigation, title: this.NavigationTitle }, \"*\");\r\n }\r\n\r\n protected navigate(command: any[], extras?: any) {\r\n let commands = command;\r\n\r\n // Fix della path esattamente come in esRouterLink\r\n commands = Array.isArray(commands) ? commands : [commands];\r\n let route = (commands[0] as string);\r\n if (!route.startsWith(\"/\" + EMBEDDED_ROUTE) && !route.startsWith(\"/\" + ROUTE))\r\n commands[0] = this.BasePath + commands[0];\r\n\r\n this._router.navigate(command, extras);\r\n }\r\n}","// Angular\r\nimport { ChangeDetectionStrategy, ChangeDetectorRef, Component, Input, ViewEncapsulation } from \"@angular/core\";\r\nimport { DomSanitizer, SafeResourceUrl } from \"@angular/platform-browser\";\r\nimport { NgIf } from \"@angular/common\";\r\n\r\n// Configurazioni\r\nimport { AppState } from \"@esfaenza/core/services\";\r\n\r\n// Classi\r\nimport { ActiveModuleView, EnvOptions } from \"@esfaenza/core/domain\";\r\n\r\ndeclare var myconfig: EnvOptions;\r\n\r\n@Component({\r\n selector: \"jace-resource\",\r\n encapsulation: ViewEncapsulation.None,\r\n templateUrl: \"./jace-resource.component.html\",\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n standalone: true,\r\n imports: [NgIf]\r\n})\r\nexport class JaceResourceComponent {\r\n @Input() Module: string = \"\";\r\n @Input() ModuleKeyType: 'altid' | 'id' = 'altid';\r\n @Input() Page: string = \"\";\r\n @Input() Localhost: string;\r\n\r\n public Height: number = 0;\r\n public sanitizedSourceResource: SafeResourceUrl = null;\r\n\r\n constructor(private cdr: ChangeDetectorRef, private _state: AppState, private sanitizer: DomSanitizer) { }\r\n\r\n ngOnInit() {\r\n console.log(\"Initializing jace resource for \" + this.Module);\r\n\r\n if (this._state.Modules?.length > 0)\r\n this.afterModulesRetrieve(this._state.Modules);\r\n else {\r\n this._state.subscribe(\"modules.Retrieved\", (modules) => {\r\n this.afterModulesRetrieve(modules);\r\n this.cdr.markForCheck();\r\n });\r\n }\r\n }\r\n\r\n ngAfterViewInit() {\r\n //let frame = document.getElementById(\"externalFrame\");\r\n //let rect = frame.getBoundingClientRect();\r\n this.Height = window.innerHeight - 116;\r\n console.log(\"Height: \" + this.Height);\r\n this.cdr.markForCheck();\r\n }\r\n\r\n afterModulesRetrieve(modules: ActiveModuleView[]) {\r\n let module = modules.find(t => (this.ModuleKeyType == 'id' ? t.idmodule : this.ModuleKeyType == 'altid' ? t.altname : \"\") == this.Module)\r\n if (!module) {\r\n console.error(`Impossibile trovare il modulo con ${this.ModuleKeyType} uguale a ${this.Module}`);\r\n this.sanitizedSourceResource = null;\r\n }\r\n if (this.Page.startsWith(\"pages\") || this.Page.startsWith(\"/pages\")) {\r\n console.error(`L'url della pagina da visitare non deve partire con 'pages', scrivere solo {modulo}/{pagina}`);\r\n this.sanitizedSourceResource = null;\r\n }\r\n\r\n let moduleUrl = myconfig.AuthUrl.includes(\"localhost\") ? `http://localhost:${this.Localhost}` : module.uiurl;\r\n let finalUrl = `${moduleUrl}/#/pages_ext/${this.Page}`;\r\n this.sanitizedSourceResource = this.sanitizer.bypassSecurityTrustResourceUrl(finalUrl);\r\n }\r\n}","<iframe *ngIf=\"!!sanitizedSourceResource\" id=\"externalFrame\" style=\"width: 100%; border: none;\" [style.height.px]=\"Height\" \r\n [src]=\"sanitizedSourceResource\">\r\n</iframe>","// Angular\r\nimport { Component, EventEmitter, Input, Output, ViewChild } from \"@angular/core\";\r\n\r\n// Configurazioni\r\nimport { AppState } from \"@esfaenza/core/services\";\r\n\r\n// Direttive, Componenti, Librerie\r\nimport { ModalDirective } from \"ngx-bootstrap/modal\";\r\nimport { Draggable, EsModalDirective } from \"@esfaenza/core/directives\";\r\n\r\n@Component({\r\n selector: \"es-modal\",\r\n templateUrl: \"./es-modal.component.html\",\r\n standalone: true,\r\n imports: [EsModalDirective, Draggable]\r\n})\r\n\r\nexport class EsModalComponent {\r\n @Input() Size: string = \"M\";\r\n @Input() IgnoreBackdrop: boolean = false;\r\n @Input() HasOverlap: boolean = false;\r\n @Output() onShow: EventEmitter<void> = new EventEmitter<void>();\r\n @Output() onHide: EventEmitter<void> = new EventEmitter<void>();\r\n\r\n constructor(public _state: AppState) { }\r\n\r\n // Reference alla Modal\r\n @ViewChild(\"modalRef\") private Modal: ModalDirective;\r\n public show() { this.Modal.show(); }\r\n public hide() { this.Modal.hide(); }\r\n}","<div esModal #modalRef=\"es-modal\"\r\n class=\"modal fade\"\r\n role=\"dialog\"\r\n aria-hidden=\"true\"\r\n (onShow)=\"onShow.emit()\"\r\n (onHide)=\"onHide.emit()\"\r\n [config]=\"{backdrop: true, ignoreBackdropClick: IgnoreBackdrop}\">\r\n <div class=\"modal-dialog\"\r\n [class.modal-sm]=\"Size == 'S'\"\r\n [class.modal-md]=\"Size == 'M'\"\r\n [class.modal-lg]=\"Size == 'L'\"\r\n [class.modal-xl]=\"Size == 'XL'\"\r\n [class.modal-xxl]=\"Size == 'XXL'\"\r\n [class.modal-feminist]=\"Size == 'HOLYSHIT'\"\r\n emaDraggable>\r\n <div class=\"modal-content\" [class.app-bg-lightgrey]=\"HasOverlap\"\r\n style=\"cursor: default;\">\r\n <ng-content></ng-content>\r\n </div>\r\n </div>\r\n</div>","// Angular\r\nimport { Component, EventEmitter, Output } from \"@angular/core\";\r\n\r\n// Configurazioni\r\nimport { AppState } from \"@esfaenza/core/services\";\r\n\r\n@Component({\r\n selector: \"es-modal-head\",\r\n templateUrl: \"./es-modal-head.component.html\",\r\n styleUrls: [\"./es-modal-head.component.scss\"],\r\n standalone: true\r\n})\r\n\r\nexport class EsModalHeadComponent {\r\n @Output() Close: EventEmitter<void> = new EventEmitter<void>();\r\n\r\n constructor(public _state: AppState) { }\r\n\r\n public CloseFunction() {\r\n this.Close.emit();\r\n }\r\n}","<div class=\"modal-header\">\r\n <div class=\"modal-title modal-head pull-left\">\r\n <ng-content></ng-content>\r\n </div>\r\n <div class=\"close modal-close-button\"\r\n (click)=\"CloseFunction();\" \r\n aria-label=\"Close\">\r\n <span aria-hidden=\"true\">×</span>\r\n </div>\r\n</div>","// Angular\r\nimport { Component, EventEmitter, Input, Output } from \"@angular/core\";\r\nimport { ClipboardService, MessageService } from \"@esfaenza/extensions\";\r\nimport { KeyValue } from \"@esfaenza/core/domain\";\r\nimport { NgFor, NgIf } from \"@angular/common\";\r\n\r\n@Component({\r\n selector: \"filters-topbar\",\r\n templateUrl: \"./filters-topbar.component.html\",\r\n styleUrls: [\"./filters-topbar.component.scss\"],\r\n standalone: true,\r\n imports: [NgIf, NgFor]\r\n})\r\nexport class FiltersHorizontalComponent {\r\n @Input() searchView: any = null;\r\n @Input() sources: { id: string, source: KeyValue[] }[] = [];\r\n @Input() DefaultFilters: string[] = [];\r\n @Output() onShowFilters: EventEmitter<void> = new EventEmitter<void>();\r\n @Output() onSendSearch: EventEmitter<void> = new EventEmitter<void>();\r\n\r\n public Filters: EstableFilter[] = [];\r\n\r\n public trackByFilter = (_: number, item: EstableFilter) => item.id + \"_\" + item.value;\r\n\r\n constructor(private cbs: ClipboardService, private msgs: MessageService) { }\r\n\r\n // ********************************* Public API *********************************\r\n\r\n public onUpdateFilters() {\r\n this.doUpdateFilters();\r\n }\r\n\r\n public onRemoveFilter(id: string) {\r\n this.doRemoveFilter(id);\r\n }\r\n\r\n public onClipboardCopy(item: EstableFilter) {\r\n return this.doClipboardCopy(item.value);\r\n }\r\n\r\n public onRemoveAllFilters() {\r\n this.doRemoveAllFilters();\r\n }\r\n\r\n // ********************************* Private API *********************************\r\n\r\n private doUpdateFilters() {\r\n let keys = Object.keys(this.searchView).filter(f => f.startsWith(\"filter\"));\r\n this.Filters = [];\r\n this.Filters = keys.map(m => {\r\n let value = this.sources.find(x => x.id == m)?.source.find(y => y.id == this.searchView[m])?.description ?? this.searchView[m];\r\n return new EstableFilter(m, this.searchView[m + \"_label\"], value, this.DefaultFilters.includes(m));\r\n }).filter(f => {\r\n return f.value;\r\n });\r\n }\r\n\r\n private doRemoveFilter(id: string, update: boolean = false) {\r\n if (this.DefaultFilters.includes(id)) return;\r\n\r\n this.searchView[id] = \"\";\r\n if(!update)\r\n this.doUpdateFilters();\r\n }\r\n\r\n private doClipboardCopy(value: string) {\r\n this.cbs.copyTextToClipboard(value);\r\n this.msgs.simpleInfo(`Testo copiato!`); // TODO: Toast\r\n return false;\r\n }\r\n\r\n private doRemoveAllFilters() {\r\n let keys = Object.keys(this.searchView).filter(f => f.startsWith(\"filter\"));\r\n keys.forEach(k => { \r\n this.doRemoveFilter(k, true);\r\n this.doUpdateFilters();\r\n });\r\n }\r\n\r\n // ************************** Private API, used by HTML **************************\r\n\r\n emitShowFilters() {\r\n this.onShowFilters.emit();\r\n }\r\n\r\n emitSendSearch() {\r\n this.onSendSearch.emit();\r\n }\r\n}\r\n\r\n// TODO: Spostare nella classe\r\nexport class EstableFilter {\r\n constructor(\r\n public id: string,\r\n public label: string,\r\n public value: string,\r\n public isdefault: boolean) {\r\n }\r\n}","<div class=\"es-table-filters app-margin-top-10 d-flex\">\r\n <div class=\"d-flex\">\r\n <div *ngIf=\"Filters.length > 0\" class=\"filters-floating-display\" (click)=\"onRemoveAllFilters();\">\r\n <span>Rimuovi filtri</span> <i class=\"far fa-broom-wide\" style=\"font-size: 12px;\"></i>\r\n </div>\r\n <div *ngFor=\"let f of Filters; trackBy: trackByFilter\" class=\"filters-floating-display\"\r\n [class.filters-floating-display-default]=\"f.isdefault\" (contextmenu)=\"onClipboardCopy(f);\"\r\n (click)=\"onRemoveFilter(f.id);\">\r\n <span>{{f.label}}: {{f.value}}</span> \r\n <i *ngIf=\"!f.isdefault\" class=\"far fa-close\"></i>\r\n </div>\r\n </div>\r\n <div class=\"d-flex\" style=\"margin-left: auto;\">\r\n <button class=\"filters-btn\" (click)=\"emitShowFilters()\" [disabled]=\"searchView.searchinprogress\">\r\n <i class=\"far fa-filter\"></i>\r\n </button>\r\n <button class=\"filters-btn app-margin-left-10\" (click)=\"emitSendSearch();\" [disabled]=\"searchView.searchinprogress\">\r\n <i *ngIf=\"!searchView.searchinprogress\" class=\"far fa-search\"></i>\r\n <i *ngIf=\"searchView.searchinprogress\" class=\"far fa-spinner fa-spin\"></i>\r\n </button>\r\n </div>\r\n</div>","// Angular\r\nimport { Component, EventEmitter, Input, Output } from \"@angular/core\";\r\nimport { UtilityService } from \"@esfaenza/extensions\";\r\nimport { animate, animation, style, transition, trigger, useAnimation } from \"@angular/animations\";\r\nimport { NgIf } from \"@angular/common\";\r\n\r\n// Animazione\r\nexport const SlideInFromRight = animation([\r\n style({ right: -400 }),\r\n animate('0.4s ease-out', style({ right: 0 }))\r\n]);\r\n\r\n@Component({\r\n selector: \"filters-sidebar\",\r\n templateUrl: \"./filters-sidebar.component.html\",\r\n styleUrls: [\"./filters-sidebar.component.scss\"],\r\n animations: [\r\n trigger(\"FiltersAnimation\", [\r\n transition(\":enter\", [useAnimation(SlideInFromRight)])\r\n ])\r\n ],\r\n standalone: true,\r\n imports: [NgIf]\r\n})\r\nexport class FiltersVerticalComponent {\r\n @Input() searchView: any;\r\n @Input() DefaultFilters: string[] = [];\r\n @Input() Title: string = \"Filtri\";\r\n @Input() Description: string = \"Impostare qui i filtri di interesse\";\r\n @Output() onSendSearch: EventEmitter<void> = new EventEmitter<void>();\r\n\r\n public BackupView: any;\r\n\r\n constructor(private utiExts: UtilityService) { }\r\n\r\n // ************************** Public API **************************\r\n\r\n public onShowFilters() {\r\n this.doShowFilters();\r\n }\r\n\r\n public onHideFilters(confirm: boolean) {\r\n this.doHideFilters(confirm);\r\n }\r\n\r\n // ************************** Private API **************************\r\n\r\n private doShowFilters() {\r\n this.BackupView = this.utiExts.deepClone(this.searchView);\r\n }\r\n\r\n private doHideFilters(confirm: boolean) {\r\n if (confirm) { this.onSendSearch.emit(); }\r\n else { this.searchView = this.utiExts.deepClone(this.BackupView); }\r\n this.BackupView = null;\r\n }\r\n}","<div *ngIf=\"!!BackupView\" class=\"filters-backdrop app-no-selection\">\r\n <div [@FiltersAnimation] class=\"filters-container\">\r\n <div class=\"filters-header\">\r\n <div class=\"filters-close\" (click)=\"onHideFilters(false)\"><i class=\"far fa-close\"></i></div>\r\n <div class=\"filters-header-title\">{{Title}}</div>\r\n <div class=\"filters-header-desc\">{{Description}}</div>\r\n </div>\r\n <form>\r\n <div class=\"filters-body\">\r\n <ng-content></ng-content>\r\n </div>\r\n <div class=\"filters-footer\">\r\n <button type=\"submit\" class=\"filters-button-main\" (click)=\"onHideFilters(true)\">Ricerca con i filtri applicati</button>\r\n </div>\r\n </form>\r\n </div>\r\n</div>","// Angular\r\nimport { NgIf } from \"@angular/common\";\r\nimport { Component, Input } from \"@angular/core\";\r\n\r\n@Component({\r\n selector: \"filters-sidebar-section\",\r\n templateUrl: \"./filters-sidebar-section.component.html\",\r\n styleUrls: [\"./filters-sidebar-section.component.scss\"],\r\n standalone: true,\r\n imports: [NgIf]\r\n})\r\nexport class FiltersVerticalSectionComponent {\r\n @Input() Title: string = \"Placeholder\";\r\n\r\n isCollapsed: boolean = false;\r\n\r\n constructor() { }\r\n\r\n public onCollapse() {\r\n this.isCollapsed = !this.isCollapsed;\r\n }\r\n}","<div class=\"filters-section\">\r\n <div class=\"filters-section-title\">\r\n <div class=\"app-bold\">{{Title}}</div>\r\n <div class=\"filters-section-title-caret\">\r\n <i class=\"far\" (click)=\"onCollapse()\" [class.fa-caret-down]=\"!isCollapsed\" [class.fa-caret-up]=\"isCollapsed\"></i>\r\n </div>\r\n </div>\r\n <div *ngIf=\"!isCollapsed\" class=\"app-margin-top-5\">\r\n <ng-content></ng-content>\r\n </div>\r\n</div>","// Angular\r\n\r\nexport class EsFiltersService {\r\n private SearchViews: { [id: string]: { view: any } }[] = [];\r\n\r\n constructor() { }\r\n\r\n setView(sv: any, name: string) {\r\n console.log(\"Assegno alla SearchView della service: \" + JSON.stringify(sv));\r\n if (this.SearchViews[name]) this.SearchViews[name].view = sv;\r\n else {\r\n this.SearchViews[name] = { view: sv };\r\n }\r\n }\r\n\r\n getView(name: string) {\r\n console.log(\"Ottengo valore della SearchView della service: \" + JSON.stringify(this.SearchViews[name].view));\r\n return this.SearchViews[name].view;\r\n }\r\n}","// Angular\r\nimport { Component, Input } from \"@angular/core\";\r\nimport { EsFiltersService } from \"../es-filters/es-filters.service\";\r\nimport { KeyValue } from \"@esfaenza/core/domain\";\r\nimport { FormsAndValidationsModule } from \"@esfaenza/forms-and-validations\";\r\nimport { FormsModule } from \"@angular/forms\";\r\nimport { NgIf } from \"@angular/common\";\r\n\r\n@Component({\r\n selector: \"filters-sidebar-item\",\r\n templateUrl: \"./filters-sidebar-item.component.html\",\r\n styleUrls: [\"./filters-sidebar-item.component.scss\"],\r\n standalone: true,\r\n imports: [FormsModule, FormsAndValidationsModule, NgIf]\r\n})\r\nexport class FiltersVerticalItemComponent {\r\n @Input() SearchView: any;\r\n @Input() Required: boolean = false;\r\n @Input() propName: string = \"\";\r\n @Input() type: \"input\" | \"select\" | \"multiselect\" | \"date\" | \"boolean\" = \"input\";\r\n @Input() source: KeyValue[] = [];\r\n\r\n get labelName(): string { return this.propName + \"_label\"; }\r\n\r\n constructor(private filtersService: EsFiltersService) { }\r\n\r\n ngOnInit() {\r\n //this.SearchView = this.filtersService.getView(this.ViewName);\r\n }\r\n}","<!--TODO: multiselect-->\r\n<ng-container *ngIf=\"type == 'input'\">\r\n <form-input [Validation]=\"false\" [Placeholder]=\"'...'\" [FloatingLabel]=\"false\" [LabelInputRatio]=\"'0 12'\"\r\n [(ngModel)]=\"SearchView[propName]\" [Label]=\"' ' + SearchView[labelName]\"\r\n [name]=\"propName\" [required]=\"Required\"></form-input>\r\n</ng-container>\r\n<ng-container *ngIf=\"type == 'select'\">\r\n <form-select [Validation]=\"false\" [Placeholder]=\"'...'\" [FloatingLabel]=\"false\" [LabelInputRatio]=\"'0 12'\"\r\n [(ngModel)]=\"SearchView[propName]\" [Label]=\"' ' + SearchView[labelName]\"\r\n [Source]=\"source\" [name]=\"propName\" [required]=\"Required\"></form-select>\r\n</ng-container>\r\n<ng-container *ngIf=\"type == 'date'\">\r\n <form-date [Validation]=\"false\" [FloatingLabel]=\"false\" [LabelInputRatio]=\"'0 12'\"\r\n [(ngModel)]=\"SearchView[propName]\" [Label]=\"' ' + SearchView[labelName]\"\r\n [name]=\"propName\" [required]=\"Required\"></form-date>\r\n</ng-container>\r\n<ng-container *ngIf=\"type == 'boolean'\">\r\n <form-checkbox [Validation]=\"false\" [FloatingLabel]=\"false\" [LabelInputRatio]=\"'0 12'\"\r\n [(ngModel)]=\"SearchView[propName]\" [Label]=\"' ' + SearchView[labelName]\"\r\n [name]=\"propName\" [required]=\"Required\"></form-checkbox>\r\n</ng-container>","// Angular\r\nimport { Component, EventEmitter, Input, Output, ViewChild } from \"@angular/core\";\r\nimport { EsFiltersService } from \"./es-filters.service\";\r\nimport { FiltersHorizontalComponent } from \"../filters-topbar/filters-topbar.component\";\r\nimport { FiltersVerticalComponent } from \"../filters-sidebar/filters-sidebar.component\";\r\nimport { KeyValue } from \"@esfaenza/core/domain\";\r\nimport { CommonModule } from \"@angular/common\";\r\n\r\n@Component({\r\n selector: \"es-filters\",\r\n templateUrl: \"./es-filters.component.html\",\r\n providers: [EsFiltersService],\r\n standalone: true,\r\n imports: [CommonModule, FiltersVerticalComponent, FiltersHorizontalComponent]\r\n})\r\nexport class EsFiltersComponent {\r\n @Input() SearchView: any;\r\n @Input() DefaultFilters: string[] = [];\r\n @Input() Title: string = \"Filtri\";\r\n @Input() Description: string = \"Impostare qui i filtri di interesse\";\r\n\r\n @Output() onSendSearch: EventEmitter<void> = new EventEmitter<void>();\r\n\r\n @ViewChild(FiltersHorizontalComponent) filters_h: FiltersHorizontalComponent;\r\n @ViewChild(FiltersVerticalComponent) filters_v: FiltersVerticalComponent;\r\n\r\n // TODO: Automatico\r\n @Input() Sources: { id: string, source: KeyValue[] }[] = [];\r\n\r\n constructor(private filtersService: EsFiltersService) { }\r\n\r\n ngOnInit() {\r\n //this.filtersService.setView(this.SearchView, \"search\");\r\n }\r\n\r\n public onUpdateFiltersTop() {\r\n this.filters_h.onUpdateFilters();\r\n }\r\n\r\n public onShowFilters() {\r\n this.filters_v.onShowFilters();\r\n }\r\n\r\n emitSendSearch() {\r\n this.onSendSearch.emit();\r\n }\r\n}","<filters-topbar [searchView]=\"SearchView\" (onSendSearch)=\"emitSendSearch();\" (onShowFilters)=\"onShowFilters();\" [DefaultFilters]=\"DefaultFilters\" [sources]=\"Sources\"></filters-topbar>\r\n<filters-sidebar [searchView]=\"SearchView\" (onSendSearch)=\"emitSendSearch();\" [DefaultFilters]=\"DefaultFilters\" [Title]=\"Title\" [Description]=\"Description\">\r\n <ng-content></ng-content>\r\n</filters-sidebar>","// Angular\r\nimport { NgModule } from \"@angular/core\";\r\nimport { MatSlideToggleModule } from \"@angular/material/slide-toggle\";\r\nimport { RouterModule } from \"@angular/router\";\r\nimport { CommonModule } from \"@angular/common\";\r\nimport { FormsModule } from \"@angular/forms\";\r\n\r\n// Es faenza\r\nimport { LocalizationModule } from \"@esfaenza/localizations\";\r\nimport { EsTableModule } from \"@esfaenza/es-table\";\r\nimport { FormsAndValidationsModule } from \"@esfaenza/forms-and-validations\";\r\n\r\n// Libs \r\nimport { ProgressbarModule } from \"ngx-bootstrap/progressbar\";\r\nimport { BsDropdownModule } from \"ngx-bootstrap/dropdown\";\r\nimport { ModalModule } from \"ngx-bootstrap/modal\";\r\n\r\n// Componenti\r\nimport { BackTop } from \"./page-structure/back-top/back-top.component\";\r\nimport { Breadcrumb } from \"./page-structure/breadcrumb/breadcrumb.component\";\r\nimport { PageNotFoundComponent } from \"./page-structure/error/404/pagenotfound.component\";\r\nimport { ServerErrorComponent } from \"./page-structure/error/500/servererror.component\";\r\nimport { AngularErrorComponent } from \"./page-structure/error/Angular/angularerror.component\";\r\nimport { PagesComponent } from \"./page-structure/page/pages.component\";\r\nimport { ExternalPagesComponent } from \"./page-structure/external-page/external_pages.component\";\r\nimport { JaceLoginComponent } from \"./page-structure/jace-login/jace-login.component\";\r\nimport { JaceModulesBoardComponent } from \"./page-structure/navbar/modules-board/jace-modules-board.component\";\r\nimport { Navbar } from \"./page-structure/navbar/navbar.component\";\r\nimport { JaceResourceComponent } from \"./page-structure/jace-resource/jace-resource.component\";\r\nimport { RedirecterComponent } from \"./page-structure/redirecter/redirecter.component\";\r\nimport { Sidebar } from \"./page-structure/sidebar/sidebar.component\";\r\nimport { EsModalComponent } from \"./es-modal/es-modal.component\";\r\nimport { EsModalHeadComponent } from \"./es-modal/es-modal-head/es-modal-head.component\";\r\nimport { FiltersHorizontalComponent } from \"./search/filters-topbar/filters-topbar.component\";\r\nimport { FiltersVerticalComponent } from \"./search/filters-sidebar/filters-sidebar.component\";\r\nimport { FiltersVerticalSectionComponent } from \"./search/filters-sidebar-section/filters-sidebar-section.component\";\r\nimport { FiltersVerticalItemComponent } from \"./search/filters-sidebar-item/filters-sidebar-item.component\";\r\nimport { EsFiltersComponent } from \"./search/es-filters/es-filters.component\";\r\n\r\n// Core\r\nimport { DirectivesModule } from \"@esfaenza/core/directives\";\r\n\r\nconst COMPONENTS = [\r\n BackTop,\r\n Breadcrumb,\r\n PageNotFoundComponent,\r\n ServerErrorComponent,\r\n AngularErrorComponent,\r\n PagesComponent,\r\n ExternalPagesComponent,\r\n JaceLoginComponent,\r\n JaceModulesBoardComponent,\r\n Navbar,\r\n RedirecterComponent,\r\n Sidebar,\r\n JaceResourceComponent,\r\n EsModalComponent,\r\n EsModalHeadComponent,\r\n FiltersHorizontalComponent,\r\n FiltersVerticalComponent,\r\n FiltersVerticalSectionComponent,\r\n FiltersVerticalItemComponent,\r\n EsFiltersComponent\r\n];\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule, \r\n RouterModule, \r\n FormsModule, \r\n DirectivesModule, \r\n LocalizationModule, \r\n ProgressbarModule, \r\n MatSlideToggleModule, \r\n BsDropdownModule, \r\n EsTableModule, \r\n ModalModule,\r\n FormsAndValidationsModule,\r\n ...COMPONENTS],\r\n exports: [...COMPONENTS]\r\n})\r\nexport class ComponentsModule { }","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1","i2","i3","i4","i6","i5","takeUntil","i1.EsFiltersService"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"esfaenza-core-components.mjs","sources":["../../../projects/core/components/src/page-structure/back-top/back-top.component.ts","../../../projects/core/components/src/page-structure/back-top/back-top.component.html","../../../projects/core/components/src/page-structure/breadcrumb/breadcrumb.component.ts","../../../projects/core/components/src/page-structure/breadcrumb/breadcrumb.component.html","../../../projects/core/components/src/page-structure/error/404/pagenotfound.component.ts","../../../projects/core/components/src/page-structure/error/404/pagenotfound.component.html","../../../projects/core/components/src/page-structure/error/500/servererror.component.ts","../../../projects/core/components/src/page-structure/error/500/servererror.component.html","../../../projects/core/components/src/page-structure/error/Angular/angularerror.component.ts","../../../projects/core/components/src/page-structure/error/Angular/angularerror.component.html","../../../projects/core/components/src/page-structure/sidebar/sidebar.component.ts","../../../projects/core/components/src/page-structure/sidebar/sidebar.component.html","../../../projects/core/components/src/page-structure/navbar/navbar.component.loc.ts","../../../projects/core/components/src/page-structure/base/reactive.component.ts","../../../projects/core/components/src/page-structure/navbar/modules-board/jace-modules-board.component.ts","../../../projects/core/components/src/page-structure/navbar/modules-board/jace-modules-board.component.html","../../../projects/core/components/src/page-structure/navbar/navbar.component.ts","../../../projects/core/components/src/page-structure/navbar/navbar.component.html","../../../projects/core/components/src/page-structure/page/pages.component.ts","../../../projects/core/components/src/page-structure/page/pages.component.html","../../../projects/core/components/src/page-structure/external-page/external_pages.component.ts","../../../projects/core/components/src/page-structure/external-page/external_pages.component.html","../../../projects/core/components/src/page-structure/jace-login/jace-login.component.ts","../../../projects/core/components/src/page-structure/jace-login/jace-login.component.html","../../../projects/core/components/src/page-structure/redirecter/redirecter.component.ts","../../../projects/core/components/src/page-structure/redirecter/redirecter.component.html","../../../projects/core/components/src/page-structure/base/base.component.ts","../../../projects/core/components/src/page-structure/jace-resource/jace-resource.component.ts","../../../projects/core/components/src/page-structure/jace-resource/jace-resource.component.html","../../../projects/core/components/src/page-structure/user-infos/user-infos.component.loc.ts","../../../projects/core/components/src/es-modal/es-modal.component.ts","../../../projects/core/components/src/es-modal/es-modal.component.html","../../../projects/core/components/src/es-modal/es-modal-head/es-modal-head.component.ts","../../../projects/core/components/src/es-modal/es-modal-head/es-modal-head.component.html","../../../projects/core/components/src/span/labeled-span/labeled-span.component.ts","../../../projects/core/components/src/span/labeled-span/labeled-span.component.html","../../../projects/core/components/src/operations/ops-menu/ops-menu.component.ts","../../../projects/core/components/src/operations/ops-menu/ops-menu.component.html","../../../projects/core/components/src/operations/ops-menu-category/ops-menu-category.component.ts","../../../projects/core/components/src/operations/ops-menu-category/ops-menu-category.component.html","../../../projects/core/components/src/operations/ops-menu-operation/ops-menu-operation.component.ts","../../../projects/core/components/src/operations/ops-menu-operation/ops-menu-operation.component.html","../../../projects/core/components/src/page-structure/user-infos/user-infos.component.ts","../../../projects/core/components/src/page-structure/user-infos/user-infos.component_tst.html","../../../projects/core/components/src/search/filters-topbar/filters-topbar.component.ts","../../../projects/core/components/src/search/filters-topbar/filters-topbar.component.html","../../../projects/core/components/src/search/filters-sidebar/filters-sidebar.component.ts","../../../projects/core/components/src/search/filters-sidebar/filters-sidebar.component.html","../../../projects/core/components/src/search/filters-sidebar-section/filters-sidebar-section.component.ts","../../../projects/core/components/src/search/filters-sidebar-section/filters-sidebar-section.component.html","../../../projects/core/components/src/search/es-filters/es-filters.service.ts","../../../projects/core/components/src/search/filters-sidebar-item/filters-sidebar-item.component.ts","../../../projects/core/components/src/search/filters-sidebar-item/filters-sidebar-item.component.html","../../../projects/core/components/src/search/es-filters/es-filters.component.ts","../../../projects/core/components/src/search/es-filters/es-filters.component.html","../../../projects/core/components/src/components.module.ts","../../../projects/core/components/src/search/base/base-search.ts","../../../projects/core/components/src/esfaenza-core-components.ts"],"sourcesContent":["// Angular\r\nimport { Component, ElementRef, HostListener, Input, ViewChild, ViewEncapsulation } from \"@angular/core\";\r\n\r\ndeclare var $;\r\n\r\n@Component({\r\n selector: \"back-top\",\r\n encapsulation: ViewEncapsulation.None,\r\n styleUrls: [\"./back-top.component.scss\"],\r\n templateUrl: \"./back-top.component.html\",\r\n standalone: true\r\n})\r\nexport class BackTop {\r\n @Input() position: number = 400;\r\n @Input() showSpeed: number = 500;\r\n @Input() moveSpeed: number = 1000;\r\n\r\n @ViewChild(\"backTop\", { static: false }) private _selector: ElementRef;\r\n\r\n ngAfterViewInit() {\r\n this._onWindowScroll();\r\n }\r\n\r\n @HostListener(\"click\")\r\n _onClick(): boolean {\r\n $(\"html, body\").animate({ scrollTop: 0 }, { duration: this.moveSpeed });\r\n return false;\r\n }\r\n\r\n @HostListener(\"window:scroll.out-zone\")\r\n _onWindowScroll(): void {\r\n let el = this._selector.nativeElement;\r\n window.scrollY > this.position ? $(el).fadeIn(this.showSpeed) : $(el).fadeOut(this.showSpeed);\r\n }\r\n}","<i #backTop class=\"fa fa-angle-up back-to-top\" title=\"Back to Top\"></i>","// Angular\r\nimport { NgFor, NgIf } from \"@angular/common\";\r\nimport { Component, ViewEncapsulation } from \"@angular/core\";\r\nimport { Title } from \"@angular/platform-browser\";\r\nimport { ActivatedRoute, Data, NavigationEnd, Router, RouterLink, UrlTree } from \"@angular/router\";\r\nimport { EnvOptions } from \"@esfaenza/core/domain\";\r\nimport { AppState } from \"@esfaenza/core/services\";\r\n\r\n// Configurazioni\r\nimport { combineLatest, of } from \"rxjs\";\r\nimport { filter, map, mergeMap } from \"rxjs/operators\";\r\n\r\ndeclare var myconfig: EnvOptions;\r\n\r\n@Component({\r\n selector: \"breadcrumb\",\r\n encapsulation: ViewEncapsulation.None,\r\n styleUrls: [\"./breadcrumb.component.scss\"],\r\n templateUrl: \"./breadcrumb.component.html\",\r\n standalone: true,\r\n imports: [NgIf, NgFor, RouterLink]\r\n})\r\nexport class Breadcrumb {\r\n public MainLink: BreadcrumbItem = { title: \"Dashboard\", routerLink: [\"/pages/dashboard\"] };\r\n public SubLinks: BreadcrumbItem[] = [];\r\n\r\n constructor(public _state: AppState, private router: Router, private _activatedRoute: ActivatedRoute, private _titleService: Title) {\r\n this.router.events.pipe(\r\n filter(event => event instanceof NavigationEnd),\r\n map((event: NavigationEnd) => { return { event: event, route: this._activatedRoute } }),\r\n map((routeWithEvent) => {\r\n while (routeWithEvent.route.firstChild)\r\n routeWithEvent.route = routeWithEvent.route.firstChild;\r\n return routeWithEvent;\r\n }),\r\n mergeMap(routeWithEvent =>\r\n combineLatest(\r\n of(routeWithEvent.event.url).pipe(map(url => this.router.parseUrl(url))),\r\n routeWithEvent.route.data)\r\n )\r\n ).subscribe((treePlusData: [UrlTree, Data]) => {\r\n let data = treePlusData[1];\r\n let tree = treePlusData[0];\r\n\r\n // true = SUB - dettaglio\r\n // false = MAIN - ricerca/dashboard\r\n let internalNavigation = data[\"InternalNavigation\"];\r\n let title = data[\"title\"];\r\n if (internalNavigation) { this.onSubNavigation(tree, title); }\r\n else { this.onMainNavigation(tree, title); }\r\n this._titleService.setTitle(myconfig.AppData.ModuleDescription + \" > \" + title);\r\n });\r\n }\r\n\r\n ngOnInit() { }\r\n\r\n onSubNavigation(tree: UrlTree, title: string) {\r\n let index = this.SubLinks.indexOf(this.SubLinks.find(f => f.title == title));\r\n let difference = this.SubLinks.length - (index + 1)\r\n if (index != -1 && (index + 1) != this.SubLinks.length) {\r\n for (let i = 0; i < difference; i++)\r\n this.SubLinks.pop();\r\n }\r\n if (index == -1 && this.MainLink.title != title)\r\n this.SubLinks.push({ title: title, routerLink: this.getRouterLink(tree) });\r\n }\r\n\r\n onMainNavigation(tree: UrlTree, title: string) {\r\n this.SubLinks = [];\r\n this.MainLink = { title: title, routerLink: this.getRouterLink(tree) };\r\n }\r\n\r\n private getRouterLink(tree: UrlTree) {\r\n let segs = tree?.root?.children?.[\"primary\"]?.segments ?? [];\r\n let route = \"/\" + segs.map(t => t.path).join('/');\r\n let params = segs[segs.length - 1]?.parameters;\r\n\r\n return [route, params];\r\n }\r\n}\r\n\r\nexport class BreadcrumbItem {\r\n title: string;\r\n routerLink: any[];\r\n}","<ol class=\"breadcrumb app-no-selection\">\r\n <li class=\"breadcrumb-item text-uppercase breadcrumb-link\" [routerLink]=\"['/pages/dashboard']\">Dashboard</li>\r\n <li *ngIf=\"MainLink?.title != 'Dashboard'\" [routerLink]=\"MainLink.routerLink\" class=\"breadcrumb-item text-uppercase breadcrumb-link\">{{MainLink.title}}</li>\r\n <li *ngFor=\"let link of SubLinks\" class=\"breadcrumb-item text-uppercase breadcrumb-link\" [routerLink]=\"link.routerLink\">{{link.title}}</li>\r\n</ol>","// Angular\r\nimport { Component, ViewEncapsulation } from \"@angular/core\";\r\nimport { Location } from \"@angular/common\";\r\nimport { Router } from \"@angular/router\";\r\n\r\nimport { AppState } from \"@esfaenza/core/services\";\r\n\r\n@Component({\r\n selector: \"pagenotfound\",\r\n encapsulation: ViewEncapsulation.None,\r\n templateUrl: \"./pagenotfound.component.html\",\r\n standalone: true\r\n})\r\nexport class PageNotFoundComponent {\r\n router: Router;\r\n\r\n constructor(router: Router, private _location: Location, private as: AppState) {\r\n this.router = router;\r\n }\r\n\r\n goPreviousPage() {\r\n this._location.back();\r\n }\r\n\r\n goDashboard() {\r\n let url = `/pages/dashboard`;\r\n if (this.as.Embedded)\r\n this.as.MainWindow.postMessage({ type: \"navigate\", url }, \"*\");\r\n else\r\n this.router.navigate([url]);\r\n }\r\n}","<div class=\"container\">\r\n <div class=\"row\">\r\n <div class=\"col-xl-6 col-md-6 col-10 offset-xl-3 offset-md-3 offset-xs-1 p-t-10\">\r\n <div class=\"card\">\r\n <div class=\"card-body text-center\">\r\n <h1 class=\"display-1\">404</h1>\r\n <h6 class=\"card-title\">La risorsa richiesta non è stata trovata ma in futuro potrebbe essere disponibile.</h6>\r\n <div>\r\n <button type=\"button\" class=\"btn btn-secondary pull-right\" (click)=\"goDashboard()\">Vai alla Dashboard</button>\r\n <button type=\"button\" class=\"btn btn-secondary pull-left\" (click)=\"goPreviousPage()\">Torna alla pagina precedente</button>\r\n <div class=\"clearfix\"></div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>","// Angular\r\nimport { Component, ViewEncapsulation } from \"@angular/core\";\r\nimport { ActivatedRoute, Router } from \"@angular/router\";\r\nimport { NgIf } from \"@angular/common\";\r\n\r\n// Configurazioni\r\nimport { AppState } from \"@esfaenza/core/services\";\r\n\r\n\r\n@Component({\r\n selector: \"servererror\",\r\n encapsulation: ViewEncapsulation.None,\r\n templateUrl: \"./servererror.component.html\",\r\n standalone: true,\r\n imports: [NgIf]\r\n})\r\nexport class ServerErrorComponent {\r\n statusCode: string;\r\n statusText: string;\r\n previousUrl: string;\r\n\r\n constructor(private router: Router, private route: ActivatedRoute, private as: AppState) {\r\n this.statusCode = this.route.snapshot.params[\"statusCode\"];\r\n this.statusText = this.b64DecodeUnicode(this.route.snapshot.params[\"statusText\"]);\r\n this.previousUrl = this.route.snapshot.params[\"fromUrl\"];\r\n\r\n //Dopo 1 secondo considero la sfilza di errori finita\r\n setTimeout(() => { this.as.handlingError = false; }, 1000);\r\n }\r\n\r\n b64DecodeUnicode(str) {\r\n // Going backwards: from bytestream, to percent-encoding, to original string.\r\n return decodeURIComponent(atob(str).split(\"\").map(c => \"%\" + (\"00\" + c.charCodeAt(0).toString(16)).slice(-2)).join(\"\"));\r\n }\r\n\r\n goPreviousPage() {\r\n this.router.navigateByUrl(this.previousUrl);\r\n }\r\n\r\n goDashboard() {\r\n let url = `/pages/dashboard`;\r\n if (this.as.Embedded)\r\n this.as.MainWindow.postMessage({ type: \"navigate\", url }, \"*\");\r\n else\r\n this.router.navigate([url]);\r\n }\r\n}","<div class=\"container\">\r\n <div class=\"row\">\r\n <div class=\"col-xl-6 col-md-6 col-10 offset-xl-3 offset-md-3 offset-xs-1 p-t-10\">\r\n <div class=\"card\">\r\n <div class=\"card-body text-center\">\r\n <h1 class=\"display-1\" *ngIf=\"!statusCode\"> </h1>\r\n <h1 class=\"display-1\" *ngIf=\"statusCode\">{{statusCode}}</h1>\r\n <h6 class=\"card-title\" *ngIf=\"!statusText\"> </h6>\r\n <h6 class=\"card-title\" style=\"word-wrap:break-word; max-height: 500px; overflow: auto\" *ngIf=\"statusText\">{{statusText}}</h6>\r\n <div>\r\n <button type=\"button\" class=\"btn btn-secondary pull-right\" (click)=\"goDashboard()\">Vai alla Dashboard</button>\r\n <button type=\"button\" class=\"btn btn-secondary pull-left\" (click)=\"goPreviousPage()\">Torna alla pagina precedente</button>\r\n <div class=\"clearfix\"></div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>","// Angular\r\nimport { Component, ViewEncapsulation } from \"@angular/core\";\r\nimport { ActivatedRoute, Router } from \"@angular/router\";\r\nimport { NgIf } from \"@angular/common\";\r\n\r\n// Configurazioni\r\nimport { HTTPService } from \"@esfaenza/httpservice\";\r\nimport { AppState, TokenService } from \"@esfaenza/core/services\";\r\n\r\n@Component({\r\n selector: \"angularerror\",\r\n encapsulation: ViewEncapsulation.None,\r\n templateUrl: \"./angularerror.component.html\",\r\n standalone: true,\r\n imports: [NgIf]\r\n})\r\nexport class AngularErrorComponent {\r\n\r\n errorMessage: string;\r\n errorFrom: string;\r\n errorLastCalls: string;\r\n previousUrl: string;\r\n identityInfos: string;\r\n\r\n constructor(private router: Router, private route: ActivatedRoute, private http: HTTPService, private bts: TokenService, private as: AppState) {\r\n\r\n let identity = this.bts.getJaceIdentity();\r\n this.previousUrl = this.route.snapshot.params[\"fromUrl\"];\r\n let calls = (this.http.LastThreeCompletedCalls[0] || \"<empty>\") + \", \" + (this.http.LastThreeCompletedCalls[1] || \"<empty>\") + \", \" + (this.http.LastThreeCompletedCalls[2] || \"<empty>\");\r\n this.errorFrom = \"From page: \" + (this.previousUrl || \"<missing>\");\r\n this.errorLastCalls = \"Last three calls: \" + calls;\r\n this.identityInfos = \"Logged user: \" + (identity?.Idtenant || '??') + \"-\" + (identity?.DsUser || '???????');\r\n this.errorMessage = this.b64DecodeUnicode(this.route.snapshot.params[\"errorMessage\"]);\r\n\r\n console.error(this.errorMessage);\r\n }\r\n\r\n ngOnInit() {\r\n var item = localStorage.getItem(\"Reload\");\r\n if (item) {\r\n localStorage.removeItem(\"Reload\");\r\n this.router.navigateByUrl(item);\r\n }\r\n }\r\n\r\n b64DecodeUnicode(str) {\r\n // Bytestream -> Encoding % -> Stringa originale\r\n return decodeURIComponent(atob(str).split(\"\").map(c => \"%\" + (\"00\" + c.charCodeAt(0).toString(16)).slice(-2)).join(\"\"));\r\n }\r\n\r\n goPreviousPage() {\r\n // Reload per forzare il ricaricamento del javascript (in modo che lo stato dell'applicazione sia a posto)\r\n // all'onInit la pagina prenderà la root a cui navigare dal localStorage\r\n localStorage.setItem(\"Reload\", this.previousUrl);\r\n location.reload();\r\n }\r\n\r\n goDashboard() {\r\n let url = `/pages/dashboard`;\r\n if (this.as.Embedded)\r\n this.as.MainWindow.postMessage({ type: \"navigate\", url }, \"*\");\r\n else\r\n this.router.navigate([url]);\r\n }\r\n}","<div class=\"container\">\r\n <div class=\"row\">\r\n <div class=\"col-xl-8 col-md-10 col-10 offset-xl-2 offset-xs-1 p-t-10\">\r\n <div class=\"card\">\r\n <div class=\"card-body text-center\">\r\n <h1 class=\"display-4\">Qualcosa è andato storto.</h1>\r\n <h6>\r\n <small>\r\n Si è verificato un errore interno all'applicazione. Questo non dovrebbe accadere. Prova a ricaricare la pagina precedente e rieffettuare le stesse operazioni, se il problema persiste contatta il service desk allegando una breve descrizione delle operazioni che stavi eseguendo e questo messaggio d'errore:\r\n </small>\r\n </h6>\r\n <h6 class=\"card-title text-danger app-margin-top-10 text-left\" style=\"word-wrap:break-word\" *ngIf=\"identityInfos\"><em>{{identityInfos}}</em></h6>\r\n <h6 class=\"card-title text-danger app-margin-top-10 text-left\" style=\"word-wrap:break-word\" *ngIf=\"errorFrom\"><em>{{errorFrom}}</em></h6>\r\n <h6 class=\"card-title text-danger app-margin-top-10 text-left\" style=\"word-wrap:break-word\" *ngIf=\"errorLastCalls\"><em>{{errorLastCalls}}</em></h6>\r\n <h6 class=\"card-title text-danger app-margin-top-10 text-left\" style=\"word-wrap:break-word\" *ngIf=\"errorMessage\"><em>{{errorMessage}}</em></h6>\r\n <div>\r\n <button type=\"button\" class=\"btn btn-secondary pull-right\" (click)=\"goDashboard()\">Vai alla Dashboard</button>\r\n <button type=\"button\" class=\"btn btn-secondary pull-right app-margin-right-10\" (click)=\"goPreviousPage()\">Torna alla pagina precedente</button>\r\n <div class=\"clearfix\"></div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>","// Angular\r\nimport { ChangeDetectionStrategy, ChangeDetectorRef, Component, ElementRef, HostListener, Inject, NgZone, Optional, Type, ViewChild, ViewEncapsulation } from \"@angular/core\";\r\nimport { NavigationEnd, Router, RouterLinkActive, RouterLink } from \"@angular/router\";\r\nimport { NgClass, NgFor, NgTemplateOutlet, NgIf } from \"@angular/common\";\r\n\r\n// Configurazioni\r\nimport { LocalizationService, LocalizationModule } from \"@esfaenza/localizations\";\r\n\r\n// EsFaenza\r\nimport { ApplicationMenu, EnvOptions, MENU, MENU_LOCALIZATION, SearchResult, SearchResultContainer } from \"@esfaenza/core/domain\";\r\nimport { AppState, GlobalSearchService, MenuFilteringService, TokenService, UserPreferencesService } from \"@esfaenza/core/services\";\r\nimport { MessageService, UtilityService } from \"@esfaenza/extensions\";\r\nimport { AccessControlService } from \"@esfaenza/access-control\";\r\nimport { SlimScroll } from \"@esfaenza/core/directives\";\r\n\r\n// Librerie\r\nimport { firstValueFrom } from \"rxjs\";\r\nimport { HTTPService } from \"@esfaenza/httpservice\";\r\nimport { HttpParams } from \"@angular/common/http\";\r\nimport { SafeResourceUrl } from \"@angular/platform-browser\";\r\nimport { EsTableColumnsDefinition, EsTableModule } from \"@esfaenza/es-table\";\r\nimport { FormsModule } from \"@angular/forms\";\r\n\r\n// Chiamate ai Repository\r\nconst GET_Users_GetProfilePicture: string = \"/api/Users/GetProfilePicture\";\r\n\r\ndeclare var myconfig: EnvOptions;\r\ndeclare var jQuery;\r\n\r\n@Component({\r\n selector: \"sidebar\",\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n styleUrls: [\"./sidebar.component.scss\"],\r\n templateUrl: \"./sidebar.component.html\",\r\n standalone: true,\r\n imports: [NgClass, SlimScroll, NgFor, NgTemplateOutlet, NgIf, RouterLinkActive, RouterLink, LocalizationModule, EsTableModule, FormsModule]\r\n})\r\nexport class Sidebar {\r\n public menuItems: Array<any>;\r\n public menuHeight: number;\r\n public isMenuCollapsed: boolean = false;\r\n public isMenuShouldCollapsed: boolean = false;\r\n\r\n public showHoverElem: boolean;\r\n public hoverElemHeight: number;\r\n public hoverElemTop: number;\r\n\r\n public applicationVersion = myconfig.AppData.ComponentVersion;\r\n public applicationName = myconfig.AppData.ModuleDescription;\r\n public user = \"\";\r\n public tenant = \"\";\r\n\r\n public SearchModel = \"\";\r\n\r\n @ViewChild(\"sidebar\", { static: true }) sidebar: ElementRef;\r\n\r\n constructor(\r\n public lc: LocalizationService, @Optional() @Inject(MENU_LOCALIZATION) lcMenu: Type<LocalizationService>, private cdr: ChangeDetectorRef, private _elementRef: ElementRef,\r\n private _router: Router, public _state: AppState, private zone: NgZone, private utiExts: UtilityService, private aac: AccessControlService, @Inject(MENU) private menuItemsRaw: ApplicationMenu[],\r\n private menuFilteringService: MenuFilteringService, public sr: TokenService, public globalSearchService: GlobalSearchService, public profile: UserPreferencesService) {\r\n\r\n this.lc = this.lc.generateFromType(lcMenu);\r\n\r\n this._state.subscribe(\"menu.isCollapsed\", (isCollapsed) => {\r\n this.isMenuCollapsed = isCollapsed;\r\n this.cdr.markForCheck();\r\n });\r\n\r\n this._state.subscribe(\"application.DeployAvailable\", (available: boolean) => {\r\n if (available)\r\n this.ngOnInit();\r\n });\r\n\r\n this._router.events.subscribe(event => {\r\n if (event instanceof NavigationEnd) {\r\n let width = (window.innerWidth > 0) ? window.innerWidth : screen.width;\r\n if (width <= 768) \r\n this._state.notifyDataChanged(\"menu.isCollapsed\", true);\r\n window.scrollTo(0, 0);\r\n }\r\n });\r\n\r\n this.getUserProfileData();\r\n }\r\n\r\n public async ngOnInit() {\r\n let tmpMenuItems = this.getMenuItems();\r\n this.menuItems = await firstValueFrom(this.menuFilteringService.filter(tmpMenuItems));\r\n\r\n if (this._shouldMenuCollapse())\r\n this.menuCollapse();\r\n\r\n this.updateSidebarHeight();\r\n this._state.setSidebarWidth(this.sidebar.nativeElement.offsetWidth);\r\n this.cdr.markForCheck();\r\n }\r\n\r\n private getMenuItems(): ApplicationMenu[] {\r\n var items: ApplicationMenu[] = [];\r\n\r\n for (let i = 0; i < this.menuItemsRaw.length; i++) {\r\n let t = this.menuItemsRaw[i];\r\n (<any>t).level = 1;\r\n if (!t.ac || this.aac.has(t.ac)) {\r\n if (!t.subMenu || t.subMenu.length == 0) {\r\n t.icon = t.icon ?? \"far fa-circle-small\";\r\n items.push(t);\r\n }\r\n else {\r\n var toPush = this.checkSubMenuOverClaims(t, 1);\r\n toPush.icon = toPush.icon ?? \"far fa-circle-small\";\r\n items.push(toPush);\r\n }\r\n }\r\n }\r\n\r\n return items;\r\n }\r\n\r\n private checkSubMenuOverClaims(menuItem: ApplicationMenu, level: number): ApplicationMenu {\r\n var item: ApplicationMenu = this.utiExts.deepClone(menuItem);\r\n item.subMenu = [];\r\n\r\n for (let i = 0; i < menuItem.subMenu.length; i++) {\r\n let t = menuItem.subMenu[i];\r\n (<any>t).level = level+1;\r\n if (!t.ac || this.aac.has(t.ac)) {\r\n if (!t.subMenu || t.subMenu.length == 0) {\r\n t.icon = t.icon ?? \"far fa-circle-small\";\r\n item.subMenu.push(t);\r\n }\r\n else {\r\n var toPush = this.checkSubMenuOverClaims(t, level+1);\r\n toPush.icon = toPush.icon ?? \"far fa-circle-small\";\r\n item.subMenu.push(toPush);\r\n }\r\n }\r\n // Calcolo qui per non doverlo calcolare lato HTML\r\n (<any>t).padding_left = level > 2 ? (65 + ((level - 3) * 15) + 'px !important') : null;\r\n }\r\n\r\n return item;\r\n }\r\n \r\n //#region JQuery\r\n @HostListener(\"window:resize.out-zone\")\r\n public onWindowResize(): void {\r\n var isMenuShouldCollapsed = this._shouldMenuCollapse();\r\n\r\n if (this.isMenuShouldCollapsed !== isMenuShouldCollapsed) {\r\n this.menuCollapseStateChange(isMenuShouldCollapsed);\r\n }\r\n this.isMenuShouldCollapsed = isMenuShouldCollapsed;\r\n this.updateSidebarHeight();\r\n }\r\n\r\n private _shouldMenuCollapse(): boolean {\r\n return window.innerWidth <= 768;\r\n }\r\n\r\n public menuCollapse(): void {\r\n this.menuCollapseStateChange(true);\r\n this._state.setSidebarWidth(this.sidebar.nativeElement.offsetWidth);\r\n }\r\n\r\n public menuCollapseStateChange(isCollapsed: boolean): void {\r\n this.isMenuCollapsed = isCollapsed;\r\n this._state.notifyDataChanged(\"menu.isCollapsed\", this.isMenuCollapsed);\r\n }\r\n\r\n public menuExpand(): void {\r\n this.menuCollapseStateChange(false);\r\n this._state.setSidebarWidth(this.sidebar.nativeElement.offsetWidth);\r\n }\r\n\r\n public hoverItem(jQueryevent): void {\r\n if(!this.isMenuCollapsed) {\r\n this.showHoverElem = true;\r\n this.hoverElemHeight = jQueryevent.currentTarget.clientHeight;\r\n this.hoverElemTop = jQueryevent.currentTarget.getBoundingClientRect().top;\r\n \r\n jQuery(\".sidebar-hover-elem\").css(\"top\", this.hoverElemTop + \"px\");\r\n jQuery(\".sidebar-hover-elem\").css(\"height\", this.hoverElemHeight + \"px\");\r\n jQuery(\".sidebar-hover-elem\").addClass(\"show-hover-elem\");\r\n }\r\n }\r\n\r\n public sendAwayHoverElement() {\r\n this.hoverElemTop = -200;\r\n\r\n jQuery(\".sidebar-hover-elem\").css(\"top\", this.hoverElemTop + \"px\");\r\n }\r\n\r\n public updateSidebarHeight(): void {\r\n let marginTop = 60 + 40;\r\n let footerHeight = 150;\r\n\r\n this.menuHeight = this._elementRef.nativeElement.children[0].clientHeight - marginTop - footerHeight;\r\n }\r\n\r\n //Nonostante questa funzione sia collegata con (click.out-zone) per qualche motivo angular le esegue comunque nella sua zone\r\n //generando un po' di irresponsività iniziale... succede solo col click... boh\r\n public collapseMenu(jQueryevent, item): boolean {\r\n if (this.isMenuCollapsed)\r\n this.menuExpand();\r\n\r\n if (!item.level)\r\n console.warn(\"Livello non presente in un oggetto del menu!\");\r\n\r\n //N.B: Tutte le funzioni di JQuery le esguo fuori da Angular dato che c'� una buona probabilit� che siano eventi asincroni\r\n this.zone.runOutsideAngular(() => { this.outsideAngularClickHandler(jQueryevent, item); });\r\n\r\n return false;\r\n }\r\n\r\n private outsideAngularClickHandler(jQueryevent, item) {\r\n let levelClass = item.level ? \"level-\" + (item.level) : \"\";\r\n let levelClassPlusOne = item.level ? \"level-\" + (item.level + 1) : \"\";\r\n let slidePeriod = 400;\r\n\r\n var link = jQuery(jQueryevent.currentTarget);\r\n\r\n //Se l'elemento non è espanso\r\n if (!link.closest(\".sidebar-item-expanded\" + \"_\" + levelClass).length) {\r\n //Tiro su tutti gli elementi dello stesso livello espansi e li chiudo\r\n\r\n //Se ho compresso un menu vado a vedere se c'è anche un altro menu di livello pi� basso da richiudere\r\n jQuery(\"ul.nav-sidebar li\" + \".\" + (levelClassPlusOne)).each(function () {\r\n let closestLi = jQuery(this).closest(\"li\");\r\n if (closestLi.children(\"ul\").length && closestLi.hasClass(\"sidebar-item-expanded\")) {\r\n closestLi.children(\"ul\").slideUp(slidePeriod);\r\n //Le uso sempre entrambe insieme. La prima è la classe per la logica, la seconda per le animazioni\r\n closestLi.removeClass(\"sidebar-item-expanded\" + \"_\" + (levelClassPlusOne));\r\n closestLi.removeClass(\"sidebar-item-expanded\");\r\n }\r\n });\r\n\r\n //Dopodich� richiudo tutti quelli del mio livello attuale\r\n jQuery(\"ul.nav-sidebar li\" + \".\" + levelClass).each(function () {\r\n let closestLi = jQuery(this).closest(\"li\");\r\n if (closestLi.children(\"ul\").length && closestLi.hasClass(\"sidebar-item-expanded\")) {\r\n closestLi.children(\"ul\").slideUp(slidePeriod);\r\n //Le uso sempre entrambe insieme. La prima è la classe per la logica, la seconda per le animazioni\r\n closestLi.removeClass(\"sidebar-item-expanded\" + \"_\" + levelClass);\r\n closestLi.removeClass(\"sidebar-item-expanded\");\r\n }\r\n });\r\n\r\n //Dopodich� espando quello attuale\r\n link.next().slideDown(slidePeriod);\r\n\r\n if (item.subMenu) {\r\n //Le uso sempre entrambe insieme. La prima è la classe per la logica, la seconda per le animazioni\r\n link.closest(\"li\").addClass(\"sidebar-item-expanded\" + \"_\" + levelClass);\r\n link.closest(\"li\").addClass(\"sidebar-item-expanded\");\r\n }\r\n } else {\r\n //Altrimenti, se l'elemento è già espanso lo chiudo\r\n if (item.subMenu) {\r\n //Le uso sempre entrambe insieme. La prima è la classe per la logica, la seconda per le animazioni\r\n link.closest(\"li\").removeClass(\"sidebar-item-expanded\" + \"_\" + levelClass);\r\n link.closest(\"li\").removeClass(\"sidebar-item-expanded\");\r\n }\r\n\r\n link.next().slideUp(slidePeriod);\r\n }\r\n }\r\n //#endregion\r\n\r\n public onChangeTenant() {\r\n window.location.href = `${myconfig.AuthUrl}/login/tenant?client=${myconfig.Client}`;\r\n }\r\n\r\n public onLogout() {\r\n window.location.href = `${myconfig.AuthUrl}/logout?client=${myconfig.Client}`;\r\n }\r\n\r\n private getUserProfileData() {\r\n var identity = this.sr.getJaceIdentity();\r\n\r\n if (identity) {\r\n this.user = identity.FullName;\r\n this.tenant = identity.TenantName;\r\n this.profile.doReloadProfilePicture();\r\n }\r\n }\r\n\r\n // ***************************************** Gestione Ricerca Globale *****************************************\r\n\r\n public SelectedResult: SearchResult = null;\r\n public ShowSingleTable: boolean = false;\r\n\r\n searchTerm: string;\r\n searchingTerm: boolean = false;\r\n searchResult: SearchResultContainer;\r\n\r\n onSearchRequest() {\r\n console.log(\"sent!\")\r\n this.searchingTerm = true;\r\n this.searchResult = null;\r\n\r\n if (!this.globalSearchService.Enabled)\r\n return;\r\n\r\n this.globalSearchService.search(this.searchTerm).subscribe(t => {\r\n this.searchingTerm = false;\r\n this.searchResult = t;\r\n\r\n this.searchResult.results.forEach(t => {\r\n t.est_cols = t.columns.map(c => {\r\n let colLink = this.globalSearchService.generateColumnLink(c);\r\n return new EsTableColumnsDefinition(c.description, c.id, colLink?.routePath, colLink?.routeProperties);\r\n });\r\n });\r\n });\r\n }\r\n\r\n onSearchModelChanged() {\r\n console.log(\"changed!\")\r\n if (!this.searchingTerm)\r\n this.closeSearch();\r\n }\r\n\r\n closeSearch() {\r\n this.searchingTerm = false;\r\n this.searchResult = null;\r\n }\r\n\r\n FilterSearchResults(item: SearchResult = null) {\r\n this.SelectedResult = null;\r\n this.ShowSingleTable = true;\r\n\r\n requestAnimationFrame(() => {\r\n if (item)\r\n this.SelectedResult = this.searchResult?.results?.find(f => f.description == item.description);\r\n else\r\n this.ShowSingleTable = false;\r\n });\r\n }\r\n}\r\n\r\n// TODO: Spostare nel modulo preferenze account\r\nexport class ProfilePicture{\r\n image: string;\r\n}","<div #sidebar class=\"app-sidebar\" [class.menu-collapsed]=\"isMenuCollapsed\" (mouseleave.out-zone)=\"sendAwayHoverElement();\">\r\n <!--Jace Logo-->\r\n <div class=\"app-logo-container\">\r\n <div class=\"app-pointer\" [routerLink]=\"['/pages/dashboard']\" style=\"margin-bottom: 10px; overflow: hidden\">\r\n <!-- <div *ngIf=\"!isMenuCollapsed\" class=\"app-logo-img app-logo-placeholder d-flex\">\r\n <div class=\"app-margin-left-10\">\r\n <i style=\"color: #00aeef;\" class=\"fas fa-chevron-left\"></i> \r\n <i style=\"color: #01C38D;\" class=\"fas fa-chevron-right\"></i> \r\n </div>\r\n <div class=\"app-margin-left-10\">{{applicationName}}</div>\r\n </div> -->\r\n <img *ngIf=\"!isMenuCollapsed\" class=\"app-logo-img\" src=\"assets/img/logo/logo.png\" alt=\"\">\r\n <img *ngIf=\"isMenuCollapsed\" class=\"app-logo-img-sm\" src=\"assets/img/logo/logo_sm.png\" alt=\"\">\r\n </div>\r\n </div>\r\n <div *ngIf=\"!isMenuCollapsed\" class=\"app-sidebar-search\">\r\n <form novalidate role=\"search\" class=\"app-search\" (ngSubmit)=\"onSearchRequest()\">\r\n <input type=\"text\" placeholder=\"Ricerca...\" [(ngModel)]=\"searchTerm\" (ngModelChange)=\"onSearchModelChanged()\" name=\"search\" class=\"form-control\" autocomplete=\"off\">\r\n <a><i class=\"far fa-magnifying-glass\"></i></a>\r\n </form>\r\n </div>\r\n <!--Barra laterale con tutte le voci di Menu-->\r\n <ul class=\"nav nav-sidebar flex-column flex-nowrap\" style=\"position: relative; zoom: 1\" slim-scroll [slimScrollOptions]=\"{height: menuHeight}\">\r\n <li *ngFor=\"let item of menuItems; let last = last;\" \r\n class=\"sidebar-list-item level-{{item.level}}\" \r\n [style.margin-bottom]=\"last ? '42px' : '0px'\" \r\n [class.has-sub-menu]=\"item.subMenu\"\r\n [class.sidebar-item-expanded]=\"item.expanded\" \r\n [class.sidebar-item-wip]=\"item.wip\">\r\n <ng-container *ngTemplateOutlet=\"menuItem; context : { $implicit: item }\"></ng-container>\r\n </li>\r\n </ul>\r\n <!--Selettore Barra dei Menu-->\r\n <div class=\"sidebar-hover-elem\"></div>\r\n <!--Footer-->\r\n <div *ngIf=\"!isMenuCollapsed\" class=\"app-sidebar-footer\">\r\n <!--Minuscolo fade tra sidebar e inizio footer-->\r\n <div class=\"app-sidebar-footer-fade\"></div>\r\n <div class=\"app-padding-15\">\r\n <!--Informazioni utente collegato-->\r\n <div class=\"app-sidebar-footer-user-container\">\r\n <!--Mentre sto ancora caricando la ProfilePic mi assicuro di mostrare un placeholder-->\r\n <div *ngIf=\"!profile.ProfilePicture\" class=\"app-sidebar-footer-user-img-placeholder\">\r\n <i class=\"far fa-2x fa-spinner fa-spin-pulse\" style=\"color: black; margin-top: 5px;\"></i>\r\n </div>\r\n <!--Una volta caricata la ProfilePic nascondo il placeholder e la mostro-->\r\n <ng-container *ngIf=\"profile.ProfilePicture\">\r\n <img [src]=\"profile.ProfilePicture\" alt=\"\" class=\"app-sidebar-footer-user-img app-pointer\" [routerLink]=\"['/pages/profile']\">\r\n <div class=\"app-sidebar-footer-user-status\"></div>\r\n </ng-container>\r\n <!--Username animato quando supera i 15 caratteri-->\r\n <div class=\"app-sidebar-footer-user-name-container\">\r\n <div class=\"username-text\" [class.username-text-animator]=\"user?.length > 15\">{{user}}</div>\r\n <div class=\"tenantname-text\">{{tenant}}</div>\r\n </div>\r\n </div>\r\n <!--Operazioni rapide (Logout, Cambia tenant, Guida, Supporto,...)-->\r\n <div class=\"app-sidebar-footer-quick-ops\">\r\n <div (click)=\"onLogout();\" class=\"app-sidebar-footer-op app-no-selection\"><i class=\"far fa-right-from-bracket\"></i> Logout</div>\r\n <div (click)=\"onChangeTenant();\" class=\"app-sidebar-footer-op app-no-selection\"><i class=\"far fa-right-left\"></i> Cambia Tenant</div>\r\n </div>\r\n <!--Versione corrente applicazione-->\r\n <div class=\"app-sidebar-footer-ver\">\r\n v{{applicationVersion}}\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n<ng-template #menuItem let-item>\r\n <a [attr.style.padding_left]=\"item.padding_left\" *ngIf=\"(!item.routerLink && !item.subMenu) || item.wip\" [href]=\"item.link ? item.link : '#'\" (click)=\"item.wip && $event.preventDefault()\" target=\"_blank\" class=\"sidebar-list-link {{item.cssClass || ''}}\" (mouseenter.out-zone)=\"hoverItem($event)\">\r\n <i *ngIf=\"item.icon\" class=\"{{ item.icon }}\"></i><span>{{ item.title | localize : lc }}</span>\r\n </a>\r\n\r\n <a [attr.style.padding_left]=\"item.padding_left\" *ngIf=\"item.routerLink && !item.subMenu && !item.wip\" class=\"sidebar-list-link {{item.cssClass || ''}}\" [routerLink]=\"[item.routerLink]\" [queryParams]=\"item.queryParams\" routerLinkActive=\"active-link\" (click.out-zone)=\"collapseMenu($event, item)\" (mouseenter.out-zone)=\"hoverItem($event)\">\r\n <i *ngIf=\"item.icon\" class=\"{{ item.icon }}\"></i><span>{{ item.title | localize : lc }}</span>\r\n </a>\r\n\r\n <a [attr.style.padding_left]=\"item.padding_left\" *ngIf=\"item.subMenu && !item.wip\" (click.out-zone)=\"collapseMenu($event, item)\" [attr.href]=\"''\" class=\"sidebar-list-link {{item.cssClass || ''}}\" (mouseenter.out-zone)=\"hoverItem($event)\">\r\n <i *ngIf=\"item.icon\" class=\"{{ item.icon }}\"></i><span>{{ item.title | localize : lc }}</span>\r\n <b class=\"far fa-angle-down\"></b>\r\n </a>\r\n\r\n <ul *ngIf=\"item.subMenu\" class=\"sidebar-sublist\">\r\n <li *ngFor=\"let subitem of item.subMenu\" class=\"sidebar-sublist-item level-{{subitem.level}}\" [class.sidebar-item-wip]=\"subitem.wip\">\r\n <ng-container *ngTemplateOutlet=\"menuItem; context : { $implicit: subitem }\"></ng-container>\r\n </li>\r\n </ul>\r\n</ng-template>\r\n\r\n<!-- Overlay per la ricerca globale -->\r\n<ng-container *ngIf=\"searchingTerm || searchResult\">\r\n <div class=\"app-absolute app-search-background\">\r\n <div class=\"app-search-result-box\">\r\n <ng-container *ngIf=\"searchingTerm\">\r\n <div class=\"app-search-card\"><i class=\"fa fa-spinner fa-spin\"></i>Sto effettuando la ricerca...</div>\r\n </ng-container>\r\n <ng-container *ngIf=\"searchResult && !searchingTerm\">\r\n <div class=\"row\" style=\"height: 100%;\">\r\n <!-- Spazio a sinistra -->\r\n <div class=\"col-md-1\"></div>\r\n <!-- Blocco con le categorie dei risultati -->\r\n <div class=\"col-md-3\">\r\n <div class=\"app-search-card\">\r\n <div class=\"app-relative\"><a class=\"fa fa-times text-danger app-absolute app-right-0 app-fs-20 app-pointer\" (click)=\"closeSearch();\"></a></div>\r\n <h4>Categorie di Ricerca</h4>\r\n <div class=\"app-pointer app-link\" [class.app-bold]=\"!SelectedResult && !ShowSingleTable\">\r\n <span (click)=\"FilterSearchResults()\">{{SelectedResult ? '-' : '>'}} Mostra Tutto</span>\r\n </div>\r\n <div *ngFor=\"let item of searchResult.results\" class=\"app-pointer app-link\" [class.app-bold]=\"SelectedResult?.description == item.description\">\r\n <span (click)=\"FilterSearchResults(item)\">{{SelectedResult?.description == item.description ? '>' : '-'}} Mostra {{item.description}} ({{item.items?.length}})</span>\r\n </div>\r\n </div>\r\n </div>\r\n <!-- Dettaglio risultati -->\r\n <div class=\"col-md-7\" style=\"overflow: auto; height: 100%;\">\r\n <ng-container *ngIf=\"!SelectedResult && !ShowSingleTable\">\r\n <div *ngFor=\"let res of searchResult.results; let i = index;\" class=\"app-search-card\" [style.margin-bottom.px]=\"i == (searchResult.results?.length - 1) ? 2 : 10\">\r\n <h4>{{res.description}}</h4>\r\n <es-table [(ngModel)]=\"res.items\" [DynamicRowColumnsDefinition]=\"res.est_cols\" [ArraymodeItemsPerPage]=\"10\"></es-table>\r\n </div>\r\n </ng-container>\r\n <ng-container *ngIf=\"SelectedResult && ShowSingleTable\">\r\n <div class=\"app-search-card\">\r\n <h4>{{SelectedResult.description}}</h4>\r\n <es-table [(ngModel)]=\"SelectedResult.items\" [DynamicRowColumnsDefinition]=\"SelectedResult.est_cols\" [ArraymodeItemsPerPage]=\"10\"></es-table>\r\n </div>\r\n </ng-container>\r\n </div>\r\n <!-- Spazio a destra -->\r\n <div class=\"col-md-1\"></div>\r\n </div>\r\n </ng-container>\r\n </div>\r\n </div>\r\n</ng-container>","import { Injectable, Injector } from \"@angular/core\";\r\nimport { LocalizationService } from \"@esfaenza/localizations\";\r\n\r\n@Injectable()\r\nexport class NavBarLoc extends LocalizationService {\r\n constructor(injector: Injector) {\r\n super(injector);\r\n super.set(\"it->en\", \"Sessione Scaduta\", [\"Expired session\"]);\r\n super.set(\"it->en\", \"Backend Offline\", [\"Backend Offline\"]);\r\n super.set(\"it->en\", \"Sembra che il Backend sia momentaneamente offline. Questa pagina si aggiornera' automaticamente non appena la situazione tornera' alla normalita'. Ci scusiamo per il disagio\", [\"Backend seems to be currently offline. This page will reset itself when the situation goes back to normal. Sorry for the inconvenience\"]);\r\n super.set(\"it->en\", \"Ripulisci la Cache\", [\"Clear Caches\"]);\r\n super.set(\"it->en\", \"Cache Ripulita\", [\"Cache Cleared\"]);\r\n super.set(\"it->en\", \"Ambiente di Produzione\", [\"Production Environment\"]);\r\n super.set(\"it->en\", \"È disponibile una nuova versione per l'applicazione corrente. Si suggerisce di ricaricare la pagina (CTRL + F5)\", [\"A new version is available for this application. It is suggested to reload this page (CTRL + F5)\"])\r\n super.set(\"it->en\", \"Le informazioni di Sessione (Tenant/Account) sono cambiate a seguito di un login su modulo diverso utilizzando diverso Tenant/Utente sullo stesso browser. Si suggerisce di ricaricare la pagina (CTRL + F5)\", [\"Session informations (Tenant/Account) has changed after a login to a different module with the same Tenant/Username using the same browser. It is suggested to reload this page (CTRL + F5)\"]);\r\n super.set(\"it->en\", \"Cambia Modulo\", [\"Change module\"]);\r\n super.set(\"it->en\", \"Cambia Tenant\", [\"Change tenant\"]);\r\n super.set(\"it->en\", \"Usa notifiche semplici\", [\"Use simple alerts\"]);\r\n super.set(\"it->en\", \"Consenti notifiche eleganti\", [\"Allow fancy alerts\"]);\r\n super.set(\"it->en\", \"Ambiente di Sviluppo\", [\"Development Environment\"]);\r\n super.set(\"it->en\", \"Ripulisci le Preferenze Utente\", [\"Clear User Preferences\"]);\r\n super.set(\"it->en\", \"Preferenze utente ripulite\", [\"User preferences has been cleared\"]);\r\n super.set(\"it->en\", \"Ambiente di Staging\", [\"Staging Environment\"]);\r\n super.set(\"it->en\", \"Ambiente di Staging A\", [\"Staging A Environment\"]);\r\n super.set(\"it->en\", \"L'attuale sessione di lavoro non è più valida.<br>Si prega di eseguire nuovamente il login.\", [\"Current session has expired.<br>Please login back into the application.\"]);\r\n super.set(\"it->en\", \"Notifiche\", [\"Notifications\"]);\r\n super.set(\"it->en\", \"Job Applicativi\", [\"Application Jobs\"]);\r\n super.set(\"it->en\", \"Al momento non c'è nulla in esecuzione\", [\"Nothing being executed at the moment\"]);\r\n super.set(\"it->en\", \"Job Completato\", [\"Job Completed\"]);\r\n }\r\n}","// Angular\r\nimport { Component } from \"@angular/core\";\r\n\r\n// Direttive, Componenti, Librerie\r\nimport { ReplaySubject, Subscription } from \"rxjs\";\r\n\r\n@Component({ template: '' })\r\nexport abstract class ReactiveComponent {\r\n\r\n protected Subscriptions: Subscription[] = [];\r\n protected destroyed$: ReplaySubject<boolean> = new ReplaySubject(1);\r\n\r\n ngOnDestroy() {\r\n this.destroyed$.next(true);\r\n this.destroyed$.complete();\r\n\r\n if (!this.Subscriptions)\r\n return;\r\n\r\n for (let i = 0; i < this.Subscriptions.length; i++)\r\n this.Subscriptions[i].unsubscribe();\r\n }\r\n}","// Angular\r\nimport { ChangeDetectionStrategy, Component, Input, ViewEncapsulation } from \"@angular/core\";\r\nimport { NgIf, NgFor } from \"@angular/common\";\r\n\r\n// Configurazioni\r\nimport { TokenService } from \"@esfaenza/core/services\";\r\n\r\n// Applicazione\r\nimport { ActiveModuleView, CategoriesWithModules } from \"@esfaenza/core/domain\";\r\n\r\n@Component({\r\n selector: \"jace-modules-board\",\r\n templateUrl: \"jace-modules-board.component.html\",\r\n styleUrls: [\"jace-modules-board.component.scss\"],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n encapsulation: ViewEncapsulation.None,\r\n standalone: true,\r\n imports: [NgIf, NgFor]\r\n})\r\nexport class JaceModulesBoardComponent {\r\n @Input() Modules : ActiveModuleView[];\r\n \r\n public Categories: CategoriesWithModules[] = [];\r\n private Tenant: string;\r\n\r\n constructor(private bts: TokenService) { \r\n this.Tenant = this.bts.getJaceIdentity().Idtenant;\r\n }\r\n\r\n ngOnInit() {\r\n if(!this.Modules)\r\n return;\r\n\r\n this.Modules.forEach(m => {\r\n //Fixo href\r\n m.href = m.uiurl?.replace(\"{tenant}\", this.Tenant)\r\n\r\n //Aggiungo il modulo alla categoria giusta. In ogni \"fila\" di moduli non ce ne possono essere pi� di 6\r\n var prev = this.Categories.find(c => c.category.toUpperCase() == m.category.toUpperCase());\r\n var lastRow = prev?.module_rows[prev.module_rows.length - 1];\r\n\r\n if (prev && lastRow.length < 6)\r\n lastRow.push(m);\r\n else if (prev && lastRow.length == 6)\r\n prev.module_rows.push([m]);\r\n else\r\n this.Categories.push(new CategoriesWithModules(m))\r\n });\r\n }\r\n}","<div class=\"module-backdrop\">\r\n <div class=\"module-container\">\r\n <div class=\"module-container-title\">Cambia Modulo</div>\r\n <div *ngFor=\"let cat of Categories; let catFirst = first;\">\r\n <div class=\"module-title\" [style.margin-top.px]=\"catFirst ? 0 : 10\">{{cat.category}}</div>\r\n <div *ngFor=\"let row of cat.module_rows\" class=\"d-flex\">\r\n <ng-container *ngFor=\"let mod of row; let modFirst = first;\">\r\n <a *ngIf=\"mod.href\" [href]=\"mod.href\">\r\n <div class=\"module module-available\" [style.margin]=\"modFirst ? '0px' : '0px 0px 15px 15px'\">\r\n <div class=\"module-name\"><span>{{mod.name}}</span></div>\r\n <div class=\"module-footer\">{{'Disponibile'}}</div>\r\n </div>\r\n </a>\r\n <a *ngIf=\"!mod.href\">\r\n <div class=\"module module-unavailable\" [style.margin]=\"modFirst ? '0px' : '0px 0px 15px 15px'\">\r\n <div class=\"module-name\"><span>{{mod.name}}</span></div>\r\n <div class=\"module-footer\">{{'Non disponibile'}}</div>\r\n </div>\r\n </a>\r\n </ng-container>\r\n </div>\r\n </div>\r\n </div>\r\n</div>","// Angular\r\nimport { ChangeDetectionStrategy, ChangeDetectorRef, Component, ElementRef, Inject, Type, ViewChild, ViewEncapsulation } from \"@angular/core\";\r\nimport { Router, RouterLink } from \"@angular/router\";\r\nimport { MatSlideToggleModule } from \"@angular/material/slide-toggle\";\r\nimport { NgIf, NgFor, NgTemplateOutlet } from \"@angular/common\";\r\nimport { FormsModule } from \"@angular/forms\";\r\n\r\n// Configurazioni\r\nimport { BaseMessageService, NotificationsService } from \"@esfaenza/signalr-notifications\";\r\nimport { CacheService, PreferencesService } from \"@esfaenza/preferences\";\r\nimport { LocalizationService, LocalizationModule } from \"@esfaenza/localizations\";\r\nimport { MessageService } from \"@esfaenza/extensions\";\r\nimport { HTTPService } from \"@esfaenza/httpservice\";\r\n\r\n// EsFaenza\r\nimport { ComponentHostDirective } from \"@esfaenza/core/directives\";\r\nimport { JaceIdentity, ActiveModuleView, EnvOptions, ApplicationJob, NAVBAR_EXTENSIONS } from \"@esfaenza/core/domain\";\r\nimport { AppState, CompletedJobRedirectionService, TokenService } from \"@esfaenza/core/services\";\r\n\r\n// Librerie\r\nimport { interval, startWith, takeUntil, takeWhile } from \"rxjs\";\r\nimport { ProgressbarModule } from \"ngx-bootstrap/progressbar\";\r\nimport { BsDropdownModule } from \"ngx-bootstrap/dropdown\";\r\n\r\n// Applicazione\r\nimport { NavBarLoc } from \"./navbar.component.loc\";\r\n\r\n// Componenti\r\nimport { ReactiveComponent } from \"../base/reactive.component\";\r\nimport { JaceModulesBoardComponent } from \"./modules-board/jace-modules-board.component\";\r\n\r\n// Chiamate ai Repository\r\nconst GET_Jace_GetActiveJaceModules: string = \"/api/Jace/GetActiveJaceModules\";\r\nconst GET_Adm_ClearAllCaches: string = \"/api/Adm/ClearAllCaches\";\r\n\r\ndeclare var myconfig: EnvOptions;\r\ndeclare var dayjs;\r\n\r\n@Component({\r\n selector: \"navbar\",\r\n viewProviders: [{ provide: LocalizationService, useClass: NavBarLoc }],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n styleUrls: [\"./navbar.component.scss\"],\r\n templateUrl: \"./navbar.component.html\",\r\n standalone: true,\r\n imports: [RouterLink, FormsModule, BsDropdownModule, MatSlideToggleModule, NgIf, NgFor, ProgressbarModule, JaceModulesBoardComponent, ComponentHostDirective, NgTemplateOutlet, LocalizationModule]\r\n})\r\nexport class Navbar extends ReactiveComponent {\r\n\r\n public applicationVersion = myconfig.AppData.ComponentVersion;\r\n public applicationEnvironment = myconfig.AppData.ComponentEnvironment;\r\n\r\n public isMenuCollapsed: boolean = false;\r\n public anomaliesProcessing: boolean = false;\r\n\r\n public CurrentIdentity: JaceIdentity;\r\n\r\n private newVersionWarned: boolean = false;\r\n @ViewChild(\"navbar\", { static: false }) navbar: ElementRef;\r\n\r\n public Modules: ActiveModuleView[];\r\n\r\n constructor(\r\n private prefsService: PreferencesService, private cacheService: CacheService, private MessageDef: BaseMessageService,\r\n private notifications: NotificationsService, private msgExts: MessageService, public lc: LocalizationService, private http: HTTPService, public cdr: ChangeDetectorRef,\r\n public _state: AppState, public sr: TokenService, private router: Router, private cjrService: CompletedJobRedirectionService, @Inject(NAVBAR_EXTENSIONS) public extensionComponents: Type<any>[]) {\r\n super();\r\n\r\n this._state.subscribe(\"menu.isCollapsed\", (isCollapsed) => { this.isMenuCollapsed = isCollapsed; });\r\n this._state.subscribe(\"app.completedJob\", (jobDescription) => {\r\n this.msgExts.simpleSuccess(this.lc.loc(\"Job Completato\") + \": \" + jobDescription);\r\n });\r\n\r\n this.handleBaseNotifications();\r\n this.getActiveJaceModules();\r\n\r\n // Appena la pagina parte, poi ogni secondo, controllo l'identity per verificare se rimane la stessa\r\n interval(1000).pipe(\r\n startWith(0),\r\n takeUntil(this.destroyed$),\r\n takeWhile(_ => !myconfig.redirectInProgress)\r\n ).subscribe(t => {\r\n this.checkIdentity();\r\n })\r\n }\r\n\r\n override ngOnDestroy() {\r\n super.ngOnDestroy();\r\n //Quando viene distrutta la navbar devo distruggere anche il client di signalr perchè vuol dire che ho chiuso la pagina\r\n this.notifications.disconnect();\r\n }\r\n\r\n private handleBaseNotifications() {\r\n this.notifications.send(this.MessageDef.OUT_QueryJobStatus, null);\r\n this.notifications.observe(this.MessageDef.IN_SendVersion).pipe(takeUntil(this.destroyed$)).subscribe((message) => {\r\n if (message != myconfig.AppData.ComponentVersion && !this.newVersionWarned) {\r\n this.msgExts.simpleWarning(this.lc.loc(\"È disponibile una nuova versione per l'applicazione corrente. Si suggerisce di ricaricare la pagina (CTRL + F5)\"));\r\n this.newVersionWarned = true;\r\n }\r\n });\r\n }\r\n\r\n private checkIdentity() {\r\n let id = this.sr.getJaceIdentity();\r\n let idLast = this.CurrentIdentity;\r\n\r\n if (!id) return;\r\n\r\n this.checkSessionTimeout(id);\r\n\r\n if (this.CurrentIdentity && (id.IdAccount != idLast?.IdAccount || id.IdUser != idLast?.IdUser || id.Idtenant != idLast?.Idtenant)) {\r\n this.msgExts.simpleWarning(this.lc.loc(\"Le informazioni di Sessione (Tenant/Account) sono cambiate a seguito di un login su modulo diverso utilizzando diverso Tenant/Utente sullo stesso browser. Si suggerisce di ricaricare la pagina (CTRL + F5)\"));\r\n this.cdr.markForCheck();\r\n }\r\n\r\n this.CurrentIdentity = id;\r\n }\r\n\r\n getActiveJaceModules() {\r\n this.http.get<ActiveModuleView[]>(GET_Jace_GetActiveJaceModules).subscribe(res => {\r\n this.Modules = res;\r\n this._state.Modules = this.Modules;\r\n });\r\n }\r\n\r\n private checkSessionTimeout(identity: JaceIdentity) {\r\n if (dayjs() >= dayjs(identity.ExpirationTime).subtract(10, 'minutes') && !myconfig.redirectInProgress) {\r\n myconfig.redirectInProgress = true;\r\n\r\n this.msgExts.expiredSessionMessage(\r\n this.lc.loc('Expired session'),\r\n this.lc.loc(\"L'attuale sessione di lavoro non è più valida.<br>Si prega di eseguire nuovamente il login.\"),\r\n () => {\r\n myconfig.redirectInProgress = false;\r\n console.log(\"checkSessionTimeout - redirecting to login\")\r\n this.router.navigate([\"login\"]);\r\n }\r\n );\r\n }\r\n }\r\n\r\n ngAfterViewInit() {\r\n this._state.setHeaderHeight(this.navbar.nativeElement.offsetHeight);\r\n }\r\n\r\n public toggleMenu() {\r\n this.isMenuCollapsed = !this.isMenuCollapsed;\r\n this._state.notifyDataChanged(\"menu.isCollapsed\", this.isMenuCollapsed);\r\n }\r\n\r\n public logout() {\r\n window.location.href = `${myconfig.AuthUrl}/logout?client=${myconfig.Client}`;\r\n }\r\n\r\n public changeModule() {\r\n window.location.href = myconfig.JaceDashboardUrl;\r\n }\r\n\r\n public changeTenant() {\r\n window.location.href = `${myconfig.AuthUrl}/login/tenant?client=${myconfig.Client}`;\r\n }\r\n\r\n clearUserPreferences() {\r\n this.prefsService.clear().subscribe();\r\n this.msgExts.simpleSuccess(this.lc.loc(\"Preferenze utente ripulite\"));\r\n }\r\n\r\n clearAll() {\r\n this.cacheService.clear().subscribe();\r\n this.http.resetHttpUntimedCacheStorage();\r\n this.http.resetHttpTimedCacheStorage();\r\n this.http.get(GET_Adm_ClearAllCaches).subscribe(_ => {\r\n this.msgExts.simpleSuccess(this.lc.loc(\"Cache Ripulita\"));\r\n });\r\n }\r\n\r\n clearMessages() {\r\n this.msgExts.clearMessages();\r\n }\r\n\r\n completedJobClicked(job: ApplicationJob) {\r\n this.cjrService.redirect(job);\r\n }\r\n\r\n // Jace Module Dashboard\r\n public showModules: boolean = false;\r\n onShowModules() {\r\n this.showModules = !this.showModules;\r\n }\r\n}","<nav #navbar class=\"nav enuma-navbar\" [style.width]=\"isMenuCollapsed ? 'calc(100vw - 42px)' : 'calc(100vw - 230px)'\">\r\n <div class=\"d-flex\" style=\"width: 100%;\">\r\n <div><a (click)=\"toggleMenu()\" class=\"far fa-bars nav-icon app-padding-top-5 app-padding-left-15\"></a></div>\r\n <div class=\"app-padding-top-5 app-padding-left-15\"><ng-content></ng-content></div>\r\n <div style=\"margin-left: auto; display: flex;\">\r\n <!--Notifications (Jobs)-->\r\n <div class=\"user-menu app-no-selection app-margin-right-15\" dropdown container=\"body\" placement=\"bottom right\">\r\n <!--TODO: Spostare in modulo a parte _state.jobsInProgress, _state.jobsInProgress, ecc...-->\r\n <div *ngIf=\"_state.jobsInProgress > 0\" class=\"fa-beat-fade nav-jobs-icon-notification\"></div>\r\n <a [class.fa-shake]=\"_state.jobsInProgress > 0\" class=\"far fa-bell module-nav-menu-link dropdown-toggle app-pointer\" style=\"--fa-animation-duration: 3s; --fa-animation-iteration-count: 1;\" dropdownToggle></a>\r\n <ul *dropdownMenu class=\"nav-jobs-menu\" role=\"menu\">\r\n <div class=\"nav-jobs-menu-header\">\r\n <span>{{'Job Applicativi' | localize : lc}}</span>\r\n <span class=\"pull-right m-t-min-2\"><mat-slide-toggle [(ngModel)]=\"_state.notifyOnCompletedJobs\" (click)=\"clearMessages(); $event.stopPropagation();\"></mat-slide-toggle></span>\r\n <span class=\"pull-right app-margin-right-5\">{{'Notifiche' | localize : lc}}:</span>\r\n </div>\r\n <div class=\"nav-jobs-menu-list\">\r\n <div *ngIf=\"_state.allJobs.length == 0\" class=\"nav-jobs-menu-list-empty\">\r\n <div>{{\"Al momento non c'è nulla in esecuzione\" | localize : lc}}</div>\r\n </div>\r\n <div *ngFor=\"let job of _state.allJobs; let last = last\" [class.app-margin-bottom-5]=\"!last\">\r\n <span class=\"nav-jobs-menu-list-description\">\r\n <span *ngIf=\"!job.completed\" title=\"{{job.description}}\">{{job.smalldescription}}</span>\r\n <span *ngIf=\"job.completed\" title=\"{{job.description}}\"\r\n class=\"app-link app-no-selection app-inline app-pointer\"\r\n (click)=\"completedJobClicked(job); $event.stopPropagation();\">{{job.smalldescription}}</span>\r\n <strong class=\"pull-right\" *ngIf=\"!job.completed\">{{job.percentage}}%</strong>\r\n <strong class=\"pull-right\" *ngIf=\"job.completed\">{{'Completed' | localize : lc}}</strong>\r\n </span>\r\n <div class=\"progress progress-sm\">\r\n <progressbar *ngIf=\"!job.completed\" [max]=\"100\" [value]=\"job.percentage\" [striped]=\"true\"\r\n [animate]=\"true\"></progressbar>\r\n <progressbar *ngIf=\"job.completed\" type=\"success\" [max]=\"100\" [value]=\"100\" [striped]=\"false\"\r\n [animate]=\"false\"></progressbar>\r\n </div>\r\n </div>\r\n </div>\r\n </ul>\r\n </div>\r\n \r\n <!--Other Modules-->\r\n <div class=\"user-menu app-no-selection app-margin-right-15\" dropdown container=\"body\" placement=\"bottom right\">\r\n <a (click)=\"onShowModules()\" class=\"far fa-cubes module-nav-menu-link dropdown-toggle app-pointer\"></a>\r\n </div>\r\n \r\n <!--Quick Actions-->\r\n <div class=\"user-menu app-no-selection app-margin-right-15\" dropdown container=\"body\" placement=\"bottom right\">\r\n <a class=\"far fa-folder-gear module-nav-menu-link dropdown-toggle app-pointer\" dropdownToggle></a>\r\n <ul *dropdownMenu class=\"dropdown-menu dropdown-menu-right-user app-no-padding\" role=\"menu\">\r\n <li class=\"d-flex dropdown-title-bg\">\r\n <div class=\"dropdown-title\">Gestisci Cache Utente</div>\r\n </li>\r\n <li class=\"dropdown-top\"></li>\r\n <li class=\"dropdown-item app-pointer\" (click)=\"clearUserPreferences()\">\r\n <i class=\"far fa-user-times app-margin-right-10\"></i>{{'Ripulisci le Preferenze Utente' | localize : lc}}\r\n </li>\r\n <!-- <li class=\"dropdown-divider\"></li> -->\r\n <li class=\"dropdown-item app-pointer\" (click)=\"clearAll()\">\r\n <i class=\"far fa-broom-wide app-margin-right-10\"></i>{{'Ripulisci la Cache' | localize : lc}}\r\n </li>\r\n <li class=\"dropdown-bot\"></li>\r\n </ul>\r\n </div>\r\n \r\n <!--Punti di estensione per Calendar, Chatroom e chi più ne ha più ne metta...-->\r\n <div class=\"user-menu app-no-selection app-margin-right-15\" *ngFor=\"let comp of extensionComponents\">\r\n <ng-template [componentHost]=\"comp\"></ng-template>\r\n </div>\r\n </div>\r\n <div>\r\n <div class=\"nav-environment app-no-selection\">\r\n <ng-container *ngIf=\"applicationEnvironment == 1\">{{'Ambiente di Produzione' | localize : lc}}</ng-container>\r\n <ng-container *ngIf=\"applicationEnvironment == 2\">{{'Ambiente di Sviluppo' | localize : lc}}</ng-container>\r\n <ng-container *ngIf=\"applicationEnvironment == 5\">{{'Ambiente di Staging' | localize : lc}}</ng-container>\r\n <ng-container *ngIf=\"applicationEnvironment == 6\">{{'Ambiente di Staging A' | localize : lc}}</ng-container>\r\n </div>\r\n </div>\r\n <!--Debugging ruoli e permessi-->\r\n <div [hidden]=\"true\">\r\n <div>Permissions:</div>\r\n <div *ngFor=\"let p of CurrentIdentity.Permissions\">{{p}}</div>\r\n <div>Roles:</div>\r\n <div *ngFor=\"let r of CurrentIdentity.Roles\">{{r}}</div>\r\n </div>\r\n </div>\r\n</nav>\r\n\r\n<jace-modules-board *ngIf=\"showModules\" [Modules]=\"Modules\"></jace-modules-board>","// Angular\r\nimport { Component, HostListener, ViewEncapsulation } from \"@angular/core\";\r\nimport { DomSanitizer, SafeResourceUrl } from \"@angular/platform-browser\";\r\nimport { Location, NgClass, NgIf } from \"@angular/common\";\r\nimport { Router, RouterOutlet } from \"@angular/router\";\r\n\r\n// Configurazioni\r\nimport { AppState } from \"@esfaenza/core/services\";\r\n\r\n// Componenti\r\nimport { BackTop } from \"../back-top/back-top.component\";\r\nimport { Breadcrumb } from \"../breadcrumb/breadcrumb.component\";\r\nimport { Sidebar } from \"../sidebar/sidebar.component\";\r\nimport { Navbar } from \"../navbar/navbar.component\";\r\n\r\ndeclare var jQuery;\r\n\r\n@Component({\r\n selector: \"pages\",\r\n encapsulation: ViewEncapsulation.None,\r\n styleUrls: [\"./pages.component.scss\"],\r\n templateUrl: \"./pages.component.html\",\r\n standalone: true,\r\n imports: [Navbar, Sidebar, NgClass, NgIf, Breadcrumb, RouterOutlet, BackTop]\r\n})\r\nexport class PagesComponent {\r\n public isMenuCollapsed: boolean = false;\r\n public maxHeight: number = 0;\r\n public dynamicCSSUrl: SafeResourceUrl = null;\r\n public loadedModuleCss: string = \"\";\r\n\r\n constructor(public sanitizer: DomSanitizer, public _state: AppState, private _location: Location, public router: Router) {\r\n this._state.subscribe(\"menu.isCollapsed\", (isCollapsed) => {\r\n this.isMenuCollapsed = isCollapsed;\r\n });\r\n }\r\n\r\n ngOnInit() {\r\n this.getCurrentPageName();\r\n this.getHeight();\r\n }\r\n\r\n getCurrentPageName(): void {\r\n var url = this._location.path();\r\n setTimeout(function () {\r\n window.scrollTo(0, 0);\r\n jQuery('a[href=\"#' + url + '\"]').closest(\"li\").closest(\"ul\").closest(\"li\").addClass(\"sidebar-item-expanded\");\r\n });\r\n }\r\n\r\n public hideMenu(): void {\r\n this._state.notifyDataChanged(\"menu.isCollapsed\", true);\r\n }\r\n\r\n public getHeight() {\r\n var html = document.documentElement;\r\n this.maxHeight = html.clientHeight - 60;\r\n }\r\n\r\n @HostListener('window:resize', ['$event'])\r\n onResize(event) {\r\n this.getHeight();\r\n }\r\n}","<div class=\"pages-container\">\r\n <sidebar></sidebar>\r\n <div>\r\n <navbar>\r\n <breadcrumb></breadcrumb>\r\n </navbar>\r\n <div class=\"main-wrapper\" [style.max-height.px]=\"maxHeight\" [ngClass]=\"{'menu-collapsed': isMenuCollapsed}\">\r\n <div class=\"az-overlay\" *ngIf=\"!isMenuCollapsed\" (click)=\"hideMenu()\"></div>\r\n <div class=\"main\">\r\n <router-outlet></router-outlet>\r\n </div>\r\n <back-top [position]=\"200\"></back-top>\r\n </div>\r\n </div>\r\n</div>","// Angular\r\nimport { ActivatedRoute, RouterOutlet } from \"@angular/router\";\r\nimport { Component } from \"@angular/core\";\r\n\r\n// Configurazioni\r\nimport { AccessControlService } from \"@esfaenza/access-control\";\r\nimport { LocalizationService } from \"@esfaenza/localizations\";\r\nimport { HTTPService } from \"@esfaenza/httpservice\";\r\n\r\nimport { AppState, TokenService } from \"@esfaenza/core/services\";\r\nimport { EnvOptions } from \"@esfaenza/core/domain\";\r\n\r\ndeclare var myconfig: EnvOptions;\r\n\r\n@Component({\r\n selector: \"external-pages\",\r\n templateUrl: \"./external_pages.component.html\",\r\n standalone: true,\r\n imports: [RouterOutlet]\r\n})\r\nexport class ExternalPagesComponent {\r\n private Username: string = \"\";\r\n private Password: string = \"\";\r\n private Tenant: string = \"\";\r\n\r\n constructor(private aac: AccessControlService, public lc: LocalizationService, private http: HTTPService, private _state: AppState, private route: ActivatedRoute, private bts: TokenService) {\r\n this.Username = this.route.snapshot.params[\"user\"];\r\n this.Password = this.route.snapshot.params[\"pswd\"];\r\n this.Tenant = this.route.snapshot.params[\"tnt\"];\r\n }\r\n\r\n ngOnInit() {\r\n console.log(\"Caricamento pagina nell'IFRAME completato!\");\r\n console.log(\"[\" + this.Tenant + \"]\" + this.Username + \" - \" + this.Password);\r\n\r\n // Le info di login che ho passato sono le stesse delle info di login salvate nel token --> È un redirect da un sito esterno ma il token c'è già. Esco\r\n // Ho un token di login e non ho nessuna info sull'utente da usare --> È un redirect da Jace, quindi sono a posto. Esco\r\n let currentIdentity = this.bts.getJaceIdentity();\r\n if (currentIdentity && (!(this.Tenant + this.Username + this.Password) || currentIdentity.Idtenant == this.Tenant && currentIdentity.DsUser == this.Username)) {\r\n this.aac.initializeIdentity(currentIdentity);\r\n return;\r\n }\r\n\r\n // Altrimenti devo effettuare il login\r\n let LoginDTO = { tenant: \"FX\", username: this.Username, password: this.Password, client_id: \"jacedev\" };\r\n this.http.post(`${myconfig.AuthUrl}/api/login/dologin`, LoginDTO).subscribe(t => {\r\n });\r\n }\r\n}","<router-outlet></router-outlet>","// Angular\r\nimport { Component, ViewEncapsulation } from \"@angular/core\";\r\n\r\nimport { EnvOptions } from \"@esfaenza/core/domain\";\r\n\r\ndeclare var myconfig: EnvOptions;\r\n\r\n@Component({\r\n selector: \"login\",\r\n encapsulation: ViewEncapsulation.None,\r\n styleUrls: [\"./jace-login.component.scss\"],\r\n templateUrl: \"./jace-login.component.html\",\r\n standalone: true\r\n})\r\nexport class JaceLoginComponent {\r\n\r\n ngOnInit() {\r\n\r\n if (myconfig.AuthUrl)\r\n window.location.href = `${myconfig.AuthUrl}/login/form?client=${myconfig.Client}`;\r\n else\r\n console.error(\"myconfig.AuthUrl is not provided\");\r\n }\r\n}\r\n","<div class=\"login-container\">\r\n <div class=\"redirecting-div\">\r\n <div class=\"redirecting-message\"><h1>Redirecting to login...</h1></div>\r\n <div class=\"signal\"></div>\r\n </div>\r\n</div>\r\n","// Angular\r\nimport { Component, Inject, Optional, ViewEncapsulation } from \"@angular/core\";\r\nimport { ActivatedRoute, Router } from \"@angular/router\";\r\nimport { NgIf } from \"@angular/common\";\r\n\r\n// Configurazioni\r\nimport { AppState } from \"@esfaenza/core/services\";\r\n\r\n// Applicazione\r\nimport { REDIRECT_MAP } from \"@esfaenza/core/domain\";\r\n\r\n// TODO: loc.ts\r\n@Component({\r\n selector: \"redirecter\",\r\n encapsulation: ViewEncapsulation.None,\r\n templateUrl: \"./redirecter.component.html\",\r\n standalone: true,\r\n imports: [NgIf]\r\n})\r\nexport class RedirecterComponent {\r\n\r\n public Error: string = \"\";\r\n\r\n constructor(public _state: AppState, private route: ActivatedRoute, public router: Router, @Optional() @Inject(REDIRECT_MAP) private redirectMap: { [index: string]: { url: string, params: string[] } }) { }\r\n\r\n ngOnInit() {\r\n let url: string = this.route.snapshot.params[\"url\"];\r\n //§ = 167... non so perché ma scrivendolo esplicitamente non funziona\r\n let parts = url.split(String.fromCharCode(167)).filter(s => !!s);\r\n\r\n if (parts.length < 2) {\r\n this.Error = \"L'url passato è incompleto. Impossibile riconoscerlo\";\r\n return;\r\n }\r\n else {\r\n var redirect = this.redirectMap[parts[0]];\r\n if (!redirect) {\r\n this.Error = \"L'url passato fa riferimento a un oggetto non navigabile. Impossibile procedere\";\r\n return;\r\n }\r\n\r\n if (redirect.params.length != parts.length - 1) {\r\n this.Error = \"Il numero di parametri richiesti per navigare all'entità richiesta è diverso dal numero di parametri passato\";\r\n return;\r\n }\r\n\r\n let parObject = {};\r\n redirect.params.forEach((t, i) => parObject[t] = parts[i + 1]);\r\n this.router.navigate([\"pages/\" + redirect.url, parObject]);\r\n }\r\n }\r\n}","<div *ngIf=\"Error\">{{Error}}</div>","// Angular\r\nimport { Component, Injector } from \"@angular/core\";\r\nimport { ActivatedRoute, Router, UrlSegmentGroup } from \"@angular/router\";\r\n\r\n// Direttive, Componenti, Librerie\r\nimport { takeUntil } from \"rxjs/operators\";\r\n\r\n// Core\r\nimport { AppState } from \"@esfaenza/core/services\";\r\n\r\nimport { ReactiveComponent } from \"./reactive.component\";\r\nimport { EMBEDDED_ROUTE, ROUTE } from \"@esfaenza/core/domain\";\r\n\r\n@Component({ template: '' })\r\nexport abstract class BaseComponent extends ReactiveComponent {\r\n\r\n /*\r\n * Blocco di informazioni sulla route attuale\r\n * Route: /pages/module/component;idModel=123\r\n * \r\n * CompletePath: /pages/module/component\r\n * ComponentPath: module/component\r\n * BasePath: /pages (equivalente a ROUTE o EMBEDDED_ROUTE)\r\n * Parameters: { \"idModel\" : \"123\" }\r\n */\r\n protected CompletePath: string;\r\n protected ComponentPath: string;\r\n protected BasePath: string;\r\n protected NavigationParameters: { [name: string]: string } = null;\r\n\r\n // Informazioni prese dai dati extra della route\r\n protected InternalNavigation: boolean;\r\n protected NavigationTitle: string;\r\n\r\n private _router: Router;\r\n \r\n constructor(injector: Injector) {\r\n super();\r\n\r\n let _activatedRoute: ActivatedRoute = injector.get(ActivatedRoute);\r\n let _state: AppState = injector.get(AppState);\r\n this._router = injector.get(Router);\r\n\r\n _state.registerNavigationIfMeaningful(_activatedRoute.snapshot);\r\n\r\n // Parametri in maniera \"dinamica\"\r\n _activatedRoute.params.pipe(takeUntil(this.destroyed$)).subscribe(t => { this.NavigationParameters = t; })\r\n\r\n // Tutto il resto in maniera statica tanto non cambia\r\n let segs = (<UrlSegmentGroup>(<any>_activatedRoute.snapshot)._urlSegment).segments;\r\n this.CompletePath = \"/\" + segs.map(t => t.path).join('/');\r\n this.ComponentPath = \"/\" + segs.filter((t, i) => i != 0).map(t => t.path).join('/');\r\n this.BasePath = \"/\" + segs[0].path;\r\n\r\n this.InternalNavigation = _activatedRoute.snapshot.data[\"internalNavigation\"] || false;\r\n this.NavigationTitle = _activatedRoute.snapshot.data[\"title\"] || \"\";\r\n\r\n // Per i componenti navigabili non embeddati è inutile mandare il messaggio di navigazione\r\n // Così come per quelli per cui non esiste un titolo (cioè compoennti verso cui non si è navigato direttamente)\r\n if(!_state.Embedded || !this.NavigationTitle)\r\n return;\r\n\r\n // Se sono dentro un iframe risalgo a quello di livello più alto in assoluto\r\n let tmpWindow = <{ parent: any, postMessage: Function }>window;\r\n // Quando il parent non esiste window. parent è un riferimento a se stesso\r\n while (tmpWindow.parent != tmpWindow)\r\n tmpWindow = tmpWindow.parent;\r\n\r\n tmpWindow.postMessage({ type: \"navigation\", url: this.CompletePath, internalNavigation: this.InternalNavigation, title: this.NavigationTitle }, \"*\");\r\n }\r\n\r\n protected navigate(command: any[], extras?: any) {\r\n let commands = command;\r\n\r\n // Fix della path esattamente come in esRouterLink\r\n commands = Array.isArray(commands) ? commands : [commands];\r\n let route = (commands[0] as string);\r\n if (!route.startsWith(\"/\" + EMBEDDED_ROUTE) && !route.startsWith(\"/\" + ROUTE))\r\n commands[0] = this.BasePath + commands[0];\r\n\r\n this._router.navigate(command, extras);\r\n }\r\n}","// Angular\r\nimport { ChangeDetectionStrategy, ChangeDetectorRef, Component, Input, ViewEncapsulation } from \"@angular/core\";\r\nimport { DomSanitizer, SafeResourceUrl } from \"@angular/platform-browser\";\r\nimport { NgIf } from \"@angular/common\";\r\n\r\n// Configurazioni\r\nimport { AppState } from \"@esfaenza/core/services\";\r\n\r\n// Classi\r\nimport { ActiveModuleView, EnvOptions } from \"@esfaenza/core/domain\";\r\n\r\ndeclare var myconfig: EnvOptions;\r\n\r\n@Component({\r\n selector: \"jace-resource\",\r\n encapsulation: ViewEncapsulation.None,\r\n templateUrl: \"./jace-resource.component.html\",\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n standalone: true,\r\n imports: [NgIf]\r\n})\r\nexport class JaceResourceComponent {\r\n @Input() Module: string = \"\";\r\n @Input() ModuleKeyType: 'altid' | 'id' = 'altid';\r\n @Input() Page: string = \"\";\r\n @Input() Localhost: string;\r\n\r\n public Height: number = 0;\r\n public sanitizedSourceResource: SafeResourceUrl = null;\r\n\r\n constructor(private cdr: ChangeDetectorRef, private _state: AppState, private sanitizer: DomSanitizer) { }\r\n\r\n ngOnInit() {\r\n console.log(\"Initializing jace resource for \" + this.Module);\r\n\r\n if (this._state.Modules?.length > 0)\r\n this.afterModulesRetrieve(this._state.Modules);\r\n else {\r\n this._state.subscribe(\"modules.Retrieved\", (modules) => {\r\n this.afterModulesRetrieve(modules);\r\n this.cdr.markForCheck();\r\n });\r\n }\r\n }\r\n\r\n ngAfterViewInit() {\r\n //let frame = document.getElementById(\"externalFrame\");\r\n //let rect = frame.getBoundingClientRect();\r\n this.Height = window.innerHeight - 116;\r\n console.log(\"Height: \" + this.Height);\r\n this.cdr.markForCheck();\r\n }\r\n\r\n afterModulesRetrieve(modules: ActiveModuleView[]) {\r\n let module = modules.find(t => (this.ModuleKeyType == 'id' ? t.idmodule : this.ModuleKeyType == 'altid' ? t.altname : \"\") == this.Module)\r\n if (!module) {\r\n console.error(`Impossibile trovare il modulo con ${this.ModuleKeyType} uguale a ${this.Module}`);\r\n this.sanitizedSourceResource = null;\r\n }\r\n if (this.Page.startsWith(\"pages\") || this.Page.startsWith(\"/pages\")) {\r\n console.error(`L'url della pagina da visitare non deve partire con 'pages', scrivere solo {modulo}/{pagina}`);\r\n this.sanitizedSourceResource = null;\r\n }\r\n\r\n let moduleUrl = myconfig.AuthUrl.includes(\"localhost\") ? `http://localhost:${this.Localhost}` : module.uiurl;\r\n let finalUrl = `${moduleUrl}/#/pages_ext/${this.Page}`;\r\n this.sanitizedSourceResource = this.sanitizer.bypassSecurityTrustResourceUrl(finalUrl);\r\n }\r\n}","<iframe *ngIf=\"!!sanitizedSourceResource\" id=\"externalFrame\" style=\"width: 100%; border: none;\" [style.height.px]=\"Height\" \r\n [src]=\"sanitizedSourceResource\">\r\n</iframe>","import { Injectable, Injector } from \"@angular/core\";\r\nimport { LocalizationService } from \"@esfaenza/localizations\";\r\n\r\n@Injectable()\r\nexport class UserInfoComponentLoc extends LocalizationService {\r\n constructor(injector: Injector) {\r\n super(injector);\r\n super.set(\"en->it\", \"Name\", [\"Nome\"]);\r\n super.set(\"en->it\", \"Last Login Date\", [\"Data ultimo accesso\"]);\r\n super.set(\"en->it\", \"ID Account\", [\"Codice Account\"]);\r\n super.set(\"en->it\", \"ID User\", [\"Codice Utente\"]);\r\n super.set(\"en->it\", \"Description\", [\"Descrizione\"]);\r\n super.set(\"en->it\", \"Tenant Name\", [\"Nome Tenant\"]);\r\n super.set(\"en->it\", \"Delete\", [\"Cancella\"]);\r\n super.set(\"en->it\", \"Save\", [\"Salva\"]);\r\n super.set(\"en->it\", \"Clear User Preferences\", [\"Ripulisci Preferenze Utente\"]);\r\n super.set(\"en->it\", \"Old Password\", [\"Vecchia Password\"]);\r\n super.set(\"en->it\", \"New Password\", [\"Nuova Password\"]);\r\n super.set(\"en->it\", \"Confirm Password\", [\"Conferma nuova password\"]);\r\n super.set(\"en->it\", \"Phone Number\", [\"Numero di Cellulare\"]);\r\n super.set(\"en->it\", \"Email\", [\"Email\"]);\r\n super.set(\"en->it\", \"Change password for all tenants\", [\"Cambia password per tutti i Tenant\"]);\r\n super.set(\"en->it\", \"Change password for external systems\", [\"Cambia password per sistemi esterni\"]);\r\n super.set(\"en->it\", \"Change\", [\"Modifica\"]);\r\n super.set(\"en->it\", \"Recovery Info\", [\"Informazioni di Recupero\"]);\r\n super.set(\"en->it\", \"Visibility Info\", [\"Info Visibilita'\"]);\r\n super.set(\"en->it\", \"Roles\", [\"Ruoli\"]);\r\n super.set(\"en->it\", \"Permissions\", [\"Permessi\"]);\r\n super.set(\"en->it\", \"Preference\", [\"Preferenze\"]);\r\n super.set(\"en->it\", \"Reset\", [\"Reimposta\"]);\r\n super.set(\"en->it\", \"Upload Image\", [\"Carica Immagine\"]);\r\n super.set(\"en->it\", \"Show Advanced\", [\"Mostra Avanzate\"]);\r\n super.set(\"en->it\", \"Change Profile Picture\", [\"Cambia Immagine del Profilo\"]);\r\n super.set(\"en->it\", \"Delete Profile Picture\", [\"Rimuovi Immagine del Profilo\"]);\r\n super.set(\"en->it\", \"Password\", [\"Password\"]);\r\n super.set(\"en->it\", \"Error\", [\"Errore\"]);\r\n }\r\n}","// Angular\r\nimport { Component, EventEmitter, Input, Output, ViewChild } from \"@angular/core\";\r\n\r\n// Configurazioni\r\nimport { AppState } from \"@esfaenza/core/services\";\r\n\r\n// Direttive, Componenti, Librerie\r\nimport { ModalDirective } from \"ngx-bootstrap/modal\";\r\nimport { Draggable, EsModalDirective } from \"@esfaenza/core/directives\";\r\n\r\n@Component({\r\n selector: \"es-modal\",\r\n templateUrl: \"./es-modal.component.html\",\r\n standalone: true,\r\n imports: [EsModalDirective, Draggable]\r\n})\r\n\r\nexport class EsModalComponent {\r\n @Input() Size: string = \"M\";\r\n @Input() IgnoreBackdrop: boolean = false;\r\n @Input() HasOverlap: boolean = false;\r\n @Output() onShow: EventEmitter<void> = new EventEmitter<void>();\r\n @Output() onHide: EventEmitter<void> = new EventEmitter<void>();\r\n\r\n constructor(public _state: AppState) { }\r\n\r\n // Reference alla Modal\r\n @ViewChild(\"modalRef\") private Modal: ModalDirective;\r\n public show() { this.Modal.show(); }\r\n public hide() { this.Modal.hide(); }\r\n}","<div esModal #modalRef=\"es-modal\"\r\n class=\"modal fade\"\r\n role=\"dialog\"\r\n aria-hidden=\"true\"\r\n (onShow)=\"onShow.emit()\"\r\n (onHide)=\"onHide.emit()\"\r\n [config]=\"{backdrop: true, ignoreBackdropClick: IgnoreBackdrop}\">\r\n <div class=\"modal-dialog\"\r\n [class.modal-sm]=\"Size == 'S'\"\r\n [class.modal-md]=\"Size == 'M'\"\r\n [class.modal-lg]=\"Size == 'L'\"\r\n [class.modal-xl]=\"Size == 'XL'\"\r\n [class.modal-xxl]=\"Size == 'XXL'\"\r\n [class.modal-feminist]=\"Size == 'HOLYSHIT'\"\r\n emaDraggable>\r\n <div class=\"modal-content\" [class.app-bg-lightgrey]=\"HasOverlap\"\r\n style=\"cursor: default;\">\r\n <ng-content></ng-content>\r\n </div>\r\n </div>\r\n</div>","// Angular\r\nimport { Component, EventEmitter, Output } from \"@angular/core\";\r\n\r\n// Configurazioni\r\nimport { AppState } from \"@esfaenza/core/services\";\r\n\r\n@Component({\r\n selector: \"es-modal-head\",\r\n templateUrl: \"./es-modal-head.component.html\",\r\n styleUrls: [\"./es-modal-head.component.scss\"],\r\n standalone: true\r\n})\r\n\r\nexport class EsModalHeadComponent {\r\n @Output() Close: EventEmitter<void> = new EventEmitter<void>();\r\n\r\n constructor(public _state: AppState) { }\r\n\r\n public CloseFunction() {\r\n this.Close.emit();\r\n }\r\n}","<div class=\"modal-header\">\r\n <div class=\"modal-title modal-head pull-left\">\r\n <ng-content></ng-content>\r\n </div>\r\n <div class=\"close modal-close-button\"\r\n (click)=\"CloseFunction();\" \r\n aria-label=\"Close\">\r\n <span aria-hidden=\"true\">×</span>\r\n </div>\r\n</div>","import { NgIf } from \"@angular/common\";\r\nimport { Component, Input } from \"@angular/core\";\r\n\r\n@Component({\r\n selector: \"labeled-span\",\r\n templateUrl: \"./labeled-span.component.html\",\r\n standalone: true,\r\n imports: [NgIf]\r\n})\r\nexport class LabeledSpanComponent {\r\n public H_MODE = \"Horizontal\";\r\n public V_MODE = \"Vertical\";\r\n\r\n @Input() First: boolean = false;\r\n @Input() Label: string = \"\";\r\n @Input() Display: \"Horizontal\" | \"Vertical\" = \"Horizontal\";\r\n\r\n constructor() { }\r\n}","<div [class.app-margin-top-10]=\"First\" \r\n [style.display]=\"Display == V_MODE ? 'inline-grid' : 'block'\"\r\n [style.margin-right.px]=\"Display == V_MODE ? 10 : 0\">\r\n <strong class=\"text-uppercase\" style=\"font-size: .7rem !important;\">\r\n {{Label}}<span *ngIf=\"Display == H_MODE\">: </span>\r\n </strong>\r\n <span><ng-content></ng-content></span>\r\n</div>","import { Component } from \"@angular/core\";\r\n\r\n@Component({\r\n selector: \"ops-menu\",\r\n templateUrl: \"./ops-menu.component.html\",\r\n standalone: true\r\n})\r\nexport class OperationsMenuComponent {\r\n constructor() { }\r\n}","<h5 class=\"app-bold\">Operazioni</h5>\r\n\r\n<div class=\"card app-margin-top-10\">\r\n <div>\r\n <ng-content></ng-content>\r\n </div>\r\n</div>","import { Component, Input } from \"@angular/core\";\r\nimport { MatExpansionModule } from \"@angular/material/expansion\";\r\n\r\n@Component({\r\n selector: \"ops-menu-category\",\r\n templateUrl: \"./ops-menu-category.component.html\",\r\n standalone: true,\r\n imports: [MatExpansionModule]\r\n})\r\nexport class OperationsMenuCategoryComponent {\r\n @Input() Name: string = \"Nuova categoria\";\r\n @Input() Expanded: boolean = false;\r\n\r\n constructor() { }\r\n}","<mat-accordion>\r\n <mat-expansion-panel [expanded]=\"Expanded\" (opened)=\"Expanded = true\" (closed)=\"Expanded = false\">\r\n <!--Header-->\r\n <mat-expansion-panel-header style=\"max-height: 48px !important\">\r\n <mat-panel-title class=\"app-no-selection\">{{Name}}</mat-panel-title>\r\n </mat-expansion-panel-header>\r\n <!--Operations-->\r\n <ng-content></ng-content>\r\n </mat-expansion-panel>\r\n</mat-accordion>","import { Component, EventEmitter, Output } from \"@angular/core\";\r\n\r\n@Component({\r\n selector: \"ops-menu-operation\",\r\n templateUrl: \"./ops-menu-operation.component.html\",\r\n standalone: true\r\n})\r\nexport class OperationsMenuOperationComponent {\r\n @Output() onClick: EventEmitter<void> = new EventEmitter<void>();\r\n\r\n constructor() { }\r\n\r\n emitClick() {\r\n this.onClick.emit();\r\n }\r\n}","<div class=\"app-padding-left-10\">\r\n <a class=\"app-link app-inline-wrapped\" (click)=\"emitClick()\"><ng-content></ng-content></a>\r\n</div>","// Angular\r\nimport { ActivatedRoute } from \"@angular/router\";\r\nimport { Component, Injector, ViewChild } from \"@angular/core\";\r\nimport { NgFor, NgIf } from \"@angular/common\";\r\nimport { FormsModule } from \"@angular/forms\";\r\n\r\n// Configurazioni\r\nimport { ExportService, ExtensionsModule, MessageService, UtilityService } from \"@esfaenza/extensions\";\r\nimport { LocalizationModule, LocalizationService } from \"@esfaenza/localizations\";\r\n\r\n// Classi\r\nimport { UpdatePasswordDto } from \"@esfaenza/core/domain\";\r\nimport { AppFile, FormsAndValidationsModule } from \"@esfaenza/forms-and-validations\";\r\nimport { BaseComponent } from \"../base/base.component\"\r\n\r\n// Applicazione\r\nimport { AppState, TokenService, UserPreferencesService } from \"@esfaenza/core/services\";\r\nimport { UserInfoComponentLoc } from \"./user-infos.component.loc\";\r\nimport { EsModalComponent } from \"../../es-modal/es-modal.component\";\r\nimport { EsModalHeadComponent } from \"../../es-modal/es-modal-head/es-modal-head.component\";\r\nimport { LabeledSpanComponent } from \"../../span/labeled-span/labeled-span.component\";\r\nimport { OperationsMenuComponent } from \"../../operations/ops-menu/ops-menu.component\";\r\nimport { OperationsMenuCategoryComponent } from \"../../operations/ops-menu-category/ops-menu-category.component\";\r\nimport { OperationsMenuOperationComponent } from \"../../operations/ops-menu-operation/ops-menu-operation.component\";\r\nimport { AccessControlModule } from \"@esfaenza/access-control\";\r\nimport { MatTooltipModule } from \"@angular/material/tooltip\";\r\n\r\n\r\n@Component({\r\n selector: \"user-infos\",\r\n templateUrl: \"./user-infos.component_tst.html\",\r\n styleUrls: [\"user-infos.component.scss\"],\r\n viewProviders: [{ provide: LocalizationService, useClass: UserInfoComponentLoc }],\r\n standalone: true,\r\n imports: [\r\n FormsModule, \r\n FormsAndValidationsModule, \r\n NgIf,\r\n NgFor,\r\n LocalizationModule, \r\n EsModalComponent, \r\n EsModalHeadComponent, \r\n OperationsMenuComponent, \r\n OperationsMenuCategoryComponent, \r\n OperationsMenuOperationComponent,\r\n LabeledSpanComponent,\r\n ExtensionsModule,\r\n AccessControlModule,\r\n MatTooltipModule\r\n ]\r\n})\r\nexport class UserInfosComponent extends BaseComponent {\r\n public AccountDetails: JaceUserAccount;\r\n public AccountRoles: string[];\r\n public AccountPermissions: string[];\r\n\r\n constructor(private inj: Injector, private tks: TokenService, public msgExts: MessageService, public expExts: ExportService,\r\n public utiExts: UtilityService, public lc: LocalizationService, public _state: AppState,\r\n public profile: UserPreferencesService) {\r\n super(inj);\r\n }\r\n\r\n ngOnInit() {\r\n this.getAccountDetails();\r\n }\r\n\r\n getAccountDetails() {\r\n // Recupero le informazioni Account partendo dalla identity\r\n let identity = this.tks.getJaceIdentity();\r\n this.AccountRoles = identity.Roles;\r\n this.AccountPermissions = identity.Permissions;\r\n\r\n // TODO: Rimuovere, placeholder per grafica\r\n this.AccountDetails = new JaceUserAccount();\r\n this.AccountDetails.username = \"TESTUSR\";\r\n this.AccountDetails.idtenant = \"FX\";\r\n this.AccountDetails.firstname = \"Utente\";\r\n this.AccountDetails.lastname = \"di Test\";\r\n this.AccountDetails.recoveryemail = \"testusr@enuma.it\";\r\n this.AccountDetails.dtvalidfrom = new Date();\r\n this.AccountDetails.dtvalidto = new Date();\r\n\r\n // TODO: Definire API per i dati dell Account loggato\r\n //let pars = new HttpParams().set(\"idAccount\", identity.IdAccount.toString());\r\n //this.http.get<JaceUserAccount>(GET_Accounts_GetEntityAccount, pars).subscribe(res => { this.AccountDetails = res; });\r\n }\r\n\r\n //#region Show Roles and Permissions\r\n @ViewChild(\"dlgShowAccountRoles\") dlgShowAccountRoles: EsModalComponent;\r\n\r\n onShowAccountRoles() {\r\n this.dlgShowAccountRoles.show();\r\n }\r\n //#endregion\r\n\r\n //#region Update Profile Picture\r\n @ViewChild(\"dlgUpdateProfilePicture\") dlgUpdateProfilePicture: EsModalComponent;\r\n public UpdateProfilePictureDTO: { image: AppFile } = null;\r\n\r\n public onUpdateProfilePicture() {\r\n this.UpdateProfilePictureDTO = null;\r\n requestAnimationFrame(() => {\r\n this.UpdateProfilePictureDTO = { image: null };\r\n this.dlgUpdateProfilePicture.show();\r\n });\r\n }\r\n\r\n public async doUpdateProfilePicture() {\r\n let res = await this.profile.doUpdateProfilePicture(this.UpdateProfilePictureDTO.image);\r\n this.msgExts.manageCallResultResponse(res, \"Modifica eseguita con Successo\", \"Errori nella modifica\", () => {\r\n this.dlgUpdateProfilePicture.hide();\r\n });\r\n }\r\n //#endregion\r\n\r\n //#region Delete Profile Picture\r\n public onDeleteProfilePicture() {\r\n this.msgExts.simpleWarningWithChoice(\"Conferma eliminazione\", \"Si e' certi di voler rimuovere la foto profilo?\", () => {\r\n this.doDeleteProfilePicture();\r\n });\r\n }\r\n\r\n public async doDeleteProfilePicture() {\r\n let res = await this.profile.doDeleteProfilePicture();\r\n this.msgExts.manageCallResultResponse(res, \"Foto profilo rimossa con successo\", \"Errori nella rimozione della foto profilo\", () => {\r\n this.dlgUpdateProfilePicture.hide();\r\n });\r\n }\r\n //#endregion\r\n\r\n //#region Update Recovery Info\r\n @ViewChild(\"dlgUpdateRecoverySettings\") dlgUpdateRecoverySettings: EsModalComponent;\r\n public UpdateRecoverySettingsDTO: { email: string } = null;\r\n\r\n public onUpdateRecoverySettings() {\r\n this.UpdateRecoverySettingsDTO = null;\r\n requestAnimationFrame(() => {\r\n this.UpdateRecoverySettingsDTO = { email: this.AccountDetails.recoveryemail };\r\n this.dlgUpdateRecoverySettings.show();\r\n });\r\n }\r\n\r\n public async doUpdateRecoverySettings() {\r\n let res = await this.profile.doUpdateRecoverySettings(this.UpdateRecoverySettingsDTO.email);\r\n this.msgExts.manageCallResultResponse(res, \"Modifica eseguita con Successo\", \"Errori nella modifica\", () => {\r\n this.getAccountDetails();\r\n this.dlgUpdateRecoverySettings.hide();\r\n });\r\n }\r\n //#endregion\r\n\r\n //#region Update Password\r\n @ViewChild(\"dlgUpdatePassword\") dlgUpdatePassword: EsModalComponent;\r\n public UpdatePasswordDTO: UpdatePasswordDto = null;\r\n CustomError: string;\r\n\r\n public onUpdatePassword() {\r\n this.UpdatePasswordDTO = null;\r\n requestAnimationFrame(() => {\r\n this.CustomError = \"\";\r\n this.UpdatePasswordDTO = new UpdatePasswordDto();\r\n this.dlgUpdatePassword.show();\r\n });\r\n }\r\n\r\n public async doUpdatePassword() {\r\n if (this.UpdatePasswordDTO.newpwd != this.UpdatePasswordDTO.confirmpwd)\r\n this.CustomError = \"Le password inserite non coincidono.\";\r\n else {\r\n let res = await this.profile.doUpdatePassword(this.UpdatePasswordDTO.oldpwd, this.UpdatePasswordDTO.newpwd, this.UpdatePasswordDTO.confirmpwd);\r\n this.msgExts.manageCallResultResponse(res, \"Password modificata con Successo\", \"Errori nella modifica della Password\",\r\n () => { this.dlgUpdatePassword.hide(); }\r\n );\r\n }\r\n }\r\n //#endregion\r\n}\r\n\r\n// TODO: Definire meglio entita ACCOUNT\r\nexport class JaceUserAccount {\r\n id: string;\r\n iduser: string;\r\n idtenant: string;\r\n username: string;\r\n dtvalidfrom: Date;\r\n dtvalidto: Date;\r\n codfiscale: string;\r\n firstname: string;\r\n lastname: string;\r\n dtlockdown: Date;\r\n lockdownreason: string;\r\n // Detail\r\n recoveryemail: string;\r\n recoveryphone: string;\r\n}","<div style=\"height: 100%; width: 100%; display: flex;\">\r\n <div style=\"margin: auto;\">\r\n <div class=\"user-img-container\">\r\n <img [src]=\"profile.ProfilePicture\" alt=\"user-img\" class=\"user-img\" />\r\n <div class=\"app-pointer user-img-btn\">\r\n <div class=\"app-opacity user-img-btn-body\" (click)=\"onUpdateProfilePicture();\">\r\n <i class=\"far fa-pen\"></i>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"app-margin-top-15\" style=\"position: relative;\" *ngIf=\"AccountDetails\">\r\n <div class=\"card card-body app-no-margin app-padding-15\">\r\n <div class=\"row\">\r\n <div *ac=\"'R:Jace Admin'\" class=\"user-roles-btn\" [matTooltip]=\"'Visualizza Ruoli e Permessi'\" matTooltipPosition=\"above\" (click)=\"onShowAccountRoles();\">\r\n <i class=\"far fa-book-user\"></i>\r\n </div>\r\n <div class=\"col-md-6\"><labeled-span [Label]=\"'Utente' | localize : lc\" Display=\"Vertical\">{{AccountDetails.username}}</labeled-span></div>\r\n <div class=\"col-md-6\"><labeled-span [Label]=\"'Tenant' | localize : lc\" Display=\"Vertical\">{{AccountDetails.idtenant}}</labeled-span></div>\r\n <div class=\"col-md-6 app-margin-top-10\"><labeled-span [Label]=\"'Nome' | localize : lc\" Display=\"Vertical\">{{AccountDetails.firstname}}</labeled-span></div>\r\n <div class=\"col-md-6 app-margin-top-10\"><labeled-span [Label]=\"'Cognome' | localize : lc\" Display=\"Vertical\">{{AccountDetails.lastname}}</labeled-span> </div>\r\n <div class=\"col-md-12 app-margin-top-10\"><labeled-span [Label]=\"'Email' | localize : lc\" Display=\"Vertical\">{{AccountDetails.recoveryemail || 'Non disponibile'}}</labeled-span></div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"app-margin-top-10 row\">\r\n <div class=\"col-md-6\" style=\"padding-right: 5px;\">\r\n <button type=\"button\" style=\"width: 100%;\" class=\"btn btn-primary\" (click)=\"onUpdatePassword()\">Modifica Password</button>\r\n </div>\r\n <div class=\"col-md-6\" style=\"padding-left: 5px;\">\r\n <button type=\"button\" style=\"width: 100%;\" class=\"btn btn-primary\" (click)=\"onUpdateRecoverySettings()\">Modifica Email</button>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n<!--Update Password-->\r\n<es-modal #dlgUpdatePassword [Size]=\"'M'\">\r\n <es-modal-head (Close)=\"dlgUpdatePassword.hide();\">\r\n <h5 class=\"modal-title pull-left\">Modifica Password</h5>\r\n </es-modal-head>\r\n <form *ngIf=\"UpdatePasswordDTO\" #formUpdatePassword=\"ngForm\" (ngSubmit)=\"formUpdatePassword.valid && doUpdatePassword()\">\r\n <div class=\"modal-body lastfix\">\r\n <form-input [Password]=\"true\" [Label]=\"'Password' | localize: lc\" [(ngModel)]=\"UpdatePasswordDTO.oldpwd\" name=\"oldpw\" required></form-input>\r\n <form-input [Password]=\"true\" [Label]=\"'Nuova Password' | localize: lc\" [(ngModel)]=\"UpdatePasswordDTO.newpwd\" name=\"newpw\" required></form-input>\r\n <form-input [Password]=\"true\" [Label]=\"'Conferma Password' | localize: lc\" [(ngModel)]=\"UpdatePasswordDTO.confirmpwd\" name=\"confpw\" required></form-input>\r\n <!--Validazione Custom-->\r\n <div *ngIf=\"CustomError\" class=\"app-white-text app-margin-top-15 app-margin-bottom-0 card app-padding-10 card-danger\">\r\n <strong>{{'Error' | localize : lc}}: </strong>{{CustomError}}\r\n </div>\r\n </div>\r\n <div class=\"modal-footer\">\r\n <button type=\"button\" class=\"btn btn-secondary app-margin-right-10\" (click)=\"dlgUpdatePassword.hide();\">{{'Cancel' | localize : lc}}</button>\r\n <button type=\"submit\" class=\"btn btn-primary\">Conferma</button>\r\n </div>\r\n </form>\r\n</es-modal>\r\n\r\n<!--Update Extra Info-->\r\n<es-modal #dlgUpdateRecoverySettings [Size]=\"'M'\">\r\n <es-modal-head (Close)=\"dlgUpdateRecoverySettings.hide();\">\r\n <h5 class=\"modal-title pull-left\">{{'Modifica Email' | localize : lc}}</h5>\r\n </es-modal-head>\r\n <form *ngIf=\"UpdateRecoverySettingsDTO\" #formUpdateInfos=\"ngForm\" (ngSubmit)=\"formUpdateInfos.valid && doUpdateRecoverySettings()\">\r\n <div class=\"modal-body lastfix\">\r\n <form-input [LabelInputRatio]=\"'3 9'\" [Label]=\"'Email' | localize: lc\" [(ngModel)]=\"UpdateRecoverySettingsDTO.email\" name=\"email\"></form-input>\r\n </div>\r\n <div class=\"modal-footer\">\r\n <button type=\"button\" class=\"btn btn-secondary app-margin-right-10\" (click)=\"dlgUpdateRecoverySettings.hide();\">{{'Cancel' | localize : lc}}</button>\r\n <button type=\"submit\" class=\"btn btn-primary\">Conferma</button>\r\n </div>\r\n </form>\r\n</es-modal>\r\n\r\n<!--Upload Picture-->\r\n<es-modal #dlgUpdateProfilePicture [Size]=\"'M'\">\r\n <es-modal-head (Close)=\"dlgUpdateProfilePicture.hide();\">\r\n <h5 class=\"modal-title pull-left\">{{'Carica Avatar' | localize : lc}}</h5>\r\n </es-modal-head>\r\n <form *ngIf=\"UpdateProfilePictureDTO\" #formUpdateProfilePicture=\"ngForm\" (ngSubmit)=\"formUpdateProfilePicture && doUpdateProfilePicture();\">\r\n <div class=\"modal-body lastfix\">\r\n <form-file Label=\"File\" [FancyMode]=\"true\" [(ngModel)]=\"UpdateProfilePictureDTO.image\" name=\"up_file\"></form-file>\r\n </div>\r\n <div class=\"modal-footer\">\r\n <button type=\"button\" class=\"btn btn-danger\" style=\"margin-right: auto;\" (click)=\"onDeleteProfilePicture();\">{{'Rimuovi' | localize : lc}}</button>\r\n <button type=\"button\" class=\"btn btn-secondary app-margin-right-10\" (click)=\"dlgUpdateProfilePicture.hide();\">{{'Cancel' | localize : lc}}</button>\r\n <button type=\"submit\" class=\"btn btn-primary\">{{'Save' | localize : lc}}</button>\r\n </div>\r\n </form>\r\n</es-modal>\r\n\r\n<!--Ruoli e Permessi-->\r\n<es-modal #dlgShowAccountRoles [Size]=\"'L'\">\r\n <es-modal-head (Close)=\"dlgShowAccountRoles.hide();\">\r\n <h5 class=\"modal-title pull-left\">{{'Ruoli e Permessi' | localize : lc}}</h5>\r\n </es-modal-head>\r\n <div class=\"modal-body\" style=\"max-height: 600px; overflow-y: auto;\">\r\n <div class=\"row\">\r\n <div class=\"col-md-6\" *ngIf=\"AccountRoles\">\r\n <labeled-span [Label]=\"'Ruoli'\" Display=\"Vertical\">\r\n <div *ngFor=\"let r of AccountRoles;\">{{r}}</div>\r\n </labeled-span>\r\n </div>\r\n <div class=\"col-md-6\" *ngIf=\"AccountPermissions\">\r\n <labeled-span [Label]=\"'Permessi'\" Display=\"Vertical\">\r\n <div *ngFor=\"let p of AccountPermissions;\">{{p}}</div>\r\n </labeled-span>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"modal-footer\">\r\n <button type=\"button\" class=\"btn btn-secondary\" (click)=\"dlgShowAccountRoles.hide();\">{{'Chiudi' | localize : lc}}</button>\r\n </div>\r\n</es-modal>","// Angular\r\nimport { Component, EventEmitter, Input, Output } from \"@angular/core\";\r\nimport { ClipboardService, MessageService } from \"@esfaenza/extensions\";\r\nimport { KeyValue } from \"@esfaenza/core/domain\";\r\nimport { NgFor, NgIf } from \"@angular/common\";\r\n\r\n@Component({\r\n selector: \"filters-topbar\",\r\n templateUrl: \"./filters-topbar.component.html\",\r\n styleUrls: [\"./filters-topbar.component.scss\"],\r\n standalone: true,\r\n imports: [NgIf, NgFor]\r\n})\r\nexport class FiltersHorizontalComponent {\r\n @Input() searchView: any = null;\r\n @Input() sources: { id: string, source: KeyValue[] }[] = [];\r\n @Input() DefaultFilters: string[] = [];\r\n @Output() onShowFilters: EventEmitter<void> = new EventEmitter<void>();\r\n @Output() onSendSearch: EventEmitter<void> = new EventEmitter<void>();\r\n\r\n public Filters: EstableFilter[] = [];\r\n\r\n public trackByFilter = (_: number, item: EstableFilter) => item.id + \"_\" + item.value;\r\n\r\n constructor(private cbs: ClipboardService, private msgs: MessageService) { }\r\n\r\n // ********************************* Public API *********************************\r\n\r\n public onUpdateFilters() {\r\n this.doUpdateFilters();\r\n }\r\n\r\n public onRemoveFilter(id: string) {\r\n this.doRemoveFilter(id);\r\n }\r\n\r\n public onClipboardCopy(item: EstableFilter) {\r\n return this.doClipboardCopy(item.value);\r\n }\r\n\r\n public onRemoveAllFilters() {\r\n this.doRemoveAllFilters();\r\n }\r\n\r\n // ********************************* Private API *********************************\r\n\r\n private doUpdateFilters() {\r\n let keys = Object.keys(this.searchView).filter(f => f.startsWith(\"filter\"));\r\n this.Filters = [];\r\n this.Filters = keys.map(m => {\r\n let value = this.sources.find(x => x.id == m)?.source.find(y => y.id == this.searchView[m])?.description ?? this.searchView[m];\r\n return new EstableFilter(m, this.searchView[m + \"_label\"], value, this.DefaultFilters.includes(m));\r\n }).filter(f => {\r\n return f.value;\r\n });\r\n }\r\n\r\n private doRemoveFilter(id: string, update: boolean = false) {\r\n if (this.DefaultFilters.includes(id)) return;\r\n\r\n this.searchView[id] = \"\";\r\n if(!update)\r\n this.doUpdateFilters();\r\n }\r\n\r\n private doClipboardCopy(value: string) {\r\n this.cbs.copyTextToClipboard(value);\r\n this.msgs.simpleInfo(`Testo copiato!`); // TODO: Toast\r\n return false;\r\n }\r\n\r\n private doRemoveAllFilters() {\r\n let keys = Object.keys(this.searchView).filter(f => f.startsWith(\"filter\"));\r\n keys.forEach(k => { \r\n this.doRemoveFilter(k, true);\r\n this.doUpdateFilters();\r\n });\r\n }\r\n\r\n // ************************** Private API, used by HTML **************************\r\n\r\n emitShowFilters() {\r\n this.onShowFilters.emit();\r\n }\r\n\r\n emitSendSearch() {\r\n this.onSendSearch.emit();\r\n }\r\n}\r\n\r\n// TODO: Spostare nella classe\r\nexport class EstableFilter {\r\n constructor(\r\n public id: string,\r\n public label: string,\r\n public value: string,\r\n public isdefault: boolean) {\r\n }\r\n}","<div class=\"es-table-filters app-margin-top-10 d-flex\">\r\n <div class=\"d-flex\">\r\n <div *ngIf=\"Filters.length > 0\" class=\"filters-floating-display\" (click)=\"onRemoveAllFilters();\">\r\n <span>Rimuovi filtri</span> <i class=\"far fa-broom-wide\" style=\"font-size: 12px;\"></i>\r\n </div>\r\n <div *ngFor=\"let f of Filters; trackBy: trackByFilter\" class=\"filters-floating-display\"\r\n [class.filters-floating-display-default]=\"f.isdefault\" (contextmenu)=\"onClipboardCopy(f);\"\r\n (click)=\"onRemoveFilter(f.id);\">\r\n <span>{{f.label}}: {{f.value}}</span> \r\n <i *ngIf=\"!f.isdefault\" class=\"far fa-close\"></i>\r\n </div>\r\n </div>\r\n <div class=\"d-flex\" style=\"margin-left: auto;\">\r\n <button class=\"filters-btn\" (click)=\"emitShowFilters()\" [disabled]=\"searchView.searchinprogress\">\r\n <i class=\"far fa-filter\"></i>\r\n </button>\r\n <button class=\"filters-btn app-margin-left-10\" (click)=\"emitSendSearch();\" [disabled]=\"searchView.searchinprogress\">\r\n <i *ngIf=\"!searchView.searchinprogress\" class=\"far fa-search\"></i>\r\n <i *ngIf=\"searchView.searchinprogress\" class=\"far fa-spinner fa-spin\"></i>\r\n </button>\r\n </div>\r\n</div>","// Angular\r\nimport { Component, EventEmitter, Input, Output } from \"@angular/core\";\r\nimport { UtilityService } from \"@esfaenza/extensions\";\r\nimport { animate, animation, style, transition, trigger, useAnimation } from \"@angular/animations\";\r\nimport { NgIf } from \"@angular/common\";\r\n\r\n// Animazione\r\nexport const SlideInFromRight = animation([\r\n style({ right: -400 }),\r\n animate('0.4s ease-out', style({ right: 0 }))\r\n]);\r\n\r\n@Component({\r\n selector: \"filters-sidebar\",\r\n templateUrl: \"./filters-sidebar.component.html\",\r\n styleUrls: [\"./filters-sidebar.component.scss\"],\r\n animations: [\r\n trigger(\"FiltersAnimation\", [\r\n transition(\":enter\", [useAnimation(SlideInFromRight)])\r\n ])\r\n ],\r\n standalone: true,\r\n imports: [NgIf]\r\n})\r\nexport class FiltersVerticalComponent {\r\n @Input() searchView: any;\r\n @Input() DefaultFilters: string[] = [];\r\n @Input() Title: string = \"Filtri\";\r\n @Input() Description: string = \"Impostare qui i filtri di interesse\";\r\n @Output() onSendSearch: EventEmitter<void> = new EventEmitter<void>();\r\n\r\n public BackupView: any;\r\n\r\n constructor(private utiExts: UtilityService) { }\r\n\r\n // ************************** Public API **************************\r\n\r\n public onShowFilters() {\r\n this.doShowFilters();\r\n }\r\n\r\n public onHideFilters(confirm: boolean) {\r\n this.doHideFilters(confirm);\r\n }\r\n\r\n // ************************** Private API **************************\r\n\r\n private doShowFilters() {\r\n this.BackupView = this.utiExts.deepClone(this.searchView);\r\n }\r\n\r\n private doHideFilters(confirm: boolean) {\r\n if (confirm) { this.onSendSearch.emit(); }\r\n else { this.searchView = this.utiExts.deepClone(this.BackupView); }\r\n this.BackupView = null;\r\n }\r\n}","<div *ngIf=\"!!BackupView\" class=\"filters-backdrop app-no-selection\">\r\n <div [@FiltersAnimation] class=\"filters-container\">\r\n <div class=\"filters-header\">\r\n <div class=\"filters-close\" (click)=\"onHideFilters(false)\"><i class=\"far fa-close\"></i></div>\r\n <div class=\"filters-header-title\">{{Title}}</div>\r\n <div class=\"filters-header-desc\">{{Description}}</div>\r\n </div>\r\n <form>\r\n <div class=\"filters-body\">\r\n <ng-content></ng-content>\r\n </div>\r\n <div class=\"filters-footer\">\r\n <button type=\"submit\" class=\"filters-button-main\" (click)=\"onHideFilters(true)\">Ricerca con i filtri applicati</button>\r\n </div>\r\n </form>\r\n </div>\r\n</div>","// Angular\r\nimport { NgIf } from \"@angular/common\";\r\nimport { Component, Input } from \"@angular/core\";\r\n\r\n@Component({\r\n selector: \"filters-sidebar-section\",\r\n templateUrl: \"./filters-sidebar-section.component.html\",\r\n styleUrls: [\"./filters-sidebar-section.component.scss\"],\r\n standalone: true,\r\n imports: [NgIf]\r\n})\r\nexport class FiltersVerticalSectionComponent {\r\n @Input() Title: string = \"Placeholder\";\r\n\r\n isCollapsed: boolean = false;\r\n\r\n constructor() { }\r\n\r\n public onCollapse() {\r\n this.isCollapsed = !this.isCollapsed;\r\n }\r\n}","<div class=\"filters-section\">\r\n <div class=\"filters-section-title\">\r\n <div class=\"app-bold\">{{Title}}</div>\r\n <div class=\"filters-section-title-caret\">\r\n <i class=\"far\" (click)=\"onCollapse()\" [class.fa-caret-down]=\"!isCollapsed\" [class.fa-caret-up]=\"isCollapsed\"></i>\r\n </div>\r\n </div>\r\n <div *ngIf=\"!isCollapsed\" class=\"app-margin-top-5\">\r\n <ng-content></ng-content>\r\n </div>\r\n</div>","// Angular\r\n\r\nexport class EsFiltersService {\r\n private SearchViews: { [id: string]: { view: any } }[] = [];\r\n\r\n constructor() { }\r\n\r\n setView(sv: any, name: string) {\r\n console.log(\"Assegno alla SearchView della service: \" + JSON.stringify(sv));\r\n if (this.SearchViews[name]) this.SearchViews[name].view = sv;\r\n else {\r\n this.SearchViews[name] = { view: sv };\r\n }\r\n }\r\n\r\n getView(name: string) {\r\n console.log(\"Ottengo valore della SearchView della service: \" + JSON.stringify(this.SearchViews[name].view));\r\n return this.SearchViews[name].view;\r\n }\r\n}","// Angular\r\nimport { Component, Input } from \"@angular/core\";\r\nimport { EsFiltersService } from \"../es-filters/es-filters.service\";\r\nimport { KeyValue } from \"@esfaenza/core/domain\";\r\nimport { FormsAndValidationsModule } from \"@esfaenza/forms-and-validations\";\r\nimport { FormsModule } from \"@angular/forms\";\r\nimport { NgIf } from \"@angular/common\";\r\n\r\n@Component({\r\n selector: \"filters-sidebar-item\",\r\n templateUrl: \"./filters-sidebar-item.component.html\",\r\n styleUrls: [\"./filters-sidebar-item.component.scss\"],\r\n standalone: true,\r\n imports: [FormsModule, FormsAndValidationsModule, NgIf]\r\n})\r\nexport class FiltersVerticalItemComponent {\r\n @Input() SearchView: any;\r\n @Input() Required: boolean = false;\r\n @Input() propName: string = \"\";\r\n @Input() type: \"input\" | \"select\" | \"multiselect\" | \"date\" | \"boolean\" = \"input\";\r\n @Input() source: KeyValue[] = [];\r\n\r\n get labelName(): string { return this.propName + \"_label\"; }\r\n\r\n constructor(private filtersService: EsFiltersService) { }\r\n\r\n ngOnInit() {\r\n //this.SearchView = this.filtersService.getView(this.ViewName);\r\n }\r\n}","<!--TODO: multiselect-->\r\n<ng-container *ngIf=\"type == 'input'\">\r\n <form-input [Validation]=\"false\" [Placeholder]=\"'...'\" [FloatingLabel]=\"false\" [LabelInputRatio]=\"'0 12'\"\r\n [(ngModel)]=\"SearchView[propName]\" [Label]=\"' ' + SearchView[labelName]\"\r\n [name]=\"propName\" [required]=\"Required\"></form-input>\r\n</ng-container>\r\n<ng-container *ngIf=\"type == 'select'\">\r\n <form-select [Validation]=\"false\" [Placeholder]=\"'...'\" [FloatingLabel]=\"false\" [LabelInputRatio]=\"'0 12'\"\r\n [(ngModel)]=\"SearchView[propName]\" [Label]=\"' ' + SearchView[labelName]\"\r\n [Source]=\"source\" [name]=\"propName\" [required]=\"Required\"></form-select>\r\n</ng-container>\r\n<ng-container *ngIf=\"type == 'date'\">\r\n <form-date [Validation]=\"false\" [FloatingLabel]=\"false\" [LabelInputRatio]=\"'0 12'\"\r\n [(ngModel)]=\"SearchView[propName]\" [Label]=\"' ' + SearchView[labelName]\"\r\n [name]=\"propName\" [required]=\"Required\"></form-date>\r\n</ng-container>\r\n<ng-container *ngIf=\"type == 'boolean'\">\r\n <form-checkbox [Validation]=\"false\" [FloatingLabel]=\"false\" [LabelInputRatio]=\"'0 12'\"\r\n [(ngModel)]=\"SearchView[propName]\" [Label]=\"' ' + SearchView[labelName]\"\r\n [name]=\"propName\" [required]=\"Required\"></form-checkbox>\r\n</ng-container>","// Angular\r\nimport { Component, EventEmitter, Input, Output, ViewChild } from \"@angular/core\";\r\nimport { EsFiltersService } from \"./es-filters.service\";\r\nimport { FiltersHorizontalComponent } from \"../filters-topbar/filters-topbar.component\";\r\nimport { FiltersVerticalComponent } from \"../filters-sidebar/filters-sidebar.component\";\r\nimport { KeyValue } from \"@esfaenza/core/domain\";\r\nimport { CommonModule } from \"@angular/common\";\r\n\r\n@Component({\r\n selector: \"es-filters\",\r\n templateUrl: \"./es-filters.component.html\",\r\n providers: [EsFiltersService],\r\n standalone: true,\r\n imports: [CommonModule, FiltersVerticalComponent, FiltersHorizontalComponent]\r\n})\r\nexport class EsFiltersComponent {\r\n @Input() SearchView: any;\r\n @Input() DefaultFilters: string[] = [];\r\n @Input() Title: string = \"Filtri\";\r\n @Input() Description: string = \"Impostare qui i filtri di interesse\";\r\n\r\n @Output() onSendSearch: EventEmitter<void> = new EventEmitter<void>();\r\n\r\n @ViewChild(FiltersHorizontalComponent) filters_h: FiltersHorizontalComponent;\r\n @ViewChild(FiltersVerticalComponent) filters_v: FiltersVerticalComponent;\r\n\r\n // TODO: Automatico\r\n @Input() Sources: { id: string, source: KeyValue[] }[] = [];\r\n\r\n constructor(private filtersService: EsFiltersService) { }\r\n\r\n ngOnInit() {\r\n //this.filtersService.setView(this.SearchView, \"search\");\r\n }\r\n\r\n public onUpdateFiltersTop() {\r\n this.filters_h.onUpdateFilters();\r\n }\r\n\r\n public onShowFilters() {\r\n this.filters_v.onShowFilters();\r\n }\r\n\r\n emitSendSearch() {\r\n this.onSendSearch.emit();\r\n }\r\n}","<filters-topbar [searchView]=\"SearchView\" (onSendSearch)=\"emitSendSearch();\" (onShowFilters)=\"onShowFilters();\" [DefaultFilters]=\"DefaultFilters\" [sources]=\"Sources\"></filters-topbar>\r\n<filters-sidebar [searchView]=\"SearchView\" (onSendSearch)=\"emitSendSearch();\" [DefaultFilters]=\"DefaultFilters\" [Title]=\"Title\" [Description]=\"Description\">\r\n <ng-content></ng-content>\r\n</filters-sidebar>","// Angular\r\nimport { NgModule } from \"@angular/core\";\r\nimport { MatSlideToggleModule } from \"@angular/material/slide-toggle\";\r\nimport { RouterModule } from \"@angular/router\";\r\nimport { CommonModule } from \"@angular/common\";\r\nimport { FormsModule } from \"@angular/forms\";\r\n\r\n// Es faenza\r\nimport { LocalizationModule } from \"@esfaenza/localizations\";\r\nimport { EsTableModule } from \"@esfaenza/es-table\";\r\nimport { FormsAndValidationsModule } from \"@esfaenza/forms-and-validations\";\r\n\r\n// Libs \r\nimport { ProgressbarModule } from \"ngx-bootstrap/progressbar\";\r\nimport { BsDropdownModule } from \"ngx-bootstrap/dropdown\";\r\nimport { ModalModule } from \"ngx-bootstrap/modal\";\r\n\r\n// Componenti\r\nimport { BackTop } from \"./page-structure/back-top/back-top.component\";\r\nimport { Breadcrumb } from \"./page-structure/breadcrumb/breadcrumb.component\";\r\nimport { PageNotFoundComponent } from \"./page-structure/error/404/pagenotfound.component\";\r\nimport { ServerErrorComponent } from \"./page-structure/error/500/servererror.component\";\r\nimport { AngularErrorComponent } from \"./page-structure/error/Angular/angularerror.component\";\r\nimport { PagesComponent } from \"./page-structure/page/pages.component\";\r\nimport { ExternalPagesComponent } from \"./page-structure/external-page/external_pages.component\";\r\nimport { JaceLoginComponent } from \"./page-structure/jace-login/jace-login.component\";\r\nimport { JaceModulesBoardComponent } from \"./page-structure/navbar/modules-board/jace-modules-board.component\";\r\nimport { Navbar } from \"./page-structure/navbar/navbar.component\";\r\nimport { JaceResourceComponent } from \"./page-structure/jace-resource/jace-resource.component\";\r\nimport { RedirecterComponent } from \"./page-structure/redirecter/redirecter.component\";\r\nimport { Sidebar } from \"./page-structure/sidebar/sidebar.component\";\r\nimport { EsModalComponent } from \"./es-modal/es-modal.component\";\r\nimport { EsModalHeadComponent } from \"./es-modal/es-modal-head/es-modal-head.component\";\r\nimport { FiltersHorizontalComponent } from \"./search/filters-topbar/filters-topbar.component\";\r\nimport { FiltersVerticalComponent } from \"./search/filters-sidebar/filters-sidebar.component\";\r\nimport { FiltersVerticalSectionComponent } from \"./search/filters-sidebar-section/filters-sidebar-section.component\";\r\nimport { FiltersVerticalItemComponent } from \"./search/filters-sidebar-item/filters-sidebar-item.component\";\r\nimport { EsFiltersComponent } from \"./search/es-filters/es-filters.component\";\r\nimport { OperationsMenuComponent } from \"./operations/ops-menu/ops-menu.component\";\r\nimport { OperationsMenuOperationComponent } from \"./operations/ops-menu-operation/ops-menu-operation.component\";\r\nimport { OperationsMenuCategoryComponent } from \"./operations/ops-menu-category/ops-menu-category.component\";\r\n\r\n// Core\r\nimport { DirectivesModule } from \"@esfaenza/core/directives\";\r\nimport { LabeledSpanComponent } from \"./span/labeled-span/labeled-span.component\";\r\n\r\nconst COMPONENTS = [\r\n BackTop,\r\n Breadcrumb,\r\n PageNotFoundComponent,\r\n ServerErrorComponent,\r\n AngularErrorComponent,\r\n PagesComponent,\r\n ExternalPagesComponent,\r\n JaceLoginComponent,\r\n JaceModulesBoardComponent,\r\n Navbar,\r\n RedirecterComponent,\r\n Sidebar,\r\n JaceResourceComponent,\r\n EsModalComponent,\r\n EsModalHeadComponent,\r\n FiltersHorizontalComponent,\r\n FiltersVerticalComponent,\r\n FiltersVerticalSectionComponent,\r\n FiltersVerticalItemComponent,\r\n EsFiltersComponent,\r\n OperationsMenuComponent,\r\n OperationsMenuCategoryComponent,\r\n OperationsMenuOperationComponent,\r\n LabeledSpanComponent\r\n];\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule, \r\n RouterModule, \r\n FormsModule, \r\n DirectivesModule, \r\n LocalizationModule, \r\n ProgressbarModule, \r\n MatSlideToggleModule, \r\n BsDropdownModule, \r\n EsTableModule, \r\n ModalModule,\r\n FormsAndValidationsModule,\r\n ...COMPONENTS],\r\n exports: [...COMPONENTS]\r\n})\r\nexport class ComponentsModule { }","import { Directive, Injector, ViewChild } from \"@angular/core\";\r\nimport { ActivatedRoute } from \"@angular/router\";\r\nimport { AppSearch } from \"@esfaenza/es-table\";\r\nimport { UtilityService } from \"@esfaenza/extensions\";\r\nimport { HTTPService } from \"@esfaenza/httpservice\";\r\nimport { CacheService } from \"@esfaenza/preferences\";\r\nimport { combineLatest, Subscription } from \"rxjs\";\r\nimport { Location } from \"@angular/common\";\r\n\r\n// Componenti Interni\r\nimport { EsFiltersComponent } from \"../es-filters/es-filters.component\";\r\nimport { BaseComponent } from \"../../page-structure/base/base.component\";\r\n\r\n@Directive()\r\nexport abstract class BaseSearchComponent<TSearch extends AppSearch<TItem>, TItem> extends BaseComponent {\r\n @ViewChild(EsFiltersComponent, { static: false }) filters: EsFiltersComponent;\r\n\r\n public searchView: TSearch = null;\r\n\r\n protected HotView: string;\r\n protected SearchURL: string;\r\n protected SearchType: new () => TSearch;\r\n\r\n private StorageSub: Subscription;\r\n\r\n private location: Location;\r\n private localStorage: CacheService;\r\n protected http: HTTPService;\r\n private route: ActivatedRoute;\r\n protected utiExts: UtilityService;\r\n\r\n constructor(injector: Injector) {\r\n super(injector);\r\n\r\n this.location = injector.get(Location);\r\n this.localStorage = injector.get(CacheService);\r\n this.http = injector.get(HTTPService);\r\n this.route = injector.get(ActivatedRoute);\r\n this.utiExts = injector.get(UtilityService);\r\n }\r\n\r\n ngOnInit() {\r\n this.StorageSub = combineLatest(this.route.queryParams, this.route.params, (querypars, pars) => ({ querypars, pars })).subscribe(res => {\r\n // TODO: Salvare fuori res.querypars e res.pars se servono in modo da poterli usare quando servono\r\n this.onInit(res.querypars[\"ignoreStorage\"]);\r\n });\r\n }\r\n\r\n override ngOnDestroy() {\r\n super.ngOnDestroy();\r\n\r\n if(this.StorageSub)\r\n this.StorageSub.unsubscribe();\r\n }\r\n\r\n async onInit(ignoreStorage) {\r\n await this.getCombos();\r\n this.doInit(ignoreStorage);\r\n }\r\n\r\n async doInit(ignoreStorage) {\r\n let item = await this.localStorage.getItem<TSearch>(this.HotView).toPromise();\r\n if (!ignoreStorage && item) {\r\n item[\"__proto__\"] = new this.SearchType();\r\n this.init(item);\r\n } else {\r\n this.init(null);\r\n this.location.replaceState(this.getRedirectUrl());\r\n await this.localStorage.removeItem(this.HotView).toPromise();\r\n }\r\n }\r\n\r\n init(HotPotato: TSearch) {\r\n if (HotPotato) {\r\n this.searchView = HotPotato;\r\n }\r\n else {\r\n this.searchView = new this.SearchType();\r\n this.searchView.page = 1;\r\n this.setDefaultFilters(this.searchView);\r\n }\r\n }\r\n\r\n sendSearch() {\r\n debugger;\r\n let keepProto = this.searchView[\"__proto__\"];\r\n this.searchView = AppSearch.newref(this.searchView);\r\n this.searchView[\"__proto__\"] = keepProto;\r\n }\r\n\r\n // Chiamo onUpdateFiltersBar sia all'inizio che alla fine della chiamata, in quanto l'utente\r\n // pi� stronzo potrebbe cancellare il filtro durante il caricamento...\r\n onSearchRequest(resetPage: boolean = true) {\r\n this.filters.onUpdateFiltersTop();\r\n this.searchView.searchinprogress = true;\r\n if (resetPage)\r\n this.searchView.page = 1;\r\n\r\n //#region Questo mi serve per testare sul template\r\n if(!this.SearchURL) {\r\n let ret = this.utiExts.deepClone(this.searchView);\r\n ret.items = [\r\n <any>{ id: \"1\", description: \"Riga 1\" },\r\n <any>{ id: \"2\", description: \"Riga 2\" },\r\n <any>{ id: \"3\", description: \"Riga 3\" },\r\n ];\r\n\r\n setTimeout(() => {\r\n this.RetrieveProto(ret);\r\n this.searchView.searchinprogress = false;\r\n this.filters.onUpdateFiltersTop();\r\n this.localStorage.setItem(this.HotView, this.searchView).subscribe();\r\n }, 1500);\r\n } else\r\n //#endregion\r\n\r\n this.http.post<TSearch>(this.SearchURL, this.searchView).subscribe(t => {\r\n this.RetrieveProto(t)\r\n this.searchView.searchinprogress = false;\r\n this.filters.onUpdateFiltersTop();\r\n this.localStorage.setItem(this.HotView, this.searchView).subscribe();\r\n });\r\n }\r\n\r\n // Funzione per non perdere il proto dopo che il backend mi restituisce la sua searchView\r\n private RetrieveProto(res) {\r\n let keepProto = this.searchView[\"__proto__\"];\r\n this.searchView = res;\r\n this.searchView[\"__proto__\"] = keepProto;\r\n }\r\n\r\n abstract getCombos();\r\n abstract getRedirectUrl(): string;\r\n abstract setDefaultFilters(sv: TSearch);\r\n}","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i2","i1","i3","i4","i8","i5","takeUntil","i6","i1.EsFiltersService"],"mappings":"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"}
|