@esfaenza/dashboard-feature 11.2.2
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 -0
- package/bundles/esfaenza-dashboard-feature.umd.js +1328 -0
- package/bundles/esfaenza-dashboard-feature.umd.js.map +1 -0
- package/bundles/esfaenza-dashboard-feature.umd.min.js +2 -0
- package/bundles/esfaenza-dashboard-feature.umd.min.js.map +1 -0
- package/esfaenza-dashboard-feature.d.ts +8 -0
- package/esfaenza-dashboard-feature.metadata.json +1 -0
- package/esm2015/esfaenza-dashboard-feature.js +9 -0
- package/esm2015/lib/components/dashboard/dashboard.component.js +157 -0
- package/esm2015/lib/components/dashboard/dashboard.component.loc.js +16 -0
- package/esm2015/lib/components/widgets/BaseWidgetComponent.js +81 -0
- package/esm2015/lib/components/widgets/IWidgetComponent.js +2 -0
- package/esm2015/lib/components/widgets/JaceWidgetTypes.js +8 -0
- package/esm2015/lib/components/widgets/chart/jace-dsh-chart.component.js +77 -0
- package/esm2015/lib/components/widgets/counter/jace-dsh-counter.component.js +76 -0
- package/esm2015/lib/components/widgets/list/jace-dsh-list.component.js +89 -0
- package/esm2015/lib/components/widgets/multiprog/jace-dsh-multiprog.component.js +78 -0
- package/esm2015/lib/dashboard-feature.module.js +98 -0
- package/esm2015/lib/models/config/JaceDashboardConfig.js +49 -0
- package/esm2015/lib/models/externals/JaceDashboardLayoutDetail.js +4 -0
- package/esm2015/lib/models/externals/JaceWidgetInstanceDetail.js +7 -0
- package/esm2015/lib/models/externals/Repository.js +6 -0
- package/esm2015/lib/models/externals/SaveJaceDashboardLayoutDTO.js +3 -0
- package/esm2015/lib/models/options/DefaultDashboardModuleOptions.js +36 -0
- package/esm2015/lib/models/options/IDashboardModuleOptions.js +2 -0
- package/esm2015/lib/models/options/IWidgetTypeConfig.js +2 -0
- package/esm2015/lib/models/widgets/BaseJaceWidgetModel.js +22 -0
- package/esm2015/lib/models/widgets/IJaceWidgetModel.js +2 -0
- package/esm2015/lib/models/widgets/JaceChartWidgetModel.js +27 -0
- package/esm2015/lib/models/widgets/JaceCounterWidgetModel.js +23 -0
- package/esm2015/lib/models/widgets/JaceListWidgetModel.js +39 -0
- package/esm2015/lib/models/widgets/JaceMultiprogWidgetModel.js +29 -0
- package/esm2015/lib/private-injection-tokens.js +3 -0
- package/esm2015/lib/public-injection-tokens.js +15 -0
- package/esm2015/lib/services/DashboardWidgetFactory.js +66 -0
- package/esm2015/lib/services/IDashboardFeatureDataService.js +2 -0
- package/esm2015/lib/services/dashboard-feature.service.js +39 -0
- package/esm2015/public-api.js +20 -0
- package/fesm2015/esfaenza-dashboard-feature.js +955 -0
- package/fesm2015/esfaenza-dashboard-feature.js.map +1 -0
- package/lib/components/dashboard/dashboard.component.d.ts +44 -0
- package/lib/components/dashboard/dashboard.component.loc.d.ts +5 -0
- package/lib/components/widgets/BaseWidgetComponent.d.ts +41 -0
- package/lib/components/widgets/IWidgetComponent.d.ts +23 -0
- package/lib/components/widgets/JaceWidgetTypes.d.ts +6 -0
- package/lib/components/widgets/chart/jace-dsh-chart.component.d.ts +22 -0
- package/lib/components/widgets/counter/jace-dsh-counter.component.d.ts +21 -0
- package/lib/components/widgets/list/jace-dsh-list.component.d.ts +24 -0
- package/lib/components/widgets/multiprog/jace-dsh-multiprog.component.d.ts +23 -0
- package/lib/dashboard-feature.module.d.ts +8 -0
- package/lib/models/config/JaceDashboardConfig.d.ts +46 -0
- package/lib/models/externals/JaceDashboardLayoutDetail.d.ts +6 -0
- package/lib/models/externals/JaceWidgetInstanceDetail.d.ts +17 -0
- package/lib/models/externals/Repository.d.ts +5 -0
- package/lib/models/externals/SaveJaceDashboardLayoutDTO.d.ts +4 -0
- package/lib/models/options/DefaultDashboardModuleOptions.d.ts +7 -0
- package/lib/models/options/IDashboardModuleOptions.d.ts +5 -0
- package/lib/models/options/IWidgetTypeConfig.d.ts +8 -0
- package/lib/models/widgets/BaseJaceWidgetModel.d.ts +31 -0
- package/lib/models/widgets/IJaceWidgetModel.d.ts +13 -0
- package/lib/models/widgets/JaceChartWidgetModel.d.ts +8 -0
- package/lib/models/widgets/JaceCounterWidgetModel.d.ts +10 -0
- package/lib/models/widgets/JaceListWidgetModel.d.ts +15 -0
- package/lib/models/widgets/JaceMultiprogWidgetModel.d.ts +9 -0
- package/lib/private-injection-tokens.d.ts +3 -0
- package/lib/public-injection-tokens.d.ts +15 -0
- package/lib/services/DashboardWidgetFactory.d.ts +20 -0
- package/lib/services/IDashboardFeatureDataService.d.ts +11 -0
- package/lib/services/dashboard-feature.service.d.ts +16 -0
- package/package.json +27 -0
- package/public-api.d.ts +16 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"esfaenza-dashboard-feature.js","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/counter/jace-dsh-counter.component.ts","../../../projects/dashboard-feature/src/lib/components/widgets/list/jace-dsh-list.component.ts","../../../projects/dashboard-feature/src/lib/components/widgets/multiprog/jace-dsh-multiprog.component.ts","../../../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/components/dashboard/dashboard.component.loc.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/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/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 * Injection Token della stringa che rappresenta il 'locale' nel sistema @es-faenza/localization\r\n */\r\nexport const DSH_LOCALE: InjectionToken<string> = new InjectionToken<string>('DSH_LOCALE');\r\n/**\r\n * Injection Token dell'url del FE\r\n */\r\nexport const DSH_BACKEND_URL: InjectionToken<string> = new InjectionToken<string>('DSH_BACKEND_URL');\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\n\r\n","import {InjectionToken} from \"@angular/core\";\r\nimport { IDashboardModuleOptions } from \"./models/options/IDashboardModuleOptions\";\r\n\r\n\r\nexport const DSH_OPTIONS: InjectionToken<IDashboardModuleOptions> = new InjectionToken<IDashboardModuleOptions>('DSH_MODULE_OPTIONS');","import { Component, EventEmitter, Inject, Input, OnInit, Output, SimpleChanges } from '@angular/core';\r\n\r\nimport { IJaceWidgetModel } from '../../../models/widgets/IJaceWidgetModel';\r\nimport { IWidgetComponent } from '../IWidgetComponent';\r\n\r\nimport { JaceChartWidgetModel } from '../../../models/widgets/JaceChartWidgetModel';\r\nimport { DSH_DATA_SERVICE } from '../../../public-injection-tokens';\r\nimport { IDashboardFeatureDataService } from '../../../services/IDashboardFeatureDataService';\r\n\r\n@Component({\r\n selector: 'jace-dsh-chart',\r\n templateUrl: './jace-dsh-chart.component.html',\r\n styleUrls: ['./jace-dsh-chart.component.css']\r\n})\r\n\r\nexport class JaceChartWidgetComponent implements IWidgetComponent, OnInit {\r\n\r\n model?: JaceChartWidgetModel;\r\n\r\n @Input() DashboardDate!: Date;\r\n @Output() OnRemove = new EventEmitter<string>();\r\n\r\n configuration: boolean = false;\r\n dataReady: boolean = false;\r\n lastdate: string = \"\";\r\n public chartName:string=\"\";\r\n\r\n constructor(@Inject(DSH_DATA_SERVICE) private dshService: IDashboardFeatureDataService) { }\r\n\r\n setWidgetModel(widgetModel: IJaceWidgetModel): void {\r\n this.model = <JaceChartWidgetModel>widgetModel;\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.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}","import { ChangeDetectionStrategy, Component, EventEmitter, Inject, Input, OnInit, Output, SimpleChanges } from '@angular/core';\r\n\r\nimport { IJaceWidgetModel } from '../../../models/widgets/IJaceWidgetModel';\r\nimport { IWidgetComponent } from '../IWidgetComponent';\r\nimport { JaceCounterWidgetModel } from '../../../models/widgets/JaceCounterWidgetModel';\r\n\r\nimport { DSH_DATA_SERVICE } from '../../../public-injection-tokens';\r\nimport { IDashboardFeatureDataService } from '../../../services/IDashboardFeatureDataService';\r\n\r\n@Component({\r\n selector: 'jace-dsh-counter',\r\n templateUrl: './jace-dsh-counter.component.html',\r\n styleUrls: ['./jace-dsh-counter.component.css'],\r\n 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 setWidgetModel(widgetModel: IJaceWidgetModel): void {\r\n this.model = <JaceCounterWidgetModel>widgetModel;\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.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 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}","import { Component, EventEmitter, Inject, Input, OnInit, Output, SimpleChanges } from '@angular/core';\r\nimport { IJaceWidgetModel } from '../../../models/widgets/IJaceWidgetModel';\r\nimport { IWidgetComponent } from '../IWidgetComponent';\r\nimport { JaceListItemWidget, JaceListWidgetModel } from '../../../models/widgets/JaceListWidgetModel';\r\nimport { Router } from '@angular/router';\r\nimport { DSH_DATA_SERVICE } from '../../../public-injection-tokens';\r\nimport { IDashboardFeatureDataService } from '../../../services/IDashboardFeatureDataService';\r\n\r\n@Component({\r\n selector: 'jace-dsh-list',\r\n templateUrl: './jace-dsh-list.component.html',\r\n styleUrls: ['./jace-dsh-list.component.css']\r\n})\r\n\r\nexport class JaceListWidgetComponent implements IWidgetComponent, OnInit {\r\n\r\n model?: JaceListWidgetModel;\r\n\r\n @Input() DashboardDate!: Date;\r\n @Output() OnRemove = new EventEmitter<string>();\r\n\r\n configuration: boolean = false;\r\n dataReady: boolean = false;\r\n lastdate: string = \"\";\r\n\r\n constructor(@Inject(DSH_DATA_SERVICE) private dshService: IDashboardFeatureDataService,private router: Router) { }\r\n\r\n setWidgetModel(widgetModel: IJaceWidgetModel): void {\r\n this.model = <JaceListWidgetModel>widgetModel;\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.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}","import { Component, EventEmitter, Inject, Input, OnInit, Output, SimpleChanges } from '@angular/core';\r\n\r\nimport { IJaceWidgetModel } from '../../../models/widgets/IJaceWidgetModel';\r\nimport { IWidgetComponent } from '../IWidgetComponent';\r\n\r\nimport { Router } from '@angular/router';\r\nimport { JaceMultiprogWidgetModel } from '../../../models/widgets/JaceMultiprogWidgetModel';\r\nimport { DSH_DATA_SERVICE } from '../../../public-injection-tokens';\r\nimport { IDashboardFeatureDataService } from '../../../services/IDashboardFeatureDataService';\r\n\r\n@Component({\r\n selector: 'jace-dsh-multiprog',\r\n templateUrl: './jace-dsh-multiprog.component.html',\r\n styleUrls: ['./jace-dsh-multiprog.component.css']\r\n})\r\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(widgetModel: IJaceWidgetModel): void {\r\n this.model = <JaceMultiprogWidgetModel>widgetModel;\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.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}","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\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 }\r\n abstract setData(data?: any): void ;\r\n}","\r\nimport { JaceWidgetInstanceDetail } from \"../externals/JaceWidgetInstanceDetail\";\r\nimport { BaseJaceWidgetModel } from \"./BaseJaceWidgetModel\";\r\n\r\nexport class JaceChartWidgetModel extends BaseJaceWidgetModel {\r\n \r\n chartType: 'pie' | 'line' | 'vertical' | 'vertical-2d' | 'vertical-stacked'='line';\r\n legend: boolean=false;\r\n\r\n //LineChartData | PieChartData | Vertical2DChartData | VerticalChartData | VerticalStackedChartData | any;\r\n chartData: any;\r\n\r\n constructor() {\r\n super();\r\n this.widgetType= \"CHART\"; \r\n }\r\n\r\n setData(data?: any): void {\r\n if (!data)\r\n return;\r\n\r\n if (data['queryerror'])\r\n this.dataError = data['queryerror'];\r\n\r\n if (data['legend'])\r\n this.legend = data['legend'];\r\n else\r\n this.legend = true;\r\n if (data['charttype'])\r\n this.chartType = data['charttype'];\r\n\r\n if (data['chartdata']) {\r\n this.chartData = data['chartdata'];\r\n }\r\n if (this.options && this.options['legend'] == undefined)\r\n this.options['legend'] = true;\r\n }\r\n\r\n}","\r\nimport { BaseJaceWidgetModel } from \"./BaseJaceWidgetModel\";\r\nimport { IJaceWidgetModel } from \"./IJaceWidgetModel\";\r\n\r\nexport class JaceCounterWidgetModel extends BaseJaceWidgetModel {\r\n\r\n superText?: string=undefined;\r\n subText?: string = undefined;\r\n value: number = 0; \r\n icon?: string=undefined;\r\n unit?: string=undefined;\r\n \r\n\r\n constructor() {\r\n super();\r\n this.widgetType= \"COUNTER\"; \r\n }\r\n \r\n\r\n setData(data?: any): void {\r\n if (data['queryerror'])\r\n this.dataError = data['queryerror'];\r\n this.superText = data['supertext'];\r\n this.subText = data['subtext'];\r\n this.value = data['value'];\r\n this.icon = data['icon'];\r\n this.options = data['options'];\r\n this.unit = data['unit'];\r\n }\r\n\r\n \r\n\r\n\r\n\r\n}","import { GridsterItem, GridsterItemComponentInterface } from \"angular-gridster2\";\r\nimport { JaceWidgetInstanceDetail } from \"../externals/JaceWidgetInstanceDetail\";\r\nimport { BaseJaceWidgetModel } from \"./BaseJaceWidgetModel\";\r\nimport { IJaceWidgetModel } from \"./IJaceWidgetModel\";\r\n\r\nexport class JaceListItemWidget {\r\n id?: any;\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 locale!: string;\r\n widgetTypes!: IWidgetTypeConfig[];\r\n\r\n constructor(){\r\n this.locale = \"it-IT\";\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,ComponentFactoryResolver } from '@angular/core';\r\nimport { IWidgetComponent } from '../components/widgets/IWidgetComponent';\r\nimport { JaceDashboardConfig } from '../models/config/JaceDashboardConfig';\r\nimport { JaceWidgetInstanceDetail } from '../models/externals/JaceWidgetInstanceDetail';\r\nimport { IJaceWidgetModel } from '../models/widgets/IJaceWidgetModel';\r\nimport { IDashboardModuleOptions } from '../models/options/IDashboardModuleOptions';\r\nimport { IWidgetTypeConfig } from '../models/options/IWidgetTypeConfig';\r\n\r\n\r\nexport interface IConstructableModel<T> {\r\n new(): T;\r\n}\r\n\r\n//singleton\r\n@Injectable({ providedIn: 'root' })\r\nexport class DashboardWidgetFactory {\r\n\r\n types: { [name: string]: IWidgetTypeConfig } = {};\r\n\r\n //verione ng 13\r\n //constructor() { }\r\n\r\n constructor(private componentFactoryResolver: ComponentFactoryResolver) { }\r\n\r\n\r\n addOption(option: IDashboardModuleOptions) {\r\n\r\n if (option.widgetTypes) {\r\n option.widgetTypes.forEach((o) => {\r\n this.types[o.name] = o;\r\n })\r\n }\r\n }\r\n\r\n //versione ng 13+\r\n /* resolveComponent(type: string, vcr: ViewContainerRef): ComponentRef<IWidgetComponent> | null {\r\n\r\n if (!this.types)\r\n return null;\r\n\r\n let t = this.types[type];\r\n\r\n if (!t)\r\n return null;\r\n\r\n let componentRef: ComponentRef<IWidgetComponent> = vcr.createComponent(t.component);\r\n\r\n return componentRef;\r\n } */\r\n //versione ng11 \r\n resolveComponent(type: string, vcr: ViewContainerRef): ComponentRef<IWidgetComponent> | null {\r\n\r\n if (!this.types)\r\n return null;\r\n\r\n let t = this.types[type];\r\n\r\n if (!t)\r\n return null;\r\n //DEPRECATO dopo ng11: è stato tolto il meccanismo dei ComponentFactory per i componenti dinamici\r\n let cf = this.componentFactoryResolver.resolveComponentFactory(t.component);\r\n let componentRef: ComponentRef<IWidgetComponent> = vcr.createComponent(cf);\r\n\r\n return componentRef;\r\n }\r\n\r\n resolveDefinition(type: string, details: JaceWidgetInstanceDetail): IJaceWidgetModel | null {\r\n\r\n if (!this.types)\r\n return null;\r\n\r\n let t = this.types[type];\r\n\r\n if (!t)\r\n return null;\r\n\r\n let definitionInstance = this.createInstance(t.model);\r\n definitionInstance.configureFromInstanceDetails(details);\r\n\r\n return definitionInstance;\r\n }\r\n\r\n private createInstance<T extends IJaceWidgetModel>(type: IConstructableModel<T>): T {\r\n return new type();\r\n }\r\n\r\n}","import { Injectable, Inject } from \"@angular/core\";\r\nimport { LocalizationService } from \"@esfaenza/localizations\";\r\nimport { IDashboardModuleOptions } from \"../../models/options/IDashboardModuleOptions\";\r\nimport { DSH_OPTIONS } from \"../../private-injection-tokens\";\r\n\r\n\r\n\r\n@Injectable()\r\nexport class DashboardLoc extends LocalizationService {\r\n constructor(@Inject(DSH_OPTIONS) options: IDashboardModuleOptions) {\r\n super(options.locale);\r\n super.set(\"en->it\", \"Dashboard\", [\"Dashboard\"]);\r\n \r\n }\r\n}","import { JaceWidgetInstanceDetail } from \"./JaceWidgetInstanceDetail\";\r\n\r\n\r\nexport class SaveJaceDashboardLayoutDTO {\r\n //TODO eliminare le proprietà che non devono essere usate per la creazione dell'entità\r\n\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 \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 { DashboardLoc } from \"./dashboard.component.loc\";\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 { Subscription } from \"rxjs\";\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: 'dashboard',\r\n encapsulation: ViewEncapsulation.None,\r\n providers: [\r\n { provide: LocalizationService, useClass: DashboardLoc }\r\n ],\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 @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 public lc: LocalizationService,\r\n private route: ActivatedRoute,\r\n private cmpFactory: DashboardWidgetFactory,\r\n private cdr : ChangeDetectorRef\r\n ) {\r\n \r\n this.intercom.send(InboundMessageTypes.Navigation, { sub: false, routeTitle: this.lc.loc(this.route.snapshot.data[\"title\"]) });\r\n }\r\n\r\n \r\n\r\n public ngOnInit() {\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n\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.subscribe((comps: QueryList<ViewContainerRef>) => {\r\n this.renderLayout(comps);\r\n });\r\n //prima volta\r\n /* if(this.Configuration)\r\n this.reloadData(); */\r\n\r\n setTimeout(()=>this.reloadData(),500);\r\n }\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\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 \r\n if(changes.Configuration){\r\n\r\n //appena ho configuration\r\n \r\n\r\n }\r\n }\r\n\r\n reloadData(){\r\n this.dshService.GetUserDashboard(this.Configuration.accountId,this.Configuration.dashboardName).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\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 \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\r\n renderLayout(comps: QueryList<ViewContainerRef>){\r\n\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\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 {\r\n console.log(`Tipo widget sconosciuto ${widgetData.widgetType}`);\r\n return;\r\n }\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(widgetData);\r\n\r\n //setta la callback per OnRemove\r\n let s = componentRef.instance.OnRemove.subscribe(name=>this.removeItem(name));\r\n this.trackedSubscriptions.push(s);\r\n \r\n //componentRef.changeDetectorRef.markForCheck();\r\n\r\n //componentRef.changeDetectorRef.detectChanges();\r\n });\r\n this.cdr.detectChanges();\r\n }\r\n\r\n\r\n addItem() {\r\n\r\n //this.dashboard.push({});\r\n }\r\n}","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';\nimport { JaceDashboardLayoutDetail } from '../models/externals/JaceDashboardLayoutDetail';\nimport { Observable, of } from 'rxjs';\nimport { SaveJaceDashboardLayoutDTO } from '../models/externals/SaveJaceDashboardLayoutDTO';\nimport { CallResult } from '@esfaenza/extensions';\nimport { HTTPService } from '@esfaenza/httpservice';\nimport { DSH_BACKEND_URL } from '../public-injection-tokens';\nimport { HttpParams } from '@angular/common/http';\nimport { Repository } from '../models/externals/Repository';\nimport { IDashboardFeatureDataService } from './IDashboardFeatureDataService';\n\n@Injectable()\nexport class DashboardFeatureAPIDataService implements IDashboardFeatureDataService {\n\n constructor(private http: HTTPService,@Inject(DSH_BACKEND_URL) private backend: string) {}\n\n GetUserDashboard(idaccount: number,dashboardName: string): Observable<JaceDashboardLayoutDetail> {\n\n \n \n let params = new HttpParams();\n params = params.append(\"idaccount\", idaccount.toString());\n params = params.append(\"name\", dashboardName);\n return this.http.get<JaceDashboardLayoutDetail>(this.backend + Repository[\"GET_Dashboard_GetLayout\"], params);\n\n }\n\n SaveUserDashboard(dto: SaveJaceDashboardLayoutDTO): Observable<CallResult> {\n \n return this.http.post<CallResult>(this.backend + Repository[\"POST_Dashboard_SaveLayout\"], dto);\n }\n\n GetWidgetData(name: string, options: { [key: string]: string }): Observable<any> {\n \n let params = new HttpParams();\n params = params.append(\"name\", name.toString());\n if (options && Object.keys(options).length != 0) {\n for (let index = 0; index < Object.keys(options).length; index++) {\n const k = Object.keys(options)[index];\n params = params.append(k, options[k]);\n }\n }\n\n return this.http.get<any>(this.backend + Repository[\"GET_Dashboard_GetWidgetData\"], params)\n }\n} \n\n","\nimport { Inject, ModuleWithProviders, NgModule, Optional } from '@angular/core';\n\nimport { CommonModule } from \"@angular/common\";\nimport { FormsModule } from \"@angular/forms\";\n\nimport { GridsterModule } from 'angular-gridster2';\nimport { MatProgressBarModule } from '@angular/material/progress-bar';\nimport { DSH_OPTIONS } from './private-injection-tokens';\nimport { DefaultDashboardModuleOptions } from './models/options/DefaultDashboardModuleOptions';\nimport { IDashboardModuleOptions } from './models/options/IDashboardModuleOptions';\nimport { DashboardWidgetFactory } from './services/DashboardWidgetFactory';\nimport { DashboardComponent } from './components/dashboard/dashboard.component';\nimport { FormsAndValidationsModule } from '@esfaenza/forms-and-validations';\nimport { EsChartsModule } from '@esfaenza/es-charts'; \nimport { JaceListWidgetComponent } from './components/widgets/list/jace-dsh-list.component';\nimport { JaceCounterWidgetComponent } from './components/widgets/counter/jace-dsh-counter.component';\nimport { JaceChartWidgetComponent } from './components/widgets/chart/jace-dsh-chart.component';\nimport { JaceMultiprogWidgetComponent } from './components/widgets/multiprog/jace-dsh-multiprog.component';\nimport { NgCircleProgressModule } from 'ng-circle-progress';\nimport { HttpserviceModule } from '@esfaenza/httpservice';\nimport { DashboardFeatureAPIDataService } from './services/dashboard-feature.service';\nimport { DSH_DATA_SERVICE } from './public-injection-tokens';\n\nconst MODULES = [\n // Base\n CommonModule,\n FormsModule,\n GridsterModule,\n MatProgressBarModule,\n FormsAndValidationsModule,\n EsChartsModule,\n HttpserviceModule,\n /* EsChartsModule.forRoot({\n locale: myconfig.LOCALE,\n animations: true,\n theme: 'spiritedaway',\n adapter: null,\n debugMode: false\n }), */\n NgCircleProgressModule.forRoot({\n // set defaults here\n radius: 50,\n outerStrokeWidth: 8,\n innerStrokeWidth: 4,\n outerStrokeColor: \"#78C000\",\n innerStrokeColor: \"#C7E596\",\n animationDuration: 300\n })\n];\n\nconst COMPONENTS = [\n DashboardComponent,\n JaceListWidgetComponent,\n JaceCounterWidgetComponent,\n JaceChartWidgetComponent,\n JaceMultiprogWidgetComponent\n];\n\n\n@NgModule({\n declarations: [\n ...COMPONENTS\n ],\n imports: [\n ...MODULES\n ],\n exports: [\n ...COMPONENTS\n ]\n})\nexport class DashboardFeatureModule {\n\n static forRoot(options: IDashboardModuleOptions): ModuleWithProviders<DashboardFeatureModule> {\n return {\n ngModule: DashboardFeatureModule,\n providers: [\n { provide: DSH_OPTIONS, multi: true, useValue: new DefaultDashboardModuleOptions() },\n { provide: DSH_OPTIONS, multi: true, useValue: options},\n { provide: DSH_DATA_SERVICE, useClass:DashboardFeatureAPIDataService}\n ]\n };\n }\n\n static forChild(options?: IDashboardModuleOptions): ModuleWithProviders<DashboardFeatureModule> {\n return {\n ngModule: DashboardFeatureModule,\n providers: [\n { provide: DSH_OPTIONS, multi: true, useValue: new DefaultDashboardModuleOptions() },\n { provide: DSH_OPTIONS, multi: true, useValue: options}\n ]\n };\n }\n \n constructor(componentFactory: DashboardWidgetFactory, @Optional() @Inject(DSH_OPTIONS) options: IDashboardModuleOptions[]) {\n if (!options) { \n //componentFactory.addOption(new DefaultDashboardModuleOptions());\n return;\n }\n options.map((o)=>componentFactory.addOption(o));\n \n }\n\n}\n","\r\nimport { Component, Directive, EventEmitter, Inject, Injectable, SimpleChanges } from \"@angular/core\";\r\nimport { IJaceWidgetModel } from \"../../models/widgets/IJaceWidgetModel\";\r\nimport { IWidgetComponent } from \"./IWidgetComponent\";\r\nimport { IDashboardFeatureDataService } from \"../../services/IDashboardFeatureDataService\";\r\nimport { DSH_DATA_SERVICE } from \"../../public-injection-tokens\";\r\n\r\n/**\r\n * Classe di base astratta per la creazione di Widget custom.\r\n */\r\n @Injectable()\r\nexport abstract class BaseWidgetComponent<T extends IJaceWidgetModel> implements IWidgetComponent{\r\n\r\n model?: T;\r\n\r\n DashboardDate!: Date;\r\n OnRemove = new EventEmitter<string>();\r\n\r\n configuration: boolean = false;\r\n dataReady: boolean = false;\r\n lastdate: string = \"\";\r\n\r\n constructor(@Inject(DSH_DATA_SERVICE) protected dshService: IDashboardFeatureDataService) { }\r\n\r\n setWidgetModel(widgetModel: IJaceWidgetModel): void {\r\n \r\n this.model = <T>widgetModel;\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.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}","/*\n * Public API Surface of dashboard-feature\n */\n\n\nexport * from './lib/public-injection-tokens';\nexport * from './lib/dashboard-feature.module';\n\nexport * from './lib/components/widgets/IWidgetComponent';\nexport * from './lib/components/widgets/BaseWidgetComponent';\n\nexport * from './lib/models/widgets/IJaceWidgetModel';\nexport * from './lib/models/widgets/BaseJaceWidgetModel';\n\nexport * from './lib/models/options/IWidgetTypeConfig';\nexport * from './lib/models/options/IDashboardModuleOptions';\nexport * from './lib/models/options/DefaultDashboardModuleOptions';\n\nexport * from './lib/services/IDashboardFeatureDataService';\n\n\nexport * from './lib/components/dashboard/dashboard.component';\nexport * from './lib/components/widgets/chart/jace-dsh-chart.component';\nexport * from './lib/components/widgets/counter/jace-dsh-counter.component';\nexport * from './lib/components/widgets/list/jace-dsh-list.component';\nexport * from './lib/components/widgets/multiprog/jace-dsh-multiprog.component';\n\nexport * from './lib/components/widgets/JaceWidgetTypes';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n\nexport {DashboardLoc as ɵa} from './lib/components/dashboard/dashboard.component.loc';\nexport {DSH_OPTIONS as ɵb} from './lib/private-injection-tokens';\nexport {DashboardWidgetFactory as ɵc} from './lib/services/DashboardWidgetFactory';\nexport {DashboardFeatureAPIDataService as ɵd} from './lib/services/dashboard-feature.service';"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,44 @@
|
|
|
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 { LocalizationService } from "@esfaenza/localizations";
|
|
6
|
+
import { ActivatedRoute } from "@angular/router";
|
|
7
|
+
import { JaceDashboardLayoutDetail } from "../../models/externals/JaceDashboardLayoutDetail";
|
|
8
|
+
import { DashboardWidgetFactory } from "../../services/DashboardWidgetFactory";
|
|
9
|
+
import { Subscription } from "rxjs";
|
|
10
|
+
import { IDashboardFeatureDataService } from "../../services/IDashboardFeatureDataService";
|
|
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
|
+
lc: LocalizationService;
|
|
19
|
+
private route;
|
|
20
|
+
private cmpFactory;
|
|
21
|
+
private cdr;
|
|
22
|
+
/**
|
|
23
|
+
* Configurazione di questa dashboard.
|
|
24
|
+
* Contiene anche le configurazioni di layout di Gridster2
|
|
25
|
+
*/
|
|
26
|
+
Configuration: JaceDashboardConfig;
|
|
27
|
+
dashboardDate: Date;
|
|
28
|
+
dashboardLayout?: JaceDashboardLayoutDetail;
|
|
29
|
+
widgetDefinitions: (IJaceWidgetModel | null)[];
|
|
30
|
+
changesSub?: Subscription;
|
|
31
|
+
trackedSubscriptions: Subscription[];
|
|
32
|
+
gridItemRefs: QueryList<ViewContainerRef>;
|
|
33
|
+
constructor(dshService: IDashboardFeatureDataService, intercom: InterComService, lc: LocalizationService, 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
|
+
}
|
|
@@ -0,0 +1,41 @@
|
|
|
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
|
+
/**
|
|
6
|
+
* Classe di base astratta per la creazione di Widget custom.
|
|
7
|
+
*/
|
|
8
|
+
export declare abstract class BaseWidgetComponent<T extends IJaceWidgetModel> implements IWidgetComponent {
|
|
9
|
+
protected dshService: IDashboardFeatureDataService;
|
|
10
|
+
model?: T;
|
|
11
|
+
DashboardDate: Date;
|
|
12
|
+
OnRemove: EventEmitter<string>;
|
|
13
|
+
configuration: boolean;
|
|
14
|
+
dataReady: boolean;
|
|
15
|
+
lastdate: string;
|
|
16
|
+
constructor(dshService: IDashboardFeatureDataService);
|
|
17
|
+
setWidgetModel(widgetModel: IJaceWidgetModel): void;
|
|
18
|
+
ngOnInit(): void;
|
|
19
|
+
ngOnChanges(changes: SimpleChanges): void;
|
|
20
|
+
/**
|
|
21
|
+
* Prepara i parametri e lancia la chiamata GetWidgetData della DashboardFeatureService.
|
|
22
|
+
* Imposta il model con i dati restituiti (setData) e imposta la variabile dataReady del campo a true
|
|
23
|
+
*/
|
|
24
|
+
refreshData(): void;
|
|
25
|
+
/**
|
|
26
|
+
* Modifica/aggiorna i parametri della chiamata GetWidgetData prima di eseguirla. *
|
|
27
|
+
*
|
|
28
|
+
* @param pars parametri della chiamata. Se impostata, già contengono il parametro 'DT' con la data selezionata a livello di dashboard
|
|
29
|
+
*/
|
|
30
|
+
abstract prepareGetDataParameters(pars: {
|
|
31
|
+
[key: string]: string;
|
|
32
|
+
}): void;
|
|
33
|
+
/**
|
|
34
|
+
* Da chiamare quando l'utente preme il pulsante 'rimuovi' nella toolbar della widget.
|
|
35
|
+
*/
|
|
36
|
+
removeWidget(): void;
|
|
37
|
+
/**
|
|
38
|
+
* Da chiamare quando viene premuto il pulsante 'configure' nella toolbar della widget
|
|
39
|
+
*/
|
|
40
|
+
configureWidget(): void;
|
|
41
|
+
}
|
|
@@ -0,0 +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.
|
|
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(widgetModel: IJaceWidgetModel): void;
|
|
23
|
+
}
|
|
@@ -0,0 +1,22 @@
|
|
|
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
|
+
export declare class JaceChartWidgetComponent implements IWidgetComponent, OnInit {
|
|
7
|
+
private dshService;
|
|
8
|
+
model?: JaceChartWidgetModel;
|
|
9
|
+
DashboardDate: Date;
|
|
10
|
+
OnRemove: EventEmitter<string>;
|
|
11
|
+
configuration: boolean;
|
|
12
|
+
dataReady: boolean;
|
|
13
|
+
lastdate: string;
|
|
14
|
+
chartName: string;
|
|
15
|
+
constructor(dshService: IDashboardFeatureDataService);
|
|
16
|
+
setWidgetModel(widgetModel: IJaceWidgetModel): void;
|
|
17
|
+
ngOnInit(): void;
|
|
18
|
+
ngOnChanges(changes: SimpleChanges): void;
|
|
19
|
+
refreshData(): void;
|
|
20
|
+
removeWidget(): void;
|
|
21
|
+
configure(): void;
|
|
22
|
+
}
|
|
@@ -0,0 +1,21 @@
|
|
|
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
|
+
export declare class JaceCounterWidgetComponent implements IWidgetComponent, OnInit {
|
|
7
|
+
private dshService;
|
|
8
|
+
model?: JaceCounterWidgetModel;
|
|
9
|
+
DashboardDate: Date;
|
|
10
|
+
OnRemove: EventEmitter<string>;
|
|
11
|
+
configuration: boolean;
|
|
12
|
+
dataReady: boolean;
|
|
13
|
+
lastdate: string;
|
|
14
|
+
constructor(dshService: IDashboardFeatureDataService);
|
|
15
|
+
setWidgetModel(widgetModel: IJaceWidgetModel): void;
|
|
16
|
+
ngOnInit(): void;
|
|
17
|
+
ngOnChanges(changes: SimpleChanges): void;
|
|
18
|
+
refreshData(): void;
|
|
19
|
+
removeWidget(): void;
|
|
20
|
+
configure(): void;
|
|
21
|
+
}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { EventEmitter, OnInit, SimpleChanges } from '@angular/core';
|
|
2
|
+
import { IJaceWidgetModel } from '../../../models/widgets/IJaceWidgetModel';
|
|
3
|
+
import { IWidgetComponent } from '../IWidgetComponent';
|
|
4
|
+
import { JaceListItemWidget, JaceListWidgetModel } from '../../../models/widgets/JaceListWidgetModel';
|
|
5
|
+
import { Router } from '@angular/router';
|
|
6
|
+
import { IDashboardFeatureDataService } from '../../../services/IDashboardFeatureDataService';
|
|
7
|
+
export declare class JaceListWidgetComponent implements IWidgetComponent, OnInit {
|
|
8
|
+
private dshService;
|
|
9
|
+
private router;
|
|
10
|
+
model?: JaceListWidgetModel;
|
|
11
|
+
DashboardDate: Date;
|
|
12
|
+
OnRemove: EventEmitter<string>;
|
|
13
|
+
configuration: boolean;
|
|
14
|
+
dataReady: boolean;
|
|
15
|
+
lastdate: string;
|
|
16
|
+
constructor(dshService: IDashboardFeatureDataService, router: Router);
|
|
17
|
+
setWidgetModel(widgetModel: IJaceWidgetModel): void;
|
|
18
|
+
ngOnInit(): void;
|
|
19
|
+
ngOnChanges(changes: SimpleChanges): void;
|
|
20
|
+
refreshData(): void;
|
|
21
|
+
removeWidget(): void;
|
|
22
|
+
itemClicked(item: JaceListItemWidget): void;
|
|
23
|
+
configure(): void;
|
|
24
|
+
}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { EventEmitter, OnInit, SimpleChanges } from '@angular/core';
|
|
2
|
+
import { IJaceWidgetModel } from '../../../models/widgets/IJaceWidgetModel';
|
|
3
|
+
import { IWidgetComponent } from '../IWidgetComponent';
|
|
4
|
+
import { Router } from '@angular/router';
|
|
5
|
+
import { JaceMultiprogWidgetModel } from '../../../models/widgets/JaceMultiprogWidgetModel';
|
|
6
|
+
import { IDashboardFeatureDataService } from '../../../services/IDashboardFeatureDataService';
|
|
7
|
+
export declare class JaceMultiprogWidgetComponent implements IWidgetComponent, OnInit {
|
|
8
|
+
private dshService;
|
|
9
|
+
private router;
|
|
10
|
+
model?: JaceMultiprogWidgetModel;
|
|
11
|
+
DashboardDate: Date;
|
|
12
|
+
OnRemove: EventEmitter<string>;
|
|
13
|
+
configuration: boolean;
|
|
14
|
+
dataReady: boolean;
|
|
15
|
+
lastdate: string;
|
|
16
|
+
constructor(dshService: IDashboardFeatureDataService, router: Router);
|
|
17
|
+
setWidgetModel(widgetModel: IJaceWidgetModel): void;
|
|
18
|
+
ngOnInit(): void;
|
|
19
|
+
ngOnChanges(changes: SimpleChanges): void;
|
|
20
|
+
refreshData(): void;
|
|
21
|
+
removeWidget(): void;
|
|
22
|
+
configure(): void;
|
|
23
|
+
}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { ModuleWithProviders } from '@angular/core';
|
|
2
|
+
import { IDashboardModuleOptions } from './models/options/IDashboardModuleOptions';
|
|
3
|
+
import { DashboardWidgetFactory } from './services/DashboardWidgetFactory';
|
|
4
|
+
export declare class DashboardFeatureModule {
|
|
5
|
+
static forRoot(options: IDashboardModuleOptions): ModuleWithProviders<DashboardFeatureModule>;
|
|
6
|
+
static forChild(options?: IDashboardModuleOptions): ModuleWithProviders<DashboardFeatureModule>;
|
|
7
|
+
constructor(componentFactory: DashboardWidgetFactory, options: IDashboardModuleOptions[]);
|
|
8
|
+
}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { GridsterConfig } from 'angular-gridster2';
|
|
2
|
+
/**
|
|
3
|
+
* Configurazione della dashboard
|
|
4
|
+
*/
|
|
5
|
+
export declare class JaceDashboardConfig {
|
|
6
|
+
/**
|
|
7
|
+
* Nome della dashboard (deve essere univoco nel modulo).
|
|
8
|
+
* Deve essere 'conosciuto' nel BE in modo da ottenere il layout delle widget da visualizzare.
|
|
9
|
+
* Verrà usato anche per salvare le preferenze dell'account (widget ridimensionate/spostate/eliminate)
|
|
10
|
+
*/
|
|
11
|
+
dashboardName: string;
|
|
12
|
+
/**
|
|
13
|
+
* ID dell'account dell'utente che deve visualizzare la dashboard.
|
|
14
|
+
* HINT: Leggerlo da JaceIdentity dell'account al momento loggato.
|
|
15
|
+
*/
|
|
16
|
+
accountId: number;
|
|
17
|
+
/**
|
|
18
|
+
* Configurazioni specifiche del layout di [Gridster2](https://tiberiuzuld.github.io/angular-gridster2/)
|
|
19
|
+
*/
|
|
20
|
+
gridsterConfig: GridsterConfig;
|
|
21
|
+
/**
|
|
22
|
+
* Se questa dashboard contiene widget che mostrano dati che dipendono dalla data corrente
|
|
23
|
+
* mostra il controllo (datetimepicker) per variare la data in base a cui mostrare i dati.
|
|
24
|
+
*
|
|
25
|
+
* NOTA: showToolbar deve essere a true.
|
|
26
|
+
*
|
|
27
|
+
* Default = false
|
|
28
|
+
*/
|
|
29
|
+
showDateInput: boolean;
|
|
30
|
+
/**
|
|
31
|
+
* Mostrare la toolbar in cima alla dashboard che contiene il titolo, il pulsante per salvare il proprio layout personalizzato
|
|
32
|
+
* e il picker per scegliere la data nel caso che le widget nella dashboard mostrino dati dipendenti dalla data.
|
|
33
|
+
*
|
|
34
|
+
* Default = true
|
|
35
|
+
*/
|
|
36
|
+
showToolbar: boolean;
|
|
37
|
+
/**
|
|
38
|
+
* Titolo della dashboard mostrato in cima al layout all'interno della toolbar.
|
|
39
|
+
*
|
|
40
|
+
* NOTA: showToolbar deve essere a true.
|
|
41
|
+
*
|
|
42
|
+
* Default = undefined
|
|
43
|
+
*/
|
|
44
|
+
dashboardTitle: string;
|
|
45
|
+
constructor();
|
|
46
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
export declare class JaceWidgetInstanceDetail {
|
|
2
|
+
id?: number;
|
|
3
|
+
name: string;
|
|
4
|
+
title?: string;
|
|
5
|
+
type: string;
|
|
6
|
+
x: number;
|
|
7
|
+
y: number;
|
|
8
|
+
cols: number;
|
|
9
|
+
rows: number;
|
|
10
|
+
dragenabled?: boolean;
|
|
11
|
+
resizeenabled?: boolean;
|
|
12
|
+
compactenabled?: boolean;
|
|
13
|
+
options?: {
|
|
14
|
+
[key: string]: any;
|
|
15
|
+
};
|
|
16
|
+
queryerror: boolean;
|
|
17
|
+
}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { IDashboardModuleOptions } from "./IDashboardModuleOptions";
|
|
2
|
+
import { IWidgetTypeConfig } from "./IWidgetTypeConfig";
|
|
3
|
+
export declare class DefaultDashboardModuleOptions implements IDashboardModuleOptions {
|
|
4
|
+
locale: string;
|
|
5
|
+
widgetTypes: IWidgetTypeConfig[];
|
|
6
|
+
constructor();
|
|
7
|
+
}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { Type } from "@angular/core";
|
|
2
|
+
import { IWidgetComponent } from "../../components/widgets/IWidgetComponent";
|
|
3
|
+
import { IJaceWidgetModel } from "../widgets/IJaceWidgetModel";
|
|
4
|
+
export interface IWidgetTypeConfig {
|
|
5
|
+
name: string;
|
|
6
|
+
component: Type<IWidgetComponent>;
|
|
7
|
+
model: Type<IJaceWidgetModel>;
|
|
8
|
+
}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { GridsterItem, GridsterItemComponentInterface } from "angular-gridster2";
|
|
2
|
+
import { JaceWidgetInstanceDetail } from "../externals/JaceWidgetInstanceDetail";
|
|
3
|
+
import { IJaceWidgetModel } from "./IJaceWidgetModel";
|
|
4
|
+
export declare abstract class BaseJaceWidgetModel implements IJaceWidgetModel {
|
|
5
|
+
name: string;
|
|
6
|
+
title?: string | undefined;
|
|
7
|
+
widgetType: string;
|
|
8
|
+
dataError: boolean;
|
|
9
|
+
options?: {
|
|
10
|
+
[key: string]: any;
|
|
11
|
+
} | undefined;
|
|
12
|
+
x: number;
|
|
13
|
+
y: number;
|
|
14
|
+
rows: number;
|
|
15
|
+
cols: number;
|
|
16
|
+
resizeEnabled?: boolean;
|
|
17
|
+
layerIndex?: number | undefined;
|
|
18
|
+
initCallback?: ((item: GridsterItem, itemComponent: GridsterItemComponentInterface) => void) | undefined;
|
|
19
|
+
dragEnabled?: boolean | undefined;
|
|
20
|
+
compactEnabled?: boolean | undefined;
|
|
21
|
+
maxItemRows?: number | undefined;
|
|
22
|
+
minItemRows?: number | undefined;
|
|
23
|
+
maxItemCols?: number | undefined;
|
|
24
|
+
minItemCols?: number | undefined;
|
|
25
|
+
minItemArea?: number | undefined;
|
|
26
|
+
maxItemArea?: number | undefined;
|
|
27
|
+
[propName: string]: any;
|
|
28
|
+
constructor();
|
|
29
|
+
configureFromInstanceDetails(details: JaceWidgetInstanceDetail): void;
|
|
30
|
+
abstract setData(data?: any): void;
|
|
31
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { GridsterItem } from 'angular-gridster2';
|
|
2
|
+
import { JaceWidgetInstanceDetail } from '../externals/JaceWidgetInstanceDetail';
|
|
3
|
+
export interface IJaceWidgetModel extends GridsterItem {
|
|
4
|
+
name: string;
|
|
5
|
+
title?: string;
|
|
6
|
+
widgetType: string;
|
|
7
|
+
dataError: boolean;
|
|
8
|
+
options?: {
|
|
9
|
+
[key: string]: any;
|
|
10
|
+
};
|
|
11
|
+
configureFromInstanceDetails(details: JaceWidgetInstanceDetail): void;
|
|
12
|
+
setData(data?: any): void;
|
|
13
|
+
}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { BaseJaceWidgetModel } from "./BaseJaceWidgetModel";
|
|
2
|
+
export declare class JaceChartWidgetModel extends BaseJaceWidgetModel {
|
|
3
|
+
chartType: 'pie' | 'line' | 'vertical' | 'vertical-2d' | 'vertical-stacked';
|
|
4
|
+
legend: boolean;
|
|
5
|
+
chartData: any;
|
|
6
|
+
constructor();
|
|
7
|
+
setData(data?: any): void;
|
|
8
|
+
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { BaseJaceWidgetModel } from "./BaseJaceWidgetModel";
|
|
2
|
+
export declare class JaceCounterWidgetModel extends BaseJaceWidgetModel {
|
|
3
|
+
superText?: string;
|
|
4
|
+
subText?: string;
|
|
5
|
+
value: number;
|
|
6
|
+
icon?: string;
|
|
7
|
+
unit?: string;
|
|
8
|
+
constructor();
|
|
9
|
+
setData(data?: any): void;
|
|
10
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { BaseJaceWidgetModel } from "./BaseJaceWidgetModel";
|
|
2
|
+
export declare class JaceListItemWidget {
|
|
3
|
+
id?: any;
|
|
4
|
+
idParamName?: string;
|
|
5
|
+
description: string;
|
|
6
|
+
subline?: string;
|
|
7
|
+
classes?: string;
|
|
8
|
+
link?: string;
|
|
9
|
+
}
|
|
10
|
+
export declare class JaceListWidgetModel extends BaseJaceWidgetModel {
|
|
11
|
+
superText?: string;
|
|
12
|
+
items: JaceListItemWidget[];
|
|
13
|
+
constructor();
|
|
14
|
+
setData(data?: any): void;
|
|
15
|
+
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { BaseJaceWidgetModel } from "./BaseJaceWidgetModel";
|
|
2
|
+
export declare class JaceMultiprogWidgetModel extends BaseJaceWidgetModel {
|
|
3
|
+
resizeEnabled: boolean;
|
|
4
|
+
progressTitles: string[];
|
|
5
|
+
progressValues: number[];
|
|
6
|
+
circleProgress: boolean;
|
|
7
|
+
constructor();
|
|
8
|
+
setData(data?: any): void;
|
|
9
|
+
}
|