@esfaenza/dashboard-feature 15.2.13 → 19.2.0
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 +988 -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/jace-dsh-multiprog.component.d.ts +26 -26
- package/lib/dashboard-feature.module.d.ts +22 -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 -32
- package/lib/models/widgets/IJaceWidgetModel.d.ts +33 -33
- package/lib/models/widgets/JaceChartWidgetModel.d.ts +8 -8
- package/lib/models/widgets/JaceCounterWidgetModel.d.ts +10 -10
- package/lib/models/widgets/JaceListWidgetModel.d.ts +16 -16
- package/lib/models/widgets/JaceMultiprogWidgetModel.d.ts +9 -9
- 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 +23 -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 -24
- package/esm2020/lib/models/widgets/IJaceWidgetModel.mjs +0 -2
- package/esm2020/lib/models/widgets/JaceChartWidgetModel.mjs +0 -27
- package/esm2020/lib/models/widgets/JaceCounterWidgetModel.mjs +0 -23
- package/esm2020/lib/models/widgets/JaceListWidgetModel.mjs +0 -39
- package/esm2020/lib/models/widgets/JaceMultiprogWidgetModel.mjs +0 -28
- 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 -1041
- package/fesm2015/esfaenza-dashboard-feature.mjs.map +0 -1
- package/fesm2020/esfaenza-dashboard-feature.mjs +0 -1024
- package/fesm2020/esfaenza-dashboard-feature.mjs.map +0 -1
|
@@ -0,0 +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/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 standalone: false\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> 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 { 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 standalone: false\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 standalone: false\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 standalone: false\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 <!-- TODO: riportare in vita la parte grafica... con calma -->\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 <mat-progress-bar [value]=\"model.progressValues[i]\" [mode]=\"'determinate'\" *ngIf=\"!model.circleProgress\">\r\n </mat-progress-bar> -->\r\n <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}","import { 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\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 { AfterViewInit, 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 { 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 { Subject, Subscription, timer } from \"rxjs\";\r\nimport { map, 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 standalone: false\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 InOutFormat=\"date\" [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 { Injectable } from '@angular/core';\r\nimport { JaceDashboardLayoutDetail } from '../models/externals/JaceDashboardLayoutDetail';\r\nimport { Observable } 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 { 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 { 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 FormsAndValidationsModule,\r\n EsChartsModule,\r\n HttpserviceModule\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 } 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 { 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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"}
|
package/index.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Generated bundle index. Do not edit.
|
|
3
|
-
*/
|
|
4
|
-
/// <amd-module name="@esfaenza/dashboard-feature" />
|
|
5
|
-
export * from './public-api';
|
|
1
|
+
/**
|
|
2
|
+
* Generated bundle index. Do not edit.
|
|
3
|
+
*/
|
|
4
|
+
/// <amd-module name="@esfaenza/dashboard-feature" />
|
|
5
|
+
export * from './public-api';
|
|
@@ -1,46 +1,46 @@
|
|
|
1
|
-
import { AfterViewInit, ChangeDetectorRef, OnChanges, OnDestroy, OnInit, QueryList, SimpleChanges, ViewContainerRef } from "@angular/core";
|
|
2
|
-
import { JaceDashboardConfig } from "../../models/config/JaceDashboardConfig";
|
|
3
|
-
import { IJaceWidgetModel } from "../../models/widgets/IJaceWidgetModel";
|
|
4
|
-
import { InterComService } from "@esfaenza/extensions";
|
|
5
|
-
import { ActivatedRoute } from "@angular/router";
|
|
6
|
-
import { JaceDashboardLayoutDetail } from "../../models/externals/JaceDashboardLayoutDetail";
|
|
7
|
-
import { DashboardWidgetFactory } from "../../services/DashboardWidgetFactory";
|
|
8
|
-
import { Subject, Subscription } from "rxjs";
|
|
9
|
-
import { IDashboardFeatureDataService } from "../../services/IDashboardFeatureDataService";
|
|
10
|
-
import * as i0 from "@angular/core";
|
|
11
|
-
/**
|
|
12
|
-
* Componente di base che rappresenta una dashboard.
|
|
13
|
-
* Utilizza Gridster2 per il layout delle widget [Gridster2](https://tiberiuzuld.github.io/angular-gridster2/)
|
|
14
|
-
*/
|
|
15
|
-
export declare class DashboardComponent implements OnInit, AfterViewInit, OnDestroy, OnChanges {
|
|
16
|
-
private dshService;
|
|
17
|
-
private intercom;
|
|
18
|
-
private route;
|
|
19
|
-
private cmpFactory;
|
|
20
|
-
private cdr;
|
|
21
|
-
/**
|
|
22
|
-
* Configurazione di questa dashboard.
|
|
23
|
-
* Contiene anche le configurazioni di layout di Gridster2
|
|
24
|
-
*/
|
|
25
|
-
Configuration: JaceDashboardConfig;
|
|
26
|
-
dashboardDate: Date;
|
|
27
|
-
dashboardLayout?: JaceDashboardLayoutDetail;
|
|
28
|
-
widgetDefinitions: (IJaceWidgetModel | null)[];
|
|
29
|
-
changesSub?: Subscription;
|
|
30
|
-
trackedSubscriptions: Subscription[];
|
|
31
|
-
readonly destroySignal$: Subject<void>;
|
|
32
|
-
gridItemRefs: QueryList<ViewContainerRef>;
|
|
33
|
-
constructor(dshService: IDashboardFeatureDataService, intercom: InterComService, route: ActivatedRoute, cmpFactory: DashboardWidgetFactory, cdr: ChangeDetectorRef);
|
|
34
|
-
ngOnInit(): void;
|
|
35
|
-
ngAfterViewInit(): void;
|
|
36
|
-
ngOnDestroy(): void;
|
|
37
|
-
clearTrackedSubscriptions(): void;
|
|
38
|
-
ngOnChanges(changes: SimpleChanges): void;
|
|
39
|
-
reloadData(): void;
|
|
40
|
-
removeItem(widgetName: string): void;
|
|
41
|
-
saveDashboard(): void;
|
|
42
|
-
renderLayout(comps: QueryList<ViewContainerRef>): void;
|
|
43
|
-
addItem(): void;
|
|
44
|
-
static ɵfac: i0.ɵɵFactoryDeclaration<DashboardComponent, never>;
|
|
45
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<DashboardComponent, "es-dashboard", never, { "Configuration": "Configuration"; }, {}, never, never, false, never>;
|
|
46
|
-
}
|
|
1
|
+
import { AfterViewInit, ChangeDetectorRef, OnChanges, OnDestroy, OnInit, QueryList, SimpleChanges, ViewContainerRef } from "@angular/core";
|
|
2
|
+
import { JaceDashboardConfig } from "../../models/config/JaceDashboardConfig";
|
|
3
|
+
import { IJaceWidgetModel } from "../../models/widgets/IJaceWidgetModel";
|
|
4
|
+
import { InterComService } from "@esfaenza/extensions";
|
|
5
|
+
import { ActivatedRoute } from "@angular/router";
|
|
6
|
+
import { JaceDashboardLayoutDetail } from "../../models/externals/JaceDashboardLayoutDetail";
|
|
7
|
+
import { DashboardWidgetFactory } from "../../services/DashboardWidgetFactory";
|
|
8
|
+
import { Subject, Subscription } from "rxjs";
|
|
9
|
+
import { IDashboardFeatureDataService } from "../../services/IDashboardFeatureDataService";
|
|
10
|
+
import * as i0 from "@angular/core";
|
|
11
|
+
/**
|
|
12
|
+
* Componente di base che rappresenta una dashboard.
|
|
13
|
+
* Utilizza Gridster2 per il layout delle widget [Gridster2](https://tiberiuzuld.github.io/angular-gridster2/)
|
|
14
|
+
*/
|
|
15
|
+
export declare class DashboardComponent implements OnInit, AfterViewInit, OnDestroy, OnChanges {
|
|
16
|
+
private dshService;
|
|
17
|
+
private intercom;
|
|
18
|
+
private route;
|
|
19
|
+
private cmpFactory;
|
|
20
|
+
private cdr;
|
|
21
|
+
/**
|
|
22
|
+
* Configurazione di questa dashboard.
|
|
23
|
+
* Contiene anche le configurazioni di layout di Gridster2
|
|
24
|
+
*/
|
|
25
|
+
Configuration: JaceDashboardConfig;
|
|
26
|
+
dashboardDate: Date;
|
|
27
|
+
dashboardLayout?: JaceDashboardLayoutDetail;
|
|
28
|
+
widgetDefinitions: (IJaceWidgetModel | null)[];
|
|
29
|
+
changesSub?: Subscription;
|
|
30
|
+
trackedSubscriptions: Subscription[];
|
|
31
|
+
readonly destroySignal$: Subject<void>;
|
|
32
|
+
gridItemRefs: QueryList<ViewContainerRef>;
|
|
33
|
+
constructor(dshService: IDashboardFeatureDataService, intercom: InterComService, route: ActivatedRoute, cmpFactory: DashboardWidgetFactory, cdr: ChangeDetectorRef);
|
|
34
|
+
ngOnInit(): void;
|
|
35
|
+
ngAfterViewInit(): void;
|
|
36
|
+
ngOnDestroy(): void;
|
|
37
|
+
clearTrackedSubscriptions(): void;
|
|
38
|
+
ngOnChanges(changes: SimpleChanges): void;
|
|
39
|
+
reloadData(): void;
|
|
40
|
+
removeItem(widgetName: string): void;
|
|
41
|
+
saveDashboard(): void;
|
|
42
|
+
renderLayout(comps: QueryList<ViewContainerRef>): void;
|
|
43
|
+
addItem(): void;
|
|
44
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<DashboardComponent, never>;
|
|
45
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<DashboardComponent, "es-dashboard", never, { "Configuration": { "alias": "Configuration"; "required": false; }; }, {}, never, never, false, never>;
|
|
46
|
+
}
|
|
@@ -1,47 +1,44 @@
|
|
|
1
|
-
import { EventEmitter, SimpleChanges } from "@angular/core";
|
|
2
|
-
import { IJaceWidgetModel } from "../../models/widgets/IJaceWidgetModel";
|
|
3
|
-
import { IWidgetComponent } from "./IWidgetComponent";
|
|
4
|
-
import { IDashboardFeatureDataService } from "../../services/IDashboardFeatureDataService";
|
|
5
|
-
import * as i0 from "@angular/core";
|
|
6
|
-
/**
|
|
7
|
-
* Classe di base astratta per la creazione di Widget custom.
|
|
8
|
-
*/
|
|
9
|
-
export declare abstract class BaseWidgetComponent<T extends IJaceWidgetModel> implements IWidgetComponent {
|
|
10
|
-
protected dshService: IDashboardFeatureDataService;
|
|
11
|
-
model?: T;
|
|
12
|
-
DashboardDate: Date;
|
|
13
|
-
OnRemove: EventEmitter<string>;
|
|
14
|
-
configuration: boolean;
|
|
15
|
-
dataReady: boolean;
|
|
16
|
-
lastdate: string;
|
|
17
|
-
constructor(dshService: IDashboardFeatureDataService);
|
|
18
|
-
setWidgetModel(dshBackendId: string, widgetModel: IJaceWidgetModel): void;
|
|
19
|
-
ngOnInit(): void;
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
static ɵfac: i0.ɵɵFactoryDeclaration<BaseWidgetComponent<any>, never>;
|
|
46
|
-
static ɵprov: i0.ɵɵInjectableDeclaration<BaseWidgetComponent<any>>;
|
|
47
|
-
}
|
|
1
|
+
import { EventEmitter, SimpleChanges } from "@angular/core";
|
|
2
|
+
import { IJaceWidgetModel } from "../../models/widgets/IJaceWidgetModel";
|
|
3
|
+
import { IWidgetComponent } from "./IWidgetComponent";
|
|
4
|
+
import { IDashboardFeatureDataService } from "../../services/IDashboardFeatureDataService";
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
/**
|
|
7
|
+
* Classe di base astratta per la creazione di Widget custom.
|
|
8
|
+
*/
|
|
9
|
+
export declare abstract class BaseWidgetComponent<T extends IJaceWidgetModel> implements IWidgetComponent {
|
|
10
|
+
protected dshService: IDashboardFeatureDataService;
|
|
11
|
+
model?: T;
|
|
12
|
+
DashboardDate: Date;
|
|
13
|
+
OnRemove: EventEmitter<string>;
|
|
14
|
+
configuration: boolean;
|
|
15
|
+
dataReady: boolean;
|
|
16
|
+
lastdate: string;
|
|
17
|
+
constructor(dshService: IDashboardFeatureDataService);
|
|
18
|
+
setWidgetModel(dshBackendId: string, widgetModel: IJaceWidgetModel): void;
|
|
19
|
+
ngOnInit(): void;
|
|
20
|
+
ngOnChanges(changes: SimpleChanges): void;
|
|
21
|
+
/**
|
|
22
|
+
* Prepara i parametri e lancia la chiamata GetWidgetData della DashboardFeatureService.
|
|
23
|
+
* Imposta il model con i dati restituiti (setData) e imposta la variabile dataReady del campo a true
|
|
24
|
+
*/
|
|
25
|
+
refreshData(): void;
|
|
26
|
+
/**
|
|
27
|
+
* Modifica/aggiorna i parametri della chiamata GetWidgetData prima di eseguirla. *
|
|
28
|
+
*
|
|
29
|
+
* @param pars parametri della chiamata. Se impostata, già contengono il parametro 'DT' con la data selezionata a livello di dashboard
|
|
30
|
+
*/
|
|
31
|
+
abstract prepareGetDataParameters(pars: {
|
|
32
|
+
[key: string]: string;
|
|
33
|
+
}): void;
|
|
34
|
+
/**
|
|
35
|
+
* Da chiamare quando l'utente preme il pulsante 'rimuovi' nella toolbar della widget.
|
|
36
|
+
*/
|
|
37
|
+
removeWidget(): void;
|
|
38
|
+
/**
|
|
39
|
+
* Da chiamare quando viene premuto il pulsante 'configure' nella toolbar della widget
|
|
40
|
+
*/
|
|
41
|
+
configureWidget(): void;
|
|
42
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<BaseWidgetComponent<any>, never>;
|
|
43
|
+
static ɵprov: i0.ɵɵInjectableDeclaration<BaseWidgetComponent<any>>;
|
|
44
|
+
}
|
|
@@ -1,23 +1,23 @@
|
|
|
1
|
-
import { EventEmitter } from "@angular/core";
|
|
2
|
-
import { IJaceWidgetModel } from "../../models/widgets/IJaceWidgetModel";
|
|
3
|
-
/**
|
|
4
|
-
* Interfaccia che ogni Component che rappresenta una widget deve implementare.
|
|
5
|
-
*/
|
|
6
|
-
export interface IWidgetComponent {
|
|
7
|
-
/**
|
|
8
|
-
* Se rilevante per questa dashboard, in questo input viene impostata la data selezionata dall'utente.
|
|
9
|
-
*/
|
|
10
|
-
DashboardDate: Date;
|
|
11
|
-
/**
|
|
12
|
-
* Lanciato quando questa widget viene rimossa dalla dashboard
|
|
13
|
-
*/
|
|
14
|
-
OnRemove: EventEmitter<string>;
|
|
15
|
-
/**
|
|
16
|
-
* Imposta il modello della widget nel componente e l'id del backend da contattare impostato a livello di dashboard (vedi JaceDashboardConfig).
|
|
17
|
-
*
|
|
18
|
-
* Lanciata subito dopo la creazione del Componente, durante il rendering del layout della dashboard.
|
|
19
|
-
*
|
|
20
|
-
* @param widgetModel Imposta il modello della widget letto nel layout ricevuto dal BE
|
|
21
|
-
*/
|
|
22
|
-
setWidgetModel(dshBackendId: string, widgetModel: IJaceWidgetModel): void;
|
|
23
|
-
}
|
|
1
|
+
import { EventEmitter } from "@angular/core";
|
|
2
|
+
import { IJaceWidgetModel } from "../../models/widgets/IJaceWidgetModel";
|
|
3
|
+
/**
|
|
4
|
+
* Interfaccia che ogni Component che rappresenta una widget deve implementare.
|
|
5
|
+
*/
|
|
6
|
+
export interface IWidgetComponent {
|
|
7
|
+
/**
|
|
8
|
+
* Se rilevante per questa dashboard, in questo input viene impostata la data selezionata dall'utente.
|
|
9
|
+
*/
|
|
10
|
+
DashboardDate: Date;
|
|
11
|
+
/**
|
|
12
|
+
* Lanciato quando questa widget viene rimossa dalla dashboard
|
|
13
|
+
*/
|
|
14
|
+
OnRemove: EventEmitter<string>;
|
|
15
|
+
/**
|
|
16
|
+
* Imposta il modello della widget nel componente e l'id del backend da contattare impostato a livello di dashboard (vedi JaceDashboardConfig).
|
|
17
|
+
*
|
|
18
|
+
* Lanciata subito dopo la creazione del Componente, durante il rendering del layout della dashboard.
|
|
19
|
+
*
|
|
20
|
+
* @param widgetModel Imposta il modello della widget letto nel layout ricevuto dal BE
|
|
21
|
+
*/
|
|
22
|
+
setWidgetModel(dshBackendId: string, widgetModel: IJaceWidgetModel): void;
|
|
23
|
+
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
export declare enum JaceWidgetTypes {
|
|
2
|
-
CHART = "CHART",
|
|
3
|
-
COUNTER = "COUNTER",
|
|
4
|
-
LIST = "LIST",
|
|
5
|
-
MULTIPROGRESS = "MULTIPROGRESS"
|
|
6
|
-
}
|
|
1
|
+
export declare enum JaceWidgetTypes {
|
|
2
|
+
CHART = "CHART",
|
|
3
|
+
COUNTER = "COUNTER",
|
|
4
|
+
LIST = "LIST",
|
|
5
|
+
MULTIPROGRESS = "MULTIPROGRESS"
|
|
6
|
+
}
|
|
@@ -1,25 +1,25 @@
|
|
|
1
|
-
import { EventEmitter, OnInit, SimpleChanges } from '@angular/core';
|
|
2
|
-
import { IJaceWidgetModel } from '../../../models/widgets/IJaceWidgetModel';
|
|
3
|
-
import { IWidgetComponent } from '../IWidgetComponent';
|
|
4
|
-
import { JaceChartWidgetModel } from '../../../models/widgets/JaceChartWidgetModel';
|
|
5
|
-
import { IDashboardFeatureDataService } from '../../../services/IDashboardFeatureDataService';
|
|
6
|
-
import * as i0 from "@angular/core";
|
|
7
|
-
export declare class JaceChartWidgetComponent implements IWidgetComponent, OnInit {
|
|
8
|
-
private dshService;
|
|
9
|
-
model?: JaceChartWidgetModel;
|
|
10
|
-
DashboardDate: Date;
|
|
11
|
-
OnRemove: EventEmitter<string>;
|
|
12
|
-
configuration: boolean;
|
|
13
|
-
dataReady: boolean;
|
|
14
|
-
lastdate: string;
|
|
15
|
-
chartName: string;
|
|
16
|
-
constructor(dshService: IDashboardFeatureDataService);
|
|
17
|
-
setWidgetModel(dshBackendId: string, widgetModel: IJaceWidgetModel): void;
|
|
18
|
-
ngOnInit(): void;
|
|
19
|
-
ngOnChanges(changes: SimpleChanges): void;
|
|
20
|
-
refreshData(): void;
|
|
21
|
-
removeWidget(): void;
|
|
22
|
-
configure(): void;
|
|
23
|
-
static ɵfac: i0.ɵɵFactoryDeclaration<JaceChartWidgetComponent, never>;
|
|
24
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<JaceChartWidgetComponent, "jace-dsh-chart", never, { "DashboardDate": "DashboardDate"; }, { "OnRemove": "OnRemove"; }, never, never, false, never>;
|
|
25
|
-
}
|
|
1
|
+
import { EventEmitter, OnInit, SimpleChanges } from '@angular/core';
|
|
2
|
+
import { IJaceWidgetModel } from '../../../models/widgets/IJaceWidgetModel';
|
|
3
|
+
import { IWidgetComponent } from '../IWidgetComponent';
|
|
4
|
+
import { JaceChartWidgetModel } from '../../../models/widgets/JaceChartWidgetModel';
|
|
5
|
+
import { IDashboardFeatureDataService } from '../../../services/IDashboardFeatureDataService';
|
|
6
|
+
import * as i0 from "@angular/core";
|
|
7
|
+
export declare class JaceChartWidgetComponent implements IWidgetComponent, OnInit {
|
|
8
|
+
private dshService;
|
|
9
|
+
model?: JaceChartWidgetModel;
|
|
10
|
+
DashboardDate: Date;
|
|
11
|
+
OnRemove: EventEmitter<string>;
|
|
12
|
+
configuration: boolean;
|
|
13
|
+
dataReady: boolean;
|
|
14
|
+
lastdate: string;
|
|
15
|
+
chartName: string;
|
|
16
|
+
constructor(dshService: IDashboardFeatureDataService);
|
|
17
|
+
setWidgetModel(dshBackendId: string, widgetModel: IJaceWidgetModel): void;
|
|
18
|
+
ngOnInit(): void;
|
|
19
|
+
ngOnChanges(changes: SimpleChanges): void;
|
|
20
|
+
refreshData(): void;
|
|
21
|
+
removeWidget(): void;
|
|
22
|
+
configure(): void;
|
|
23
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<JaceChartWidgetComponent, never>;
|
|
24
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<JaceChartWidgetComponent, "jace-dsh-chart", never, { "DashboardDate": { "alias": "DashboardDate"; "required": false; }; }, { "OnRemove": "OnRemove"; }, never, never, false, never>;
|
|
25
|
+
}
|
|
@@ -1,24 +1,24 @@
|
|
|
1
|
-
import { EventEmitter, OnInit, SimpleChanges } from '@angular/core';
|
|
2
|
-
import { IJaceWidgetModel } from '../../../models/widgets/IJaceWidgetModel';
|
|
3
|
-
import { IWidgetComponent } from '../IWidgetComponent';
|
|
4
|
-
import { JaceCounterWidgetModel } from '../../../models/widgets/JaceCounterWidgetModel';
|
|
5
|
-
import { IDashboardFeatureDataService } from '../../../services/IDashboardFeatureDataService';
|
|
6
|
-
import * as i0 from "@angular/core";
|
|
7
|
-
export declare class JaceCounterWidgetComponent implements IWidgetComponent, OnInit {
|
|
8
|
-
private dshService;
|
|
9
|
-
model?: JaceCounterWidgetModel;
|
|
10
|
-
DashboardDate: Date;
|
|
11
|
-
OnRemove: EventEmitter<string>;
|
|
12
|
-
configuration: boolean;
|
|
13
|
-
dataReady: boolean;
|
|
14
|
-
lastdate: string;
|
|
15
|
-
constructor(dshService: IDashboardFeatureDataService);
|
|
16
|
-
setWidgetModel(dshBackendId: string, widgetModel: IJaceWidgetModel): void;
|
|
17
|
-
ngOnInit(): void;
|
|
18
|
-
ngOnChanges(changes: SimpleChanges): void;
|
|
19
|
-
refreshData(): void;
|
|
20
|
-
removeWidget(): void;
|
|
21
|
-
configure(): void;
|
|
22
|
-
static ɵfac: i0.ɵɵFactoryDeclaration<JaceCounterWidgetComponent, never>;
|
|
23
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<JaceCounterWidgetComponent, "jace-dsh-counter", never, { "DashboardDate": "DashboardDate"; }, { "OnRemove": "OnRemove"; }, never, never, false, never>;
|
|
24
|
-
}
|
|
1
|
+
import { EventEmitter, OnInit, SimpleChanges } from '@angular/core';
|
|
2
|
+
import { IJaceWidgetModel } from '../../../models/widgets/IJaceWidgetModel';
|
|
3
|
+
import { IWidgetComponent } from '../IWidgetComponent';
|
|
4
|
+
import { JaceCounterWidgetModel } from '../../../models/widgets/JaceCounterWidgetModel';
|
|
5
|
+
import { IDashboardFeatureDataService } from '../../../services/IDashboardFeatureDataService';
|
|
6
|
+
import * as i0 from "@angular/core";
|
|
7
|
+
export declare class JaceCounterWidgetComponent implements IWidgetComponent, OnInit {
|
|
8
|
+
private dshService;
|
|
9
|
+
model?: JaceCounterWidgetModel;
|
|
10
|
+
DashboardDate: Date;
|
|
11
|
+
OnRemove: EventEmitter<string>;
|
|
12
|
+
configuration: boolean;
|
|
13
|
+
dataReady: boolean;
|
|
14
|
+
lastdate: string;
|
|
15
|
+
constructor(dshService: IDashboardFeatureDataService);
|
|
16
|
+
setWidgetModel(dshBackendId: string, widgetModel: IJaceWidgetModel): void;
|
|
17
|
+
ngOnInit(): void;
|
|
18
|
+
ngOnChanges(changes: SimpleChanges): void;
|
|
19
|
+
refreshData(): void;
|
|
20
|
+
removeWidget(): void;
|
|
21
|
+
configure(): void;
|
|
22
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<JaceCounterWidgetComponent, never>;
|
|
23
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<JaceCounterWidgetComponent, "jace-dsh-counter", never, { "DashboardDate": { "alias": "DashboardDate"; "required": false; }; }, { "OnRemove": "OnRemove"; }, never, never, false, never>;
|
|
24
|
+
}
|