@smartbit4all/ng-client 4.2.70 → 4.2.71
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/esm2022/lib/smart-client/smart-component-api-client.mjs +15 -1
- package/esm2022/lib/smart-client/smart.component.mjs +9 -2
- package/esm2022/lib/smart-component-layout/api/model/componentWidgetType.mjs +2 -1
- package/esm2022/lib/smart-component-layout/api/model/layoutDefinitionDescriptor.mjs +2 -0
- package/esm2022/lib/smart-component-layout/api/model/models.mjs +2 -1
- package/esm2022/lib/smart-component-layout/api/model/smartComponentLayoutDefinition.mjs +1 -1
- package/esm2022/lib/smart-component-layout/smart-component-layout-utility.mjs +18 -1
- package/esm2022/lib/smart-component-layout/smart-component-layout.component.mjs +33 -3
- package/esm2022/lib/smart-component-layout/smart-component-layout.module.mjs +7 -3
- package/esm2022/lib/smart-diagram/api/api/api.mjs +4 -0
- package/esm2022/lib/smart-diagram/api/api/diagramService.service.mjs +141 -0
- package/esm2022/lib/smart-diagram/api/api.module.mjs +40 -0
- package/esm2022/lib/smart-diagram/api/configuration.mjs +91 -0
- package/esm2022/lib/smart-diagram/api/encoder.mjs +19 -0
- package/esm2022/lib/smart-diagram/api/index.mjs +7 -0
- package/esm2022/lib/smart-diagram/api/model/diagramColor.mjs +13 -0
- package/esm2022/lib/smart-diagram/api/model/diagramDataContainer.mjs +2 -0
- package/esm2022/lib/smart-diagram/api/model/diagramDataItem.mjs +13 -0
- package/esm2022/lib/smart-diagram/api/model/diagramDataSet.mjs +2 -0
- package/esm2022/lib/smart-diagram/api/model/diagramDescriptor.mjs +2 -0
- package/esm2022/lib/smart-diagram/api/model/diagramModel.mjs +2 -0
- package/esm2022/lib/smart-diagram/api/model/diagramShape.mjs +2 -0
- package/esm2022/lib/smart-diagram/api/model/drawTime.mjs +18 -0
- package/esm2022/lib/smart-diagram/api/model/labelText.mjs +2 -0
- package/esm2022/lib/smart-diagram/api/model/models.mjs +10 -0
- package/esm2022/lib/smart-diagram/api/param.mjs +2 -0
- package/esm2022/lib/smart-diagram/api/variables.mjs +9 -0
- package/esm2022/lib/smart-diagram/component/default-smart-diagram-options.provider.mjs +289 -0
- package/esm2022/lib/smart-diagram/component/smart-diagram.component.mjs +341 -0
- package/esm2022/lib/smart-diagram/component/smart-diagram.module.mjs +39 -0
- package/esm2022/lib/smart-diagram/component/smart-diagram.util.mjs +10 -0
- package/esm2022/lib/smart-diagram/projects.mjs +5 -0
- package/esm2022/lib/smart-form/widgets/smartformwidget/smartformwidget.component.mjs +3 -3
- package/esm2022/lib/smart-grid/api/grid-api/model/gridExportDescriptor.mjs +1 -12
- package/esm2022/lib/smart-grid/api/grid-api/model/gridModel.mjs +1 -1
- package/esm2022/lib/smart-grid/smart-grid.component.mjs +4 -3
- package/esm2022/lib/smart-table/tables/material-table/material-table.component.mjs +3 -3
- package/esm2022/lib/smart-table/tables/table.mjs +1 -1
- package/esm2022/projects.mjs +2 -1
- package/fesm2022/smartbit4all-ng-client.mjs +1231 -180
- package/fesm2022/smartbit4all-ng-client.mjs.map +1 -1
- package/lib/smart-client/smart-component-api-client.d.ts +4 -1
- package/lib/smart-client/smart.component.d.ts +3 -0
- package/lib/smart-component-layout/api/model/componentWidgetType.d.ts +2 -1
- package/lib/smart-component-layout/api/model/layoutDefinitionDescriptor.d.ts +19 -0
- package/lib/smart-component-layout/api/model/models.d.ts +1 -0
- package/lib/smart-component-layout/api/model/smartComponentLayoutDefinition.d.ts +2 -0
- package/lib/smart-component-layout/smart-component-layout-utility.d.ts +2 -0
- package/lib/smart-component-layout/smart-component-layout.component.d.ts +7 -0
- package/lib/smart-component-layout/smart-component-layout.module.d.ts +2 -1
- package/lib/smart-diagram/api/api/api.d.ts +3 -0
- package/lib/smart-diagram/api/api/diagramService.service.d.ts +36 -0
- package/lib/smart-diagram/api/encoder.d.ts +11 -0
- package/{src/lib/smart-chart/smart-chart/smart-chart2 → lib/smart-diagram}/api/model/diagramColor.d.ts +2 -2
- package/{src/lib/smart-chart/smart-chart/smart-chart2 → lib/smart-diagram}/api/model/diagramDataContainer.d.ts +2 -3
- package/{src/lib/smart-chart/smart-chart/smart-chart2 → lib/smart-diagram}/api/model/diagramDataItem.d.ts +3 -3
- package/{src/lib/smart-chart/smart-chart/smart-chart2 → lib/smart-diagram}/api/model/diagramDataSet.d.ts +4 -4
- package/{src/lib/smart-chart/smart-chart/smart-chart2 → lib/smart-diagram}/api/model/diagramDescriptor.d.ts +10 -9
- package/{src/lib/smart-chart/smart-chart/smart-chart2/api/model/diagramUiModel.d.ts → lib/smart-diagram/api/model/diagramModel.d.ts} +5 -4
- package/{src/lib/smart-chart/smart-chart/smart-chart2 → lib/smart-diagram}/api/model/diagramShape.d.ts +2 -2
- package/{src/lib/smart-chart/smart-chart/smart-chart2 → lib/smart-diagram}/api/model/drawTime.d.ts +2 -2
- package/{src/lib/smart-chart/smart-chart/smart-chart2 → lib/smart-diagram}/api/model/labelText.d.ts +2 -2
- package/{src/lib/smart-chart/smart-chart/smart-chart2 → lib/smart-diagram}/api/model/models.d.ts +1 -2
- package/lib/smart-diagram/component/default-smart-diagram-options.provider.d.ts +32 -0
- package/lib/smart-diagram/component/smart-diagram.component.d.ts +40 -0
- package/lib/smart-diagram/component/smart-diagram.module.d.ts +11 -0
- package/lib/smart-diagram/component/smart-diagram.util.d.ts +1 -0
- package/lib/smart-diagram/projects.d.ts +4 -0
- package/lib/smart-grid/api/grid-api/model/gridExportDescriptor.d.ts +2 -2
- package/lib/smart-grid/api/grid-api/model/gridModel.d.ts +1 -0
- package/lib/smart-table/tables/table.d.ts +1 -1
- package/package.json +1 -7
- package/projects.d.ts +1 -0
- package/smartbit4all-ng-client-4.2.71.tgz +0 -0
- package/esm2022/src/lib/smart-chart/smart-chart/api/model/chartData.mjs +0 -2
- package/esm2022/src/lib/smart-chart/smart-chart/api/model/chartDescriptor.mjs +0 -2
- package/esm2022/src/lib/smart-chart/smart-chart/api/model/chartOrientation.mjs +0 -16
- package/esm2022/src/lib/smart-chart/smart-chart/api/model/chartType.mjs +0 -21
- package/esm2022/src/lib/smart-chart/smart-chart/api/model/chartValue.mjs +0 -13
- package/esm2022/src/lib/smart-chart/smart-chart/api/model/models.mjs +0 -7
- package/esm2022/src/lib/smart-chart/smart-chart/api/model/pieChartLegendPosition.mjs +0 -16
- package/esm2022/src/lib/smart-chart/smart-chart/default-chart-options.provider.mjs +0 -233
- package/esm2022/src/lib/smart-chart/smart-chart/smart-chart.component.mjs +0 -285
- package/esm2022/src/lib/smart-chart/smart-chart/smart-chart.module.mjs +0 -39
- package/esm2022/src/lib/smart-chart/smart-chart/smart-chart2/api/api/api.mjs +0 -2
- package/esm2022/src/lib/smart-chart/smart-chart/smart-chart2/api/api.module.mjs +0 -40
- package/esm2022/src/lib/smart-chart/smart-chart/smart-chart2/api/configuration.mjs +0 -91
- package/esm2022/src/lib/smart-chart/smart-chart/smart-chart2/api/index.mjs +0 -7
- package/esm2022/src/lib/smart-chart/smart-chart/smart-chart2/api/model/diagramColor.mjs +0 -13
- package/esm2022/src/lib/smart-chart/smart-chart/smart-chart2/api/model/diagramDataContainer.mjs +0 -2
- package/esm2022/src/lib/smart-chart/smart-chart/smart-chart2/api/model/diagramDataItem.mjs +0 -13
- package/esm2022/src/lib/smart-chart/smart-chart/smart-chart2/api/model/diagramDataSet.mjs +0 -2
- package/esm2022/src/lib/smart-chart/smart-chart/smart-chart2/api/model/diagramDataSetConstructionInstruction.mjs +0 -13
- package/esm2022/src/lib/smart-chart/smart-chart/smart-chart2/api/model/diagramDescriptor.mjs +0 -2
- package/esm2022/src/lib/smart-chart/smart-chart/smart-chart2/api/model/diagramShape.mjs +0 -2
- package/esm2022/src/lib/smart-chart/smart-chart/smart-chart2/api/model/diagramUiModel.mjs +0 -2
- package/esm2022/src/lib/smart-chart/smart-chart/smart-chart2/api/model/drawTime.mjs +0 -18
- package/esm2022/src/lib/smart-chart/smart-chart/smart-chart2/api/model/labelText.mjs +0 -2
- package/esm2022/src/lib/smart-chart/smart-chart/smart-chart2/api/model/models.mjs +0 -11
- package/esm2022/src/lib/smart-chart/smart-chart/smart-chart2/api/param.mjs +0 -2
- package/esm2022/src/lib/smart-chart/smart-chart/smart-chart2/api/variables.mjs +0 -9
- package/esm2022/src/lib/smart-chart/smart-chart-projects.mjs +0 -9
- package/esm2022/src/lib/smart-chart/smartbit4all-ng-client-src-lib-smart-chart.mjs +0 -5
- package/esm2022/src/lib/smart-chart/view-context/utility/componentLibrary.mjs +0 -9
- package/fesm2022/smartbit4all-ng-client-src-lib-smart-chart.mjs +0 -686
- package/fesm2022/smartbit4all-ng-client-src-lib-smart-chart.mjs.map +0 -1
- package/smartbit4all-ng-client-4.2.70.tgz +0 -0
- package/src/lib/smart-chart/index.d.ts +0 -5
- package/src/lib/smart-chart/smart-chart/api/model/chartData.d.ts +0 -16
- package/src/lib/smart-chart/smart-chart/api/model/chartDescriptor.d.ts +0 -37
- package/src/lib/smart-chart/smart-chart/api/model/chartOrientation.d.ts +0 -16
- package/src/lib/smart-chart/smart-chart/api/model/chartType.d.ts +0 -21
- package/src/lib/smart-chart/smart-chart/api/model/chartValue.d.ts +0 -16
- package/src/lib/smart-chart/smart-chart/api/model/models.d.ts +0 -6
- package/src/lib/smart-chart/smart-chart/api/model/pieChartLegendPosition.d.ts +0 -16
- package/src/lib/smart-chart/smart-chart/default-chart-options.provider.d.ts +0 -31
- package/src/lib/smart-chart/smart-chart/smart-chart.component.d.ts +0 -33
- package/src/lib/smart-chart/smart-chart/smart-chart.module.d.ts +0 -11
- package/src/lib/smart-chart/smart-chart/smart-chart2/api/api/api.d.ts +0 -1
- package/src/lib/smart-chart/smart-chart/smart-chart2/api/model/diagramDataSetConstructionInstruction.d.ts +0 -21
- package/src/lib/smart-chart/smart-chart-projects.d.ts +0 -5
- package/src/lib/smart-chart/view-context/utility/componentLibrary.d.ts +0 -6
- /package/{src/lib/smart-chart/smart-chart/smart-chart2 → lib/smart-diagram}/api/api.module.d.ts +0 -0
- /package/{src/lib/smart-chart/smart-chart/smart-chart2 → lib/smart-diagram}/api/configuration.d.ts +0 -0
- /package/{src/lib/smart-chart/smart-chart/smart-chart2 → lib/smart-diagram}/api/index.d.ts +0 -0
- /package/{src/lib/smart-chart/smart-chart/smart-chart2 → lib/smart-diagram}/api/param.d.ts +0 -0
- /package/{src/lib/smart-chart/smart-chart/smart-chart2 → lib/smart-diagram}/api/variables.d.ts +0 -0
|
@@ -0,0 +1,341 @@
|
|
|
1
|
+
import { Component, EventEmitter, Inject, Input, Optional, Output, ViewChild } from '@angular/core';
|
|
2
|
+
import { Chart } from 'chart.js';
|
|
3
|
+
import AnnotationPlugin from 'chartjs-plugin-annotation';
|
|
4
|
+
import ZoomPlugin from 'chartjs-plugin-zoom';
|
|
5
|
+
import { COMPONENT_LIBRARY, ComponentLibrary } from '../../view-context/utility/componentLibrary';
|
|
6
|
+
import { lastValueFrom } from 'rxjs';
|
|
7
|
+
import { deepMerge } from './smart-diagram.util';
|
|
8
|
+
import * as i0 from "@angular/core";
|
|
9
|
+
import * as i1 from "../api";
|
|
10
|
+
import * as i2 from "./default-smart-diagram-options.provider";
|
|
11
|
+
import * as i3 from "primeng/chart";
|
|
12
|
+
import * as i4 from "../../view-context/utility/componentLibrary";
|
|
13
|
+
export class SmartDiagramComponent {
|
|
14
|
+
constructor(diagramApi, diagramOptionProvider, compLib) {
|
|
15
|
+
this.diagramApi = diagramApi;
|
|
16
|
+
this.diagramOptionProvider = diagramOptionProvider;
|
|
17
|
+
this.plugins = [];
|
|
18
|
+
//Output events
|
|
19
|
+
this.elementSelect = new EventEmitter();
|
|
20
|
+
this.canvasClick = new EventEmitter();
|
|
21
|
+
this.dataClick = new EventEmitter();
|
|
22
|
+
this.componentLibrary = ComponentLibrary;
|
|
23
|
+
this.compLib = compLib ?? ComponentLibrary.PRIMENG;
|
|
24
|
+
Chart.register(AnnotationPlugin);
|
|
25
|
+
Chart.register(ZoomPlugin);
|
|
26
|
+
}
|
|
27
|
+
async load() {
|
|
28
|
+
this.diagramModel = await lastValueFrom(this.diagramApi.load(this.uuid, this.identifier));
|
|
29
|
+
this.setUp();
|
|
30
|
+
}
|
|
31
|
+
ngAfterViewInit() {
|
|
32
|
+
// This will run when we have an input model
|
|
33
|
+
if (!this.diagramModel) {
|
|
34
|
+
this.load();
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
ngOnInit() {
|
|
38
|
+
// This will run when we have an input model
|
|
39
|
+
this.setUp();
|
|
40
|
+
}
|
|
41
|
+
setUp() {
|
|
42
|
+
if (!this.diagramModel) {
|
|
43
|
+
return;
|
|
44
|
+
}
|
|
45
|
+
let options = undefined;
|
|
46
|
+
const type = !!this.diagramModel.descriptor?.type ? this.diagramModel.descriptor.type : '';
|
|
47
|
+
const factory = this.diagramOptionProvider.getFactory(type);
|
|
48
|
+
this.type = factory.chartJsType;
|
|
49
|
+
options = factory.createOptions(this.diagramModel.diagramData);
|
|
50
|
+
if (this.diagramModel.descriptor) {
|
|
51
|
+
options = deepMerge(this.convertBackendOptions(this.diagramModel.descriptor), options);
|
|
52
|
+
}
|
|
53
|
+
if (this.options) {
|
|
54
|
+
options = deepMerge(this.options, options);
|
|
55
|
+
}
|
|
56
|
+
this.options = options;
|
|
57
|
+
this.data = factory.transformData(this.diagramModel.diagramData);
|
|
58
|
+
this.applyChartClass();
|
|
59
|
+
}
|
|
60
|
+
convertBackendOptions(descriptor) {
|
|
61
|
+
const options = {
|
|
62
|
+
plugins: {
|
|
63
|
+
legend: {
|
|
64
|
+
display: descriptor.showLegendForChart ?? true,
|
|
65
|
+
},
|
|
66
|
+
...(descriptor.title
|
|
67
|
+
? {
|
|
68
|
+
title: {
|
|
69
|
+
display: true,
|
|
70
|
+
text: descriptor.title.content ?? '',
|
|
71
|
+
color: descriptor.title.color
|
|
72
|
+
? `rgba(${descriptor.title.color.red ?? 0},
|
|
73
|
+
${descriptor.title.color.green ?? 0},
|
|
74
|
+
${descriptor.title.color.blue ?? 0},
|
|
75
|
+
${descriptor.title.color.alpha ?? 1})`
|
|
76
|
+
: '#000000ff',
|
|
77
|
+
font: {
|
|
78
|
+
size: descriptor.title.size ?? undefined,
|
|
79
|
+
weight: descriptor.title.weight ?? undefined,
|
|
80
|
+
style: descriptor.title.style ?? undefined,
|
|
81
|
+
family: descriptor.title.family ?? undefined,
|
|
82
|
+
},
|
|
83
|
+
},
|
|
84
|
+
}
|
|
85
|
+
: {}),
|
|
86
|
+
},
|
|
87
|
+
scales: {},
|
|
88
|
+
};
|
|
89
|
+
if (descriptor.minX !== undefined && descriptor.maxX !== undefined) {
|
|
90
|
+
options.scales.x = {
|
|
91
|
+
ticks: {
|
|
92
|
+
display: descriptor.showLabelsForXAxis ?? true,
|
|
93
|
+
},
|
|
94
|
+
min: descriptor.minX,
|
|
95
|
+
max: descriptor.maxX,
|
|
96
|
+
};
|
|
97
|
+
}
|
|
98
|
+
else {
|
|
99
|
+
options.scales.x = {
|
|
100
|
+
ticks: {
|
|
101
|
+
display: descriptor.showLabelsForXAxis ?? true,
|
|
102
|
+
},
|
|
103
|
+
};
|
|
104
|
+
}
|
|
105
|
+
if (descriptor.minY !== undefined && descriptor.maxY !== undefined) {
|
|
106
|
+
options.scales.y = {
|
|
107
|
+
ticks: {
|
|
108
|
+
display: descriptor.showLabelsForYAxis ?? true,
|
|
109
|
+
},
|
|
110
|
+
min: descriptor.minY,
|
|
111
|
+
max: descriptor.maxY,
|
|
112
|
+
};
|
|
113
|
+
}
|
|
114
|
+
else {
|
|
115
|
+
options.scales.y = {
|
|
116
|
+
ticks: {
|
|
117
|
+
display: descriptor.showLabelsForYAxis ?? true,
|
|
118
|
+
},
|
|
119
|
+
};
|
|
120
|
+
}
|
|
121
|
+
//Create shapes
|
|
122
|
+
if (descriptor.shapes) {
|
|
123
|
+
descriptor.shapes.forEach((shape, index) => {
|
|
124
|
+
options.plugins.annotation = options.plugins.annotation || {};
|
|
125
|
+
options.plugins.annotation.annotations = options.plugins.annotation.annotations || {};
|
|
126
|
+
let borderColor = `rgba(
|
|
127
|
+
${shape.borderColor?.red ?? 0},
|
|
128
|
+
${shape.borderColor?.green ?? 0},
|
|
129
|
+
${shape.borderColor?.blue ?? 0},
|
|
130
|
+
${shape.borderColor?.alpha ?? 1})`;
|
|
131
|
+
let backgroundColor = `rgba(
|
|
132
|
+
${shape.backgroundColor?.red ?? 0},
|
|
133
|
+
${shape.backgroundColor?.green ?? 0},
|
|
134
|
+
${shape.backgroundColor?.blue ?? 0},
|
|
135
|
+
${shape.backgroundColor?.alpha ?? 1})`;
|
|
136
|
+
let fontColor = `rgba(
|
|
137
|
+
${shape.labelText?.color?.red ?? 0},
|
|
138
|
+
${shape.labelText?.color?.green ?? 0},
|
|
139
|
+
${shape.labelText?.color?.blue ?? 0},
|
|
140
|
+
${shape.labelText?.color?.alpha ?? 1})`;
|
|
141
|
+
let borderDash;
|
|
142
|
+
if (shape.borderDashLength && shape.borderDashGap) {
|
|
143
|
+
borderDash = [shape.borderDashLength, shape.borderDashGap];
|
|
144
|
+
}
|
|
145
|
+
else {
|
|
146
|
+
borderDash = undefined;
|
|
147
|
+
}
|
|
148
|
+
const baseAnnotation = {
|
|
149
|
+
type: shape.shapeType ?? 'line',
|
|
150
|
+
backgroundColor: backgroundColor ?? undefined,
|
|
151
|
+
borderColor: borderColor ?? undefined,
|
|
152
|
+
borderWidth: shape.borderWidth ?? 1,
|
|
153
|
+
borderDash: borderDash ?? undefined,
|
|
154
|
+
drawTime: shape.drawTime ?? undefined,
|
|
155
|
+
};
|
|
156
|
+
switch (shape.shapeType) {
|
|
157
|
+
case 'box':
|
|
158
|
+
case 'line':
|
|
159
|
+
case 'ellipse':
|
|
160
|
+
options.plugins.annotation.annotations[`shape${index}`] = {
|
|
161
|
+
...baseAnnotation,
|
|
162
|
+
xMin: shape.xMin ?? undefined,
|
|
163
|
+
xMax: shape.xMax ?? undefined,
|
|
164
|
+
yMin: shape.yMin ?? undefined,
|
|
165
|
+
yMax: shape.yMax ?? undefined,
|
|
166
|
+
};
|
|
167
|
+
break;
|
|
168
|
+
case 'label':
|
|
169
|
+
options.plugins.annotation.annotations[`shape${index}`] = {
|
|
170
|
+
...baseAnnotation,
|
|
171
|
+
xValue: shape.xMin ?? undefined,
|
|
172
|
+
yValue: shape.yMin ?? undefined,
|
|
173
|
+
content: shape.labelText?.content ?? undefined,
|
|
174
|
+
textAlign: shape.labelText?.textAlign ?? undefined,
|
|
175
|
+
color: fontColor ?? undefined,
|
|
176
|
+
font: {
|
|
177
|
+
size: shape.labelText?.size ?? undefined,
|
|
178
|
+
weight: shape.labelText?.weight ?? undefined,
|
|
179
|
+
style: shape.labelText?.style ?? undefined,
|
|
180
|
+
},
|
|
181
|
+
backgroundColor: 'transparent',
|
|
182
|
+
borderColor: 'transparent',
|
|
183
|
+
};
|
|
184
|
+
break;
|
|
185
|
+
case 'point':
|
|
186
|
+
case 'polygon':
|
|
187
|
+
options.plugins.annotation.annotations[`shape${index}`] = {
|
|
188
|
+
...baseAnnotation,
|
|
189
|
+
xValue: shape.xMin ?? undefined,
|
|
190
|
+
yValue: shape.yMin ?? undefined,
|
|
191
|
+
};
|
|
192
|
+
break;
|
|
193
|
+
default:
|
|
194
|
+
// Optionally handle any other shape types
|
|
195
|
+
console.warn(`Unknown shape type: ${shape.shapeType}`);
|
|
196
|
+
break;
|
|
197
|
+
}
|
|
198
|
+
});
|
|
199
|
+
}
|
|
200
|
+
if (descriptor.backgroundColor) {
|
|
201
|
+
let backgroundColor = `rgba(
|
|
202
|
+
${descriptor.backgroundColor?.red ?? 0},
|
|
203
|
+
${descriptor.backgroundColor?.green ?? 0},
|
|
204
|
+
${descriptor.backgroundColor?.blue ?? 0},
|
|
205
|
+
${descriptor.backgroundColor?.alpha ?? 1})`;
|
|
206
|
+
let id = 'customCanvasBackgroundColor';
|
|
207
|
+
const plugin = {
|
|
208
|
+
id: id,
|
|
209
|
+
beforeDraw: (chart, args, options) => {
|
|
210
|
+
const { ctx, chartArea } = chart;
|
|
211
|
+
ctx.save();
|
|
212
|
+
ctx.globalCompositeOperation = 'destination-over';
|
|
213
|
+
ctx.fillStyle = backgroundColor;
|
|
214
|
+
ctx.fillRect(chartArea.left, chartArea.top, chartArea.right - chartArea.left, chartArea.bottom - chartArea.top);
|
|
215
|
+
ctx.restore();
|
|
216
|
+
},
|
|
217
|
+
};
|
|
218
|
+
this.plugins.push(plugin);
|
|
219
|
+
options.plugins[`${id}`] = {
|
|
220
|
+
color: backgroundColor,
|
|
221
|
+
};
|
|
222
|
+
}
|
|
223
|
+
return options;
|
|
224
|
+
}
|
|
225
|
+
onDataSelect(event) {
|
|
226
|
+
console.log({ event });
|
|
227
|
+
this.elementSelect.emit(event);
|
|
228
|
+
}
|
|
229
|
+
handleChartClick(event) {
|
|
230
|
+
console.log({ event });
|
|
231
|
+
this.canvasClick.emit(event);
|
|
232
|
+
}
|
|
233
|
+
handleOnDataClicked(event) {
|
|
234
|
+
const canvas = event.target;
|
|
235
|
+
const chart = Chart.getChart(canvas);
|
|
236
|
+
if (chart) {
|
|
237
|
+
const elements = chart.getElementsAtEventForMode(event, 'nearest', { intersect: true }, false);
|
|
238
|
+
if (elements.length === 0) {
|
|
239
|
+
return;
|
|
240
|
+
}
|
|
241
|
+
const clickedItems = chart.tooltip?.dataPoints?.map((item) => {
|
|
242
|
+
return {
|
|
243
|
+
datasetIndex: item.datasetIndex,
|
|
244
|
+
itemIndex: item.dataIndex,
|
|
245
|
+
element: item.element,
|
|
246
|
+
};
|
|
247
|
+
});
|
|
248
|
+
console.log({ event, clickedItems });
|
|
249
|
+
this.dataClick.emit({ event, clickedItems });
|
|
250
|
+
}
|
|
251
|
+
}
|
|
252
|
+
getBase64Image() {
|
|
253
|
+
return this.chart?.getBase64Image();
|
|
254
|
+
}
|
|
255
|
+
refresh() {
|
|
256
|
+
return this.chart?.refresh();
|
|
257
|
+
}
|
|
258
|
+
getChart() {
|
|
259
|
+
return this.chart?.chart;
|
|
260
|
+
}
|
|
261
|
+
getVisiblePoints() {
|
|
262
|
+
if (!this.chart)
|
|
263
|
+
return;
|
|
264
|
+
const chartInstance = this.chart.chart;
|
|
265
|
+
if (!chartInstance)
|
|
266
|
+
return;
|
|
267
|
+
const visiblePoints = [];
|
|
268
|
+
chartInstance.data.datasets.forEach((dataset, datasetIndex) => {
|
|
269
|
+
const meta = chartInstance.getDatasetMeta(datasetIndex);
|
|
270
|
+
// Check if the dataset is hidden
|
|
271
|
+
if (!chartInstance.isDatasetVisible(datasetIndex)) {
|
|
272
|
+
return;
|
|
273
|
+
}
|
|
274
|
+
const xMin = meta.xScale.min;
|
|
275
|
+
const xMax = meta.xScale.max;
|
|
276
|
+
const yMin = meta.yScale.min;
|
|
277
|
+
const yMax = meta.yScale.max;
|
|
278
|
+
dataset.data.forEach((point, dataIndex) => {
|
|
279
|
+
const { x, y } = point;
|
|
280
|
+
if (x >= xMin && x <= xMax && y >= yMin && y <= yMax) {
|
|
281
|
+
visiblePoints.push({
|
|
282
|
+
datasetIndex,
|
|
283
|
+
dataIndex,
|
|
284
|
+
x,
|
|
285
|
+
y,
|
|
286
|
+
});
|
|
287
|
+
}
|
|
288
|
+
});
|
|
289
|
+
});
|
|
290
|
+
return visiblePoints;
|
|
291
|
+
}
|
|
292
|
+
applyChartClass() {
|
|
293
|
+
if (!this.chart) {
|
|
294
|
+
return;
|
|
295
|
+
}
|
|
296
|
+
const chartElement = this.chart.el.nativeElement;
|
|
297
|
+
switch (this.type) {
|
|
298
|
+
case 'pie':
|
|
299
|
+
case 'doughnut':
|
|
300
|
+
case 'polarArea':
|
|
301
|
+
case 'radar':
|
|
302
|
+
chartElement.classList.add('pie-aspect-ratio');
|
|
303
|
+
break;
|
|
304
|
+
default:
|
|
305
|
+
chartElement.classList.add('default-aspect-ratio');
|
|
306
|
+
}
|
|
307
|
+
}
|
|
308
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: SmartDiagramComponent, deps: [{ token: i1.DiagramServiceService }, { token: i2.DefaultChartOptionsProvider }, { token: COMPONENT_LIBRARY, optional: true }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
309
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.11", type: SmartDiagramComponent, selector: "smart-diagram", inputs: { uuid: "uuid", identifier: "identifier", parent: "parent", diagramModel: "diagramModel", options: "options", plugins: "plugins" }, outputs: { elementSelect: "elementSelect", canvasClick: "canvasClick", dataClick: "dataClick" }, viewQueries: [{ propertyName: "chart", first: true, predicate: ["chartJSRef"], descendants: true }], ngImport: i0, template: "@if(compLib === componentLibrary.PRIMENG) {\r\n<p-chart\r\n #chartJSRef\r\n [type]=\"type\"\r\n [data]=\"data\"\r\n [options]=\"options\"\r\n [plugins]=\"plugins\"\r\n (onDataSelect)=\"onDataSelect($event)\"\r\n (click)=\"handleChartClick($event)\"\r\n (click)=\"handleOnDataClicked($event)\"\r\n/>\r\n} @else {\r\n<p>Only PrimeNg component library is supported</p>\r\n}\r\n", styles: [":host ::ng-deep .default-aspect-ratio div{width:100%;aspect-ratio:1.78}:host ::ng-deep .pie-aspect-ratio div{width:100%;aspect-ratio:1}\n"], dependencies: [{ kind: "component", type: i3.UIChart, selector: "p-chart", inputs: ["type", "plugins", "width", "height", "responsive", "ariaLabel", "ariaLabelledBy", "data", "options"], outputs: ["onDataSelect"] }] }); }
|
|
310
|
+
}
|
|
311
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: SmartDiagramComponent, decorators: [{
|
|
312
|
+
type: Component,
|
|
313
|
+
args: [{ selector: 'smart-diagram', template: "@if(compLib === componentLibrary.PRIMENG) {\r\n<p-chart\r\n #chartJSRef\r\n [type]=\"type\"\r\n [data]=\"data\"\r\n [options]=\"options\"\r\n [plugins]=\"plugins\"\r\n (onDataSelect)=\"onDataSelect($event)\"\r\n (click)=\"handleChartClick($event)\"\r\n (click)=\"handleOnDataClicked($event)\"\r\n/>\r\n} @else {\r\n<p>Only PrimeNg component library is supported</p>\r\n}\r\n", styles: [":host ::ng-deep .default-aspect-ratio div{width:100%;aspect-ratio:1.78}:host ::ng-deep .pie-aspect-ratio div{width:100%;aspect-ratio:1}\n"] }]
|
|
314
|
+
}], ctorParameters: () => [{ type: i1.DiagramServiceService }, { type: i2.DefaultChartOptionsProvider }, { type: i4.ComponentLibrary, decorators: [{
|
|
315
|
+
type: Inject,
|
|
316
|
+
args: [COMPONENT_LIBRARY]
|
|
317
|
+
}, {
|
|
318
|
+
type: Optional
|
|
319
|
+
}] }], propDecorators: { chart: [{
|
|
320
|
+
type: ViewChild,
|
|
321
|
+
args: ['chartJSRef']
|
|
322
|
+
}], uuid: [{
|
|
323
|
+
type: Input
|
|
324
|
+
}], identifier: [{
|
|
325
|
+
type: Input
|
|
326
|
+
}], parent: [{
|
|
327
|
+
type: Input
|
|
328
|
+
}], diagramModel: [{
|
|
329
|
+
type: Input
|
|
330
|
+
}], options: [{
|
|
331
|
+
type: Input
|
|
332
|
+
}], plugins: [{
|
|
333
|
+
type: Input
|
|
334
|
+
}], elementSelect: [{
|
|
335
|
+
type: Output
|
|
336
|
+
}], canvasClick: [{
|
|
337
|
+
type: Output
|
|
338
|
+
}], dataClick: [{
|
|
339
|
+
type: Output
|
|
340
|
+
}] } });
|
|
341
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnQtZGlhZ3JhbS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zbWFydC1uZy1jbGllbnQvc3JjL2xpYi9zbWFydC1kaWFncmFtL2NvbXBvbmVudC9zbWFydC1kaWFncmFtLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3NtYXJ0LW5nLWNsaWVudC9zcmMvbGliL3NtYXJ0LWRpYWdyYW0vY29tcG9uZW50L3NtYXJ0LWRpYWdyYW0uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNwRyxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBRWpDLE9BQU8sZ0JBQWdCLE1BQU0sMkJBQTJCLENBQUM7QUFDekQsT0FBTyxVQUFVLE1BQU0scUJBQXFCLENBQUM7QUFFN0MsT0FBTyxFQUFFLGlCQUFpQixFQUFFLGdCQUFnQixFQUFFLE1BQU0sNkNBQTZDLENBQUM7QUFDbEcsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNyQyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7Ozs7OztBQVFqRCxNQUFNLE9BQU8scUJBQXFCO0lBd0JoQyxZQUNVLFVBQWlDLEVBQ2pDLHFCQUFrRCxFQUNuQixPQUEwQjtRQUZ6RCxlQUFVLEdBQVYsVUFBVSxDQUF1QjtRQUNqQywwQkFBcUIsR0FBckIscUJBQXFCLENBQTZCO1FBZm5ELFlBQU8sR0FBVSxFQUFFLENBQUM7UUFFN0IsZUFBZTtRQUNMLGtCQUFhLEdBQUcsSUFBSSxZQUFZLEVBQU8sQ0FBQztRQUN4QyxnQkFBVyxHQUFHLElBQUksWUFBWSxFQUFPLENBQUM7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QUFDO1lBQ2hCLEtBQUssV0FBVyxDQUFDO1lBQ2pCLEtBQUssT0FBTztnQkFDVixZQUFZLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO2dCQUMvQyxNQUFNO1lBQ1I7Z0JBQ0UsWUFBWSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsc0JBQXNCLENBQUMsQ0FBQztRQUN2RCxDQUFDO0lBQ0gsQ0FBQzsrR0FyV1UscUJBQXFCLGtHQTJCdEIsaUJBQWlCO21HQTNCaEIscUJBQXFCLHVZQ2hCbEMsZ1lBY0E7OzRGREVhLHFCQUFxQjtrQkFMakMsU0FBUzsrQkFDRSxlQUFlOzswQkErQnRCLE1BQU07MkJBQUMsaUJBQWlCOzswQkFBRyxRQUFRO3lDQTFCYixLQUFLO3NCQUE3QixTQUFTO3VCQUFDLFlBQVk7Z0JBR2QsSUFBSTtzQkFBWixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csTUFBTTtzQkFBZCxLQUFLO2dCQUdHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFHSSxhQUFhO3NCQUF0QixNQUFNO2dCQUNHLFdBQVc7c0JBQXBCLE1BQU07Z0JBQ0csU0FBUztzQkFBbEIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbmplY3QsIElucHV0LCBPcHRpb25hbCwgT3V0cHV0LCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQ2hhcnQgfSBmcm9tICdjaGFydC5qcyc7XHJcbmltcG9ydCB7IFVJQ2hhcnQgfSBmcm9tICdwcmltZW5nL2NoYXJ0JztcclxuaW1wb3J0IEFubm90YXRpb25QbHVnaW4gZnJvbSAnY2hhcnRqcy1wbHVnaW4tYW5ub3RhdGlvbic7XHJcbmltcG9ydCBab29tUGx1Z2luIGZyb20gJ2NoYXJ0anMtcGx1Z2luLXpvb20nO1xyXG5pbXBvcnQgeyBEaWFncmFtTW9kZWwsIERpYWdyYW1EZXNjcmlwdG9yLCBEaWFncmFtU2hhcGUsIERpYWdyYW1TZXJ2aWNlU2VydmljZSB9IGZyb20gJy4uL2FwaSc7XHJcbmltcG9ydCB7IENPTVBPTkVOVF9MSUJSQVJZLCBDb21wb25lbnRMaWJyYXJ5IH0gZnJvbSAnLi4vLi4vdmlldy1jb250ZXh0L3V0aWxpdHkvY29tcG9uZW50TGlicmFyeSc7XHJcbmltcG9ydCB7IGxhc3RWYWx1ZUZyb20gfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgZGVlcE1lcmdlIH0gZnJvbSAnLi9zbWFydC1kaWFncmFtLnV0aWwnO1xyXG5pbXBvcnQgeyBEZWZhdWx0Q2hhcnRPcHRpb25zUHJvdmlkZXIgfSBmcm9tICcuL2RlZmF1bHQtc21hcnQtZGlhZ3JhbS1vcHRpb25zLnByb3ZpZGVyJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnc21hcnQtZGlhZ3JhbScsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3NtYXJ0LWRpYWdyYW0uY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL3NtYXJ0LWRpYWdyYW0uY29tcG9uZW50LmNzcyddLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgU21hcnREaWFncmFtQ29tcG9uZW50IHtcclxuICBAVmlld0NoaWxkKCdjaGFydEpTUmVmJykgY2hhcnQ/OiBVSUNoYXJ0O1xyXG5cclxuICAvL1dpZGdldCBpbnB1dHNcclxuICBASW5wdXQoKSB1dWlkITogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIGlkZW50aWZpZXIhOiBzdHJpbmc7XHJcbiAgQElucHV0KCkgcGFyZW50PzogYW55O1xyXG5cclxuICAvL1N0YW5kYWxvbmUgaW5wdXRzXHJcbiAgQElucHV0KCkgZGlhZ3JhbU1vZGVsPzogRGlhZ3JhbU1vZGVsO1xyXG4gIEBJbnB1dCgpIG9wdGlvbnM/OiBhbnk7XHJcbiAgQElucHV0KCkgcGx1Z2luczogYW55W10gPSBbXTtcclxuXHJcbiAgLy9PdXRwdXQgZXZlbnRzXHJcbiAgQE91dHB1dCgpIGVsZW1lbnRTZWxlY3QgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuICBAT3V0cHV0KCkgY2FudmFzQ2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuICBAT3V0cHV0KCkgZGF0YUNsaWNrID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcblxyXG4gIGRhdGE6IGFueTtcclxuICB0eXBlOiBhbnk7XHJcblxyXG4gIGNvbXBMaWI6IENvbXBvbmVudExpYnJhcnk7XHJcbiAgY29tcG9uZW50TGlicmFyeSA9IENvbXBvbmVudExpYnJhcnk7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBkaWFncmFtQXBpOiBEaWFncmFtU2VydmljZVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGRpYWdyYW1PcHRpb25Qcm92aWRlcjogRGVmYXVsdENoYXJ0T3B0aW9uc1Byb3ZpZGVyLFxyXG4gICAgQEluamVjdChDT01QT05FTlRfTElCUkFSWSkgQE9wdGlvbmFsKCkgY29tcExpYj86IENvbXBvbmVudExpYnJhcnlcclxuICApIHtcclxuICAgIHRoaXMuY29tcExpYiA9IGNvbXBMaWIgPz8gQ29tcG9uZW50TGlicmFyeS5QUklNRU5HO1xyXG4gICAgQ2hhcnQucmVnaXN0ZXIoQW5ub3RhdGlvblBsdWdpbik7XHJcbiAgICBDaGFydC5yZWdpc3Rlcihab29tUGx1Z2luKTtcclxuICB9XHJcblxyXG4gIGFzeW5jIGxvYWQoKTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICB0aGlzLmRpYWdyYW1Nb2RlbCA9IGF3YWl0IGxhc3RWYWx1ZUZyb20odGhpcy5kaWFncmFtQXBpLmxvYWQodGhpcy51dWlkLCB0aGlzLmlkZW50aWZpZXIpKTtcclxuICAgIHRoaXMuc2V0VXAoKTtcclxuICB9XHJcblxyXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcclxuICAgIC8vIFRoaXMgd2lsbCBydW4gd2hlbiB3ZSBoYXZlIGFuIGlucHV0IG1vZGVsXHJcbiAgICBpZiAoIXRoaXMuZGlhZ3JhbU1vZGVsKSB7XHJcbiAgICAgIHRoaXMubG9hZCgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICAvLyBUaGlzIHdpbGwgcnVuIHdoZW4gd2UgaGF2ZSBhbiBpbnB1dCBtb2RlbFxyXG4gICAgdGhpcy5zZXRVcCgpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzZXRVcCgpIHtcclxuICAgIGlmICghdGhpcy5kaWFncmFtTW9kZWwpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgbGV0IG9wdGlvbnMgPSB1bmRlZmluZWQ7XHJcbiAgICBjb25zdCB0eXBlID0gISF0aGlzLmRpYWdyYW1Nb2RlbC5kZXNjcmlwdG9yPy50eXBlID8gdGhpcy5kaWFncmFtTW9kZWwuZGVzY3JpcHRvci50eXBlIDogJyc7XHJcblxyXG4gICAgY29uc3QgZmFjdG9yeSA9IHRoaXMuZGlhZ3JhbU9wdGlvblByb3ZpZGVyLmdldEZhY3RvcnkodHlwZSk7XHJcbiAgICB0aGlzLnR5cGUgPSBmYWN0b3J5LmNoYXJ0SnNUeXBlO1xyXG4gICAgb3B0aW9ucyA9IGZhY3RvcnkuY3JlYXRlT3B0aW9ucyh0aGlzLmRpYWdyYW1Nb2RlbC5kaWFncmFtRGF0YSEpO1xyXG4gICAgaWYgKHRoaXMuZGlhZ3JhbU1vZGVsLmRlc2NyaXB0b3IpIHtcclxuICAgICAgb3B0aW9ucyA9IGRlZXBNZXJnZSh0aGlzLmNvbnZlcnRCYWNrZW5kT3B0aW9ucyh0aGlzLmRpYWdyYW1Nb2RlbC5kZXNjcmlwdG9yKSwgb3B0aW9ucyk7XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5vcHRpb25zKSB7XHJcbiAgICAgIG9wdGlvbnMgPSBkZWVwTWVyZ2UodGhpcy5vcHRpb25zLCBvcHRpb25zKTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLm9wdGlvbnMgPSBvcHRpb25zO1xyXG4gICAgdGhpcy5kYXRhID0gZmFjdG9yeS50cmFuc2Zvcm1EYXRhKHRoaXMuZGlhZ3JhbU1vZGVsLmRpYWdyYW1EYXRhISk7XHJcbiAgICB0aGlzLmFwcGx5Q2hhcnRDbGFzcygpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBjb252ZXJ0QmFja2VuZE9wdGlvbnMoZGVzY3JpcHRvcjogRGlhZ3JhbURlc2NyaXB0b3IpIHtcclxuICAgIGNvbnN0IG9wdGlvbnM6IGFueSA9IHtcclxuICAgICAgcGx1Z2luczoge1xyXG4gICAgICAgIGxlZ2VuZDoge1xyXG4gICAgICAgICAgZGlzcGxheTogZGVzY3JpcHRvci5zaG93TGVnZW5kRm9yQ2hhcnQgPz8gdHJ1ZSxcclxuICAgICAgICB9LFxyXG4gICAgICAgIC4uLihkZXNjcmlwdG9yLnRpdGxlXHJcbiAgICAgICAgICA/IHtcclxuICAgICAgICAgICAgICB0aXRsZToge1xyXG4gICAgICAgICAgICAgICAgZGlzcGxheTogdHJ1ZSxcclxuICAgICAgICAgICAgICAgIHRleHQ6IGRlc2NyaXB0b3IudGl0bGUuY29udGVudCA/PyAnJyxcclxuICAgICAgICAgICAgICAgIGNvbG9yOiBkZXNjcmlwdG9yLnRpdGxlLmNvbG9yXHJcbiAgICAgICAgICAgICAgICAgID8gYHJnYmEoJHtkZXNjcmlwdG9yLnRpdGxlLmNvbG9yLnJlZCA/PyAwfSxcclxuICAgICAgICAgICAgICAgICAgICAgICAke2Rlc2NyaXB0b3IudGl0bGUuY29sb3IuZ3JlZW4gPz8gMH0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgJHtkZXNjcmlwdG9yLnRpdGxlLmNvbG9yLmJsdWUgPz8gMH0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgJHtkZXNjcmlwdG9yLnRpdGxlLmNvbG9yLmFscGhhID8/IDF9KWBcclxuICAgICAgICAgICAgICAgICAgOiAnIzAwMDAwMGZmJyxcclxuICAgICAgICAgICAgICAgIGZvbnQ6IHtcclxuICAgICAgICAgICAgICAgICAgc2l6ZTogZGVzY3JpcHRvci50aXRsZS5zaXplID8/IHVuZGVmaW5lZCxcclxuICAgICAgICAgICAgICAgICAgd2VpZ2h0OiBkZXNjcmlwdG9yLnRpdGxlLndlaWdodCA/PyB1bmRlZmluZWQsXHJcbiAgICAgICAgICAgICAgICAgIHN0eWxlOiBkZXNjcmlwdG9yLnRpdGxlLnN0eWxlID8/IHVuZGVmaW5lZCxcclxuICAgICAgICAgICAgICAgICAgZmFtaWx5OiBkZXNjcmlwdG9yLnRpdGxlLmZhbWlseSA/PyB1bmRlZmluZWQsXHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIDoge30pLFxyXG4gICAgICB9LFxyXG4gICAgICBzY2FsZXM6IHt9IGFzIGFueSxcclxuICAgIH07XHJcblxyXG4gICAgaWYgKGRlc2NyaXB0b3IubWluWCAhPT0gdW5kZWZpbmVkICYmIGRlc2NyaXB0b3IubWF4WCAhPT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgIG9wdGlvbnMuc2NhbGVzLnggPSB7XHJcbiAgICAgICAgdGlja3M6IHtcclxuICAgICAgICAgIGRpc3BsYXk6IGRlc2NyaXB0b3Iuc2hvd0xhYmVsc0ZvclhBeGlzID8/IHRydWUsXHJcbiAgICAgICAgfSxcclxuICAgICAgICBtaW46IGRlc2NyaXB0b3IubWluWCxcclxuICAgICAgICBtYXg6IGRlc2NyaXB0b3IubWF4WCxcclxuICAgICAgfTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIG9wdGlvbnMuc2NhbGVzLnggPSB7XHJcbiAgICAgICAgdGlja3M6IHtcclxuICAgICAgICAgIGRpc3BsYXk6IGRlc2NyaXB0b3Iuc2hvd0xhYmVsc0ZvclhBeGlzID8/IHRydWUsXHJcbiAgICAgICAgfSxcclxuICAgICAgfTtcclxuICAgIH1cclxuICAgIGlmIChkZXNjcmlwdG9yLm1pblkgIT09IHVuZGVmaW5lZCAmJiBkZXNjcmlwdG9yLm1heFkgIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICBvcHRpb25zLnNjYWxlcy55ID0ge1xyXG4gICAgICAgIHRpY2tzOiB7XHJcbiAgICAgICAgICBkaXNwbGF5OiBkZXNjcmlwdG9yLnNob3dMYWJlbHNGb3JZQXhpcyA/PyB0cnVlLFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgbWluOiBkZXNjcmlwdG9yLm1pblksXHJcbiAgICAgICAgbWF4OiBkZXNjcmlwdG9yLm1heFksXHJcbiAgICAgIH07XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBvcHRpb25zLnNjYWxlcy55ID0ge1xyXG4gICAgICAgIHRpY2tzOiB7XHJcbiAgICAgICAgICBkaXNwbGF5OiBkZXNjcmlwdG9yLnNob3dMYWJlbHNGb3JZQXhpcyA/PyB0cnVlLFxyXG4gICAgICAgIH0sXHJcbiAgICAgIH07XHJcbiAgICB9XHJcblxyXG4gICAgLy9DcmVhdGUgc2hhcGVzXHJcbiAgICBpZiAoZGVzY3JpcHRvci5zaGFwZXMpIHtcclxuICAgICAgZGVzY3JpcHRvci5zaGFwZXMuZm9yRWFjaCgoc2hhcGU6IERpYWdyYW1TaGFwZSwgaW5kZXg6IG51bWJlcikgPT4ge1xyXG4gICAgICAgIG9wdGlvbnMucGx1Z2lucy5hbm5vdGF0aW9uID0gb3B0aW9ucy5wbHVnaW5zLmFubm90YXRpb24gfHwge307XHJcbiAgICAgICAgb3B0aW9ucy5wbHVnaW5zLmFubm90YXRpb24uYW5ub3RhdGlvbnMgPSBvcHRpb25zLnBsdWdpbnMuYW5ub3RhdGlvbi5hbm5vdGF0aW9ucyB8fCB7fTtcclxuXHJcbiAgICAgICAgbGV0IGJvcmRlckNvbG9yID0gYHJnYmEoXHJcbiAgICAgICAgICR7c2hhcGUuYm9yZGVyQ29sb3I/LnJlZCA/PyAwfSxcclxuICAgICAgICAgJHtzaGFwZS5ib3JkZXJDb2xvcj8uZ3JlZW4gPz8gMH0sXHJcbiAgICAgICAgICR7c2hhcGUuYm9yZGVyQ29sb3I/LmJsdWUgPz8gMH0sXHJcbiAgICAgICAgICR7c2hhcGUuYm9yZGVyQ29sb3I/LmFscGhhID8/IDF9KWA7XHJcbiAgICAgICAgbGV0IGJhY2tncm91bmRDb2xvciA9IGByZ2JhKFxyXG4gICAgICAgICAke3NoYXBlLmJhY2tncm91bmRDb2xvcj8ucmVkID8/IDB9LFxyXG4gICAgICAgICAke3NoYXBlLmJhY2tncm91bmRDb2xvcj8uZ3JlZW4gPz8gMH0sXHJcbiAgICAgICAgICR7c2hhcGUuYmFja2dyb3VuZENvbG9yPy5ibHVlID8/IDB9LFxyXG4gICAgICAgICAke3NoYXBlLmJhY2tncm91bmRDb2xvcj8uYWxwaGEgPz8gMX0pYDtcclxuXHJcbiAgICAgICAgbGV0IGZvbnRDb2xvciA9IGByZ2JhKFxyXG4gICAgICAgICAke3NoYXBlLmxhYmVsVGV4dD8uY29sb3I/LnJlZCA/PyAwfSxcclxuICAgICAgICAgJHtzaGFwZS5sYWJlbFRleHQ/LmNvbG9yPy5ncmVlbiA/PyAwfSxcclxuICAgICAgICAgJHtzaGFwZS5sYWJlbFRleHQ/LmNvbG9yPy5ibHVlID8/IDB9LFxyXG4gICAgICAgICAke3NoYXBlLmxhYmVsVGV4dD8uY29sb3I/LmFscGhhID8/IDF9KWA7XHJcblxyXG4gICAgICAgIGxldCBib3JkZXJEYXNoO1xyXG4gICAgICAgIGlmIChzaGFwZS5ib3JkZXJEYXNoTGVuZ3RoICYmIHNoYXBlLmJvcmRlckRhc2hHYXApIHtcclxuICAgICAgICAgIGJvcmRlckRhc2ggPSBbc2hhcGUuYm9yZGVyRGFzaExlbmd0aCwgc2hhcGUuYm9yZGVyRGFzaEdhcF07XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIGJvcmRlckRhc2ggPSB1bmRlZmluZWQ7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBjb25zdCBiYXNlQW5ub3RhdGlvbiA9IHtcclxuICAgICAgICAgIHR5cGU6IHNoYXBlLnNoYXBlVHlwZSA/PyAnbGluZScsXHJcbiAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6IGJhY2tncm91bmRDb2xvciA/PyB1bmRlZmluZWQsXHJcbiAgICAgICAgICBib3JkZXJDb2xvcjogYm9yZGVyQ29sb3IgPz8gdW5kZWZpbmVkLFxyXG4gICAgICAgICAgYm9yZGVyV2lkdGg6IHNoYXBlLmJvcmRlcldpZHRoID8/IDEsXHJcbiAgICAgICAgICBib3JkZXJEYXNoOiBib3JkZXJEYXNoID8/IHVuZGVmaW5lZCxcclxuICAgICAgICAgIGRyYXdUaW1lOiBzaGFwZS5kcmF3VGltZSA/PyB1bmRlZmluZWQsXHJcbiAgICAgICAgfTtcclxuXHJcbiAgICAgICAgc3dpdGNoIChzaGFwZS5zaGFwZVR5cGUpIHtcclxuICAgICAgICAgIGNhc2UgJ2JveCc6XHJcbiAgICAgICAgICBjYXNlICdsaW5lJzpcclxuICAgICAgICAgIGNhc2UgJ2VsbGlwc2UnOlxyXG4gICAgICAgICAgICBvcHRpb25zLnBsdWdpbnMuYW5ub3RhdGlvbi5hbm5vdGF0aW9uc1tgc2hhcGUke2luZGV4fWBdID0ge1xyXG4gICAgICAgICAgICAgIC4uLmJhc2VBbm5vdGF0aW9uLFxyXG4gICAgICAgICAgICAgIHhNaW46IHNoYXBlLnhNaW4gPz8gdW5kZWZpbmVkLFxyXG4gICAgICAgICAgICAgIHhNYXg6IHNoYXBlLnhNYXggPz8gdW5kZWZpbmVkLFxyXG4gICAgICAgICAgICAgIHlNaW46IHNoYXBlLnlNaW4gPz8gdW5kZWZpbmVkLFxyXG4gICAgICAgICAgICAgIHlNYXg6IHNoYXBlLnlNYXggPz8gdW5kZWZpbmVkLFxyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICBicmVhaztcclxuXHJcbiAgICAgICAgICBjYXNlICdsYWJlbCc6XHJcbiAgICAgICAgICAgIG9wdGlvbnMucGx1Z2lucy5hbm5vdGF0aW9uLmFubm90YXRpb25zW2BzaGFwZSR7aW5kZXh9YF0gPSB7XHJcbiAgICAgICAgICAgICAgLi4uYmFzZUFubm90YXRpb24sXHJcbiAgICAgICAgICAgICAgeFZhbHVlOiBzaGFwZS54TWluID8/IHVuZGVmaW5lZCxcclxuICAgICAgICAgICAgICB5VmFsdWU6IHNoYXBlLnlNaW4gPz8gdW5kZWZpbmVkLFxyXG4gICAgICAgICAgICAgIGNvbnRlbnQ6IHNoYXBlLmxhYmVsVGV4dD8uY29udGVudCA/PyB1bmRlZmluZWQsXHJcbiAgICAgICAgICAgICAgdGV4dEFsaWduOiBzaGFwZS5sYWJlbFRleHQ/LnRleHRBbGlnbiA/PyB1bmRlZmluZWQsXHJcbiAgICAgICAgICAgICAgY29sb3I6IGZvbnRDb2xvciA/PyB1bmRlZmluZWQsXHJcbiAgICAgICAgICAgICAgZm9udDoge1xyXG4gICAgICAgICAgICAgICAgc2l6ZTogc2hhcGUubGFiZWxUZXh0Py5zaXplID8/IHVuZGVmaW5lZCxcclxuICAgICAgICAgICAgICAgIHdlaWdodDogc2hhcGUubGFiZWxUZXh0Py53ZWlnaHQgPz8gdW5kZWZpbmVkLFxyXG4gICAgICAgICAgICAgICAgc3R5bGU6IHNoYXBlLmxhYmVsVGV4dD8uc3R5bGUgPz8gdW5kZWZpbmVkLFxyXG4gICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgYmFja2dyb3VuZENvbG9yOiAndHJhbnNwYXJlbnQnLFxyXG4gICAgICAgICAgICAgIGJvcmRlckNvbG9yOiAndHJhbnNwYXJlbnQnLFxyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICBicmVhaztcclxuXHJcbiAgICAgICAgICBjYXNlICdwb2ludCc6XHJcbiAgICAgICAgICBjYXNlICdwb2x5Z29uJzpcclxuICAgICAgICAgICAgb3B0aW9ucy5wbHVnaW5zLmFubm90YXRpb24uYW5ub3RhdGlvbnNbYHNoYXBlJHtpbmRleH1gXSA9IHtcclxuICAgICAgICAgICAgICAuLi5iYXNlQW5ub3RhdGlvbixcclxuICAgICAgICAgICAgICB4VmFsdWU6IHNoYXBlLnhNaW4gPz8gdW5kZWZpbmVkLFxyXG4gICAgICAgICAgICAgIHlWYWx1ZTogc2hhcGUueU1pbiA/PyB1bmRlZmluZWQsXHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgICAgIC8vIE9wdGlvbmFsbHkgaGFuZGxlIGFueSBvdGhlciBzaGFwZSB0eXBlc1xyXG4gICAgICAgICAgICBjb25zb2xlLndhcm4oYFVua25vd24gc2hhcGUgdHlwZTogJHtzaGFwZS5zaGFwZVR5cGV9YCk7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKGRlc2NyaXB0b3IuYmFja2dyb3VuZENvbG9yKSB7XHJcbiAgICAgIGxldCBiYWNrZ3JvdW5kQ29sb3IgPSBgcmdiYShcclxuICAgICAgICAke2Rlc2NyaXB0b3IuYmFja2dyb3VuZENvbG9yPy5yZWQgPz8gMH0sXHJcbiAgICAgICAgJHtkZXNjcmlwdG9yLmJhY2tncm91bmRDb2xvcj8uZ3JlZW4gPz8gMH0sXHJcbiAgICAgICAgJHtkZXNjcmlwdG9yLmJhY2tncm91bmRDb2xvcj8uYmx1ZSA/PyAwfSxcclxuICAgICAgICAke2Rlc2NyaXB0b3IuYmFja2dyb3VuZENvbG9yPy5hbHBoYSA/PyAxfSlgO1xyXG5cclxuICAgICAgbGV0IGlkID0gJ2N1c3RvbUNhbnZhc0JhY2tncm91bmRDb2xvcic7XHJcbiAgICAgIGNvbnN0IHBsdWdpbiA9IHtcclxuICAgICAgICBpZDogaWQsXHJcbiAgICAgICAgYmVmb3JlRHJhdzogKGNoYXJ0OiBhbnksIGFyZ3M6IGFueSwgb3B0aW9uczogYW55KSA9PiB7XHJcbiAgICAgICAgICBjb25zdCB7IGN0eCwgY2hhcnRBcmVhIH0gPSBjaGFydDtcclxuXHJcbiAgICAgICAgICBjdHguc2F2ZSgpO1xyXG4gICAgICAgICAgY3R4Lmdsb2JhbENvbXBvc2l0ZU9wZXJhdGlvbiA9ICdkZXN0aW5hdGlvbi1vdmVyJztcclxuICAgICAgICAgIGN0eC5maWxsU3R5bGUgPSBiYWNrZ3JvdW5kQ29sb3I7XHJcbiAgICAgICAgICBjdHguZmlsbFJlY3QoXHJcbiAgICAgICAgICAgIGNoYXJ0QXJlYS5sZWZ0LFxyXG4gICAgICAgICAgICBjaGFydEFyZWEudG9wLFxyXG4gICAgICAgICAgICBjaGFydEFyZWEucmlnaHQgLSBjaGFydEFyZWEubGVmdCxcclxuICAgICAgICAgICAgY2hhcnRBcmVhLmJvdHRvbSAtIGNoYXJ0QXJlYS50b3BcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgICBjdHgucmVzdG9yZSgpO1xyXG4gICAgICAgIH0sXHJcbiAgICAgIH07XHJcbiAgICAgIHRoaXMucGx1Z2lucy5wdXNoKHBsdWdpbik7XHJcblxyXG4gICAgICBvcHRpb25zLnBsdWdpbnNbYCR7aWR9YF0gPSB7XHJcbiAgICAgICAgY29sb3I6IGJhY2tncm91bmRDb2xvcixcclxuICAgICAgfTtcclxuICAgIH1cclxuICAgIHJldHVybiBvcHRpb25zO1xyXG4gIH1cclxuXHJcbiAgb25EYXRhU2VsZWN0KGV2ZW50OiBhbnkpIHtcclxuICAgIGNvbnNvbGUubG9nKHsgZXZlbnQgfSk7XHJcbiAgICB0aGlzLmVsZW1lbnRTZWxlY3QuZW1pdChldmVudCk7XHJcbiAgfVxyXG5cclxuICBoYW5kbGVDaGFydENsaWNrKGV2ZW50OiBhbnkpOiB2b2lkIHtcclxuICAgIGNvbnNvbGUubG9nKHsgZXZlbnQgfSk7XHJcbiAgICB0aGlzLmNhbnZhc0NsaWNrLmVtaXQoZXZlbnQpO1xyXG4gIH1cclxuXHJcbiAgaGFuZGxlT25EYXRhQ2xpY2tlZChldmVudDogYW55KTogdm9pZCB7XHJcbiAgICBjb25zdCBjYW52YXMgPSBldmVudC50YXJnZXQgYXMgSFRNTENhbnZhc0VsZW1lbnQ7XHJcbiAgICBjb25zdCBjaGFydCA9IENoYXJ0LmdldENoYXJ0KGNhbnZhcyk7XHJcblxyXG4gICAgaWYgKGNoYXJ0KSB7XHJcbiAgICAgIGNvbnN0IGVsZW1lbnRzID0gY2hhcnQuZ2V0RWxlbWVudHNBdEV2ZW50Rm9yTW9kZShcclxuICAgICAgICBldmVudCxcclxuICAgICAgICAnbmVhcmVzdCcsXHJcbiAgICAgICAgeyBpbnRlcnNlY3Q6IHRydWUgfSxcclxuICAgICAgICBmYWxzZVxyXG4gICAgICApO1xyXG4gICAgICBpZiAoZWxlbWVudHMubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcbiAgICAgIGNvbnN0IGNsaWNrZWRJdGVtcyA9IGNoYXJ0LnRvb2x0aXA/LmRhdGFQb2ludHM/Lm1hcCgoaXRlbSkgPT4ge1xyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICBkYXRhc2V0SW5kZXg6IGl0ZW0uZGF0YXNldEluZGV4LFxyXG4gICAgICAgICAgaXRlbUluZGV4OiBpdGVtLmRhdGFJbmRleCxcclxuICAgICAgICAgIGVsZW1lbnQ6IGl0ZW0uZWxlbWVudCxcclxuICAgICAgICB9O1xyXG4gICAgICB9KTtcclxuXHJcbiAgICAgIGNvbnNvbGUubG9nKHsgZXZlbnQsIGNsaWNrZWRJdGVtcyB9KTtcclxuICAgICAgdGhpcy5kYXRhQ2xpY2suZW1pdCh7IGV2ZW50LCBjbGlja2VkSXRlbXMgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXRCYXNlNjRJbWFnZSgpIHtcclxuICAgIHJldHVybiB0aGlzLmNoYXJ0Py5nZXRCYXNlNjRJbWFnZSgpO1xyXG4gIH1cclxuXHJcbiAgcmVmcmVzaCgpIHtcclxuICAgIHJldHVybiB0aGlzLmNoYXJ0Py5yZWZyZXNoKCk7XHJcbiAgfVxyXG5cclxuICBnZXRDaGFydCgpIHtcclxuICAgIHJldHVybiB0aGlzLmNoYXJ0Py5jaGFydDtcclxuICB9XHJcbiAgZ2V0VmlzaWJsZVBvaW50cygpIHtcclxuICAgIGlmICghdGhpcy5jaGFydCkgcmV0dXJuO1xyXG5cclxuICAgIGNvbnN0IGNoYXJ0SW5zdGFuY2UgPSB0aGlzLmNoYXJ0LmNoYXJ0O1xyXG4gICAgaWYgKCFjaGFydEluc3RhbmNlKSByZXR1cm47XHJcblxyXG4gICAgY29uc3QgdmlzaWJsZVBvaW50czogYW55ID0gW107XHJcblxyXG4gICAgY2hhcnRJbnN0YW5jZS5kYXRhLmRhdGFzZXRzLmZvckVhY2goKGRhdGFzZXQ6IGFueSwgZGF0YXNldEluZGV4OiBhbnkpID0+IHtcclxuICAgICAgY29uc3QgbWV0YSA9IGNoYXJ0SW5zdGFuY2UuZ2V0RGF0YXNldE1ldGEoZGF0YXNldEluZGV4KTtcclxuXHJcbiAgICAgIC8vIENoZWNrIGlmIHRoZSBkYXRhc2V0IGlzIGhpZGRlblxyXG4gICAgICBpZiAoIWNoYXJ0SW5zdGFuY2UuaXNEYXRhc2V0VmlzaWJsZShkYXRhc2V0SW5kZXgpKSB7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBjb25zdCB4TWluID0gbWV0YS54U2NhbGUubWluO1xyXG4gICAgICBjb25zdCB4TWF4ID0gbWV0YS54U2NhbGUubWF4O1xyXG4gICAgICBjb25zdCB5TWluID0gbWV0YS55U2NhbGUubWluO1xyXG4gICAgICBjb25zdCB5TWF4ID0gbWV0YS55U2NhbGUubWF4O1xyXG5cclxuICAgICAgZGF0YXNldC5kYXRhLmZvckVhY2goKHBvaW50OiBhbnksIGRhdGFJbmRleDogbnVtYmVyKSA9PiB7XHJcbiAgICAgICAgY29uc3QgeyB4LCB5IH0gPSBwb2ludDtcclxuXHJcbiAgICAgICAgaWYgKHggPj0geE1pbiAmJiB4IDw9IHhNYXggJiYgeSA+PSB5TWluICYmIHkgPD0geU1heCkge1xyXG4gICAgICAgICAgdmlzaWJsZVBvaW50cy5wdXNoKHtcclxuICAgICAgICAgICAgZGF0YXNldEluZGV4LFxyXG4gICAgICAgICAgICBkYXRhSW5kZXgsXHJcbiAgICAgICAgICAgIHgsXHJcbiAgICAgICAgICAgIHksXHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfSk7XHJcblxyXG4gICAgcmV0dXJuIHZpc2libGVQb2ludHM7XHJcbiAgfVxyXG5cclxuICBhcHBseUNoYXJ0Q2xhc3MoKSB7XHJcbiAgICBpZiAoIXRoaXMuY2hhcnQpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IGNoYXJ0RWxlbWVudCA9IHRoaXMuY2hhcnQuZWwubmF0aXZlRWxlbWVudDtcclxuICAgIHN3aXRjaCAodGhpcy50eXBlKSB7XHJcbiAgICAgIGNhc2UgJ3BpZSc6XHJcbiAgICAgIGNhc2UgJ2RvdWdobnV0JzpcclxuICAgICAgY2FzZSAncG9sYXJBcmVhJzpcclxuICAgICAgY2FzZSAncmFkYXInOlxyXG4gICAgICAgIGNoYXJ0RWxlbWVudC5jbGFzc0xpc3QuYWRkKCdwaWUtYXNwZWN0LXJhdGlvJyk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgY2hhcnRFbGVtZW50LmNsYXNzTGlzdC5hZGQoJ2RlZmF1bHQtYXNwZWN0LXJhdGlvJyk7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiIsIkBpZihjb21wTGliID09PSBjb21wb25lbnRMaWJyYXJ5LlBSSU1FTkcpIHtcclxuPHAtY2hhcnRcclxuICAjY2hhcnRKU1JlZlxyXG4gIFt0eXBlXT1cInR5cGVcIlxyXG4gIFtkYXRhXT1cImRhdGFcIlxyXG4gIFtvcHRpb25zXT1cIm9wdGlvbnNcIlxyXG4gIFtwbHVnaW5zXT1cInBsdWdpbnNcIlxyXG4gIChvbkRhdGFTZWxlY3QpPVwib25EYXRhU2VsZWN0KCRldmVudClcIlxyXG4gIChjbGljayk9XCJoYW5kbGVDaGFydENsaWNrKCRldmVudClcIlxyXG4gIChjbGljayk9XCJoYW5kbGVPbkRhdGFDbGlja2VkKCRldmVudClcIlxyXG4vPlxyXG59IEBlbHNlIHtcclxuPHA+T25seSBQcmltZU5nIGNvbXBvbmVudCBsaWJyYXJ5IGlzIHN1cHBvcnRlZDwvcD5cclxufVxyXG4iXX0=
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { NgModule } from '@angular/core';
|
|
2
|
+
import { BrowserModule } from '@angular/platform-browser';
|
|
3
|
+
import { ChartModule } from 'primeng/chart';
|
|
4
|
+
import { DefaultChartOptionsProvider as DefaultDiagramOptionsProvider, CUSTOM_DIAGRAM_OPTIONS, barChart, scatterChart, bubbleChart, horizontalBarChart, stackedBarChart, multiAxisLineChart, polarAreaChart, radarChart, doughnutChart, pieChart, } from './default-smart-diagram-options.provider';
|
|
5
|
+
import { SmartDiagramComponent } from './smart-diagram.component';
|
|
6
|
+
import * as i0 from "@angular/core";
|
|
7
|
+
const DEFAULT_PROVIDERS = [
|
|
8
|
+
DefaultDiagramOptionsProvider,
|
|
9
|
+
{ provide: CUSTOM_DIAGRAM_OPTIONS, useValue: barChart, multi: true },
|
|
10
|
+
{ provide: CUSTOM_DIAGRAM_OPTIONS, useValue: scatterChart, multi: true },
|
|
11
|
+
{ provide: CUSTOM_DIAGRAM_OPTIONS, useValue: bubbleChart, multi: true },
|
|
12
|
+
{ provide: CUSTOM_DIAGRAM_OPTIONS, useValue: horizontalBarChart, multi: true },
|
|
13
|
+
{ provide: CUSTOM_DIAGRAM_OPTIONS, useValue: stackedBarChart, multi: true },
|
|
14
|
+
{ provide: CUSTOM_DIAGRAM_OPTIONS, useValue: multiAxisLineChart, multi: true },
|
|
15
|
+
{ provide: CUSTOM_DIAGRAM_OPTIONS, useValue: polarAreaChart, multi: true },
|
|
16
|
+
{ provide: CUSTOM_DIAGRAM_OPTIONS, useValue: radarChart, multi: true },
|
|
17
|
+
{ provide: CUSTOM_DIAGRAM_OPTIONS, useValue: doughnutChart, multi: true },
|
|
18
|
+
{ provide: CUSTOM_DIAGRAM_OPTIONS, useValue: pieChart, multi: true },
|
|
19
|
+
];
|
|
20
|
+
export class SmartDiagramModule {
|
|
21
|
+
static forRoot(providers) {
|
|
22
|
+
return {
|
|
23
|
+
ngModule: SmartDiagramModule,
|
|
24
|
+
providers: [...DEFAULT_PROVIDERS, ...providers],
|
|
25
|
+
};
|
|
26
|
+
}
|
|
27
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: SmartDiagramModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
28
|
+
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.3.11", ngImport: i0, type: SmartDiagramModule, declarations: [SmartDiagramComponent], imports: [BrowserModule, ChartModule], exports: [SmartDiagramComponent] }); }
|
|
29
|
+
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: SmartDiagramModule, imports: [BrowserModule, ChartModule] }); }
|
|
30
|
+
}
|
|
31
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.11", ngImport: i0, type: SmartDiagramModule, decorators: [{
|
|
32
|
+
type: NgModule,
|
|
33
|
+
args: [{
|
|
34
|
+
declarations: [SmartDiagramComponent],
|
|
35
|
+
imports: [BrowserModule, ChartModule],
|
|
36
|
+
exports: [SmartDiagramComponent],
|
|
37
|
+
}]
|
|
38
|
+
}] });
|
|
39
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnQtZGlhZ3JhbS5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zbWFydC1uZy1jbGllbnQvc3JjL2xpYi9zbWFydC1kaWFncmFtL2NvbXBvbmVudC9zbWFydC1kaWFncmFtLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQXVCLFFBQVEsRUFBWSxNQUFNLGVBQWUsQ0FBQztBQUN4RSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDMUQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM1QyxPQUFPLEVBQ0wsMkJBQTJCLElBQUksNkJBQTZCLEVBQzVELHNCQUFzQixFQUN0QixRQUFRLEVBQ1IsWUFBWSxFQUNaLFdBQVcsRUFDWCxrQkFBa0IsRUFDbEIsZUFBZSxFQUNmLGtCQUFrQixFQUNsQixjQUFjLEVBQ2QsVUFBVSxFQUNWLGFBQWEsRUFDYixRQUFRLEdBQ1QsTUFBTSwwQ0FBMEMsQ0FBQztBQUNsRCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQzs7QUFFbEUsTUFBTSxpQkFBaUIsR0FBZTtJQUNwQyw2QkFBNkI7SUFDN0IsRUFBRSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFO0lBQ3BFLEVBQUUsT0FBTyxFQUFFLHNCQUFzQixFQUFFLFFBQVEsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRTtJQUN4RSxFQUFFLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxRQUFRLEVBQUUsV0FBVyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUU7SUFDdkUsRUFBRSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsUUFBUSxFQUFFLGtCQUFrQixFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUU7SUFDOUUsRUFBRSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsUUFBUSxFQUFFLGVBQWUsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFO0lBQzNFLEVBQUUsT0FBTyxFQUFFLHNCQUFzQixFQUFFLFFBQVEsRUFBRSxrQkFBa0IsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFO0lBQzlFLEVBQUUsT0FBTyxFQUFFLHNCQUFzQixFQUFFLFFBQVEsRUFBRSxjQUFjLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRTtJQUMxRSxFQUFFLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxRQUFRLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUU7SUFDdEUsRUFBRSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsUUFBUSxFQUFFLGFBQWEsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFO0lBQ3pFLEVBQUUsT0FBTyxFQUFFLHNCQUFzQixFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRTtDQUNyRSxDQUFDO0FBT0YsTUFBTSxPQUFPLGtCQUFrQjtJQUM3QixNQUFNLENBQUMsT0FBTyxDQUFDLFNBQXFCO1FBQ2xDLE9BQU87WUFDTCxRQUFRLEVBQUUsa0JBQWtCO1lBQzVCLFNBQVMsRUFBRSxDQUFDLEdBQUcsaUJBQWlCLEVBQUUsR0FBRyxTQUFTLENBQUM7U0FDaEQsQ0FBQztJQUNKLENBQUM7K0dBTlUsa0JBQWtCO2dIQUFsQixrQkFBa0IsaUJBSmQscUJBQXFCLGFBQzFCLGFBQWEsRUFBRSxXQUFXLGFBQzFCLHFCQUFxQjtnSEFFcEIsa0JBQWtCLFlBSG5CLGFBQWEsRUFBRSxXQUFXOzs0RkFHekIsa0JBQWtCO2tCQUw5QixRQUFRO21CQUFDO29CQUNSLFlBQVksRUFBRSxDQUFDLHFCQUFxQixDQUFDO29CQUNyQyxPQUFPLEVBQUUsQ0FBQyxhQUFhLEVBQUUsV0FBVyxDQUFDO29CQUNyQyxPQUFPLEVBQUUsQ0FBQyxxQkFBcUIsQ0FBQztpQkFDakMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBNb2R1bGVXaXRoUHJvdmlkZXJzLCBOZ01vZHVsZSwgUHJvdmlkZXIgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQnJvd3Nlck1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXInO1xyXG5pbXBvcnQgeyBDaGFydE1vZHVsZSB9IGZyb20gJ3ByaW1lbmcvY2hhcnQnO1xyXG5pbXBvcnQge1xyXG4gIERlZmF1bHRDaGFydE9wdGlvbnNQcm92aWRlciBhcyBEZWZhdWx0RGlhZ3JhbU9wdGlvbnNQcm92aWRlcixcclxuICBDVVNUT01fRElBR1JBTV9PUFRJT05TLFxyXG4gIGJhckNoYXJ0LFxyXG4gIHNjYXR0ZXJDaGFydCxcclxuICBidWJibGVDaGFydCxcclxuICBob3Jpem9udGFsQmFyQ2hhcnQsXHJcbiAgc3RhY2tlZEJhckNoYXJ0LFxyXG4gIG11bHRpQXhpc0xpbmVDaGFydCxcclxuICBwb2xhckFyZWFDaGFydCxcclxuICByYWRhckNoYXJ0LFxyXG4gIGRvdWdobnV0Q2hhcnQsXHJcbiAgcGllQ2hhcnQsXHJcbn0gZnJvbSAnLi9kZWZhdWx0LXNtYXJ0LWRpYWdyYW0tb3B0aW9ucy5wcm92aWRlcic7XHJcbmltcG9ydCB7IFNtYXJ0RGlhZ3JhbUNvbXBvbmVudCB9IGZyb20gJy4vc21hcnQtZGlhZ3JhbS5jb21wb25lbnQnO1xyXG5cclxuY29uc3QgREVGQVVMVF9QUk9WSURFUlM6IFByb3ZpZGVyW10gPSBbXHJcbiAgRGVmYXVsdERpYWdyYW1PcHRpb25zUHJvdmlkZXIsXHJcbiAgeyBwcm92aWRlOiBDVVNUT01fRElBR1JBTV9PUFRJT05TLCB1c2VWYWx1ZTogYmFyQ2hhcnQsIG11bHRpOiB0cnVlIH0sXHJcbiAgeyBwcm92aWRlOiBDVVNUT01fRElBR1JBTV9PUFRJT05TLCB1c2VWYWx1ZTogc2NhdHRlckNoYXJ0LCBtdWx0aTogdHJ1ZSB9LFxyXG4gIHsgcHJvdmlkZTogQ1VTVE9NX0RJQUdSQU1fT1BUSU9OUywgdXNlVmFsdWU6IGJ1YmJsZUNoYXJ0LCBtdWx0aTogdHJ1ZSB9LFxyXG4gIHsgcHJvdmlkZTogQ1VTVE9NX0RJQUdSQU1fT1BUSU9OUywgdXNlVmFsdWU6IGhvcml6b250YWxCYXJDaGFydCwgbXVsdGk6IHRydWUgfSxcclxuICB7IHByb3ZpZGU6IENVU1RPTV9ESUFHUkFNX09QVElPTlMsIHVzZVZhbHVlOiBzdGFja2VkQmFyQ2hhcnQsIG11bHRpOiB0cnVlIH0sXHJcbiAgeyBwcm92aWRlOiBDVVNUT01fRElBR1JBTV9PUFRJT05TLCB1c2VWYWx1ZTogbXVsdGlBeGlzTGluZUNoYXJ0LCBtdWx0aTogdHJ1ZSB9LFxyXG4gIHsgcHJvdmlkZTogQ1VTVE9NX0RJQUdSQU1fT1BUSU9OUywgdXNlVmFsdWU6IHBvbGFyQXJlYUNoYXJ0LCBtdWx0aTogdHJ1ZSB9LFxyXG4gIHsgcHJvdmlkZTogQ1VTVE9NX0RJQUdSQU1fT1BUSU9OUywgdXNlVmFsdWU6IHJhZGFyQ2hhcnQsIG11bHRpOiB0cnVlIH0sXHJcbiAgeyBwcm92aWRlOiBDVVNUT01fRElBR1JBTV9PUFRJT05TLCB1c2VWYWx1ZTogZG91Z2hudXRDaGFydCwgbXVsdGk6IHRydWUgfSxcclxuICB7IHByb3ZpZGU6IENVU1RPTV9ESUFHUkFNX09QVElPTlMsIHVzZVZhbHVlOiBwaWVDaGFydCwgbXVsdGk6IHRydWUgfSxcclxuXTtcclxuXHJcbkBOZ01vZHVsZSh7XHJcbiAgZGVjbGFyYXRpb25zOiBbU21hcnREaWFncmFtQ29tcG9uZW50XSxcclxuICBpbXBvcnRzOiBbQnJvd3Nlck1vZHVsZSwgQ2hhcnRNb2R1bGVdLFxyXG4gIGV4cG9ydHM6IFtTbWFydERpYWdyYW1Db21wb25lbnRdLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgU21hcnREaWFncmFtTW9kdWxlIHtcclxuICBzdGF0aWMgZm9yUm9vdChwcm92aWRlcnM6IFByb3ZpZGVyW10pOiBNb2R1bGVXaXRoUHJvdmlkZXJzPFNtYXJ0RGlhZ3JhbU1vZHVsZT4ge1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgbmdNb2R1bGU6IFNtYXJ0RGlhZ3JhbU1vZHVsZSxcclxuICAgICAgcHJvdmlkZXJzOiBbLi4uREVGQVVMVF9QUk9WSURFUlMsIC4uLnByb3ZpZGVyc10sXHJcbiAgICB9O1xyXG4gIH1cclxufVxyXG4iXX0=
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export function deepMerge(target, source) {
|
|
2
|
+
for (const key of Object.keys(source)) {
|
|
3
|
+
if (source[key] instanceof Object && target[key]) {
|
|
4
|
+
Object.assign(source[key], deepMerge(target[key], source[key]));
|
|
5
|
+
}
|
|
6
|
+
}
|
|
7
|
+
Object.assign(target || {}, source);
|
|
8
|
+
return target;
|
|
9
|
+
}
|
|
10
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnQtZGlhZ3JhbS51dGlsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc21hcnQtbmctY2xpZW50L3NyYy9saWIvc21hcnQtZGlhZ3JhbS9jb21wb25lbnQvc21hcnQtZGlhZ3JhbS51dGlsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sVUFBVSxTQUFTLENBQUMsTUFBVyxFQUFFLE1BQVc7SUFDaEQsS0FBSyxNQUFNLEdBQUcsSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUM7UUFDdEMsSUFBSSxNQUFNLENBQUMsR0FBRyxDQUFDLFlBQVksTUFBTSxJQUFJLE1BQU0sQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQ2pELE1BQU0sQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxFQUFFLFNBQVMsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEVBQUUsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNsRSxDQUFDO0lBQ0gsQ0FBQztJQUNELE1BQU0sQ0FBQyxNQUFNLENBQUMsTUFBTSxJQUFJLEVBQUUsRUFBRSxNQUFNLENBQUMsQ0FBQztJQUNwQyxPQUFPLE1BQU0sQ0FBQztBQUNoQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGZ1bmN0aW9uIGRlZXBNZXJnZSh0YXJnZXQ6IGFueSwgc291cmNlOiBhbnkpOiBhbnkge1xyXG4gIGZvciAoY29uc3Qga2V5IG9mIE9iamVjdC5rZXlzKHNvdXJjZSkpIHtcclxuICAgIGlmIChzb3VyY2Vba2V5XSBpbnN0YW5jZW9mIE9iamVjdCAmJiB0YXJnZXRba2V5XSkge1xyXG4gICAgICBPYmplY3QuYXNzaWduKHNvdXJjZVtrZXldLCBkZWVwTWVyZ2UodGFyZ2V0W2tleV0sIHNvdXJjZVtrZXldKSk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIE9iamVjdC5hc3NpZ24odGFyZ2V0IHx8IHt9LCBzb3VyY2UpO1xyXG4gIHJldHVybiB0YXJnZXQ7XHJcbn1cclxuIl19
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export * from './component/smart-diagram.module';
|
|
2
|
+
export * from './component/smart-diagram.component';
|
|
3
|
+
export * from './api/model/models';
|
|
4
|
+
export * from './component/default-smart-diagram-options.provider';
|
|
5
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvamVjdHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zbWFydC1uZy1jbGllbnQvc3JjL2xpYi9zbWFydC1kaWFncmFtL3Byb2plY3RzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsa0NBQWtDLENBQUM7QUFDakQsY0FBYyxxQ0FBcUMsQ0FBQztBQUNwRCxjQUFjLG9CQUFvQixDQUFDO0FBQ25DLGNBQWMsb0RBQW9ELENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2NvbXBvbmVudC9zbWFydC1kaWFncmFtLm1vZHVsZSc7XHJcbmV4cG9ydCAqIGZyb20gJy4vY29tcG9uZW50L3NtYXJ0LWRpYWdyYW0uY29tcG9uZW50JztcclxuZXhwb3J0ICogZnJvbSAnLi9hcGkvbW9kZWwvbW9kZWxzJztcclxuZXhwb3J0ICogZnJvbSAnLi9jb21wb25lbnQvZGVmYXVsdC1zbWFydC1kaWFncmFtLW9wdGlvbnMucHJvdmlkZXInO1xyXG4iXX0=
|