@esfaenza/dashboard-feature 19.2.0 → 19.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,21 +1,21 @@
1
1
  import * as i0 from '@angular/core';
2
2
  import { InjectionToken, EventEmitter, Output, Input, Inject, Component, Injectable, ViewContainerRef, ViewChildren, ViewEncapsulation, Optional, NgModule } from '@angular/core';
3
- import * as i2 from '@angular/common';
4
- import { CommonModule } from '@angular/common';
3
+ import * as i1 from '@angular/common';
4
+ import { DOCUMENT, CommonModule } from '@angular/common';
5
5
  import * as i5 from '@angular/forms';
6
6
  import { FormsModule } from '@angular/forms';
7
7
  import * as i6 from 'angular-gridster2';
8
8
  import { GridsterModule, GridType } from 'angular-gridster2';
9
- import * as i2$1 from '@esfaenza/es-charts';
9
+ import * as i2 from '@esfaenza/es-charts';
10
10
  import { EsChartsModule } from '@esfaenza/es-charts';
11
- import * as i1 from '@angular/router';
12
- import * as i1$1 from '@esfaenza/extensions';
11
+ import * as i1$1 from '@angular/router';
12
+ import { timer, Subject } from 'rxjs';
13
+ import * as i1$2 from '@esfaenza/extensions';
13
14
  import { InboundMessageTypes } from '@esfaenza/extensions';
14
- import { Subject, timer } from 'rxjs';
15
15
  import { takeUntil, map } from 'rxjs/operators';
16
16
  import * as i7 from '@esfaenza/forms-and-validations';
17
17
  import { FormsAndValidationsModule } from '@esfaenza/forms-and-validations';
18
- import * as i1$2 from '@esfaenza/httpservice';
18
+ import * as i1$3 from '@esfaenza/httpservice';
19
19
  import { HttpserviceModule } from '@esfaenza/httpservice';
20
20
  import { HttpParams } from '@angular/common/http';
21
21
  import { AppSearch } from '@esfaenza/es-table';
@@ -90,7 +90,7 @@ class JaceChartWidgetComponent {
90
90
  this.configuration = !this.configuration;
91
91
  }
92
92
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.18", ngImport: i0, type: JaceChartWidgetComponent, deps: [{ token: DSH_DATA_SERVICE }], target: i0.ɵɵFactoryTarget.Component }); }
93
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.18", type: JaceChartWidgetComponent, isStandalone: false, selector: "jace-dsh-chart", inputs: { DashboardDate: "DashboardDate" }, outputs: { OnRemove: "OnRemove" }, usesOnChanges: true, ngImport: i0, template: "<div class=\"jace-dsh-widget-header {{model?.name}}-header\">\r\n <div class=\"jace-dsh-widget-title\" *ngIf=\"model.title\">\r\n {{model.title}}\r\n </div>\r\n <div class=\"jace-dsh-widget-controls\" *ngIf=\"dataReady\">\r\n <span class=\"transition drag-handler jace-dsh-widget-drag\" *ngIf=\"model.dragEnabled\">\r\n <i class=\"fa fa-arrows-alt\"></i>\r\n </span>\r\n <span class=\"transition jace-dsh-widget-opts\" (click)=\"configure()\">\r\n <i class=\"fa fa-cog\"></i>\r\n </span>\r\n <span (click)=\"removeWidget()\" class=\"transition remove-button jace-dsh-widget-close\">\r\n <i class=\"fa fa-times\"></i>\r\n </span>\r\n </div>\r\n</div>\r\n<div class=\"jace-dsh-widget-body gridster-item-content {{model?.name}}-body\">\r\n <div class=\"jace-dsh-widget-loading\" *ngIf=\"!dataReady\">\r\n <i class=\"fa fa-spinner fa-spin\"></i>\r\n </div>\r\n\r\n <div class=\"jace-dsh-chart-container jace-dsh-widget-slide\"\r\n [ngClass]=\"{'jace-dsh-widget-content-hide':configuration,'jace-dsh-widget-content-show':!configuration}\"\r\n *ngIf=\"dataReady\">\r\n <!-- [Type]=\"Widget.chartType\" -->\r\n <h6 *ngIf=\"model?.queryerror\" class=\"fg-disabled\" style=\"margin-top: 0.5rem;\"><span\r\n class=\"fa fa-times-circle-o\"></span>&nbsp;&nbsp;Error retrieving data</h6>\r\n <es-chart [Legend]=\"model.legend\" [Theme]=\"'dataviz'\" [Type]=\"model.chartType\" [Data]=\"model.chartData\"\r\n [name]=\"chartName\"></es-chart>\r\n </div>\r\n\r\n <div class=\"jace-dsh-widget-settings jace-dsh-widget-slide \"\r\n [ngClass]=\"{'jace-dsh-widget-settings-hide':!configuration,'jace-dsh-widget-settings-show':configuration}\">\r\n <p>Configuration</p>\r\n </div>\r\n</div>", styles: [""], dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2$1.EsChartComponent, selector: "es-chart", inputs: ["Type", "Data", "DataArray"] }] }); }
93
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.18", type: JaceChartWidgetComponent, isStandalone: false, selector: "jace-dsh-chart", inputs: { DashboardDate: "DashboardDate" }, outputs: { OnRemove: "OnRemove" }, usesOnChanges: true, ngImport: i0, template: "<div class=\"jace-dsh-widget-header {{model?.name}}-header\">\r\n <div class=\"jace-dsh-widget-title\" *ngIf=\"model.title\">\r\n {{model.title}}\r\n </div>\r\n <div class=\"jace-dsh-widget-controls\" *ngIf=\"dataReady\">\r\n <span class=\"transition drag-handler jace-dsh-widget-drag\" *ngIf=\"model.dragEnabled\">\r\n <i class=\"fa fa-arrows-alt\"></i>\r\n </span>\r\n <span class=\"transition jace-dsh-widget-opts\" (click)=\"configure()\">\r\n <i class=\"fa fa-cog\"></i>\r\n </span>\r\n <span (click)=\"removeWidget()\" class=\"transition remove-button jace-dsh-widget-close\">\r\n <i class=\"fa fa-times\"></i>\r\n </span>\r\n </div>\r\n</div>\r\n<div class=\"jace-dsh-widget-body gridster-item-content {{model?.name}}-body\">\r\n <div class=\"jace-dsh-widget-loading\" *ngIf=\"!dataReady\">\r\n <i class=\"fa fa-spinner fa-spin\"></i>\r\n </div>\r\n\r\n <div class=\"jace-dsh-chart-container jace-dsh-widget-slide\"\r\n [ngClass]=\"{'jace-dsh-widget-content-hide':configuration,'jace-dsh-widget-content-show':!configuration}\"\r\n *ngIf=\"dataReady\">\r\n <!-- [Type]=\"Widget.chartType\" -->\r\n <h6 *ngIf=\"model?.queryerror\" class=\"fg-disabled\" style=\"margin-top: 0.5rem;\"><span\r\n class=\"fa fa-times-circle-o\"></span>&nbsp;&nbsp;Error retrieving data</h6>\r\n <es-chart [Legend]=\"model.legend\" [Theme]=\"'dataviz'\" [Type]=\"model.chartType\" [Data]=\"model.chartData\"\r\n [name]=\"chartName\"></es-chart>\r\n </div>\r\n\r\n <div class=\"jace-dsh-widget-settings jace-dsh-widget-slide \"\r\n [ngClass]=\"{'jace-dsh-widget-settings-hide':!configuration,'jace-dsh-widget-settings-show':configuration}\">\r\n <p>Configuration</p>\r\n </div>\r\n</div>", styles: [""], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.EsChartComponent, selector: "es-chart", inputs: ["Type", "Data", "DataArray"] }] }); }
94
94
  }
95
95
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.18", ngImport: i0, type: JaceChartWidgetComponent, decorators: [{
96
96
  type: Component,
@@ -166,7 +166,7 @@ class JaceCounterWidgetComponent {
166
166
  this.configuration = !this.configuration;
167
167
  }
168
168
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.18", ngImport: i0, type: JaceCounterWidgetComponent, deps: [{ token: DSH_DATA_SERVICE }], target: i0.ɵɵFactoryTarget.Component }); }
169
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.18", type: JaceCounterWidgetComponent, isStandalone: false, selector: "jace-dsh-counter", inputs: { DashboardDate: "DashboardDate" }, outputs: { OnRemove: "OnRemove" }, usesOnChanges: true, ngImport: i0, template: "<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>", styles: [".jace-dsh-counter-body{padding:1em .5em}.jace-dsh-counter-value{font-size:2em;font-weight:700;text-align:center}.jace-dsh-counter-unit{margin-left:.08em;font-size:.5em;text-align:center}.jace-dsh-counter-super{font-size:1em;text-align:center}.jace-dsh-counter-sub{font-size:.8em;text-align:center}.jace-dsh-counter-icon{position:absolute;font-size:2.6em;color:#b0c4de}\n"], dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] }); }
169
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.18", type: JaceCounterWidgetComponent, isStandalone: false, selector: "jace-dsh-counter", inputs: { DashboardDate: "DashboardDate" }, outputs: { OnRemove: "OnRemove" }, usesOnChanges: true, ngImport: i0, template: "<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>", styles: [".jace-dsh-counter-body{padding:1em .5em}.jace-dsh-counter-value{font-size:2em;font-weight:700;text-align:center}.jace-dsh-counter-unit{margin-left:.08em;font-size:.5em;text-align:center}.jace-dsh-counter-super{font-size:1em;text-align:center}.jace-dsh-counter-sub{font-size:.8em;text-align:center}.jace-dsh-counter-icon{position:absolute;font-size:2.6em;color:#b0c4de}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] }); }
170
170
  }
171
171
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.18", ngImport: i0, type: JaceCounterWidgetComponent, decorators: [{
172
172
  type: Component,
@@ -251,8 +251,8 @@ class JaceListWidgetComponent {
251
251
  }
252
252
  this.configuration = !this.configuration;
253
253
  }
254
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.18", ngImport: i0, type: JaceListWidgetComponent, deps: [{ token: DSH_DATA_SERVICE }, { token: i1.Router }], target: i0.ɵɵFactoryTarget.Component }); }
255
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.18", type: JaceListWidgetComponent, isStandalone: false, selector: "jace-dsh-list", inputs: { DashboardDate: "DashboardDate" }, outputs: { OnRemove: "OnRemove" }, usesOnChanges: true, ngImport: i0, template: "<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>", styles: [".jace-dsh-list-body{height:100%;overflow-y:auto}.jace-dsh-list-super-text{font-weight:500}.jace-dsh-list-item{display:flow;flex-direction:row;justify-content:flex-start;padding:.4em;border:1px solid #eee;margin-top:2px}.jace-dsh-list-item-id{margin-right:1em;color:#fff;background:#637ca0;font-size:.8em;padding:.2em .5em;border-radius:.2em}.jace-dsh-list-link{color:#0275d8!important;cursor:pointer;text-decoration:none;display:block}.jace-dsh-list-link:hover{cursor:pointer;color:#fff;background-color:#b0c4de;text-decoration:underline}.jace-dsh-list-item-subline{font-size:.5em}\n"], dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] }); }
254
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.18", ngImport: i0, type: JaceListWidgetComponent, deps: [{ token: DSH_DATA_SERVICE }, { token: i1$1.Router }], target: i0.ɵɵFactoryTarget.Component }); }
255
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.18", type: JaceListWidgetComponent, isStandalone: false, selector: "jace-dsh-list", inputs: { DashboardDate: "DashboardDate" }, outputs: { OnRemove: "OnRemove" }, usesOnChanges: true, ngImport: i0, template: "<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>", styles: [".jace-dsh-list-body{height:100%;overflow-y:auto}.jace-dsh-list-super-text{font-weight:500}.jace-dsh-list-item{display:flow;flex-direction:row;justify-content:flex-start;padding:.4em;border:1px solid #eee;margin-top:2px}.jace-dsh-list-item-id{margin-right:1em;color:#fff;background:#637ca0;font-size:.8em;padding:.2em .5em;border-radius:.2em}.jace-dsh-list-link{color:#0275d8!important;cursor:pointer;text-decoration:none;display:block}.jace-dsh-list-link:hover{cursor:pointer;color:#fff;background-color:#b0c4de;text-decoration:underline}.jace-dsh-list-item-subline{font-size:.5em}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] }); }
256
256
  }
257
257
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.18", ngImport: i0, type: JaceListWidgetComponent, decorators: [{
258
258
  type: Component,
@@ -260,12 +260,835 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.18", ngImpo
260
260
  }], ctorParameters: () => [{ type: undefined, decorators: [{
261
261
  type: Inject,
262
262
  args: [DSH_DATA_SERVICE]
263
- }] }, { type: i1.Router }], propDecorators: { DashboardDate: [{
263
+ }] }, { type: i1$1.Router }], propDecorators: { DashboardDate: [{
264
264
  type: Input
265
265
  }], OnRemove: [{
266
266
  type: Output
267
267
  }] } });
268
268
 
269
+ class CircleProgressOptions {
270
+ constructor() {
271
+ this.class = '';
272
+ this.backgroundGradient = false;
273
+ this.backgroundColor = 'transparent';
274
+ this.backgroundGradientStopColor = 'transparent';
275
+ this.backgroundOpacity = 1;
276
+ this.backgroundStroke = 'transparent';
277
+ this.backgroundStrokeWidth = 0;
278
+ this.backgroundPadding = 5;
279
+ this.percent = 0;
280
+ this.radius = 90;
281
+ this.space = 4;
282
+ this.toFixed = 0;
283
+ this.maxPercent = 1000;
284
+ this.renderOnClick = true;
285
+ this.units = '%';
286
+ this.unitsFontSize = '10';
287
+ this.unitsFontWeight = 'normal';
288
+ this.unitsColor = '#444444';
289
+ this.outerStrokeGradient = false;
290
+ this.outerStrokeWidth = 8;
291
+ this.outerStrokeColor = '#78C000';
292
+ this.outerStrokeGradientStopColor = 'transparent';
293
+ this.outerStrokeLinecap = 'round';
294
+ this.innerStrokeColor = '#C7E596';
295
+ this.innerStrokeWidth = 4;
296
+ this.titleFormat = undefined;
297
+ this.title = 'auto';
298
+ this.titleColor = '#444444';
299
+ this.titleFontSize = '20';
300
+ this.titleFontWeight = 'normal';
301
+ this.subtitleFormat = undefined;
302
+ this.subtitle = 'progress';
303
+ this.subtitleColor = '#A9A9A9';
304
+ this.subtitleFontSize = '10';
305
+ this.subtitleFontWeight = 'normal';
306
+ this.imageSrc = undefined;
307
+ this.imageHeight = 0;
308
+ this.imageWidth = 0;
309
+ this.animation = true;
310
+ this.animateTitle = true;
311
+ this.animateSubtitle = false;
312
+ this.animationDuration = 500;
313
+ this.showTitle = true;
314
+ this.showSubtitle = true;
315
+ this.showUnits = true;
316
+ this.showImage = false;
317
+ this.showBackground = true;
318
+ this.showInnerStroke = true;
319
+ this.clockwise = true;
320
+ this.responsive = false;
321
+ this.startFromZero = true;
322
+ this.showZeroOuterStroke = true;
323
+ this.lazy = false;
324
+ }
325
+ }
326
+ class CircleProgressComponent {
327
+ emitClickEvent(event) {
328
+ if (this.options.renderOnClick) {
329
+ this.animate(0, this.options.percent);
330
+ }
331
+ if (this.onClick.observers.length > 0) {
332
+ this.onClick.emit(event);
333
+ }
334
+ }
335
+ isDrawing() {
336
+ return (this._timerSubscription && !this._timerSubscription.closed);
337
+ }
338
+ findSvgElement() {
339
+ if (this.svgElement === null) {
340
+ let tags = this.elRef.nativeElement.getElementsByTagName('svg');
341
+ if (tags.length > 0) {
342
+ this.svgElement = tags[0];
343
+ }
344
+ }
345
+ }
346
+ isElementInViewport(el) {
347
+ // Return false if el has not been created in page.
348
+ if (el === null || el === undefined)
349
+ return false;
350
+ // Check if the element is out of view due to a container scrolling
351
+ let rect = el.getBoundingClientRect(), parent = el.parentNode, parentRect;
352
+ do {
353
+ parentRect = parent.getBoundingClientRect();
354
+ if (rect.top >= parentRect.bottom)
355
+ return false;
356
+ if (rect.bottom <= parentRect.top)
357
+ return false;
358
+ if (rect.left >= parentRect.right)
359
+ return false;
360
+ if (rect.right <= parentRect.left)
361
+ return false;
362
+ parent = parent.parentNode;
363
+ } while (parent != this.document.body);
364
+ // Check its within the document viewport
365
+ if (rect.top >= (this.window.innerHeight || this.document.documentElement.clientHeight))
366
+ return false;
367
+ if (rect.bottom <= 0)
368
+ return false;
369
+ if (rect.left >= (this.window.innerWidth || this.document.documentElement.clientWidth))
370
+ return false;
371
+ if (rect.right <= 0)
372
+ return false;
373
+ return true;
374
+ }
375
+ ngOnInit() {
376
+ this.loadEventsForLazyMode();
377
+ }
378
+ ngOnDestroy() {
379
+ this.unloadEventsForLazyMode();
380
+ }
381
+ ngOnChanges(changes) {
382
+ this.render();
383
+ if ('lazy' in changes) {
384
+ changes.lazy.currentValue ? this.loadEventsForLazyMode() : this.unloadEventsForLazyMode();
385
+ }
386
+ }
387
+ constructor(defaultOptions, ngZone, elRef, injector) {
388
+ this.ngZone = ngZone;
389
+ this.elRef = elRef;
390
+ this.onClick = new EventEmitter();
391
+ // <svg> of component
392
+ this.svgElement = null;
393
+ // whether <svg> is in viewport
394
+ this.isInViewport = false;
395
+ // event for notifying viewport change caused by scrolling or resizing
396
+ this.onViewportChanged = new EventEmitter();
397
+ this._viewportChangedSubscriber = null;
398
+ this.options = new CircleProgressOptions();
399
+ this.defaultOptions = new CircleProgressOptions();
400
+ this._lastPercent = 0;
401
+ this._gradientUUID = null;
402
+ this.render = () => {
403
+ this.applyOptions();
404
+ if (this.options.lazy) {
405
+ // Draw svg if it doesn't exist
406
+ this.svgElement === null && this.draw(this._lastPercent);
407
+ // Draw it only when it's in the viewport
408
+ if (this.isInViewport) {
409
+ // Draw it at the latest position when I am in.
410
+ if (this.options.animation && this.options.animationDuration > 0) {
411
+ this.animate(this._lastPercent, this.options.percent);
412
+ }
413
+ else {
414
+ this.draw(this.options.percent);
415
+ }
416
+ this._lastPercent = this.options.percent;
417
+ }
418
+ }
419
+ else {
420
+ if (this.options.animation && this.options.animationDuration > 0) {
421
+ this.animate(this._lastPercent, this.options.percent);
422
+ }
423
+ else {
424
+ this.draw(this.options.percent);
425
+ }
426
+ this._lastPercent = this.options.percent;
427
+ }
428
+ };
429
+ this.polarToCartesian = (centerX, centerY, radius, angleInDegrees) => {
430
+ let angleInRadius = angleInDegrees * Math.PI / 180;
431
+ let x = centerX + Math.sin(angleInRadius) * radius;
432
+ let y = centerY - Math.cos(angleInRadius) * radius;
433
+ return { x: x, y: y };
434
+ };
435
+ this.draw = (percent) => {
436
+ // make percent reasonable
437
+ percent = (percent === undefined) ? this.options.percent : Math.abs(percent);
438
+ // circle percent shouldn't be greater than 100%.
439
+ let circlePercent = (percent > 100) ? 100 : percent;
440
+ // determine box size
441
+ let boxSize = this.options.radius * 2 + this.options.outerStrokeWidth * 2;
442
+ if (this.options.showBackground) {
443
+ boxSize += (this.options.backgroundStrokeWidth * 2 + this.max(0, this.options.backgroundPadding * 2));
444
+ }
445
+ // the centre of the circle
446
+ let centre = { x: boxSize / 2, y: boxSize / 2 };
447
+ // the start point of the arc
448
+ let startPoint = { x: centre.x, y: centre.y - this.options.radius };
449
+ // get the end point of the arc
450
+ let endPoint = this.polarToCartesian(centre.x, centre.y, this.options.radius, 360 * (this.options.clockwise ?
451
+ circlePercent :
452
+ (100 - circlePercent)) / 100); // ####################
453
+ // We'll get an end point with the same [x, y] as the start point when percent is 100%, so move x a little bit.
454
+ if (circlePercent === 100) {
455
+ endPoint.x = endPoint.x + (this.options.clockwise ? -0.01 : +0.01);
456
+ }
457
+ // largeArcFlag and sweepFlag
458
+ let largeArcFlag, sweepFlag;
459
+ if (circlePercent > 50) {
460
+ [largeArcFlag, sweepFlag] = this.options.clockwise ? [1, 1] : [1, 0];
461
+ }
462
+ else {
463
+ [largeArcFlag, sweepFlag] = this.options.clockwise ? [0, 1] : [0, 0];
464
+ }
465
+ // percent may not equal the actual percent
466
+ let titlePercent = this.options.animateTitle ? percent : this.options.percent;
467
+ let titleTextPercent = titlePercent > this.options.maxPercent ?
468
+ `${this.options.maxPercent.toFixed(this.options.toFixed)}+` : titlePercent.toFixed(this.options.toFixed);
469
+ let subtitlePercent = this.options.animateSubtitle ? percent : this.options.percent;
470
+ // get title object
471
+ let title = {
472
+ x: centre.x,
473
+ y: centre.y,
474
+ textAnchor: 'middle',
475
+ color: this.options.titleColor,
476
+ fontSize: this.options.titleFontSize,
477
+ fontWeight: this.options.titleFontWeight,
478
+ texts: [],
479
+ tspans: []
480
+ };
481
+ // from v0.9.9, both title and titleFormat(...) may be an array of string.
482
+ if (this.options.titleFormat !== undefined && this.options.titleFormat.constructor.name === 'Function') {
483
+ let formatted = this.options.titleFormat(titlePercent);
484
+ if (formatted instanceof Array) {
485
+ title.texts = [...formatted];
486
+ }
487
+ else {
488
+ title.texts.push(formatted.toString());
489
+ }
490
+ }
491
+ else {
492
+ if (this.options.title === 'auto') {
493
+ title.texts.push(titleTextPercent);
494
+ }
495
+ else {
496
+ if (this.options.title instanceof Array) {
497
+ title.texts = [...this.options.title];
498
+ }
499
+ else {
500
+ title.texts.push(this.options.title.toString());
501
+ }
502
+ }
503
+ }
504
+ // get subtitle object
505
+ let subtitle = {
506
+ x: centre.x,
507
+ y: centre.y,
508
+ textAnchor: 'middle',
509
+ color: this.options.subtitleColor,
510
+ fontSize: this.options.subtitleFontSize,
511
+ fontWeight: this.options.subtitleFontWeight,
512
+ texts: [],
513
+ tspans: []
514
+ };
515
+ // from v0.9.9, both subtitle and subtitleFormat(...) may be an array of string.
516
+ if (this.options.subtitleFormat !== undefined && this.options.subtitleFormat.constructor.name === 'Function') {
517
+ let formatted = this.options.subtitleFormat(subtitlePercent);
518
+ if (formatted instanceof Array) {
519
+ subtitle.texts = [...formatted];
520
+ }
521
+ else {
522
+ subtitle.texts.push(formatted.toString());
523
+ }
524
+ }
525
+ else {
526
+ if (this.options.subtitle instanceof Array) {
527
+ subtitle.texts = [...this.options.subtitle];
528
+ }
529
+ else {
530
+ subtitle.texts.push(this.options.subtitle.toString());
531
+ }
532
+ }
533
+ // get units object
534
+ let units = {
535
+ text: `${this.options.units}`,
536
+ fontSize: this.options.unitsFontSize,
537
+ fontWeight: this.options.unitsFontWeight,
538
+ color: this.options.unitsColor
539
+ };
540
+ // get total count of text lines to be shown
541
+ let rowCount = 0, rowNum = 1;
542
+ this.options.showTitle && (rowCount += title.texts.length);
543
+ this.options.showSubtitle && (rowCount += subtitle.texts.length);
544
+ // calc dy for each tspan for title
545
+ if (this.options.showTitle) {
546
+ for (let span of title.texts) {
547
+ title.tspans.push({ span: span, dy: this.getRelativeY(rowNum, rowCount) });
548
+ rowNum++;
549
+ }
550
+ }
551
+ // calc dy for each tspan for subtitle
552
+ if (this.options.showSubtitle) {
553
+ for (let span of subtitle.texts) {
554
+ subtitle.tspans.push({ span: span, dy: this.getRelativeY(rowNum, rowCount) });
555
+ rowNum++;
556
+ }
557
+ }
558
+ // create ID for gradient element
559
+ if (null === this._gradientUUID) {
560
+ this._gradientUUID = this.uuid();
561
+ }
562
+ // Bring it all together
563
+ this.svg = {
564
+ viewBox: `0 0 ${boxSize} ${boxSize}`,
565
+ // Set both width and height to '100%' if it's responsive
566
+ width: this.options.responsive ? '100%' : boxSize,
567
+ height: this.options.responsive ? '100%' : boxSize,
568
+ backgroundCircle: {
569
+ cx: centre.x,
570
+ cy: centre.y,
571
+ r: this.options.radius + this.options.outerStrokeWidth / 2 + this.options.backgroundPadding,
572
+ fill: this.options.backgroundColor,
573
+ fillOpacity: this.options.backgroundOpacity,
574
+ stroke: this.options.backgroundStroke,
575
+ strokeWidth: this.options.backgroundStrokeWidth,
576
+ },
577
+ path: {
578
+ // A rx ry x-axis-rotation large-arc-flag sweep-flag x y (https://developer.mozilla.org/en/docs/Web/SVG/Tutorial/Paths#Arcs)
579
+ d: `M ${startPoint.x} ${startPoint.y}
580
+ A ${this.options.radius} ${this.options.radius} 0 ${largeArcFlag} ${sweepFlag} ${endPoint.x} ${endPoint.y}`,
581
+ stroke: this.options.outerStrokeColor,
582
+ strokeWidth: this.options.outerStrokeWidth,
583
+ strokeLinecap: this.options.outerStrokeLinecap,
584
+ fill: 'none'
585
+ },
586
+ circle: {
587
+ cx: centre.x,
588
+ cy: centre.y,
589
+ r: this.options.radius - this.options.space - this.options.outerStrokeWidth / 2 - this.options.innerStrokeWidth / 2,
590
+ fill: 'none',
591
+ stroke: this.options.innerStrokeColor,
592
+ strokeWidth: this.options.innerStrokeWidth,
593
+ },
594
+ title: title,
595
+ units: units,
596
+ subtitle: subtitle,
597
+ image: {
598
+ x: centre.x - this.options.imageWidth / 2,
599
+ y: centre.y - this.options.imageHeight / 2,
600
+ src: this.options.imageSrc,
601
+ width: this.options.imageWidth,
602
+ height: this.options.imageHeight,
603
+ },
604
+ outerLinearGradient: {
605
+ id: 'outer-linear-' + this._gradientUUID,
606
+ colorStop1: this.options.outerStrokeColor,
607
+ colorStop2: this.options.outerStrokeGradientStopColor === 'transparent' ? '#FFF' : this.options.outerStrokeGradientStopColor,
608
+ },
609
+ radialGradient: {
610
+ id: 'radial-' + this._gradientUUID,
611
+ colorStop1: this.options.backgroundColor,
612
+ colorStop2: this.options.backgroundGradientStopColor === 'transparent' ? '#FFF' : this.options.backgroundGradientStopColor,
613
+ }
614
+ };
615
+ };
616
+ this.getAnimationParameters = (previousPercent, currentPercent) => {
617
+ const MIN_INTERVAL = 10;
618
+ let times, step, interval;
619
+ let fromPercent = this.options.startFromZero ? 0 : (previousPercent < 0 ? 0 : previousPercent);
620
+ let toPercent = currentPercent < 0 ? 0 : this.min(currentPercent, this.options.maxPercent);
621
+ let delta = Math.abs(Math.round(toPercent - fromPercent));
622
+ if (delta >= 100) {
623
+ // we will finish animation in 100 times
624
+ times = 100;
625
+ if (!this.options.animateTitle && !this.options.animateSubtitle) {
626
+ step = 1;
627
+ }
628
+ else {
629
+ // show title or subtitle animation even if the arc is full, we also need to finish it in 100 times.
630
+ step = Math.round(delta / times);
631
+ }
632
+ }
633
+ else {
634
+ // we will finish in as many times as the number of percent.
635
+ times = delta;
636
+ step = 1;
637
+ }
638
+ // Get the interval of timer
639
+ interval = Math.round(this.options.animationDuration / times);
640
+ // Readjust all values if the interval of timer is extremely small.
641
+ if (interval < MIN_INTERVAL) {
642
+ interval = MIN_INTERVAL;
643
+ times = this.options.animationDuration / interval;
644
+ if (!this.options.animateTitle && !this.options.animateSubtitle && delta > 100) {
645
+ step = Math.round(100 / times);
646
+ }
647
+ else {
648
+ step = Math.round(delta / times);
649
+ }
650
+ }
651
+ // step must be greater than 0.
652
+ if (step < 1) {
653
+ step = 1;
654
+ }
655
+ return { times: times, step: step, interval: interval };
656
+ };
657
+ this.animate = (previousPercent, currentPercent) => {
658
+ if (this._timerSubscription && !this._timerSubscription.closed) {
659
+ this._timerSubscription.unsubscribe();
660
+ }
661
+ let fromPercent = this.options.startFromZero ? 0 : previousPercent;
662
+ let toPercent = currentPercent;
663
+ let { step: step, interval: interval } = this.getAnimationParameters(fromPercent, toPercent);
664
+ let count = fromPercent;
665
+ if (fromPercent < toPercent) {
666
+ this._timerSubscription = timer(0, interval).subscribe(() => {
667
+ count += step;
668
+ if (count <= toPercent) {
669
+ if (!this.options.animateTitle && !this.options.animateSubtitle && count >= 100) {
670
+ this.draw(toPercent);
671
+ this._timerSubscription.unsubscribe();
672
+ }
673
+ else {
674
+ this.draw(count);
675
+ }
676
+ }
677
+ else {
678
+ this.draw(toPercent);
679
+ this._timerSubscription.unsubscribe();
680
+ }
681
+ });
682
+ }
683
+ else {
684
+ this._timerSubscription = timer(0, interval).subscribe(() => {
685
+ count -= step;
686
+ if (count >= toPercent) {
687
+ if (!this.options.animateTitle && !this.options.animateSubtitle && toPercent >= 100) {
688
+ this.draw(toPercent);
689
+ this._timerSubscription.unsubscribe();
690
+ }
691
+ else {
692
+ this.draw(count);
693
+ }
694
+ }
695
+ else {
696
+ this.draw(toPercent);
697
+ this._timerSubscription.unsubscribe();
698
+ }
699
+ });
700
+ }
701
+ };
702
+ this.applyOptions = () => {
703
+ // the options of <circle-progress> may change already
704
+ for (let name of Object.keys(this.options)) {
705
+ if (this.hasOwnProperty(name) && this[name] !== undefined) {
706
+ this.options[name] = this[name];
707
+ }
708
+ else if (this.templateOptions && this.templateOptions[name] !== undefined) {
709
+ this.options[name] = this.templateOptions[name];
710
+ }
711
+ }
712
+ // make sure key options valid
713
+ this.options.radius = Math.abs(+this.options.radius);
714
+ this.options.space = +this.options.space;
715
+ this.options.percent = +this.options.percent > 0 ? +this.options.percent : 0;
716
+ this.options.maxPercent = Math.abs(+this.options.maxPercent);
717
+ this.options.animationDuration = Math.abs(this.options.animationDuration);
718
+ this.options.outerStrokeWidth = Math.abs(+this.options.outerStrokeWidth);
719
+ this.options.innerStrokeWidth = Math.abs(+this.options.innerStrokeWidth);
720
+ this.options.backgroundPadding = +this.options.backgroundPadding;
721
+ };
722
+ this.getRelativeY = (rowNum, rowCount) => {
723
+ // why '-0.18em'? It's a magic number when property 'alignment-baseline' equals 'baseline'. :)
724
+ let initialOffset = -0.18, offset = 1;
725
+ return (initialOffset + offset * (rowNum - rowCount / 2)).toFixed(2) + 'em';
726
+ };
727
+ this.min = (a, b) => {
728
+ return a < b ? a : b;
729
+ };
730
+ this.max = (a, b) => {
731
+ return a > b ? a : b;
732
+ };
733
+ this.uuid = () => {
734
+ // https://www.w3resource.com/javascript-exercises/javascript-math-exercise-23.php
735
+ var dt = new Date().getTime();
736
+ var uuid = 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {
737
+ var r = (dt + Math.random() * 16) % 16 | 0;
738
+ dt = Math.floor(dt / 16);
739
+ return (c == 'x' ? r : (r & 0x3 | 0x8)).toString(16);
740
+ });
741
+ return uuid;
742
+ };
743
+ this.checkViewport = () => {
744
+ this.findSvgElement();
745
+ let previousValue = this.isInViewport;
746
+ this.isInViewport = this.isElementInViewport(this.svgElement);
747
+ if (previousValue !== this.isInViewport && this.onViewportChanged.observers.length > 0) {
748
+ this.ngZone.run(() => {
749
+ this.onViewportChanged.emit({ oldValue: previousValue, newValue: this.isInViewport });
750
+ });
751
+ }
752
+ };
753
+ this.onScroll = (event) => {
754
+ this.checkViewport();
755
+ };
756
+ this.loadEventsForLazyMode = () => {
757
+ if (this.options.lazy) {
758
+ this.ngZone.runOutsideAngular(() => {
759
+ this.document.addEventListener('scroll', this.onScroll, true);
760
+ this.window.addEventListener('resize', this.onScroll, true);
761
+ });
762
+ if (this._viewportChangedSubscriber === null) {
763
+ this._viewportChangedSubscriber = this.onViewportChanged.subscribe(({ oldValue, newValue }) => {
764
+ newValue ? this.render() : null;
765
+ });
766
+ }
767
+ // svgElement must be created in DOM before being checked.
768
+ // Is there a better way to check the existence of svgElemnt?
769
+ let _timer = timer(0, 50).subscribe(() => {
770
+ this.svgElement === null ? this.checkViewport() : _timer.unsubscribe();
771
+ });
772
+ }
773
+ };
774
+ this.unloadEventsForLazyMode = () => {
775
+ // Remove event listeners
776
+ this.document.removeEventListener('scroll', this.onScroll, true);
777
+ this.window.removeEventListener('resize', this.onScroll, true);
778
+ // Unsubscribe onViewportChanged
779
+ if (this._viewportChangedSubscriber !== null) {
780
+ this._viewportChangedSubscriber.unsubscribe();
781
+ this._viewportChangedSubscriber = null;
782
+ }
783
+ };
784
+ this.document = injector.get(DOCUMENT);
785
+ this.window = this.document.defaultView;
786
+ Object.assign(this.options, defaultOptions);
787
+ Object.assign(this.defaultOptions, defaultOptions);
788
+ }
789
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.18", ngImport: i0, type: CircleProgressComponent, deps: [{ token: CircleProgressOptions }, { token: i0.NgZone }, { token: i0.ElementRef }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.Component }); }
790
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.18", type: CircleProgressComponent, isStandalone: false, selector: "circle-progress", inputs: { name: "name", class: "class", backgroundGradient: "backgroundGradient", backgroundColor: "backgroundColor", backgroundGradientStopColor: "backgroundGradientStopColor", backgroundOpacity: "backgroundOpacity", backgroundStroke: "backgroundStroke", backgroundStrokeWidth: "backgroundStrokeWidth", backgroundPadding: "backgroundPadding", radius: "radius", space: "space", percent: "percent", toFixed: "toFixed", maxPercent: "maxPercent", renderOnClick: "renderOnClick", units: "units", unitsFontSize: "unitsFontSize", unitsFontWeight: "unitsFontWeight", unitsColor: "unitsColor", outerStrokeGradient: "outerStrokeGradient", outerStrokeWidth: "outerStrokeWidth", outerStrokeColor: "outerStrokeColor", outerStrokeGradientStopColor: "outerStrokeGradientStopColor", outerStrokeLinecap: "outerStrokeLinecap", innerStrokeColor: "innerStrokeColor", innerStrokeWidth: "innerStrokeWidth", titleFormat: "titleFormat", title: "title", titleColor: "titleColor", titleFontSize: "titleFontSize", titleFontWeight: "titleFontWeight", subtitleFormat: "subtitleFormat", subtitle: "subtitle", subtitleColor: "subtitleColor", subtitleFontSize: "subtitleFontSize", subtitleFontWeight: "subtitleFontWeight", imageSrc: "imageSrc", imageHeight: "imageHeight", imageWidth: "imageWidth", animation: "animation", animateTitle: "animateTitle", animateSubtitle: "animateSubtitle", animationDuration: "animationDuration", showTitle: "showTitle", showSubtitle: "showSubtitle", showUnits: "showUnits", showImage: "showImage", showBackground: "showBackground", showInnerStroke: "showInnerStroke", clockwise: "clockwise", responsive: "responsive", startFromZero: "startFromZero", showZeroOuterStroke: "showZeroOuterStroke", lazy: "lazy", templateOptions: ["options", "templateOptions"] }, outputs: { onClick: "onClick" }, usesOnChanges: true, ngImport: i0, template: `
791
+ <svg xmlns="http://www.w3.org/2000/svg" *ngIf="svg"
792
+ [attr.viewBox]="svg.viewBox" preserveAspectRatio="xMidYMid meet"
793
+ [attr.height]="svg.height" [attr.width]="svg.width" (click)="emitClickEvent($event)" [attr.class]="options.class">
794
+ <defs>
795
+ <linearGradient *ngIf="options.outerStrokeGradient" [attr.id]="svg.outerLinearGradient.id">
796
+ <stop offset="5%" [attr.stop-color]="svg.outerLinearGradient.colorStop1" [attr.stop-opacity]="1"/>
797
+ <stop offset="95%" [attr.stop-color]="svg.outerLinearGradient.colorStop2" [attr.stop-opacity]="1"/>
798
+ </linearGradient>
799
+ <radialGradient *ngIf="options.backgroundGradient" [attr.id]="svg.radialGradient.id">
800
+ <stop offset="5%" [attr.stop-color]="svg.radialGradient.colorStop1" [attr.stop-opacity]="1"/>
801
+ <stop offset="95%" [attr.stop-color]="svg.radialGradient.colorStop2" [attr.stop-opacity]="1"/>
802
+ </radialGradient>
803
+ </defs>
804
+ <ng-container *ngIf="options.showBackground">
805
+ <circle *ngIf="!options.backgroundGradient"
806
+ [attr.cx]="svg.backgroundCircle.cx"
807
+ [attr.cy]="svg.backgroundCircle.cy"
808
+ [attr.r]="svg.backgroundCircle.r"
809
+ [attr.fill]="svg.backgroundCircle.fill"
810
+ [attr.fill-opacity]="svg.backgroundCircle.fillOpacity"
811
+ [attr.stroke]="svg.backgroundCircle.stroke"
812
+ [attr.stroke-width]="svg.backgroundCircle.strokeWidth"/>
813
+ <circle *ngIf="options.backgroundGradient"
814
+ [attr.cx]="svg.backgroundCircle.cx"
815
+ [attr.cy]="svg.backgroundCircle.cy"
816
+ [attr.r]="svg.backgroundCircle.r"
817
+ attr.fill="url({{window.location.href}}#{{svg.radialGradient.id}})"
818
+ [attr.fill-opacity]="svg.backgroundCircle.fillOpacity"
819
+ [attr.stroke]="svg.backgroundCircle.stroke"
820
+ [attr.stroke-width]="svg.backgroundCircle.strokeWidth"/>
821
+ </ng-container>
822
+ <circle *ngIf="options.showInnerStroke"
823
+ [attr.cx]="svg.circle.cx"
824
+ [attr.cy]="svg.circle.cy"
825
+ [attr.r]="svg.circle.r"
826
+ [attr.fill]="svg.circle.fill"
827
+ [attr.stroke]="svg.circle.stroke"
828
+ [attr.stroke-width]="svg.circle.strokeWidth"/>
829
+ <ng-container *ngIf="+options.percent!==0 || options.showZeroOuterStroke">
830
+ <path *ngIf="!options.outerStrokeGradient"
831
+ [attr.d]="svg.path.d"
832
+ [attr.stroke]="svg.path.stroke"
833
+ [attr.stroke-width]="svg.path.strokeWidth"
834
+ [attr.stroke-linecap]="svg.path.strokeLinecap"
835
+ [attr.fill]="svg.path.fill"/>
836
+ <path *ngIf="options.outerStrokeGradient"
837
+ [attr.d]="svg.path.d"
838
+ attr.stroke="url({{window.location.href}}#{{svg.outerLinearGradient.id}})"
839
+ [attr.stroke-width]="svg.path.strokeWidth"
840
+ [attr.stroke-linecap]="svg.path.strokeLinecap"
841
+ [attr.fill]="svg.path.fill"/>
842
+ </ng-container>
843
+ <text *ngIf="!options.showImage && (options.showTitle || options.showUnits || options.showSubtitle)"
844
+ alignment-baseline="baseline"
845
+ [attr.x]="svg.circle.cx"
846
+ [attr.y]="svg.circle.cy"
847
+ [attr.text-anchor]="svg.title.textAnchor">
848
+ <ng-container *ngIf="options.showTitle">
849
+ <tspan *ngFor="let tspan of svg.title.tspans"
850
+ [attr.x]="svg.title.x"
851
+ [attr.y]="svg.title.y"
852
+ [attr.dy]="tspan.dy"
853
+ [attr.font-size]="svg.title.fontSize"
854
+ [attr.font-weight]="svg.title.fontWeight"
855
+ [attr.fill]="svg.title.color">{{tspan.span}}</tspan>
856
+ </ng-container>
857
+ <tspan *ngIf="options.showUnits"
858
+ [attr.font-size]="svg.units.fontSize"
859
+ [attr.font-weight]="svg.units.fontWeight"
860
+ [attr.fill]="svg.units.color">{{svg.units.text}}</tspan>
861
+ <ng-container *ngIf="options.showSubtitle">
862
+ <tspan *ngFor="let tspan of svg.subtitle.tspans"
863
+ [attr.x]="svg.subtitle.x"
864
+ [attr.y]="svg.subtitle.y"
865
+ [attr.dy]="tspan.dy"
866
+ [attr.font-size]="svg.subtitle.fontSize"
867
+ [attr.font-weight]="svg.subtitle.fontWeight"
868
+ [attr.fill]="svg.subtitle.color">{{tspan.span}}</tspan>
869
+ </ng-container>
870
+ </text>
871
+ <image *ngIf="options.showImage" preserveAspectRatio="none"
872
+ [attr.height]="svg.image.height"
873
+ [attr.width]="svg.image.width"
874
+ [attr.xlink:href]="svg.image.src"
875
+ [attr.x]="svg.image.x"
876
+ [attr.y]="svg.image.y"
877
+ />
878
+ </svg>
879
+ `, isInline: true, dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] }); }
880
+ }
881
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.18", ngImport: i0, type: CircleProgressComponent, decorators: [{
882
+ type: Component,
883
+ args: [{
884
+ selector: 'circle-progress',
885
+ standalone: false,
886
+ template: `
887
+ <svg xmlns="http://www.w3.org/2000/svg" *ngIf="svg"
888
+ [attr.viewBox]="svg.viewBox" preserveAspectRatio="xMidYMid meet"
889
+ [attr.height]="svg.height" [attr.width]="svg.width" (click)="emitClickEvent($event)" [attr.class]="options.class">
890
+ <defs>
891
+ <linearGradient *ngIf="options.outerStrokeGradient" [attr.id]="svg.outerLinearGradient.id">
892
+ <stop offset="5%" [attr.stop-color]="svg.outerLinearGradient.colorStop1" [attr.stop-opacity]="1"/>
893
+ <stop offset="95%" [attr.stop-color]="svg.outerLinearGradient.colorStop2" [attr.stop-opacity]="1"/>
894
+ </linearGradient>
895
+ <radialGradient *ngIf="options.backgroundGradient" [attr.id]="svg.radialGradient.id">
896
+ <stop offset="5%" [attr.stop-color]="svg.radialGradient.colorStop1" [attr.stop-opacity]="1"/>
897
+ <stop offset="95%" [attr.stop-color]="svg.radialGradient.colorStop2" [attr.stop-opacity]="1"/>
898
+ </radialGradient>
899
+ </defs>
900
+ <ng-container *ngIf="options.showBackground">
901
+ <circle *ngIf="!options.backgroundGradient"
902
+ [attr.cx]="svg.backgroundCircle.cx"
903
+ [attr.cy]="svg.backgroundCircle.cy"
904
+ [attr.r]="svg.backgroundCircle.r"
905
+ [attr.fill]="svg.backgroundCircle.fill"
906
+ [attr.fill-opacity]="svg.backgroundCircle.fillOpacity"
907
+ [attr.stroke]="svg.backgroundCircle.stroke"
908
+ [attr.stroke-width]="svg.backgroundCircle.strokeWidth"/>
909
+ <circle *ngIf="options.backgroundGradient"
910
+ [attr.cx]="svg.backgroundCircle.cx"
911
+ [attr.cy]="svg.backgroundCircle.cy"
912
+ [attr.r]="svg.backgroundCircle.r"
913
+ attr.fill="url({{window.location.href}}#{{svg.radialGradient.id}})"
914
+ [attr.fill-opacity]="svg.backgroundCircle.fillOpacity"
915
+ [attr.stroke]="svg.backgroundCircle.stroke"
916
+ [attr.stroke-width]="svg.backgroundCircle.strokeWidth"/>
917
+ </ng-container>
918
+ <circle *ngIf="options.showInnerStroke"
919
+ [attr.cx]="svg.circle.cx"
920
+ [attr.cy]="svg.circle.cy"
921
+ [attr.r]="svg.circle.r"
922
+ [attr.fill]="svg.circle.fill"
923
+ [attr.stroke]="svg.circle.stroke"
924
+ [attr.stroke-width]="svg.circle.strokeWidth"/>
925
+ <ng-container *ngIf="+options.percent!==0 || options.showZeroOuterStroke">
926
+ <path *ngIf="!options.outerStrokeGradient"
927
+ [attr.d]="svg.path.d"
928
+ [attr.stroke]="svg.path.stroke"
929
+ [attr.stroke-width]="svg.path.strokeWidth"
930
+ [attr.stroke-linecap]="svg.path.strokeLinecap"
931
+ [attr.fill]="svg.path.fill"/>
932
+ <path *ngIf="options.outerStrokeGradient"
933
+ [attr.d]="svg.path.d"
934
+ attr.stroke="url({{window.location.href}}#{{svg.outerLinearGradient.id}})"
935
+ [attr.stroke-width]="svg.path.strokeWidth"
936
+ [attr.stroke-linecap]="svg.path.strokeLinecap"
937
+ [attr.fill]="svg.path.fill"/>
938
+ </ng-container>
939
+ <text *ngIf="!options.showImage && (options.showTitle || options.showUnits || options.showSubtitle)"
940
+ alignment-baseline="baseline"
941
+ [attr.x]="svg.circle.cx"
942
+ [attr.y]="svg.circle.cy"
943
+ [attr.text-anchor]="svg.title.textAnchor">
944
+ <ng-container *ngIf="options.showTitle">
945
+ <tspan *ngFor="let tspan of svg.title.tspans"
946
+ [attr.x]="svg.title.x"
947
+ [attr.y]="svg.title.y"
948
+ [attr.dy]="tspan.dy"
949
+ [attr.font-size]="svg.title.fontSize"
950
+ [attr.font-weight]="svg.title.fontWeight"
951
+ [attr.fill]="svg.title.color">{{tspan.span}}</tspan>
952
+ </ng-container>
953
+ <tspan *ngIf="options.showUnits"
954
+ [attr.font-size]="svg.units.fontSize"
955
+ [attr.font-weight]="svg.units.fontWeight"
956
+ [attr.fill]="svg.units.color">{{svg.units.text}}</tspan>
957
+ <ng-container *ngIf="options.showSubtitle">
958
+ <tspan *ngFor="let tspan of svg.subtitle.tspans"
959
+ [attr.x]="svg.subtitle.x"
960
+ [attr.y]="svg.subtitle.y"
961
+ [attr.dy]="tspan.dy"
962
+ [attr.font-size]="svg.subtitle.fontSize"
963
+ [attr.font-weight]="svg.subtitle.fontWeight"
964
+ [attr.fill]="svg.subtitle.color">{{tspan.span}}</tspan>
965
+ </ng-container>
966
+ </text>
967
+ <image *ngIf="options.showImage" preserveAspectRatio="none"
968
+ [attr.height]="svg.image.height"
969
+ [attr.width]="svg.image.width"
970
+ [attr.xlink:href]="svg.image.src"
971
+ [attr.x]="svg.image.x"
972
+ [attr.y]="svg.image.y"
973
+ />
974
+ </svg>
975
+ `
976
+ }]
977
+ }], ctorParameters: () => [{ type: CircleProgressOptions }, { type: i0.NgZone }, { type: i0.ElementRef }, { type: i0.Injector }], propDecorators: { onClick: [{
978
+ type: Output
979
+ }], name: [{
980
+ type: Input
981
+ }], class: [{
982
+ type: Input
983
+ }], backgroundGradient: [{
984
+ type: Input
985
+ }], backgroundColor: [{
986
+ type: Input
987
+ }], backgroundGradientStopColor: [{
988
+ type: Input
989
+ }], backgroundOpacity: [{
990
+ type: Input
991
+ }], backgroundStroke: [{
992
+ type: Input
993
+ }], backgroundStrokeWidth: [{
994
+ type: Input
995
+ }], backgroundPadding: [{
996
+ type: Input
997
+ }], radius: [{
998
+ type: Input
999
+ }], space: [{
1000
+ type: Input
1001
+ }], percent: [{
1002
+ type: Input
1003
+ }], toFixed: [{
1004
+ type: Input
1005
+ }], maxPercent: [{
1006
+ type: Input
1007
+ }], renderOnClick: [{
1008
+ type: Input
1009
+ }], units: [{
1010
+ type: Input
1011
+ }], unitsFontSize: [{
1012
+ type: Input
1013
+ }], unitsFontWeight: [{
1014
+ type: Input
1015
+ }], unitsColor: [{
1016
+ type: Input
1017
+ }], outerStrokeGradient: [{
1018
+ type: Input
1019
+ }], outerStrokeWidth: [{
1020
+ type: Input
1021
+ }], outerStrokeColor: [{
1022
+ type: Input
1023
+ }], outerStrokeGradientStopColor: [{
1024
+ type: Input
1025
+ }], outerStrokeLinecap: [{
1026
+ type: Input
1027
+ }], innerStrokeColor: [{
1028
+ type: Input
1029
+ }], innerStrokeWidth: [{
1030
+ type: Input
1031
+ }], titleFormat: [{
1032
+ type: Input
1033
+ }], title: [{
1034
+ type: Input
1035
+ }], titleColor: [{
1036
+ type: Input
1037
+ }], titleFontSize: [{
1038
+ type: Input
1039
+ }], titleFontWeight: [{
1040
+ type: Input
1041
+ }], subtitleFormat: [{
1042
+ type: Input
1043
+ }], subtitle: [{
1044
+ type: Input
1045
+ }], subtitleColor: [{
1046
+ type: Input
1047
+ }], subtitleFontSize: [{
1048
+ type: Input
1049
+ }], subtitleFontWeight: [{
1050
+ type: Input
1051
+ }], imageSrc: [{
1052
+ type: Input
1053
+ }], imageHeight: [{
1054
+ type: Input
1055
+ }], imageWidth: [{
1056
+ type: Input
1057
+ }], animation: [{
1058
+ type: Input
1059
+ }], animateTitle: [{
1060
+ type: Input
1061
+ }], animateSubtitle: [{
1062
+ type: Input
1063
+ }], animationDuration: [{
1064
+ type: Input
1065
+ }], showTitle: [{
1066
+ type: Input
1067
+ }], showSubtitle: [{
1068
+ type: Input
1069
+ }], showUnits: [{
1070
+ type: Input
1071
+ }], showImage: [{
1072
+ type: Input
1073
+ }], showBackground: [{
1074
+ type: Input
1075
+ }], showInnerStroke: [{
1076
+ type: Input
1077
+ }], clockwise: [{
1078
+ type: Input
1079
+ }], responsive: [{
1080
+ type: Input
1081
+ }], startFromZero: [{
1082
+ type: Input
1083
+ }], showZeroOuterStroke: [{
1084
+ type: Input
1085
+ }], lazy: [{
1086
+ type: Input
1087
+ }], templateOptions: [{
1088
+ type: Input,
1089
+ args: ['options']
1090
+ }] } });
1091
+
269
1092
  class JaceMultiprogWidgetComponent {
270
1093
  constructor(dshService, router) {
271
1094
  this.dshService = dshService;
@@ -326,16 +1149,16 @@ class JaceMultiprogWidgetComponent {
326
1149
  }
327
1150
  this.configuration = !this.configuration;
328
1151
  }
329
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.18", ngImport: i0, type: JaceMultiprogWidgetComponent, deps: [{ token: DSH_DATA_SERVICE }, { token: i1.Router }], target: i0.ɵɵFactoryTarget.Component }); }
330
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.18", type: JaceMultiprogWidgetComponent, isStandalone: false, selector: "jace-dsh-multiprog", inputs: { DashboardDate: "DashboardDate" }, outputs: { OnRemove: "OnRemove" }, usesOnChanges: true, ngImport: i0, template: "<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>", styles: [".jace-dsh-multiprog-title{text-align:center;font-weight:600;font-size:.8em}.jace-dsh-multiprog-container{display:flex;flex-direction:row;flex-wrap:wrap;justify-content:space-evenly;padding:.5rem}\n"], dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] }); }
1152
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.18", ngImport: i0, type: JaceMultiprogWidgetComponent, deps: [{ token: DSH_DATA_SERVICE }, { token: i1$1.Router }], target: i0.ɵɵFactoryTarget.Component }); }
1153
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.18", type: JaceMultiprogWidgetComponent, isStandalone: false, selector: "jace-dsh-multiprog", inputs: { DashboardDate: "DashboardDate" }, outputs: { OnRemove: "OnRemove" }, usesOnChanges: true, ngImport: i0, template: "<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 <!-- messo circle progress per tutto... prima si poteva switchare su progress bar ma pace -->\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 ></circle-progress>\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>", styles: [".jace-dsh-multiprog-title{text-align:center;font-weight:600;font-size:.8em}.jace-dsh-multiprog-container{display:flex;flex-direction:row;flex-wrap:wrap;justify-content:space-evenly;padding:.5rem}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: CircleProgressComponent, selector: "circle-progress", inputs: ["name", "class", "backgroundGradient", "backgroundColor", "backgroundGradientStopColor", "backgroundOpacity", "backgroundStroke", "backgroundStrokeWidth", "backgroundPadding", "radius", "space", "percent", "toFixed", "maxPercent", "renderOnClick", "units", "unitsFontSize", "unitsFontWeight", "unitsColor", "outerStrokeGradient", "outerStrokeWidth", "outerStrokeColor", "outerStrokeGradientStopColor", "outerStrokeLinecap", "innerStrokeColor", "innerStrokeWidth", "titleFormat", "title", "titleColor", "titleFontSize", "titleFontWeight", "subtitleFormat", "subtitle", "subtitleColor", "subtitleFontSize", "subtitleFontWeight", "imageSrc", "imageHeight", "imageWidth", "animation", "animateTitle", "animateSubtitle", "animationDuration", "showTitle", "showSubtitle", "showUnits", "showImage", "showBackground", "showInnerStroke", "clockwise", "responsive", "startFromZero", "showZeroOuterStroke", "lazy", "options"], outputs: ["onClick"] }] }); }
331
1154
  }
332
1155
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.18", ngImport: i0, type: JaceMultiprogWidgetComponent, decorators: [{
333
1156
  type: Component,
334
- args: [{ selector: 'jace-dsh-multiprog', standalone: false, template: "<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>", styles: [".jace-dsh-multiprog-title{text-align:center;font-weight:600;font-size:.8em}.jace-dsh-multiprog-container{display:flex;flex-direction:row;flex-wrap:wrap;justify-content:space-evenly;padding:.5rem}\n"] }]
1157
+ args: [{ selector: 'jace-dsh-multiprog', standalone: false, template: "<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 <!-- messo circle progress per tutto... prima si poteva switchare su progress bar ma pace -->\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 ></circle-progress>\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>", styles: [".jace-dsh-multiprog-title{text-align:center;font-weight:600;font-size:.8em}.jace-dsh-multiprog-container{display:flex;flex-direction:row;flex-wrap:wrap;justify-content:space-evenly;padding:.5rem}\n"] }]
335
1158
  }], ctorParameters: () => [{ type: undefined, decorators: [{
336
1159
  type: Inject,
337
1160
  args: [DSH_DATA_SERVICE]
338
- }] }, { type: i1.Router }], propDecorators: { DashboardDate: [{
1161
+ }] }, { type: i1$1.Router }], propDecorators: { DashboardDate: [{
339
1162
  type: Input
340
1163
  }], OnRemove: [{
341
1164
  type: Output
@@ -697,8 +1520,8 @@ class DashboardComponent {
697
1520
  addItem() {
698
1521
  //this.dashboard.push({});
699
1522
  }
700
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.18", ngImport: i0, type: DashboardComponent, deps: [{ token: DSH_DATA_SERVICE }, { token: i1$1.InterComService }, { token: i1.ActivatedRoute }, { token: DashboardWidgetFactory }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
701
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.18", type: DashboardComponent, isStandalone: false, selector: "es-dashboard", inputs: { Configuration: "Configuration" }, viewQueries: [{ propertyName: "gridItemRefs", predicate: ["grid_item"], descendants: true, read: ViewContainerRef }], usesOnChanges: true, ngImport: i0, template: "<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>", styles: [".jace-dsh-toolbar{font-size:smaller;display:flex;flex-flow:row;justify-content:flex-end;align-items:center;padding:0 1em .5em}.jace-dsh-toolbar-title{flex:2 1 auto;font-size:2em;color:#777;font-variant:small-caps}.jace-dsh-toolbar-dtp{flex:1 1 auto}.jace-dsh-save-button{font-size:larger;padding:.5em 1em;border-radius:4px;border:1px solid #ddd;color:#777;margin-left:.5em;cursor:pointer;flex:0 0 auto}.jace-dsh-save-button:hover{color:#000;border-color:#000}.jace-dsh-widget-area{background:#e9ebee;scroll-behavior:auto}.jace-dsh-widget{border:solid 1px #ddd;border-radius:5px;min-width:204px}.jace-dsh-widget-header{margin:0rem .5rem;display:flex;flex-flow:row;justify-content:left;align-items:center}.jace-dsh-widget-title{padding:.5rem .2rem .3rem;border-bottom:solid 1px #ddd;text-transform:uppercase;font-size:.8rem}.jace-dsh-widget-body{margin:0rem .5rem;display:flex;flex-wrap:nowrap;overflow-x:clip}.jace-dsh-widget-loading{padding:.5rem;width:100%;flex:0 0 auto;font-size:4rem;font-weight:700;text-align:center}.jace-dsh-widget-slide{transition-property:transform;transition-duration:.75s;transition-timing-function:ease;width:100%;flex:0 0 auto}.jace-dsh-widget-content-show{transform:translate(0) translateZ(0)}.jace-dsh-widget-content-hide,.jace-dsh-widget-settings-show{transform:translate(-100%) translateZ(0)}.jace-dsh-widget-settings-hide{transform:translate(0) translateZ(0)}.jace-dsh-widget-settings{padding:.5rem;width:100%;flex:0 0 auto}.jace-dsh-widget-controls{margin-left:auto;order:2;z-index:1;top:0rem;right:0rem;padding:.2rem .1rem;font-size:1rem;color:#bbb;align-items:center;cursor:pointer}.jace-dsh-widget-drag{font-size:.78em}.jace-dsh-widget-opts{font-size:.92em}.jace-dsh-widget-close{font-size:1.1em}.jace-dsh-widget-controls span{margin-right:.1rem;margin-left:.1rem}.jace-dsh-widget-controls span:hover{color:#637ca0}\n"], dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i5.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i5.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i5.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "component", type: i6.GridsterComponent, selector: "gridster", inputs: ["options"] }, { kind: "component", type: i6.GridsterItemComponent, selector: "gridster-item", inputs: ["item"], outputs: ["itemInit", "itemChange", "itemResize"] }, { kind: "component", type: i7.EsFormDateComponent, selector: "form-date", inputs: ["InOutFormat", "FloatingLabel"] }], encapsulation: i0.ViewEncapsulation.None }); }
1523
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.18", ngImport: i0, type: DashboardComponent, deps: [{ token: DSH_DATA_SERVICE }, { token: i1$2.InterComService }, { token: i1$1.ActivatedRoute }, { token: DashboardWidgetFactory }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
1524
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.18", type: DashboardComponent, isStandalone: false, selector: "es-dashboard", inputs: { Configuration: "Configuration" }, viewQueries: [{ propertyName: "gridItemRefs", predicate: ["grid_item"], descendants: true, read: ViewContainerRef }], usesOnChanges: true, ngImport: i0, template: "<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>", styles: [".jace-dsh-toolbar{font-size:smaller;display:flex;flex-flow:row;justify-content:flex-end;align-items:center;padding:0 1em .5em}.jace-dsh-toolbar-title{flex:2 1 auto;font-size:2em;color:#777;font-variant:small-caps}.jace-dsh-toolbar-dtp{flex:1 1 auto}.jace-dsh-save-button{font-size:larger;padding:.5em 1em;border-radius:4px;border:1px solid #ddd;color:#777;margin-left:.5em;cursor:pointer;flex:0 0 auto}.jace-dsh-save-button:hover{color:#000;border-color:#000}.jace-dsh-widget-area{background:#e9ebee;scroll-behavior:auto}.jace-dsh-widget{border:solid 1px #ddd;border-radius:5px;min-width:204px}.jace-dsh-widget-header{margin:0rem .5rem;display:flex;flex-flow:row;justify-content:left;align-items:center}.jace-dsh-widget-title{padding:.5rem .2rem .3rem;border-bottom:solid 1px #ddd;text-transform:uppercase;font-size:.8rem}.jace-dsh-widget-body{margin:0rem .5rem;display:flex;flex-wrap:nowrap;overflow-x:clip}.jace-dsh-widget-loading{padding:.5rem;width:100%;flex:0 0 auto;font-size:4rem;font-weight:700;text-align:center}.jace-dsh-widget-slide{transition-property:transform;transition-duration:.75s;transition-timing-function:ease;width:100%;flex:0 0 auto}.jace-dsh-widget-content-show{transform:translate(0) translateZ(0)}.jace-dsh-widget-content-hide,.jace-dsh-widget-settings-show{transform:translate(-100%) translateZ(0)}.jace-dsh-widget-settings-hide{transform:translate(0) translateZ(0)}.jace-dsh-widget-settings{padding:.5rem;width:100%;flex:0 0 auto}.jace-dsh-widget-controls{margin-left:auto;order:2;z-index:1;top:0rem;right:0rem;padding:.2rem .1rem;font-size:1rem;color:#bbb;align-items:center;cursor:pointer}.jace-dsh-widget-drag{font-size:.78em}.jace-dsh-widget-opts{font-size:.92em}.jace-dsh-widget-close{font-size:1.1em}.jace-dsh-widget-controls span{margin-right:.1rem;margin-left:.1rem}.jace-dsh-widget-controls span:hover{color:#637ca0}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i5.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i5.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i5.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "component", type: i6.GridsterComponent, selector: "gridster", inputs: ["options"] }, { kind: "component", type: i6.GridsterItemComponent, selector: "gridster-item", inputs: ["item"], outputs: ["itemInit", "itemChange", "itemResize"] }, { kind: "component", type: i7.EsFormDateComponent, selector: "form-date", inputs: ["InOutFormat", "FloatingLabel"] }], encapsulation: i0.ViewEncapsulation.None }); }
702
1525
  }
703
1526
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.18", ngImport: i0, type: DashboardComponent, decorators: [{
704
1527
  type: Component,
@@ -706,7 +1529,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.18", ngImpo
706
1529
  }], ctorParameters: () => [{ type: undefined, decorators: [{
707
1530
  type: Inject,
708
1531
  args: [DSH_DATA_SERVICE]
709
- }] }, { type: i1$1.InterComService }, { type: i1.ActivatedRoute }, { type: DashboardWidgetFactory }, { type: i0.ChangeDetectorRef }], propDecorators: { Configuration: [{
1532
+ }] }, { type: i1$2.InterComService }, { type: i1$1.ActivatedRoute }, { type: DashboardWidgetFactory }, { type: i0.ChangeDetectorRef }], propDecorators: { Configuration: [{
710
1533
  type: Input
711
1534
  }], gridItemRefs: [{
712
1535
  type: ViewChildren,
@@ -745,12 +1568,12 @@ class DashboardFeatureAPIDataService {
745
1568
  }
746
1569
  return this.http.get(Repository["GET_Dashboard_GetWidgetData"], params);
747
1570
  }
748
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.18", ngImport: i0, type: DashboardFeatureAPIDataService, deps: [{ token: i1$2.HTTPService }], target: i0.ɵɵFactoryTarget.Injectable }); }
1571
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.18", ngImport: i0, type: DashboardFeatureAPIDataService, deps: [{ token: i1$3.HTTPService }], target: i0.ɵɵFactoryTarget.Injectable }); }
749
1572
  static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.18", ngImport: i0, type: DashboardFeatureAPIDataService }); }
750
1573
  }
751
1574
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.18", ngImport: i0, type: DashboardFeatureAPIDataService, decorators: [{
752
1575
  type: Injectable
753
- }], ctorParameters: () => [{ type: i1$2.HTTPService }] });
1576
+ }], ctorParameters: () => [{ type: i1$3.HTTPService }] });
754
1577
 
755
1578
  const MODULES = [
756
1579
  // Base
@@ -766,7 +1589,8 @@ const COMPONENTS = [
766
1589
  JaceListWidgetComponent,
767
1590
  JaceCounterWidgetComponent,
768
1591
  JaceChartWidgetComponent,
769
- JaceMultiprogWidgetComponent
1592
+ JaceMultiprogWidgetComponent,
1593
+ CircleProgressComponent
770
1594
  ];
771
1595
  class DashboardFeatureModule {
772
1596
  static forRoot(options) {
@@ -790,7 +1614,8 @@ class DashboardFeatureModule {
790
1614
  JaceListWidgetComponent,
791
1615
  JaceCounterWidgetComponent,
792
1616
  JaceChartWidgetComponent,
793
- JaceMultiprogWidgetComponent], imports: [
1617
+ JaceMultiprogWidgetComponent,
1618
+ CircleProgressComponent], imports: [
794
1619
  // Base
795
1620
  CommonModule,
796
1621
  FormsModule,
@@ -801,7 +1626,8 @@ class DashboardFeatureModule {
801
1626
  JaceListWidgetComponent,
802
1627
  JaceCounterWidgetComponent,
803
1628
  JaceChartWidgetComponent,
804
- JaceMultiprogWidgetComponent] }); }
1629
+ JaceMultiprogWidgetComponent,
1630
+ CircleProgressComponent] }); }
805
1631
  static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "19.2.18", ngImport: i0, type: DashboardFeatureModule, imports: [MODULES] }); }
806
1632
  }
807
1633
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.18", ngImport: i0, type: DashboardFeatureModule, decorators: [{
@@ -984,5 +1810,5 @@ var JaceWidgetTypes;
984
1810
  * Generated bundle index. Do not edit.
985
1811
  */
986
1812
 
987
- export { BaseJaceWidgetModel, BaseWidgetComponent, DSH_DATA_SERVICE, DashboardComponent, DashboardFeatureAPIDataService, DashboardFeatureModule, DashboardWidgetFactory, DefaultDashboardModuleOptions, JaceChartWidgetComponent, JaceCounterWidgetComponent, JaceDashboardConfig, JaceDashboardLayoutAppSearch, JaceDashboardLayoutDetail, JaceListWidgetComponent, JaceMultiprogWidgetComponent, JaceWidgetInstanceDetail, JaceWidgetTypes, SaveJaceDashboardLayoutDTO };
1813
+ export { BaseJaceWidgetModel, BaseWidgetComponent, CircleProgressComponent, CircleProgressOptions, DSH_DATA_SERVICE, DashboardComponent, DashboardFeatureAPIDataService, DashboardFeatureModule, DashboardWidgetFactory, DefaultDashboardModuleOptions, JaceChartWidgetComponent, JaceCounterWidgetComponent, JaceDashboardConfig, JaceDashboardLayoutAppSearch, JaceDashboardLayoutDetail, JaceListWidgetComponent, JaceMultiprogWidgetComponent, JaceWidgetInstanceDetail, JaceWidgetTypes, SaveJaceDashboardLayoutDTO };
988
1814
  //# sourceMappingURL=esfaenza-dashboard-feature.mjs.map