@esfaenza/dashboard-feature 15.2.14 → 19.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +24 -24
- package/fesm2022/esfaenza-dashboard-feature.mjs +1814 -0
- package/fesm2022/esfaenza-dashboard-feature.mjs.map +1 -0
- package/index.d.ts +5 -5
- package/lib/components/dashboard/dashboard.component.d.ts +46 -46
- package/lib/components/widgets/BaseWidgetComponent.d.ts +44 -47
- package/lib/components/widgets/IWidgetComponent.d.ts +23 -23
- package/lib/components/widgets/JaceWidgetTypes.d.ts +6 -6
- package/lib/components/widgets/chart/jace-dsh-chart.component.d.ts +25 -25
- package/lib/components/widgets/counter/jace-dsh-counter.component.d.ts +24 -24
- package/lib/components/widgets/list/jace-dsh-list.component.d.ts +27 -27
- package/lib/components/widgets/multiprog/circle-progress/circle-progress.component.d.ts +219 -0
- package/lib/components/widgets/multiprog/jace-dsh-multiprog.component.d.ts +26 -26
- package/lib/dashboard-feature.module.d.ts +23 -24
- package/lib/models/config/JaceDashboardConfig.d.ts +51 -51
- package/lib/models/externals/JaceDashboardLayoutAppSearch.d.ts +6 -6
- package/lib/models/externals/JaceDashboardLayoutDetail.d.ts +6 -6
- package/lib/models/externals/JaceWidgetInstanceDetail.d.ts +18 -18
- package/lib/models/externals/Repository.d.ts +5 -5
- package/lib/models/externals/SaveJaceDashboardLayoutDTO.d.ts +6 -6
- package/lib/models/options/DefaultDashboardModuleOptions.d.ts +6 -6
- package/lib/models/options/IDashboardModuleOptions.d.ts +4 -4
- package/lib/models/options/IWidgetTypeConfig.d.ts +8 -8
- package/lib/models/widgets/BaseJaceWidgetModel.d.ts +32 -38
- package/lib/models/widgets/IJaceWidgetModel.d.ts +33 -39
- package/lib/models/widgets/JaceChartWidgetModel.d.ts +8 -14
- package/lib/models/widgets/JaceCounterWidgetModel.d.ts +10 -18
- package/lib/models/widgets/JaceListWidgetModel.d.ts +16 -27
- package/lib/models/widgets/JaceMultiprogWidgetModel.d.ts +9 -15
- package/lib/private-injection-tokens.d.ts +3 -0
- package/lib/{tokens.d.ts → public-injection-tokens.d.ts} +7 -9
- package/lib/services/DashboardWidgetFactory.d.ts +28 -28
- package/lib/services/IDashboardFeatureDataService.d.ts +11 -31
- package/lib/services/dashboard-feature.service.d.ts +18 -38
- package/package.json +15 -16
- package/public-api.d.ts +24 -23
- package/esm2020/esfaenza-dashboard-feature.mjs +0 -5
- package/esm2020/lib/components/dashboard/dashboard.component.mjs +0 -163
- package/esm2020/lib/components/widgets/BaseWidgetComponent.mjs +0 -89
- package/esm2020/lib/components/widgets/IWidgetComponent.mjs +0 -2
- package/esm2020/lib/components/widgets/JaceWidgetTypes.mjs +0 -8
- package/esm2020/lib/components/widgets/chart/jace-dsh-chart.component.mjs +0 -81
- package/esm2020/lib/components/widgets/counter/jace-dsh-counter.component.mjs +0 -80
- package/esm2020/lib/components/widgets/list/jace-dsh-list.component.mjs +0 -91
- package/esm2020/lib/components/widgets/multiprog/jace-dsh-multiprog.component.mjs +0 -82
- package/esm2020/lib/dashboard-feature.module.mjs +0 -98
- package/esm2020/lib/models/config/JaceDashboardConfig.mjs +0 -57
- package/esm2020/lib/models/externals/JaceDashboardLayoutAppSearch.mjs +0 -8
- package/esm2020/lib/models/externals/JaceDashboardLayoutDetail.mjs +0 -4
- package/esm2020/lib/models/externals/JaceWidgetInstanceDetail.mjs +0 -7
- package/esm2020/lib/models/externals/Repository.mjs +0 -6
- package/esm2020/lib/models/externals/SaveJaceDashboardLayoutDTO.mjs +0 -6
- package/esm2020/lib/models/options/DefaultDashboardModuleOptions.mjs +0 -35
- package/esm2020/lib/models/options/IDashboardModuleOptions.mjs +0 -2
- package/esm2020/lib/models/options/IWidgetTypeConfig.mjs +0 -2
- package/esm2020/lib/models/widgets/BaseJaceWidgetModel.mjs +0 -38
- package/esm2020/lib/models/widgets/IJaceWidgetModel.mjs +0 -2
- package/esm2020/lib/models/widgets/JaceChartWidgetModel.mjs +0 -29
- package/esm2020/lib/models/widgets/JaceCounterWidgetModel.mjs +0 -29
- package/esm2020/lib/models/widgets/JaceListWidgetModel.mjs +0 -48
- package/esm2020/lib/models/widgets/JaceMultiprogWidgetModel.mjs +0 -32
- package/esm2020/lib/services/DashboardWidgetFactory.mjs +0 -49
- package/esm2020/lib/services/IDashboardFeatureDataService.mjs +0 -2
- package/esm2020/lib/services/dashboard-feature.service.mjs +0 -58
- package/esm2020/lib/tokens.mjs +0 -8
- package/esm2020/public-api.mjs +0 -34
- package/fesm2015/esfaenza-dashboard-feature.mjs +0 -1076
- package/fesm2015/esfaenza-dashboard-feature.mjs.map +0 -1
- package/fesm2020/esfaenza-dashboard-feature.mjs +0 -1059
- package/fesm2020/esfaenza-dashboard-feature.mjs.map +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"esfaenza-dashboard-feature.mjs","sources":["../../../projects/dashboard-feature/src/lib/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\nimport { IDashboardModuleOptions } from \"./models/options/IDashboardModuleOptions\";\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');\r\nexport const DSH_OPTIONS: InjectionToken<IDashboardModuleOptions> = new InjectionToken<IDashboardModuleOptions>('DSH_MODULE_OPTIONS');\r\n","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 '../../../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}\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> 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 '../../../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}\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 '../../../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 //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}\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 '../../../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}\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 const BaseJaceWidgetConstants = {\r\n ITEMS: \"items\",\r\n QUERYERROR: \"queryerror\",\r\n OPTIONS: \"options\"\r\n} as const;\r\n\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\r\n setData(data?: any): void {\r\n if (!data)\r\n return;\r\n\r\n if (data[BaseJaceWidgetConstants.QUERYERROR])\r\n this.dataError = data[BaseJaceWidgetConstants.QUERYERROR];\r\n\r\n //TODO se sono specificate opzioni, inizializzare la configurazione\r\n\r\n //chiamata per le impostazioni specifiche\r\n this.setWidgetData(data);\r\n }\r\n\r\n abstract setWidgetData(data?: any): void;\r\n}\r\n","\r\nimport { BaseJaceWidgetModel } from \"./BaseJaceWidgetModel\";\r\n\r\n\r\nexport const JaceChartWidgetConstants = {\r\n TYPE: \"CHART\",\r\n DATAFIELD_LEGEND: 'legend',\r\n DATAFIELD_CHART_TYPE: 'charttype',\r\n DATAFIELD_CHART_DATA: 'chartdata',\r\n} as const;\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 = JaceChartWidgetConstants.TYPE;\r\n }\r\n\r\n setWidgetData(data?: any): void {\r\n\r\n if (data[JaceChartWidgetConstants.DATAFIELD_LEGEND])\r\n this.legend = data[JaceChartWidgetConstants.DATAFIELD_LEGEND];\r\n else\r\n this.legend = true;\r\n\r\n if (data[JaceChartWidgetConstants.DATAFIELD_CHART_TYPE])\r\n this.chartType = data[JaceChartWidgetConstants.DATAFIELD_CHART_TYPE];\r\n\r\n if (data[JaceChartWidgetConstants.DATAFIELD_CHART_DATA]) {\r\n this.chartData = data[JaceChartWidgetConstants.DATAFIELD_CHART_DATA];\r\n }\r\n if (this.options && this.options[JaceChartWidgetConstants.DATAFIELD_LEGEND] == undefined)\r\n this.options[JaceChartWidgetConstants.DATAFIELD_LEGEND] = true;\r\n }\r\n\r\n}\r\n","\r\nimport { BaseJaceWidgetConstants, BaseJaceWidgetModel } from \"./BaseJaceWidgetModel\";\r\n\r\nexport const JaceCounterWidgetConstants = {\r\n TYPE: \"COUNTER\",\r\n DATAFIELD_SUPERTEXT: \"supertext\",\r\n DATAFIELD_SUBTEXT: \"subtext\",\r\n DATAFIELD_VALUE: \"value\",\r\n DATAFIELD_ICON: \"icon\",\r\n DATAFIELD_UNIT: \"unit\",\r\n} as const;\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 = JaceCounterWidgetConstants.TYPE;\r\n }\r\n\r\n\r\n setWidgetData(data?: any): void {\r\n this.superText = data[JaceCounterWidgetConstants.DATAFIELD_SUPERTEXT];\r\n this.subText = data[JaceCounterWidgetConstants.DATAFIELD_SUBTEXT];\r\n this.value = data[JaceCounterWidgetConstants.DATAFIELD_VALUE];\r\n this.icon = data[JaceCounterWidgetConstants.DATAFIELD_ICON];\r\n this.options = data[BaseJaceWidgetConstants.OPTIONS];\r\n this.unit = data[JaceCounterWidgetConstants.DATAFIELD_UNIT];\r\n }\r\n\r\n\r\n\r\n\r\n\r\n}\r\n","import { BaseJaceWidgetModel, BaseJaceWidgetConstants } from \"./BaseJaceWidgetModel\";\r\n\r\nexport class JaceListItemWidget {\r\n /*\r\n * ID dell'elemento\r\n */\r\n id?: any;\r\n /*\r\n * Indica se mostrare il tag con l'ID a sinistra dell'elemento\r\n */\r\n showId: boolean;\r\n /*\r\n * Nome del parametro per passare l'ID al all'url del dettaglio\r\n */\r\n idParamName?: string;\r\n /*\r\n * Descrizione dell'elemento\r\n */\r\n description!: string;\r\n /*\r\n * Linea di testo, più in piccolo, sotto alla description dell'elemento\r\n */\r\n subline?: string;\r\n /*\r\n * Classi CSS da aggiungere al div dell'elemento\r\n */\r\n classes?: string;\r\n /*\r\n * Url (relativo) per navigare al dettaglio dell'elemento\r\n * Se idParamName è valorizzato, il link sarà composto come routing angular\r\n * this.router.navigate([<link>, {<idParamName>: <id>}]);\r\n */\r\n link?: string;\r\n}\r\n\r\nexport const JaceListWidgetConstants = {\r\n TYPE: \"LIST\",\r\n DATAFIELD_SUPERTEXT: \"supertext\",\r\n DATAFIELD_ID: \"id\",\r\n DATAFIELD_DESCRIPTION: \"description\",\r\n DATAFIELD_SUBLINE: \"subline\",\r\n DATAFIELD_CLASSES: \"classes\",\r\n DATAFIELD_ID_PARAM_NAME: \"idparamname\",\r\n DATAFIELD_LINK: \"link\",\r\n DATAFIELD_SHOWID: \"showId\"\r\n} as const;\r\n\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 = JaceListWidgetConstants.TYPE;\r\n }\r\n\r\n setWidgetData(data?: any) {\r\n\r\n this.superText = data[JaceListWidgetConstants.DATAFIELD_SUPERTEXT];\r\n\r\n if (data[BaseJaceWidgetConstants.ITEMS]) {\r\n const d = data[BaseJaceWidgetConstants.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[JaceListWidgetConstants.DATAFIELD_ID])\r\n item.id = element[JaceListWidgetConstants.DATAFIELD_ID];\r\n\r\n if (element[JaceListWidgetConstants.DATAFIELD_SHOWID])\r\n item.showId = element[JaceListWidgetConstants.DATAFIELD_SHOWID];\r\n\r\n if (element[JaceListWidgetConstants.DATAFIELD_ID_PARAM_NAME])\r\n item.idParamName = element[JaceListWidgetConstants.DATAFIELD_ID_PARAM_NAME];\r\n\r\n if (element[JaceListWidgetConstants.DATAFIELD_LINK])\r\n item.link = element[JaceListWidgetConstants.DATAFIELD_LINK];\r\n\r\n if (element[JaceListWidgetConstants.DATAFIELD_SUBLINE])\r\n item.subline = element[JaceListWidgetConstants.DATAFIELD_SUBLINE];\r\n\r\n if (element[JaceListWidgetConstants.DATAFIELD_CLASSES])\r\n item.classes = element[JaceListWidgetConstants.DATAFIELD_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}\r\n","import { BaseJaceWidgetModel, BaseJaceWidgetConstants } from \"./BaseJaceWidgetModel\";\r\n\r\nexport const JaceMultiprogWidgetConstants = {\r\n TYPE: \"MULTIPROGRESS\",\r\n DATAFIELD_TITLES: \"progresstitles\",\r\n DATAFIELD_VALUES: \"progressvalues\",\r\n DATAFIELD_AS_CIRCLES: \"circleprogress\",\r\n} as const;\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 = JaceMultiprogWidgetConstants.TYPE;\r\n }\r\n\r\n setWidgetData(data?: any): void {\r\n\r\n this.progressTitles = data[JaceMultiprogWidgetConstants.DATAFIELD_TITLES] ?? [];\r\n this.progressValues = data[JaceMultiprogWidgetConstants.DATAFIELD_VALUES] ?? [];\r\n this.circleProgress = data[JaceMultiprogWidgetConstants.DATAFIELD_AS_CIRCLES];\r\n this.options = data[BaseJaceWidgetConstants.OPTIONS] ?? {};\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 ng13+ 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}\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 \"../../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}\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 /**\r\n * Recupera la dashboard specificata dal backend specificato per l'account specificato.\r\n * Usata dal component DashboardComponent\r\n * @param backendid id del backend che pubblica questa dashboard\r\n * @param idaccount idaccount dell'utente che sta visitando questa dashboard\r\n * @param dashboardName identificativo della dashboard da recuperare\r\n * @returns JaceDashboardLayoutDetail layout della dashboard\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 /**\r\n *Salva le impostazioni della dashboard (es. preferenze specifiche dell'utente)\r\n * @param dto dati di salvataggio\r\n * @returns CallResult\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 /**\r\n * Recupera i dati di una specifica Widget. Chiamato dal metodo refreshData() di BaseWidgetComponent.\r\n * @param backendid id del backend che pubblica i dati di questa Widget\r\n * @param name nome univoco di questa Widget\r\n * @param options dizionario di configurazioni impostate sulla specifica Widget (aka configurazioni particolari)\r\n * @returns Un oggetto any con i dati della Widget (Nota: ogni Widget è responsabile di interpretare i propri dati)\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 './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 './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 \"../../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 /**\r\n * Ascolta i cambiamenti sull'input DashboardDate e, se è cambiata, lancia refreshData()\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 service DashboardFeatureService.\r\n * Imposta il model con i dati restituiti (setData) ed imposta il campo dataReady del component 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 * HOOK: chiamato da refreshData() permette di modificare/aggiornare i parametri della chiamata GetWidgetData (della service DashboardFeatureService) 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}\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\nexport * from './lib/tokens';\r\nexport * from './lib/dashboard-feature.module';\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//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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"}
|