@esfaenza/dashboard-feature 15.2.8 → 15.2.10

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-dashboard-feature.mjs","sources":["../../../projects/dashboard-feature/src/lib/public-injection-tokens.ts","../../../projects/dashboard-feature/src/lib/private-injection-tokens.ts","../../../projects/dashboard-feature/src/lib/components/widgets/chart/jace-dsh-chart.component.ts","../../../projects/dashboard-feature/src/lib/components/widgets/chart/jace-dsh-chart.component.html","../../../projects/dashboard-feature/src/lib/components/widgets/counter/jace-dsh-counter.component.ts","../../../projects/dashboard-feature/src/lib/components/widgets/counter/jace-dsh-counter.component.html","../../../projects/dashboard-feature/src/lib/components/widgets/list/jace-dsh-list.component.ts","../../../projects/dashboard-feature/src/lib/components/widgets/list/jace-dsh-list.component.html","../../../projects/dashboard-feature/src/lib/components/widgets/multiprog/jace-dsh-multiprog.component.ts","../../../projects/dashboard-feature/src/lib/components/widgets/multiprog/jace-dsh-multiprog.component.html","../../../projects/dashboard-feature/src/lib/models/widgets/BaseJaceWidgetModel.ts","../../../projects/dashboard-feature/src/lib/models/widgets/JaceChartWidgetModel.ts","../../../projects/dashboard-feature/src/lib/models/widgets/JaceCounterWidgetModel.ts","../../../projects/dashboard-feature/src/lib/models/widgets/JaceListWidgetModel.ts","../../../projects/dashboard-feature/src/lib/models/widgets/JaceMultiprogWidgetModel.ts","../../../projects/dashboard-feature/src/lib/models/options/DefaultDashboardModuleOptions.ts","../../../projects/dashboard-feature/src/lib/models/externals/SaveJaceDashboardLayoutDTO.ts","../../../projects/dashboard-feature/src/lib/models/externals/JaceWidgetInstanceDetail.ts","../../../projects/dashboard-feature/src/lib/services/DashboardWidgetFactory.ts","../../../projects/dashboard-feature/src/lib/components/dashboard/dashboard.component.ts","../../../projects/dashboard-feature/src/lib/components/dashboard/dashboard.component.html","../../../projects/dashboard-feature/src/lib/models/externals/Repository.ts","../../../projects/dashboard-feature/src/lib/services/dashboard-feature.service.ts","../../../projects/dashboard-feature/src/lib/dashboard-feature.module.ts","../../../projects/dashboard-feature/src/lib/models/config/JaceDashboardConfig.ts","../../../projects/dashboard-feature/src/lib/models/externals/JaceDashboardLayoutAppSearch.ts","../../../projects/dashboard-feature/src/lib/models/externals/JaceDashboardLayoutDetail.ts","../../../projects/dashboard-feature/src/lib/components/widgets/BaseWidgetComponent.ts","../../../projects/dashboard-feature/src/lib/components/widgets/JaceWidgetTypes.ts","../../../projects/dashboard-feature/src/public-api.ts","../../../projects/dashboard-feature/src/esfaenza-dashboard-feature.ts"],"sourcesContent":["import {InjectionToken} from \"@angular/core\";\r\nimport { IDashboardFeatureDataService } from \"./services/IDashboardFeatureDataService\";\r\n\r\n/**\r\n * Token di registrazione della DashboardFeatureService.\r\n * Permette di fare l'override dell'implementazione di default a scopo di test delle widget\r\n */\r\nexport const DSH_DATA_SERVICE: InjectionToken<IDashboardFeatureDataService> = new InjectionToken<IDashboardFeatureDataService>('DSH_DATA_SERVICE');","import {InjectionToken} from \"@angular/core\";\r\nimport { IDashboardModuleOptions } from \"./models/options/IDashboardModuleOptions\";\r\n\r\n\r\nexport const DSH_OPTIONS: InjectionToken<IDashboardModuleOptions> = new InjectionToken<IDashboardModuleOptions>('DSH_MODULE_OPTIONS');","import { Component, EventEmitter, Inject, Input, OnInit, Output, SimpleChanges } from '@angular/core';\r\n\r\nimport { IJaceWidgetModel } from '../../../models/widgets/IJaceWidgetModel';\r\nimport { IWidgetComponent } from '../IWidgetComponent';\r\n\r\nimport { JaceChartWidgetModel } from '../../../models/widgets/JaceChartWidgetModel';\r\nimport { DSH_DATA_SERVICE } from '../../../public-injection-tokens';\r\nimport { IDashboardFeatureDataService } from '../../../services/IDashboardFeatureDataService';\r\n\r\n@Component({\r\n selector: 'jace-dsh-chart',\r\n templateUrl: './jace-dsh-chart.component.html',\r\n styleUrls: ['./jace-dsh-chart.component.css']\r\n})\r\n\r\nexport class JaceChartWidgetComponent implements IWidgetComponent, OnInit {\r\n\r\n model?: JaceChartWidgetModel;\r\n\r\n @Input() DashboardDate!: Date;\r\n @Output() OnRemove = new EventEmitter<string>();\r\n\r\n configuration: boolean = false;\r\n dataReady: boolean = false;\r\n lastdate: string = \"\";\r\n public chartName:string=\"\";\r\n\r\n constructor(@Inject(DSH_DATA_SERVICE) private dshService: IDashboardFeatureDataService) { }\r\n\r\n setWidgetModel(dshBackendId:string,widgetModel: IJaceWidgetModel): void {\r\n this.model = <JaceChartWidgetModel>widgetModel;\r\n if(this.model.backendid === undefined || this.model.backendid==\"default_backend\")\r\n this.model.backendid = dshBackendId;\r\n this.refreshData();\r\n }\r\n\r\n ngOnInit() { }\r\n\r\n ngOnChanges(changes: SimpleChanges) {\r\n //console.log(changes['DashboardDate'].currentValue);\r\n if (changes['DashboardDate'].previousValue)\r\n this.lastdate = changes['DashboardDate'].previousValue.toISOString();\r\n\r\n let curdate: string = \"\";\r\n\r\n if (changes['DashboardDate'].currentValue)\r\n curdate = changes['DashboardDate'].currentValue.toISOString();\r\n //fix per il datetimepicker material che cambia l'oggetto al momento del caricamento\r\n if (this.lastdate != curdate) {\r\n this.lastdate = curdate;\r\n this.refreshData();\r\n }\r\n\r\n }\r\n\r\n refreshData() {\r\n if (!this.model)\r\n return;\r\n const pars: { [key: string]: string } = {};\r\n if(this.DashboardDate)\r\n pars[\"DT\"] = this.DashboardDate.toISOString();\r\n if (this.model.options && Object.keys(this.model.options).length != 0) {\r\n for (let index = 0; index < Object.keys(this.model.options).length; index++) {\r\n const k = Object.keys(this.model.options)[index];\r\n pars[k] = this.model.options[k];\r\n }\r\n }\r\n\r\n this.dshService.GetWidgetData(this.model.backendid,this.model.name, pars).subscribe(data => {\r\n if (this.model) {\r\n this.model.setData(data);\r\n this.chartName = this.model.name;\r\n this.dataReady = true;\r\n }\r\n }\r\n );\r\n }\r\n\r\n removeWidget() {\r\n if (!this.model)\r\n return;\r\n this.OnRemove.emit(this.model.name);\r\n }\r\n\r\n configure() {\r\n if (this.configuration) {\r\n //finito di configurare -> refreshData\r\n this.refreshData();\r\n }\r\n this.configuration = !this.configuration;\r\n }\r\n}","<div class=\"jace-dsh-widget-header {{model?.name}}-header\">\r\n <div class=\"jace-dsh-widget-title\" *ngIf=\"model.title\">\r\n {{model.title}}\r\n </div>\r\n <div class=\"jace-dsh-widget-controls\" *ngIf=\"dataReady\">\r\n <span class=\"transition drag-handler jace-dsh-widget-drag\" *ngIf=\"model.dragEnabled\">\r\n <i class=\"fa fa-arrows-alt\"></i>\r\n </span>\r\n <span class=\"transition jace-dsh-widget-opts\" (click)=\"configure()\">\r\n <i class=\"fa fa-cog\"></i>\r\n </span>\r\n <span (click)=\"removeWidget()\" class=\"transition remove-button jace-dsh-widget-close\">\r\n <i class=\"fa fa-times\"></i>\r\n </span>\r\n </div>\r\n</div>\r\n<div class=\"jace-dsh-widget-body gridster-item-content {{model?.name}}-body\">\r\n <div class=\"jace-dsh-widget-loading\" *ngIf=\"!dataReady\">\r\n <i class=\"fa fa-spinner fa-spin\"></i>\r\n </div>\r\n\r\n <div class=\"jace-dsh-chart-container jace-dsh-widget-slide\"\r\n [ngClass]=\"{'jace-dsh-widget-content-hide':configuration,'jace-dsh-widget-content-show':!configuration}\"\r\n *ngIf=\"dataReady\">\r\n <!-- [Type]=\"Widget.chartType\" -->\r\n <h6 *ngIf=\"model?.queryerror\" class=\"fg-disabled\" style=\"margin-top: 0.5rem;\"><span\r\n class=\"fa fa-times-circle-o\"></span>&nbsp;&nbsp;Error retrieving data</h6>\r\n <es-chart [Legend]=\"model.legend\" [Theme]=\"'dataviz'\" [Type]=\"model.chartType\" [Data]=\"model.chartData\"\r\n [name]=\"chartName\"></es-chart>\r\n </div>\r\n\r\n <div class=\"jace-dsh-widget-settings jace-dsh-widget-slide \"\r\n [ngClass]=\"{'jace-dsh-widget-settings-hide':!configuration,'jace-dsh-widget-settings-show':configuration}\">\r\n <p>Configuration</p>\r\n </div>\r\n</div>","import { ChangeDetectionStrategy, Component, EventEmitter, Inject, Input, OnInit, Output, SimpleChanges } from '@angular/core';\r\n\r\nimport { IJaceWidgetModel } from '../../../models/widgets/IJaceWidgetModel';\r\nimport { IWidgetComponent } from '../IWidgetComponent';\r\nimport { JaceCounterWidgetModel } from '../../../models/widgets/JaceCounterWidgetModel';\r\n\r\nimport { DSH_DATA_SERVICE } from '../../../public-injection-tokens';\r\nimport { IDashboardFeatureDataService } from '../../../services/IDashboardFeatureDataService';\r\n\r\n@Component({\r\n selector: 'jace-dsh-counter',\r\n templateUrl: './jace-dsh-counter.component.html',\r\n styleUrls: ['./jace-dsh-counter.component.css'],\r\n //TODO per online update: scommentare OnPush\r\n //changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\n\r\nexport class JaceCounterWidgetComponent implements IWidgetComponent, OnInit {\r\n\r\n model?: JaceCounterWidgetModel;\r\n\r\n @Input() DashboardDate!: Date;\r\n @Output() OnRemove = new EventEmitter<string>();\r\n\r\n configuration: boolean = false;\r\n dataReady: boolean = false;\r\n lastdate: string = \"\";\r\n\r\n constructor(@Inject(DSH_DATA_SERVICE) private dshService: IDashboardFeatureDataService) { }\r\n\r\n//TODO per online update: importare cdr: ChangeDectectorRef \r\n\r\n setWidgetModel(dshBackendId:string,widgetModel: IJaceWidgetModel): void {\r\n this.model = <JaceCounterWidgetModel>widgetModel;\r\n if(this.model.backendid === undefined || this.model.backendid==\"default_backend\")\r\n this.model.backendid = dshBackendId;\r\n this.refreshData();\r\n }\r\n\r\n ngOnInit() { }\r\n\r\n ngOnChanges(changes: SimpleChanges) {\r\n //console.log(changes['DashboardDate'].currentValue);\r\n if (changes['DashboardDate'].previousValue)\r\n this.lastdate = changes['DashboardDate'].previousValue.toISOString();\r\n\r\n let curdate: string = \"\";\r\n\r\n if (changes['DashboardDate'].currentValue)\r\n curdate = changes['DashboardDate'].currentValue.toISOString();\r\n //fix per il datetimepicker material che cambia l'oggetto al momento del caricamento\r\n if (this.lastdate != curdate) {\r\n this.lastdate = curdate;\r\n this.refreshData();\r\n }\r\n\r\n }\r\n\r\n refreshData() {\r\n if (!this.model)\r\n return;\r\n const pars: { [key: string]: string } = {};\r\n if(this.DashboardDate)\r\n pars[\"DT\"] = this.DashboardDate.toISOString();\r\n if (this.model.options && Object.keys(this.model.options).length != 0) {\r\n for (let index = 0; index < Object.keys(this.model.options).length; index++) {\r\n const k = Object.keys(this.model.options)[index];\r\n pars[k] = this.model.options[k];\r\n }\r\n }\r\n\r\n this.dshService.GetWidgetData(this.model.backendid,this.model.name, pars).subscribe(data => {\r\n if (this.model) {\r\n this.model.setData(data);\r\n \r\n this.dataReady = true;\r\n //TODO per online update: this.cdr.markForCheck(); \r\n }\r\n }\r\n );\r\n }\r\n\r\n removeWidget() {\r\n if (!this.model)\r\n return;\r\n this.OnRemove.emit(this.model.name);\r\n }\r\n\r\n configure() {\r\n if (this.configuration) {\r\n //finito di configurare -> refreshData\r\n this.refreshData();\r\n }\r\n this.configuration = !this.configuration;\r\n }\r\n}","<div class=\"jace-dsh-widget-header {{model?.name}}-header\">\r\n <div class=\"jace-dsh-widget-title\" *ngIf=\"model.title\">\r\n {{model.title}}\r\n </div>\r\n <div class=\"jace-dsh-widget-controls\" *ngIf=\"dataReady\">\r\n <span class=\"transition drag-handler jace-dsh-widget-drag\" *ngIf=\"model.dragEnabled\">\r\n <i class=\"fa fa-arrows-alt\"></i>\r\n </span>\r\n <span class=\"transition jace-dsh-widget-opts\" (click)=\"configure()\">\r\n <i class=\"fa fa-cog\"></i>\r\n </span>\r\n <span (click)=\"removeWidget()\" class=\"transition remove-button jace-dsh-widget-close\">\r\n <i class=\"fa fa-times\"></i>\r\n </span>\r\n </div>\r\n</div>\r\n<div class=\"jace-dsh-widget-body gridster-item-content {{model?.name}}-body\">\r\n <div class=\"jace-dsh-widget-loading\" *ngIf=\"!dataReady\">\r\n <i class=\"fa fa-spinner fa-spin\"></i>\r\n </div>\r\n <div class=\"jace-dsh-counter-body jace-dsh-widget-slide\"\r\n [ngClass]=\"{'jace-dsh-widget-content-hide':configuration,'jace-dsh-widget-content-show':!configuration}\"\r\n *ngIf=\"dataReady\">\r\n <i class=\"jace-dsh-counter-icon fa fa-2x\" [ngClass]=\"[ model.icon ? model.icon : '']\" *ngIf=\"model.icon\"></i>\r\n <div class=\"jace-dsh-counter-super\">{{model.superText}}</div>\r\n <div class=\"jace-dsh-counter-value\"><span>{{model.value}}</span> <span\r\n class=\"jace-dsh-counter-unit\">{{model.unit}}</span> </div>\r\n\r\n <div class=\"jace-dsh-counter-sub\">{{model.subText}}</div>\r\n </div>\r\n\r\n <div class=\"jace-dsh-widget-settings jace-dsh-widget-slide \"\r\n [ngClass]=\"{'jace-dsh-widget-settings-hide':!configuration,'jace-dsh-widget-settings-show':configuration}\">\r\n <p>Configuration</p>\r\n </div>\r\n</div>","import { Component, EventEmitter, Inject, Input, OnInit, Output, SimpleChanges } from '@angular/core';\r\nimport { IJaceWidgetModel } from '../../../models/widgets/IJaceWidgetModel';\r\nimport { IWidgetComponent } from '../IWidgetComponent';\r\nimport { JaceListItemWidget, JaceListWidgetModel } from '../../../models/widgets/JaceListWidgetModel';\r\nimport { Router } from '@angular/router';\r\nimport { DSH_DATA_SERVICE } from '../../../public-injection-tokens';\r\nimport { IDashboardFeatureDataService } from '../../../services/IDashboardFeatureDataService';\r\n\r\n@Component({\r\n selector: 'jace-dsh-list',\r\n templateUrl: './jace-dsh-list.component.html',\r\n styleUrls: ['./jace-dsh-list.component.css']\r\n})\r\n\r\nexport class JaceListWidgetComponent implements IWidgetComponent, OnInit {\r\n\r\n model?: JaceListWidgetModel;\r\n\r\n @Input() DashboardDate!: Date;\r\n @Output() OnRemove = new EventEmitter<string>();\r\n\r\n configuration: boolean = false;\r\n dataReady: boolean = false;\r\n lastdate: string = \"\";\r\n\r\n constructor(@Inject(DSH_DATA_SERVICE) private dshService: IDashboardFeatureDataService,private router: Router) { }\r\n\r\n setWidgetModel(dshBackendId:string,widgetModel: IJaceWidgetModel): void {\r\n this.model = <JaceListWidgetModel>widgetModel;\r\n if(this.model.backendid === undefined || this.model.backendid==\"default_backend\")\r\n this.model.backendid = dshBackendId;\r\n this.refreshData();\r\n }\r\n\r\n ngOnInit() { }\r\n\r\n ngOnChanges(changes: SimpleChanges) {\r\n //console.log(changes['DashboardDate'].currentValue);\r\n if (changes['DashboardDate'].previousValue)\r\n this.lastdate = changes['DashboardDate'].previousValue.toISOString();\r\n\r\n let curdate: string = \"\";\r\n\r\n if (changes['DashboardDate'].currentValue)\r\n curdate = changes['DashboardDate'].currentValue.toISOString();\r\n //fix per il datetimepicker material che cambia l'oggetto al momento del caricamento\r\n if (this.lastdate != curdate) {\r\n this.lastdate = curdate;\r\n this.refreshData();\r\n }\r\n\r\n }\r\n\r\n refreshData() {\r\n if (!this.model)\r\n return;\r\n const pars: { [key: string]: string } = {};\r\n if(this.DashboardDate)\r\n pars[\"DT\"] = this.DashboardDate.toISOString();\r\n if (this.model.options && Object.keys(this.model.options).length != 0) {\r\n for (let index = 0; index < Object.keys(this.model.options).length; index++) {\r\n const k = Object.keys(this.model.options)[index];\r\n pars[k] = this.model.options[k];\r\n }\r\n }\r\n\r\n this.dshService.GetWidgetData(this.model.backendid, this.model.name, pars).subscribe(data => {\r\n if (this.model) {\r\n this.model.setData(data);\r\n this.dataReady = true;\r\n }\r\n }\r\n );\r\n }\r\n\r\n removeWidget() {\r\n if (!this.model)\r\n return;\r\n this.OnRemove.emit(this.model.name);\r\n }\r\n\r\n itemClicked(item: JaceListItemWidget){\r\n if(item.link)\r\n {\r\n //naviga al link\r\n let to = item.link;\r\n let par:{[key:string]:any} = {};\r\n if(item.id && item.idParamName){ \r\n par[item.idParamName] = item.id;\r\n }\r\n \r\n this.router.navigate([to, par]);\r\n }\r\n }\r\n\r\n configure() {\r\n if (this.configuration) {\r\n //finito di configurare -> refreshData\r\n this.refreshData();\r\n }\r\n this.configuration = !this.configuration;\r\n }\r\n}","<div class=\"jace-dsh-widget-header {{model?.name}}-header\">\r\n <div class=\"jace-dsh-widget-title\" *ngIf=\"model.title\">\r\n {{model.title}}\r\n </div>\r\n <div class=\"jace-dsh-widget-controls\" *ngIf=\"dataReady\">\r\n <span class=\"transition drag-handler jace-dsh-widget-drag\" *ngIf=\"model.dragEnabled\">\r\n <i class=\"fa fa-arrows-alt\"></i>\r\n </span>\r\n <span class=\"transition jace-dsh-widget-opts\" (click)=\"configure()\">\r\n <i class=\"fa fa-cog\"></i>\r\n </span>\r\n <span (click)=\"removeWidget()\" class=\"transition remove-button jace-dsh-widget-close\">\r\n <i class=\"fa fa-times\"></i>\r\n </span>\r\n </div>\r\n</div>\r\n<div class=\"jace-dsh-widget-body gridster-item-content {{model?.name}}-body\">\r\n <div class=\"jace-dsh-widget-loading\" *ngIf=\"!dataReady\">\r\n <i class=\"fa fa-spinner fa-spin\"></i>\r\n </div>\r\n <div class=\"jace-dsh-list-body jace-dsh-widget-slide\"\r\n [ngClass]=\"{'jace-dsh-widget-content-hide':configuration,'jace-dsh-widget-content-show':!configuration}\"\r\n *ngIf=\"dataReady\">\r\n <div class=\"jace-dsh-list-super-text\" *ngIf=\"model.superText\">{{model.superText}}</div>\r\n <div class=\"jace-dsh-list-item\" (click)=\"itemClicked(item)\" [class.jace-dsh-list-link]=\"item.link\"\r\n *ngFor=\"let item of model.items\">\r\n <div>\r\n <span class=\"jace-dsh-list-item-id\" *ngIf=\"item.id && item.showId\">{{item.id}}</span>\r\n <span>{{item.description}}</span>\r\n </div>\r\n <div *ngIf=\"item.subline\">\r\n <span class=\"jace-dsh-list-item-subline\">{{item.subline}}</span>\r\n </div>\r\n </div>\r\n\r\n </div>\r\n <div class=\"jace-dsh-widget-settings jace-dsh-widget-slide \"\r\n [ngClass]=\"{'jace-dsh-widget-settings-hide':!configuration,'jace-dsh-widget-settings-show':configuration}\">\r\n <p>Configuration</p>\r\n </div>\r\n</div>","import { Component, EventEmitter, Inject, Input, OnInit, Output, SimpleChanges } from '@angular/core';\r\n\r\nimport { IJaceWidgetModel } from '../../../models/widgets/IJaceWidgetModel';\r\nimport { IWidgetComponent } from '../IWidgetComponent';\r\n\r\nimport { Router } from '@angular/router';\r\nimport { JaceMultiprogWidgetModel } from '../../../models/widgets/JaceMultiprogWidgetModel';\r\nimport { DSH_DATA_SERVICE } from '../../../public-injection-tokens';\r\nimport { IDashboardFeatureDataService } from '../../../services/IDashboardFeatureDataService';\r\n\r\n@Component({\r\n selector: 'jace-dsh-multiprog',\r\n templateUrl: './jace-dsh-multiprog.component.html',\r\n styleUrls: ['./jace-dsh-multiprog.component.css'],\r\n})\r\nexport class JaceMultiprogWidgetComponent implements IWidgetComponent, OnInit {\r\n\r\n model?: JaceMultiprogWidgetModel;\r\n\r\n @Input() DashboardDate!: Date;\r\n @Output() OnRemove = new EventEmitter<string>();\r\n\r\n configuration: boolean = false;\r\n dataReady: boolean = false;\r\n lastdate: string = \"\";\r\n\r\n constructor(@Inject(DSH_DATA_SERVICE) private dshService: IDashboardFeatureDataService,private router: Router) { }\r\n\r\n setWidgetModel(dshBackendId:string,widgetModel: IJaceWidgetModel): void {\r\n this.model = <JaceMultiprogWidgetModel>widgetModel;\r\n if(this.model.backendid === undefined || this.model.backendid==\"default_backend\")\r\n this.model.backendid = dshBackendId;\r\n this.refreshData();\r\n }\r\n\r\n ngOnInit() { }\r\n\r\n ngOnChanges(changes: SimpleChanges) {\r\n //console.log(changes['DashboardDate'].currentValue);\r\n if (changes['DashboardDate'].previousValue)\r\n this.lastdate = changes['DashboardDate'].previousValue.toISOString();\r\n\r\n let curdate: string = \"\";\r\n\r\n if (changes['DashboardDate'].currentValue)\r\n curdate = changes['DashboardDate'].currentValue.toISOString();\r\n //fix per il datetimepicker material che cambia l'oggetto al momento del caricamento\r\n if (this.lastdate != curdate) {\r\n this.lastdate = curdate;\r\n this.refreshData();\r\n }\r\n\r\n }\r\n\r\n refreshData() {\r\n if (!this.model)\r\n return;\r\n const pars: { [key: string]: string } = {};\r\n if(this.DashboardDate)\r\n pars[\"DT\"] = this.DashboardDate.toISOString();\r\n if (this.model.options && Object.keys(this.model.options).length != 0) {\r\n for (let index = 0; index < Object.keys(this.model.options).length; index++) {\r\n const k = Object.keys(this.model.options)[index];\r\n pars[k] = this.model.options[k];\r\n }\r\n }\r\n\r\n this.dshService.GetWidgetData(this.model.backendid, this.model.name, pars).subscribe(data => {\r\n if (this.model) {\r\n this.model.setData(data);\r\n this.dataReady = true;\r\n }\r\n }\r\n );\r\n }\r\n\r\n removeWidget() {\r\n if (!this.model)\r\n return;\r\n this.OnRemove.emit(this.model.name);\r\n }\r\n\r\n\r\n configure() {\r\n if (this.configuration) {\r\n //finito di configurare -> refreshData\r\n this.refreshData();\r\n }\r\n this.configuration = !this.configuration;\r\n }\r\n}","<div class=\"jace-dsh-widget-header {{model?.name}}-header\">\r\n <div class=\"jace-dsh-widget-title\" *ngIf=\"model.title\">\r\n {{model.title}}\r\n </div>\r\n <div class=\"jace-dsh-widget-controls\" *ngIf=\"dataReady\">\r\n <span class=\"transition drag-handler jace-dsh-widget-drag\" *ngIf=\"model.dragEnabled\">\r\n <i class=\"fa fa-arrows-alt\"></i>\r\n </span>\r\n <span class=\"transition jace-dsh-widget-opts\" (click)=\"configure()\">\r\n <i class=\"fa fa-cog\"></i>\r\n </span>\r\n <span (click)=\"removeWidget()\" class=\"transition remove-button jace-dsh-widget-close\">\r\n <i class=\"fa fa-times\"></i>\r\n </span>\r\n\r\n </div>\r\n</div>\r\n<div class=\"jace-dsh-widget-body gridster-item-content {{model?.name}}-body\">\r\n <div class=\"jace-dsh-widget-loading\" *ngIf=\"!dataReady\">\r\n <i class=\"fa fa-spinner\"></i>\r\n </div>\r\n <div class=\"jace-dsh-multiprog-container jace-dsh-widget-slide\"\r\n [ngClass]=\"{'jace-dsh-widget-content-hide':configuration,'jace-dsh-widget-content-show':!configuration}\"\r\n *ngIf=\"dataReady\">\r\n <div *ngFor=\"let item of model.progressTitles; let i = index\" class=\"jace-dsh-multiprog-progress\">\r\n <div class=\"jace-dsh-multiprog-title\">{{item}}</div>\r\n <circle-progress [percent]=\"model.progressValues[i]\" [showSubtitle]=false [radius]=\"36\"\r\n [outerStrokeWidth]=\"4\" [innerStrokeWidth]=\"2\" [outerStrokeColor]=\"'#7489AA'\"\r\n [innerStrokeColor]=\"'#EFECCA'\" [animation]=\"true\" [animationDuration]=\"300\" [showTitle]=\"true\"\r\n *ngIf=\"model.circleProgress\"></circle-progress>\r\n <!-- [title] = \"model.progressValues[i]|number||''\" -->\r\n <mat-progress-bar [value]=\"model.progressValues[i]\" [mode]=\"'determinate'\" *ngIf=\"!model.circleProgress\">\r\n </mat-progress-bar>\r\n <!-- <span>{{item}}</span>:<span>{{model.progressValues[i]}}</span> -->\r\n </div>\r\n </div>\r\n <div class=\"jace-dsh-widget-settings jace-dsh-widget-slide \"\r\n [ngClass]=\"{'jace-dsh-widget-settings-hide':!configuration,'jace-dsh-widget-settings-show':configuration}\">\r\n <p>Configuration</p>\r\n </div>\r\n</div>","import { GridsterItem, GridsterItemComponentInterface } from \"angular-gridster2\";\r\nimport { JaceWidgetInstanceDetail } from \"../externals/JaceWidgetInstanceDetail\";\r\nimport { IJaceWidgetModel } from \"./IJaceWidgetModel\";\r\n\r\nexport abstract class BaseJaceWidgetModel implements IJaceWidgetModel{\r\n \r\n name!: string;\r\n title?: string| undefined;\r\n widgetType!: string;\r\n dataError: boolean;\r\n options?: { [key: string]: any; }| undefined;\r\n backendid: string = \"default_backend\";\r\n\r\n x!: number;\r\n y!: number;\r\n //grid overrides\r\n rows!: number;\r\n cols!: number;\r\n resizeEnabled?: boolean = false;\r\n layerIndex?: number | undefined;\r\n initCallback?: ((item: GridsterItem, itemComponent: GridsterItemComponentInterface) => void) | undefined;\r\n dragEnabled?: boolean | undefined;\r\n compactEnabled?: boolean | undefined;\r\n maxItemRows?: number | undefined;\r\n minItemRows?: number | undefined;\r\n maxItemCols?: number | undefined;\r\n minItemCols?: number | undefined;\r\n minItemArea?: number | undefined;\r\n maxItemArea?: number | undefined;\r\n\r\n [propName: string]: any;\r\n\r\n constructor(){\r\n this.dataError = false;\r\n this.options = {};\r\n }\r\n\r\n configureFromInstanceDetails(details: JaceWidgetInstanceDetail): void {\r\n this.name = details.name;\r\n this.widgetType = details.type;\r\n this.title = details.title;\r\n this.x = details.x;\r\n this.y = details.y;\r\n this.cols = details.cols;\r\n this.rows = details.rows;\r\n this.compactEnabled = details.compactenabled;\r\n this.dragEnabled = details.dragenabled;\r\n this.options = details.options;\r\n this.dataError = details.queryerror;\r\n this.resizeEnabled = details.resizeenabled;\r\n this.backendid = details.backendid??\"default_backend\";\r\n }\r\n abstract setData(data?: any): void ;\r\n}","\r\nimport { JaceWidgetInstanceDetail } from \"../externals/JaceWidgetInstanceDetail\";\r\nimport { BaseJaceWidgetModel } from \"./BaseJaceWidgetModel\";\r\n\r\nexport class JaceChartWidgetModel extends BaseJaceWidgetModel {\r\n \r\n chartType: 'pie' | 'line' | 'vertical' | 'vertical-2d' | 'vertical-stacked'='line';\r\n legend: boolean=false;\r\n\r\n //LineChartData | PieChartData | Vertical2DChartData | VerticalChartData | VerticalStackedChartData | any;\r\n chartData: any;\r\n\r\n constructor() {\r\n super();\r\n this.widgetType= \"CHART\"; \r\n }\r\n\r\n setData(data?: any): void {\r\n if (!data)\r\n return;\r\n\r\n if (data['queryerror'])\r\n this.dataError = data['queryerror'];\r\n\r\n if (data['legend'])\r\n this.legend = data['legend'];\r\n else\r\n this.legend = true;\r\n if (data['charttype'])\r\n this.chartType = data['charttype'];\r\n\r\n if (data['chartdata']) {\r\n this.chartData = data['chartdata'];\r\n }\r\n if (this.options && this.options['legend'] == undefined)\r\n this.options['legend'] = true;\r\n }\r\n\r\n}","\r\nimport { BaseJaceWidgetModel } from \"./BaseJaceWidgetModel\";\r\nimport { IJaceWidgetModel } from \"./IJaceWidgetModel\";\r\n\r\nexport class JaceCounterWidgetModel extends BaseJaceWidgetModel {\r\n\r\n superText?: string=undefined;\r\n subText?: string = undefined;\r\n value: number = 0; \r\n icon?: string=undefined;\r\n unit?: string=undefined;\r\n \r\n\r\n constructor() {\r\n super();\r\n this.widgetType= \"COUNTER\"; \r\n }\r\n \r\n\r\n setData(data?: any): void {\r\n if (data['queryerror'])\r\n this.dataError = data['queryerror'];\r\n this.superText = data['supertext'];\r\n this.subText = data['subtext'];\r\n this.value = data['value'];\r\n this.icon = data['icon'];\r\n this.options = data['options'];\r\n this.unit = data['unit'];\r\n }\r\n\r\n \r\n\r\n\r\n\r\n}","import { BaseJaceWidgetModel } from \"./BaseJaceWidgetModel\";\r\n\r\nexport class JaceListItemWidget {\r\n id?: any;\r\n showId: boolean;\r\n idParamName?: string;\r\n description!: string;\r\n subline?: string;\r\n classes?: string;\r\n link?: string;\r\n}\r\nexport class JaceListWidgetModel extends BaseJaceWidgetModel{\r\n \r\n superText?: string = undefined;\r\n items: JaceListItemWidget[] = [];\r\n\r\n constructor() {\r\n super();\r\n this.widgetType= \"LIST\"; \r\n }\r\n\r\n\r\n setData(data?: any) {\r\n if (!data)\r\n return;\r\n if (data['queryerror'])\r\n this.dataError = data['queryerror'];\r\n this.superText = data['supertext'];\r\n if (data['items']) {\r\n const d = data['items'] as Array<any>;\r\n this.items = [];\r\n for (let index = 0; index < d.length; index++) {\r\n const item = new JaceListItemWidget();\r\n const element = d[index];\r\n\r\n if (element['id'])\r\n item.id = element['id'];\r\n\r\n if (element['idparamname'])\r\n item.idParamName = element['idparamname'];\r\n\r\n if (element['link'])\r\n item.link = element['link'];\r\n\r\n if (element['subline'])\r\n item.subline = element['subline'];\r\n\r\n if (element['classes'])\r\n item.classes = element['classes'];\r\n\r\n item.description = element.description;\r\n this.items.push(item);\r\n }\r\n }\r\n }\r\n\r\n}","import { BaseJaceWidgetModel } from \"./BaseJaceWidgetModel\";\r\n\r\n\r\nexport class JaceMultiprogWidgetModel extends BaseJaceWidgetModel {\r\n \r\n resizeEnabled: boolean = true;\r\n\r\n progressTitles: string[]=[];\r\n progressValues: number[]=[];\r\n\r\n circleProgress: boolean=false;\r\n \r\n constructor() {\r\n super();\r\n this.widgetType= \"MULTIPROGRESS\"; \r\n }\r\n\r\n setData(data?: any): void {\r\n\r\n if (data['queryerror'])\r\n this.dataError = data['queryerror'];\r\n\r\n this.progressTitles = data['progresstitles'] ?? [];\r\n this.progressValues = data['progressvalues'] ?? [];\r\n this.circleProgress = data['circleprogress'];\r\n this.options = data['options'] ?? {};\r\n\r\n\r\n if (this.circleProgress === undefined)\r\n this.circleProgress = true;\r\n\r\n if (this.cols === undefined && this.progressValues) {\r\n if (this.progressValues.length == 1)\r\n this.cols = 1;\r\n else\r\n this.cols = 2;\r\n }\r\n }\r\n\r\n}","import { JaceChartWidgetComponent } from \"../../components/widgets/chart/jace-dsh-chart.component\";\r\nimport { JaceCounterWidgetComponent } from \"../../components/widgets/counter/jace-dsh-counter.component\";\r\nimport { JaceListWidgetComponent } from \"../../components/widgets/list/jace-dsh-list.component\";\r\nimport { JaceMultiprogWidgetComponent } from \"../../components/widgets/multiprog/jace-dsh-multiprog.component\";\r\nimport { JaceChartWidgetModel } from \"../widgets/JaceChartWidgetModel\";\r\nimport { JaceCounterWidgetModel } from \"../widgets/JaceCounterWidgetModel\";\r\nimport { JaceListWidgetModel } from \"../widgets/JaceListWidgetModel\";\r\nimport { JaceMultiprogWidgetModel } from \"../widgets/JaceMultiprogWidgetModel\";\r\nimport { IDashboardModuleOptions } from \"./IDashboardModuleOptions\";\r\nimport { IWidgetTypeConfig } from \"./IWidgetTypeConfig\";\r\n\r\nexport class DefaultDashboardModuleOptions implements IDashboardModuleOptions{\r\n widgetTypes!: IWidgetTypeConfig[];\r\n\r\n constructor(){\r\n this.widgetTypes = [\r\n {\r\n name: \"COUNTER\",\r\n component: JaceCounterWidgetComponent,\r\n model: JaceCounterWidgetModel\r\n },\r\n {\r\n name: \"LIST\",\r\n component: JaceListWidgetComponent,\r\n model: JaceListWidgetModel\r\n },\r\n {\r\n name: \"CHART\",\r\n component: JaceChartWidgetComponent,\r\n model: JaceChartWidgetModel\r\n },\r\n {\r\n name: \"MULTIPROGRESS\",\r\n component: JaceMultiprogWidgetComponent,\r\n model: JaceMultiprogWidgetModel\r\n }\r\n ];\r\n }\r\n}","import { JaceWidgetInstanceDetail } from \"./JaceWidgetInstanceDetail\";\r\n\r\n\r\nexport class SaveJaceDashboardLayoutDTO {\r\n backendid:string=\"default_backend\";\r\n name: string;\r\n widgets!: JaceWidgetInstanceDetail[];\r\n\r\n}","//Definizione della widget restituita dal backend\r\nexport class JaceWidgetInstanceDetail {\r\n id?: number;\r\n name!: string;\r\n title?: string;\r\n type!: string;\r\n x!: number;\r\n y!: number;\r\n cols!: number;\r\n rows!: number;\r\n backendid?: string;\r\n \r\n dragenabled?: boolean;\r\n resizeenabled?: boolean;\r\n compactenabled?: boolean; \r\n options?: { [key: string]: any };\r\n queryerror: boolean = false;\r\n }","import { ComponentRef, Injectable, ViewContainerRef,ComponentFactoryResolver } from '@angular/core';\r\nimport { IWidgetComponent } from '../components/widgets/IWidgetComponent';\r\nimport { JaceDashboardConfig } from '../models/config/JaceDashboardConfig';\r\nimport { JaceWidgetInstanceDetail } from '../models/externals/JaceWidgetInstanceDetail';\r\nimport { IJaceWidgetModel } from '../models/widgets/IJaceWidgetModel';\r\nimport { IDashboardModuleOptions } from '../models/options/IDashboardModuleOptions';\r\nimport { IWidgetTypeConfig } from '../models/options/IWidgetTypeConfig';\r\nimport { Type } from '@angular/compiler';\r\nimport { DashboardFeatureModule } from '../dashboard-feature.module';\r\nimport { DashboardComponent } from '../../public-api';\r\n\r\n\r\nexport interface IConstructableModel<T> {\r\n new(): T;\r\n}\r\n/**NOTA \r\n* per essere sicuro che la Factory venga creata dall'injector dei moduli lazy nel template di FE e quindi sappia come creare i componenti dinamici,\r\n* al momento è dichiarata con provideIn: null in modo da 'costringere' ad esplicitarla nei provider del proprio modulo\r\n* dove si vuole usare la dashboard\r\n*\r\n* @NgModule({\r\n* imports: [...MODULES],\r\n* declarations: [...COMPONENTS], \r\n* providers: [\r\n* // url backend per la dashboard\r\n* { provide: DSH_BACKEND_URL, useValue: myconfig.BACKEND_URL},\r\n* ==> DashboardWidgetFactory\r\n* ]\r\n* })\r\n* export class MyLazyModule {}\r\n*\r\n* sperabilmente in futuro (ng12+ con Ivy) la si potrà dichiarare provideIn: root se si supera il problema dei componenti dinamici\r\n */\r\n\r\n//singleton\r\n@Injectable({ providedIn: null})\r\nexport class DashboardWidgetFactory {\r\n\r\n types: { [name: string]: IWidgetTypeConfig } = {};\r\n\r\n //verione ng 13\r\n //constructor() { }\r\n\r\n constructor(private componentFactoryResolver: ComponentFactoryResolver) { }\r\n\r\n\r\n addOption(option: IDashboardModuleOptions) {\r\n\r\n if (option.widgetTypes) {\r\n option.widgetTypes.forEach((o) => {\r\n this.types[o.name] = o;\r\n })\r\n }\r\n }\r\n\r\n //TODO\r\n //versione ng 13+\r\n /* resolveComponent(type: string, vcr: ViewContainerRef): ComponentRef<IWidgetComponent> | null {\r\n\r\n if (!this.types)\r\n return null;\r\n\r\n let t = this.types[type];\r\n\r\n if (!t)\r\n return null;\r\n\r\n let componentRef: ComponentRef<IWidgetComponent> = vcr.createComponent(t.component);\r\n\r\n return componentRef;\r\n } */\r\n \r\n /**\r\n * Versione ng11 della creazione dei componenti dinamici delle widget\r\n * @param type \r\n * @param vcr \r\n * @returns \r\n */\r\n resolveComponent(type: string, vcr: ViewContainerRef): ComponentRef<IWidgetComponent> | null {\r\n\r\n if (!this.types)\r\n return null;\r\n\r\n let t = this.types[type];\r\n\r\n if (!t)\r\n return null;\r\n //DEPRECATO dopo ng11: è stato tolto il meccanismo dei ComponentFactory per i componenti dinamici\r\n let cf = this.componentFactoryResolver.resolveComponentFactory(t.component);\r\n let componentRef: ComponentRef<IWidgetComponent> = vcr.createComponent(cf);\r\n\r\n return componentRef;\r\n }\r\n\r\n resolveDefinition(type: string, details: JaceWidgetInstanceDetail): IJaceWidgetModel | null {\r\n\r\n if (!this.types)\r\n return null;\r\n\r\n let t = this.types[type];\r\n\r\n if (!t)\r\n return null;\r\n\r\n let definitionInstance = this.createInstance(t.model);\r\n definitionInstance.configureFromInstanceDetails(details);\r\n\r\n return definitionInstance;\r\n }\r\n\r\n private createInstance<T extends IJaceWidgetModel>(type: IConstructableModel<T>): T {\r\n return new type();\r\n }\r\n\r\n}","import { AfterViewChecked, AfterViewInit, ChangeDetectionStrategy, ChangeDetectorRef, Component, ComponentRef, Inject, Input, OnChanges, OnDestroy, OnInit, QueryList, SimpleChanges, ViewChildren, ViewContainerRef, ViewEncapsulation } from \"@angular/core\";\r\nimport { JaceDashboardConfig } from \"../../models/config/JaceDashboardConfig\";\r\nimport { IJaceWidgetModel } from \"../../models/widgets/IJaceWidgetModel\";\r\nimport { InboundMessageTypes, InterComService } from \"@esfaenza/extensions\";\r\n\r\nimport { LocalizationService } from \"@esfaenza/localizations\";\r\nimport { ActivatedRoute } from \"@angular/router\";\r\nimport { SaveJaceDashboardLayoutDTO } from \"../../models/externals/SaveJaceDashboardLayoutDTO\";\r\nimport { JaceWidgetInstanceDetail } from \"../../models/externals/JaceWidgetInstanceDetail\";\r\nimport { JaceDashboardLayoutDetail } from \"../../models/externals/JaceDashboardLayoutDetail\";\r\nimport { DashboardWidgetFactory } from \"../../services/DashboardWidgetFactory\";\r\nimport { interval, scheduled, Subject, Subscription, timer } from \"rxjs\";\r\nimport { delay, map, take, takeUntil } from \"rxjs/operators\";\r\nimport { IWidgetComponent } from \"../widgets/IWidgetComponent\";\r\nimport { DSH_DATA_SERVICE } from \"../../public-injection-tokens\";\r\nimport { IDashboardFeatureDataService } from \"../../services/IDashboardFeatureDataService\";\r\n\r\n/**\r\n * Componente di base che rappresenta una dashboard.\r\n * Utilizza Gridster2 per il layout delle widget [Gridster2](https://tiberiuzuld.github.io/angular-gridster2/)\r\n */\r\n@Component({\r\n selector: 'es-dashboard',\r\n encapsulation: ViewEncapsulation.None,\r\n templateUrl: './dashboard.component.html',\r\n styleUrls: ['./dashboard.component.css']\r\n})\r\nexport class DashboardComponent implements OnInit, AfterViewInit, OnDestroy, OnChanges {\r\n /**\r\n * Configurazione di questa dashboard.\r\n * Contiene anche le configurazioni di layout di Gridster2\r\n */\r\n @Input() Configuration!: JaceDashboardConfig;\r\n\r\n public dashboardDate = new Date();\r\n public dashboardLayout?: JaceDashboardLayoutDetail;\r\n\r\n widgetDefinitions: (IJaceWidgetModel | null)[] = [];\r\n\r\n changesSub?: Subscription;\r\n\r\n trackedSubscriptions: Subscription[] = [];\r\n\r\n readonly destroySignal$: Subject<void> = new Subject<void>();\r\n\r\n @ViewChildren('grid_item', { read: ViewContainerRef }) gridItemRefs!: QueryList<ViewContainerRef>;\r\n\r\n constructor(\r\n @Inject(DSH_DATA_SERVICE) private dshService: IDashboardFeatureDataService,\r\n private intercom: InterComService,\r\n private route: ActivatedRoute,\r\n private cmpFactory: DashboardWidgetFactory,\r\n private cdr: ChangeDetectorRef\r\n ) {\r\n this.intercom.send(InboundMessageTypes.Navigation, { sub: false, routeTitle: this.route.snapshot.data[\"title\"] });\r\n }\r\n\r\n public ngOnInit() { }\r\n\r\n ngAfterViewInit(): void {\r\n //qui this.gridItemRefs è 'riempito'\r\n // sottoscrivo changes che sparerà tutte le volte che ngFor si aggiorna (ovvero quando cambia dashboard)\r\n this.changesSub = this.gridItemRefs.changes.pipe(\r\n takeUntil(this.destroySignal$)\r\n ).subscribe((comps: QueryList<ViewContainerRef>) => {\r\n this.renderLayout(comps);\r\n });\r\n //prima volta\r\n\r\n //setTimeout(()=>this.reloadData(),500);\r\n this.trackedSubscriptions.push(timer(500).pipe(\r\n takeUntil(this.destroySignal$),\r\n map(() => this.reloadData())\r\n ).subscribe()\r\n );\r\n }\r\n\r\n ngOnDestroy(): void {\r\n //unsubscribe dalle changes dei viewref\r\n if (this.changesSub)\r\n this.changesSub.unsubscribe();\r\n\r\n this.clearTrackedSubscriptions();\r\n\r\n this.destroySignal$.next();\r\n this.destroySignal$.complete();\r\n }\r\n\r\n clearTrackedSubscriptions() {\r\n if (this.trackedSubscriptions) {\r\n for (let index = 0; index < this.trackedSubscriptions.length; index++) {\r\n const element = this.trackedSubscriptions[index];\r\n element.unsubscribe();\r\n }\r\n this.trackedSubscriptions = [];\r\n }\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges) {\r\n //occhio: arriva prima di ngAfterViewInit\r\n if (changes.Configuration) {\r\n //appena ho configuration \r\n console.log(changes.Configuration);\r\n // la prima volta l'ho già fatta alla creazione del componente\r\n if(!changes.Configuration.firstChange){\r\n this.reloadData();\r\n }\r\n }\r\n }\r\n\r\n reloadData() {\r\n if (!this.Configuration)\r\n return;\r\n\r\n this.dshService.GetUserDashboard(this.Configuration.backendId, this.Configuration.accountId, this.Configuration.dashboardName).pipe(\r\n takeUntil(this.destroySignal$)\r\n ).subscribe(c => {\r\n this.dashboardLayout = c;\r\n this.widgetDefinitions = c.widgets.map(i => {\r\n return this.cmpFactory.resolveDefinition(i.type, i)\r\n });\r\n });\r\n }\r\n\r\n removeItem(widgetName: string) {\r\n if (!this.dashboardLayout)\r\n return;\r\n let idx = this.dashboardLayout.widgets.findIndex(s => s.name == widgetName);\r\n this.widgetDefinitions.splice(idx, 1);\r\n }\r\n\r\n saveDashboard() {\r\n if (!this.dashboardLayout)\r\n return;\r\n const dto = new SaveJaceDashboardLayoutDTO();\r\n dto.backendid = this.Configuration.backendId;\r\n dto.widgets = [];\r\n for (let index = 0; index < this.widgetDefinitions.length; index++) {\r\n const w: IJaceWidgetModel | null = this.widgetDefinitions[index];\r\n if (w == null)\r\n continue;\r\n let v = new JaceWidgetInstanceDetail();\r\n v.id = w.id;\r\n v.name = w.name;\r\n v.x = w.x;\r\n v.y = w.y;\r\n v.cols = w.cols;\r\n v.rows = w.rows;\r\n v.compactenabled = w.compactEnabled;\r\n v.dragenabled = w.dragEnabled;\r\n v.resizeenabled = w.resizeEnabled;\r\n v.type = w.widgetType;\r\n v.title = w.title;\r\n v.options = w.options;\r\n dto.widgets.push(v);\r\n }\r\n this.dshService.SaveUserDashboard(dto).subscribe(res => {\r\n if (res.success)\r\n console.log('Dashboard saved');\r\n });\r\n }\r\n\r\n renderLayout(comps: QueryList<ViewContainerRef>) {\r\n this.clearTrackedSubscriptions();\r\n\r\n comps.map((host, index) => {\r\n const vcr = host;\r\n vcr.clear();\r\n const widgetData = this.widgetDefinitions[index];\r\n\r\n if (!widgetData || !widgetData.widgetType)\r\n return;\r\n\r\n let componentRef: ComponentRef<IWidgetComponent> | null;\r\n componentRef = this.cmpFactory.resolveComponent(widgetData?.widgetType, vcr);\r\n\r\n if (!componentRef) {\r\n console.log(`Tipo widget sconosciuto ${widgetData.widgetType}`);\r\n return;\r\n }\r\n\r\n //setta l'input della data\r\n if (this.Configuration.showDateInput)\r\n componentRef.instance.DashboardDate = this.dashboardDate;\r\n\r\n //setta il modello\r\n componentRef.instance.setWidgetModel(this.Configuration.backendId, widgetData);\r\n\r\n //setta la callback per OnRemove\r\n let s = componentRef.instance.OnRemove.pipe(\r\n takeUntil(this.destroySignal$)\r\n ).subscribe(name => this.removeItem(name));\r\n this.trackedSubscriptions.push(s);\r\n\r\n //componentRef.changeDetectorRef.markForCheck();\r\n //componentRef.changeDetectorRef.detectChanges();\r\n });\r\n this.cdr.detectChanges();\r\n }\r\n\r\n addItem() {\r\n //this.dashboard.push({});\r\n }\r\n}","<ng-container *ngIf=\"Configuration\">\r\n\r\n <form role=\"form\" class=\"jace-dsh-toolbar\" *ngIf=\"Configuration.showToolbar\">\r\n <div *ngIf=\"Configuration.dashboardTitle\" class=\"jace-dsh-toolbar-title\">\r\n {{Configuration.dashboardTitle}}\r\n </div>\r\n <div class=\"jace-dsh-toolbar-dtp\" *ngIf=\"Configuration?.showDateInput\">\r\n <form-date [JsDates]=\"true\" [FormLayout]=\"false\" id=\"txt_dashboarddate\" [Validation]=\"false\"\r\n autocomplete=\"off\" [(ngModel)]=\"dashboardDate\" name=\"dashboarddate\" [Placeholder]=\"'Dashboard Date'\">\r\n </form-date>\r\n </div>\r\n <div class=\"jace-dsh-save-button\" (click)=\"saveDashboard()\">\r\n <span class=\"transition\">\r\n <i class=\"fa fa-save\"></i>\r\n </span>\r\n </div>\r\n </form>\r\n\r\n <gridster [options]=\"Configuration.gridsterConfig\" class=\"jace-dsh-widget-area\">\r\n <gridster-item [item]=\"item\" *ngFor=\"let item of widgetDefinitions\" class=\"jace-dsh-widget {{item.name}}\">\r\n <!-- <ng-container *ngFor=\"let item of widgetDefinitions\"> -->\r\n <ng-template #grid_item></ng-template>\r\n <!-- </ng-container> -->\r\n </gridster-item>\r\n </gridster>\r\n\r\n</ng-container>","export const Repository={\r\n GET_Dashboard_GetLayout: \"/api/Dashboard/GetLayout\",\r\n POST_Dashboard_SaveLayout: \"/api/Dashboard/SaveLayout\",\r\n GET_Dashboard_GetWidgetData: \"/api/Dashboard/GetWidgetData\"\r\n\r\n}","import { Inject, Injectable } from '@angular/core';\r\nimport { JaceDashboardLayoutDetail } from '../models/externals/JaceDashboardLayoutDetail';\r\nimport { Observable, of } from 'rxjs';\r\nimport { SaveJaceDashboardLayoutDTO } from '../models/externals/SaveJaceDashboardLayoutDTO';\r\nimport { CallResult } from '@esfaenza/extensions';\r\nimport { HTTPService } from '@esfaenza/httpservice';\r\nimport { HttpParams } from '@angular/common/http';\r\nimport { Repository } from '../models/externals/Repository';\r\nimport { IDashboardFeatureDataService } from './IDashboardFeatureDataService';\r\n\r\n@Injectable()\r\nexport class DashboardFeatureAPIDataService implements IDashboardFeatureDataService {\r\n\r\n constructor(private http: HTTPService) {}\r\n\r\n GetUserDashboard(backendid:string, idaccount: number,dashboardName: string): Observable<JaceDashboardLayoutDetail> {\r\n let params = new HttpParams();\r\n params = params.append(\"backendid\", backendid.toString());\r\n params = params.append(\"idaccount\", idaccount.toString());\r\n params = params.append(\"name\", dashboardName);\r\n return this.http.get<JaceDashboardLayoutDetail>(Repository[\"GET_Dashboard_GetLayout\"], params);\r\n }\r\n\r\n SaveUserDashboard(dto: SaveJaceDashboardLayoutDTO): Observable<CallResult> {\r\n return this.http.post<CallResult>(Repository[\"POST_Dashboard_SaveLayout\"], dto);\r\n }\r\n\r\n GetWidgetData(backendid:string,name: string, options: { [key: string]: string }): Observable<any> {\r\n let params = new HttpParams();\r\n params = params.append(\"backendid\", backendid.toString());\r\n params = params.append(\"name\", name.toString());\r\n if (options && Object.keys(options).length != 0) {\r\n for (let index = 0; index < Object.keys(options).length; index++) {\r\n const k = Object.keys(options)[index];\r\n params = params.append(k, options[k]);\r\n }\r\n }\r\n\r\n return this.http.get<any>(Repository[\"GET_Dashboard_GetWidgetData\"], params)\r\n }\r\n} \r\n\r\n","\r\nimport { Inject, ModuleWithProviders, NgModule, Optional } from '@angular/core';\r\n\r\nimport { CommonModule } from \"@angular/common\";\r\nimport { FormsModule } from \"@angular/forms\";\r\n\r\nimport { GridsterModule } from 'angular-gridster2';\r\nimport { MatProgressBarModule } from '@angular/material/progress-bar';\r\nimport { DSH_OPTIONS } from './private-injection-tokens';\r\nimport { DefaultDashboardModuleOptions } from './models/options/DefaultDashboardModuleOptions';\r\nimport { IDashboardModuleOptions } from './models/options/IDashboardModuleOptions';\r\nimport { DashboardWidgetFactory } from './services/DashboardWidgetFactory';\r\nimport { DashboardComponent } from './components/dashboard/dashboard.component';\r\nimport { FormsAndValidationsModule } from '@esfaenza/forms-and-validations';\r\nimport { EsChartsModule } from '@esfaenza/es-charts';\r\nimport { JaceListWidgetComponent } from './components/widgets/list/jace-dsh-list.component';\r\nimport { JaceCounterWidgetComponent } from './components/widgets/counter/jace-dsh-counter.component';\r\nimport { JaceChartWidgetComponent } from './components/widgets/chart/jace-dsh-chart.component';\r\nimport { JaceMultiprogWidgetComponent } from './components/widgets/multiprog/jace-dsh-multiprog.component';\r\nimport { NgCircleProgressModule } from 'ng-circle-progress';\r\nimport { HttpserviceModule } from '@esfaenza/httpservice';\r\nimport { DashboardFeatureAPIDataService } from './services/dashboard-feature.service';\r\nimport { DSH_DATA_SERVICE } from './public-injection-tokens';\r\n\r\nconst MODULES = [\r\n // Base\r\n CommonModule,\r\n FormsModule,\r\n GridsterModule,\r\n MatProgressBarModule,\r\n FormsAndValidationsModule,\r\n EsChartsModule,\r\n HttpserviceModule,\r\n NgCircleProgressModule.forRoot({\r\n radius: 50,\r\n outerStrokeWidth: 8,\r\n innerStrokeWidth: 4,\r\n outerStrokeColor: \"#78C000\",\r\n innerStrokeColor: \"#C7E596\",\r\n animationDuration: 300\r\n })\r\n];\r\n\r\nconst COMPONENTS = [\r\n DashboardComponent,\r\n JaceListWidgetComponent,\r\n JaceCounterWidgetComponent,\r\n JaceChartWidgetComponent,\r\n JaceMultiprogWidgetComponent\r\n];\r\n\r\n@NgModule({\r\n declarations: [...COMPONENTS],\r\n imports: [...MODULES],\r\n exports: [...COMPONENTS]\r\n})\r\nexport class DashboardFeatureModule {\r\n\r\n static forRoot(options: IDashboardModuleOptions): ModuleWithProviders<DashboardFeatureModule> {\r\n return {\r\n ngModule: DashboardFeatureModule,\r\n providers: [\r\n { provide: DSH_OPTIONS, multi: true, useValue: new DefaultDashboardModuleOptions() },\r\n { provide: DSH_OPTIONS, multi: true, useValue: options },\r\n { provide: DSH_DATA_SERVICE, useClass: DashboardFeatureAPIDataService }\r\n ]\r\n };\r\n }\r\n\r\n static forChild(options?: IDashboardModuleOptions): ModuleWithProviders<DashboardFeatureModule> {\r\n return {\r\n ngModule: DashboardFeatureModule,\r\n providers: [\r\n { provide: DSH_OPTIONS, multi: true, useValue: new DefaultDashboardModuleOptions() },\r\n { provide: DSH_OPTIONS, multi: true, useValue: options }\r\n ]\r\n };\r\n }\r\n\r\n constructor(componentFactory: DashboardWidgetFactory, @Optional() @Inject(DSH_OPTIONS) options: IDashboardModuleOptions[]) {\r\n if (!options) {\r\n //componentFactory.addOption(new DefaultDashboardModuleOptions());\r\n return;\r\n }\r\n options.map((o) => componentFactory.addOption(o));\r\n }\r\n}\r\n\r\n// PLEASEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE @Ema\r\n// @NgModule({\r\n// imports: [...MODULES],\r\n// declarations: [...COMPONENTS],\r\n// exports: [...COMPONENTS]\r\n// })\r\n// export class DashboardFeatureModule {\r\n// static forRoot(options: IDashboardModuleOptions): ModuleWithProviders<DashboardFeatureModule> {\r\n// return {\r\n// ngModule: DashboardFeatureModule,\r\n// providers: [\r\n// { provide: DSH_OPTIONS, multi: true, useValue: new DefaultDashboardModuleOptions() },\r\n// { provide: DSH_OPTIONS, multi: true, useValue: options },\r\n// { provide: DSH_DATA_SERVICE, useClass: DashboardFeatureAPIDataService }\r\n// ]\r\n// };\r\n// }\r\n// }","import { GridsterConfig, GridType } from 'angular-gridster2';\r\n\r\n\r\n/**\r\n * Configurazione della dashboard\r\n */\r\nexport class JaceDashboardConfig {\r\n\r\n /**\r\n * Id del backend a cui verranno indirizzate le chiamate di questa dashboard.\r\n * Deve essere uno di quelli definiti in appsetting.json del FE nella sezione **Backends**.\r\n */\r\n backendId: string=\"default_backend\";\r\n\r\n /**\r\n * Nome della dashboard (deve essere univoco nel modulo).\r\n * Deve essere 'conosciuto' nel BE in modo da ottenere il layout delle widget da visualizzare.\r\n * Verrà usato anche per salvare le preferenze dell'account (widget ridimensionate/spostate/eliminate)\r\n */\r\n dashboardName!: string;\r\n \r\n /**\r\n * ID dell'account dell'utente che deve visualizzare la dashboard.\r\n * HINT: Leggerlo da JaceIdentity dell'account al momento loggato.\r\n */ \r\n accountId!: number;\r\n \r\n /**\r\n * Configurazioni specifiche del layout di [Gridster2](https://tiberiuzuld.github.io/angular-gridster2/)\r\n */\r\n gridsterConfig: GridsterConfig;\r\n\r\n /**\r\n * Se questa dashboard contiene widget che mostrano dati che dipendono dalla data corrente\r\n * mostra il controllo (datetimepicker) per variare la data in base a cui mostrare i dati.\r\n * \r\n * NOTA: showToolbar deve essere a true.\r\n * \r\n * Default = false\r\n */\r\n showDateInput: boolean =false;\r\n \r\n /**\r\n * Mostrare la toolbar in cima alla dashboard che contiene il titolo, il pulsante per salvare il proprio layout personalizzato\r\n * e il picker per scegliere la data nel caso che le widget nella dashboard mostrino dati dipendenti dalla data.\r\n * \r\n * Default = true\r\n */\r\n showToolbar: boolean = true;\r\n\r\n /**\r\n * Titolo della dashboard mostrato in cima al layout all'interno della toolbar.\r\n * \r\n * NOTA: showToolbar deve essere a true.\r\n * \r\n * Default = undefined\r\n */\r\n dashboardTitle: string = undefined;\r\n\r\n\r\n constructor() {\r\n //default per gridster\r\n this.gridsterConfig = {\r\n maxCols: 10,\r\n maxRows: 10,\r\n minCols: 5,\r\n minRows: 6,\r\n defaultItemCols: 1,\r\n defaultItemRows: 1,\r\n disablePushOnDrag: true,\r\n draggable: { enabled: true, ignoreContent: true },\r\n displayGrid: \"onDrag&Resize\",\r\n gridType: GridType.Fit,\r\n resizable: { enabled: true },\r\n /* fixedRowHeight: 164, */\r\n setGridSize: true,\r\n //compactType: \"compactUp&Left\"\r\n /* itemChangeCallback: AppComponent.itemChange,\r\n itemResizeCallback: AppComponent.itemResize, */\r\n }; \r\n }\r\n\r\n \r\n \r\n\r\n\r\n}","import { AppSearch, GenericItem } from \"@esfaenza/es-table\";\r\nimport {JaceDashboardLayoutDetail} from \"./JaceDashboardLayoutDetail\";\r\n\r\nexport class JaceDashboardLayoutAppSearch extends AppSearch<JaceDashboardLayoutDetail> {\r\n backendid:string=\"default_backend\";\r\n filtname?: string;\r\n}\r\n","import { JaceWidgetInstanceDetail } from \"./JaceWidgetInstanceDetail\";\r\n\r\n//Definizione del layout della dashboard definito dal Backend\r\nexport class JaceDashboardLayoutDetail {\r\n\r\n\t//Account di questa dashboard\r\n\taccountid!: number;\r\n\r\n\t//Nome della dashboard (univoco)\r\n\tname!: string;\r\n\r\n\t//Definizione delle widget in questo layout\r\n\twidgets!: JaceWidgetInstanceDetail[];\r\n\r\n}","\r\nimport { Component, Directive, EventEmitter, Inject, Injectable, SimpleChanges } from \"@angular/core\";\r\nimport { IJaceWidgetModel } from \"../../models/widgets/IJaceWidgetModel\";\r\nimport { IWidgetComponent } from \"./IWidgetComponent\";\r\nimport { IDashboardFeatureDataService } from \"../../services/IDashboardFeatureDataService\";\r\nimport { DSH_DATA_SERVICE } from \"../../public-injection-tokens\";\r\n\r\n/**\r\n * Classe di base astratta per la creazione di Widget custom.\r\n */\r\n @Injectable()\r\nexport abstract class BaseWidgetComponent<T extends IJaceWidgetModel> implements IWidgetComponent{\r\n\r\n model?: T;\r\n\r\n DashboardDate!: Date;\r\n OnRemove = new EventEmitter<string>();\r\n\r\n configuration: boolean = false;\r\n dataReady: boolean = false;\r\n lastdate: string = \"\";\r\n\r\n constructor(@Inject(DSH_DATA_SERVICE) protected dshService: IDashboardFeatureDataService) { }\r\n\r\n setWidgetModel(dshBackendId:string, widgetModel: IJaceWidgetModel): void {\r\n \r\n this.model = <T>widgetModel;\r\n\r\n if(this.model.backendid === undefined || this.model.backendid==\"default_backend\")\r\n this.model.backendid = dshBackendId;\r\n\r\n this.refreshData();\r\n }\r\n\r\n ngOnInit() { }\r\n\r\n ngOnChanges(changes: SimpleChanges) {\r\n //console.log(changes['DashboardDate'].currentValue);\r\n if (changes['DashboardDate'].previousValue)\r\n this.lastdate = changes['DashboardDate'].previousValue.toISOString();\r\n\r\n let curdate: string = \"\";\r\n\r\n if (changes['DashboardDate'].currentValue)\r\n curdate = changes['DashboardDate'].currentValue.toISOString();\r\n //fix per il datetimepicker material che cambia l'oggetto al momento del caricamento\r\n if (this.lastdate != curdate) {\r\n this.lastdate = curdate;\r\n this.refreshData();\r\n }\r\n\r\n }\r\n\r\n /**\r\n * Prepara i parametri e lancia la chiamata GetWidgetData della DashboardFeatureService.\r\n * Imposta il model con i dati restituiti (setData) e imposta la variabile dataReady del campo a true\r\n */\r\n refreshData() : void {\r\n if (!this.model)\r\n return;\r\n const pars: { [key: string]: string } = {};\r\n if(this.DashboardDate)\r\n pars[\"DT\"] = this.DashboardDate.toISOString();\r\n if (this.model.options && Object.keys(this.model.options).length != 0) {\r\n for (let index = 0; index < Object.keys(this.model.options).length; index++) {\r\n const k = Object.keys(this.model.options)[index];\r\n pars[k] = this.model.options[k];\r\n }\r\n }\r\n\r\n this.prepareGetDataParameters(pars);\r\n\r\n this.dshService.GetWidgetData(this.model.backendid, this.model.name, pars).subscribe(data => {\r\n if (this.model) {\r\n this.model.setData(data);\r\n this.dataReady = true;\r\n }\r\n }\r\n );\r\n } \r\n /**\r\n * Modifica/aggiorna i parametri della chiamata GetWidgetData prima di eseguirla. * \r\n * \r\n * @param pars parametri della chiamata. Se impostata, già contengono il parametro 'DT' con la data selezionata a livello di dashboard\r\n */\r\n abstract prepareGetDataParameters(pars: { [key: string]: string; }) :void;\r\n\r\n /**\r\n * Da chiamare quando l'utente preme il pulsante 'rimuovi' nella toolbar della widget.\r\n */\r\n removeWidget() :void{\r\n if (!this.model)\r\n return;\r\n this.OnRemove.emit(this.model.name);\r\n }\r\n\r\n /**\r\n * Da chiamare quando viene premuto il pulsante 'configure' nella toolbar della widget\r\n */\r\n configureWidget() :void{\r\n if (this.configuration) {\r\n //finito di configurare -> refreshData\r\n this.refreshData();\r\n }\r\n this.configuration = !this.configuration;\r\n }\r\n}","export enum JaceWidgetTypes{\r\nCHART='CHART',\r\nCOUNTER='COUNTER',\r\nLIST='LIST',\r\nMULTIPROGRESS='MULTIPROGRESS'\r\n}","/*\r\n * Public API Surface of dashboard-feature\r\n */\r\n\r\n\r\nexport * from './lib/public-injection-tokens';\r\nexport * from './lib/dashboard-feature.module';\r\n\r\n\r\n\r\n//MODELS\r\n// CONFIG\r\nexport * from './lib/models/config/JaceDashboardConfig';\r\n// EXTERNALS\r\nexport * from './lib/models/externals/JaceDashboardLayoutAppSearch';\r\nexport * from './lib/models/externals/JaceDashboardLayoutDetail';\r\nexport * from './lib/models/externals/JaceWidgetInstanceDetail';\r\nexport * from './lib/models/externals/SaveJaceDashboardLayoutDTO';\r\n// OPTIONS\r\nexport * from './lib/models/options/IWidgetTypeConfig';\r\nexport * from './lib/models/options/IDashboardModuleOptions';\r\nexport * from './lib/models/options/DefaultDashboardModuleOptions';\r\n// WIDGETS\r\nexport * from './lib/models/widgets/IJaceWidgetModel';\r\nexport * from './lib/models/widgets/BaseJaceWidgetModel';\r\n\r\n\r\n//SERVICES\r\nexport * from './lib/services/IDashboardFeatureDataService';\r\nexport * from './lib/services/dashboard-feature.service';\r\nexport * from './lib/services/DashboardWidgetFactory';\r\n\r\n//COMPONENTS\r\nexport * from './lib/components/dashboard/dashboard.component';\r\nexport * from './lib/components/widgets/chart/jace-dsh-chart.component';\r\nexport * from './lib/components/widgets/counter/jace-dsh-counter.component';\r\nexport * from './lib/components/widgets/list/jace-dsh-list.component';\r\nexport * from './lib/components/widgets/multiprog/jace-dsh-multiprog.component';\r\nexport * from './lib/components/widgets/BaseWidgetComponent';\r\nexport * from './lib/components/widgets/IWidgetComponent';\r\nexport * from './lib/components/widgets/JaceWidgetTypes';\r\n\r\n\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1","i2","i3.DashboardWidgetFactory","i4"],"mappings":"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"}
1
+ {"version":3,"file":"esfaenza-dashboard-feature.mjs","sources":["../../../projects/dashboard-feature/src/lib/public-injection-tokens.ts","../../../projects/dashboard-feature/src/lib/private-injection-tokens.ts","../../../projects/dashboard-feature/src/lib/components/widgets/chart/jace-dsh-chart.component.ts","../../../projects/dashboard-feature/src/lib/components/widgets/chart/jace-dsh-chart.component.html","../../../projects/dashboard-feature/src/lib/components/widgets/counter/jace-dsh-counter.component.ts","../../../projects/dashboard-feature/src/lib/components/widgets/counter/jace-dsh-counter.component.html","../../../projects/dashboard-feature/src/lib/components/widgets/list/jace-dsh-list.component.ts","../../../projects/dashboard-feature/src/lib/components/widgets/list/jace-dsh-list.component.html","../../../projects/dashboard-feature/src/lib/components/widgets/multiprog/jace-dsh-multiprog.component.ts","../../../projects/dashboard-feature/src/lib/components/widgets/multiprog/jace-dsh-multiprog.component.html","../../../projects/dashboard-feature/src/lib/models/widgets/BaseJaceWidgetModel.ts","../../../projects/dashboard-feature/src/lib/models/widgets/JaceChartWidgetModel.ts","../../../projects/dashboard-feature/src/lib/models/widgets/JaceCounterWidgetModel.ts","../../../projects/dashboard-feature/src/lib/models/widgets/JaceListWidgetModel.ts","../../../projects/dashboard-feature/src/lib/models/widgets/JaceMultiprogWidgetModel.ts","../../../projects/dashboard-feature/src/lib/models/options/DefaultDashboardModuleOptions.ts","../../../projects/dashboard-feature/src/lib/services/DashboardWidgetFactory.ts","../../../projects/dashboard-feature/src/lib/models/externals/SaveJaceDashboardLayoutDTO.ts","../../../projects/dashboard-feature/src/lib/models/externals/JaceWidgetInstanceDetail.ts","../../../projects/dashboard-feature/src/lib/components/dashboard/dashboard.component.ts","../../../projects/dashboard-feature/src/lib/components/dashboard/dashboard.component.html","../../../projects/dashboard-feature/src/lib/models/externals/Repository.ts","../../../projects/dashboard-feature/src/lib/services/dashboard-feature.service.ts","../../../projects/dashboard-feature/src/lib/dashboard-feature.module.ts","../../../projects/dashboard-feature/src/lib/models/config/JaceDashboardConfig.ts","../../../projects/dashboard-feature/src/lib/models/externals/JaceDashboardLayoutAppSearch.ts","../../../projects/dashboard-feature/src/lib/models/externals/JaceDashboardLayoutDetail.ts","../../../projects/dashboard-feature/src/lib/components/widgets/BaseWidgetComponent.ts","../../../projects/dashboard-feature/src/lib/components/widgets/JaceWidgetTypes.ts","../../../projects/dashboard-feature/src/public-api.ts","../../../projects/dashboard-feature/src/esfaenza-dashboard-feature.ts"],"sourcesContent":["import {InjectionToken} from \"@angular/core\";\r\nimport { IDashboardFeatureDataService } from \"./services/IDashboardFeatureDataService\";\r\n\r\n/**\r\n * Token di registrazione della DashboardFeatureService.\r\n * Permette di fare l'override dell'implementazione di default a scopo di test delle widget\r\n */\r\nexport const DSH_DATA_SERVICE: InjectionToken<IDashboardFeatureDataService> = new InjectionToken<IDashboardFeatureDataService>('DSH_DATA_SERVICE');","import {InjectionToken} from \"@angular/core\";\r\nimport { IDashboardModuleOptions } from \"./models/options/IDashboardModuleOptions\";\r\n\r\n\r\nexport const DSH_OPTIONS: InjectionToken<IDashboardModuleOptions> = new InjectionToken<IDashboardModuleOptions>('DSH_MODULE_OPTIONS');","import { Component, EventEmitter, Inject, Input, OnInit, Output, SimpleChanges } from '@angular/core';\r\n\r\nimport { IJaceWidgetModel } from '../../../models/widgets/IJaceWidgetModel';\r\nimport { IWidgetComponent } from '../IWidgetComponent';\r\n\r\nimport { JaceChartWidgetModel } from '../../../models/widgets/JaceChartWidgetModel';\r\nimport { DSH_DATA_SERVICE } from '../../../public-injection-tokens';\r\nimport { IDashboardFeatureDataService } from '../../../services/IDashboardFeatureDataService';\r\n\r\n@Component({\r\n selector: 'jace-dsh-chart',\r\n templateUrl: './jace-dsh-chart.component.html',\r\n styleUrls: ['./jace-dsh-chart.component.css']\r\n})\r\n\r\nexport class JaceChartWidgetComponent implements IWidgetComponent, OnInit {\r\n\r\n model?: JaceChartWidgetModel;\r\n\r\n @Input() DashboardDate!: Date;\r\n @Output() OnRemove = new EventEmitter<string>();\r\n\r\n configuration: boolean = false;\r\n dataReady: boolean = false;\r\n lastdate: string = \"\";\r\n public chartName:string=\"\";\r\n\r\n constructor(@Inject(DSH_DATA_SERVICE) private dshService: IDashboardFeatureDataService) { }\r\n\r\n setWidgetModel(dshBackendId:string,widgetModel: IJaceWidgetModel): void {\r\n this.model = <JaceChartWidgetModel>widgetModel;\r\n if(this.model.backendid === undefined || this.model.backendid==\"default_backend\")\r\n this.model.backendid = dshBackendId;\r\n this.refreshData();\r\n }\r\n\r\n ngOnInit() { }\r\n\r\n ngOnChanges(changes: SimpleChanges) {\r\n //console.log(changes['DashboardDate'].currentValue);\r\n if (changes['DashboardDate'].previousValue)\r\n this.lastdate = changes['DashboardDate'].previousValue.toISOString();\r\n\r\n let curdate: string = \"\";\r\n\r\n if (changes['DashboardDate'].currentValue)\r\n curdate = changes['DashboardDate'].currentValue.toISOString();\r\n //fix per il datetimepicker material che cambia l'oggetto al momento del caricamento\r\n if (this.lastdate != curdate) {\r\n this.lastdate = curdate;\r\n this.refreshData();\r\n }\r\n\r\n }\r\n\r\n refreshData() {\r\n if (!this.model)\r\n return;\r\n const pars: { [key: string]: string } = {};\r\n if(this.DashboardDate)\r\n pars[\"DT\"] = this.DashboardDate.toISOString();\r\n if (this.model.options && Object.keys(this.model.options).length != 0) {\r\n for (let index = 0; index < Object.keys(this.model.options).length; index++) {\r\n const k = Object.keys(this.model.options)[index];\r\n pars[k] = this.model.options[k];\r\n }\r\n }\r\n\r\n this.dshService.GetWidgetData(this.model.backendid,this.model.name, pars).subscribe(data => {\r\n if (this.model) {\r\n this.model.setData(data);\r\n this.chartName = this.model.name;\r\n this.dataReady = true;\r\n }\r\n }\r\n );\r\n }\r\n\r\n removeWidget() {\r\n if (!this.model)\r\n return;\r\n this.OnRemove.emit(this.model.name);\r\n }\r\n\r\n configure() {\r\n if (this.configuration) {\r\n //finito di configurare -> refreshData\r\n this.refreshData();\r\n }\r\n this.configuration = !this.configuration;\r\n }\r\n}","<div class=\"jace-dsh-widget-header {{model?.name}}-header\">\r\n <div class=\"jace-dsh-widget-title\" *ngIf=\"model.title\">\r\n {{model.title}}\r\n </div>\r\n <div class=\"jace-dsh-widget-controls\" *ngIf=\"dataReady\">\r\n <span class=\"transition drag-handler jace-dsh-widget-drag\" *ngIf=\"model.dragEnabled\">\r\n <i class=\"fa fa-arrows-alt\"></i>\r\n </span>\r\n <span class=\"transition jace-dsh-widget-opts\" (click)=\"configure()\">\r\n <i class=\"fa fa-cog\"></i>\r\n </span>\r\n <span (click)=\"removeWidget()\" class=\"transition remove-button jace-dsh-widget-close\">\r\n <i class=\"fa fa-times\"></i>\r\n </span>\r\n </div>\r\n</div>\r\n<div class=\"jace-dsh-widget-body gridster-item-content {{model?.name}}-body\">\r\n <div class=\"jace-dsh-widget-loading\" *ngIf=\"!dataReady\">\r\n <i class=\"fa fa-spinner fa-spin\"></i>\r\n </div>\r\n\r\n <div class=\"jace-dsh-chart-container jace-dsh-widget-slide\"\r\n [ngClass]=\"{'jace-dsh-widget-content-hide':configuration,'jace-dsh-widget-content-show':!configuration}\"\r\n *ngIf=\"dataReady\">\r\n <!-- [Type]=\"Widget.chartType\" -->\r\n <h6 *ngIf=\"model?.queryerror\" class=\"fg-disabled\" style=\"margin-top: 0.5rem;\"><span\r\n class=\"fa fa-times-circle-o\"></span>&nbsp;&nbsp;Error retrieving data</h6>\r\n <es-chart [Legend]=\"model.legend\" [Theme]=\"'dataviz'\" [Type]=\"model.chartType\" [Data]=\"model.chartData\"\r\n [name]=\"chartName\"></es-chart>\r\n </div>\r\n\r\n <div class=\"jace-dsh-widget-settings jace-dsh-widget-slide \"\r\n [ngClass]=\"{'jace-dsh-widget-settings-hide':!configuration,'jace-dsh-widget-settings-show':configuration}\">\r\n <p>Configuration</p>\r\n </div>\r\n</div>","import { ChangeDetectionStrategy, Component, EventEmitter, Inject, Input, OnInit, Output, SimpleChanges } from '@angular/core';\r\n\r\nimport { IJaceWidgetModel } from '../../../models/widgets/IJaceWidgetModel';\r\nimport { IWidgetComponent } from '../IWidgetComponent';\r\nimport { JaceCounterWidgetModel } from '../../../models/widgets/JaceCounterWidgetModel';\r\n\r\nimport { DSH_DATA_SERVICE } from '../../../public-injection-tokens';\r\nimport { IDashboardFeatureDataService } from '../../../services/IDashboardFeatureDataService';\r\n\r\n@Component({\r\n selector: 'jace-dsh-counter',\r\n templateUrl: './jace-dsh-counter.component.html',\r\n styleUrls: ['./jace-dsh-counter.component.css'],\r\n //TODO per online update: scommentare OnPush\r\n //changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\n\r\nexport class JaceCounterWidgetComponent implements IWidgetComponent, OnInit {\r\n\r\n model?: JaceCounterWidgetModel;\r\n\r\n @Input() DashboardDate!: Date;\r\n @Output() OnRemove = new EventEmitter<string>();\r\n\r\n configuration: boolean = false;\r\n dataReady: boolean = false;\r\n lastdate: string = \"\";\r\n\r\n constructor(@Inject(DSH_DATA_SERVICE) private dshService: IDashboardFeatureDataService) { }\r\n\r\n//TODO per online update: importare cdr: ChangeDectectorRef \r\n\r\n setWidgetModel(dshBackendId:string,widgetModel: IJaceWidgetModel): void {\r\n this.model = <JaceCounterWidgetModel>widgetModel;\r\n if(this.model.backendid === undefined || this.model.backendid==\"default_backend\")\r\n this.model.backendid = dshBackendId;\r\n this.refreshData();\r\n }\r\n\r\n ngOnInit() { }\r\n\r\n ngOnChanges(changes: SimpleChanges) {\r\n //console.log(changes['DashboardDate'].currentValue);\r\n if (changes['DashboardDate'].previousValue)\r\n this.lastdate = changes['DashboardDate'].previousValue.toISOString();\r\n\r\n let curdate: string = \"\";\r\n\r\n if (changes['DashboardDate'].currentValue)\r\n curdate = changes['DashboardDate'].currentValue.toISOString();\r\n //fix per il datetimepicker material che cambia l'oggetto al momento del caricamento\r\n if (this.lastdate != curdate) {\r\n this.lastdate = curdate;\r\n this.refreshData();\r\n }\r\n\r\n }\r\n\r\n refreshData() {\r\n if (!this.model)\r\n return;\r\n const pars: { [key: string]: string } = {};\r\n if(this.DashboardDate)\r\n pars[\"DT\"] = this.DashboardDate.toISOString();\r\n if (this.model.options && Object.keys(this.model.options).length != 0) {\r\n for (let index = 0; index < Object.keys(this.model.options).length; index++) {\r\n const k = Object.keys(this.model.options)[index];\r\n pars[k] = this.model.options[k];\r\n }\r\n }\r\n\r\n this.dshService.GetWidgetData(this.model.backendid,this.model.name, pars).subscribe(data => {\r\n if (this.model) {\r\n this.model.setData(data);\r\n \r\n this.dataReady = true;\r\n //TODO per online update: this.cdr.markForCheck(); \r\n }\r\n }\r\n );\r\n }\r\n\r\n removeWidget() {\r\n if (!this.model)\r\n return;\r\n this.OnRemove.emit(this.model.name);\r\n }\r\n\r\n configure() {\r\n if (this.configuration) {\r\n //finito di configurare -> refreshData\r\n this.refreshData();\r\n }\r\n this.configuration = !this.configuration;\r\n }\r\n}","<div class=\"jace-dsh-widget-header {{model?.name}}-header\">\r\n <div class=\"jace-dsh-widget-title\" *ngIf=\"model.title\">\r\n {{model.title}}\r\n </div>\r\n <div class=\"jace-dsh-widget-controls\" *ngIf=\"dataReady\">\r\n <span class=\"transition drag-handler jace-dsh-widget-drag\" *ngIf=\"model.dragEnabled\">\r\n <i class=\"fa fa-arrows-alt\"></i>\r\n </span>\r\n <span class=\"transition jace-dsh-widget-opts\" (click)=\"configure()\">\r\n <i class=\"fa fa-cog\"></i>\r\n </span>\r\n <span (click)=\"removeWidget()\" class=\"transition remove-button jace-dsh-widget-close\">\r\n <i class=\"fa fa-times\"></i>\r\n </span>\r\n </div>\r\n</div>\r\n<div class=\"jace-dsh-widget-body gridster-item-content {{model?.name}}-body\">\r\n <div class=\"jace-dsh-widget-loading\" *ngIf=\"!dataReady\">\r\n <i class=\"fa fa-spinner fa-spin\"></i>\r\n </div>\r\n <div class=\"jace-dsh-counter-body jace-dsh-widget-slide\"\r\n [ngClass]=\"{'jace-dsh-widget-content-hide':configuration,'jace-dsh-widget-content-show':!configuration}\"\r\n *ngIf=\"dataReady\">\r\n <i class=\"jace-dsh-counter-icon fa fa-2x\" [ngClass]=\"[ model.icon ? model.icon : '']\" *ngIf=\"model.icon\"></i>\r\n <div class=\"jace-dsh-counter-super\">{{model.superText}}</div>\r\n <div class=\"jace-dsh-counter-value\"><span>{{model.value}}</span> <span\r\n class=\"jace-dsh-counter-unit\">{{model.unit}}</span> </div>\r\n\r\n <div class=\"jace-dsh-counter-sub\">{{model.subText}}</div>\r\n </div>\r\n\r\n <div class=\"jace-dsh-widget-settings jace-dsh-widget-slide \"\r\n [ngClass]=\"{'jace-dsh-widget-settings-hide':!configuration,'jace-dsh-widget-settings-show':configuration}\">\r\n <p>Configuration</p>\r\n </div>\r\n</div>","import { Component, EventEmitter, Inject, Input, OnInit, Output, SimpleChanges } from '@angular/core';\r\nimport { IJaceWidgetModel } from '../../../models/widgets/IJaceWidgetModel';\r\nimport { IWidgetComponent } from '../IWidgetComponent';\r\nimport { JaceListItemWidget, JaceListWidgetModel } from '../../../models/widgets/JaceListWidgetModel';\r\nimport { Router } from '@angular/router';\r\nimport { DSH_DATA_SERVICE } from '../../../public-injection-tokens';\r\nimport { IDashboardFeatureDataService } from '../../../services/IDashboardFeatureDataService';\r\n\r\n@Component({\r\n selector: 'jace-dsh-list',\r\n templateUrl: './jace-dsh-list.component.html',\r\n styleUrls: ['./jace-dsh-list.component.css']\r\n})\r\n\r\nexport class JaceListWidgetComponent implements IWidgetComponent, OnInit {\r\n\r\n model?: JaceListWidgetModel;\r\n\r\n @Input() DashboardDate!: Date;\r\n @Output() OnRemove = new EventEmitter<string>();\r\n\r\n configuration: boolean = false;\r\n dataReady: boolean = false;\r\n lastdate: string = \"\";\r\n\r\n constructor(@Inject(DSH_DATA_SERVICE) private dshService: IDashboardFeatureDataService,private router: Router) { }\r\n\r\n setWidgetModel(dshBackendId:string,widgetModel: IJaceWidgetModel): void {\r\n this.model = <JaceListWidgetModel>widgetModel;\r\n if(this.model.backendid === undefined || this.model.backendid==\"default_backend\")\r\n this.model.backendid = dshBackendId;\r\n this.refreshData();\r\n }\r\n\r\n ngOnInit() { }\r\n\r\n ngOnChanges(changes: SimpleChanges) {\r\n //console.log(changes['DashboardDate'].currentValue);\r\n if (changes['DashboardDate'].previousValue)\r\n this.lastdate = changes['DashboardDate'].previousValue.toISOString();\r\n\r\n let curdate: string = \"\";\r\n\r\n if (changes['DashboardDate'].currentValue)\r\n curdate = changes['DashboardDate'].currentValue.toISOString();\r\n //fix per il datetimepicker material che cambia l'oggetto al momento del caricamento\r\n if (this.lastdate != curdate) {\r\n this.lastdate = curdate;\r\n this.refreshData();\r\n }\r\n\r\n }\r\n\r\n refreshData() {\r\n if (!this.model)\r\n return;\r\n const pars: { [key: string]: string } = {};\r\n if(this.DashboardDate)\r\n pars[\"DT\"] = this.DashboardDate.toISOString();\r\n if (this.model.options && Object.keys(this.model.options).length != 0) {\r\n for (let index = 0; index < Object.keys(this.model.options).length; index++) {\r\n const k = Object.keys(this.model.options)[index];\r\n pars[k] = this.model.options[k];\r\n }\r\n }\r\n\r\n this.dshService.GetWidgetData(this.model.backendid, this.model.name, pars).subscribe(data => {\r\n if (this.model) {\r\n this.model.setData(data);\r\n this.dataReady = true;\r\n }\r\n }\r\n );\r\n }\r\n\r\n removeWidget() {\r\n if (!this.model)\r\n return;\r\n this.OnRemove.emit(this.model.name);\r\n }\r\n\r\n itemClicked(item: JaceListItemWidget){\r\n if(item.link)\r\n {\r\n //naviga al link\r\n let to = item.link;\r\n let par:{[key:string]:any} = {};\r\n if(item.id && item.idParamName){ \r\n par[item.idParamName] = item.id;\r\n }\r\n \r\n this.router.navigate([to, par]);\r\n }\r\n }\r\n\r\n configure() {\r\n if (this.configuration) {\r\n //finito di configurare -> refreshData\r\n this.refreshData();\r\n }\r\n this.configuration = !this.configuration;\r\n }\r\n}","<div class=\"jace-dsh-widget-header {{model?.name}}-header\">\r\n <div class=\"jace-dsh-widget-title\" *ngIf=\"model.title\">\r\n {{model.title}}\r\n </div>\r\n <div class=\"jace-dsh-widget-controls\" *ngIf=\"dataReady\">\r\n <span class=\"transition drag-handler jace-dsh-widget-drag\" *ngIf=\"model.dragEnabled\">\r\n <i class=\"fa fa-arrows-alt\"></i>\r\n </span>\r\n <span class=\"transition jace-dsh-widget-opts\" (click)=\"configure()\">\r\n <i class=\"fa fa-cog\"></i>\r\n </span>\r\n <span (click)=\"removeWidget()\" class=\"transition remove-button jace-dsh-widget-close\">\r\n <i class=\"fa fa-times\"></i>\r\n </span>\r\n </div>\r\n</div>\r\n<div class=\"jace-dsh-widget-body gridster-item-content {{model?.name}}-body\">\r\n <div class=\"jace-dsh-widget-loading\" *ngIf=\"!dataReady\">\r\n <i class=\"fa fa-spinner fa-spin\"></i>\r\n </div>\r\n <div class=\"jace-dsh-list-body jace-dsh-widget-slide\"\r\n [ngClass]=\"{'jace-dsh-widget-content-hide':configuration,'jace-dsh-widget-content-show':!configuration}\"\r\n *ngIf=\"dataReady\">\r\n <div class=\"jace-dsh-list-super-text\" *ngIf=\"model.superText\">{{model.superText}}</div>\r\n <div class=\"jace-dsh-list-item\" (click)=\"itemClicked(item)\" [class.jace-dsh-list-link]=\"item.link\"\r\n *ngFor=\"let item of model.items\">\r\n <div>\r\n <span class=\"jace-dsh-list-item-id\" *ngIf=\"item.id && item.showId\">{{item.id}}</span>\r\n <span>{{item.description}}</span>\r\n </div>\r\n <div *ngIf=\"item.subline\">\r\n <span class=\"jace-dsh-list-item-subline\">{{item.subline}}</span>\r\n </div>\r\n </div>\r\n\r\n </div>\r\n <div class=\"jace-dsh-widget-settings jace-dsh-widget-slide \"\r\n [ngClass]=\"{'jace-dsh-widget-settings-hide':!configuration,'jace-dsh-widget-settings-show':configuration}\">\r\n <p>Configuration</p>\r\n </div>\r\n</div>","import { Component, EventEmitter, Inject, Input, OnInit, Output, SimpleChanges } from '@angular/core';\r\n\r\nimport { IJaceWidgetModel } from '../../../models/widgets/IJaceWidgetModel';\r\nimport { IWidgetComponent } from '../IWidgetComponent';\r\n\r\nimport { Router } from '@angular/router';\r\nimport { JaceMultiprogWidgetModel } from '../../../models/widgets/JaceMultiprogWidgetModel';\r\nimport { DSH_DATA_SERVICE } from '../../../public-injection-tokens';\r\nimport { IDashboardFeatureDataService } from '../../../services/IDashboardFeatureDataService';\r\n\r\n@Component({\r\n selector: 'jace-dsh-multiprog',\r\n templateUrl: './jace-dsh-multiprog.component.html',\r\n styleUrls: ['./jace-dsh-multiprog.component.css'],\r\n})\r\nexport class JaceMultiprogWidgetComponent implements IWidgetComponent, OnInit {\r\n\r\n model?: JaceMultiprogWidgetModel;\r\n\r\n @Input() DashboardDate!: Date;\r\n @Output() OnRemove = new EventEmitter<string>();\r\n\r\n configuration: boolean = false;\r\n dataReady: boolean = false;\r\n lastdate: string = \"\";\r\n\r\n constructor(@Inject(DSH_DATA_SERVICE) private dshService: IDashboardFeatureDataService,private router: Router) { }\r\n\r\n setWidgetModel(dshBackendId:string,widgetModel: IJaceWidgetModel): void {\r\n this.model = <JaceMultiprogWidgetModel>widgetModel;\r\n if(this.model.backendid === undefined || this.model.backendid==\"default_backend\")\r\n this.model.backendid = dshBackendId;\r\n this.refreshData();\r\n }\r\n\r\n ngOnInit() { }\r\n\r\n ngOnChanges(changes: SimpleChanges) {\r\n //console.log(changes['DashboardDate'].currentValue);\r\n if (changes['DashboardDate'].previousValue)\r\n this.lastdate = changes['DashboardDate'].previousValue.toISOString();\r\n\r\n let curdate: string = \"\";\r\n\r\n if (changes['DashboardDate'].currentValue)\r\n curdate = changes['DashboardDate'].currentValue.toISOString();\r\n //fix per il datetimepicker material che cambia l'oggetto al momento del caricamento\r\n if (this.lastdate != curdate) {\r\n this.lastdate = curdate;\r\n this.refreshData();\r\n }\r\n\r\n }\r\n\r\n refreshData() {\r\n if (!this.model)\r\n return;\r\n const pars: { [key: string]: string } = {};\r\n if(this.DashboardDate)\r\n pars[\"DT\"] = this.DashboardDate.toISOString();\r\n if (this.model.options && Object.keys(this.model.options).length != 0) {\r\n for (let index = 0; index < Object.keys(this.model.options).length; index++) {\r\n const k = Object.keys(this.model.options)[index];\r\n pars[k] = this.model.options[k];\r\n }\r\n }\r\n\r\n this.dshService.GetWidgetData(this.model.backendid, this.model.name, pars).subscribe(data => {\r\n if (this.model) {\r\n this.model.setData(data);\r\n this.dataReady = true;\r\n }\r\n }\r\n );\r\n }\r\n\r\n removeWidget() {\r\n if (!this.model)\r\n return;\r\n this.OnRemove.emit(this.model.name);\r\n }\r\n\r\n\r\n configure() {\r\n if (this.configuration) {\r\n //finito di configurare -> refreshData\r\n this.refreshData();\r\n }\r\n this.configuration = !this.configuration;\r\n }\r\n}","<div class=\"jace-dsh-widget-header {{model?.name}}-header\">\r\n <div class=\"jace-dsh-widget-title\" *ngIf=\"model.title\">\r\n {{model.title}}\r\n </div>\r\n <div class=\"jace-dsh-widget-controls\" *ngIf=\"dataReady\">\r\n <span class=\"transition drag-handler jace-dsh-widget-drag\" *ngIf=\"model.dragEnabled\">\r\n <i class=\"fa fa-arrows-alt\"></i>\r\n </span>\r\n <span class=\"transition jace-dsh-widget-opts\" (click)=\"configure()\">\r\n <i class=\"fa fa-cog\"></i>\r\n </span>\r\n <span (click)=\"removeWidget()\" class=\"transition remove-button jace-dsh-widget-close\">\r\n <i class=\"fa fa-times\"></i>\r\n </span>\r\n\r\n </div>\r\n</div>\r\n<div class=\"jace-dsh-widget-body gridster-item-content {{model?.name}}-body\">\r\n <div class=\"jace-dsh-widget-loading\" *ngIf=\"!dataReady\">\r\n <i class=\"fa fa-spinner\"></i>\r\n </div>\r\n <div class=\"jace-dsh-multiprog-container jace-dsh-widget-slide\"\r\n [ngClass]=\"{'jace-dsh-widget-content-hide':configuration,'jace-dsh-widget-content-show':!configuration}\"\r\n *ngIf=\"dataReady\">\r\n <div *ngFor=\"let item of model.progressTitles; let i = index\" class=\"jace-dsh-multiprog-progress\">\r\n <div class=\"jace-dsh-multiprog-title\">{{item}}</div>\r\n <circle-progress [percent]=\"model.progressValues[i]\" [showSubtitle]=false [radius]=\"36\"\r\n [outerStrokeWidth]=\"4\" [innerStrokeWidth]=\"2\" [outerStrokeColor]=\"'#7489AA'\"\r\n [innerStrokeColor]=\"'#EFECCA'\" [animation]=\"true\" [animationDuration]=\"300\" [showTitle]=\"true\"\r\n *ngIf=\"model.circleProgress\"></circle-progress>\r\n <!-- [title] = \"model.progressValues[i]|number||''\" -->\r\n <mat-progress-bar [value]=\"model.progressValues[i]\" [mode]=\"'determinate'\" *ngIf=\"!model.circleProgress\">\r\n </mat-progress-bar>\r\n <!-- <span>{{item}}</span>:<span>{{model.progressValues[i]}}</span> -->\r\n </div>\r\n </div>\r\n <div class=\"jace-dsh-widget-settings jace-dsh-widget-slide \"\r\n [ngClass]=\"{'jace-dsh-widget-settings-hide':!configuration,'jace-dsh-widget-settings-show':configuration}\">\r\n <p>Configuration</p>\r\n </div>\r\n</div>","import { GridsterItem, GridsterItemComponentInterface } from \"angular-gridster2\";\r\nimport { JaceWidgetInstanceDetail } from \"../externals/JaceWidgetInstanceDetail\";\r\nimport { IJaceWidgetModel } from \"./IJaceWidgetModel\";\r\n\r\nexport abstract class BaseJaceWidgetModel implements IJaceWidgetModel{\r\n \r\n name!: string;\r\n title?: string| undefined;\r\n widgetType!: string;\r\n dataError: boolean;\r\n options?: { [key: string]: any; }| undefined;\r\n backendid: string = \"default_backend\";\r\n\r\n x!: number;\r\n y!: number;\r\n //grid overrides\r\n rows!: number;\r\n cols!: number;\r\n resizeEnabled?: boolean = false;\r\n layerIndex?: number | undefined;\r\n initCallback?: ((item: GridsterItem, itemComponent: GridsterItemComponentInterface) => void) | undefined;\r\n dragEnabled?: boolean | undefined;\r\n compactEnabled?: boolean | undefined;\r\n maxItemRows?: number | undefined;\r\n minItemRows?: number | undefined;\r\n maxItemCols?: number | undefined;\r\n minItemCols?: number | undefined;\r\n minItemArea?: number | undefined;\r\n maxItemArea?: number | undefined;\r\n\r\n [propName: string]: any;\r\n\r\n constructor(){\r\n this.dataError = false;\r\n this.options = {};\r\n }\r\n\r\n configureFromInstanceDetails(details: JaceWidgetInstanceDetail): void {\r\n this.name = details.name;\r\n this.widgetType = details.type;\r\n this.title = details.title;\r\n this.x = details.x;\r\n this.y = details.y;\r\n this.cols = details.cols;\r\n this.rows = details.rows;\r\n this.compactEnabled = details.compactenabled;\r\n this.dragEnabled = details.dragenabled;\r\n this.options = details.options;\r\n this.dataError = details.queryerror;\r\n this.resizeEnabled = details.resizeenabled;\r\n this.backendid = details.backendid??\"default_backend\";\r\n }\r\n abstract setData(data?: any): void ;\r\n}","\r\nimport { JaceWidgetInstanceDetail } from \"../externals/JaceWidgetInstanceDetail\";\r\nimport { BaseJaceWidgetModel } from \"./BaseJaceWidgetModel\";\r\n\r\nexport class JaceChartWidgetModel extends BaseJaceWidgetModel {\r\n \r\n chartType: 'pie' | 'line' | 'vertical' | 'vertical-2d' | 'vertical-stacked'='line';\r\n legend: boolean=false;\r\n\r\n //LineChartData | PieChartData | Vertical2DChartData | VerticalChartData | VerticalStackedChartData | any;\r\n chartData: any;\r\n\r\n constructor() {\r\n super();\r\n this.widgetType= \"CHART\"; \r\n }\r\n\r\n setData(data?: any): void {\r\n if (!data)\r\n return;\r\n\r\n if (data['queryerror'])\r\n this.dataError = data['queryerror'];\r\n\r\n if (data['legend'])\r\n this.legend = data['legend'];\r\n else\r\n this.legend = true;\r\n if (data['charttype'])\r\n this.chartType = data['charttype'];\r\n\r\n if (data['chartdata']) {\r\n this.chartData = data['chartdata'];\r\n }\r\n if (this.options && this.options['legend'] == undefined)\r\n this.options['legend'] = true;\r\n }\r\n\r\n}","\r\nimport { BaseJaceWidgetModel } from \"./BaseJaceWidgetModel\";\r\nimport { IJaceWidgetModel } from \"./IJaceWidgetModel\";\r\n\r\nexport class JaceCounterWidgetModel extends BaseJaceWidgetModel {\r\n\r\n superText?: string=undefined;\r\n subText?: string = undefined;\r\n value: number = 0; \r\n icon?: string=undefined;\r\n unit?: string=undefined;\r\n \r\n\r\n constructor() {\r\n super();\r\n this.widgetType= \"COUNTER\"; \r\n }\r\n \r\n\r\n setData(data?: any): void {\r\n if (data['queryerror'])\r\n this.dataError = data['queryerror'];\r\n this.superText = data['supertext'];\r\n this.subText = data['subtext'];\r\n this.value = data['value'];\r\n this.icon = data['icon'];\r\n this.options = data['options'];\r\n this.unit = data['unit'];\r\n }\r\n\r\n \r\n\r\n\r\n\r\n}","import { BaseJaceWidgetModel } from \"./BaseJaceWidgetModel\";\r\n\r\nexport class JaceListItemWidget {\r\n id?: any;\r\n showId: boolean;\r\n idParamName?: string;\r\n description!: string;\r\n subline?: string;\r\n classes?: string;\r\n link?: string;\r\n}\r\nexport class JaceListWidgetModel extends BaseJaceWidgetModel{\r\n \r\n superText?: string = undefined;\r\n items: JaceListItemWidget[] = [];\r\n\r\n constructor() {\r\n super();\r\n this.widgetType= \"LIST\"; \r\n }\r\n\r\n\r\n setData(data?: any) {\r\n if (!data)\r\n return;\r\n if (data['queryerror'])\r\n this.dataError = data['queryerror'];\r\n this.superText = data['supertext'];\r\n if (data['items']) {\r\n const d = data['items'] as Array<any>;\r\n this.items = [];\r\n for (let index = 0; index < d.length; index++) {\r\n const item = new JaceListItemWidget();\r\n const element = d[index];\r\n\r\n if (element['id'])\r\n item.id = element['id'];\r\n\r\n if (element['idparamname'])\r\n item.idParamName = element['idparamname'];\r\n\r\n if (element['link'])\r\n item.link = element['link'];\r\n\r\n if (element['subline'])\r\n item.subline = element['subline'];\r\n\r\n if (element['classes'])\r\n item.classes = element['classes'];\r\n\r\n item.description = element.description;\r\n this.items.push(item);\r\n }\r\n }\r\n }\r\n\r\n}","import { BaseJaceWidgetModel } from \"./BaseJaceWidgetModel\";\r\n\r\n\r\nexport class JaceMultiprogWidgetModel extends BaseJaceWidgetModel {\r\n \r\n resizeEnabled: boolean = true;\r\n\r\n progressTitles: string[]=[];\r\n progressValues: number[]=[];\r\n\r\n circleProgress: boolean=false;\r\n \r\n constructor() {\r\n super();\r\n this.widgetType= \"MULTIPROGRESS\"; \r\n }\r\n\r\n setData(data?: any): void {\r\n\r\n if (data['queryerror'])\r\n this.dataError = data['queryerror'];\r\n\r\n this.progressTitles = data['progresstitles'] ?? [];\r\n this.progressValues = data['progressvalues'] ?? [];\r\n this.circleProgress = data['circleprogress'];\r\n this.options = data['options'] ?? {};\r\n\r\n\r\n if (this.circleProgress === undefined)\r\n this.circleProgress = true;\r\n\r\n if (this.cols === undefined && this.progressValues) {\r\n if (this.progressValues.length == 1)\r\n this.cols = 1;\r\n else\r\n this.cols = 2;\r\n }\r\n }\r\n\r\n}","import { JaceChartWidgetComponent } from \"../../components/widgets/chart/jace-dsh-chart.component\";\r\nimport { JaceCounterWidgetComponent } from \"../../components/widgets/counter/jace-dsh-counter.component\";\r\nimport { JaceListWidgetComponent } from \"../../components/widgets/list/jace-dsh-list.component\";\r\nimport { JaceMultiprogWidgetComponent } from \"../../components/widgets/multiprog/jace-dsh-multiprog.component\";\r\nimport { JaceChartWidgetModel } from \"../widgets/JaceChartWidgetModel\";\r\nimport { JaceCounterWidgetModel } from \"../widgets/JaceCounterWidgetModel\";\r\nimport { JaceListWidgetModel } from \"../widgets/JaceListWidgetModel\";\r\nimport { JaceMultiprogWidgetModel } from \"../widgets/JaceMultiprogWidgetModel\";\r\nimport { IDashboardModuleOptions } from \"./IDashboardModuleOptions\";\r\nimport { IWidgetTypeConfig } from \"./IWidgetTypeConfig\";\r\n\r\nexport class DefaultDashboardModuleOptions implements IDashboardModuleOptions{\r\n widgetTypes!: IWidgetTypeConfig[];\r\n\r\n constructor(){\r\n this.widgetTypes = [\r\n {\r\n name: \"COUNTER\",\r\n component: JaceCounterWidgetComponent,\r\n model: JaceCounterWidgetModel\r\n },\r\n {\r\n name: \"LIST\",\r\n component: JaceListWidgetComponent,\r\n model: JaceListWidgetModel\r\n },\r\n {\r\n name: \"CHART\",\r\n component: JaceChartWidgetComponent,\r\n model: JaceChartWidgetModel\r\n },\r\n {\r\n name: \"MULTIPROGRESS\",\r\n component: JaceMultiprogWidgetComponent,\r\n model: JaceMultiprogWidgetModel\r\n }\r\n ];\r\n }\r\n}","import { ComponentRef, Injectable, ViewContainerRef } from '@angular/core';\r\nimport { IWidgetComponent } from '../components/widgets/IWidgetComponent';\r\nimport { JaceWidgetInstanceDetail } from '../models/externals/JaceWidgetInstanceDetail';\r\nimport { IJaceWidgetModel } from '../models/widgets/IJaceWidgetModel';\r\nimport { IDashboardModuleOptions } from '../models/options/IDashboardModuleOptions';\r\nimport { IWidgetTypeConfig } from '../models/options/IWidgetTypeConfig';\r\n\r\nexport interface IConstructableModel<T> {\r\n new(): T;\r\n}\r\n\r\n@Injectable({ providedIn: \"root\" })\r\nexport class DashboardWidgetFactory {\r\n\r\n types: { [name: string]: IWidgetTypeConfig } = {};\r\n\r\n constructor() { }\r\n\r\n\r\n addOption(option: IDashboardModuleOptions) {\r\n\r\n if (option.widgetTypes) {\r\n option.widgetTypes.forEach((o) => {\r\n this.types[o.name] = o;\r\n })\r\n }\r\n }\r\n\r\n /**\r\n * Versione ng11 della creazione dei componenti dinamici delle widget\r\n * @param type \r\n * @param vcr \r\n * @returns \r\n */\r\n resolveComponent(type: string, vcr: ViewContainerRef): ComponentRef<IWidgetComponent> | null {\r\n\r\n if (!this.types)\r\n return null;\r\n\r\n let t = this.types[type];\r\n\r\n if (!t)\r\n return null;\r\n\r\n let componentRef: ComponentRef<IWidgetComponent> = vcr.createComponent(t.component);\r\n\r\n return componentRef;\r\n }\r\n\r\n resolveDefinition(type: string, details: JaceWidgetInstanceDetail): IJaceWidgetModel | null {\r\n\r\n if (!this.types)\r\n return null;\r\n\r\n let t = this.types[type];\r\n\r\n if (!t)\r\n return null;\r\n\r\n let definitionInstance = this.createInstance(t.model);\r\n definitionInstance.configureFromInstanceDetails(details);\r\n\r\n return definitionInstance;\r\n }\r\n\r\n private createInstance<T extends IJaceWidgetModel>(type: IConstructableModel<T>): T {\r\n return new type();\r\n }\r\n\r\n}","import { JaceWidgetInstanceDetail } from \"./JaceWidgetInstanceDetail\";\r\n\r\n\r\nexport class SaveJaceDashboardLayoutDTO {\r\n backendid:string=\"default_backend\";\r\n name: string;\r\n widgets!: JaceWidgetInstanceDetail[];\r\n\r\n}","//Definizione della widget restituita dal backend\r\nexport class JaceWidgetInstanceDetail {\r\n id?: number;\r\n name!: string;\r\n title?: string;\r\n type!: string;\r\n x!: number;\r\n y!: number;\r\n cols!: number;\r\n rows!: number;\r\n backendid?: string;\r\n \r\n dragenabled?: boolean;\r\n resizeenabled?: boolean;\r\n compactenabled?: boolean; \r\n options?: { [key: string]: any };\r\n queryerror: boolean = false;\r\n }","import { AfterViewChecked, AfterViewInit, ChangeDetectionStrategy, ChangeDetectorRef, Component, ComponentRef, Inject, Input, OnChanges, OnDestroy, OnInit, QueryList, SimpleChanges, ViewChildren, ViewContainerRef, ViewEncapsulation } from \"@angular/core\";\r\nimport { JaceDashboardConfig } from \"../../models/config/JaceDashboardConfig\";\r\nimport { IJaceWidgetModel } from \"../../models/widgets/IJaceWidgetModel\";\r\nimport { InboundMessageTypes, InterComService } from \"@esfaenza/extensions\";\r\n\r\nimport { LocalizationService } from \"@esfaenza/localizations\";\r\nimport { ActivatedRoute } from \"@angular/router\";\r\nimport { SaveJaceDashboardLayoutDTO } from \"../../models/externals/SaveJaceDashboardLayoutDTO\";\r\nimport { JaceWidgetInstanceDetail } from \"../../models/externals/JaceWidgetInstanceDetail\";\r\nimport { JaceDashboardLayoutDetail } from \"../../models/externals/JaceDashboardLayoutDetail\";\r\nimport { DashboardWidgetFactory } from \"../../services/DashboardWidgetFactory\";\r\nimport { interval, scheduled, Subject, Subscription, timer } from \"rxjs\";\r\nimport { delay, map, take, takeUntil } from \"rxjs/operators\";\r\nimport { IWidgetComponent } from \"../widgets/IWidgetComponent\";\r\nimport { DSH_DATA_SERVICE } from \"../../public-injection-tokens\";\r\nimport { IDashboardFeatureDataService } from \"../../services/IDashboardFeatureDataService\";\r\n\r\n/**\r\n * Componente di base che rappresenta una dashboard.\r\n * Utilizza Gridster2 per il layout delle widget [Gridster2](https://tiberiuzuld.github.io/angular-gridster2/)\r\n */\r\n@Component({\r\n selector: 'es-dashboard',\r\n encapsulation: ViewEncapsulation.None,\r\n templateUrl: './dashboard.component.html',\r\n styleUrls: ['./dashboard.component.css']\r\n})\r\nexport class DashboardComponent implements OnInit, AfterViewInit, OnDestroy, OnChanges {\r\n /**\r\n * Configurazione di questa dashboard.\r\n * Contiene anche le configurazioni di layout di Gridster2\r\n */\r\n @Input() Configuration!: JaceDashboardConfig;\r\n\r\n public dashboardDate = new Date();\r\n public dashboardLayout?: JaceDashboardLayoutDetail;\r\n\r\n widgetDefinitions: (IJaceWidgetModel | null)[] = [];\r\n\r\n changesSub?: Subscription;\r\n\r\n trackedSubscriptions: Subscription[] = [];\r\n\r\n readonly destroySignal$: Subject<void> = new Subject<void>();\r\n\r\n @ViewChildren('grid_item', { read: ViewContainerRef }) gridItemRefs!: QueryList<ViewContainerRef>;\r\n\r\n constructor(\r\n @Inject(DSH_DATA_SERVICE) private dshService: IDashboardFeatureDataService,\r\n private intercom: InterComService,\r\n private route: ActivatedRoute,\r\n private cmpFactory: DashboardWidgetFactory,\r\n private cdr: ChangeDetectorRef\r\n ) {\r\n this.intercom.send(InboundMessageTypes.Navigation, { sub: false, routeTitle: this.route.snapshot.data[\"title\"] });\r\n }\r\n\r\n public ngOnInit() { }\r\n\r\n ngAfterViewInit(): void {\r\n //qui this.gridItemRefs è 'riempito'\r\n // sottoscrivo changes che sparerà tutte le volte che ngFor si aggiorna (ovvero quando cambia dashboard)\r\n this.changesSub = this.gridItemRefs.changes.pipe(\r\n takeUntil(this.destroySignal$)\r\n ).subscribe((comps: QueryList<ViewContainerRef>) => {\r\n this.renderLayout(comps);\r\n });\r\n //prima volta\r\n\r\n //setTimeout(()=>this.reloadData(),500);\r\n this.trackedSubscriptions.push(timer(500).pipe(\r\n takeUntil(this.destroySignal$),\r\n map(() => this.reloadData())\r\n ).subscribe()\r\n );\r\n }\r\n\r\n ngOnDestroy(): void {\r\n //unsubscribe dalle changes dei viewref\r\n if (this.changesSub)\r\n this.changesSub.unsubscribe();\r\n\r\n this.clearTrackedSubscriptions();\r\n\r\n this.destroySignal$.next();\r\n this.destroySignal$.complete();\r\n }\r\n\r\n clearTrackedSubscriptions() {\r\n if (this.trackedSubscriptions) {\r\n for (let index = 0; index < this.trackedSubscriptions.length; index++) {\r\n const element = this.trackedSubscriptions[index];\r\n element.unsubscribe();\r\n }\r\n this.trackedSubscriptions = [];\r\n }\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges) {\r\n //occhio: arriva prima di ngAfterViewInit\r\n if (changes.Configuration) {\r\n //appena ho configuration \r\n console.log(changes.Configuration);\r\n // la prima volta l'ho già fatta alla creazione del componente\r\n if(!changes.Configuration.firstChange){\r\n this.reloadData();\r\n }\r\n }\r\n }\r\n\r\n reloadData() {\r\n if (!this.Configuration)\r\n return;\r\n\r\n this.dshService.GetUserDashboard(this.Configuration.backendId, this.Configuration.accountId, this.Configuration.dashboardName).pipe(\r\n takeUntil(this.destroySignal$)\r\n ).subscribe(c => {\r\n this.dashboardLayout = c;\r\n this.widgetDefinitions = c.widgets.map(i => {\r\n return this.cmpFactory.resolveDefinition(i.type, i)\r\n });\r\n });\r\n }\r\n\r\n removeItem(widgetName: string) {\r\n if (!this.dashboardLayout)\r\n return;\r\n let idx = this.dashboardLayout.widgets.findIndex(s => s.name == widgetName);\r\n this.widgetDefinitions.splice(idx, 1);\r\n }\r\n\r\n saveDashboard() {\r\n if (!this.dashboardLayout)\r\n return;\r\n const dto = new SaveJaceDashboardLayoutDTO();\r\n dto.backendid = this.Configuration.backendId;\r\n dto.widgets = [];\r\n for (let index = 0; index < this.widgetDefinitions.length; index++) {\r\n const w: IJaceWidgetModel | null = this.widgetDefinitions[index];\r\n if (w == null)\r\n continue;\r\n let v = new JaceWidgetInstanceDetail();\r\n v.id = w.id;\r\n v.name = w.name;\r\n v.x = w.x;\r\n v.y = w.y;\r\n v.cols = w.cols;\r\n v.rows = w.rows;\r\n v.compactenabled = w.compactEnabled;\r\n v.dragenabled = w.dragEnabled;\r\n v.resizeenabled = w.resizeEnabled;\r\n v.type = w.widgetType;\r\n v.title = w.title;\r\n v.options = w.options;\r\n dto.widgets.push(v);\r\n }\r\n this.dshService.SaveUserDashboard(dto).subscribe(res => {\r\n if (res.success)\r\n console.log('Dashboard saved');\r\n });\r\n }\r\n\r\n renderLayout(comps: QueryList<ViewContainerRef>) {\r\n this.clearTrackedSubscriptions();\r\n\r\n comps.map((host, index) => {\r\n const vcr = host;\r\n vcr.clear();\r\n const widgetData = this.widgetDefinitions[index];\r\n\r\n if (!widgetData || !widgetData.widgetType)\r\n return;\r\n\r\n let componentRef: ComponentRef<IWidgetComponent> | null;\r\n componentRef = this.cmpFactory.resolveComponent(widgetData?.widgetType, vcr);\r\n\r\n if (!componentRef) {\r\n console.log(`Tipo widget sconosciuto ${widgetData.widgetType}`);\r\n return;\r\n }\r\n\r\n //setta l'input della data\r\n if (this.Configuration.showDateInput)\r\n componentRef.instance.DashboardDate = this.dashboardDate;\r\n\r\n //setta il modello\r\n componentRef.instance.setWidgetModel(this.Configuration.backendId, widgetData);\r\n\r\n //setta la callback per OnRemove\r\n let s = componentRef.instance.OnRemove.pipe(\r\n takeUntil(this.destroySignal$)\r\n ).subscribe(name => this.removeItem(name));\r\n this.trackedSubscriptions.push(s);\r\n\r\n //componentRef.changeDetectorRef.markForCheck();\r\n //componentRef.changeDetectorRef.detectChanges();\r\n });\r\n this.cdr.detectChanges();\r\n }\r\n\r\n addItem() {\r\n //this.dashboard.push({});\r\n }\r\n}","<ng-container *ngIf=\"Configuration\">\r\n\r\n <form role=\"form\" class=\"jace-dsh-toolbar\" *ngIf=\"Configuration.showToolbar\">\r\n <div *ngIf=\"Configuration.dashboardTitle\" class=\"jace-dsh-toolbar-title\">\r\n {{Configuration.dashboardTitle}}\r\n </div>\r\n <div class=\"jace-dsh-toolbar-dtp\" *ngIf=\"Configuration?.showDateInput\">\r\n <form-date [JsDates]=\"true\" [FormLayout]=\"false\" id=\"txt_dashboarddate\" [Validation]=\"false\"\r\n autocomplete=\"off\" [(ngModel)]=\"dashboardDate\" name=\"dashboarddate\" [Placeholder]=\"'Dashboard Date'\">\r\n </form-date>\r\n </div>\r\n <div class=\"jace-dsh-save-button\" (click)=\"saveDashboard()\">\r\n <span class=\"transition\">\r\n <i class=\"fa fa-save\"></i>\r\n </span>\r\n </div>\r\n </form>\r\n\r\n <gridster [options]=\"Configuration.gridsterConfig\" class=\"jace-dsh-widget-area\">\r\n <gridster-item [item]=\"item\" *ngFor=\"let item of widgetDefinitions\" class=\"jace-dsh-widget {{item.name}}\">\r\n <!-- <ng-container *ngFor=\"let item of widgetDefinitions\"> -->\r\n <ng-template #grid_item></ng-template>\r\n <!-- </ng-container> -->\r\n </gridster-item>\r\n </gridster>\r\n\r\n</ng-container>","export const Repository={\r\n GET_Dashboard_GetLayout: \"/api/Dashboard/GetLayout\",\r\n POST_Dashboard_SaveLayout: \"/api/Dashboard/SaveLayout\",\r\n GET_Dashboard_GetWidgetData: \"/api/Dashboard/GetWidgetData\"\r\n\r\n}","import { Inject, Injectable } from '@angular/core';\r\nimport { JaceDashboardLayoutDetail } from '../models/externals/JaceDashboardLayoutDetail';\r\nimport { Observable, of } from 'rxjs';\r\nimport { SaveJaceDashboardLayoutDTO } from '../models/externals/SaveJaceDashboardLayoutDTO';\r\nimport { CallResult } from '@esfaenza/extensions';\r\nimport { HTTPService } from '@esfaenza/httpservice';\r\nimport { HttpParams } from '@angular/common/http';\r\nimport { Repository } from '../models/externals/Repository';\r\nimport { IDashboardFeatureDataService } from './IDashboardFeatureDataService';\r\n\r\n@Injectable()\r\nexport class DashboardFeatureAPIDataService implements IDashboardFeatureDataService {\r\n\r\n constructor(private http: HTTPService) {}\r\n\r\n GetUserDashboard(backendid:string, idaccount: number,dashboardName: string): Observable<JaceDashboardLayoutDetail> {\r\n let params = new HttpParams();\r\n params = params.append(\"backendid\", backendid.toString());\r\n params = params.append(\"idaccount\", idaccount.toString());\r\n params = params.append(\"name\", dashboardName);\r\n return this.http.get<JaceDashboardLayoutDetail>(Repository[\"GET_Dashboard_GetLayout\"], params);\r\n }\r\n\r\n SaveUserDashboard(dto: SaveJaceDashboardLayoutDTO): Observable<CallResult> {\r\n return this.http.post<CallResult>(Repository[\"POST_Dashboard_SaveLayout\"], dto);\r\n }\r\n\r\n GetWidgetData(backendid:string,name: string, options: { [key: string]: string }): Observable<any> {\r\n let params = new HttpParams();\r\n params = params.append(\"backendid\", backendid.toString());\r\n params = params.append(\"name\", name.toString());\r\n if (options && Object.keys(options).length != 0) {\r\n for (let index = 0; index < Object.keys(options).length; index++) {\r\n const k = Object.keys(options)[index];\r\n params = params.append(k, options[k]);\r\n }\r\n }\r\n\r\n return this.http.get<any>(Repository[\"GET_Dashboard_GetWidgetData\"], params)\r\n }\r\n} \r\n\r\n","\r\nimport { Inject, ModuleWithProviders, NgModule, Optional } from '@angular/core';\r\n\r\nimport { CommonModule } from \"@angular/common\";\r\nimport { FormsModule } from \"@angular/forms\";\r\n\r\nimport { GridsterModule } from 'angular-gridster2';\r\nimport { MatProgressBarModule } from '@angular/material/progress-bar';\r\nimport { DSH_OPTIONS } from './private-injection-tokens';\r\nimport { DefaultDashboardModuleOptions } from './models/options/DefaultDashboardModuleOptions';\r\nimport { IDashboardModuleOptions } from './models/options/IDashboardModuleOptions';\r\nimport { DashboardWidgetFactory } from './services/DashboardWidgetFactory';\r\nimport { DashboardComponent } from './components/dashboard/dashboard.component';\r\nimport { FormsAndValidationsModule } from '@esfaenza/forms-and-validations';\r\nimport { EsChartsModule } from '@esfaenza/es-charts';\r\nimport { JaceListWidgetComponent } from './components/widgets/list/jace-dsh-list.component';\r\nimport { JaceCounterWidgetComponent } from './components/widgets/counter/jace-dsh-counter.component';\r\nimport { JaceChartWidgetComponent } from './components/widgets/chart/jace-dsh-chart.component';\r\nimport { JaceMultiprogWidgetComponent } from './components/widgets/multiprog/jace-dsh-multiprog.component';\r\nimport { NgCircleProgressModule } from 'ng-circle-progress';\r\nimport { HttpserviceModule } from '@esfaenza/httpservice';\r\nimport { DashboardFeatureAPIDataService } from './services/dashboard-feature.service';\r\nimport { DSH_DATA_SERVICE } from './public-injection-tokens';\r\n\r\nconst MODULES = [\r\n // Base\r\n CommonModule,\r\n FormsModule,\r\n GridsterModule,\r\n MatProgressBarModule,\r\n FormsAndValidationsModule,\r\n EsChartsModule,\r\n HttpserviceModule,\r\n NgCircleProgressModule.forRoot({\r\n radius: 50,\r\n outerStrokeWidth: 8,\r\n innerStrokeWidth: 4,\r\n outerStrokeColor: \"#78C000\",\r\n innerStrokeColor: \"#C7E596\",\r\n animationDuration: 300\r\n })\r\n];\r\n\r\nconst COMPONENTS = [\r\n DashboardComponent,\r\n JaceListWidgetComponent,\r\n JaceCounterWidgetComponent,\r\n JaceChartWidgetComponent,\r\n JaceMultiprogWidgetComponent\r\n];\r\n\r\n@NgModule({\r\n declarations: [...COMPONENTS],\r\n imports: [...MODULES],\r\n exports: [...COMPONENTS]\r\n})\r\nexport class DashboardFeatureModule {\r\n\r\n static forRoot(options?: IDashboardModuleOptions): ModuleWithProviders<DashboardFeatureModule> {\r\n return {\r\n ngModule: DashboardFeatureModule,\r\n providers: [\r\n { provide: DSH_OPTIONS, multi: true, useValue: new DefaultDashboardModuleOptions() },\r\n { provide: DSH_OPTIONS, multi: true, useValue: options },\r\n { provide: DSH_DATA_SERVICE, useClass: DashboardFeatureAPIDataService },\r\n DashboardWidgetFactory\r\n ]\r\n };\r\n }\r\n\r\n constructor(componentFactory: DashboardWidgetFactory, @Optional() @Inject(DSH_OPTIONS) options: IDashboardModuleOptions[]) {\r\n if (!options)\r\n return;\r\n \r\n options.map((o) => componentFactory.addOption(o));\r\n }\r\n}\r\n","import { GridsterConfig, GridType } from 'angular-gridster2';\r\n\r\n\r\n/**\r\n * Configurazione della dashboard\r\n */\r\nexport class JaceDashboardConfig {\r\n\r\n /**\r\n * Id del backend a cui verranno indirizzate le chiamate di questa dashboard.\r\n * Deve essere uno di quelli definiti in appsetting.json del FE nella sezione **Backends**.\r\n */\r\n backendId: string=\"default_backend\";\r\n\r\n /**\r\n * Nome della dashboard (deve essere univoco nel modulo).\r\n * Deve essere 'conosciuto' nel BE in modo da ottenere il layout delle widget da visualizzare.\r\n * Verrà usato anche per salvare le preferenze dell'account (widget ridimensionate/spostate/eliminate)\r\n */\r\n dashboardName!: string;\r\n \r\n /**\r\n * ID dell'account dell'utente che deve visualizzare la dashboard.\r\n * HINT: Leggerlo da JaceIdentity dell'account al momento loggato.\r\n */ \r\n accountId!: number;\r\n \r\n /**\r\n * Configurazioni specifiche del layout di [Gridster2](https://tiberiuzuld.github.io/angular-gridster2/)\r\n */\r\n gridsterConfig: GridsterConfig;\r\n\r\n /**\r\n * Se questa dashboard contiene widget che mostrano dati che dipendono dalla data corrente\r\n * mostra il controllo (datetimepicker) per variare la data in base a cui mostrare i dati.\r\n * \r\n * NOTA: showToolbar deve essere a true.\r\n * \r\n * Default = false\r\n */\r\n showDateInput: boolean =false;\r\n \r\n /**\r\n * Mostrare la toolbar in cima alla dashboard che contiene il titolo, il pulsante per salvare il proprio layout personalizzato\r\n * e il picker per scegliere la data nel caso che le widget nella dashboard mostrino dati dipendenti dalla data.\r\n * \r\n * Default = true\r\n */\r\n showToolbar: boolean = true;\r\n\r\n /**\r\n * Titolo della dashboard mostrato in cima al layout all'interno della toolbar.\r\n * \r\n * NOTA: showToolbar deve essere a true.\r\n * \r\n * Default = undefined\r\n */\r\n dashboardTitle: string = undefined;\r\n\r\n\r\n constructor() {\r\n //default per gridster\r\n this.gridsterConfig = {\r\n maxCols: 10,\r\n maxRows: 10,\r\n minCols: 5,\r\n minRows: 6,\r\n defaultItemCols: 1,\r\n defaultItemRows: 1,\r\n disablePushOnDrag: true,\r\n draggable: { enabled: true, ignoreContent: true },\r\n displayGrid: \"onDrag&Resize\",\r\n gridType: GridType.Fit,\r\n resizable: { enabled: true },\r\n /* fixedRowHeight: 164, */\r\n setGridSize: true,\r\n //compactType: \"compactUp&Left\"\r\n /* itemChangeCallback: AppComponent.itemChange,\r\n itemResizeCallback: AppComponent.itemResize, */\r\n }; \r\n }\r\n\r\n \r\n \r\n\r\n\r\n}","import { AppSearch, GenericItem } from \"@esfaenza/es-table\";\r\nimport {JaceDashboardLayoutDetail} from \"./JaceDashboardLayoutDetail\";\r\n\r\nexport class JaceDashboardLayoutAppSearch extends AppSearch<JaceDashboardLayoutDetail> {\r\n backendid:string=\"default_backend\";\r\n filtname?: string;\r\n}\r\n","import { JaceWidgetInstanceDetail } from \"./JaceWidgetInstanceDetail\";\r\n\r\n//Definizione del layout della dashboard definito dal Backend\r\nexport class JaceDashboardLayoutDetail {\r\n\r\n\t//Account di questa dashboard\r\n\taccountid!: number;\r\n\r\n\t//Nome della dashboard (univoco)\r\n\tname!: string;\r\n\r\n\t//Definizione delle widget in questo layout\r\n\twidgets!: JaceWidgetInstanceDetail[];\r\n\r\n}","\r\nimport { Component, Directive, EventEmitter, Inject, Injectable, SimpleChanges } from \"@angular/core\";\r\nimport { IJaceWidgetModel } from \"../../models/widgets/IJaceWidgetModel\";\r\nimport { IWidgetComponent } from \"./IWidgetComponent\";\r\nimport { IDashboardFeatureDataService } from \"../../services/IDashboardFeatureDataService\";\r\nimport { DSH_DATA_SERVICE } from \"../../public-injection-tokens\";\r\n\r\n/**\r\n * Classe di base astratta per la creazione di Widget custom.\r\n */\r\n @Injectable()\r\nexport abstract class BaseWidgetComponent<T extends IJaceWidgetModel> implements IWidgetComponent{\r\n\r\n model?: T;\r\n\r\n DashboardDate!: Date;\r\n OnRemove = new EventEmitter<string>();\r\n\r\n configuration: boolean = false;\r\n dataReady: boolean = false;\r\n lastdate: string = \"\";\r\n\r\n constructor(@Inject(DSH_DATA_SERVICE) protected dshService: IDashboardFeatureDataService) { }\r\n\r\n setWidgetModel(dshBackendId:string, widgetModel: IJaceWidgetModel): void {\r\n \r\n this.model = <T>widgetModel;\r\n\r\n if(this.model.backendid === undefined || this.model.backendid==\"default_backend\")\r\n this.model.backendid = dshBackendId;\r\n\r\n this.refreshData();\r\n }\r\n\r\n ngOnInit() { }\r\n\r\n ngOnChanges(changes: SimpleChanges) {\r\n //console.log(changes['DashboardDate'].currentValue);\r\n if (changes['DashboardDate'].previousValue)\r\n this.lastdate = changes['DashboardDate'].previousValue.toISOString();\r\n\r\n let curdate: string = \"\";\r\n\r\n if (changes['DashboardDate'].currentValue)\r\n curdate = changes['DashboardDate'].currentValue.toISOString();\r\n //fix per il datetimepicker material che cambia l'oggetto al momento del caricamento\r\n if (this.lastdate != curdate) {\r\n this.lastdate = curdate;\r\n this.refreshData();\r\n }\r\n\r\n }\r\n\r\n /**\r\n * Prepara i parametri e lancia la chiamata GetWidgetData della DashboardFeatureService.\r\n * Imposta il model con i dati restituiti (setData) e imposta la variabile dataReady del campo a true\r\n */\r\n refreshData() : void {\r\n if (!this.model)\r\n return;\r\n const pars: { [key: string]: string } = {};\r\n if(this.DashboardDate)\r\n pars[\"DT\"] = this.DashboardDate.toISOString();\r\n if (this.model.options && Object.keys(this.model.options).length != 0) {\r\n for (let index = 0; index < Object.keys(this.model.options).length; index++) {\r\n const k = Object.keys(this.model.options)[index];\r\n pars[k] = this.model.options[k];\r\n }\r\n }\r\n\r\n this.prepareGetDataParameters(pars);\r\n\r\n this.dshService.GetWidgetData(this.model.backendid, this.model.name, pars).subscribe(data => {\r\n if (this.model) {\r\n this.model.setData(data);\r\n this.dataReady = true;\r\n }\r\n }\r\n );\r\n } \r\n /**\r\n * Modifica/aggiorna i parametri della chiamata GetWidgetData prima di eseguirla. * \r\n * \r\n * @param pars parametri della chiamata. Se impostata, già contengono il parametro 'DT' con la data selezionata a livello di dashboard\r\n */\r\n abstract prepareGetDataParameters(pars: { [key: string]: string; }) :void;\r\n\r\n /**\r\n * Da chiamare quando l'utente preme il pulsante 'rimuovi' nella toolbar della widget.\r\n */\r\n removeWidget() :void{\r\n if (!this.model)\r\n return;\r\n this.OnRemove.emit(this.model.name);\r\n }\r\n\r\n /**\r\n * Da chiamare quando viene premuto il pulsante 'configure' nella toolbar della widget\r\n */\r\n configureWidget() :void{\r\n if (this.configuration) {\r\n //finito di configurare -> refreshData\r\n this.refreshData();\r\n }\r\n this.configuration = !this.configuration;\r\n }\r\n}","export enum JaceWidgetTypes{\r\nCHART='CHART',\r\nCOUNTER='COUNTER',\r\nLIST='LIST',\r\nMULTIPROGRESS='MULTIPROGRESS'\r\n}","/*\r\n * Public API Surface of dashboard-feature\r\n */\r\n\r\n\r\nexport * from './lib/public-injection-tokens';\r\nexport * from './lib/dashboard-feature.module';\r\n\r\n\r\n\r\n//MODELS\r\n// CONFIG\r\nexport * from './lib/models/config/JaceDashboardConfig';\r\n// EXTERNALS\r\nexport * from './lib/models/externals/JaceDashboardLayoutAppSearch';\r\nexport * from './lib/models/externals/JaceDashboardLayoutDetail';\r\nexport * from './lib/models/externals/JaceWidgetInstanceDetail';\r\nexport * from './lib/models/externals/SaveJaceDashboardLayoutDTO';\r\n// OPTIONS\r\nexport * from './lib/models/options/IWidgetTypeConfig';\r\nexport * from './lib/models/options/IDashboardModuleOptions';\r\nexport * from './lib/models/options/DefaultDashboardModuleOptions';\r\n// WIDGETS\r\nexport * from './lib/models/widgets/IJaceWidgetModel';\r\nexport * from './lib/models/widgets/BaseJaceWidgetModel';\r\n\r\n\r\n//SERVICES\r\nexport * from './lib/services/IDashboardFeatureDataService';\r\nexport * from './lib/services/dashboard-feature.service';\r\nexport * from './lib/services/DashboardWidgetFactory';\r\n\r\n//COMPONENTS\r\nexport * from './lib/components/dashboard/dashboard.component';\r\nexport * from './lib/components/widgets/chart/jace-dsh-chart.component';\r\nexport * from './lib/components/widgets/counter/jace-dsh-counter.component';\r\nexport * from './lib/components/widgets/list/jace-dsh-list.component';\r\nexport * from './lib/components/widgets/multiprog/jace-dsh-multiprog.component';\r\nexport * from './lib/components/widgets/BaseWidgetComponent';\r\nexport * from './lib/components/widgets/IWidgetComponent';\r\nexport * from './lib/components/widgets/JaceWidgetTypes';\r\n\r\n\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1","i2","i3.DashboardWidgetFactory","i4"],"mappings":"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"}