@esfaenza/core 19.2.153 → 19.2.155

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.
@@ -1 +1 @@
1
- {"version":3,"file":"esfaenza-core-components.mjs","sources":["../../../projects/core/components/src/back-top/back-top.component.ts","../../../projects/core/components/src/back-top/back-top.component.html","../../../projects/core/components/src/breadcrumb/breadcrumb.component.ts","../../../projects/core/components/src/breadcrumb/breadcrumb.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/error/errorpage.component.ts","../../../projects/core/components/src/error/errorpage.component.html","../../../projects/core/components/src/sidebar/sidebar.component.loc.ts","../../../projects/core/components/src/sidebar/sidebar.component.ts","../../../projects/core/components/src/sidebar/sidebar.component.html","../../../projects/core/components/src/navbar/navbar.component.loc.ts","../../../projects/core/components/src/base/reactive.component.ts","../../../projects/core/components/src/navbar/navbar.component.ts","../../../projects/core/components/src/navbar/navbar.component.html","../../../projects/core/components/src/page/pages.component.ts","../../../projects/core/components/src/page/pages.component.html","../../../projects/core/components/src/external-page/external_pages.component.ts","../../../projects/core/components/src/external-page/external_pages.component.html","../../../projects/core/components/src/jace-login/jace-login.component.ts","../../../projects/core/components/src/jace-login/jace-login.component.html","../../../projects/core/components/src/redirecter/redirecter.component.ts","../../../projects/core/components/src/redirecter/redirecter.component.html","../../../projects/core/components/src/base/base.component.ts","../../../projects/core/components/src/jace-resource/jace-resource.component.ts","../../../projects/core/components/src/jace-resource/jace-resource.component.html","../../../projects/core/components/src/labeled-span/labeled-span.component.ts","../../../projects/core/components/src/labeled-span/labeled-span.component.html","../../../projects/core/components/src/es-image-cropper/es-image-cropper.component.ts","../../../projects/core/components/src/es-image-cropper/es-image-cropper.component.html","../../../projects/core/components/src/selector/form-selector/form-selector.component.ts","../../../projects/core/components/src/selector/form-selector/form-selector.component.html","../../../projects/core/components/src/selector/form-selector-dialog/form-selector-dialog.component.ts","../../../projects/core/components/src/selector/form-selector-dialog/form-selector-dialog.component.html","../../../projects/core/components/src/entity-feeds-widget/entity-feeds-widget.component.ts","../../../projects/core/components/src/entity-feeds-widget/entity-feeds-widget.component.html","../../../projects/core/components/src/components.module.ts","../../../projects/core/components/src/base/embedding.component.ts","../../../projects/core/components/src/base/embedding.component.html","../../../projects/core/components/src/user_infos/user_infos.component.loc.ts","../../../projects/core/components/src/user_infos/user_infos.component.ts","../../../projects/core/components/src/user_infos/user_infos.component.html","../../../projects/core/components/src/selector/base/base-selector.component.ts","../../../projects/core/components/src/selector/base/base-selector.component.html","../../../projects/core/components/src/selector/base/models/BaseSelectorInitialization.ts","../../../projects/core/components/src/search/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 { ActivatedRoute, Data, NavigationEnd, Router, RouterLink, UrlTree } from \"@angular/router\";\r\nimport { Component, ViewEncapsulation } from \"@angular/core\";\r\nimport { Title } from \"@angular/platform-browser\";\r\nimport { NgFor, NgIf } from \"@angular/common\";\r\n\r\n// Configurazioni\r\nimport { AppEmbeddingExtensions } from \"@esfaenza/extensions\";\r\nimport { AppState } from \"@esfaenza/core/services\";\r\nimport { EnvOptions } from \"@esfaenza/core/domain\";\r\n\r\n// Librerie\r\nimport { filter, map, mergeMap } from \"rxjs/operators\";\r\nimport { of, combineLatest } from \"rxjs\";\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 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, private emb: AppEmbeddingExtensions) {\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\"] || data[\"internalNavigation\"];\r\n let title = data[\"title\"];\r\n\r\n this.handleNavigation(title, internalNavigation, tree);\r\n });\r\n\r\n this.emb.MessageObserver.pipe(filter(ev => ev.event == \"navigation\")).subscribe(event => {\r\n let internalNavigation = event?.data?.internalNavigation;\r\n let title = event?.data?.title;\r\n\r\n this.handleNavigation(title, internalNavigation);\r\n });\r\n }\r\n\r\n handleNavigation(title: string, internal: boolean, tree: UrlTree = null){\r\n if (internal) { this.onSubNavigation(tree, title); }\r\n else { this.onMainNavigation(tree, title); }\r\n this._titleService.setTitle(myconfig.AppData.ModuleDescription + (title ? (\" > \" + title) : ''));\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: tree ? this.getRouterLink(tree) : null });\r\n }\r\n\r\n onMainNavigation(tree: UrlTree, title: string) {\r\n this.SubLinks = [];\r\n this.MainLink = { title: title, routerLink: tree ? this.getRouterLink(tree) : null };\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 \r\n <ng-container *ngFor=\"let link of SubLinks\">\r\n <li *ngIf=\"link.routerLink\" class=\"breadcrumb-item text-uppercase breadcrumb-link\" [routerLink]=\"link.routerLink\">{{link.title}}</li>\r\n <li *ngIf=\"!link.routerLink\" class=\"breadcrumb-item text-uppercase breadcrumb-link\">{{link.title}}</li>\r\n </ng-container>\r\n</ol>","// 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 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() Backdrop: boolean = true;\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: Backdrop, 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\">&times;</span>\r\n </div>\r\n</div>","// Angular\r\nimport { Component, Inject, ViewEncapsulation } from \"@angular/core\";\r\nimport { ActivatedRoute, Router } from \"@angular/router\";\r\nimport { NgIf } from \"@angular/common\";\r\nimport { FormsModule } from \"@angular/forms\";\r\n\r\n// Configurazioni\r\nimport { HTTPService } from \"@esfaenza/httpservice\";\r\nimport { TokenService } from \"@esfaenza/core/services\";\r\nimport { AppEmbeddingExtensions, CallResult, MessageService } from \"@esfaenza/extensions\";\r\nimport { ANONYMOUS_MODE } from \"@esfaenza/core/domain\";\r\n\r\n// Modal\r\nimport { EsModalComponent } from \"../es-modal/es-modal.component\";\r\nimport { EsModalHeadComponent } from \"../es-modal/es-modal-head/es-modal-head.component\";\r\n\r\nconst POST_Jace_OpenTicket: string = \"/api/Jace/OpenTicket\";\r\n\r\n@Component({\r\n selector: \"errorpage\",\r\n encapsulation: ViewEncapsulation.None,\r\n templateUrl: \"./errorpage.component.html\",\r\n styleUrls: [\"./errorpage.component.scss\"],\r\n imports: [NgIf, EsModalComponent, EsModalHeadComponent, FormsModule]\r\n})\r\nexport class ErrorPageComponent {\r\n\r\n statusCode: string;\r\n statusText: string;\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 errorLastRequests: string;\r\n errorLastResponses: string;\r\n\r\n debugging = false;\r\n\r\n constructor(private router: Router, private route: ActivatedRoute, private msgService: MessageService, private http: HTTPService, private bts: TokenService, private emb: AppEmbeddingExtensions, @Inject(ANONYMOUS_MODE) public ANONYMOUS_MODE: boolean) {\r\n\r\n let identity = this.bts.getJaceIdentity();\r\n\r\n this.debugging = identity.Roles.some(t => t == \"Jace Admin\");\r\n this.statusCode = this.route.snapshot.params[\"statusCode\"];\r\n this.statusCode = this.statusCode == '9999' ? null : this.statusCode;\r\n this.statusText = this.b64DecodeUnicode(this.route.snapshot.params[\"statusText\"]);\r\n this.errorMessage = this.b64DecodeUnicode(this.route.snapshot.params[\"errorMessage\"]);\r\n \r\n this.previousUrl = this.route.snapshot.params[\"fromUrl\"];\r\n let calls = (this.http.LastThreeCompletedCalls[0]?.api || \"<empty>\") + \", \" + (this.http.LastThreeCompletedCalls[1]?.api || \"<empty>\") + \", \" + (this.http.LastThreeCompletedCalls[2]?.api || \"<empty>\");\r\n this.errorLastRequests = \"\\r\\n1: \" + (this.http.LastThreeCompletedCalls[0]?.requestJson || \"<empty>\") + \"\\r\\n2: \" + (this.http.LastThreeCompletedCalls[1]?.requestJson || \"<empty>\") + \"\\r\\n3: \" + (this.http.LastThreeCompletedCalls[2]?.requestJson || \"<empty>\");\r\n this.errorLastResponses = \"\\r\\n1: \" + (this.http.LastThreeCompletedCalls[0]?.responseJson || \"<empty>\") + \"\\r\\n2: \" + (this.http.LastThreeCompletedCalls[1]?.responseJson || \"<empty>\") + \"\\r\\n3: \" + (this.http.LastThreeCompletedCalls[2]?.responseJson || \"<empty>\");\r\n this.errorFrom = this.previousUrl || \"<missing>\";\r\n this.errorLastCalls = calls;\r\n this.identityInfos = (identity?.Idtenant || '??') + \"-\" + (identity?.DsUser || '???????');\r\n\r\n console.error(this.errorMessage);\r\n console.log(\"Modalità anonima: \" + this.ANONYMOUS_MODE)\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 if(!str) return \"\";\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.emb.Embedded)\r\n this.emb.MainWindow.postMessage({ type: \"navigate\", url }, \"*\");\r\n else\r\n this.router.navigate([url]);\r\n }\r\n\r\n\r\n public BugReportText = \"\";\r\n\r\n public canReport = true;\r\n\r\n openTicket(){\r\n let dto = {\r\n errorFrom: this.errorFrom,\r\n errorLastCalls: this.errorLastCalls,\r\n identityInfos: this.identityInfos,\r\n statusCode: this.statusCode,\r\n statusText: this.statusText,\r\n errorMessage: this.errorMessage,\r\n requests: this.errorLastRequests,\r\n responses: this.errorLastResponses,\r\n userMessage: this.BugReportText \r\n }\r\n\r\n this.http.post<CallResult>(POST_Jace_OpenTicket, dto).subscribe(r => {\r\n this.msgService.manageCallResultResponse(r, \"Segnalazione registrata correttamente\", \"Errori nella registrazione della segnalazione\", () => {\r\n this.canReport = false;\r\n });\r\n });\r\n return true;\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 <ng-container *ngIf=\"debugging\">\r\n <div class=\"card\">\r\n <div class=\"card-body text-center\">\r\n\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.\r\n Prova a ricaricare la pagina precedente e rieffettuare le stesse operazioni, se il\r\n problema persiste invia una segnalazione allegando una breve descrizione delle\r\n operazioni che stavi eseguendo\r\n </small>\r\n </h6>\r\n <div style=\"max-height: 450px; overflow-x: hidden; overflow-y: scroll; margin-bottom: 10px;\">\r\n <h6 class=\"card-title text-danger app-margin-top-10 text-left\" style=\"word-wrap:break-word\" *ngIf=\"identityInfos\"><em>Logged user: {{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>From page: {{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>Last three calls: {{errorLastCalls}}</em></h6>\r\n \r\n <!-- Errori Angular -->\r\n <ng-container *ngIf=\"errorMessage\">\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 </ng-container>\r\n\r\n <!-- Errori HTTP -->\r\n <ng-container *ngIf=\"statusCode || statusText\">\r\n <h1 class=\"display-1\" *ngIf=\"!statusCode\">&nbsp;&nbsp;&nbsp;</h1>\r\n <h1 class=\"display-1\" *ngIf=\"statusCode\">{{statusCode == '4041' ? 'Pagina non trovata' : ''}}</h1>\r\n <h6 class=\"card-title\" *ngIf=\"!statusText\">&nbsp;&nbsp;&nbsp;</h6>\r\n <h6 class=\"card-title\" style=\"word-wrap:break-word; max-height: 500px; overflow: auto\" *ngIf=\"statusText\">{{statusText}}</h6>\r\n </ng-container>\r\n </div>\r\n <div style=\"display: flex;\" *ngIf=\"!ANONYMOUS_MODE\">\r\n <button type=\"button\" class=\"btn btn-secondary\" yle=\"margin-right: auto;\" (click)=\"goPreviousPage()\">Torna alla pagina precedente</button>\r\n <button [hidden]=\"!canReport\" type=\"button\" class=\"btn btn-warning\" style=\"margin: auto;\" (click)=\"BugReportText = ''; dlgSegnalazione.show()\">Invia segnalazione</button>\r\n <button type=\"button\" class=\"btn btn-primary\" style=\"margin-left: auto;\" (click)=\"goDashboard()\">Vai alla Dashboard</button>\r\n <div class=\"clearfix\"></div>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n <ng-container *ngIf=\"!debugging\">\r\n <div class=\"error-container\">\r\n <div class=\"emoji\">😕</div>\r\n <h1>Qualcosa è andato storto</h1>\r\n <p>Si è verificato un errore imprevisto. Puoi inviare una segnalazione per aiutarci a risolverlo. </p>\r\n\r\n <div class=\"buttons\">\r\n <button class=\"report-btn btn-warning\" (click)=\"BugReportText = ''; dlgSegnalazione.show()\">Invia segnalazione</button>\r\n <button class=\"home-btn btn-primary\" (click)=\"goDashboard()\">Torna alla Dashboard</button>\r\n </div>\r\n </div>\r\n </ng-container>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n<es-modal #dlgSegnalazione [Size]=\"'L'\">\r\n <es-modal-head (Close)=\"dlgSegnalazione.hide();\">\r\n <h5 class=\"modal-title pull-left\">Invio Segnalazione</h5>\r\n </es-modal-head>\r\n <form novalidate #formAddEdit=\"ngForm\" (ngSubmit)=\"formAddEdit.valid && openTicket() && dlgSegnalazione.hide()\">\r\n <div class=\"modal-body\">\r\n <div class=\"card card-info app-padding-10 app-white-text\">\r\n Per inviare una segnalazione, si prega di inserire una descrizione dettagliata delle azioni effettuate.\r\n Non serve allegare nessun tipo di file/screenshot (in teoria...), tutte le informazioni richieste sono state già\r\n raccolte.\r\n </div>\r\n <textarea class=\"bugreport-textarea\" [(ngModel)]=\"BugReportText\" #report=\"ngModel\" name=\"BugReportText\" placeholder=\"Stavo navigando nella pagina e...\" required minlength=\"50\"></textarea>\r\n <div class=\"validation-message\" *ngIf=\"report.invalid && formAddEdit.submitted\">\r\n La descrizione delle azioni effettuate è obbligatoria e dev'essere almeno lunga una cinquantina di caratteri.\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)=\"dlgSegnalazione.hide();\">Annulla</button>\r\n <button type=\"submit\" class=\"btn btn-primary\">Conferma</button>\r\n </div>\r\n </form>\r\n</es-modal>","import { Injectable, Injector } from \"@angular/core\";\r\nimport { LocalizationService } from \"@esfaenza/localizations\";\r\n\r\n@Injectable()\r\nexport class SideBarLoc 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\", \"Ambiente di Sviluppo A\", [\"Development Environment A\"]);\r\n super.set(\"it->en\", \"Ambiente di Sviluppo B\", [\"Development Environment B\"]);\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 super.set(\"it->en\", \"Scrivere almeno 3 caratteri per utilizzare la ricerca globale\", [\"You must write at least 3 characters in order to use the Global Research\"]);\r\n }\r\n}","// 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 { EsTableColumnsDefinition, EsTableModule } from \"@esfaenza/es-table\";\r\nimport { FormsModule } from \"@angular/forms\";\r\nimport { SideBarLoc } from \"./sidebar.component.loc\";\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 viewProviders: [{ provide: LocalizationService, useClass: SideBarLoc }],\r\n imports: [SlimScroll, NgFor, NgTemplateOutlet, NgIf, RouterLinkActive, RouterLink, FormsModule, EsTableModule, LocalizationModule]\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 @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, private msgExts: MessageService) {\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 let menus = this.utiExts.deepClone(this.menuItemsRaw);\r\n\r\n // Giro 1 assegno il livello ai root\r\n for (let i = 0; i < menus.length; i++) {\r\n let t = menus[i] as any;\r\n t.level = 1;\r\n t.padding_left = 18;\r\n t.visible = !t.ac || this.aac.has(t.ac);\r\n\r\n // Giro ricorsivo\r\n if (t.subMenu && t.subMenu.length > 0)\r\n this.checkSubMenuOverClaims(t, 1);\r\n }\r\n\r\n return menus;\r\n }\r\n\r\n private checkSubMenuOverClaims(menuItem: ApplicationMenu, level: number) {\r\n for (let i = 0; i < menuItem.subMenu.length; i++) {\r\n let t = menuItem.subMenu[i] as any;\r\n t.level = level + 1;\r\n t.visible = !t.ac || this.aac.has(t.ac);\r\n t.padding_left = t.level * 18;\r\n if (t.subMenu && t.subMenu.length > 0)\r\n this.checkSubMenuOverClaims(t, level + 1);\r\n }\r\n }\r\n\r\n //#region JQuery\r\n @HostListener(\"window:resize\")\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 //#region Footer\r\n public onChangeTenant() {\r\n window.location.href = `${myconfig.AuthUrl}/#/login;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 async 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 await this.profile.doReloadProfilePicture();\r\n this.cdr.markForCheck();\r\n }\r\n }\r\n //#endregion\r\n\r\n //#region Gestione Ricerca Globale\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 this.searchingTerm = true;\r\n this.searchResult = null;\r\n\r\n if (!this.globalSearchService.Enabled)\r\n return;\r\n\r\n if (this.searchTerm.trim().length < 3) {\r\n this.msgExts.simpleWarning(this.lc.loc(\"Scrivere almeno 3 caratteri per utilizzare la ricerca globale\"));\r\n return;\r\n }\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 // Short-circuit in assenza di risultati\r\n if ((this.searchResult.results.length || 0) === 0) {\r\n this.cdr.markForCheck();\r\n return;\r\n }\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 this.cdr.markForCheck();\r\n });\r\n });\r\n }\r\n\r\n onSearchModelChanged() {\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 this.cdr.markForCheck();\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 this.cdr.markForCheck();\r\n });\r\n }\r\n //#endregion\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 <ng-container *ngIf=\"!isMenuCollapsed\">\r\n <img class=\"app-logo-img\" src=\"assets/img/logo/headlogo_small.png\" alt=\"\">\r\n <div class=\"app-logo-font-container\">\r\n <span class=\"app-logo-font\">{{applicationName}}</span>\r\n </div>\r\n </ng-container>\r\n \r\n <img *ngIf=\"isMenuCollapsed\" class=\"app-logo-img-sm\" src=\"assets/img/logo/headlogo_small.png\" alt=\"\">\r\n </div>\r\n </div>\r\n <!--Ricerca globale-->\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 + (isMenuCollapsed ? 55 : 0)}\">\r\n <ng-container *ngFor=\"let item of menuItems; let last = last;\">\r\n <li *ngIf=\"item.visible\" 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 </ng-container>\r\n </ul>\r\n <!--Selettore Barra dei Menu-->\r\n <div class=\"sidebar-hover-elem\"></div>\r\n <!--Footer *ngIf=\"!isMenuCollapsed\"-->\r\n <div 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 [style.padding.px]=\"isMenuCollapsed ? 5 : 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 <!-- Da valutare -->\r\n <!-- <img src='../assets/img/events/christmas.png' alt=\"user-img\" class=\"img-circle user-img app-absolute app-right-0\" [style.right.px]=\"undefined\" *ngIf=\"_state.christmasTime()\">\r\n <img src='../assets/img/events/halloween.png' alt=\"user-img\" class=\"img-circle user-img app-absolute app-right-0\" [style.right.px]=\"undefined\" *ngIf=\"_state.halloweenTime()\"> -->\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\" [style.display]=\"isMenuCollapsed ? 'inline' : 'flex'\">\r\n <div (click)=\"onChangeTenant();\" class=\"app-sidebar-footer-op app-no-selection\" [style.margin-top.px]=\"isMenuCollapsed ? 10 : 0\"><i class=\"far fa-right-left\"></i><span *ngIf=\"!isMenuCollapsed\">&nbsp;Cambia Tenant</span></div>\r\n <div (click)=\"onLogout();\" class=\"app-sidebar-footer-op app-no-selection\" [style.margin-top.px]=\"isMenuCollapsed ? 10 : 0\"><i class=\"far fa-right-from-bracket\"></i><span *ngIf=\"!isMenuCollapsed\">&nbsp;Logout</span></div>\r\n </div>\r\n <!--Versione corrente applicazione-->\r\n <div *ngIf=\"!isMenuCollapsed\" 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 [style.padding-left.px]=\"item.padding_left\" *ngIf=\"(!item.routerLink && !item.subMenu) || item.wip\" [href]=\"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 [style.padding-left.px]=\"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 [style.padding-left.px]=\"item.padding_left\" *ngIf=\"item.subMenu && !item.wip\" (click.out-zone)=\"collapseMenu($event, item)\" [attr.href]=\"''\" class=\"sidebar-list-link {{item.cssClass || ''}}\" (mouseenter.out-zone)=\"hoverItem($event)\">\r\n <i *ngIf=\"item.icon\" class=\"{{ item.icon }}\"></i><span>{{ item.title | localize : lc }}</span>\r\n <b class=\"fa fa-angle-down\"></b>\r\n </a>\r\n\r\n <ul *ngIf=\"item.subMenu\" class=\"sidebar-sublist\">\r\n <ng-container *ngFor=\"let subitem of item.subMenu\" >\r\n <li *ngIf=\"subitem.visible\" class=\"sidebar-sublist-item level-{{item.level}}\" [class.sidebar-item-wip]=\"subitem.wip\">\r\n <ng-container *ngTemplateOutlet=\"menuItem; context : {$implicit: subitem}\"></ng-container>\r\n </li>\r\n </ng-container>\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\", \"Ambiente di Sviluppo A\", [\"Development Environment A\"]);\r\n super.set(\"it->en\", \"Ambiente di Sviluppo B\", [\"Development Environment B\"]);\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 super.set(\"it->en\", \"Scrivere almeno 3 caratteri per utilizzare la ricerca globale\", [\"You must write at least 3 characters in order to use the Global Research\"]);\r\n super.set(\"it->en\", \"Ripulisci la Cache di tutti\", [\"Clear Caches of everyone\"]);\r\n super.set(\"it->en\", \"Ripulisci le Preferenze di tutti\", [\"Clear Preferences of everyone\"]);\r\n }\r\n}","// Angular\r\nimport { Component } from \"@angular/core\";\r\n\r\n// Direttive, Componenti, Librerie\r\nimport { ReplaySubject, Subscription/*, pipe, takeUntil*/ } from \"rxjs\";\r\n\r\n@Component({\r\n template: '',\r\n standalone: false\r\n})\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 // TODO: Check\r\n //takeUntilDestroyed = new pipe(() => takeUntil(this.destroyed$))\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, ChangeDetectorRef, Component, ElementRef, Inject, Type, ViewChild, ViewEncapsulation } from \"@angular/core\";\r\nimport { Router } from \"@angular/router\";\r\nimport { NgIf, NgFor } 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// Ng Prima\r\nimport { ToggleSwitchModule } from \"primeng/toggleswitch\";\r\n\r\n// EsFaenza\r\nimport { AccessControlModule } from \"@esfaenza/access-control\";\r\nimport { EsTableModule } from \"@esfaenza/es-table\";\r\nimport { ComponentHostDirective } from \"@esfaenza/core/directives\";\r\nimport { JaceIdentity, EnvOptions, ApplicationJob, NAVBAR_EXTENSIONS, LOGIN_URL_LEGACY, ANONYMOUS_MODE } 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\n\r\nconst GET_Cache_ClearAllCaches: string = \"/api/Cache/ClearAllCaches\";\r\nconst GET_Cache_ClearAllClientsCaches: string= \"/api/Cache/ClearAllClientsCaches\";\r\nconst GET_Cache_ClearAllClientsPreferences: string= \"/api/Cache/ClearAllClientsPreferences\";\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 imports: [FormsModule, BsDropdownModule, NgIf, NgFor, ProgressbarModule, ComponentHostDirective, EsTableModule, LocalizationModule, AccessControlModule, ToggleSwitchModule]\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 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 @Inject(LOGIN_URL_LEGACY) public loginUrlLegacy: boolean, @Inject(ANONYMOUS_MODE) public ANONYMOUS_MODE: boolean) {\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 ? (\": \" + jobDescription) : ''), \"toastr\");\r\n this.cdr.markForCheck();\r\n });\r\n\r\n this._state.subscribe(\"app.startedJob\", (_) => { this.cdr.markForCheck(); });\r\n this._state.subscribe(\"app.progressJob\", (_) => { this.cdr.markForCheck(); });\r\n\r\n this.handleBaseNotifications();\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 this.notifications.observe(this.MessageDef.IN_ClearCache).pipe(takeUntil(this.destroyed$)).subscribe((message) => {\r\n this.clearCacheClient(false);\r\n });\r\n\r\n this.notifications.observe(this.MessageDef.IN_ClearPreferecnes).pipe(takeUntil(this.destroyed$)).subscribe((message) => {\r\n this.clearUserPreferences(false);\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 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 goToDashboard(){\r\n window.open(myconfig.JaceDashboardUrl, '_blank').focus();\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 if (this.loginUrlLegacy)\r\n window.location.href = `${myconfig.AuthUrl}/logout?client=${myconfig.Client}`;\r\n else\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 if (this.loginUrlLegacy)\r\n window.location.href = `${myconfig.AuthUrl}/login/tenant?client=${myconfig.Client}`;\r\n else\r\n window.location.href = `${myconfig.AuthUrl}/#/login;client=${myconfig.Client}`;\r\n }\r\n\r\n clearUserPreferences(warn: boolean = true) {\r\n this.prefsService.clear().subscribe();\r\n if (warn)\r\n this.msgExts.simpleSuccess(this.lc.loc(\"Preferenze utente ripulite\"));\r\n else\r\n console.info(\"@esfaenza/core: Forceful preferecnes clear request received\");\r\n }\r\n\r\n clearCacheClient(warn: boolean = true) {\r\n this.cacheService.clear().subscribe();\r\n this.http.resetHttpUntimedCacheStorage();\r\n this.http.resetHttpTimedCacheStorage();\r\n if (warn)\r\n this.msgExts.simpleSuccess(this.lc.loc(\"Cache Ripulita\"));\r\n else\r\n console.info(\"@esfaenza/core: Forceful cache clear request received\");\r\n }\r\n\r\n clearCacheServer() {\r\n this.http.get(GET_Cache_ClearAllCaches).subscribe(_ => {\r\n this.msgExts.simpleSuccess(this.lc.loc(\"Cache Ripulita\"));\r\n });\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_Cache_ClearAllCaches).subscribe(_ => {\r\n this.msgExts.simpleSuccess(this.lc.loc(\"Cache Ripulita\"));\r\n });\r\n }\r\n\r\n forceClearConnectedClientAssets(muo: 'cache' | 'preferences') {\r\n if (muo == \"cache\") {\r\n this.http.get(GET_Cache_ClearAllClientsCaches).subscribe(_ => {\r\n this.msgExts.simpleSuccess(this.lc.loc(\"Cache Ripulita\"));\r\n });\r\n }\r\n else if (muo == \"preferences\") {\r\n this.http.get(GET_Cache_ClearAllClientsPreferences).subscribe(_ => {\r\n this.msgExts.simpleSuccess(this.lc.loc(\"Preferenze utente ripulite\"));\r\n });\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}","<nav #navbar class=\"nav enuma-navbar\">\r\n <div class=\"d-flex\" style=\"width: 100%;\">\r\n <!-- Collapse menù a sinistra -->\r\n <div><a (click)=\"toggleMenu()\" class=\"far fa-bars nav-icon app-padding-left-15\" style=\"padding-top: 8px;\"></a></div>\r\n\r\n <!-- Breadcrumb -->\r\n <div class=\"app-padding-left-15\" style=\"padding-top: 8px;\"><ng-content></ng-content></div>\r\n\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 <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 style=\"margin-right: auto;\">{{'Job Applicativi' | localize : lc}}</span>\r\n <span class=\"app-margin-right-5\">{{'Notifiche' | localize : lc}}:</span>\r\n <span class=\"m-b-min-5\">\r\n <p-toggleswitch [(ngModel)]=\"_state.notifyOnCompletedJobs\" (click)=\"clearMessages(); $event.stopPropagation();\"/>\r\n </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}}\" class=\"app-link app-no-selection app-inline app-pointer\" (click)=\"completedJobClicked(job); $event.stopPropagation();\">{{job.smalldescription}}</span>\r\n <strong class=\"pull-right\" *ngIf=\"!job.completed\">{{job.percentage}}%</strong>\r\n <strong class=\"pull-right\" *ngIf=\"job.completed\">{{'Completed' | localize : lc}}</strong>\r\n </span>\r\n <div class=\"progress progress-sm\">\r\n <progressbar *ngIf=\"!job.completed\" [max]=\"100\" [value]=\"job.percentage\" [striped]=\"true\" [animate]=\"true\"></progressbar>\r\n <progressbar *ngIf=\"job.completed\" type=\"success\" [max]=\"100\" [value]=\"100\" [striped]=\"false\" [animate]=\"false\"></progressbar>\r\n </div>\r\n </div>\r\n </div>\r\n </ul>\r\n </div>\r\n \r\n <!--Other Modules-->\r\n <div *ngIf=\"!ANONYMOUS_MODE\" class=\"user-menu app-no-selection app-margin-right-15\" dropdown container=\"body\" placement=\"bottom right\">\r\n <a class=\"far fa-cubes module-nav-menu-link dropdown-toggle app-pointer\" (click)=\"goToDashboard()\"></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-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 *ac=\"'R:Jace Admin'\" class=\"dropdown-item app-pointer\" (click)=\"forceClearConnectedClientAssets('cache')\">\r\n <i class=\"far fa-broom-wide app-margin-right-10\"></i>{{'Ripulisci la Cache di tutti' | localize : lc}}\r\n </li>\r\n <li *ac=\"'R:Jace Admin'\" class=\"dropdown-item app-pointer\" (click)=\"forceClearConnectedClientAssets('preferences')\">\r\n <i class=\"far fa-broom-wide app-margin-right-10\"></i>{{'Ripulisci le Preferenze di tutti' | 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\r\n <!--Ambiente-->\r\n <div>\r\n <div class=\"nav-environment app-no-selection\">\r\n <ng-container *ngIf=\"['Dev', 2].includes(applicationEnvironment)\">{{'Ambiente di Sviluppo' | localize : lc}}</ng-container>\r\n <ng-container *ngIf=\"['DevA', 3].includes(applicationEnvironment)\">{{'Ambiente di Sviluppo A' | localize : lc}}</ng-container>\r\n <ng-container *ngIf=\"['DevB', 4].includes(applicationEnvironment)\">{{'Ambiente di Sviluppo B' | localize : lc}}</ng-container>\r\n <ng-container *ngIf=\"['Stage', 5].includes(applicationEnvironment)\">{{'Ambiente di Staging' | localize : lc}}</ng-container>\r\n <ng-container *ngIf=\"['StageA', 6].includes(applicationEnvironment)\">{{'Ambiente di Staging A' | localize : lc}}</ng-container>\r\n <ng-container *ngIf=\"['Prod', 1].includes(applicationEnvironment)\">{{'Ambiente di Produzione' | localize : lc}}</ng-container>\r\n </div>\r\n </div>\r\n\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<!-- Template per le informaizoni di debug: Ambiente, ruoli, permessi ecc -->\r\n<ng-template #debugInfos>\r\n <div>{{CurrentIdentity?.FullName}} - ({{CurrentIdentity?.TenantName}})</div>\r\n <div hidden>{{applicationEnvironment}}</div>\r\n <div class=\"text-sm-center\">\r\n <ng-container *ngIf=\"['Dev', 2].includes(applicationEnvironment)\">{{'Ambiente di Sviluppo' | localize : lc}}</ng-container>\r\n <ng-container *ngIf=\"['DevA', 3].includes(applicationEnvironment)\">{{'Ambiente di Sviluppo A' | localize : lc}}</ng-container>\r\n <ng-container *ngIf=\"['DevB', 4].includes(applicationEnvironment)\">{{'Ambiente di Sviluppo B' | localize : lc}}</ng-container>\r\n <ng-container *ngIf=\"['Stage', 5].includes(applicationEnvironment)\">{{'Ambiente di Staging' | localize : lc}}</ng-container>\r\n <ng-container *ngIf=\"['StageA', 6].includes(applicationEnvironment)\">{{'Ambiente di Staging A' | localize : lc}}</ng-container>\r\n <ng-container *ngIf=\"['Prod', 1].includes(applicationEnvironment)\">{{'Ambiente di Produzione' | localize : lc}}</ng-container>\r\n </div>\r\n <div [hidden]=\"true\">\r\n <div>Permissions:</div>\r\n <div *ngFor=\"let p of CurrentIdentity?.Permissions\">{{p}}</div>\r\n <div>Roles:</div>\r\n <div *ngFor=\"let r of CurrentIdentity?.Roles\">{{r}}</div>\r\n </div>\r\n</ng-template>","// 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 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 style=\"width: 100%;\">\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, Router, 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 { AppEmbeddingExtensions } from \"@esfaenza/extensions\";\r\nimport { HTTPService } from \"@esfaenza/httpservice\";\r\n\r\nimport { AppState, TokenService } from \"@esfaenza/core/services\";\r\nimport { ActiveModuleView, EnvOptions } from \"@esfaenza/core/domain\";\r\nimport { NgIf } from \"@angular/common\";\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 imports: [RouterOutlet, NgIf]\r\n})\r\nexport class ExternalPagesComponent {\r\n private Username: string = \"\";\r\n private Password: string = \"\";\r\n private Tenant: string = \"\";\r\n private EmbeddingSource: string = \"\";\r\n\r\n // TODO: Automatizzare\r\n private LocalhostModuleMap: { [id: string]: string } = {\r\n \"crm\": \"31813\",\r\n \"sii\": \"21645\",\r\n \"pp\": \"1616\"\r\n };\r\n\r\n private Localhost: string = \"\";\r\n\r\n constructor(private aac: AccessControlService, public lc: LocalizationService, private http: HTTPService, public emb: AppEmbeddingExtensions, private _state: AppState, private route: ActivatedRoute, private router: Router, 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 this.EmbeddingSource = this.route.snapshot.params[\"source\"];\r\n }\r\n\r\n ngOnInit() {\r\n\r\n if (!this.emb.Embedded) {\r\n console.log(\"Pagina ext richiamata in ambiente non embeddato. Sono in una nuova scheda!!\");\r\n console.log(\"L'embedder originale doveva essere: \" + this.EmbeddingSource);\r\n console.log(\"Dato che sono in una nuova scheda devo in realtà navigare a lui, con link su emb/ecc in modo da aprire una scheda embeddata su questa pagina. Se funziona già fino a qui sono a cavallo\");\r\n\r\n this.Localhost = this.LocalhostModuleMap[this.EmbeddingSource];\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 });\r\n }\r\n return;\r\n }\r\n\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 ((!(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 // Non è utilizzata, porcoddinci\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\r\n afterModulesRetrieve(modules: ActiveModuleView[]) {\r\n // Sto navigando a {sito}/#/pages_ext/{origine}/etc...\r\n // Devo ridirezionare a {sorgente}/#/pages/embed/{thisModule}/etc...\r\n let module = modules.find(t => t.altname == this.EmbeddingSource)\r\n if (!module) {\r\n console.error(`Impossibile trovare il modulo con altname uguale a ${this.EmbeddingSource}`);\r\n }\r\n \r\n let afterPagesExt = this.router.url.split(\"pages_ext\")[1].substring(1).split(\"/\").slice(1).join(\"/\");\r\n let sourceModuleUrl = myconfig.AuthUrl.includes(\"localhost\") ? `http://localhost:${this.Localhost}` : module.uiurl;\r\n \r\n let finalUrl = `${sourceModuleUrl}/#/pages/embed/${myconfig.AppData.ModuleId}/${afterPagesExt}`;\r\n console.log(\"@esfaenza/core: navigating to \" + finalUrl);\r\n location.replace(finalUrl);\r\n }\r\n}","<!-- Creo il router outlet solo se sono una pagina embeddata, altrimenti vuol dire che avrò un redirect al parent embeddato a dovere -->\r\n<router-outlet *ngIf=\"this.emb.Embedded\"></router-outlet>","// Angular\r\nimport { Component, Inject, ViewEncapsulation } from \"@angular/core\";\r\n\r\nimport { EnvOptions, LOGIN_URL_LEGACY } 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 constructor(@Inject(LOGIN_URL_LEGACY) public loginUrlLegacy: boolean) { }\r\n\r\n ngOnInit() {\r\n if (myconfig.AuthUrl) {\r\n if (this.loginUrlLegacy)\r\n window.location.href = `${myconfig.AuthUrl}/login/form?client=${myconfig.Client}`;\r\n else {\r\n // logout ripulisce il token e risbatte al login\r\n window.location.href = `${myconfig.AuthUrl}/#/logout;client=${myconfig.Client}`;\r\n }\r\n }\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\nimport { AppEmbeddingExtensions } from \"@esfaenza/extensions\";\r\n\r\n// Applicazione\r\nimport { REDIRECT_MAP } from \"@esfaenza/core/domain\";\r\n\r\n@Component({\r\n selector: \"redirecter\",\r\n encapsulation: ViewEncapsulation.None,\r\n templateUrl: \"./redirecter.component.html\",\r\n imports: [NgIf]\r\n})\r\nexport class RedirecterComponent {\r\n\r\n public Error: string = \"\";\r\n public tenant: string;\r\n private wrongTenant = false;\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[] } }, private emb: AppEmbeddingExtensions) {\r\n this.tenant = route.snapshot.params[\"tenant\"];\r\n\r\n if (this.tenant && this._state.getJaceIDentity().Idtenant != this.tenant) {\r\n console.error(\"tenant mismatch in redirector\");\r\n this.router.navigate([\"login\"]);\r\n this.wrongTenant = true;\r\n }\r\n }\r\n\r\n ngOnInit() {\r\n if (this.wrongTenant)\r\n return;\r\n\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.includes(String.fromCharCode(167)) ? url.split(String.fromCharCode(167)).filter(s => !!s) : url.split('+').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 redirectItem = this.redirectMap[parts[0]];\r\n if (!redirectItem) {\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 (redirectItem.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 url = (this.emb.Embedded ? \"pages_ext/\" : \"pages/\") + redirectItem.url;\r\n let parObject = {};\r\n redirectItem.params.forEach((t, i) => parObject[t] = parts[i + 1]);\r\n\r\n console.log(`Navigating to ${url} with the current parameters: ${JSON.stringify(parObject)}`)\r\n this.router.navigate([url, parObject]);\r\n }\r\n }\r\n}","<div *ngIf=\"Error\">{{Error}}</div>","// Angular\r\nimport { Component, Injector } from \"@angular/core\";\r\nimport { Location } from \"@angular/common\";\r\nimport { ActivatedRoute, Data, Router, UrlSegment } 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\nimport { AppEmbeddingExtensions } from \"@esfaenza/extensions\";\r\nimport { combineLatest } from \"rxjs\";\r\n\r\n@Component({\r\n template: '',\r\n standalone: false\r\n})\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 // Disallineato dalla versione NG15\r\n protected Parameters: { [name: string]: string } = null;\r\n protected QueryParameters: { [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 private _emb: AppEmbeddingExtensions;\r\n private _location: Location;\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._emb = injector.get(AppEmbeddingExtensions);\r\n this._location = injector.get(Location);\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.Parameters = t; });\r\n _activatedRoute.queryParams.pipe(takeUntil(this.destroyed$)).subscribe(t => { this.QueryParameters = t; });\r\n \r\n combineLatest([_activatedRoute.url, _activatedRoute.data]).subscribe((t: [UrlSegment[], Data]) => {\r\n this.gatherRouteInformations(null, t[1]);\r\n });\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(!this._emb.Embedded || !this.NavigationTitle)\r\n return;\r\n\r\n this._emb.MainWindow.postMessage({ type: \"navigation\", url: this.CompletePath, internalNavigation: this.InternalNavigation, title: this.NavigationTitle }, \"*\");\r\n }\r\n\r\n public gatherRouteInformations(segs: UrlSegment[], data: Data) {\r\n if(segs == null)\r\n segs = (this._router as any).rawUrlTree.root.children.primary.segments;\r\n \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 = data?.[\"internalNavigation\"] || false;\r\n this.NavigationTitle = data?.[\"title\"] || \"\";\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\r\n back() {\r\n if (this._emb.Embedded) {\r\n this._emb.MainWindow.postMessage({ type: \"navigate-back\" }, \"*\");\r\n setTimeout(() => { this._location.back(); })\r\n }\r\n else\r\n this._location.back();\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 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 @Input() Params: { [id: string]: 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 requestAnimationFrame(() => {\r\n this.Height = window.innerHeight - 80;\r\n this.cdr.markForCheck();\r\n });\r\n }\r\n\r\n async 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 parameters: string = this.Params ? Object.keys(this.Params).map(k => `${k}=${this.Params[k]}`).join(';') : '';\r\n // ATTENZIONE: L'embedding a due livelli si potrebbe rompere qui, ma chi cazzo embedda a due livelli....\r\n let finalUrl = `${moduleUrl}/#/pages_ext/${myconfig.AppData.ModuleId}/${this.Page}${(parameters ? (';' + parameters) : '')}`;\r\n console.log(\"@esfaenza/core: Jace-resource navigating to \" + finalUrl);\r\n this.sanitizedSourceResource = this.sanitizer.bypassSecurityTrustResourceUrl(finalUrl);\r\n }\r\n}","<iframe *ngIf=\"!!sanitizedSourceResource && this.Height > 0\" id=\"externalFrame\" style=\"width: 100%; border: none;\" [style.height.px]=\"Height\"\r\n [src]=\"sanitizedSourceResource\">\r\n</iframe>","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 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\">:&nbsp;&nbsp;</span>\r\n </strong>\r\n <span><ng-content></ng-content></span>\r\n</div>","import { NgIf } from \"@angular/common\";\r\nimport { ImageCroppedEvent, ImageCropperComponent, ImageTransform } from \"ngx-image-cropper\";\r\nimport { Component, Input } from \"@angular/core\";\r\nimport { AppFile, FormsAndValidationsModule } from \"@esfaenza/forms-and-validations\";\r\nimport { FormsModule } from \"@angular/forms\";\r\n\r\n@Component({\r\n selector: \"es-image-cropper\",\r\n templateUrl: \"es-image-cropper.component.html\",\r\n styleUrls: [\"./es-image-cropper.component.scss\"],\r\n imports: [NgIf, ImageCropperComponent, FormsModule, FormsAndValidationsModule]\r\n})\r\nexport class EsImageCropperComponent {\r\n @Input() Height: number;\r\n @Input() Width: number;\r\n\r\n constructor() { }\r\n\r\n public ProfileImage: AppFile;\r\n\r\n private _OutputImage: any;\r\n get OutputImage(): any {\r\n if (this.ProfileImage?.nativefiles)\r\n return this._OutputImage;\r\n else\r\n return null;\r\n }\r\n\r\n canvasRotation = 0;\r\n scale = 1;\r\n transform: ImageTransform = {};\r\n\r\n public onResetImage() {\r\n this.ProfileImage = new AppFile();\r\n this._OutputImage = null;\r\n }\r\n\r\n public onImageCropped(event: ImageCroppedEvent) {\r\n this._OutputImage = event.blob;\r\n }\r\n\r\n onRotateLeft() {\r\n this.canvasRotation--;\r\n this.doFlipAfterRotate();\r\n }\r\n\r\n onRotateRight() {\r\n this.canvasRotation++;\r\n this.doFlipAfterRotate();\r\n }\r\n\r\n onFlipHorizontal() {\r\n this.transform = {\r\n ...this.transform,\r\n flipH: !this.transform.flipH,\r\n };\r\n }\r\n\r\n onFlipVertical() {\r\n this.transform = {\r\n ...this.transform,\r\n flipV: !this.transform.flipV,\r\n };\r\n }\r\n\r\n private doFlipAfterRotate() {\r\n const flippedH = this.transform.flipH;\r\n const flippedV = this.transform.flipV;\r\n this.transform = {\r\n ...this.transform,\r\n flipH: flippedV,\r\n flipV: flippedH,\r\n };\r\n }\r\n\r\n onZoomOut() {\r\n this.scale -= 0.1;\r\n this.transform = {\r\n ...this.transform,\r\n scale: this.scale,\r\n };\r\n }\r\n\r\n onZoomIn() {\r\n this.scale += 0.1;\r\n this.transform = {\r\n ...this.transform,\r\n scale: this.scale,\r\n };\r\n }\r\n}","<div *ngIf=\"ProfileImage?.nativefiles?.length > 0\" [style.width.px]=\"Width\">\r\n <div class=\"d-flex\">\r\n <button (click)=\"onRotateLeft()\" class=\"btn btn-primary\"><i class=\"fa fa-undo\"></i></button>\r\n <button (click)=\"onRotateRight()\" class=\"btn btn-primary\"><i class=\"fa fa-repeat\"></i></button>\r\n <button (click)=\"onFlipHorizontal()\" class=\"btn btn-primary\"><i class=\"fa fa-arrows-h\"></i></button>\r\n <button (click)=\"onFlipVertical()\" class=\"btn btn-primary\"><i class=\"fa fa-arrows-v\"></i></button>\r\n <button (click)=\"onZoomIn()\" class=\"btn btn-primary\"><i class=\"fa fa-search-plus\"></i></button>\r\n <button (click)=\"onZoomOut()\" class=\"btn btn-primary\"><i class=\"fa fa-search-minus\"></i></button>\r\n <button (click)=\"onResetImage()\" class=\"btn btn-danger\" style=\"margin-left: auto; margin-right: 0px;\"><i class=\"fa fa-times\"></i></button>\r\n </div>\r\n</div>\r\n<div class=\"app-margin-top-10\" [style.max-height.px]=\"Height\" [style.width.px]=\"Width\">\r\n <form-file *ngIf=\"!(ProfileImage?.nativefiles?.length > 0)\" [LabelInputRatio]=\"'0 12'\" [FancyMode]=\"true\" [(ngModel)]=\"ProfileImage\" name=\"imageToCrop\"></form-file>\r\n <ng-container *ngIf=\"ProfileImage?.nativefiles?.length > 0\">\r\n <image-cropper style=\"--cropper-outline-color: rgba(0,0,0)\"\r\n [backgroundColor]=\"'#91a3b0'\"\r\n [imageFile]=\"ProfileImage.nativefiles[0]\"\r\n [aspectRatio]=\"4 / 3\"\r\n [maintainAspectRatio]=\"true\"\r\n [containWithinAspectRatio]=\"true\"\r\n [cropperStaticWidth]=\"320\"\r\n [cropperStaticHeight]=\"320\"\r\n [onlyScaleDown]=\"true\"\r\n [roundCropper]=\"true\"\r\n [canvasRotation]=\"canvasRotation\"\r\n [allowMoveImage]=\"true\"\r\n [(transform)]=\"transform\"\r\n (imageCropped)=\"onImageCropped($event)\">\r\n </image-cropper>\r\n </ng-container>\r\n</div>","// Angular\r\nimport { CommonModule } from \"@angular/common\";\r\nimport { Component, EventEmitter, input, Input, model, Output } from \"@angular/core\";\r\nimport { FormsModule, NgForm } from \"@angular/forms\";\r\n\r\nimport { FormsAndValidationsModule } from \"@esfaenza/forms-and-validations\";\r\n\r\n// Direttive, Componenti, Librerie\r\nimport { Subject } from \"rxjs\";\r\n\r\n@Component({\r\n selector: \"form-selector\",\r\n templateUrl: \"./form-selector.component.html\",\r\n imports: [FormsModule, CommonModule, FormsAndValidationsModule]\r\n})\r\nexport class FormSelectorComponent {\r\n\r\n // Validazione\r\n @Input() SetValidationSubject = new Subject<{ fieldName: string, error: string }>();\r\n\r\n // Presentazione\r\n ModalOnly = input(false);\r\n Valid = input(true);\r\n SelectedLabel = model(null);\r\n\r\n // Form\r\n Validation = input<boolean>();\r\n Readonly = input<boolean>();\r\n Form = input<NgForm>(null);\r\n Name = input<string>();\r\n ngModelOptions: any = input<any>()\r\n Required = input<boolean>();\r\n Placeholder = input<string>();\r\n\r\n // Navigazione\r\n HasExternalLink = input<boolean>();\r\n\r\n // Eventi\r\n @Output() onChange: EventEmitter<void> = new EventEmitter<void>();\r\n @Output() onSearch: EventEmitter<void> = new EventEmitter<void>();\r\n @Output() onNavigation: EventEmitter<void> = new EventEmitter<void>();\r\n @Output() onClipboardCopy: EventEmitter<void> = new EventEmitter<void>();\r\n}","<div class=\"app-pointer app-selector-input-area\" (click)=\"onSearch.emit()\" (contextmenu)=\"onClipboardCopy.emit(); false;\"></div>\r\n\r\n<form-input *ngIf=\"!ModalOnly() && Name()\"\r\n [SetValidationSubject]=\"SetValidationSubject\"\r\n [class.app-selector-input-invalid]=\"!Valid()\"\r\n [class.app-selector-input]=\"!Readonly()\"\r\n [Form]=\"Form()\"\r\n readonly\r\n [disabled]=\"Readonly()\"\r\n [FormLayout]=\"false\"\r\n [Validation]=\"Validation()\"\r\n [(ngModel)]=\"SelectedLabel\"\r\n [ngModelOptions]=\"ngModelOptions()\"\r\n [required]=\"Required()\"\r\n [Placeholder]=\"Placeholder()\" \r\n type=\"text\"\r\n (inputChange)=\"onChange.emit()\"\r\n (click)=\"onSearch.emit()\"\r\n (contextmenu)=\"onClipboardCopy.emit(); false;\"\r\n name=\"{{Name()}}\">\r\n\r\n <ng-template #suffix>\r\n <span class=\"fa fa-search\" (click)=\"onSearch.emit();\"></span>\r\n </ng-template>\r\n</form-input>\r\n\r\n<span *ngIf=\"HasExternalLink()\" class=\"fa fa-external-link app-pointer\" style=\"position: absolute; right: 65px; bottom: 12px; z-index: 9999;\" (click)=\"onNavigation.emit()\"></span>","// Angular\r\nimport { CommonModule } from \"@angular/common\";\r\nimport { Component, EventEmitter, Input, Output, ViewChild } from \"@angular/core\";\r\nimport { FormsModule } from \"@angular/forms\";\r\n\r\n// Libs\r\nimport { EsTableModule, ThTdProvider } from \"@esfaenza/es-table\";\r\n\r\n// App\r\nimport { EsModalComponent } from \"../../es-modal/es-modal.component\";\r\nimport { EsModalHeadComponent } from \"../../es-modal/es-modal-head/es-modal-head.component\";\r\n\r\n@Component({\r\n selector: \"form-selector-dialog\",\r\n templateUrl: \"./form-selector-dialog.component.html\",\r\n imports: [EsTableModule, FormsModule, CommonModule, EsModalComponent, EsModalHeadComponent]\r\n})\r\nexport class FormSelectorDialogComponent {\r\n // Presentazione\r\n @Input() Subject: string;\r\n @Input() EsTableTemplate: ThTdProvider;\r\n @Input() TableClasses: string;\r\n @Input() SingleSelection: boolean = true;\r\n @Input() searchView: any;\r\n\r\n @Output() onClearValue: EventEmitter<void> = new EventEmitter<void>();\r\n @Output() onCloseDialog: EventEmitter<void> = new EventEmitter<void>();\r\n @Output() onConfirmSelection: EventEmitter<void> = new EventEmitter<void>();\r\n @Output() onSearchRequest: EventEmitter<boolean> = new EventEmitter<boolean>();\r\n @Output() onDialogVisibilityChange: EventEmitter<boolean> = new EventEmitter<boolean>();\r\n\r\n @ViewChild(\"itemSearch\") public itemSearch: EsModalComponent;\r\n public show() {\r\n this.itemSearch.show();\r\n }\r\n public hide() {\r\n this.itemSearch.hide();\r\n }\r\n}","<es-modal #itemSearch [Size]=\"'XL'\" (onShow)=\"onDialogVisibilityChange.emit(true)\" (onHide)=\"onDialogVisibilityChange.emit(false)\">\r\n <es-modal-head (Close)=\"itemSearch.hide();\">\r\n <h5 class=\"modal-title pull-left\">Seleziona {{Subject}}</h5>\r\n </es-modal-head>\r\n <div class=\"modal-body\">\r\n <form>\r\n <div class=\"row\">\r\n <div class=\"col-md-11\">\r\n <!--Parte specifica dei filtri-->\r\n <ng-content select=\"[filters]\"></ng-content>\r\n <!----------------------------->\r\n </div>\r\n <div class=\"col-md-1\" style=\"display: flex;\">\r\n <button class=\"input-group-addon btn app-btn-search\" [disabled]=\"searchView.searchinprogress\" (click)=\"onSearchRequest.emit(true)\" type=\"submit\" style=\"margin-left: auto;\">\r\n <i class=\"far\" [class.fa-search]=\"!searchView.searchinprogress\" [class.fa-spinner]=\"searchView.searchinprogress\" [class.fa-spin]=\"searchView.searchinprogress\"></i>\r\n </button>\r\n </div>\r\n </div>\r\n </form>\r\n\r\n <div class=\"app-margin-top-15\">\r\n <es-table [class]=\"TableClasses\" [(ngModel)]=\"searchView\" [Selection]=\"true\" [SingleSelection]=\"SingleSelection\" (onSearchRequest)=\"onSearchRequest.emit($event);\" [EsThTdProvider]=\"EsTableTemplate\"></es-table>\r\n </div>\r\n </div>\r\n <div class=\"modal-footer\">\r\n <button type=\"button\" class=\"btn btn-danger\" style=\"margin-right: auto;\" (click)=\"onClearValue.emit();\">Rimuovi valore</button>\r\n <button type=\"button\" class=\"btn btn-secondary app-margin-right-10\" (click)=\"onCloseDialog.emit();\">Annulla</button>\r\n <button type=\"button\" class=\"btn btn-primary\" (click)=\"onConfirmSelection.emit();\">Conferma</button>\r\n </div>\r\n</es-modal>","// Angular\r\nimport { Component, Input, ViewChild } from \"@angular/core\";\r\nimport { HttpParams } from \"@angular/common/http\";\r\n\r\n// Configurazioni\r\nimport { CallResult, ExtensionsModule, MessageService, UtilityService } from \"@esfaenza/extensions\";\r\nimport { HTTPService } from \"@esfaenza/httpservice\";\r\nimport { TokenService } from \"@esfaenza/core/services\";\r\nimport { EsModalComponent } from \"../es-modal/es-modal.component\";\r\nimport { EsModalHeadComponent } from \"../es-modal/es-modal-head/es-modal-head.component\";\r\nimport { CommonModule, NgFor, NgIf, NgTemplateOutlet } from \"@angular/common\";\r\nimport { FormsModule } from \"@angular/forms\";\r\nimport { AccessControlModule } from \"@esfaenza/access-control\";\r\nimport { MarkdownEditorComponent } from \"@esfaenza/text-editors\";\r\n\r\n// Classi\r\nimport { CreateUpdateFeedDto, EntityFeedsWidgetConfiguration, Feed, KeyValue } from \"@esfaenza/core/domain\";\r\nimport { DropdownOption, UtilityComponentsModule } from \"@esfaenza/utility-components\";\r\nimport { AppFile, FormsAndValidationsModule } from \"@esfaenza/forms-and-validations\";\r\n\r\n// Direttive, Componenti, Librerie\r\nimport { Subject, Subscription } from \"rxjs\";\r\nimport { MarkdownModule } from \"ngx-markdown\";\r\n\r\n@Component({\r\n selector: \"entity-feeds-widget\",\r\n templateUrl: \"./entity-feeds-widget.component.html\",\r\n styleUrls: [\"entity-feeds-widget.component.scss\"],\r\n imports: [CommonModule, NgIf, NgFor, NgTemplateOutlet, FormsModule, ExtensionsModule, FormsAndValidationsModule, EsModalComponent, EsModalHeadComponent, UtilityComponentsModule, AccessControlModule, MarkdownEditorComponent, MarkdownModule]\r\n})\r\nexport class EntityFeedsWidgetComponent {\r\n // Required\r\n @Input() EntityType: string = \"\";\r\n @Input() EntityId: string = \"\"; \r\n @Input() RefreshSubject: Subject<void>;\r\n\r\n // URL\r\n @Input() GetFeedsAPI: string;\r\n @Input() CreateFeedAPI: string;\r\n @Input() UpdateFeedAPI: string;\r\n @Input() DeleteFeedAPI: string;\r\n @Input() ReactToFeedAPI: string;\r\n @Input() GetUserTagsAPI: string;\r\n @Input() GetFeedAttachmentAPI: string;\r\n\r\n // Configurazione\r\n @Input() WidgetTitle: string = \"Feeds\";\r\n @Input() MaxHeight: string = \"450px\";\r\n @Input() Readonly: boolean = false;\r\n @Input() AllowUserTags: boolean = false;\r\n @Input() AllowReactions: boolean = false;\r\n @Input() AllowAttachments: boolean = false;\r\n @Input() AllowComments: boolean = false;\r\n @Input() AllowReplies: boolean = false;\r\n @Input() DebugMode: boolean = false;\r\n\r\n // Inizializzatore\r\n @Input() ModuleConfig: EntityFeedsWidgetConfiguration;\r\n\r\n // Flags\r\n public FLAG_RefreshingFeeds: boolean;\r\n\r\n // Props\r\n public Feeds: Feed[] = [];\r\n public LoggedUser: string = \"\";\r\n public FeedContentFilter: string = \"\";\r\n public UserTags: string[] = [];\r\n\r\n private refreshSub: Subscription;\r\n\r\n constructor(private http: HTTPService, private utiExts: UtilityService, private msgs: MessageService, private tks: TokenService) { }\r\n\r\n ngOnInit() {\r\n this.FeedsOperations = [];\r\n\r\n if(this.ModuleConfig) {\r\n this.GetFeedsAPI = this.GetFeedsAPI ?? this.ModuleConfig.GetFeedsAPI;\r\n // User Tags\r\n this.AllowUserTags = this.AllowUserTags ?? this.ModuleConfig.AllowUserTags;\r\n this.GetUserTagsAPI = this.GetUserTagsAPI ?? this.ModuleConfig.GetUserTagsAPI;\r\n // Reactions\r\n this.AllowReactions = this.AllowReactions ?? this.ModuleConfig.AllowReactions;\r\n this.ReactToFeedAPI = this.ReactToFeedAPI ?? this.ModuleConfig.ReactToFeedAPI;\r\n // Attachments\r\n this.AllowAttachments = this.AllowAttachments ?? this.ModuleConfig.AllowAttachments;\r\n this.GetFeedAttachmentAPI = this.GetFeedAttachmentAPI ?? this.ModuleConfig.GetFeedAttachmentAPI;\r\n // Comments\r\n this.AllowComments = this.AllowComments ?? this.ModuleConfig.AllowComments;\r\n this.AllowReplies = this.AllowReplies ?? this.ModuleConfig.AllowReplies;\r\n this.CreateFeedAPI = this.CreateFeedAPI ?? this.ModuleConfig.CreateFeedAPI;\r\n this.UpdateFeedAPI = this.UpdateFeedAPI ?? this.ModuleConfig.UpdateFeedAPI;\r\n this.DeleteFeedAPI = this.DeleteFeedAPI ?? this.ModuleConfig.DeleteFeedAPI;\r\n }\r\n\r\n if(this.DebugMode)\r\n console.warn(\"Componente Feeds: Modalita debug attivata.\");\r\n else {\r\n if (!this.EntityType || !this.EntityId || !this.RefreshSubject || !this.GetFeedsAPI)\r\n throw new Error(\"Componente Feeds: Mancano input richiesti.\");\r\n\r\n if (this.AllowReactions && !this.ReactToFeedAPI)\r\n throw new Error(\"Componente Feeds: Reactions attivate senza fornire un API per usarle.\");\r\n\r\n if (this.AllowUserTags && !this.GetUserTagsAPI)\r\n throw new Error(\"Componente Feeds: UserTags attivati senza fornire un API per usarli.\");\r\n\r\n if (this.AllowAttachments && !this.GetFeedAttachmentAPI)\r\n throw new Error(\"Componente Feeds: Attachments attivati senza fornire un API per usarli.\");\r\n\r\n if (this.AllowComments && !this.CreateFeedAPI)\r\n throw new Error(\"Componente Feeds: Commenti attivati senza fornire un API per usarli.\");\r\n }\r\n\r\n // Abilito Operazioni\r\n if(this.UpdateFeedAPI)\r\n this.FeedsOperations.push({ label: \"Modifica\", command: this.onUpdateFeed.bind(this) });\r\n if(this.DeleteFeedAPI)\r\n this.FeedsOperations.push({ label: \"Elimina\", command: this.onDeleteFeed.bind(this) });\r\n\r\n this.doRefreshFeeds();\r\n\r\n this.LoggedUser = this.DebugMode ? \"DEBUG\" : this.tks.getJaceIdentity().DsUser;\r\n\r\n if(this.AllowUserTags)\r\n this.http.get<KeyValue[]>(this.GetUserTagsAPI).subscribe(res => {\r\n this.UserTags = res.map(m => \"@\" + m.id);\r\n });\r\n\r\n if (this.RefreshSubject)\r\n this.refreshSub = this.RefreshSubject.subscribe(t => { \r\n this.doRefreshFeeds(); \r\n });\r\n }\r\n\r\n ngOnDestroy() {\r\n if (this.refreshSub)\r\n this.refreshSub.unsubscribe();\r\n }\r\n\r\n public doRefreshFeeds() {\r\n if (this.FLAG_RefreshingFeeds)\r\n return;\r\n\r\n this.FLAG_RefreshingFeeds = true;\r\n\r\n //#region DebugMode\r\n if(this.DebugMode) {\r\n this.Feeds = [\r\n { id: \"1\", content: \"*Prova* :smile:\", user: \"DEBUG\", dateins: new Date() } as Feed,\r\n { id: \"2\", content: \"**Prova2** :heart:\", user: \"DEBUG\", dateins: new Date() } as Feed,\r\n { id: \"3\", content: \"***Prova3*** :white_check_mark:\", user: \"DEBUG\", dateins: new Date() } as Feed,\r\n ];\r\n return;\r\n }\r\n //#endregion\r\n\r\n let pars = new HttpParams()\r\n .set(\"idEntityType\", this.EntityType)\r\n .set(\"idEntity\", this.EntityId);\r\n this.http.get<Feed[]>(this.GetFeedsAPI, pars).subscribe(res => {\r\n this.Feeds = res.filter(f => {\r\n let filter = this.FeedContentFilter?.toLowerCase();\r\n this.FLAG_RefreshingFeeds = false;\r\n\r\n return !filter ? true :\r\n (f.title?.toLowerCase().includes(filter) || f.content?.toLowerCase().includes(filter) || f.user?.toLowerCase().includes(filter));\r\n });\r\n });\r\n }\r\n\r\n public onDownloadFeedAttachment(item: Feed) {\r\n let pars = new HttpParams()\r\n .set(\"idEntityType\", this.EntityType)\r\n .set(\"idEntity\", this.EntityId)\r\n .set(\"idFeed\", item.id.toString());\r\n this.http.get<AppFile>(this.GetFeedAttachmentAPI, pars).subscribe(res => {\r\n this.utiExts.saveFile(res.fileb64, res.filename);\r\n });\r\n }\r\n\r\n //#region Create/Update\r\n @ViewChild('dlgCreateUpdateFeed') dlgCreateUpdateFeed: EsModalComponent;\r\n public CreateUpdateFeedDTO: CreateUpdateFeedDto;\r\n public AllegatoFile: AppFile;\r\n public EditMode: boolean = false;\r\n\r\n public onCreateFeed(isReply: boolean = false) {\r\n this.CreateUpdateFeedDTO = null;\r\n this.AllegatoFile = null;\r\n this.EditMode = false;\r\n\r\n requestAnimationFrame(() => { \r\n this.CreateUpdateFeedDTO = new CreateUpdateFeedDto();\r\n this.CreateUpdateFeedDTO.identitytype = this.EntityType;\r\n this.CreateUpdateFeedDTO.identity = this.EntityId;\r\n this.CreateUpdateFeedDTO.parentid = isReply ? this.SelectedFeed.id : null;\r\n\r\n this.dlgCreateUpdateFeed.show();\r\n });\r\n }\r\n\r\n public onUpdateFeed() {\r\n this.CreateUpdateFeedDTO = null;\r\n this.AllegatoFile = null;\r\n this.EditMode = true;\r\n\r\n let pars = new HttpParams()\r\n .set(\"idEntityType\", this.EntityType)\r\n .set(\"idEntity\", this.EntityId)\r\n .set(\"idFeed\", this.SelectedFeed.id.toString());\r\n this.http.get<AppFile>(this.GetFeedAttachmentAPI, pars).subscribe(res => {\r\n this.CreateUpdateFeedDTO = this.utiExts.deepClone(this.SelectedFeed, CreateUpdateFeedDto);\r\n this.CreateUpdateFeedDTO.idfeed = this.SelectedFeed.id.toString();\r\n this.CreateUpdateFeedDTO.identitytype = this.EntityType;\r\n this.CreateUpdateFeedDTO.identity = this.EntityId;\r\n\r\n this.AllegatoFile = res;\r\n\r\n this.dlgCreateUpdateFeed.show();\r\n });\r\n }\r\n\r\n doCreateUpdateFeed() {\r\n let SuccessMsg = `Feed ${this.EditMode ? \"aggiornato\" : \"aggiunto\"} con successo.`;\r\n let ErrorMsg = `Si sono verificati errori nell' ${this.EditMode ? \"aggiornare\" : \"aggiungere\"} il feed`;\r\n\r\n if (this.AllowAttachments) {\r\n // Quando \"AllegatoFile\" ha subito modifiche\r\n if (this.AllegatoFile?.nativefiles) {\r\n this.CreateUpdateFeedDTO.updatefiledata = true;\r\n }\r\n // Quando \"AllegatoFile\" NON ha subito modifiche\r\n else if (this.AllegatoFile?.fileb64 && !this.AllegatoFile?.nativefiles) {\r\n // Non faccio nulla\r\n }\r\n // Quando \"AllegatoFile\" viene rimosso o non viene specificato\r\n else {\r\n this.CreateUpdateFeedDTO.updatefiledata = true;\r\n }\r\n\r\n this.http.postwithFiles<CallResult>(this.EditMode ? this.UpdateFeedAPI : this.CreateFeedAPI, this.CreateUpdateFeedDTO, this.AllegatoFile?.nativefiles).subscribe(res => {\r\n this.msgs.manageCallResultResponse(res, SuccessMsg, ErrorMsg, () => {\r\n this.doRefreshFeeds();\r\n this.dlgCreateUpdateFeed.hide();\r\n });\r\n });\r\n } else {\r\n this.http.post<CallResult>(this.EditMode ? this.UpdateFeedAPI : this.CreateFeedAPI, this.CreateUpdateFeedDTO).subscribe(res => {\r\n this.msgs.manageCallResultResponse(res, SuccessMsg, ErrorMsg, () => {\r\n this.doRefreshFeeds();\r\n this.dlgCreateUpdateFeed.hide();\r\n });\r\n });\r\n }\r\n }\r\n //#endregion\r\n\r\n //#region Delete\r\n public onDeleteFeed() {\r\n this.msgs.simpleWarningWithChoice(\"Richiesta di Conferma\", \"Eliminare il feed selezionato?\", () => {\r\n this.doDeleteFeed();\r\n });\r\n }\r\n\r\n private doDeleteFeed() {\r\n let pars = new HttpParams()\r\n .set(\"idEntityType\", this.EntityType)\r\n .set(\"idEntity\", this.EntityId)\r\n .set(\"idFeed\", this.SelectedFeed.id.toString());\r\n this.http.get<CallResult>(this.DeleteFeedAPI, pars).subscribe(res => {\r\n this.msgs.manageCallResultResponse(res, \"Feed eliminato con successo.\", \"Impossibile eliminare il feed\", () => {\r\n this.doRefreshFeeds();\r\n });\r\n });\r\n }\r\n //#endregion\r\n\r\n //#region Reactions\r\n public onReactToFeed(item: Feed, idReaction: string) {\r\n if(!this.AllowReactions)\r\n throw new Error(\"Componente Feeds: Reactions non abilitate.\");\r\n\r\n // Il sistema supporta molte piu reazioni, stile whatsapp o discord\r\n // ma al momento non serviva incasinarsi la vita quindi teniamo i pollicioni e basta!\r\n idReaction =\r\n item.liked && idReaction == '0' ? '' :\r\n item.disliked && idReaction == '1' ? '' :\r\n idReaction;\r\n\r\n this.doReactToFeed(item.id.toString(), idReaction);\r\n }\r\n\r\n private doReactToFeed(idFeed: string, idReaction: string) {\r\n let pars = new HttpParams()\r\n .set(\"idEntityType\", this.EntityType)\r\n .set(\"idEntity\", this.EntityId)\r\n .set(\"idFeed\", idFeed)\r\n .set(\"idReaction\", idReaction);\r\n this.http.get<CallResult>(this.ReactToFeedAPI, pars).subscribe(res => { \r\n this.doRefreshFeeds(); \r\n });\r\n }\r\n //#endregion\r\n \r\n //#region Feed Content Details\r\n @ViewChild(\"dlgFeedContent\") dlgFeedContentDetails: EsModalComponent;\r\n public FeedContentDetails: string;\r\n\r\n onShowFeedContent(item: string) {\r\n this.FeedContentDetails = null;\r\n \r\n requestAnimationFrame(() => {\r\n this.FeedContentDetails = item;\r\n this.dlgFeedContentDetails.show();\r\n });\r\n }\r\n //#endregion\r\n\r\n //#region Kebab Menu\r\n public SelectedFeed: Feed = null;\r\n \r\n public FeedsOperations: DropdownOption[] = [];\r\n\r\n public onSelectFeed(item: Feed) {\r\n this.SelectedFeed = item;\r\n return true;\r\n }\r\n //#endregion\r\n}","<h5 class=\"app-bold\">{{WidgetTitle}}</h5>\r\n<div class=\"es-card\">\r\n <div class=\"d-flex\" style=\"margin-bottom: 1rem;\">\r\n <ng-container *ngIf=\"AllowComments\">\r\n <div *ngIf=\"!Readonly\">\r\n <div class=\"feed-create-button app-no-selection app-pointer\" (click)=\"onCreateFeed()\">\r\n <div style=\"margin: auto;\"><i class=\"fa fa-plus\"></i></div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n <div style=\"width: 100%;\">\r\n <form-input [Validation]=\"false\" [FormLayout]=\"false\" [(ngModel)]=\"FeedContentFilter\" (keydown.enter)=\"doRefreshFeeds()\" name=\"feedcontentfilter\">\r\n <ng-template #suffix>\r\n <span class=\"fa fa-search\"></span>\r\n </ng-template>\r\n </form-input>\r\n </div>\r\n </div>\r\n <!--Feeds-->\r\n <div style=\"overflow: auto !important;\" [style.max-height]=\"MaxHeight\">\r\n <ng-container *ngFor=\"let item of Feeds; let first = first;\">\r\n <ng-container *ngTemplateOutlet=\"FeedsDisplay; context: { $implicit: item, 'childTemplate': FeedsDisplay ,'isChild': false, 'first': first };\"></ng-container>\r\n </ng-container>\r\n <div *ngIf=\"Feeds?.length == 0\">\r\n <em>Nessun feed disponibile...</em>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n<!--Grafica di un singolo Feed-->\r\n<ng-template #FeedsDisplay let-item let-childTemplate=\"childTemplate\" let-isChild=\"isChild\" let-first=\"first\">\r\n <div [class.feed-container]=\"!isChild\" [class.feed-child-container]=\"isChild\" [class.first]=\"first\">\r\n <!--Colonna Sinistra-->\r\n <div class=\"feed-left-col\">\r\n <div class=\"feed-owner-icon\">\r\n <img *ngIf=\"!item.systemgen\" class=\"feed-owner-icon-image\" alt=\"user-img\" src=\"assets/img/users/user_default.jpg\">\r\n <img *ngIf=\"item.systemgen && item.severityid == 'INFO'\" class=\"feed-owner-icon-image fill-info\" alt=\"info\" src=\"assets/img/users/user_severity.svg\">\r\n <img *ngIf=\"item.systemgen && item.severityid == 'WARNING'\" class=\"feed-owner-icon-image fill-warning\" alt=\"warning\" src=\"assets/img/users/user_severity.svg\">\r\n <img *ngIf=\"item.systemgen && item.severityid == 'ERROR'\" class=\"feed-owner-icon-image fill-danger\" alt=\"error\" src=\"assets/img/users/user_severity.svg\">\r\n </div>\r\n <div *ngIf=\"item.childfeeds?.length > 0\" class=\"feed-sideline\"></div>\r\n </div>\r\n <!--Colonna Centrale-->\r\n <div class=\"feed-mid-col\">\r\n <div class=\"feed-mid-col-content\">\r\n <!--Content-->\r\n <div class=\"width-90\">\r\n <!--Intestazione-->\r\n <div>\r\n <span class=\"app-bold\">{{item.systemgen ? 'SISTEMA' : item.user}} </span>\r\n <span class=\"feed-gray-text\">{{item.dateins | loc_date: 'DD/MM/YYYY'}} alle {{item.dateins | loc_date: 'HH:mm'}}</span>\r\n </div>\r\n <!--Allegato-->\r\n <div *ngIf=\"item.filename\">\r\n <div class=\"app-pointer feed-cta\" (click)=\"onDownloadFeedAttachment(item)\">\r\n <span><i class=\"fa fa-file\"></i> {{item.filename}} ({{item.filesize}}KB)</span>\r\n </div>\r\n </div>\r\n <!--Messaggio-->\r\n <div *ngIf=\"!item.systemgen\" class=\"app-markdown\" markdown emoji>{{item.content}}</div>\r\n <div *ngIf=\"item.systemgen\">\r\n <span class=\"app-markdown\" markdown emoji>{{item.user}}: {{item.title}}</span>\r\n <span *ngIf=\"item.content\" (click)=\"onShowFeedContent(item.content)\">&nbsp;<i class=\"far fa-up-right-from-square text-info app-pointer\"></i></span>\r\n </div>\r\n <!--Operazioni-->\r\n <div class=\"feed-col-operations\">\r\n <ng-container *ngIf=\"AllowReactions\">\r\n <div [class.feed-reaction-sel]=\"item.liked\" class=\"app-pointer feed-reaction\" (click)=\"onReactToFeed(item, item.liked ? '' : '0')\"><span><i class=\"fa fa-thumbs-up\"></i> {{item.likes?.length}}</span></div>\r\n <div [class.feed-reaction-sel]=\"item.disliked\" class=\"app-pointer feed-reaction\" (click)=\"onReactToFeed(item, item.disliked ? '' : '1')\"><span><i class=\"fa fa-thumbs-down\"></i> {{item.dislikes?.length}}</span></div>\r\n </ng-container>\r\n <ng-container *ngIf=\"AllowReplies\">\r\n <div *ngIf=\"!Readonly && !isChild\" class=\"app-pointer feed-cta\" style=\"padding: 0.2rem;\" (click)=\"onSelectFeed(item) && onCreateFeed(true)\">Rispondi</div>\r\n </ng-container>\r\n </div>\r\n </div>\r\n <!--Dropdown-->\r\n <div class=\"feed-operation-col\">\r\n <div *ngIf=\"LoggedUser == item.user && !item.systemgen && !Readonly && FeedsOperations?.length > 0\" class=\"app-pointer feed-cta\" (click)=\"onSelectFeed(item) && FeedsOperationsDropdown.Show($event)\">\r\n <i class=\"fa fa-ellipsis-h\"></i>\r\n </div>\r\n </div>\r\n </div>\r\n <!--Feeds figli-->\r\n <ng-container *ngFor=\"let childItem of item.childfeeds\">\r\n <ng-container *ngTemplateOutlet=\"childTemplate; context: { $implicit: childItem, 'isChild': true };\"></ng-container>\r\n </ng-container>\r\n </div>\r\n </div>\r\n</ng-template>\r\n\r\n<!--Creazione/Aggiornamento Feed-->\r\n<es-modal #dlgCreateUpdateFeed [Size]=\"'M'\">\r\n <es-modal-head (Close)=\"dlgCreateUpdateFeed.hide();\">\r\n <h5 class=\"modal-title pull-left\">Aggiungi Feed</h5>\r\n </es-modal-head>\r\n <form *ngIf=\"CreateUpdateFeedDTO\" #formCreateUpdateFeed=\"ngForm\" (ngSubmit)=\"formCreateUpdateFeed.valid && doCreateUpdateFeed()\">\r\n <div class=\"modal-body\">\r\n <!--TODO: Usato solo nel CRM, quando verra aggiornato a ng19 reintegrare-->\r\n <!-- <form-checkbox *ac=\"'!R:actor'\" [Label]=\"'Pubblico'\" [LabelInputRatio]=\"'2 10'\" [(ngModel)]=\"CreateUpdateFeedDTO.ispublic\" name=\"ispublic\"></form-checkbox> -->\r\n <markdown-editor [(ngModel)]=\"CreateUpdateFeedDTO.content\" name=\"markdownEditor\"></markdown-editor>\r\n <form-file *ngIf=\"AllowAttachments\" [Label]=\"'Allegato'\" [LabelInputRatio]=\"'2 10'\" [(ngModel)]=\"AllegatoFile\" [Last]=\"true\" name=\"add_file\"></form-file>\r\n </div>\r\n <div class=\"modal-footer\">\r\n <button type=\"button\" class=\"btn btn-secondary app-margin-right-10\" (click)=\"dlgCreateUpdateFeed.hide();\">Annulla</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<!--Contenuto Feed-->\r\n<es-modal #dlgFeedContent [Size]=\"'L'\">\r\n <es-modal-head (Close)=\"dlgFeedContent.hide();\">\r\n <h5 class=\"modal-title pull-left\">Dettaglio Feed di Sistema</h5>\r\n </es-modal-head>\r\n <div class=\"modal-body\">\r\n <div *ngIf=\"FeedContentDetails\" class=\"app-markdown\" markdown emoji>{{FeedContentDetails}}</div>\r\n </div>\r\n <div class=\"modal-footer\">\r\n <button type=\"button\" class=\"btn btn-secondary app-margin-right-10\" (click)=\"dlgFeedContent.hide();\">Chiudi</button>\r\n </div>\r\n</es-modal>\r\n\r\n<simple-dropdown #FeedsOperationsDropdown [Options]=\"FeedsOperations\"></simple-dropdown>","// Angular\r\nimport { NgModule } from \"@angular/core\";\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\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 \"./back-top/back-top.component\";\r\nimport { Breadcrumb } from \"./breadcrumb/breadcrumb.component\";\r\nimport { ErrorPageComponent } from \"./error/errorpage.component\";\r\nimport { PagesComponent } from \"./page/pages.component\";\r\nimport { ExternalPagesComponent } from \"./external-page/external_pages.component\";\r\nimport { JaceLoginComponent } from \"./jace-login/jace-login.component\";\r\nimport { Navbar } from \"./navbar/navbar.component\";\r\nimport { JaceResourceComponent } from \"./jace-resource/jace-resource.component\";\r\nimport { RedirecterComponent } from \"./redirecter/redirecter.component\";\r\nimport { Sidebar } from \"./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 { LabeledSpanComponent } from \"./labeled-span/labeled-span.component\";\r\nimport { EsImageCropperComponent } from \"./es-image-cropper/es-image-cropper.component\";\r\nimport { FormSelectorComponent } from \"./selector/form-selector/form-selector.component\";\r\nimport { FormSelectorDialogComponent } from \"./selector/form-selector-dialog/form-selector-dialog.component\";\r\n\r\n// Core\r\nimport { DirectivesModule } from \"@esfaenza/core/directives\";\r\nimport { EntityFeedsWidgetComponent } from \"./entity-feeds-widget/entity-feeds-widget.component\";\r\n\r\nconst COMPONENTS = [\r\n BackTop,\r\n Breadcrumb,\r\n ErrorPageComponent,\r\n PagesComponent,\r\n ExternalPagesComponent,\r\n JaceLoginComponent,\r\n Navbar,\r\n RedirecterComponent,\r\n Sidebar,\r\n JaceResourceComponent,\r\n EsModalComponent,\r\n EsModalHeadComponent,\r\n LabeledSpanComponent,\r\n EsImageCropperComponent,\r\n FormSelectorComponent,\r\n FormSelectorDialogComponent,\r\n EntityFeedsWidgetComponent\r\n];\r\n\r\n@NgModule({\r\n imports: [CommonModule, RouterModule, FormsModule, DirectivesModule, LocalizationModule, ProgressbarModule, BsDropdownModule, ModalModule, EsTableModule, ...COMPONENTS],\r\n exports: [...COMPONENTS]\r\n})\r\nexport class ComponentsModule { }","// Angular\r\nimport { Component, Injector } from \"@angular/core\";\r\nimport { ActivatedRoute, UrlSegment } from \"@angular/router\";\r\nimport { Location, NgIf } from \"@angular/common\";\r\n\r\nimport { AppEmbeddingExtensions } from \"@esfaenza/extensions\";\r\n// Componenti\r\nimport { JaceResourceComponent } from \"../jace-resource/jace-resource.component\";\r\nimport { BaseComponent } from \"./base.component\";\r\nimport { combineLatest, debounceTime, zip } from \"rxjs\";\r\n\r\n@Component({\r\n selector: 'embedding',\r\n templateUrl: 'embedding.component.html',\r\n imports: [NgIf, JaceResourceComponent]\r\n})\r\nexport class EmbeddingComponent extends BaseComponent {\r\n\r\n // TODO: Automatizzare\r\n private LocalhostModuleMap: { [id: string]: string } = {\r\n \"crm\": \"31813\",\r\n \"sii\": \"21645\"\r\n };\r\n\r\n public Module: string;\r\n public Localhost: string;\r\n\r\n public Page: string;\r\n public Pars: string;\r\n public QueryPars: string;\r\n\r\n public EmbeddingSuccesfull: boolean = true;\r\n\r\n constructor(private injector: Injector, private emb: AppEmbeddingExtensions, private location: Location) {\r\n super(injector);\r\n }\r\n\r\n ngOnInit() {\r\n let route: ActivatedRoute = this.injector.get(ActivatedRoute);\r\n\r\n route.params.pipe(debounceTime(100)).subscribe((res) => {\r\n this.Module = res[\"module\"];\r\n this.Localhost = this.LocalhostModuleMap[this.Module];\r\n\r\n console.log(`Recognized a new navigation to the embedding component: ${this.Module} - ${this.CompletePath}`);\r\n\r\n let reloadAllowed = this.emb.IsReloadAllowed();\r\n if (this.Page && reloadAllowed) {\r\n this.Page = this.Pars = null;\r\n requestAnimationFrame(() => { this.assignPageLoadParameters(); });\r\n }\r\n else\r\n this.assignPageLoadParameters(reloadAllowed);\r\n });\r\n }\r\n\r\n assignPageLoadParameters(reloadAllowed: boolean = true) {\r\n // Esempio di Complete path: \"/pages/embed/crm/leads/leads_search\"\r\n // Esempio di slices: [\"\", \"pages\", \"embed\", \"crm\", \"leads\", \"leads_search\"]\r\n // Io devo sostanzialmente prendere dal nome del modulo (\"crm\") in poi. Nome del modulo embeddato eslcuso\r\n console.log(\"Embedding...\")\r\n \r\n if(reloadAllowed)\r\n this.EmbeddingSuccesfull = false;\r\n\r\n // Per seccare e ricreare il componente che altrimenti non prenderebbe gli input nuovi\r\n requestAnimationFrame(() => {\r\n this.Page = this.CompletePath.split(\"/\").slice(4).join(\"/\");\r\n console.log(\"Page: \" + this.Page)\r\n\r\n let navParKeys = Object.keys(this.Parameters)?.filter(p => p != \"module\");\r\n this.Pars = (navParKeys?.length || 0) == 0 ? \"\" : \";\" + navParKeys.map(t => `${t}=${this.Parameters[t]}`).join(\";\");\r\n console.log(\"Pars: \" + this.Pars);\r\n\r\n let queryParKeys = Object.keys(this.QueryParameters);\r\n this.QueryPars = (queryParKeys?.length || 0) == 0 ? \"\" : \"?\" + queryParKeys.map(t => `${t}=${this.QueryParameters[t]}`).join(\";\");\r\n console.log(\"QueryPars: \" + this.QueryPars)\r\n\r\n let QueryPAramsWithoutIgnoreStorage = queryParKeys.map(t => t == \"ignoreStorage\" ? null : `${t}=${this.QueryParameters[t]}`).filter(t => !!t).join(\";\")\r\n\r\n // Per rimuovere eventuali ignoreStorage se sto navigando a una ricerca\r\n this.location.replaceState(this.CompletePath + this.Pars + (QueryPAramsWithoutIgnoreStorage ? '?' + QueryPAramsWithoutIgnoreStorage : \"\"));\r\n\r\n this.EmbeddingSuccesfull = !!this.Page && !!this.Module && !!this.Localhost;\r\n })\r\n }\r\n}","<jace-resource *ngIf=\"EmbeddingSuccesfull && Page\" [Module]=\"Module\" [Localhost]=\"Localhost\" Page=\"{{Page}}{{Pars}}{{QueryPars}}\"></jace-resource>\r\n<div *ngIf=\"!EmbeddingSuccesfull\">\r\n Errori nell'embeddare risorsa {{Page}};{{Pars}} del modulo {{Module}} (Localhost {{Localhost}})\r\n</div>","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, 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 { PreferencesService } from \"@esfaenza/preferences\";\r\nimport { UpdatePasswordDto, UserAccount } 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 { AccessControlModule } from \"@esfaenza/access-control\";\r\nimport { TooltipModule } from \"primeng/tooltip\";\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 \"../labeled-span/labeled-span.component\";\r\nimport { EsImageCropperComponent } from \"../public-api\";\r\n\r\nimport { firstValueFrom } from \"rxjs\";\r\n\r\n@Component({\r\n selector: \"user-infos\",\r\n templateUrl: \"user_infos.component.html\",\r\n styleUrls: [\"./user_infos.component.scss\"],\r\n viewProviders: [{ provide: LocalizationService, useClass: UserInfoComponentLoc }],\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 EsImageCropperComponent,\r\n LabeledSpanComponent,\r\n ExtensionsModule,\r\n AccessControlModule,\r\n TooltipModule\r\n ]\r\n})\r\nexport class UserInfosComponent extends BaseComponent {\r\n\r\n private PREFS_DISABLE_EFFECTS = \"PREFS_DISABLE_EFFECTS\";\r\n\r\n public AccountDetails: UserAccount;\r\n public AccountRoles: string[];\r\n public AccountPermissions: string[];\r\n\r\n public GraphicEffectsDeactivated: boolean = true;\r\n\r\n constructor(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, private prefs: PreferencesService) {\r\n super(inj);\r\n }\r\n\r\n async ngOnInit() {\r\n this.getAccountDetails();\r\n this.GraphicEffectsDeactivated = (await firstValueFrom(this.prefs.getItem<boolean>(this.PREFS_DISABLE_EFFECTS))) || false;\r\n this._state.graphicEffects.set(!this.GraphicEffectsDeactivated);\r\n }\r\n\r\n public async effectsActiveChanged(){\r\n this._state.graphicEffects.set(!this.GraphicEffectsDeactivated);\r\n await firstValueFrom(this.prefs.setItem(this.PREFS_DISABLE_EFFECTS, this.GraphicEffectsDeactivated));\r\n }\r\n\r\n public async getAccountDetails() {\r\n // Recupero le informazioni Account partendo dalla identity\r\n let identity = this.tks.getJaceIdentity();\r\n if (identity) {\r\n this.AccountRoles = identity.Roles;\r\n this.AccountPermissions = identity.Permissions;\r\n this.AccountDetails = await this.profile.getAccountProfile();\r\n }\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 @ViewChild('imageCropper') imageCropper: EsImageCropperComponent;\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(new File([this.imageCropper.OutputImage], \"profile.png\"));\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 l'immagine 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, \"Immagine profilo rimossa con successo\", \"Errori nella rimozione della immagine 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}","<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\" pTooltip=\"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.tenantid}}</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-6 app-margin-top-10\"><labeled-span [Label]=\"'Email' | localize : lc\" Display=\"Vertical\">{{AccountDetails.recoveryemail || 'Non disponibile'}}</labeled-span></div>\r\n <div class=\"col-md-6 app-margin-top-15\"><form-checkbox [LabelInputRatio]=\"'8 4'\" [SliderMode]=\"true\" [Label]=\"'Disattiva effetti grafici' | localize: lc\" [(ngModel)]=\"GraphicEffectsDeactivated\" (inputChange)=\"effectsActiveChanged()\" name=\"gea\"></form-checkbox></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]=\"'L'\">\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}}:&nbsp;</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]=\"'L'\">\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]=\"'XL'\">\r\n <es-modal-head (Close)=\"dlgUpdateProfilePicture.hide();\">\r\n <h5 class=\"modal-title pull-left\">Carica immagine</h5>\r\n </es-modal-head>\r\n <div class=\"modal-body d-flex\">\r\n <div style=\"margin: auto;\">\r\n <es-image-cropper #imageCropper [Height]=\"600\" [Width]=\"800\"></es-image-cropper>\r\n </div>\r\n </div>\r\n <div class=\"modal-footer\">\r\n <button type=\"button\" class=\"btn btn-secondary\" (click)=\"dlgUpdateProfilePicture.hide()\">Annulla</button>\r\n <button type=\"submit\" class=\"btn btn-primary\" (click)=\"doUpdateProfilePicture()\">Conferma</button>\r\n </div>\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, contentChild, EventEmitter, Injector, Input, Output, SimpleChanges, TemplateRef, viewChild, ViewChild } from \"@angular/core\";\r\nimport { NgControl, NgForm, NgModel } from \"@angular/forms\";\r\nimport { AsyncPipe, NgIf, NgTemplateOutlet } from \"@angular/common\";\r\nimport { HttpParams } from \"@angular/common/http\";\r\nimport { Router } from \"@angular/router\";\r\n\r\n// Configurazioni\r\nimport { ClipboardService, HashingService, MessageService } from \"@esfaenza/extensions\";\r\nimport { AccessControlService } from \"@esfaenza/access-control\";\r\nimport { LocalizationService } from \"@esfaenza/localizations\";\r\nimport { HTTPService } from \"@esfaenza/httpservice\";\r\nimport { AppState } from \"@esfaenza/core/services\";\r\nimport { AppSearch, ThTdProvider } from \"@esfaenza/es-table\";\r\n\r\n// Esfaenza\r\nimport { REDIRECT_MAP } from \"@esfaenza/core/domain\";\r\n\r\n// Direttive, Componenti, Librerie\r\nimport { firstValueFrom, map, Observable, of, ReplaySubject, Subject, take, takeUntil } from \"rxjs\";\r\nimport { ModalDirective } from \"ngx-bootstrap/modal\";\r\n\r\n// Applicazione\r\nimport { FormSelectorComponent } from \"../form-selector/form-selector.component\";\r\nimport { FormSelectorDialogComponent } from \"../form-selector-dialog/form-selector-dialog.component\";\r\nimport { BaseSelectorInitialization } from \"./models/BaseSelectorInitialization\";\r\n\r\n\r\nconst nameof = <T>(name: Extract<keyof T, string>): string => name;\r\nconst dummyCall = \"_DUMMY_\";\r\n\r\n// Per poter rendere l'html comune devo per forza tirare fuori un implementazione base con componente reale, che verrà overridata dove serve lato applicativo.\r\n// Mi basta collegare tutto in maniera passante\r\n@Component({\r\n selector: \"base-selector\",\r\n templateUrl: \"./base-selector.component.html\",\r\n styleUrls: [\"./base-selector.component.scss\"],\r\n imports: [FormSelectorComponent, FormSelectorDialogComponent, NgTemplateOutlet, NgIf, AsyncPipe]\r\n})\r\nexport class BaseSelectorComponent<TSearch extends AppSearch<TItem>, TItem> {\r\n\r\n Initialized: ReplaySubject<boolean> = new ReplaySubject<boolean>();\r\n\r\n // Per richiamare lo \"Show\" da fuori componente\r\n itemSearch = viewChild<ModalDirective>(\"itemSearch\");\r\n\r\n EsTableTemplate = contentChild(ThTdProvider);\r\n EsTableTemplateComponent = viewChild(ThTdProvider);\r\n FiltersTemplate = contentChild<TemplateRef<any>>(\"filtersTemplate\");\r\n\r\n @Input() ModalOnly = false;\r\n @Input() EntityName = \"\";\r\n\r\n @ViewChild(\"searchView\", { static: false }) searchModal: ModalDirective;\r\n\r\n @Output() inputChange: EventEmitter<TItem[] | TItem> = new EventEmitter<TItem[] | TItem>();\r\n @Output() firstValueLoaded: EventEmitter<void> = new EventEmitter<void>();\r\n\r\n protected SelectedItems: string[];\r\n public SelectedObjects: TItem[];\r\n\r\n public SelectedLabel: string;\r\n\r\n propagateChange = (_: any) => { };\r\n public registerOnChange(fn): void { this.propagateChange = fn; }\r\n public registerOnTouched(fn): void { }\r\n\r\n @Input() DisplayMode = false;\r\n @Input() Readonly = false;\r\n @Input() Form: NgForm = null;\r\n @Input() Placeholder: string;\r\n @Input() ngModelOptions: any;\r\n @Input() SingleSelection: boolean = true;\r\n @Input() Required: boolean = false;\r\n @Input() Validation: boolean = false;\r\n @Input() PageSize: number = 10;\r\n @Input() Navigation: boolean = true;\r\n @Input() EmitStartingValue: boolean = false;\r\n @Output() dialogVisible = new EventEmitter<boolean>();\r\n @Output() dialogHidden = new EventEmitter<boolean>();\r\n @Output() inputFinalized = new EventEmitter<string>();\r\n\r\n @Input() name: string = \"\";\r\n\r\n public searchView: TSearch = null;\r\n\r\n // Goddamnit\r\n protected nameof = nameof;\r\n\r\n public subject: string;\r\n\r\n private searchType: new () => TSearch;\r\n private searchApi: string;\r\n private itemIdProperty: string;\r\n private searchIndependantProperties: string[];\r\n public navigationEntity: string;\r\n\r\n protected applyFilters(view: TSearch, firstApplication?: boolean, onlyEssentials?: boolean): void { };\r\n protected applyIdFilter(view: TSearch, itemid?: string): void { };\r\n protected evaluateLabel(item: TItem[]): string {\r\n throw \"[@esfaenza/core] Missing implementation for evaluateLabel, please register capabilities by doing selector.registerSelectorCapabilities(..., ..., ..., ...);\";\r\n }\r\n protected async loadSearchDictionaries(): Promise<void> { }\r\n\r\n protected Initialize(): BaseSelectorInitialization<TSearch> {\r\n throw \"[@esfaenza/core] Missing implementation for Initialize, please register capabilities by doing selector.registerSelectorCapabilities(..., ..., ..., ...);\";\r\n };\r\n\r\n private firstApplication: boolean = true;\r\n\r\n public ngControl: NgModel;\r\n public Pristine: boolean = true;\r\n\r\n private CurrentValue: any;\r\n\r\n public ac: AccessControlService;\r\n\r\n @Input() ValidationSubject: Subject<{ fieldName: string, error: string }>;\r\n destroyed$: Subject<void> = new Subject<void>();\r\n\r\n private router: Router;\r\n public lc: LocalizationService;\r\n public http: HTTPService;\r\n public state: AppState;\r\n private msgExts: MessageService;\r\n private clipboardService: ClipboardService;\r\n private hashingService: HashingService;\r\n\r\n private redirectMap: { [index: string]: { url: string, params: string[] } }\r\n private routesMap: { [index: string]: { route: (params: string) => any[] } };\r\n\r\n constructor(private injector: Injector) {\r\n\r\n this.router = injector.get(Router);\r\n this.lc = injector.get(LocalizationService);\r\n this.http = injector.get(HTTPService);\r\n this.state = injector.get(AppState);\r\n this.msgExts = injector.get(MessageService);\r\n this.clipboardService = injector.get(ClipboardService);\r\n this.hashingService = injector.get(HashingService);\r\n this.redirectMap = injector.get(REDIRECT_MAP, {});\r\n\r\n // Giusto per non avere un null\r\n this.searchView = {} as any\r\n\r\n for (let prop in this.redirectMap) {\r\n this.routesMap[prop] = { route: null };\r\n this.routesMap[prop].route = (param: string) => {\r\n let obj = {};\r\n obj[this.redirectMap[prop].params[0]] = param;\r\n return [\"pages/\" + this.redirectMap[prop].url, obj];\r\n }\r\n }\r\n\r\n this.Initialized.pipe(take(1)).subscribe(t => {\r\n let initialization = this.Initialize();\r\n this.subject = initialization.subject;\r\n this.searchType = initialization.searchType;\r\n this.searchApi = initialization.searchApi;\r\n this.navigationEntity = initialization.navigationEntity || \"\";\r\n this.searchIndependantProperties = initialization.searchIndependantProperties || [];\r\n this.searchIndependantProperties.push(nameof<BaseSelectorComponent<any, any>>(\"ModalOnly\"));\r\n this.itemIdProperty = initialization.idProperty || 'id';\r\n this.ac = this.injector.get(AccessControlService) as AccessControlService;\r\n \r\n if (!this.searchApi || !this.searchType || !this.subject)\r\n throw \"Impossibile utilizzare un selector senza anche solo una di queste 3 proprietà: subject, searchType, searchApi\";\r\n })\r\n }\r\n\r\n _outer: BaseSelectorComponent<any, any>;\r\n\r\n public bridge(outer: BaseSelectorComponent<any, any>) {\r\n requestAnimationFrame(() => {\r\n this._outer = outer;\r\n this.DisplayMode = outer.DisplayMode;\r\n\r\n // Bridge degli input da fuori a dentro\r\n this.DisplayMode = outer.DisplayMode;\r\n this.Readonly = outer.Readonly;\r\n this.Form = outer.Form;\r\n this.Placeholder = outer.Placeholder;\r\n this.ngModelOptions = outer.ngModelOptions;\r\n this.SingleSelection = outer.SingleSelection;\r\n this.Required = outer.Required;\r\n this.Validation = outer.Validation;\r\n this.PageSize = outer.PageSize;\r\n this.Navigation = outer.Navigation;\r\n this.EmitStartingValue = outer.EmitStartingValue;\r\n this.name = outer.name;\r\n this.ModalOnly = outer.ModalOnly;\r\n this.EntityName = outer.EntityName;\r\n this.ValidationSubject = outer.ValidationSubject;\r\n\r\n // Bridge degli output da dentro a fuori\r\n this.dialogVisible = outer.dialogVisible;\r\n this.dialogHidden = outer.dialogHidden;\r\n this.inputFinalized = outer.inputFinalized;\r\n this.inputChange = outer.inputChange;\r\n this.firstValueLoaded = outer.firstValueLoaded;\r\n\r\n // Bridge funzioni di inizializzazione \r\n this.applyFilters = outer.applyFilters.bind(outer);\r\n this.applyIdFilter = outer.applyIdFilter.bind(outer);\r\n this.evaluateLabel = outer.evaluateLabel.bind(outer);\r\n this.loadSearchDictionaries = outer.loadSearchDictionaries.bind(outer);\r\n this.Initialize = outer.Initialize.bind(outer);\r\n\r\n // Bridge di funzioni che quando chiamate all'esterno deve rispondere il componente interno\r\n outer.modalVisible = this.modalVisible.bind(this);\r\n outer.resetSearch = this.resetSearch.bind(this);\r\n outer.initStartValue = this.initStartValue.bind(this);\r\n outer.ensureClosed = this.ensureClosed.bind(this);\r\n outer.sendSearch = this.sendSearch.bind(this);\r\n outer.cleanSelection = this.cleanSelection.bind(this);\r\n outer.writeValue = this.writeValue.bind(this);\r\n\r\n requestAnimationFrame(() => {\r\n this.propagateChange = outer.propagateChange.bind(this);\r\n });\r\n this.Initialized.next(true);\r\n });\r\n }\r\n\r\n async ngOnInit() {\r\n await firstValueFrom(this.Initialized);\r\n\r\n this.ngControl = this.injector.get(NgControl) as NgModel;\r\n\r\n // Casistica di form detatched, attacco a forza il componente al form\r\n if (this.Form)\r\n this.Form.addControl(this.ngControl as NgModel)\r\n\r\n // ValidationSubject - Qui setta l'errore nel form-selector, nell'HTML setta l'errore nel form-input\r\n if (this.ValidationSubject) {\r\n this.ValidationSubject.pipe(takeUntil(this.destroyed$)).subscribe(v => {\r\n if (v.fieldName == this.name) {\r\n this.ngControl.control.setErrors({ forcedtoinvalid: true });\r\n this.ngControl.control.markAsTouched();\r\n }\r\n })\r\n }\r\n\r\n await this.loadSearchDictionaries();\r\n\r\n this.resetSearch();\r\n }\r\n\r\n async ngOnDestroy() {\r\n \r\n this.destroyed$.next();\r\n this.destroyed$.complete();\r\n\r\n await firstValueFrom(this.Initialized);\r\n\r\n // Su distruzione se il form è detatched, ripulisco\r\n if (this.Form)\r\n this.Form.removeControl(this.ngControl as NgModel)\r\n }\r\n\r\n async ngOnChanges(changes: SimpleChanges) {\r\n await firstValueFrom(this.Initialized);\r\n\r\n for (let change in changes) {\r\n\r\n if (this.searchIndependantProperties.includes(change))\r\n continue;\r\n\r\n if (!changes[change].firstChange) {\r\n console.log(`[Selector] Change on ${change}, search will be reset and curret value will be lost`);\r\n if (this.CurrentValue) {\r\n this.resetSearch(false);\r\n this.initStartValue(this.CurrentValue);\r\n }\r\n else {\r\n this.resetSearch(false);\r\n this.loadSearchDictionaries();\r\n this.cleanSelection();\r\n }\r\n break;\r\n }\r\n }\r\n }\r\n\r\n public resetSearch(applyFilters: boolean = true): boolean {\r\n this.firstApplication = true;\r\n this.Pristine = true;\r\n\r\n this.searchView = new this.searchType();\r\n this.searchView.itemsperpageoverride = this.PageSize;\r\n if(applyFilters)\r\n this.applyFilters(this.searchView, true, true);\r\n\r\n return true;\r\n }\r\n\r\n public initStartValue(valueId: string) {\r\n this.CurrentValue = valueId;\r\n\r\n // Inizializzare con un valore di partenza, senza valore di partenza, non ha senso\r\n if (!valueId)\r\n return;\r\n\r\n this.applyIdFilter(this.searchView, valueId);\r\n this.applyFilters(this.searchView, true, true);\r\n this.sendSearch(true, true, false);\r\n }\r\n\r\n public ensureClosed() {\r\n if (this.searchModal.isShown)\r\n this.searchModal.hide();\r\n }\r\n\r\n // Solo UI\r\n public async confirmSelection() {\r\n this.SelectedItems = [];\r\n this.SelectedObjects = [];\r\n\r\n let items = await firstValueFrom(this.SelectAll(this.searchView, this.searchApi));\r\n\r\n for (let i = 0; i < items.length; i++) {\r\n this.SelectedObjects.push(items[i]);\r\n this.SelectedItems.push(items[i][this.itemIdProperty]);\r\n }\r\n\r\n this.SelectedLabel = this.SelectedObjects?.length > 0 ? this.evaluateLabel(this.SelectedObjects) : \"\";\r\n\r\n this.changed();\r\n }\r\n\r\n public sendSearch(resetPage: boolean = true, selectResults?: boolean, applyOtherFilters: boolean = true) {\r\n if (applyOtherFilters) {\r\n for(var prop in this._outer.searchView){\r\n if(prop.startsWith(\"filter\"))\r\n this.searchView[prop] = this._outer.searchView[prop];\r\n }\r\n this.applyFilters(this.searchView, this.firstApplication);\r\n this.firstApplication = false;\r\n }\r\n\r\n this.searchView.searchinprogress = true;\r\n if (resetPage)\r\n this.searchView.page = 1;\r\n\r\n if (!this.searchView.itemsperpageoverride)\r\n this.searchView.itemsperpageoverride = this.PageSize;\r\n\r\n if (this.searchApi == dummyCall) {\r\n setTimeout(() => {\r\n this.searchView = AppSearch.newref(this.searchView);\r\n this.searchView.items = (this.searchView as any).filterdivision == \"1\" ? [{ id: \"11111\", description: \"Emanuele Ghetti\" } as any] : [{ id: \"2222222\", description: \"Emanuele Ghetti\" } as any];\r\n this.searchView.searchinprogress = false;\r\n\r\n this.afterSearch(selectResults)\r\n })\r\n return true;\r\n }\r\n\r\n this.http.post<TSearch>(this.searchApi, this.searchView).subscribe(t => {\r\n this.searchView = t;\r\n this.searchView.searchinprogress = false;\r\n\r\n this.afterSearch(selectResults)\r\n });\r\n\r\n return true;\r\n }\r\n\r\n private afterSearch(selectResults: boolean) {\r\n // La selezione dei risultati viene richiesta all'inizializzazione del selector con un valore già presente\r\n // il risultato della ricerca (sempre 1, ma gestito da un for sugli items per prepararsi alla selezione multipla) è la rappresentazione dello stato iniziale del selector\r\n if (selectResults) {\r\n if (this.searchView.items.length > 0) {\r\n this.SelectedItems = [];\r\n this.SelectedObjects = [];\r\n for (let i = 0; i < this.searchView.items.length; i++) {\r\n let target = <TItem>this.searchView.items[i];\r\n this.SelectedItems.push(target[this.itemIdProperty]);\r\n this.SelectedObjects.push(target);\r\n }\r\n\r\n this.SelectedLabel = this.evaluateLabel(this.SelectedObjects);\r\n // Serve la ripropagazione del valore per aggiornare il validatore\r\n this.changed(this.EmitStartingValue);\r\n this.firstValueLoaded.emit();\r\n this.ngControl.control.updateValueAndValidity();\r\n }\r\n }\r\n }\r\n\r\n public async writeValue(obj) {\r\n await firstValueFrom(this.Initialized);\r\n\r\n if (obj !== undefined && obj !== null)\r\n this.initStartValue(obj);\r\n else {\r\n this.resetSearch();\r\n this.SelectedItems = [];\r\n this.SelectedObjects = [];\r\n this.SelectedLabel = \"\";\r\n }\r\n }\r\n\r\n public changed(emit: boolean = true) {\r\n if (this.SingleSelection) {\r\n this.CurrentValue = this.SelectedItems.length > 0 ? this.SelectedItems[0] : ''\r\n this.propagateChange(this.CurrentValue);\r\n if (emit) {\r\n this.Pristine = false;\r\n this.inputChange.emit(this.SelectedItems.length > 0 ? <any>this.SelectedObjects[0] : null);\r\n this.inputFinalized.emit(this.name);\r\n }\r\n }\r\n else {\r\n this.CurrentValue = JSON.parse(JSON.stringify(this.SelectedItems));\r\n this.propagateChange(this.SelectedItems);\r\n if (emit) {\r\n this.Pristine = false;\r\n this.inputChange.emit(<any>this.SelectedObjects);\r\n this.inputFinalized.emit(this.name);\r\n }\r\n }\r\n\r\n }\r\n\r\n public cleanSelection() {\r\n this.SelectedItems = [];\r\n this.SelectedObjects = [];\r\n this.SelectedLabel = \"\";\r\n this.changed();\r\n }\r\n\r\n public modalVisible(visible: boolean) {\r\n if (visible)\r\n this.dialogVisible.emit(true);\r\n else\r\n this.dialogHidden.emit(true);\r\n }\r\n\r\n // Solo UI\r\n public copyToClipboard(subjectOverride?: string) {\r\n if (this.SelectedItems?.length > 0) {\r\n this.clipboardService.copyTextToClipboard(this.SelectedItems.join(','));\r\n this.msgExts.simpleInfo(`Codice ${this.subject || subjectOverride} copiato!`, 'toastr');\r\n }\r\n\r\n return false;\r\n }\r\n\r\n // Solo UI\r\n public navigate() {\r\n var item = this.SelectedObjects[0];\r\n if (this.navigationEntity && item) {\r\n if (!this.routesMap?.[this.navigationEntity]?.route || (this.routesMap[this.navigationEntity].route(item[this.itemIdProperty])?.length || 0) == 0) {\r\n this.msgExts.simpleError(`Impossibile navigare all'entità ${this.navigationEntity} con codice ${item[this.itemIdProperty]}`);\r\n return;\r\n }\r\n let urlTree = this.router.createUrlTree(this.routesMap[this.navigationEntity].route(item[this.itemIdProperty]));\r\n let url = this.router.serializeUrl(urlTree);\r\n window.open(\"#\" + url, '_blank');\r\n }\r\n }\r\n\r\n\r\n private SelectAll<T>(view: AppSearch<T>, api: string, pars?: HttpParams, transaction?: string): Observable<T[]> {\r\n if (api == dummyCall)\r\n return of(view.selection.items);\r\n\r\n if (!view.selection.all)\r\n return of(view.selection.items);\r\n\r\n var jsonView = JSON.parse(JSON.stringify(view));\r\n jsonView.page = 1;\r\n jsonView.itemsperpageoverride = 999999;\r\n\r\n return this.http.post<AppSearch<T>>(api, jsonView, pars, transaction).pipe(map<AppSearch<T>, T[]>(res => {\r\n let items = <T[]>res.items;\r\n items.forEach(t => (<any>t).hash = this.hashingService.hashObject(t, null, false));\r\n if (res.selection.exclusions?.length > 0)\r\n items = items.filter((t: any) => !res.selection.exclusions.find((e: any) => this.hashingService.hashObject(e, null, false) == t.hash));\r\n return items;\r\n }));\r\n }\r\n}","<form-selector *ngIf=\"Initialized | async\"\r\n [SetValidationSubject]=\"ValidationSubject\"\r\n [ModalOnly]=\"ModalOnly\"\r\n [Valid]=\"!((!Pristine || Form?.submitted) && !ngControl?.valid)\"\r\n [SelectedLabel]=\"SelectedLabel\"\r\n [Validation]=\"Validation\"\r\n [Readonly]=\"Readonly\"\r\n [Form]=\"Form\"\r\n [Name]=\"name\"\r\n [ngModelOptions]=\"ngModelOptions\"\r\n [Required]=\"Required\"\r\n [Placeholder]=\"Placeholder\"\r\n [HasExternalLink]=\"Navigation && (SelectedObjects?.length == 1 && !!navigationEntity)\"\r\n (onChange)=\"changed()\"\r\n (onSearch)=\"!Readonly && resetSearch() && sendSearch() && itemSearch().show();\"\r\n (onNavigation)=\"navigate()\"\r\n (onClipboardCopy)=\"copyToClipboard()\">\r\n</form-selector>\r\n\r\n<form-selector-dialog *ngIf=\"Initialized | async\"\r\n #itemSearch\r\n [Subject]=\"subject\"\r\n [EsTableTemplate]=\"EsTableTemplate() || EsTableTemplateComponent()\"\r\n [searchView]=\"searchView\"\r\n (onSearchRequest)=\"sendSearch($event)\"\r\n (onDialogVisibilityChange)=\"modalVisible($event);\"\r\n (onClearValue)=\"cleanSelection(); itemSearch.hide(); resetSearch();\"\r\n (onCloseDialog)=\"itemSearch.hide(); resetSearch();\"\r\n (onConfirmSelection)=\"confirmSelection(); itemSearch.hide(); resetSearch();\">\r\n <ng-container filters *ngIf=\"FiltersTemplate()\">\r\n <ng-container *ngTemplateOutlet=\"FiltersTemplate()\"></ng-container>\r\n </ng-container>\r\n\r\n</form-selector-dialog>","\r\nexport class BaseSelectorInitialization<TSearch> {\r\n constructor(\r\n public subject: string,\r\n public searchType: new () => TSearch,\r\n public searchApi: string,\r\n public navigationEntity?: string,\r\n public searchIndependantProperties?: string[],\r\n public idProperty?: string) { }\r\n}\r\n\r\n","// Angular\r\nimport { Location } from \"@angular/common\";\r\nimport { Component, Injector } from \"@angular/core\";\r\nimport { ActivatedRoute } from \"@angular/router\";\r\n\r\n// Esfaenza\r\nimport { AppSearch } from \"@esfaenza/es-table\";\r\nimport { MessageService, UtilityService } from \"@esfaenza/extensions\";\r\nimport { HTTPService } from \"@esfaenza/httpservice\";\r\nimport { CacheService } from \"@esfaenza/preferences\";\r\nimport { LocalizationService } from \"@esfaenza/localizations\";\r\nimport { BaseComponent } from \"../base/base.component\";\r\n\r\n// Libs\r\nimport { combineLatest, firstValueFrom, map, takeUntil } from \"rxjs\";\r\nimport { HttpParams } from \"@angular/common/http\";\r\n\r\n@Component({ template: '' })\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 protected ItemType: new () => TItem;\r\n protected http: HTTPService;\r\n protected utiExts: UtilityService;\r\n protected msgExts: MessageService;\r\n\r\n private location: Location;\r\n private localStorage: CacheService;\r\n private route: ActivatedRoute;\r\n\r\n public lc: LocalizationService;\r\n\r\n constructor(injector: Injector) {\r\n super(injector);\r\n\r\n this.location = injector.get(Location);\r\n this.lc = injector.get(LocalizationService);\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 this.msgExts = injector.get(MessageService);\r\n\r\n [this.HotView, this.SearchURL, this.SearchType, this.ItemType] = this.initialize();\r\n\r\n if (!this.HotView || !this.SearchURL || !this.SearchType || !this.ItemType)\r\n throw (\"Fallita inizializzazione della pagina di ricerca.\");\r\n }\r\n\r\n ngOnInit() {\r\n combineLatest([this.route.queryParams, this.route.params]).pipe(takeUntil(this.destroyed$), map((res) => ({ querypars: res[0], pars: res[1] }))).subscribe(res => {\r\n\r\n // Sto cavolo di ignoreStorage mi farà diventare pazzo\r\n let tmpIgnoreStorage = res.querypars[\"ignoreStorage\"];\r\n let ignoreStorage: boolean;\r\n if (typeof tmpIgnoreStorage === \"string\")\r\n ignoreStorage = tmpIgnoreStorage == \"false\" ? false : tmpIgnoreStorage == \"true\" ? true : false;\r\n else if (typeof tmpIgnoreStorage === \"boolean\")\r\n ignoreStorage = tmpIgnoreStorage;\r\n else\r\n ignoreStorage = false; // ignoreStorage false se non specificato diversamente\r\n\r\n this.init(ignoreStorage);\r\n });\r\n }\r\n\r\n private async init(ignoreStorage: boolean) {\r\n await this.getDictionaries();\r\n\r\n let item = await firstValueFrom(this.localStorage.getItem<TSearch>(this.HotView));\r\n if (!ignoreStorage && item) {\r\n item[\"__proto__\"] = new this.SearchType();\r\n this.createOrLoadView(item);\r\n } else {\r\n this.createOrLoadView(null);\r\n this.location.replaceState(this.CompletePath);\r\n this.route.snapshot.queryParams = [];\r\n await firstValueFrom(this.localStorage.removeItem(this.HotView));\r\n }\r\n }\r\n\r\n private createOrLoadView(HotPotato: TSearch) {\r\n if (HotPotato) {\r\n this.searchView = HotPotato;\r\n this.afterLoadView(this.searchView);\r\n }\r\n else {\r\n this.searchView = new this.SearchType();\r\n this.searchView.firstsearch = false;\r\n this.searchView.page = 1;\r\n this.afterCreateView(this.searchView);\r\n }\r\n }\r\n\r\n public sendSearch() {\r\n this.RetrieveProto(AppSearch.newref(this.searchView))\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 public onSearchRequest(resetPage: boolean = true) {\r\n\r\n if (!this.canPerformSearch())\r\n return;\r\n\r\n //this.filters.onUpdateFiltersTop();\r\n this.searchView.searchinprogress = true;\r\n\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.reviewBindings();\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 public prepareExport(callback, limit: number = -1, pars?: HttpParams) {\r\n var view = AppSearch.toSelectAll(this.searchView);\r\n this.http.post<AppSearch<TItem>>(this.SearchURL, view, pars).subscribe(t => {\r\n if (t.objectcount > limit && limit > 0) {\r\n this.msgExts.simpleError(`Massimo numero di elementi consentito: ${limit}.`);\r\n return;\r\n }\r\n callback(t.items, this.ItemType);\r\n });\r\n }\r\n\r\n abstract initialize(): [string, string, new () => TSearch, new () => TItem] | any;\r\n protected async getDictionaries(): Promise<void> { };\r\n protected afterLoadView(_: TSearch) { };\r\n protected afterCreateView(_: TSearch) { };\r\n protected reviewBindings() { };\r\n protected canPerformSearch(): boolean { return true };\r\n}","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i4","i1","i3","i5","i6","i2","i7","i11","takeUntil","i8","map"],"mappings":"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"}
1
+ {"version":3,"file":"esfaenza-core-components.mjs","sources":["../../../projects/core/components/src/back-top/back-top.component.ts","../../../projects/core/components/src/back-top/back-top.component.html","../../../projects/core/components/src/breadcrumb/breadcrumb.component.ts","../../../projects/core/components/src/breadcrumb/breadcrumb.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/error/errorpage.component.ts","../../../projects/core/components/src/error/errorpage.component.html","../../../projects/core/components/src/sidebar/sidebar.component.loc.ts","../../../projects/core/components/src/sidebar/sidebar.component.ts","../../../projects/core/components/src/sidebar/sidebar.component.html","../../../projects/core/components/src/navbar/navbar.component.loc.ts","../../../projects/core/components/src/base/reactive.component.ts","../../../projects/core/components/src/navbar/navbar.component.ts","../../../projects/core/components/src/navbar/navbar.component.html","../../../projects/core/components/src/page/pages.component.ts","../../../projects/core/components/src/page/pages.component.html","../../../projects/core/components/src/external-page/external_pages.component.ts","../../../projects/core/components/src/external-page/external_pages.component.html","../../../projects/core/components/src/jace-login/jace-login.component.ts","../../../projects/core/components/src/jace-login/jace-login.component.html","../../../projects/core/components/src/redirecter/redirecter.component.ts","../../../projects/core/components/src/redirecter/redirecter.component.html","../../../projects/core/components/src/base/base.component.ts","../../../projects/core/components/src/jace-resource/jace-resource.component.ts","../../../projects/core/components/src/jace-resource/jace-resource.component.html","../../../projects/core/components/src/labeled-span/labeled-span.component.ts","../../../projects/core/components/src/labeled-span/labeled-span.component.html","../../../projects/core/components/src/es-image-cropper/es-image-cropper.component.ts","../../../projects/core/components/src/es-image-cropper/es-image-cropper.component.html","../../../projects/core/components/src/selector/form-selector/form-selector.component.ts","../../../projects/core/components/src/selector/form-selector/form-selector.component.html","../../../projects/core/components/src/selector/form-selector-dialog/form-selector-dialog.component.ts","../../../projects/core/components/src/selector/form-selector-dialog/form-selector-dialog.component.html","../../../projects/core/components/src/entity-feeds-widget/entity-feeds-widget.component.ts","../../../projects/core/components/src/entity-feeds-widget/entity-feeds-widget.component.html","../../../projects/core/components/src/components.module.ts","../../../projects/core/components/src/base/embedding.component.ts","../../../projects/core/components/src/base/embedding.component.html","../../../projects/core/components/src/user_infos/user_infos.component.loc.ts","../../../projects/core/components/src/user_infos/user_infos.component.ts","../../../projects/core/components/src/user_infos/user_infos.component.html","../../../projects/core/components/src/selector/base/base-selector.component.ts","../../../projects/core/components/src/selector/base/base-selector.component.html","../../../projects/core/components/src/selector/base/models/BaseSelectorInitialization.ts","../../../projects/core/components/src/search/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 { ActivatedRoute, Data, NavigationEnd, Router, RouterLink, UrlTree } from \"@angular/router\";\r\nimport { Component, ViewEncapsulation } from \"@angular/core\";\r\nimport { Title } from \"@angular/platform-browser\";\r\nimport { NgFor, NgIf } from \"@angular/common\";\r\n\r\n// Configurazioni\r\nimport { AppEmbeddingExtensions } from \"@esfaenza/extensions\";\r\nimport { AppState } from \"@esfaenza/core/services\";\r\nimport { EnvOptions } from \"@esfaenza/core/domain\";\r\n\r\n// Librerie\r\nimport { filter, map, mergeMap } from \"rxjs/operators\";\r\nimport { of, combineLatest } from \"rxjs\";\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 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, private emb: AppEmbeddingExtensions) {\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\"] || data[\"internalNavigation\"];\r\n let title = data[\"title\"];\r\n\r\n this.handleNavigation(title, internalNavigation, tree);\r\n });\r\n\r\n this.emb.MessageObserver.pipe(filter(ev => ev.event == \"navigation\")).subscribe(event => {\r\n let internalNavigation = event?.data?.internalNavigation;\r\n let title = event?.data?.title;\r\n\r\n this.handleNavigation(title, internalNavigation);\r\n });\r\n }\r\n\r\n handleNavigation(title: string, internal: boolean, tree: UrlTree = null){\r\n if (internal) { this.onSubNavigation(tree, title); }\r\n else { this.onMainNavigation(tree, title); }\r\n this._titleService.setTitle(myconfig.AppData.ModuleDescription + (title ? (\" > \" + title) : ''));\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: tree ? this.getRouterLink(tree) : null });\r\n }\r\n\r\n onMainNavigation(tree: UrlTree, title: string) {\r\n this.SubLinks = [];\r\n this.MainLink = { title: title, routerLink: tree ? this.getRouterLink(tree) : null };\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 \r\n <ng-container *ngFor=\"let link of SubLinks\">\r\n <li *ngIf=\"link.routerLink\" class=\"breadcrumb-item text-uppercase breadcrumb-link\" [routerLink]=\"link.routerLink\">{{link.title}}</li>\r\n <li *ngIf=\"!link.routerLink\" class=\"breadcrumb-item text-uppercase breadcrumb-link\">{{link.title}}</li>\r\n </ng-container>\r\n</ol>","// 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 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() Backdrop: boolean = true;\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: Backdrop, 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\">&times;</span>\r\n </div>\r\n</div>","// Angular\r\nimport { Component, Inject, ViewEncapsulation } from \"@angular/core\";\r\nimport { ActivatedRoute, Router } from \"@angular/router\";\r\nimport { NgIf } from \"@angular/common\";\r\nimport { FormsModule } from \"@angular/forms\";\r\n\r\n// Configurazioni\r\nimport { HTTPService } from \"@esfaenza/httpservice\";\r\nimport { TokenService } from \"@esfaenza/core/services\";\r\nimport { AppEmbeddingExtensions, CallResult, MessageService } from \"@esfaenza/extensions\";\r\nimport { ANONYMOUS_MODE } from \"@esfaenza/core/domain\";\r\n\r\n// Modal\r\nimport { EsModalComponent } from \"../es-modal/es-modal.component\";\r\nimport { EsModalHeadComponent } from \"../es-modal/es-modal-head/es-modal-head.component\";\r\n\r\nconst POST_Jace_OpenTicket: string = \"/api/Jace/OpenTicket\";\r\n\r\n@Component({\r\n selector: \"errorpage\",\r\n encapsulation: ViewEncapsulation.None,\r\n templateUrl: \"./errorpage.component.html\",\r\n styleUrls: [\"./errorpage.component.scss\"],\r\n imports: [NgIf, EsModalComponent, EsModalHeadComponent, FormsModule]\r\n})\r\nexport class ErrorPageComponent {\r\n\r\n statusCode: string;\r\n statusText: string;\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 errorLastRequests: string;\r\n errorLastResponses: string;\r\n\r\n debugging = false;\r\n\r\n constructor(private router: Router, private route: ActivatedRoute, private msgService: MessageService, private http: HTTPService, private bts: TokenService, private emb: AppEmbeddingExtensions, @Inject(ANONYMOUS_MODE) public ANONYMOUS_MODE: boolean) {\r\n\r\n let identity = this.bts.getJaceIdentity();\r\n\r\n this.debugging = identity.Roles.some(t => t == \"Jace Admin\");\r\n this.statusCode = this.route.snapshot.params[\"statusCode\"];\r\n this.statusCode = this.statusCode == '9999' ? null : this.statusCode;\r\n this.statusText = this.b64DecodeUnicode(this.route.snapshot.params[\"statusText\"]);\r\n this.errorMessage = this.b64DecodeUnicode(this.route.snapshot.params[\"errorMessage\"]);\r\n \r\n this.previousUrl = this.route.snapshot.params[\"fromUrl\"];\r\n let calls = (this.http.LastThreeCompletedCalls[0]?.api || \"<empty>\") + \", \" + (this.http.LastThreeCompletedCalls[1]?.api || \"<empty>\") + \", \" + (this.http.LastThreeCompletedCalls[2]?.api || \"<empty>\");\r\n this.errorLastRequests = \"\\r\\n1: \" + (this.http.LastThreeCompletedCalls[0]?.requestJson || \"<empty>\") + \"\\r\\n2: \" + (this.http.LastThreeCompletedCalls[1]?.requestJson || \"<empty>\") + \"\\r\\n3: \" + (this.http.LastThreeCompletedCalls[2]?.requestJson || \"<empty>\");\r\n this.errorLastResponses = \"\\r\\n1: \" + (this.http.LastThreeCompletedCalls[0]?.responseJson || \"<empty>\") + \"\\r\\n2: \" + (this.http.LastThreeCompletedCalls[1]?.responseJson || \"<empty>\") + \"\\r\\n3: \" + (this.http.LastThreeCompletedCalls[2]?.responseJson || \"<empty>\");\r\n this.errorFrom = this.previousUrl || \"<missing>\";\r\n this.errorLastCalls = calls;\r\n this.identityInfos = (identity?.Idtenant || '??') + \"-\" + (identity?.DsUser || '???????');\r\n\r\n console.error(this.errorMessage);\r\n console.log(\"Modalità anonima: \" + this.ANONYMOUS_MODE)\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 if(!str) return \"\";\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.emb.Embedded)\r\n this.emb.MainWindow.postMessage({ type: \"navigate\", url }, \"*\");\r\n else\r\n this.router.navigate([url]);\r\n }\r\n\r\n\r\n public BugReportText = \"\";\r\n\r\n public canReport = true;\r\n\r\n openTicket(){\r\n let dto = {\r\n errorFrom: this.errorFrom,\r\n errorLastCalls: this.errorLastCalls,\r\n identityInfos: this.identityInfos,\r\n statusCode: this.statusCode,\r\n statusText: this.statusText,\r\n errorMessage: this.errorMessage,\r\n requests: this.errorLastRequests,\r\n responses: this.errorLastResponses,\r\n userMessage: this.BugReportText \r\n }\r\n\r\n this.http.post<CallResult>(POST_Jace_OpenTicket, dto).subscribe(r => {\r\n this.msgService.manageCallResultResponse(r, \"Segnalazione registrata correttamente\", \"Errori nella registrazione della segnalazione\", () => {\r\n this.canReport = false;\r\n });\r\n });\r\n return true;\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 <ng-container *ngIf=\"debugging\">\r\n <div class=\"card\">\r\n <div class=\"card-body text-center\">\r\n\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.\r\n Prova a ricaricare la pagina precedente e rieffettuare le stesse operazioni, se il\r\n problema persiste invia una segnalazione allegando una breve descrizione delle\r\n operazioni che stavi eseguendo\r\n </small>\r\n </h6>\r\n <div style=\"max-height: 450px; overflow-x: hidden; overflow-y: scroll; margin-bottom: 10px;\">\r\n <h6 class=\"card-title text-danger app-margin-top-10 text-left\" style=\"word-wrap:break-word\" *ngIf=\"identityInfos\"><em>Logged user: {{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>From page: {{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>Last three calls: {{errorLastCalls}}</em></h6>\r\n \r\n <!-- Errori Angular -->\r\n <ng-container *ngIf=\"errorMessage\">\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 </ng-container>\r\n\r\n <!-- Errori HTTP -->\r\n <ng-container *ngIf=\"statusCode || statusText\">\r\n <h1 class=\"display-1\" *ngIf=\"!statusCode\">&nbsp;&nbsp;&nbsp;</h1>\r\n <h1 class=\"display-1\" *ngIf=\"statusCode\">{{statusCode == '4041' ? 'Pagina non trovata' : ''}}</h1>\r\n <h6 class=\"card-title\" *ngIf=\"!statusText\">&nbsp;&nbsp;&nbsp;</h6>\r\n <h6 class=\"card-title\" style=\"word-wrap:break-word; max-height: 500px; overflow: auto\" *ngIf=\"statusText\">{{statusText}}</h6>\r\n </ng-container>\r\n </div>\r\n <div style=\"display: flex;\" *ngIf=\"!ANONYMOUS_MODE\">\r\n <button type=\"button\" class=\"btn btn-secondary\" yle=\"margin-right: auto;\" (click)=\"goPreviousPage()\">Torna alla pagina precedente</button>\r\n <button [hidden]=\"!canReport\" type=\"button\" class=\"btn btn-warning\" style=\"margin: auto;\" (click)=\"BugReportText = ''; dlgSegnalazione.show()\">Invia segnalazione</button>\r\n <button type=\"button\" class=\"btn btn-primary\" style=\"margin-left: auto;\" (click)=\"goDashboard()\">Vai alla Dashboard</button>\r\n <div class=\"clearfix\"></div>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n <ng-container *ngIf=\"!debugging\">\r\n <div class=\"error-container\">\r\n <div class=\"emoji\">😕</div>\r\n <h1>Qualcosa è andato storto</h1>\r\n <p>Si è verificato un errore imprevisto. Puoi inviare una segnalazione per aiutarci a risolverlo. </p>\r\n\r\n <div class=\"buttons\">\r\n <button class=\"report-btn btn-warning\" (click)=\"BugReportText = ''; dlgSegnalazione.show()\">Invia segnalazione</button>\r\n <button class=\"home-btn btn-primary\" (click)=\"goDashboard()\">Torna alla Dashboard</button>\r\n </div>\r\n </div>\r\n </ng-container>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n<es-modal #dlgSegnalazione [Size]=\"'L'\">\r\n <es-modal-head (Close)=\"dlgSegnalazione.hide();\">\r\n <h5 class=\"modal-title pull-left\">Invio Segnalazione</h5>\r\n </es-modal-head>\r\n <form novalidate #formAddEdit=\"ngForm\" (ngSubmit)=\"formAddEdit.valid && openTicket() && dlgSegnalazione.hide()\">\r\n <div class=\"modal-body\">\r\n <div class=\"card card-info app-padding-10 app-white-text\">\r\n Per inviare una segnalazione, si prega di inserire una descrizione dettagliata delle azioni effettuate.\r\n Non serve allegare nessun tipo di file/screenshot (in teoria...), tutte le informazioni richieste sono state già\r\n raccolte.\r\n </div>\r\n <textarea class=\"bugreport-textarea\" [(ngModel)]=\"BugReportText\" #report=\"ngModel\" name=\"BugReportText\" placeholder=\"Stavo navigando nella pagina e...\" required minlength=\"50\"></textarea>\r\n <div class=\"validation-message\" *ngIf=\"report.invalid && formAddEdit.submitted\">\r\n La descrizione delle azioni effettuate è obbligatoria e dev'essere almeno lunga una cinquantina di caratteri.\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)=\"dlgSegnalazione.hide();\">Annulla</button>\r\n <button type=\"submit\" class=\"btn btn-primary\">Conferma</button>\r\n </div>\r\n </form>\r\n</es-modal>","import { Injectable, Injector } from \"@angular/core\";\r\nimport { LocalizationService } from \"@esfaenza/localizations\";\r\n\r\n@Injectable()\r\nexport class SideBarLoc 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\", \"Ambiente di Sviluppo A\", [\"Development Environment A\"]);\r\n super.set(\"it->en\", \"Ambiente di Sviluppo B\", [\"Development Environment B\"]);\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 super.set(\"it->en\", \"Scrivere almeno 3 caratteri per utilizzare la ricerca globale\", [\"You must write at least 3 characters in order to use the Global Research\"]);\r\n }\r\n}","// 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 { EsTableColumnsDefinition, EsTableModule } from \"@esfaenza/es-table\";\r\nimport { FormsModule } from \"@angular/forms\";\r\nimport { SideBarLoc } from \"./sidebar.component.loc\";\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 viewProviders: [{ provide: LocalizationService, useClass: SideBarLoc }],\r\n imports: [SlimScroll, NgFor, NgTemplateOutlet, NgIf, RouterLinkActive, RouterLink, FormsModule, EsTableModule, LocalizationModule]\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 @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, private msgExts: MessageService) {\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 let menus = this.utiExts.deepClone(this.menuItemsRaw);\r\n\r\n // Giro 1 assegno il livello ai root\r\n for (let i = 0; i < menus.length; i++) {\r\n let t = menus[i] as any;\r\n t.level = 1;\r\n t.padding_left = 18;\r\n t.visible = !t.ac || this.aac.has(t.ac);\r\n\r\n // Giro ricorsivo\r\n if (t.subMenu && t.subMenu.length > 0)\r\n this.checkSubMenuOverClaims(t, 1);\r\n }\r\n\r\n return menus;\r\n }\r\n\r\n private checkSubMenuOverClaims(menuItem: ApplicationMenu, level: number) {\r\n for (let i = 0; i < menuItem.subMenu.length; i++) {\r\n let t = menuItem.subMenu[i] as any;\r\n t.level = level + 1;\r\n t.visible = !t.ac || this.aac.has(t.ac);\r\n t.padding_left = t.level * 18;\r\n if (t.subMenu && t.subMenu.length > 0)\r\n this.checkSubMenuOverClaims(t, level + 1);\r\n }\r\n }\r\n\r\n //#region JQuery\r\n @HostListener(\"window:resize\")\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 //#region Footer\r\n public onChangeTenant() {\r\n window.location.href = `${myconfig.AuthUrl}/#/login;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 async 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 await this.profile.doReloadProfilePicture();\r\n this.cdr.markForCheck();\r\n }\r\n }\r\n //#endregion\r\n\r\n //#region Gestione Ricerca Globale\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 this.searchingTerm = true;\r\n this.searchResult = null;\r\n\r\n if (!this.globalSearchService.Enabled)\r\n return;\r\n\r\n if (this.searchTerm.trim().length < 3) {\r\n this.msgExts.simpleWarning(this.lc.loc(\"Scrivere almeno 3 caratteri per utilizzare la ricerca globale\"));\r\n return;\r\n }\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 // Short-circuit in assenza di risultati\r\n if ((this.searchResult.results.length || 0) === 0) {\r\n this.cdr.markForCheck();\r\n return;\r\n }\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 this.cdr.markForCheck();\r\n });\r\n });\r\n }\r\n\r\n onSearchModelChanged() {\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 this.cdr.markForCheck();\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 this.cdr.markForCheck();\r\n });\r\n }\r\n //#endregion\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 <ng-container *ngIf=\"!isMenuCollapsed\">\r\n <img class=\"app-logo-img\" src=\"assets/img/logo/headlogo_small.png\" alt=\"\">\r\n <div class=\"app-logo-font-container\">\r\n <span class=\"app-logo-font\">{{applicationName}}</span>\r\n </div>\r\n </ng-container>\r\n \r\n <img *ngIf=\"isMenuCollapsed\" class=\"app-logo-img-sm\" src=\"assets/img/logo/headlogo_small.png\" alt=\"\">\r\n </div>\r\n </div>\r\n <!--Ricerca globale-->\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 + (isMenuCollapsed ? 55 : 0)}\">\r\n <ng-container *ngFor=\"let item of menuItems; let last = last;\">\r\n <li *ngIf=\"item.visible\" 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 </ng-container>\r\n </ul>\r\n <!--Selettore Barra dei Menu-->\r\n <div class=\"sidebar-hover-elem\"></div>\r\n <!--Footer *ngIf=\"!isMenuCollapsed\"-->\r\n <div 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 [style.padding.px]=\"isMenuCollapsed ? 5 : 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 <!-- Da valutare -->\r\n <!-- <img src='../assets/img/events/christmas.png' alt=\"user-img\" class=\"img-circle user-img app-absolute app-right-0\" [style.right.px]=\"undefined\" *ngIf=\"_state.christmasTime()\">\r\n <img src='../assets/img/events/halloween.png' alt=\"user-img\" class=\"img-circle user-img app-absolute app-right-0\" [style.right.px]=\"undefined\" *ngIf=\"_state.halloweenTime()\"> -->\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\" [style.display]=\"isMenuCollapsed ? 'inline' : 'flex'\">\r\n <div (click)=\"onChangeTenant();\" class=\"app-sidebar-footer-op app-no-selection\" [style.margin-top.px]=\"isMenuCollapsed ? 10 : 0\"><i class=\"far fa-right-left\"></i><span *ngIf=\"!isMenuCollapsed\">&nbsp;Cambia Tenant</span></div>\r\n <div (click)=\"onLogout();\" class=\"app-sidebar-footer-op app-no-selection\" [style.margin-top.px]=\"isMenuCollapsed ? 10 : 0\"><i class=\"far fa-right-from-bracket\"></i><span *ngIf=\"!isMenuCollapsed\">&nbsp;Logout</span></div>\r\n </div>\r\n <!--Versione corrente applicazione-->\r\n <div *ngIf=\"!isMenuCollapsed\" 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 [style.padding-left.px]=\"item.padding_left\" *ngIf=\"(!item.routerLink && !item.subMenu) || item.wip\" [href]=\"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 [style.padding-left.px]=\"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 [style.padding-left.px]=\"item.padding_left\" *ngIf=\"item.subMenu && !item.wip\" (click.out-zone)=\"collapseMenu($event, item)\" [attr.href]=\"''\" class=\"sidebar-list-link {{item.cssClass || ''}}\" (mouseenter.out-zone)=\"hoverItem($event)\">\r\n <i *ngIf=\"item.icon\" class=\"{{ item.icon }}\"></i><span>{{ item.title | localize : lc }}</span>\r\n <b class=\"fa fa-angle-down\"></b>\r\n </a>\r\n\r\n <ul *ngIf=\"item.subMenu\" class=\"sidebar-sublist\">\r\n <ng-container *ngFor=\"let subitem of item.subMenu\" >\r\n <li *ngIf=\"subitem.visible\" class=\"sidebar-sublist-item level-{{item.level}}\" [class.sidebar-item-wip]=\"subitem.wip\">\r\n <ng-container *ngTemplateOutlet=\"menuItem; context : {$implicit: subitem}\"></ng-container>\r\n </li>\r\n </ng-container>\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\", \"Ambiente di Sviluppo A\", [\"Development Environment A\"]);\r\n super.set(\"it->en\", \"Ambiente di Sviluppo B\", [\"Development Environment B\"]);\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 super.set(\"it->en\", \"Scrivere almeno 3 caratteri per utilizzare la ricerca globale\", [\"You must write at least 3 characters in order to use the Global Research\"]);\r\n super.set(\"it->en\", \"Ripulisci la Cache di tutti\", [\"Clear Caches of everyone\"]);\r\n super.set(\"it->en\", \"Ripulisci le Preferenze di tutti\", [\"Clear Preferences of everyone\"]);\r\n }\r\n}","// Angular\r\nimport { Component } from \"@angular/core\";\r\n\r\n// Direttive, Componenti, Librerie\r\nimport { ReplaySubject, Subscription/*, pipe, takeUntil*/ } from \"rxjs\";\r\n\r\n@Component({\r\n template: '',\r\n standalone: false\r\n})\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 // TODO: Check\r\n //takeUntilDestroyed = new pipe(() => takeUntil(this.destroyed$))\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, ChangeDetectorRef, Component, ElementRef, Inject, Type, ViewChild, ViewEncapsulation } from \"@angular/core\";\r\nimport { Router } from \"@angular/router\";\r\nimport { NgIf, NgFor } 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// Ng Prima\r\nimport { ToggleSwitchModule } from \"primeng/toggleswitch\";\r\n\r\n// EsFaenza\r\nimport { AccessControlModule } from \"@esfaenza/access-control\";\r\nimport { EsTableModule } from \"@esfaenza/es-table\";\r\nimport { ComponentHostDirective } from \"@esfaenza/core/directives\";\r\nimport { JaceIdentity, EnvOptions, ApplicationJob, NAVBAR_EXTENSIONS, LOGIN_URL_LEGACY, ANONYMOUS_MODE } 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\n\r\nconst GET_Cache_ClearAllCaches: string = \"/api/Cache/ClearAllCaches\";\r\nconst GET_Cache_ClearAllClientsCaches: string= \"/api/Cache/ClearAllClientsCaches\";\r\nconst GET_Cache_ClearAllClientsPreferences: string= \"/api/Cache/ClearAllClientsPreferences\";\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 imports: [FormsModule, BsDropdownModule, NgIf, NgFor, ProgressbarModule, ComponentHostDirective, EsTableModule, LocalizationModule, AccessControlModule, ToggleSwitchModule]\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 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 @Inject(LOGIN_URL_LEGACY) public loginUrlLegacy: boolean, @Inject(ANONYMOUS_MODE) public ANONYMOUS_MODE: boolean) {\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 ? (\": \" + jobDescription) : ''), \"toastr\");\r\n this.cdr.markForCheck();\r\n });\r\n\r\n this._state.subscribe(\"app.startedJob\", (_) => { this.cdr.markForCheck(); });\r\n this._state.subscribe(\"app.progressJob\", (_) => { this.cdr.markForCheck(); });\r\n\r\n this.handleBaseNotifications();\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 this.notifications.observe(this.MessageDef.IN_ClearCache).pipe(takeUntil(this.destroyed$)).subscribe((message) => {\r\n this.clearCacheClient(false);\r\n });\r\n\r\n this.notifications.observe(this.MessageDef.IN_ClearPreferecnes).pipe(takeUntil(this.destroyed$)).subscribe((message) => {\r\n this.clearUserPreferences(false);\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 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 goToDashboard(){\r\n window.open(myconfig.JaceDashboardUrl, '_blank').focus();\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 if (this.loginUrlLegacy)\r\n window.location.href = `${myconfig.AuthUrl}/logout?client=${myconfig.Client}`;\r\n else\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 if (this.loginUrlLegacy)\r\n window.location.href = `${myconfig.AuthUrl}/login/tenant?client=${myconfig.Client}`;\r\n else\r\n window.location.href = `${myconfig.AuthUrl}/#/login;client=${myconfig.Client}`;\r\n }\r\n\r\n clearUserPreferences(warn: boolean = true) {\r\n this.prefsService.clear().subscribe();\r\n if (warn)\r\n this.msgExts.simpleSuccess(this.lc.loc(\"Preferenze utente ripulite\"));\r\n else\r\n console.info(\"@esfaenza/core: Forceful preferecnes clear request received\");\r\n }\r\n\r\n clearCacheClient(warn: boolean = true) {\r\n this.cacheService.clear().subscribe();\r\n this.http.resetHttpUntimedCacheStorage();\r\n this.http.resetHttpTimedCacheStorage();\r\n if (warn)\r\n this.msgExts.simpleSuccess(this.lc.loc(\"Cache Ripulita\"));\r\n else\r\n console.info(\"@esfaenza/core: Forceful cache clear request received\");\r\n }\r\n\r\n clearCacheServer() {\r\n this.http.get(GET_Cache_ClearAllCaches).subscribe(_ => {\r\n this.msgExts.simpleSuccess(this.lc.loc(\"Cache Ripulita\"));\r\n });\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_Cache_ClearAllCaches).subscribe(_ => {\r\n this.msgExts.simpleSuccess(this.lc.loc(\"Cache Ripulita\"));\r\n });\r\n }\r\n\r\n forceClearConnectedClientAssets(muo: 'cache' | 'preferences') {\r\n if (muo == \"cache\") {\r\n this.http.get(GET_Cache_ClearAllClientsCaches).subscribe(_ => {\r\n this.msgExts.simpleSuccess(this.lc.loc(\"Cache Ripulita\"));\r\n });\r\n }\r\n else if (muo == \"preferences\") {\r\n this.http.get(GET_Cache_ClearAllClientsPreferences).subscribe(_ => {\r\n this.msgExts.simpleSuccess(this.lc.loc(\"Preferenze utente ripulite\"));\r\n });\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}","<nav #navbar class=\"nav enuma-navbar\">\r\n <div class=\"d-flex\" style=\"width: 100%;\">\r\n <!-- Collapse menù a sinistra -->\r\n <div><a (click)=\"toggleMenu()\" class=\"far fa-bars nav-icon app-padding-left-15\" style=\"padding-top: 8px;\"></a></div>\r\n\r\n <!-- Breadcrumb -->\r\n <div class=\"app-padding-left-15\" style=\"padding-top: 8px;\"><ng-content></ng-content></div>\r\n\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 <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 style=\"margin-right: auto;\">{{'Job Applicativi' | localize : lc}}</span>\r\n <span class=\"app-margin-right-5\">{{'Notifiche' | localize : lc}}:</span>\r\n <span class=\"m-b-min-5\">\r\n <p-toggleswitch [(ngModel)]=\"_state.notifyOnCompletedJobs\" (click)=\"clearMessages(); $event.stopPropagation();\"/>\r\n </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}}\" class=\"app-link app-no-selection app-inline app-pointer\" (click)=\"completedJobClicked(job); $event.stopPropagation();\">{{job.smalldescription}}</span>\r\n <strong class=\"pull-right\" *ngIf=\"!job.completed\">{{job.percentage}}%</strong>\r\n <strong class=\"pull-right\" *ngIf=\"job.completed\">{{'Completed' | localize : lc}}</strong>\r\n </span>\r\n <div class=\"progress progress-sm\">\r\n <progressbar *ngIf=\"!job.completed\" [max]=\"100\" [value]=\"job.percentage\" [striped]=\"true\" [animate]=\"true\"></progressbar>\r\n <progressbar *ngIf=\"job.completed\" type=\"success\" [max]=\"100\" [value]=\"100\" [striped]=\"false\" [animate]=\"false\"></progressbar>\r\n </div>\r\n </div>\r\n </div>\r\n </ul>\r\n </div>\r\n \r\n <!--Other Modules-->\r\n <div *ngIf=\"!ANONYMOUS_MODE\" class=\"user-menu app-no-selection app-margin-right-15\" dropdown container=\"body\" placement=\"bottom right\">\r\n <a class=\"far fa-cubes module-nav-menu-link dropdown-toggle app-pointer\" (click)=\"goToDashboard()\"></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-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 *ac=\"'R:Jace Admin'\" class=\"dropdown-item app-pointer\" (click)=\"forceClearConnectedClientAssets('cache')\">\r\n <i class=\"far fa-broom-wide app-margin-right-10\"></i>{{'Ripulisci la Cache di tutti' | localize : lc}}\r\n </li>\r\n <li *ac=\"'R:Jace Admin'\" class=\"dropdown-item app-pointer\" (click)=\"forceClearConnectedClientAssets('preferences')\">\r\n <i class=\"far fa-broom-wide app-margin-right-10\"></i>{{'Ripulisci le Preferenze di tutti' | 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\r\n <!--Ambiente-->\r\n <div>\r\n <div class=\"nav-environment app-no-selection\">\r\n <ng-container *ngIf=\"['Dev', 2].includes(applicationEnvironment)\">{{'Ambiente di Sviluppo' | localize : lc}}</ng-container>\r\n <ng-container *ngIf=\"['DevA', 3].includes(applicationEnvironment)\">{{'Ambiente di Sviluppo A' | localize : lc}}</ng-container>\r\n <ng-container *ngIf=\"['DevB', 4].includes(applicationEnvironment)\">{{'Ambiente di Sviluppo B' | localize : lc}}</ng-container>\r\n <ng-container *ngIf=\"['Stage', 5].includes(applicationEnvironment)\">{{'Ambiente di Staging' | localize : lc}}</ng-container>\r\n <ng-container *ngIf=\"['StageA', 6].includes(applicationEnvironment)\">{{'Ambiente di Staging A' | localize : lc}}</ng-container>\r\n <ng-container *ngIf=\"['Prod', 1].includes(applicationEnvironment)\">{{'Ambiente di Produzione' | localize : lc}}</ng-container>\r\n </div>\r\n </div>\r\n\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<!-- Template per le informaizoni di debug: Ambiente, ruoli, permessi ecc -->\r\n<ng-template #debugInfos>\r\n <div>{{CurrentIdentity?.FullName}} - ({{CurrentIdentity?.TenantName}})</div>\r\n <div hidden>{{applicationEnvironment}}</div>\r\n <div class=\"text-sm-center\">\r\n <ng-container *ngIf=\"['Dev', 2].includes(applicationEnvironment)\">{{'Ambiente di Sviluppo' | localize : lc}}</ng-container>\r\n <ng-container *ngIf=\"['DevA', 3].includes(applicationEnvironment)\">{{'Ambiente di Sviluppo A' | localize : lc}}</ng-container>\r\n <ng-container *ngIf=\"['DevB', 4].includes(applicationEnvironment)\">{{'Ambiente di Sviluppo B' | localize : lc}}</ng-container>\r\n <ng-container *ngIf=\"['Stage', 5].includes(applicationEnvironment)\">{{'Ambiente di Staging' | localize : lc}}</ng-container>\r\n <ng-container *ngIf=\"['StageA', 6].includes(applicationEnvironment)\">{{'Ambiente di Staging A' | localize : lc}}</ng-container>\r\n <ng-container *ngIf=\"['Prod', 1].includes(applicationEnvironment)\">{{'Ambiente di Produzione' | localize : lc}}</ng-container>\r\n </div>\r\n <div [hidden]=\"true\">\r\n <div>Permissions:</div>\r\n <div *ngFor=\"let p of CurrentIdentity?.Permissions\">{{p}}</div>\r\n <div>Roles:</div>\r\n <div *ngFor=\"let r of CurrentIdentity?.Roles\">{{r}}</div>\r\n </div>\r\n</ng-template>","// 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 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 style=\"width: 100%;\">\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, Router, 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 { AppEmbeddingExtensions } from \"@esfaenza/extensions\";\r\nimport { HTTPService } from \"@esfaenza/httpservice\";\r\n\r\nimport { AppState, TokenService } from \"@esfaenza/core/services\";\r\nimport { ActiveModuleView, EnvOptions } from \"@esfaenza/core/domain\";\r\nimport { NgIf } from \"@angular/common\";\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 imports: [RouterOutlet, NgIf]\r\n})\r\nexport class ExternalPagesComponent {\r\n private Username: string = \"\";\r\n private Password: string = \"\";\r\n private Tenant: string = \"\";\r\n private EmbeddingSource: string = \"\";\r\n\r\n // TODO: Automatizzare\r\n private LocalhostModuleMap: { [id: string]: string } = {\r\n \"crm\": \"31813\",\r\n \"sii\": \"21645\",\r\n \"pp\": \"1616\"\r\n };\r\n\r\n private Localhost: string = \"\";\r\n\r\n constructor(private aac: AccessControlService, public lc: LocalizationService, private http: HTTPService, public emb: AppEmbeddingExtensions, private _state: AppState, private route: ActivatedRoute, private router: Router, 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 this.EmbeddingSource = this.route.snapshot.params[\"source\"];\r\n }\r\n\r\n ngOnInit() {\r\n\r\n if (!this.emb.Embedded) {\r\n console.log(\"Pagina ext richiamata in ambiente non embeddato. Sono in una nuova scheda!!\");\r\n console.log(\"L'embedder originale doveva essere: \" + this.EmbeddingSource);\r\n console.log(\"Dato che sono in una nuova scheda devo in realtà navigare a lui, con link su emb/ecc in modo da aprire una scheda embeddata su questa pagina. Se funziona già fino a qui sono a cavallo\");\r\n\r\n this.Localhost = this.LocalhostModuleMap[this.EmbeddingSource];\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 });\r\n }\r\n return;\r\n }\r\n\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 ((!(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 // Non è utilizzata, porcoddinci\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\r\n afterModulesRetrieve(modules: ActiveModuleView[]) {\r\n // Sto navigando a {sito}/#/pages_ext/{origine}/etc...\r\n // Devo ridirezionare a {sorgente}/#/pages/embed/{thisModule}/etc...\r\n let module = modules.find(t => t.altname == this.EmbeddingSource)\r\n if (!module) {\r\n console.error(`Impossibile trovare il modulo con altname uguale a ${this.EmbeddingSource}`);\r\n }\r\n \r\n let afterPagesExt = this.router.url.split(\"pages_ext\")[1].substring(1).split(\"/\").slice(1).join(\"/\");\r\n let sourceModuleUrl = myconfig.AuthUrl.includes(\"localhost\") ? `http://localhost:${this.Localhost}` : module.uiurl;\r\n \r\n let finalUrl = `${sourceModuleUrl}/#/pages/embed/${myconfig.AppData.ModuleId}/${afterPagesExt}`;\r\n console.log(\"@esfaenza/core: navigating to \" + finalUrl);\r\n location.replace(finalUrl);\r\n }\r\n}","<!-- Creo il router outlet solo se sono una pagina embeddata, altrimenti vuol dire che avrò un redirect al parent embeddato a dovere -->\r\n<router-outlet *ngIf=\"this.emb.Embedded\"></router-outlet>","// Angular\r\nimport { Component, Inject, ViewEncapsulation } from \"@angular/core\";\r\n\r\nimport { EnvOptions, LOGIN_URL_LEGACY } 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 constructor(@Inject(LOGIN_URL_LEGACY) public loginUrlLegacy: boolean) { }\r\n\r\n ngOnInit() {\r\n if (myconfig.AuthUrl) {\r\n if (this.loginUrlLegacy)\r\n window.location.href = `${myconfig.AuthUrl}/login/form?client=${myconfig.Client}`;\r\n else {\r\n // logout ripulisce il token e risbatte al login\r\n window.location.href = `${myconfig.AuthUrl}/#/logout;client=${myconfig.Client}`;\r\n }\r\n }\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\nimport { AppEmbeddingExtensions } from \"@esfaenza/extensions\";\r\n\r\n// Applicazione\r\nimport { REDIRECT_MAP } from \"@esfaenza/core/domain\";\r\n\r\n@Component({\r\n selector: \"redirecter\",\r\n encapsulation: ViewEncapsulation.None,\r\n templateUrl: \"./redirecter.component.html\",\r\n imports: [NgIf]\r\n})\r\nexport class RedirecterComponent {\r\n\r\n public Error: string = \"\";\r\n public tenant: string;\r\n private wrongTenant = false;\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[] } }, private emb: AppEmbeddingExtensions) {\r\n this.tenant = route.snapshot.params[\"tenant\"];\r\n\r\n if (this.tenant && this._state.getJaceIDentity().Idtenant != this.tenant) {\r\n console.error(\"tenant mismatch in redirector\");\r\n this.router.navigate([\"login\"]);\r\n this.wrongTenant = true;\r\n }\r\n }\r\n\r\n ngOnInit() {\r\n if (this.wrongTenant)\r\n return;\r\n\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.includes(String.fromCharCode(167)) ? url.split(String.fromCharCode(167)).filter(s => !!s) : url.split('+').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 redirectItem = this.redirectMap[parts[0]];\r\n if (!redirectItem) {\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 (redirectItem.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 url = (this.emb.Embedded ? \"pages_ext/\" : \"pages/\") + redirectItem.url;\r\n let parObject = {};\r\n redirectItem.params.forEach((t, i) => parObject[t] = parts[i + 1]);\r\n\r\n console.log(`Navigating to ${url} with the current parameters: ${JSON.stringify(parObject)}`)\r\n this.router.navigate([url, parObject]);\r\n }\r\n }\r\n}","<div *ngIf=\"Error\">{{Error}}</div>","// Angular\r\nimport { Component, Injector } from \"@angular/core\";\r\nimport { Location } from \"@angular/common\";\r\nimport { ActivatedRoute, Data, Router, UrlSegment } 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\nimport { AppEmbeddingExtensions } from \"@esfaenza/extensions\";\r\nimport { combineLatest } from \"rxjs\";\r\n\r\n@Component({\r\n template: '',\r\n standalone: false\r\n})\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 // Disallineato dalla versione NG15\r\n protected Parameters: { [name: string]: string } = null;\r\n protected QueryParameters: { [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 private _emb: AppEmbeddingExtensions;\r\n private _location: Location;\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._emb = injector.get(AppEmbeddingExtensions);\r\n this._location = injector.get(Location);\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.Parameters = t; });\r\n _activatedRoute.queryParams.pipe(takeUntil(this.destroyed$)).subscribe(t => { this.QueryParameters = t; });\r\n \r\n combineLatest([_activatedRoute.url, _activatedRoute.data]).subscribe((t: [UrlSegment[], Data]) => {\r\n this.gatherRouteInformations(null, t[1]);\r\n });\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(!this._emb.Embedded || !this.NavigationTitle)\r\n return;\r\n\r\n this._emb.MainWindow.postMessage({ type: \"navigation\", url: this.CompletePath, internalNavigation: this.InternalNavigation, title: this.NavigationTitle }, \"*\");\r\n }\r\n\r\n public gatherRouteInformations(segs: UrlSegment[], data: Data) {\r\n if(segs == null)\r\n segs = (this._router as any).rawUrlTree.root.children.primary.segments;\r\n \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 = data?.[\"internalNavigation\"] || false;\r\n this.NavigationTitle = data?.[\"title\"] || \"\";\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\r\n back() {\r\n if (this._emb.Embedded) {\r\n this._emb.MainWindow.postMessage({ type: \"navigate-back\" }, \"*\");\r\n setTimeout(() => { this._location.back(); })\r\n }\r\n else\r\n this._location.back();\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 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 @Input() Params: { [id: string]: 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 requestAnimationFrame(() => {\r\n this.Height = window.innerHeight - 80;\r\n this.cdr.markForCheck();\r\n });\r\n }\r\n\r\n async 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 parameters: string = this.Params ? Object.keys(this.Params).map(k => `${k}=${this.Params[k]}`).join(';') : '';\r\n // ATTENZIONE: L'embedding a due livelli si potrebbe rompere qui, ma chi cazzo embedda a due livelli....\r\n let finalUrl = `${moduleUrl}/#/pages_ext/${myconfig.AppData.ModuleId}/${this.Page}${(parameters ? (';' + parameters) : '')}`;\r\n console.log(\"@esfaenza/core: Jace-resource navigating to \" + finalUrl);\r\n this.sanitizedSourceResource = this.sanitizer.bypassSecurityTrustResourceUrl(finalUrl);\r\n }\r\n}","<iframe *ngIf=\"!!sanitizedSourceResource && this.Height > 0\" id=\"externalFrame\" style=\"width: 100%; border: none;\" [style.height.px]=\"Height\"\r\n [src]=\"sanitizedSourceResource\">\r\n</iframe>","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 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\">:&nbsp;&nbsp;</span>\r\n </strong>\r\n <span><ng-content></ng-content></span>\r\n</div>","import { NgIf } from \"@angular/common\";\r\nimport { ImageCroppedEvent, ImageCropperComponent, ImageTransform } from \"ngx-image-cropper\";\r\nimport { Component, Input } from \"@angular/core\";\r\nimport { AppFile, FormsAndValidationsModule } from \"@esfaenza/forms-and-validations\";\r\nimport { FormsModule } from \"@angular/forms\";\r\n\r\n@Component({\r\n selector: \"es-image-cropper\",\r\n templateUrl: \"es-image-cropper.component.html\",\r\n styleUrls: [\"./es-image-cropper.component.scss\"],\r\n imports: [NgIf, ImageCropperComponent, FormsModule, FormsAndValidationsModule]\r\n})\r\nexport class EsImageCropperComponent {\r\n @Input() Height: number;\r\n @Input() Width: number;\r\n\r\n constructor() { }\r\n\r\n public ProfileImage: AppFile;\r\n\r\n private _OutputImage: any;\r\n get OutputImage(): any {\r\n if (this.ProfileImage?.nativefiles)\r\n return this._OutputImage;\r\n else\r\n return null;\r\n }\r\n\r\n canvasRotation = 0;\r\n scale = 1;\r\n transform: ImageTransform = {};\r\n\r\n public onResetImage() {\r\n this.ProfileImage = new AppFile();\r\n this._OutputImage = null;\r\n }\r\n\r\n public onImageCropped(event: ImageCroppedEvent) {\r\n this._OutputImage = event.blob;\r\n }\r\n\r\n onRotateLeft() {\r\n this.canvasRotation--;\r\n this.doFlipAfterRotate();\r\n }\r\n\r\n onRotateRight() {\r\n this.canvasRotation++;\r\n this.doFlipAfterRotate();\r\n }\r\n\r\n onFlipHorizontal() {\r\n this.transform = {\r\n ...this.transform,\r\n flipH: !this.transform.flipH,\r\n };\r\n }\r\n\r\n onFlipVertical() {\r\n this.transform = {\r\n ...this.transform,\r\n flipV: !this.transform.flipV,\r\n };\r\n }\r\n\r\n private doFlipAfterRotate() {\r\n const flippedH = this.transform.flipH;\r\n const flippedV = this.transform.flipV;\r\n this.transform = {\r\n ...this.transform,\r\n flipH: flippedV,\r\n flipV: flippedH,\r\n };\r\n }\r\n\r\n onZoomOut() {\r\n this.scale -= 0.1;\r\n this.transform = {\r\n ...this.transform,\r\n scale: this.scale,\r\n };\r\n }\r\n\r\n onZoomIn() {\r\n this.scale += 0.1;\r\n this.transform = {\r\n ...this.transform,\r\n scale: this.scale,\r\n };\r\n }\r\n}","<div *ngIf=\"ProfileImage?.nativefiles?.length > 0\" [style.width.px]=\"Width\">\r\n <div class=\"d-flex\">\r\n <button (click)=\"onRotateLeft()\" class=\"btn btn-primary\"><i class=\"fa fa-undo\"></i></button>\r\n <button (click)=\"onRotateRight()\" class=\"btn btn-primary\"><i class=\"fa fa-repeat\"></i></button>\r\n <button (click)=\"onFlipHorizontal()\" class=\"btn btn-primary\"><i class=\"fa fa-arrows-h\"></i></button>\r\n <button (click)=\"onFlipVertical()\" class=\"btn btn-primary\"><i class=\"fa fa-arrows-v\"></i></button>\r\n <button (click)=\"onZoomIn()\" class=\"btn btn-primary\"><i class=\"fa fa-search-plus\"></i></button>\r\n <button (click)=\"onZoomOut()\" class=\"btn btn-primary\"><i class=\"fa fa-search-minus\"></i></button>\r\n <button (click)=\"onResetImage()\" class=\"btn btn-danger\" style=\"margin-left: auto; margin-right: 0px;\"><i class=\"fa fa-times\"></i></button>\r\n </div>\r\n</div>\r\n<div class=\"app-margin-top-10\" [style.max-height.px]=\"Height\" [style.width.px]=\"Width\">\r\n <form-file *ngIf=\"!(ProfileImage?.nativefiles?.length > 0)\" [LabelInputRatio]=\"'0 12'\" [FancyMode]=\"true\" [(ngModel)]=\"ProfileImage\" name=\"imageToCrop\"></form-file>\r\n <ng-container *ngIf=\"ProfileImage?.nativefiles?.length > 0\">\r\n <image-cropper style=\"--cropper-outline-color: rgba(0,0,0)\"\r\n [backgroundColor]=\"'#91a3b0'\"\r\n [imageFile]=\"ProfileImage.nativefiles[0]\"\r\n [aspectRatio]=\"4 / 3\"\r\n [maintainAspectRatio]=\"true\"\r\n [containWithinAspectRatio]=\"true\"\r\n [cropperStaticWidth]=\"320\"\r\n [cropperStaticHeight]=\"320\"\r\n [onlyScaleDown]=\"true\"\r\n [roundCropper]=\"true\"\r\n [canvasRotation]=\"canvasRotation\"\r\n [allowMoveImage]=\"true\"\r\n [(transform)]=\"transform\"\r\n (imageCropped)=\"onImageCropped($event)\">\r\n </image-cropper>\r\n </ng-container>\r\n</div>","// Angular\r\nimport { CommonModule } from \"@angular/common\";\r\nimport { Component, EventEmitter, input, Input, model, Output } from \"@angular/core\";\r\nimport { FormsModule, NgForm } from \"@angular/forms\";\r\n\r\nimport { FormsAndValidationsModule } from \"@esfaenza/forms-and-validations\";\r\n\r\n// Direttive, Componenti, Librerie\r\nimport { Subject } from \"rxjs\";\r\n\r\n@Component({\r\n selector: \"form-selector\",\r\n templateUrl: \"./form-selector.component.html\",\r\n imports: [FormsModule, CommonModule, FormsAndValidationsModule]\r\n})\r\nexport class FormSelectorComponent {\r\n\r\n // Validazione\r\n @Input() SetValidationSubject = new Subject<{ fieldName: string, error: string }>();\r\n\r\n // Presentazione\r\n ModalOnly = input(false);\r\n Valid = input(true);\r\n SelectedLabel = model(null);\r\n\r\n // Form\r\n Validation = input<boolean>();\r\n Readonly = input<boolean>();\r\n Form = input<NgForm>(null);\r\n Name = input<string>();\r\n ngModelOptions: any = input<any>()\r\n Required = input<boolean>();\r\n Placeholder = input<string>();\r\n\r\n // Navigazione\r\n HasExternalLink = input<boolean>();\r\n\r\n // Eventi\r\n @Output() onChange: EventEmitter<void> = new EventEmitter<void>();\r\n @Output() onSearch: EventEmitter<void> = new EventEmitter<void>();\r\n @Output() onNavigation: EventEmitter<void> = new EventEmitter<void>();\r\n @Output() onClipboardCopy: EventEmitter<void> = new EventEmitter<void>();\r\n}","<div class=\"app-pointer app-selector-input-area\" (click)=\"onSearch.emit()\" (contextmenu)=\"onClipboardCopy.emit(); false;\"></div>\r\n\r\n<form-input *ngIf=\"!ModalOnly() && Name()\"\r\n [SetValidationSubject]=\"SetValidationSubject\"\r\n [class.app-selector-input-invalid]=\"!Valid()\"\r\n [class.app-selector-input]=\"!Readonly()\"\r\n [Form]=\"Form()\"\r\n readonly\r\n [disabled]=\"Readonly()\"\r\n [FormLayout]=\"false\"\r\n [Validation]=\"Validation()\"\r\n [(ngModel)]=\"SelectedLabel\"\r\n [ngModelOptions]=\"ngModelOptions()\"\r\n [required]=\"Required()\"\r\n [Placeholder]=\"Placeholder()\" \r\n type=\"text\"\r\n (inputChange)=\"onChange.emit()\"\r\n (click)=\"onSearch.emit()\"\r\n (contextmenu)=\"onClipboardCopy.emit(); false;\"\r\n name=\"{{Name()}}\">\r\n\r\n <ng-template #suffix>\r\n <span class=\"fa fa-search\" (click)=\"onSearch.emit();\"></span>\r\n </ng-template>\r\n</form-input>\r\n\r\n<span *ngIf=\"HasExternalLink()\" class=\"fa fa-external-link app-pointer\" style=\"position: absolute; right: 65px; bottom: 12px; z-index: 9999;\" (click)=\"onNavigation.emit()\"></span>","// Angular\r\nimport { CommonModule } from \"@angular/common\";\r\nimport { Component, EventEmitter, Input, Output, ViewChild } from \"@angular/core\";\r\nimport { FormsModule } from \"@angular/forms\";\r\n\r\n// Libs\r\nimport { EsTableModule, ThTdProvider } from \"@esfaenza/es-table\";\r\n\r\n// App\r\nimport { EsModalComponent } from \"../../es-modal/es-modal.component\";\r\nimport { EsModalHeadComponent } from \"../../es-modal/es-modal-head/es-modal-head.component\";\r\n\r\n@Component({\r\n selector: \"form-selector-dialog\",\r\n templateUrl: \"./form-selector-dialog.component.html\",\r\n imports: [EsTableModule, FormsModule, CommonModule, EsModalComponent, EsModalHeadComponent]\r\n})\r\nexport class FormSelectorDialogComponent {\r\n // Presentazione\r\n @Input() Subject: string;\r\n @Input() EsTableTemplate: ThTdProvider;\r\n @Input() TableClasses: string;\r\n @Input() SingleSelection: boolean = true;\r\n @Input() searchView: any;\r\n\r\n @Output() onClearValue: EventEmitter<void> = new EventEmitter<void>();\r\n @Output() onCloseDialog: EventEmitter<void> = new EventEmitter<void>();\r\n @Output() onConfirmSelection: EventEmitter<void> = new EventEmitter<void>();\r\n @Output() onSearchRequest: EventEmitter<boolean> = new EventEmitter<boolean>();\r\n @Output() onDialogVisibilityChange: EventEmitter<boolean> = new EventEmitter<boolean>();\r\n\r\n @ViewChild(\"itemSearch\") public itemSearch: EsModalComponent;\r\n public show() {\r\n this.itemSearch.show();\r\n }\r\n public hide() {\r\n this.itemSearch.hide();\r\n }\r\n}","<es-modal #itemSearch [Size]=\"'XL'\" (onShow)=\"onDialogVisibilityChange.emit(true)\" (onHide)=\"onDialogVisibilityChange.emit(false)\">\r\n <es-modal-head (Close)=\"itemSearch.hide();\">\r\n <h5 class=\"modal-title pull-left\">Seleziona {{Subject}}</h5>\r\n </es-modal-head>\r\n <div class=\"modal-body\">\r\n <form>\r\n <div class=\"row\">\r\n <div class=\"col-md-11\">\r\n <!--Parte specifica dei filtri-->\r\n <ng-content select=\"[filters]\"></ng-content>\r\n <!----------------------------->\r\n </div>\r\n <div class=\"col-md-1\" style=\"display: flex;\">\r\n <button class=\"input-group-addon btn app-btn-search\" [disabled]=\"searchView.searchinprogress\" (click)=\"onSearchRequest.emit(true)\" type=\"submit\" style=\"margin-left: auto;\">\r\n <i class=\"far\" [class.fa-search]=\"!searchView.searchinprogress\" [class.fa-spinner]=\"searchView.searchinprogress\" [class.fa-spin]=\"searchView.searchinprogress\"></i>\r\n </button>\r\n </div>\r\n </div>\r\n </form>\r\n\r\n <div class=\"app-margin-top-15\">\r\n <es-table [class]=\"TableClasses\" [(ngModel)]=\"searchView\" [Selection]=\"true\" [SingleSelection]=\"SingleSelection\" (onSearchRequest)=\"onSearchRequest.emit($event);\" [EsThTdProvider]=\"EsTableTemplate\"></es-table>\r\n </div>\r\n </div>\r\n <div class=\"modal-footer\">\r\n <button type=\"button\" class=\"btn btn-danger\" style=\"margin-right: auto;\" (click)=\"onClearValue.emit();\">Rimuovi valore</button>\r\n <button type=\"button\" class=\"btn btn-secondary app-margin-right-10\" (click)=\"onCloseDialog.emit();\">Annulla</button>\r\n <button type=\"button\" class=\"btn btn-primary\" (click)=\"onConfirmSelection.emit();\">Conferma</button>\r\n </div>\r\n</es-modal>","// Angular\r\nimport { Component, Input, ViewChild } from \"@angular/core\";\r\nimport { HttpParams } from \"@angular/common/http\";\r\n\r\n// Configurazioni\r\nimport { CallResult, ExtensionsModule, MessageService, UtilityService } from \"@esfaenza/extensions\";\r\nimport { HTTPService } from \"@esfaenza/httpservice\";\r\nimport { TokenService } from \"@esfaenza/core/services\";\r\nimport { EsModalComponent } from \"../es-modal/es-modal.component\";\r\nimport { EsModalHeadComponent } from \"../es-modal/es-modal-head/es-modal-head.component\";\r\nimport { CommonModule, NgFor, NgIf, NgTemplateOutlet } from \"@angular/common\";\r\nimport { FormsModule } from \"@angular/forms\";\r\nimport { AccessControlModule } from \"@esfaenza/access-control\";\r\nimport { MarkdownEditorComponent } from \"@esfaenza/text-editors\";\r\n\r\n// Classi\r\nimport { CreateUpdateFeedDto, EntityFeedsWidgetConfiguration, Feed, KeyValue } from \"@esfaenza/core/domain\";\r\nimport { DropdownOption, UtilityComponentsModule } from \"@esfaenza/utility-components\";\r\nimport { AppFile, FormsAndValidationsModule } from \"@esfaenza/forms-and-validations\";\r\n\r\n// Direttive, Componenti, Librerie\r\nimport { Subject, Subscription } from \"rxjs\";\r\nimport { MarkdownModule } from \"ngx-markdown\";\r\n\r\n@Component({\r\n selector: \"entity-feeds-widget\",\r\n templateUrl: \"./entity-feeds-widget.component.html\",\r\n styleUrls: [\"entity-feeds-widget.component.scss\"],\r\n imports: [CommonModule, NgIf, NgFor, NgTemplateOutlet, FormsModule, ExtensionsModule, FormsAndValidationsModule, EsModalComponent, EsModalHeadComponent, UtilityComponentsModule, AccessControlModule, MarkdownEditorComponent, MarkdownModule]\r\n})\r\nexport class EntityFeedsWidgetComponent {\r\n // Required\r\n @Input() EntityType: string = \"\";\r\n @Input() EntityId: string = \"\"; \r\n @Input() RefreshSubject: Subject<void>;\r\n\r\n // URL\r\n @Input() GetFeedsAPI: string;\r\n @Input() CreateFeedAPI: string;\r\n @Input() UpdateFeedAPI: string;\r\n @Input() DeleteFeedAPI: string;\r\n @Input() ReactToFeedAPI: string;\r\n @Input() GetUserTagsAPI: string;\r\n @Input() GetFeedAttachmentAPI: string;\r\n\r\n // Configurazione\r\n @Input() WidgetTitle: string = \"Feeds\";\r\n @Input() MaxHeight: string = \"450px\";\r\n @Input() Readonly: boolean = false;\r\n @Input() AllowUserTags: boolean = false;\r\n @Input() AllowReactions: boolean = false;\r\n @Input() AllowAttachments: boolean = false;\r\n @Input() AllowComments: boolean = false;\r\n @Input() AllowReplies: boolean = false;\r\n @Input() DebugMode: boolean = false;\r\n\r\n // Inizializzatore\r\n @Input() ModuleConfig: EntityFeedsWidgetConfiguration;\r\n\r\n // Flags\r\n public FLAG_RefreshingFeeds: boolean;\r\n\r\n // Props\r\n public Feeds: Feed[] = [];\r\n public LoggedUser: string = \"\";\r\n public FeedContentFilter: string = \"\";\r\n public UserTags: string[] = [];\r\n\r\n private refreshSub: Subscription;\r\n\r\n constructor(private http: HTTPService, private utiExts: UtilityService, private msgs: MessageService, private tks: TokenService) { }\r\n\r\n ngOnInit() {\r\n this.FeedsOperations = [];\r\n\r\n if(this.ModuleConfig) {\r\n this.GetFeedsAPI = this.GetFeedsAPI ?? this.ModuleConfig.GetFeedsAPI;\r\n // User Tags\r\n this.AllowUserTags = this.AllowUserTags ?? this.ModuleConfig.AllowUserTags;\r\n this.GetUserTagsAPI = this.GetUserTagsAPI ?? this.ModuleConfig.GetUserTagsAPI;\r\n // Reactions\r\n this.AllowReactions = this.AllowReactions ?? this.ModuleConfig.AllowReactions;\r\n this.ReactToFeedAPI = this.ReactToFeedAPI ?? this.ModuleConfig.ReactToFeedAPI;\r\n // Attachments\r\n this.AllowAttachments = this.AllowAttachments ?? this.ModuleConfig.AllowAttachments;\r\n this.GetFeedAttachmentAPI = this.GetFeedAttachmentAPI ?? this.ModuleConfig.GetFeedAttachmentAPI;\r\n // Comments\r\n this.AllowComments = this.AllowComments ?? this.ModuleConfig.AllowComments;\r\n this.AllowReplies = this.AllowReplies ?? this.ModuleConfig.AllowReplies;\r\n this.CreateFeedAPI = this.CreateFeedAPI ?? this.ModuleConfig.CreateFeedAPI;\r\n this.UpdateFeedAPI = this.UpdateFeedAPI ?? this.ModuleConfig.UpdateFeedAPI;\r\n this.DeleteFeedAPI = this.DeleteFeedAPI ?? this.ModuleConfig.DeleteFeedAPI;\r\n }\r\n\r\n if(this.DebugMode)\r\n console.warn(\"Componente Feeds: Modalita debug attivata.\");\r\n else {\r\n if (!this.EntityType || !this.EntityId || !this.RefreshSubject || !this.GetFeedsAPI)\r\n throw new Error(\"Componente Feeds: Mancano input richiesti.\");\r\n\r\n if (this.AllowReactions && !this.ReactToFeedAPI)\r\n throw new Error(\"Componente Feeds: Reactions attivate senza fornire un API per usarle.\");\r\n\r\n if (this.AllowUserTags && !this.GetUserTagsAPI)\r\n throw new Error(\"Componente Feeds: UserTags attivati senza fornire un API per usarli.\");\r\n\r\n if (this.AllowAttachments && !this.GetFeedAttachmentAPI)\r\n throw new Error(\"Componente Feeds: Attachments attivati senza fornire un API per usarli.\");\r\n\r\n if (this.AllowComments && !this.CreateFeedAPI)\r\n throw new Error(\"Componente Feeds: Commenti attivati senza fornire un API per usarli.\");\r\n }\r\n\r\n // Abilito Operazioni\r\n if(this.UpdateFeedAPI)\r\n this.FeedsOperations.push({ label: \"Modifica\", command: this.onUpdateFeed.bind(this) });\r\n if(this.DeleteFeedAPI)\r\n this.FeedsOperations.push({ label: \"Elimina\", command: this.onDeleteFeed.bind(this) });\r\n\r\n this.doRefreshFeeds();\r\n\r\n this.LoggedUser = this.DebugMode ? \"DEBUG\" : this.tks.getJaceIdentity().DsUser;\r\n\r\n if(this.AllowUserTags)\r\n this.http.get<KeyValue[]>(this.GetUserTagsAPI).subscribe(res => {\r\n this.UserTags = res.map(m => \"@\" + m.id);\r\n });\r\n\r\n if (this.RefreshSubject)\r\n this.refreshSub = this.RefreshSubject.subscribe(t => { \r\n this.doRefreshFeeds(); \r\n });\r\n }\r\n\r\n ngOnDestroy() {\r\n if (this.refreshSub)\r\n this.refreshSub.unsubscribe();\r\n }\r\n\r\n public doRefreshFeeds() {\r\n if (this.FLAG_RefreshingFeeds)\r\n return;\r\n\r\n this.FLAG_RefreshingFeeds = true;\r\n\r\n //#region DebugMode\r\n if(this.DebugMode) {\r\n this.Feeds = [\r\n { id: \"1\", content: \"*Prova* :smile:\", user: \"DEBUG\", dateins: new Date() } as Feed,\r\n { id: \"2\", content: \"**Prova2** :heart:\", user: \"DEBUG\", dateins: new Date() } as Feed,\r\n { id: \"3\", content: \"***Prova3*** :white_check_mark:\", user: \"DEBUG\", dateins: new Date() } as Feed,\r\n ];\r\n return;\r\n }\r\n //#endregion\r\n\r\n let pars = new HttpParams()\r\n .set(\"idEntityType\", this.EntityType)\r\n .set(\"idEntity\", this.EntityId);\r\n this.http.get<Feed[]>(this.GetFeedsAPI, pars).subscribe(res => {\r\n this.Feeds = res.filter(f => {\r\n let filter = this.FeedContentFilter?.toLowerCase();\r\n this.FLAG_RefreshingFeeds = false;\r\n\r\n return !filter ? true :\r\n (f.title?.toLowerCase().includes(filter) || f.content?.toLowerCase().includes(filter) || f.user?.toLowerCase().includes(filter));\r\n });\r\n });\r\n }\r\n\r\n public onDownloadFeedAttachment(item: Feed) {\r\n let pars = new HttpParams()\r\n .set(\"idEntityType\", this.EntityType)\r\n .set(\"idEntity\", this.EntityId)\r\n .set(\"idFeed\", item.id.toString());\r\n this.http.get<AppFile>(this.GetFeedAttachmentAPI, pars).subscribe(res => {\r\n this.utiExts.saveFile(res.fileb64, res.filename);\r\n });\r\n }\r\n\r\n //#region Create/Update\r\n @ViewChild('dlgCreateUpdateFeed') dlgCreateUpdateFeed: EsModalComponent;\r\n public CreateUpdateFeedDTO: CreateUpdateFeedDto;\r\n public AllegatoFile: AppFile;\r\n public EditMode: boolean = false;\r\n\r\n public onCreateFeed(isReply: boolean = false) {\r\n this.CreateUpdateFeedDTO = null;\r\n this.AllegatoFile = null;\r\n this.EditMode = false;\r\n\r\n requestAnimationFrame(() => { \r\n this.CreateUpdateFeedDTO = new CreateUpdateFeedDto();\r\n this.CreateUpdateFeedDTO.identitytype = this.EntityType;\r\n this.CreateUpdateFeedDTO.identity = this.EntityId;\r\n this.CreateUpdateFeedDTO.parentid = isReply ? this.SelectedFeed.id : null;\r\n\r\n this.dlgCreateUpdateFeed.show();\r\n });\r\n }\r\n\r\n public onUpdateFeed() {\r\n this.CreateUpdateFeedDTO = null;\r\n this.AllegatoFile = null;\r\n this.EditMode = true;\r\n\r\n let pars = new HttpParams()\r\n .set(\"idEntityType\", this.EntityType)\r\n .set(\"idEntity\", this.EntityId)\r\n .set(\"idFeed\", this.SelectedFeed.id.toString());\r\n this.http.get<AppFile>(this.GetFeedAttachmentAPI, pars).subscribe(res => {\r\n this.CreateUpdateFeedDTO = this.utiExts.deepClone(this.SelectedFeed, CreateUpdateFeedDto);\r\n this.CreateUpdateFeedDTO.idfeed = this.SelectedFeed.id.toString();\r\n this.CreateUpdateFeedDTO.identitytype = this.EntityType;\r\n this.CreateUpdateFeedDTO.identity = this.EntityId;\r\n\r\n this.AllegatoFile = res;\r\n\r\n this.dlgCreateUpdateFeed.show();\r\n });\r\n }\r\n\r\n doCreateUpdateFeed() {\r\n let SuccessMsg = `Feed ${this.EditMode ? \"aggiornato\" : \"aggiunto\"} con successo.`;\r\n let ErrorMsg = `Si sono verificati errori nell' ${this.EditMode ? \"aggiornare\" : \"aggiungere\"} il feed`;\r\n\r\n if (this.AllowAttachments) {\r\n // Quando \"AllegatoFile\" ha subito modifiche\r\n if (this.AllegatoFile?.nativefiles) {\r\n this.CreateUpdateFeedDTO.updatefiledata = true;\r\n }\r\n // Quando \"AllegatoFile\" NON ha subito modifiche\r\n else if (this.AllegatoFile?.fileb64 && !this.AllegatoFile?.nativefiles) {\r\n // Non faccio nulla\r\n }\r\n // Quando \"AllegatoFile\" viene rimosso o non viene specificato\r\n else {\r\n this.CreateUpdateFeedDTO.updatefiledata = true;\r\n }\r\n\r\n this.http.postwithFiles<CallResult>(this.EditMode ? this.UpdateFeedAPI : this.CreateFeedAPI, this.CreateUpdateFeedDTO, this.AllegatoFile?.nativefiles).subscribe(res => {\r\n this.msgs.manageCallResultResponse(res, SuccessMsg, ErrorMsg, () => {\r\n this.doRefreshFeeds();\r\n this.dlgCreateUpdateFeed.hide();\r\n });\r\n });\r\n } else {\r\n this.http.post<CallResult>(this.EditMode ? this.UpdateFeedAPI : this.CreateFeedAPI, this.CreateUpdateFeedDTO).subscribe(res => {\r\n this.msgs.manageCallResultResponse(res, SuccessMsg, ErrorMsg, () => {\r\n this.doRefreshFeeds();\r\n this.dlgCreateUpdateFeed.hide();\r\n });\r\n });\r\n }\r\n }\r\n //#endregion\r\n\r\n //#region Delete\r\n public onDeleteFeed() {\r\n this.msgs.simpleWarningWithChoice(\"Richiesta di Conferma\", \"Eliminare il feed selezionato?\", () => {\r\n this.doDeleteFeed();\r\n });\r\n }\r\n\r\n private doDeleteFeed() {\r\n let pars = new HttpParams()\r\n .set(\"idEntityType\", this.EntityType)\r\n .set(\"idEntity\", this.EntityId)\r\n .set(\"idFeed\", this.SelectedFeed.id.toString());\r\n this.http.get<CallResult>(this.DeleteFeedAPI, pars).subscribe(res => {\r\n this.msgs.manageCallResultResponse(res, \"Feed eliminato con successo.\", \"Impossibile eliminare il feed\", () => {\r\n this.doRefreshFeeds();\r\n });\r\n });\r\n }\r\n //#endregion\r\n\r\n //#region Reactions\r\n public onReactToFeed(item: Feed, idReaction: string) {\r\n if(!this.AllowReactions)\r\n throw new Error(\"Componente Feeds: Reactions non abilitate.\");\r\n\r\n // Il sistema supporta molte piu reazioni, stile whatsapp o discord\r\n // ma al momento non serviva incasinarsi la vita quindi teniamo i pollicioni e basta!\r\n idReaction =\r\n item.liked && idReaction == '0' ? '' :\r\n item.disliked && idReaction == '1' ? '' :\r\n idReaction;\r\n\r\n this.doReactToFeed(item.id.toString(), idReaction);\r\n }\r\n\r\n private doReactToFeed(idFeed: string, idReaction: string) {\r\n let pars = new HttpParams()\r\n .set(\"idEntityType\", this.EntityType)\r\n .set(\"idEntity\", this.EntityId)\r\n .set(\"idFeed\", idFeed)\r\n .set(\"idReaction\", idReaction);\r\n this.http.get<CallResult>(this.ReactToFeedAPI, pars).subscribe(res => { \r\n this.doRefreshFeeds(); \r\n });\r\n }\r\n //#endregion\r\n \r\n //#region Feed Content Details\r\n @ViewChild(\"dlgFeedContent\") dlgFeedContentDetails: EsModalComponent;\r\n public FeedContentDetails: string;\r\n\r\n onShowFeedContent(item: string) {\r\n this.FeedContentDetails = null;\r\n \r\n requestAnimationFrame(() => {\r\n this.FeedContentDetails = item;\r\n this.dlgFeedContentDetails.show();\r\n });\r\n }\r\n //#endregion\r\n\r\n //#region Kebab Menu\r\n public SelectedFeed: Feed = null;\r\n \r\n public FeedsOperations: DropdownOption[] = [];\r\n\r\n public onSelectFeed(item: Feed) {\r\n this.SelectedFeed = item;\r\n return true;\r\n }\r\n //#endregion\r\n}","<h5 class=\"app-bold\">{{WidgetTitle}}</h5>\r\n<div class=\"es-card\">\r\n <div class=\"d-flex\" style=\"margin-bottom: 1rem;\">\r\n <ng-container *ngIf=\"AllowComments\">\r\n <div *ngIf=\"!Readonly\">\r\n <div class=\"feed-create-button app-no-selection app-pointer\" (click)=\"onCreateFeed()\">\r\n <div style=\"margin: auto;\"><i class=\"fa fa-plus\"></i></div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n <div style=\"width: 100%;\">\r\n <form-input [Validation]=\"false\" [FormLayout]=\"false\" [(ngModel)]=\"FeedContentFilter\" (keydown.enter)=\"doRefreshFeeds()\" name=\"feedcontentfilter\">\r\n <ng-template #suffix>\r\n <span class=\"fa fa-search\"></span>\r\n </ng-template>\r\n </form-input>\r\n </div>\r\n </div>\r\n <!--Feeds-->\r\n <div style=\"overflow: auto !important;\" [style.max-height]=\"MaxHeight\">\r\n <ng-container *ngFor=\"let item of Feeds; let first = first;\">\r\n <ng-container *ngTemplateOutlet=\"FeedsDisplay; context: { $implicit: item, 'childTemplate': FeedsDisplay ,'isChild': false, 'first': first };\"></ng-container>\r\n </ng-container>\r\n <div *ngIf=\"Feeds?.length == 0\">\r\n <em>Nessun feed disponibile...</em>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n<!--Grafica di un singolo Feed-->\r\n<ng-template #FeedsDisplay let-item let-childTemplate=\"childTemplate\" let-isChild=\"isChild\" let-first=\"first\">\r\n <div [class.feed-container]=\"!isChild\" [class.feed-child-container]=\"isChild\" [class.first]=\"first\">\r\n <!--Colonna Sinistra-->\r\n <div class=\"feed-left-col\">\r\n <div class=\"feed-owner-icon\">\r\n <img *ngIf=\"!item.systemgen\" class=\"feed-owner-icon-image\" alt=\"user-img\" src=\"assets/img/users/user_default.jpg\">\r\n <img *ngIf=\"item.systemgen && item.severityid == 'INFO'\" class=\"feed-owner-icon-image fill-info\" alt=\"info\" src=\"assets/img/users/user_severity.svg\">\r\n <img *ngIf=\"item.systemgen && item.severityid == 'WARNING'\" class=\"feed-owner-icon-image fill-warning\" alt=\"warning\" src=\"assets/img/users/user_severity.svg\">\r\n <img *ngIf=\"item.systemgen && item.severityid == 'ERROR'\" class=\"feed-owner-icon-image fill-danger\" alt=\"error\" src=\"assets/img/users/user_severity.svg\">\r\n </div>\r\n <div *ngIf=\"item.childfeeds?.length > 0\" class=\"feed-sideline\"></div>\r\n </div>\r\n <!--Colonna Centrale-->\r\n <div class=\"feed-mid-col\">\r\n <div class=\"feed-mid-col-content\">\r\n <!--Content-->\r\n <div class=\"width-90\">\r\n <!--Intestazione-->\r\n <div>\r\n <span class=\"app-bold\">{{item.systemgen ? 'SISTEMA' : item.user}} </span>\r\n <span class=\"feed-gray-text\">{{item.dateins | loc_date: 'DD/MM/YYYY'}} alle {{item.dateins | loc_date: 'HH:mm'}}</span>\r\n </div>\r\n <!--Allegato-->\r\n <div *ngIf=\"item.filename\">\r\n <div class=\"app-pointer feed-cta\" (click)=\"onDownloadFeedAttachment(item)\">\r\n <span><i class=\"fa fa-file\"></i> {{item.filename}} ({{item.filesize}}KB)</span>\r\n </div>\r\n </div>\r\n <!--Messaggio-->\r\n <div *ngIf=\"!item.systemgen\" class=\"app-markdown\" markdown emoji>{{item.content}}</div>\r\n <div *ngIf=\"item.systemgen\">\r\n <span class=\"app-markdown\" markdown emoji>{{item.user}}: {{item.title}}</span>\r\n <span *ngIf=\"item.content\" (click)=\"onShowFeedContent(item.content)\">&nbsp;<i class=\"far fa-up-right-from-square text-info app-pointer\"></i></span>\r\n </div>\r\n <!--Operazioni-->\r\n <div class=\"feed-col-operations\">\r\n <ng-container *ngIf=\"AllowReactions\">\r\n <div [class.feed-reaction-sel]=\"item.liked\" class=\"app-pointer feed-reaction\" (click)=\"onReactToFeed(item, item.liked ? '' : '0')\"><span><i class=\"fa fa-thumbs-up\"></i> {{item.likes?.length}}</span></div>\r\n <div [class.feed-reaction-sel]=\"item.disliked\" class=\"app-pointer feed-reaction\" (click)=\"onReactToFeed(item, item.disliked ? '' : '1')\"><span><i class=\"fa fa-thumbs-down\"></i> {{item.dislikes?.length}}</span></div>\r\n </ng-container>\r\n <ng-container *ngIf=\"AllowReplies\">\r\n <div *ngIf=\"!Readonly && !isChild\" class=\"app-pointer feed-cta\" style=\"padding: 0.2rem;\" (click)=\"onSelectFeed(item) && onCreateFeed(true)\">Rispondi</div>\r\n </ng-container>\r\n </div>\r\n </div>\r\n <!--Dropdown-->\r\n <div class=\"feed-operation-col\">\r\n <div *ngIf=\"LoggedUser == item.user && !item.systemgen && !Readonly && FeedsOperations?.length > 0\" class=\"app-pointer feed-cta\" (click)=\"onSelectFeed(item) && FeedsOperationsDropdown.Show($event)\">\r\n <i class=\"fa fa-ellipsis-h\"></i>\r\n </div>\r\n </div>\r\n </div>\r\n <!--Feeds figli-->\r\n <ng-container *ngFor=\"let childItem of item.childfeeds\">\r\n <ng-container *ngTemplateOutlet=\"childTemplate; context: { $implicit: childItem, 'isChild': true };\"></ng-container>\r\n </ng-container>\r\n </div>\r\n </div>\r\n</ng-template>\r\n\r\n<!--Creazione/Aggiornamento Feed-->\r\n<es-modal #dlgCreateUpdateFeed [Size]=\"'M'\">\r\n <es-modal-head (Close)=\"dlgCreateUpdateFeed.hide();\">\r\n <h5 class=\"modal-title pull-left\">Aggiungi Feed</h5>\r\n </es-modal-head>\r\n <form *ngIf=\"CreateUpdateFeedDTO\" #formCreateUpdateFeed=\"ngForm\" (ngSubmit)=\"formCreateUpdateFeed.valid && doCreateUpdateFeed()\">\r\n <div class=\"modal-body\">\r\n <!--TODO: Usato solo nel CRM, quando verra aggiornato a ng19 reintegrare-->\r\n <!-- <form-checkbox *ac=\"'!R:actor'\" [Label]=\"'Pubblico'\" [LabelInputRatio]=\"'2 10'\" [(ngModel)]=\"CreateUpdateFeedDTO.ispublic\" name=\"ispublic\"></form-checkbox> -->\r\n <markdown-editor [(ngModel)]=\"CreateUpdateFeedDTO.content\" name=\"markdownEditor\"></markdown-editor>\r\n <form-file *ngIf=\"AllowAttachments\" [Label]=\"'Allegato'\" [LabelInputRatio]=\"'2 10'\" [(ngModel)]=\"AllegatoFile\" [Last]=\"true\" name=\"add_file\"></form-file>\r\n </div>\r\n <div class=\"modal-footer\">\r\n <button type=\"button\" class=\"btn btn-secondary app-margin-right-10\" (click)=\"dlgCreateUpdateFeed.hide();\">Annulla</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<!--Contenuto Feed-->\r\n<es-modal #dlgFeedContent [Size]=\"'L'\">\r\n <es-modal-head (Close)=\"dlgFeedContent.hide();\">\r\n <h5 class=\"modal-title pull-left\">Dettaglio Feed di Sistema</h5>\r\n </es-modal-head>\r\n <div class=\"modal-body\">\r\n <div *ngIf=\"FeedContentDetails\" class=\"app-markdown\" markdown emoji>{{FeedContentDetails}}</div>\r\n </div>\r\n <div class=\"modal-footer\">\r\n <button type=\"button\" class=\"btn btn-secondary app-margin-right-10\" (click)=\"dlgFeedContent.hide();\">Chiudi</button>\r\n </div>\r\n</es-modal>\r\n\r\n<simple-dropdown #FeedsOperationsDropdown [Options]=\"FeedsOperations\"></simple-dropdown>","// Angular\r\nimport { NgModule } from \"@angular/core\";\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\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 \"./back-top/back-top.component\";\r\nimport { Breadcrumb } from \"./breadcrumb/breadcrumb.component\";\r\nimport { ErrorPageComponent } from \"./error/errorpage.component\";\r\nimport { PagesComponent } from \"./page/pages.component\";\r\nimport { ExternalPagesComponent } from \"./external-page/external_pages.component\";\r\nimport { JaceLoginComponent } from \"./jace-login/jace-login.component\";\r\nimport { Navbar } from \"./navbar/navbar.component\";\r\nimport { JaceResourceComponent } from \"./jace-resource/jace-resource.component\";\r\nimport { RedirecterComponent } from \"./redirecter/redirecter.component\";\r\nimport { Sidebar } from \"./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 { LabeledSpanComponent } from \"./labeled-span/labeled-span.component\";\r\nimport { EsImageCropperComponent } from \"./es-image-cropper/es-image-cropper.component\";\r\nimport { FormSelectorComponent } from \"./selector/form-selector/form-selector.component\";\r\nimport { FormSelectorDialogComponent } from \"./selector/form-selector-dialog/form-selector-dialog.component\";\r\n\r\n// Core\r\nimport { DirectivesModule } from \"@esfaenza/core/directives\";\r\nimport { EntityFeedsWidgetComponent } from \"./entity-feeds-widget/entity-feeds-widget.component\";\r\n\r\nconst COMPONENTS = [\r\n BackTop,\r\n Breadcrumb,\r\n ErrorPageComponent,\r\n PagesComponent,\r\n ExternalPagesComponent,\r\n JaceLoginComponent,\r\n Navbar,\r\n RedirecterComponent,\r\n Sidebar,\r\n JaceResourceComponent,\r\n EsModalComponent,\r\n EsModalHeadComponent,\r\n LabeledSpanComponent,\r\n EsImageCropperComponent,\r\n FormSelectorComponent,\r\n FormSelectorDialogComponent,\r\n EntityFeedsWidgetComponent\r\n];\r\n\r\n@NgModule({\r\n imports: [CommonModule, RouterModule, FormsModule, DirectivesModule, LocalizationModule, ProgressbarModule, BsDropdownModule, ModalModule, EsTableModule, ...COMPONENTS],\r\n exports: [...COMPONENTS]\r\n})\r\nexport class ComponentsModule { }","// Angular\r\nimport { Component, Injector } from \"@angular/core\";\r\nimport { ActivatedRoute, UrlSegment } from \"@angular/router\";\r\nimport { Location, NgIf } from \"@angular/common\";\r\n\r\nimport { AppEmbeddingExtensions } from \"@esfaenza/extensions\";\r\n// Componenti\r\nimport { JaceResourceComponent } from \"../jace-resource/jace-resource.component\";\r\nimport { BaseComponent } from \"./base.component\";\r\nimport { combineLatest, debounceTime, zip } from \"rxjs\";\r\n\r\n@Component({\r\n selector: 'embedding',\r\n templateUrl: 'embedding.component.html',\r\n imports: [NgIf, JaceResourceComponent]\r\n})\r\nexport class EmbeddingComponent extends BaseComponent {\r\n\r\n // TODO: Automatizzare\r\n private LocalhostModuleMap: { [id: string]: string } = {\r\n \"crm\": \"31813\",\r\n \"sii\": \"21645\"\r\n };\r\n\r\n public Module: string;\r\n public Localhost: string;\r\n\r\n public Page: string;\r\n public Pars: string;\r\n public QueryPars: string;\r\n\r\n public EmbeddingSuccesfull: boolean = true;\r\n\r\n constructor(private injector: Injector, private emb: AppEmbeddingExtensions, private location: Location) {\r\n super(injector);\r\n }\r\n\r\n ngOnInit() {\r\n let route: ActivatedRoute = this.injector.get(ActivatedRoute);\r\n\r\n route.params.pipe(debounceTime(100)).subscribe((res) => {\r\n this.Module = res[\"module\"];\r\n this.Localhost = this.LocalhostModuleMap[this.Module];\r\n\r\n console.log(`Recognized a new navigation to the embedding component: ${this.Module} - ${this.CompletePath}`);\r\n\r\n let reloadAllowed = this.emb.IsReloadAllowed();\r\n if (this.Page && reloadAllowed) {\r\n this.Page = this.Pars = null;\r\n requestAnimationFrame(() => { this.assignPageLoadParameters(); });\r\n }\r\n else\r\n this.assignPageLoadParameters(reloadAllowed);\r\n });\r\n }\r\n\r\n assignPageLoadParameters(reloadAllowed: boolean = true) {\r\n // Esempio di Complete path: \"/pages/embed/crm/leads/leads_search\"\r\n // Esempio di slices: [\"\", \"pages\", \"embed\", \"crm\", \"leads\", \"leads_search\"]\r\n // Io devo sostanzialmente prendere dal nome del modulo (\"crm\") in poi. Nome del modulo embeddato eslcuso\r\n console.log(\"Embedding...\")\r\n \r\n if(reloadAllowed)\r\n this.EmbeddingSuccesfull = false;\r\n\r\n // Per seccare e ricreare il componente che altrimenti non prenderebbe gli input nuovi\r\n requestAnimationFrame(() => {\r\n this.Page = this.CompletePath.split(\"/\").slice(4).join(\"/\");\r\n console.log(\"Page: \" + this.Page)\r\n\r\n let navParKeys = Object.keys(this.Parameters)?.filter(p => p != \"module\");\r\n this.Pars = (navParKeys?.length || 0) == 0 ? \"\" : \";\" + navParKeys.map(t => `${t}=${this.Parameters[t]}`).join(\";\");\r\n console.log(\"Pars: \" + this.Pars);\r\n\r\n let queryParKeys = Object.keys(this.QueryParameters);\r\n this.QueryPars = (queryParKeys?.length || 0) == 0 ? \"\" : \"?\" + queryParKeys.map(t => `${t}=${this.QueryParameters[t]}`).join(\";\");\r\n console.log(\"QueryPars: \" + this.QueryPars)\r\n\r\n let QueryPAramsWithoutIgnoreStorage = queryParKeys.map(t => t == \"ignoreStorage\" ? null : `${t}=${this.QueryParameters[t]}`).filter(t => !!t).join(\";\")\r\n\r\n // Per rimuovere eventuali ignoreStorage se sto navigando a una ricerca\r\n this.location.replaceState(this.CompletePath + this.Pars + (QueryPAramsWithoutIgnoreStorage ? '?' + QueryPAramsWithoutIgnoreStorage : \"\"));\r\n\r\n this.EmbeddingSuccesfull = !!this.Page && !!this.Module && !!this.Localhost;\r\n })\r\n }\r\n}","<jace-resource *ngIf=\"EmbeddingSuccesfull && Page\" [Module]=\"Module\" [Localhost]=\"Localhost\" Page=\"{{Page}}{{Pars}}{{QueryPars}}\"></jace-resource>\r\n<div *ngIf=\"!EmbeddingSuccesfull\">\r\n Errori nell'embeddare risorsa {{Page}};{{Pars}} del modulo {{Module}} (Localhost {{Localhost}})\r\n</div>","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, 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 { PreferencesService } from \"@esfaenza/preferences\";\r\nimport { UpdatePasswordDto, UserAccount } 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 { AccessControlModule } from \"@esfaenza/access-control\";\r\nimport { TooltipModule } from \"primeng/tooltip\";\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 \"../labeled-span/labeled-span.component\";\r\nimport { EsImageCropperComponent } from \"../public-api\";\r\n\r\nimport { firstValueFrom } from \"rxjs\";\r\n\r\n@Component({\r\n selector: \"user-infos\",\r\n templateUrl: \"user_infos.component.html\",\r\n styleUrls: [\"./user_infos.component.scss\"],\r\n viewProviders: [{ provide: LocalizationService, useClass: UserInfoComponentLoc }],\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 EsImageCropperComponent,\r\n LabeledSpanComponent,\r\n ExtensionsModule,\r\n AccessControlModule,\r\n TooltipModule\r\n ]\r\n})\r\nexport class UserInfosComponent extends BaseComponent {\r\n\r\n private PREFS_DISABLE_EFFECTS = \"PREFS_DISABLE_EFFECTS\";\r\n\r\n public AccountDetails: UserAccount;\r\n public AccountRoles: string[];\r\n public AccountPermissions: string[];\r\n\r\n public GraphicEffectsDeactivated: boolean = true;\r\n\r\n constructor(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, private prefs: PreferencesService) {\r\n super(inj);\r\n }\r\n\r\n async ngOnInit() {\r\n this.getAccountDetails();\r\n this.GraphicEffectsDeactivated = !this._state.graphicEffects();\r\n }\r\n\r\n public async effectsActiveChanged(){\r\n this._state.graphicEffects.set(!this.GraphicEffectsDeactivated);\r\n await firstValueFrom(this.prefs.setItem(this.PREFS_DISABLE_EFFECTS, this.GraphicEffectsDeactivated));\r\n }\r\n\r\n public async getAccountDetails() {\r\n // Recupero le informazioni Account partendo dalla identity\r\n let identity = this.tks.getJaceIdentity();\r\n if (identity) {\r\n this.AccountRoles = identity.Roles;\r\n this.AccountPermissions = identity.Permissions;\r\n this.AccountDetails = await this.profile.getAccountProfile();\r\n }\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 @ViewChild('imageCropper') imageCropper: EsImageCropperComponent;\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(new File([this.imageCropper.OutputImage], \"profile.png\"));\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 l'immagine 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, \"Immagine profilo rimossa con successo\", \"Errori nella rimozione della immagine 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}","<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\" pTooltip=\"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.tenantid}}</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-6 app-margin-top-10\"><labeled-span [Label]=\"'Email' | localize : lc\" Display=\"Vertical\">{{AccountDetails.recoveryemail || 'Non disponibile'}}</labeled-span></div>\r\n <div class=\"col-md-6 app-margin-top-15\"><form-checkbox [LabelInputRatio]=\"'8 4'\" [SliderMode]=\"true\" [Label]=\"'Disattiva effetti grafici' | localize: lc\" [(ngModel)]=\"GraphicEffectsDeactivated\" (inputChange)=\"effectsActiveChanged()\" name=\"gea\"></form-checkbox></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]=\"'L'\">\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}}:&nbsp;</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]=\"'L'\">\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]=\"'XL'\">\r\n <es-modal-head (Close)=\"dlgUpdateProfilePicture.hide();\">\r\n <h5 class=\"modal-title pull-left\">Carica immagine</h5>\r\n </es-modal-head>\r\n <div class=\"modal-body d-flex\">\r\n <div style=\"margin: auto;\">\r\n <es-image-cropper #imageCropper [Height]=\"600\" [Width]=\"800\"></es-image-cropper>\r\n </div>\r\n </div>\r\n <div class=\"modal-footer\">\r\n <button type=\"button\" class=\"btn btn-secondary\" (click)=\"dlgUpdateProfilePicture.hide()\">Annulla</button>\r\n <button type=\"submit\" class=\"btn btn-primary\" (click)=\"doUpdateProfilePicture()\">Conferma</button>\r\n </div>\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, contentChild, EventEmitter, Injector, Input, Output, SimpleChanges, TemplateRef, viewChild, ViewChild } from \"@angular/core\";\r\nimport { NgControl, NgForm, NgModel } from \"@angular/forms\";\r\nimport { AsyncPipe, NgIf, NgTemplateOutlet } from \"@angular/common\";\r\nimport { HttpParams } from \"@angular/common/http\";\r\nimport { Router } from \"@angular/router\";\r\n\r\n// Configurazioni\r\nimport { ClipboardService, HashingService, MessageService } from \"@esfaenza/extensions\";\r\nimport { AccessControlService } from \"@esfaenza/access-control\";\r\nimport { LocalizationService } from \"@esfaenza/localizations\";\r\nimport { HTTPService } from \"@esfaenza/httpservice\";\r\nimport { AppState } from \"@esfaenza/core/services\";\r\nimport { AppSearch, ThTdProvider } from \"@esfaenza/es-table\";\r\n\r\n// Esfaenza\r\nimport { REDIRECT_MAP } from \"@esfaenza/core/domain\";\r\n\r\n// Direttive, Componenti, Librerie\r\nimport { firstValueFrom, map, Observable, of, ReplaySubject, Subject, take, takeUntil } from \"rxjs\";\r\nimport { ModalDirective } from \"ngx-bootstrap/modal\";\r\n\r\n// Applicazione\r\nimport { FormSelectorComponent } from \"../form-selector/form-selector.component\";\r\nimport { FormSelectorDialogComponent } from \"../form-selector-dialog/form-selector-dialog.component\";\r\nimport { BaseSelectorInitialization } from \"./models/BaseSelectorInitialization\";\r\n\r\n\r\nconst nameof = <T>(name: Extract<keyof T, string>): string => name;\r\nconst dummyCall = \"_DUMMY_\";\r\n\r\n// Per poter rendere l'html comune devo per forza tirare fuori un implementazione base con componente reale, che verrà overridata dove serve lato applicativo.\r\n// Mi basta collegare tutto in maniera passante\r\n@Component({\r\n selector: \"base-selector\",\r\n templateUrl: \"./base-selector.component.html\",\r\n styleUrls: [\"./base-selector.component.scss\"],\r\n imports: [FormSelectorComponent, FormSelectorDialogComponent, NgTemplateOutlet, NgIf, AsyncPipe]\r\n})\r\nexport class BaseSelectorComponent<TSearch extends AppSearch<TItem>, TItem> {\r\n\r\n Initialized: ReplaySubject<boolean> = new ReplaySubject<boolean>();\r\n\r\n // Per richiamare lo \"Show\" da fuori componente\r\n itemSearch = viewChild<ModalDirective>(\"itemSearch\");\r\n\r\n EsTableTemplate = contentChild(ThTdProvider);\r\n EsTableTemplateComponent = viewChild(ThTdProvider);\r\n FiltersTemplate = contentChild<TemplateRef<any>>(\"filtersTemplate\");\r\n\r\n @Input() ModalOnly = false;\r\n @Input() EntityName = \"\";\r\n\r\n @ViewChild(\"searchView\", { static: false }) searchModal: ModalDirective;\r\n\r\n @Output() inputChange: EventEmitter<TItem[] | TItem> = new EventEmitter<TItem[] | TItem>();\r\n @Output() firstValueLoaded: EventEmitter<void> = new EventEmitter<void>();\r\n\r\n protected SelectedItems: string[];\r\n public SelectedObjects: TItem[];\r\n\r\n public SelectedLabel: string;\r\n\r\n propagateChange = (_: any) => { };\r\n public registerOnChange(fn): void { this.propagateChange = fn; }\r\n public registerOnTouched(fn): void { }\r\n\r\n @Input() DisplayMode = false;\r\n @Input() Readonly = false;\r\n @Input() Form: NgForm = null;\r\n @Input() Placeholder: string;\r\n @Input() ngModelOptions: any;\r\n @Input() SingleSelection: boolean = true;\r\n @Input() Required: boolean = false;\r\n @Input() Validation: boolean = false;\r\n @Input() PageSize: number = 10;\r\n @Input() Navigation: boolean = true;\r\n @Input() EmitStartingValue: boolean = false;\r\n @Output() dialogVisible = new EventEmitter<boolean>();\r\n @Output() dialogHidden = new EventEmitter<boolean>();\r\n @Output() inputFinalized = new EventEmitter<string>();\r\n\r\n @Input() name: string = \"\";\r\n\r\n public searchView: TSearch = null;\r\n\r\n // Goddamnit\r\n protected nameof = nameof;\r\n\r\n public subject: string;\r\n\r\n private searchType: new () => TSearch;\r\n private searchApi: string;\r\n private itemIdProperty: string;\r\n private searchIndependantProperties: string[];\r\n public navigationEntity: string;\r\n\r\n protected applyFilters(view: TSearch, firstApplication?: boolean, onlyEssentials?: boolean): void { };\r\n protected applyIdFilter(view: TSearch, itemid?: string): void { };\r\n protected evaluateLabel(item: TItem[]): string {\r\n throw \"[@esfaenza/core] Missing implementation for evaluateLabel, please register capabilities by doing selector.registerSelectorCapabilities(..., ..., ..., ...);\";\r\n }\r\n protected async loadSearchDictionaries(): Promise<void> { }\r\n\r\n protected Initialize(): BaseSelectorInitialization<TSearch> {\r\n throw \"[@esfaenza/core] Missing implementation for Initialize, please register capabilities by doing selector.registerSelectorCapabilities(..., ..., ..., ...);\";\r\n };\r\n\r\n private firstApplication: boolean = true;\r\n\r\n public ngControl: NgModel;\r\n public Pristine: boolean = true;\r\n\r\n private CurrentValue: any;\r\n\r\n public ac: AccessControlService;\r\n\r\n @Input() ValidationSubject: Subject<{ fieldName: string, error: string }>;\r\n destroyed$: Subject<void> = new Subject<void>();\r\n\r\n private router: Router;\r\n public lc: LocalizationService;\r\n public http: HTTPService;\r\n public state: AppState;\r\n private msgExts: MessageService;\r\n private clipboardService: ClipboardService;\r\n private hashingService: HashingService;\r\n\r\n private redirectMap: { [index: string]: { url: string, params: string[] } }\r\n private routesMap: { [index: string]: { route: (params: string) => any[] } };\r\n\r\n constructor(private injector: Injector) {\r\n\r\n this.router = injector.get(Router);\r\n this.lc = injector.get(LocalizationService);\r\n this.http = injector.get(HTTPService);\r\n this.state = injector.get(AppState);\r\n this.msgExts = injector.get(MessageService);\r\n this.clipboardService = injector.get(ClipboardService);\r\n this.hashingService = injector.get(HashingService);\r\n this.redirectMap = injector.get(REDIRECT_MAP, {});\r\n\r\n // Giusto per non avere un null\r\n this.searchView = {} as any\r\n\r\n for (let prop in this.redirectMap) {\r\n this.routesMap[prop] = { route: null };\r\n this.routesMap[prop].route = (param: string) => {\r\n let obj = {};\r\n obj[this.redirectMap[prop].params[0]] = param;\r\n return [\"pages/\" + this.redirectMap[prop].url, obj];\r\n }\r\n }\r\n\r\n this.Initialized.pipe(take(1)).subscribe(t => {\r\n let initialization = this.Initialize();\r\n this.subject = initialization.subject;\r\n this.searchType = initialization.searchType;\r\n this.searchApi = initialization.searchApi;\r\n this.navigationEntity = initialization.navigationEntity || \"\";\r\n this.searchIndependantProperties = initialization.searchIndependantProperties || [];\r\n this.searchIndependantProperties.push(nameof<BaseSelectorComponent<any, any>>(\"ModalOnly\"));\r\n this.itemIdProperty = initialization.idProperty || 'id';\r\n this.ac = this.injector.get(AccessControlService) as AccessControlService;\r\n \r\n if (!this.searchApi || !this.searchType || !this.subject)\r\n throw \"Impossibile utilizzare un selector senza anche solo una di queste 3 proprietà: subject, searchType, searchApi\";\r\n })\r\n }\r\n\r\n _outer: BaseSelectorComponent<any, any>;\r\n\r\n public bridge(outer: BaseSelectorComponent<any, any>) {\r\n requestAnimationFrame(() => {\r\n this._outer = outer;\r\n this.DisplayMode = outer.DisplayMode;\r\n\r\n // Bridge degli input da fuori a dentro\r\n this.DisplayMode = outer.DisplayMode;\r\n this.Readonly = outer.Readonly;\r\n this.Form = outer.Form;\r\n this.Placeholder = outer.Placeholder;\r\n this.ngModelOptions = outer.ngModelOptions;\r\n this.SingleSelection = outer.SingleSelection;\r\n this.Required = outer.Required;\r\n this.Validation = outer.Validation;\r\n this.PageSize = outer.PageSize;\r\n this.Navigation = outer.Navigation;\r\n this.EmitStartingValue = outer.EmitStartingValue;\r\n this.name = outer.name;\r\n this.ModalOnly = outer.ModalOnly;\r\n this.EntityName = outer.EntityName;\r\n this.ValidationSubject = outer.ValidationSubject;\r\n\r\n // Bridge degli output da dentro a fuori\r\n this.dialogVisible = outer.dialogVisible;\r\n this.dialogHidden = outer.dialogHidden;\r\n this.inputFinalized = outer.inputFinalized;\r\n this.inputChange = outer.inputChange;\r\n this.firstValueLoaded = outer.firstValueLoaded;\r\n\r\n // Bridge funzioni di inizializzazione \r\n this.applyFilters = outer.applyFilters.bind(outer);\r\n this.applyIdFilter = outer.applyIdFilter.bind(outer);\r\n this.evaluateLabel = outer.evaluateLabel.bind(outer);\r\n this.loadSearchDictionaries = outer.loadSearchDictionaries.bind(outer);\r\n this.Initialize = outer.Initialize.bind(outer);\r\n\r\n // Bridge di funzioni che quando chiamate all'esterno deve rispondere il componente interno\r\n outer.modalVisible = this.modalVisible.bind(this);\r\n outer.resetSearch = this.resetSearch.bind(this);\r\n outer.initStartValue = this.initStartValue.bind(this);\r\n outer.ensureClosed = this.ensureClosed.bind(this);\r\n outer.sendSearch = this.sendSearch.bind(this);\r\n outer.cleanSelection = this.cleanSelection.bind(this);\r\n outer.writeValue = this.writeValue.bind(this);\r\n\r\n requestAnimationFrame(() => {\r\n this.propagateChange = outer.propagateChange.bind(this);\r\n });\r\n this.Initialized.next(true);\r\n });\r\n }\r\n\r\n async ngOnInit() {\r\n await firstValueFrom(this.Initialized);\r\n\r\n this.ngControl = this.injector.get(NgControl) as NgModel;\r\n\r\n // Casistica di form detatched, attacco a forza il componente al form\r\n if (this.Form)\r\n this.Form.addControl(this.ngControl as NgModel)\r\n\r\n // ValidationSubject - Qui setta l'errore nel form-selector, nell'HTML setta l'errore nel form-input\r\n if (this.ValidationSubject) {\r\n this.ValidationSubject.pipe(takeUntil(this.destroyed$)).subscribe(v => {\r\n if (v.fieldName == this.name) {\r\n this.ngControl.control.setErrors({ forcedtoinvalid: true });\r\n this.ngControl.control.markAsTouched();\r\n }\r\n })\r\n }\r\n\r\n await this.loadSearchDictionaries();\r\n\r\n this.resetSearch();\r\n }\r\n\r\n async ngOnDestroy() {\r\n \r\n this.destroyed$.next();\r\n this.destroyed$.complete();\r\n\r\n await firstValueFrom(this.Initialized);\r\n\r\n // Su distruzione se il form è detatched, ripulisco\r\n if (this.Form)\r\n this.Form.removeControl(this.ngControl as NgModel)\r\n }\r\n\r\n async ngOnChanges(changes: SimpleChanges) {\r\n await firstValueFrom(this.Initialized);\r\n\r\n for (let change in changes) {\r\n\r\n if (this.searchIndependantProperties.includes(change))\r\n continue;\r\n\r\n if (!changes[change].firstChange) {\r\n console.log(`[Selector] Change on ${change}, search will be reset and curret value will be lost`);\r\n if (this.CurrentValue) {\r\n this.resetSearch(false);\r\n this.initStartValue(this.CurrentValue);\r\n }\r\n else {\r\n this.resetSearch(false);\r\n this.loadSearchDictionaries();\r\n this.cleanSelection();\r\n }\r\n break;\r\n }\r\n }\r\n }\r\n\r\n public resetSearch(applyFilters: boolean = true): boolean {\r\n this.firstApplication = true;\r\n this.Pristine = true;\r\n\r\n this.searchView = new this.searchType();\r\n this.searchView.itemsperpageoverride = this.PageSize;\r\n if(applyFilters)\r\n this.applyFilters(this.searchView, true, true);\r\n\r\n return true;\r\n }\r\n\r\n public initStartValue(valueId: string) {\r\n this.CurrentValue = valueId;\r\n\r\n // Inizializzare con un valore di partenza, senza valore di partenza, non ha senso\r\n if (!valueId)\r\n return;\r\n\r\n this.applyIdFilter(this.searchView, valueId);\r\n this.applyFilters(this.searchView, true, true);\r\n this.sendSearch(true, true, false);\r\n }\r\n\r\n public ensureClosed() {\r\n if (this.searchModal.isShown)\r\n this.searchModal.hide();\r\n }\r\n\r\n // Solo UI\r\n public async confirmSelection() {\r\n this.SelectedItems = [];\r\n this.SelectedObjects = [];\r\n\r\n let items = await firstValueFrom(this.SelectAll(this.searchView, this.searchApi));\r\n\r\n for (let i = 0; i < items.length; i++) {\r\n this.SelectedObjects.push(items[i]);\r\n this.SelectedItems.push(items[i][this.itemIdProperty]);\r\n }\r\n\r\n this.SelectedLabel = this.SelectedObjects?.length > 0 ? this.evaluateLabel(this.SelectedObjects) : \"\";\r\n\r\n this.changed();\r\n }\r\n\r\n public sendSearch(resetPage: boolean = true, selectResults?: boolean, applyOtherFilters: boolean = true) {\r\n if (applyOtherFilters) {\r\n for(var prop in this._outer.searchView){\r\n if(prop.startsWith(\"filter\"))\r\n this.searchView[prop] = this._outer.searchView[prop];\r\n }\r\n this.applyFilters(this.searchView, this.firstApplication);\r\n this.firstApplication = false;\r\n }\r\n\r\n this.searchView.searchinprogress = true;\r\n if (resetPage)\r\n this.searchView.page = 1;\r\n\r\n if (!this.searchView.itemsperpageoverride)\r\n this.searchView.itemsperpageoverride = this.PageSize;\r\n\r\n if (this.searchApi == dummyCall) {\r\n setTimeout(() => {\r\n this.searchView = AppSearch.newref(this.searchView);\r\n this.searchView.items = (this.searchView as any).filterdivision == \"1\" ? [{ id: \"11111\", description: \"Emanuele Ghetti\" } as any] : [{ id: \"2222222\", description: \"Emanuele Ghetti\" } as any];\r\n this.searchView.searchinprogress = false;\r\n\r\n this.afterSearch(selectResults)\r\n })\r\n return true;\r\n }\r\n\r\n this.http.post<TSearch>(this.searchApi, this.searchView).subscribe(t => {\r\n this.searchView = t;\r\n this.searchView.searchinprogress = false;\r\n\r\n this.afterSearch(selectResults)\r\n });\r\n\r\n return true;\r\n }\r\n\r\n private afterSearch(selectResults: boolean) {\r\n // La selezione dei risultati viene richiesta all'inizializzazione del selector con un valore già presente\r\n // il risultato della ricerca (sempre 1, ma gestito da un for sugli items per prepararsi alla selezione multipla) è la rappresentazione dello stato iniziale del selector\r\n if (selectResults) {\r\n if (this.searchView.items.length > 0) {\r\n this.SelectedItems = [];\r\n this.SelectedObjects = [];\r\n for (let i = 0; i < this.searchView.items.length; i++) {\r\n let target = <TItem>this.searchView.items[i];\r\n this.SelectedItems.push(target[this.itemIdProperty]);\r\n this.SelectedObjects.push(target);\r\n }\r\n\r\n this.SelectedLabel = this.evaluateLabel(this.SelectedObjects);\r\n // Serve la ripropagazione del valore per aggiornare il validatore\r\n this.changed(this.EmitStartingValue);\r\n this.firstValueLoaded.emit();\r\n this.ngControl.control.updateValueAndValidity();\r\n }\r\n }\r\n }\r\n\r\n public async writeValue(obj) {\r\n await firstValueFrom(this.Initialized);\r\n\r\n if (obj !== undefined && obj !== null)\r\n this.initStartValue(obj);\r\n else {\r\n this.resetSearch();\r\n this.SelectedItems = [];\r\n this.SelectedObjects = [];\r\n this.SelectedLabel = \"\";\r\n }\r\n }\r\n\r\n public changed(emit: boolean = true) {\r\n if (this.SingleSelection) {\r\n this.CurrentValue = this.SelectedItems.length > 0 ? this.SelectedItems[0] : ''\r\n this.propagateChange(this.CurrentValue);\r\n if (emit) {\r\n this.Pristine = false;\r\n this.inputChange.emit(this.SelectedItems.length > 0 ? <any>this.SelectedObjects[0] : null);\r\n this.inputFinalized.emit(this.name);\r\n }\r\n }\r\n else {\r\n this.CurrentValue = JSON.parse(JSON.stringify(this.SelectedItems));\r\n this.propagateChange(this.SelectedItems);\r\n if (emit) {\r\n this.Pristine = false;\r\n this.inputChange.emit(<any>this.SelectedObjects);\r\n this.inputFinalized.emit(this.name);\r\n }\r\n }\r\n\r\n }\r\n\r\n public cleanSelection() {\r\n this.SelectedItems = [];\r\n this.SelectedObjects = [];\r\n this.SelectedLabel = \"\";\r\n this.changed();\r\n }\r\n\r\n public modalVisible(visible: boolean) {\r\n if (visible)\r\n this.dialogVisible.emit(true);\r\n else\r\n this.dialogHidden.emit(true);\r\n }\r\n\r\n // Solo UI\r\n public copyToClipboard(subjectOverride?: string) {\r\n if (this.SelectedItems?.length > 0) {\r\n this.clipboardService.copyTextToClipboard(this.SelectedItems.join(','));\r\n this.msgExts.simpleInfo(`Codice ${this.subject || subjectOverride} copiato!`, 'toastr');\r\n }\r\n\r\n return false;\r\n }\r\n\r\n // Solo UI\r\n public navigate() {\r\n var item = this.SelectedObjects[0];\r\n if (this.navigationEntity && item) {\r\n if (!this.routesMap?.[this.navigationEntity]?.route || (this.routesMap[this.navigationEntity].route(item[this.itemIdProperty])?.length || 0) == 0) {\r\n this.msgExts.simpleError(`Impossibile navigare all'entità ${this.navigationEntity} con codice ${item[this.itemIdProperty]}`);\r\n return;\r\n }\r\n let urlTree = this.router.createUrlTree(this.routesMap[this.navigationEntity].route(item[this.itemIdProperty]));\r\n let url = this.router.serializeUrl(urlTree);\r\n window.open(\"#\" + url, '_blank');\r\n }\r\n }\r\n\r\n\r\n private SelectAll<T>(view: AppSearch<T>, api: string, pars?: HttpParams, transaction?: string): Observable<T[]> {\r\n if (api == dummyCall)\r\n return of(view.selection.items);\r\n\r\n if (!view.selection.all)\r\n return of(view.selection.items);\r\n\r\n var jsonView = JSON.parse(JSON.stringify(view));\r\n jsonView.page = 1;\r\n jsonView.itemsperpageoverride = 999999;\r\n\r\n return this.http.post<AppSearch<T>>(api, jsonView, pars, transaction).pipe(map<AppSearch<T>, T[]>(res => {\r\n let items = <T[]>res.items;\r\n items.forEach(t => (<any>t).hash = this.hashingService.hashObject(t, null, false));\r\n if (res.selection.exclusions?.length > 0)\r\n items = items.filter((t: any) => !res.selection.exclusions.find((e: any) => this.hashingService.hashObject(e, null, false) == t.hash));\r\n return items;\r\n }));\r\n }\r\n}","<form-selector *ngIf=\"Initialized | async\"\r\n [SetValidationSubject]=\"ValidationSubject\"\r\n [ModalOnly]=\"ModalOnly\"\r\n [Valid]=\"!((!Pristine || Form?.submitted) && !ngControl?.valid)\"\r\n [SelectedLabel]=\"SelectedLabel\"\r\n [Validation]=\"Validation\"\r\n [Readonly]=\"Readonly\"\r\n [Form]=\"Form\"\r\n [Name]=\"name\"\r\n [ngModelOptions]=\"ngModelOptions\"\r\n [Required]=\"Required\"\r\n [Placeholder]=\"Placeholder\"\r\n [HasExternalLink]=\"Navigation && (SelectedObjects?.length == 1 && !!navigationEntity)\"\r\n (onChange)=\"changed()\"\r\n (onSearch)=\"!Readonly && resetSearch() && sendSearch() && itemSearch().show();\"\r\n (onNavigation)=\"navigate()\"\r\n (onClipboardCopy)=\"copyToClipboard()\">\r\n</form-selector>\r\n\r\n<form-selector-dialog *ngIf=\"Initialized | async\"\r\n #itemSearch\r\n [Subject]=\"subject\"\r\n [EsTableTemplate]=\"EsTableTemplate() || EsTableTemplateComponent()\"\r\n [searchView]=\"searchView\"\r\n (onSearchRequest)=\"sendSearch($event)\"\r\n (onDialogVisibilityChange)=\"modalVisible($event);\"\r\n (onClearValue)=\"cleanSelection(); itemSearch.hide(); resetSearch();\"\r\n (onCloseDialog)=\"itemSearch.hide(); resetSearch();\"\r\n (onConfirmSelection)=\"confirmSelection(); itemSearch.hide(); resetSearch();\">\r\n <ng-container filters *ngIf=\"FiltersTemplate()\">\r\n <ng-container *ngTemplateOutlet=\"FiltersTemplate()\"></ng-container>\r\n </ng-container>\r\n\r\n</form-selector-dialog>","\r\nexport class BaseSelectorInitialization<TSearch> {\r\n constructor(\r\n public subject: string,\r\n public searchType: new () => TSearch,\r\n public searchApi: string,\r\n public navigationEntity?: string,\r\n public searchIndependantProperties?: string[],\r\n public idProperty?: string) { }\r\n}\r\n\r\n","// Angular\r\nimport { Location } from \"@angular/common\";\r\nimport { Component, Injector } from \"@angular/core\";\r\nimport { ActivatedRoute } from \"@angular/router\";\r\n\r\n// Esfaenza\r\nimport { AppSearch } from \"@esfaenza/es-table\";\r\nimport { MessageService, UtilityService } from \"@esfaenza/extensions\";\r\nimport { HTTPService } from \"@esfaenza/httpservice\";\r\nimport { CacheService } from \"@esfaenza/preferences\";\r\nimport { LocalizationService } from \"@esfaenza/localizations\";\r\nimport { BaseComponent } from \"../base/base.component\";\r\n\r\n// Libs\r\nimport { combineLatest, firstValueFrom, map, takeUntil } from \"rxjs\";\r\nimport { HttpParams } from \"@angular/common/http\";\r\n\r\n@Component({ template: '' })\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 protected ItemType: new () => TItem;\r\n protected http: HTTPService;\r\n protected utiExts: UtilityService;\r\n protected msgExts: MessageService;\r\n\r\n private location: Location;\r\n private localStorage: CacheService;\r\n private route: ActivatedRoute;\r\n\r\n public lc: LocalizationService;\r\n\r\n constructor(injector: Injector) {\r\n super(injector);\r\n\r\n this.location = injector.get(Location);\r\n this.lc = injector.get(LocalizationService);\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 this.msgExts = injector.get(MessageService);\r\n\r\n [this.HotView, this.SearchURL, this.SearchType, this.ItemType] = this.initialize();\r\n\r\n if (!this.HotView || !this.SearchURL || !this.SearchType || !this.ItemType)\r\n throw (\"Fallita inizializzazione della pagina di ricerca.\");\r\n }\r\n\r\n ngOnInit() {\r\n combineLatest([this.route.queryParams, this.route.params]).pipe(takeUntil(this.destroyed$), map((res) => ({ querypars: res[0], pars: res[1] }))).subscribe(res => {\r\n\r\n // Sto cavolo di ignoreStorage mi farà diventare pazzo\r\n let tmpIgnoreStorage = res.querypars[\"ignoreStorage\"];\r\n let ignoreStorage: boolean;\r\n if (typeof tmpIgnoreStorage === \"string\")\r\n ignoreStorage = tmpIgnoreStorage == \"false\" ? false : tmpIgnoreStorage == \"true\" ? true : false;\r\n else if (typeof tmpIgnoreStorage === \"boolean\")\r\n ignoreStorage = tmpIgnoreStorage;\r\n else\r\n ignoreStorage = false; // ignoreStorage false se non specificato diversamente\r\n\r\n this.init(ignoreStorage);\r\n });\r\n }\r\n\r\n private async init(ignoreStorage: boolean) {\r\n await this.getDictionaries();\r\n\r\n let item = await firstValueFrom(this.localStorage.getItem<TSearch>(this.HotView));\r\n if (!ignoreStorage && item) {\r\n item[\"__proto__\"] = new this.SearchType();\r\n this.createOrLoadView(item);\r\n } else {\r\n this.createOrLoadView(null);\r\n this.location.replaceState(this.CompletePath);\r\n this.route.snapshot.queryParams = [];\r\n await firstValueFrom(this.localStorage.removeItem(this.HotView));\r\n }\r\n }\r\n\r\n private createOrLoadView(HotPotato: TSearch) {\r\n if (HotPotato) {\r\n this.searchView = HotPotato;\r\n this.afterLoadView(this.searchView);\r\n }\r\n else {\r\n this.searchView = new this.SearchType();\r\n this.searchView.firstsearch = false;\r\n this.searchView.page = 1;\r\n this.afterCreateView(this.searchView);\r\n }\r\n }\r\n\r\n public sendSearch() {\r\n this.RetrieveProto(AppSearch.newref(this.searchView))\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 public onSearchRequest(resetPage: boolean = true) {\r\n\r\n if (!this.canPerformSearch())\r\n return;\r\n\r\n //this.filters.onUpdateFiltersTop();\r\n this.searchView.searchinprogress = true;\r\n\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.reviewBindings();\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 public prepareExport(callback, limit: number = -1, pars?: HttpParams) {\r\n var view = AppSearch.toSelectAll(this.searchView);\r\n this.http.post<AppSearch<TItem>>(this.SearchURL, view, pars).subscribe(t => {\r\n if (t.objectcount > limit && limit > 0) {\r\n this.msgExts.simpleError(`Massimo numero di elementi consentito: ${limit}.`);\r\n return;\r\n }\r\n callback(t.items, this.ItemType);\r\n });\r\n }\r\n\r\n abstract initialize(): [string, string, new () => TSearch, new () => TItem] | any;\r\n protected async getDictionaries(): Promise<void> { };\r\n protected afterLoadView(_: TSearch) { };\r\n protected afterCreateView(_: TSearch) { };\r\n protected reviewBindings() { };\r\n protected canPerformSearch(): boolean { return true };\r\n}","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i4","i1","i3","i5","i6","i2","i7","i11","takeUntil","i8","map"],"mappings":"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"}