cats-charts 0.0.21 → 0.0.22
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/fesm2022/cats-charts.mjs +102 -203
- package/fesm2022/cats-charts.mjs.map +1 -1
- package/index.d.ts +3 -1
- package/package.json +1 -1
package/fesm2022/cats-charts.mjs
CHANGED
|
@@ -8,197 +8,6 @@ import { CanvasRenderer } from 'echarts/renderers';
|
|
|
8
8
|
|
|
9
9
|
class Charts {
|
|
10
10
|
legendSelected = {};
|
|
11
|
-
// buildGraphicLegend(total: number, config: any, chartInstance: any) {
|
|
12
|
-
// const pillHeight = 28;
|
|
13
|
-
// const spacing = 14;
|
|
14
|
-
// const indicatorWidth = 12;
|
|
15
|
-
// const horizontalPadding = 8;
|
|
16
|
-
// const gapAfterIndicator = 4;
|
|
17
|
-
// const font = '14px sans-serif';
|
|
18
|
-
// const isVertical = config.legendDirection === 'vertical';
|
|
19
|
-
// // 🔹 Initialize selected state once
|
|
20
|
-
// // if (Object.keys(this.legendSelected).length === 0) {
|
|
21
|
-
// // config.data.forEach((d: any) => {
|
|
22
|
-
// // this.legendSelected[d.name] = true;
|
|
23
|
-
// // });
|
|
24
|
-
// // }
|
|
25
|
-
// // 🔹 Build pills
|
|
26
|
-
// const pills = config.data.map((item: any, index: number) => {
|
|
27
|
-
// const color =
|
|
28
|
-
// config.colors?.[index] ?? ['#3b82f6', '#f59e0b', '#16a34a', '#ef4444'][index % 4];
|
|
29
|
-
// const percentage = ((item.value / total) * 100).toFixed(1) + '%';
|
|
30
|
-
// const nameRect = echarts.format.getTextRect(item.name, font);
|
|
31
|
-
// const valueRect = echarts.format.getTextRect(String(item.value), font);
|
|
32
|
-
// const pillWidth =
|
|
33
|
-
// horizontalPadding +
|
|
34
|
-
// indicatorWidth +
|
|
35
|
-
// gapAfterIndicator +
|
|
36
|
-
// nameRect.width +
|
|
37
|
-
// 8 +
|
|
38
|
-
// valueRect.width +
|
|
39
|
-
// horizontalPadding;
|
|
40
|
-
// return { item, color, pillWidth, percentage };
|
|
41
|
-
// });
|
|
42
|
-
// const totalWidth = isVertical
|
|
43
|
-
// ? Math.max(...pills.map((p: any) => p.pillWidth))
|
|
44
|
-
// : pills.reduce((sum: any, p: any) => sum + p.pillWidth, 0) + spacing * (pills.length - 1);
|
|
45
|
-
// const totalHeight = isVertical
|
|
46
|
-
// ? pills.length * pillHeight + spacing * (pills.length - 1)
|
|
47
|
-
// : pillHeight;
|
|
48
|
-
// let currentOffset = 0;
|
|
49
|
-
// // 🔹 Position logic
|
|
50
|
-
// const positionConfig: any = {};
|
|
51
|
-
// switch (config.legendPosition) {
|
|
52
|
-
// case 'top':
|
|
53
|
-
// positionConfig.top = 20;
|
|
54
|
-
// break;
|
|
55
|
-
// case 'bottom':
|
|
56
|
-
// positionConfig.bottom = 20;
|
|
57
|
-
// break;
|
|
58
|
-
// case 'left':
|
|
59
|
-
// positionConfig.left = 20;
|
|
60
|
-
// break;
|
|
61
|
-
// case 'right':
|
|
62
|
-
// positionConfig.right = 20;
|
|
63
|
-
// break;
|
|
64
|
-
// }
|
|
65
|
-
// // ALIGNMENT (Cross-Axis)
|
|
66
|
-
// if (config.legendPosition === 'top' || config.legendPosition === 'bottom') {
|
|
67
|
-
// // Horizontal area → align horizontally
|
|
68
|
-
// if (config.legendAlign === 'center') {
|
|
69
|
-
// positionConfig.left = 'center';
|
|
70
|
-
// } else if (config.legendAlign === 'right') {
|
|
71
|
-
// positionConfig.right = 20;
|
|
72
|
-
// } else {
|
|
73
|
-
// positionConfig.left = 20;
|
|
74
|
-
// }
|
|
75
|
-
// } else {
|
|
76
|
-
// // Vertical area → align vertically
|
|
77
|
-
// if (config.legendAlign === 'center') {
|
|
78
|
-
// positionConfig.top = 'middle';
|
|
79
|
-
// } else if (config.legendAlign === 'right') {
|
|
80
|
-
// positionConfig.bottom = 20;
|
|
81
|
-
// } else {
|
|
82
|
-
// positionConfig.top = 20;
|
|
83
|
-
// }
|
|
84
|
-
// }
|
|
85
|
-
// return [
|
|
86
|
-
// {
|
|
87
|
-
// id: 'customLegend', // IMPORTANT
|
|
88
|
-
// type: 'group',
|
|
89
|
-
// ...positionConfig,
|
|
90
|
-
// width: totalWidth,
|
|
91
|
-
// height: totalHeight,
|
|
92
|
-
// children: pills.map((pill: any) => {
|
|
93
|
-
// const offset = currentOffset;
|
|
94
|
-
// currentOffset += (isVertical ? pillHeight : pill.pillWidth) + spacing;
|
|
95
|
-
// let isSelected = this.legendSelected[pill.item.name];
|
|
96
|
-
// return {
|
|
97
|
-
// type: 'group',
|
|
98
|
-
// top: isVertical ? offset : 0,
|
|
99
|
-
// left: isVertical ? 0 : offset,
|
|
100
|
-
// width: pill.pillWidth,
|
|
101
|
-
// height: pillHeight,
|
|
102
|
-
// cursor: 'pointer',
|
|
103
|
-
// // onclick: () => {
|
|
104
|
-
// // // 🔹 Toggle selected state
|
|
105
|
-
// // this.legendSelected[pill.item.name] = !this.legendSelected[pill.item.name];
|
|
106
|
-
// // chartInstance?.dispatchAction({
|
|
107
|
-
// // type: 'legendToggleSelect',
|
|
108
|
-
// // name: pill.item.name,
|
|
109
|
-
// // });
|
|
110
|
-
// // chartInstance?.setOption({
|
|
111
|
-
// // graphic: {
|
|
112
|
-
// // id: 'customLegend',
|
|
113
|
-
// // // $action: 'replace',
|
|
114
|
-
// // ...this.buildGraphicLegend(total, config, chartInstance)[0],
|
|
115
|
-
// // },
|
|
116
|
-
// // });
|
|
117
|
-
// // },
|
|
118
|
-
// onclick: () => {
|
|
119
|
-
// chartInstance.dispatchAction({
|
|
120
|
-
// type: 'legendToggleSelect',
|
|
121
|
-
// name: pill.item.name,
|
|
122
|
-
// });
|
|
123
|
-
// // 🔥 Read fresh selected state from chart
|
|
124
|
-
// const selectedMap = chartInstance.getOption()?.legend?.[0]?.selected || {};
|
|
125
|
-
// this.legendSelected = { ...selectedMap };
|
|
126
|
-
// chartInstance.setOption({
|
|
127
|
-
// graphic: {
|
|
128
|
-
// id: 'customLegend',
|
|
129
|
-
// $action: 'replace',
|
|
130
|
-
// ...this.buildGraphicLegend(total, config, chartInstance),
|
|
131
|
-
// },
|
|
132
|
-
// });
|
|
133
|
-
// },
|
|
134
|
-
// children: [
|
|
135
|
-
// // 🔹 Pill Background
|
|
136
|
-
// {
|
|
137
|
-
// type: 'rect',
|
|
138
|
-
// shape: {
|
|
139
|
-
// width: pill.pillWidth,
|
|
140
|
-
// height: pillHeight,
|
|
141
|
-
// r: 4,
|
|
142
|
-
// },
|
|
143
|
-
// style: {
|
|
144
|
-
// fill: !isSelected ? this.hexToRgba(pill.color, 0.08) : '#F2F2F7',
|
|
145
|
-
// stroke: !isSelected ? pill.color : '#D1D1D6',
|
|
146
|
-
// // fill: this.hexToRgba(pill.color, 0.08),
|
|
147
|
-
// // stroke: pill.color,
|
|
148
|
-
// lineWidth: 1,
|
|
149
|
-
// },
|
|
150
|
-
// },
|
|
151
|
-
// // 🔹 Color Indicator
|
|
152
|
-
// {
|
|
153
|
-
// type: 'rect',
|
|
154
|
-
// shape: {
|
|
155
|
-
// width: indicatorWidth,
|
|
156
|
-
// height: indicatorWidth,
|
|
157
|
-
// r: 2,
|
|
158
|
-
// },
|
|
159
|
-
// left: horizontalPadding,
|
|
160
|
-
// top: (pillHeight - indicatorWidth) / 2,
|
|
161
|
-
// // style: {
|
|
162
|
-
// // fill: pill.color,
|
|
163
|
-
// // },
|
|
164
|
-
// style: {
|
|
165
|
-
// fill: !isSelected ? pill.color : '#C7C7CC',
|
|
166
|
-
// },
|
|
167
|
-
// },
|
|
168
|
-
// // 🔹 Label
|
|
169
|
-
// {
|
|
170
|
-
// type: 'text',
|
|
171
|
-
// left: horizontalPadding + indicatorWidth + gapAfterIndicator,
|
|
172
|
-
// top: (pillHeight - indicatorWidth) / 2,
|
|
173
|
-
// style: {
|
|
174
|
-
// text: pill.item.name,
|
|
175
|
-
// fontSize: 14,
|
|
176
|
-
// // fill: '#1C1C1E',
|
|
177
|
-
// fill: !isSelected ? '#1C1C1E' : '#8E8E93',
|
|
178
|
-
// textVerticalAlign: 'middle',
|
|
179
|
-
// },
|
|
180
|
-
// },
|
|
181
|
-
// // 🔹 value text
|
|
182
|
-
// {
|
|
183
|
-
// type: 'text',
|
|
184
|
-
// left: pill.pillWidth - horizontalPadding - indicatorWidth - gapAfterIndicator,
|
|
185
|
-
// top: (pillHeight - indicatorWidth) / 2,
|
|
186
|
-
// style: {
|
|
187
|
-
// text: pill.item.value,
|
|
188
|
-
// fontSize: 14,
|
|
189
|
-
// fontWeight: 500,
|
|
190
|
-
// // fill: '#1C1C1E',
|
|
191
|
-
// fill: !isSelected ? '#1C1C1E' : '#8E8E93',
|
|
192
|
-
// textAlign: 'right',
|
|
193
|
-
// textVerticalAlign: 'middle',
|
|
194
|
-
// },
|
|
195
|
-
// },
|
|
196
|
-
// ],
|
|
197
|
-
// };
|
|
198
|
-
// }),
|
|
199
|
-
// },
|
|
200
|
-
// ];
|
|
201
|
-
// }
|
|
202
11
|
buildGraphicLegend(total, config, chartInstance) {
|
|
203
12
|
const pillHeight = 28;
|
|
204
13
|
const spacing = 14;
|
|
@@ -457,6 +266,82 @@ class Charts {
|
|
|
457
266
|
</span>
|
|
458
267
|
</div>
|
|
459
268
|
`;
|
|
269
|
+
}
|
|
270
|
+
barLineTooltipFormatter(params) {
|
|
271
|
+
if (!params || !params.length)
|
|
272
|
+
return '';
|
|
273
|
+
const date = params[0].axisValueLabel || params[0].name;
|
|
274
|
+
let total = 0;
|
|
275
|
+
let rows = '';
|
|
276
|
+
params.forEach((item) => {
|
|
277
|
+
const color = item.color;
|
|
278
|
+
const name = item.seriesName;
|
|
279
|
+
const value = item.value ?? 0;
|
|
280
|
+
total += Number(value);
|
|
281
|
+
rows += `
|
|
282
|
+
<div style="
|
|
283
|
+
display:flex;
|
|
284
|
+
align-items:center;
|
|
285
|
+
gap:8px;
|
|
286
|
+
font-size:13px;
|
|
287
|
+
color:#434A51;
|
|
288
|
+
margin-top:6px;
|
|
289
|
+
">
|
|
290
|
+
<span style="
|
|
291
|
+
width:14px;
|
|
292
|
+
height:14px;
|
|
293
|
+
background:${color};
|
|
294
|
+
border-radius:3px;
|
|
295
|
+
display:inline-block;
|
|
296
|
+
"></span>
|
|
297
|
+
|
|
298
|
+
<span>${name}: <b style="color:#111;font-weight:600;">${value}</b></span>
|
|
299
|
+
</div>
|
|
300
|
+
`;
|
|
301
|
+
});
|
|
302
|
+
return `
|
|
303
|
+
<div style="
|
|
304
|
+
background:#ffffff;
|
|
305
|
+
padding:16px;
|
|
306
|
+
border-radius: 8px;
|
|
307
|
+
background-color: #ffffff;
|
|
308
|
+
border: 1px solid #f0f0f0;
|
|
309
|
+
box-shadow: 0px 10.55px 23.39px -3.52px #0a0d1214;
|
|
310
|
+
min-width:190px;
|
|
311
|
+
font-family: Inter, sans-serif;
|
|
312
|
+
">
|
|
313
|
+
<div style="
|
|
314
|
+
position: absolute;
|
|
315
|
+
left: -10px;
|
|
316
|
+
top: 50%;
|
|
317
|
+
width: 0;
|
|
318
|
+
height: 0;
|
|
319
|
+
border-top: 10px solid transparent;
|
|
320
|
+
border-bottom: 10px solid transparent;
|
|
321
|
+
border-right: 10px solid #ffffff;
|
|
322
|
+
"></div>
|
|
323
|
+
<div style="
|
|
324
|
+
font-size:15px;
|
|
325
|
+
font-weight:600;
|
|
326
|
+
color:#111;
|
|
327
|
+
margin-bottom:2px;
|
|
328
|
+
border-bottom: 1px #F0F0F0 ;
|
|
329
|
+
">
|
|
330
|
+
${date}
|
|
331
|
+
</div>
|
|
332
|
+
|
|
333
|
+
${rows}
|
|
334
|
+
|
|
335
|
+
<div style="
|
|
336
|
+
font-size:13px;
|
|
337
|
+
color:#434A51;
|
|
338
|
+
margin-top:10px;
|
|
339
|
+
">
|
|
340
|
+
Total: <b style="color:#111;font-weight:600;">${total}</b>
|
|
341
|
+
</div>
|
|
342
|
+
|
|
343
|
+
</div>
|
|
344
|
+
`;
|
|
460
345
|
}
|
|
461
346
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: Charts, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
462
347
|
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: Charts, providedIn: 'root' });
|
|
@@ -510,8 +395,9 @@ class LinesChart {
|
|
|
510
395
|
left: 'center',
|
|
511
396
|
},
|
|
512
397
|
tooltip: {
|
|
513
|
-
show: config.showTooltip ?? true,
|
|
514
398
|
trigger: 'axis',
|
|
399
|
+
padding: 0,
|
|
400
|
+
formatter: (params) => this.chartService.barLineTooltipFormatter(params),
|
|
515
401
|
},
|
|
516
402
|
legend: {
|
|
517
403
|
show: false,
|
|
@@ -534,7 +420,7 @@ class LinesChart {
|
|
|
534
420
|
axisLine: {
|
|
535
421
|
show: this.config.showXAxisLine ?? true,
|
|
536
422
|
},
|
|
537
|
-
...config.xAxis
|
|
423
|
+
...config.xAxis,
|
|
538
424
|
},
|
|
539
425
|
yAxis: {
|
|
540
426
|
show: !this.config.isTrendChart,
|
|
@@ -543,7 +429,7 @@ class LinesChart {
|
|
|
543
429
|
axisLine: {
|
|
544
430
|
show: this.config.showYAxisLine ?? true,
|
|
545
431
|
},
|
|
546
|
-
...config.yAxis
|
|
432
|
+
...config.yAxis,
|
|
547
433
|
},
|
|
548
434
|
series: config.series.map((s) => {
|
|
549
435
|
const lineColor = s.color || '#3b82f6';
|
|
@@ -654,6 +540,7 @@ echarts.use([
|
|
|
654
540
|
CanvasRenderer,
|
|
655
541
|
]);
|
|
656
542
|
class BarChart {
|
|
543
|
+
chartService;
|
|
657
544
|
cdr;
|
|
658
545
|
config;
|
|
659
546
|
theme;
|
|
@@ -666,7 +553,8 @@ class BarChart {
|
|
|
666
553
|
chartInstance;
|
|
667
554
|
cardPosition = { x: 0, y: 0 };
|
|
668
555
|
openCard = false;
|
|
669
|
-
constructor(cdr) {
|
|
556
|
+
constructor(chartService, cdr) {
|
|
557
|
+
this.chartService = chartService;
|
|
670
558
|
this.cdr = cdr;
|
|
671
559
|
}
|
|
672
560
|
/* ------------------ CONFIG CHANGE ------------------ */
|
|
@@ -688,9 +576,20 @@ class BarChart {
|
|
|
688
576
|
text: this.config.title,
|
|
689
577
|
left: this.config.titlePosition || 'center',
|
|
690
578
|
},
|
|
579
|
+
// tooltip: {
|
|
580
|
+
// show: this.config.showTooltip ?? true,
|
|
581
|
+
// trigger: 'axis',
|
|
582
|
+
// },
|
|
691
583
|
tooltip: {
|
|
692
|
-
show: this.config.showTooltip ?? true,
|
|
693
584
|
trigger: 'axis',
|
|
585
|
+
backgroundColor: 'transparent', // remove default box
|
|
586
|
+
borderWidth: 0,
|
|
587
|
+
padding: 0,
|
|
588
|
+
confine: true,
|
|
589
|
+
formatter: (params) => this.chartService.barLineTooltipFormatter(params),
|
|
590
|
+
},
|
|
591
|
+
legends: {
|
|
592
|
+
show: false,
|
|
694
593
|
},
|
|
695
594
|
grid: {
|
|
696
595
|
left: this.config.gridLeft ?? '',
|
|
@@ -702,12 +601,12 @@ class BarChart {
|
|
|
702
601
|
type: 'category',
|
|
703
602
|
data: this.config.categories,
|
|
704
603
|
axisLine: { show: this.config.showXAxisLine ?? true },
|
|
705
|
-
...this.config.xAxis
|
|
604
|
+
...this.config.xAxis,
|
|
706
605
|
},
|
|
707
606
|
yAxis: {
|
|
708
607
|
type: 'value',
|
|
709
608
|
axisLine: { show: this.config.showYAxisLine ?? true },
|
|
710
|
-
...this.config.yAxis
|
|
609
|
+
...this.config.yAxis,
|
|
711
610
|
},
|
|
712
611
|
// Handle both single-series and multi-series dynamically
|
|
713
612
|
series: (() => {
|
|
@@ -728,9 +627,9 @@ class BarChart {
|
|
|
728
627
|
borderRadius: this.config.borderRadius ?? 0,
|
|
729
628
|
},
|
|
730
629
|
emphasis: {
|
|
731
|
-
scale: false
|
|
630
|
+
scale: false,
|
|
732
631
|
},
|
|
733
|
-
...s
|
|
632
|
+
...s,
|
|
734
633
|
}));
|
|
735
634
|
}
|
|
736
635
|
else if (this.config.data) {
|
|
@@ -751,7 +650,7 @@ class BarChart {
|
|
|
751
650
|
},
|
|
752
651
|
emphasis: {
|
|
753
652
|
focus: 'series',
|
|
754
|
-
show: false
|
|
653
|
+
show: false,
|
|
755
654
|
},
|
|
756
655
|
// ...this.config,
|
|
757
656
|
},
|
|
@@ -809,13 +708,13 @@ class BarChart {
|
|
|
809
708
|
this.chartInstance.dispose();
|
|
810
709
|
}
|
|
811
710
|
}
|
|
812
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: BarChart, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
711
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: BarChart, deps: [{ token: Charts }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
813
712
|
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.16", type: BarChart, isStandalone: true, selector: "lib-bar-chart", inputs: { config: "config", theme: "theme", events: "events", contextMenuOptions: "contextMenuOptions", showContextMenu: "showContextMenu" }, outputs: { contextMenuClick: "contextMenuClick", chartEvent: "chartEvent" }, host: { listeners: { "document:click": "closeCard()" } }, providers: [provideEchartsCore({ echarts })], usesOnChanges: true, ngImport: i0, template: "<div\r\n echarts\r\n [options]=\"chartOption\"\r\n [theme]=\"theme\"\r\n class=\"chart-container\"\r\n (chartInit)=\"onChartInit($event)\"\r\n>\r\n</div>\r\n\r\n@if (openCard) {\r\n <lib-right-click-card\r\n [cardOptions]=\"contextMenuOptions\"\r\n (contextMenuClick)=\"onMenuClick($event)\"\r\n [cardPosition]=\"cardPosition\"\r\n ></lib-right-click-card>\r\n}", styles: [".chart-container{width:100%;height:100%}\n"], dependencies: [{ kind: "directive", type: NgxEchartsDirective, selector: "echarts, [echarts]", inputs: ["options", "theme", "initOpts", "merge", "autoResize", "loading", "loadingType", "loadingOpts"], outputs: ["chartInit", "optionsError", "chartClick", "chartDblClick", "chartMouseDown", "chartMouseMove", "chartMouseUp", "chartMouseOver", "chartMouseOut", "chartGlobalOut", "chartContextMenu", "chartHighlight", "chartDownplay", "chartSelectChanged", "chartLegendSelectChanged", "chartLegendSelected", "chartLegendUnselected", "chartLegendLegendSelectAll", "chartLegendLegendInverseSelect", "chartLegendScroll", "chartDataZoom", "chartDataRangeSelected", "chartGraphRoam", "chartGeoRoam", "chartTreeRoam", "chartTimelineChanged", "chartTimelinePlayChanged", "chartRestore", "chartDataViewChanged", "chartMagicTypeChanged", "chartGeoSelectChanged", "chartGeoSelected", "chartGeoUnselected", "chartAxisAreaSelected", "chartBrush", "chartBrushEnd", "chartBrushSelected", "chartGlobalCursorTaken", "chartRendered", "chartFinished"], exportAs: ["echarts"] }, { kind: "component", type: RightClickCard, selector: "lib-right-click-card", inputs: ["cardPosition", "cardOptions"], outputs: ["contextMenuClick"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
814
713
|
}
|
|
815
714
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImport: i0, type: BarChart, decorators: [{
|
|
816
715
|
type: Component,
|
|
817
716
|
args: [{ selector: 'lib-bar-chart', imports: [NgxEchartsDirective, RightClickCard], providers: [provideEchartsCore({ echarts })], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div\r\n echarts\r\n [options]=\"chartOption\"\r\n [theme]=\"theme\"\r\n class=\"chart-container\"\r\n (chartInit)=\"onChartInit($event)\"\r\n>\r\n</div>\r\n\r\n@if (openCard) {\r\n <lib-right-click-card\r\n [cardOptions]=\"contextMenuOptions\"\r\n (contextMenuClick)=\"onMenuClick($event)\"\r\n [cardPosition]=\"cardPosition\"\r\n ></lib-right-click-card>\r\n}", styles: [".chart-container{width:100%;height:100%}\n"] }]
|
|
818
|
-
}], ctorParameters: () => [{ type: i0.ChangeDetectorRef }], propDecorators: { config: [{
|
|
717
|
+
}], ctorParameters: () => [{ type: Charts }, { type: i0.ChangeDetectorRef }], propDecorators: { config: [{
|
|
819
718
|
type: Input
|
|
820
719
|
}], theme: [{
|
|
821
720
|
type: Input
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cats-charts.mjs","sources":["../../../projects/charts-lib/src/lib/service/charts.ts","../../../projects/charts-lib/src/lib/components/line-chart/line-chart.ts","../../../projects/charts-lib/src/lib/components/line-chart/line-chart.html","../../../projects/charts-lib/src/lib/components/right-click-card/right-click-card.ts","../../../projects/charts-lib/src/lib/components/right-click-card/right-click-card.html","../../../projects/charts-lib/src/lib/components/bar-chart/bar-chart.ts","../../../projects/charts-lib/src/lib/components/bar-chart/bar-chart.html","../../../projects/charts-lib/src/lib/components/pie-chart/pie-chart.ts","../../../projects/charts-lib/src/lib/components/pie-chart/pie-chart.html","../../../projects/charts-lib/src/lib/components/doughnut-chart/doughnut-chart.ts","../../../projects/charts-lib/src/lib/components/doughnut-chart/doughnut-chart.html","../../../projects/charts-lib/src/lib/components/stacked-area-chart/stacked-area-chart.ts","../../../projects/charts-lib/src/lib/components/stacked-area-chart/stacked-area-chart.html","../../../projects/charts-lib/src/lib/components/area-chart/area-chart.ts","../../../projects/charts-lib/src/lib/components/area-chart/area-chart.html","../../../projects/charts-lib/src/cats-charts.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\r\nimport * as echarts from 'echarts/core';\r\nimport { ECharts } from 'echarts/core';\r\nimport { DoughnutChartConfig, PieChartConfig } from '../modal/charts-modal';\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class Charts {\r\n legendSelected: Record<string, boolean> = {};\r\n // buildGraphicLegend(total: number, config: any, chartInstance: any) {\r\n // const pillHeight = 28;\r\n // const spacing = 14;\r\n // const indicatorWidth = 12;\r\n // const horizontalPadding = 8;\r\n // const gapAfterIndicator = 4;\r\n // const font = '14px sans-serif';\r\n\r\n // const isVertical = config.legendDirection === 'vertical';\r\n\r\n // // 🔹 Initialize selected state once\r\n // // if (Object.keys(this.legendSelected).length === 0) {\r\n // // config.data.forEach((d: any) => {\r\n // // this.legendSelected[d.name] = true;\r\n // // });\r\n // // }\r\n\r\n // // 🔹 Build pills\r\n // const pills = config.data.map((item: any, index: number) => {\r\n // const color =\r\n // config.colors?.[index] ?? ['#3b82f6', '#f59e0b', '#16a34a', '#ef4444'][index % 4];\r\n // const percentage = ((item.value / total) * 100).toFixed(1) + '%';\r\n // const nameRect = echarts.format.getTextRect(item.name, font);\r\n // const valueRect = echarts.format.getTextRect(String(item.value), font);\r\n\r\n // const pillWidth =\r\n // horizontalPadding +\r\n // indicatorWidth +\r\n // gapAfterIndicator +\r\n // nameRect.width +\r\n // 8 +\r\n // valueRect.width +\r\n // horizontalPadding;\r\n\r\n // return { item, color, pillWidth, percentage };\r\n // });\r\n\r\n // const totalWidth = isVertical\r\n // ? Math.max(...pills.map((p: any) => p.pillWidth))\r\n // : pills.reduce((sum: any, p: any) => sum + p.pillWidth, 0) + spacing * (pills.length - 1);\r\n\r\n // const totalHeight = isVertical\r\n // ? pills.length * pillHeight + spacing * (pills.length - 1)\r\n // : pillHeight;\r\n\r\n // let currentOffset = 0;\r\n\r\n // // 🔹 Position logic\r\n // const positionConfig: any = {};\r\n // switch (config.legendPosition) {\r\n // case 'top':\r\n // positionConfig.top = 20;\r\n // break;\r\n // case 'bottom':\r\n // positionConfig.bottom = 20;\r\n // break;\r\n // case 'left':\r\n // positionConfig.left = 20;\r\n // break;\r\n // case 'right':\r\n // positionConfig.right = 20;\r\n // break;\r\n // }\r\n\r\n // // ALIGNMENT (Cross-Axis)\r\n // if (config.legendPosition === 'top' || config.legendPosition === 'bottom') {\r\n // // Horizontal area → align horizontally\r\n // if (config.legendAlign === 'center') {\r\n // positionConfig.left = 'center';\r\n // } else if (config.legendAlign === 'right') {\r\n // positionConfig.right = 20;\r\n // } else {\r\n // positionConfig.left = 20;\r\n // }\r\n // } else {\r\n // // Vertical area → align vertically\r\n // if (config.legendAlign === 'center') {\r\n // positionConfig.top = 'middle';\r\n // } else if (config.legendAlign === 'right') {\r\n // positionConfig.bottom = 20;\r\n // } else {\r\n // positionConfig.top = 20;\r\n // }\r\n // }\r\n // return [\r\n // {\r\n // id: 'customLegend', // IMPORTANT\r\n // type: 'group',\r\n // ...positionConfig,\r\n // width: totalWidth,\r\n // height: totalHeight,\r\n\r\n // children: pills.map((pill: any) => {\r\n // const offset = currentOffset;\r\n // currentOffset += (isVertical ? pillHeight : pill.pillWidth) + spacing;\r\n\r\n // let isSelected = this.legendSelected[pill.item.name];\r\n // return {\r\n // type: 'group',\r\n // top: isVertical ? offset : 0,\r\n // left: isVertical ? 0 : offset,\r\n // width: pill.pillWidth,\r\n // height: pillHeight,\r\n // cursor: 'pointer',\r\n // // onclick: () => {\r\n // // // 🔹 Toggle selected state\r\n // // this.legendSelected[pill.item.name] = !this.legendSelected[pill.item.name];\r\n\r\n // // chartInstance?.dispatchAction({\r\n // // type: 'legendToggleSelect',\r\n // // name: pill.item.name,\r\n // // });\r\n // // chartInstance?.setOption({\r\n // // graphic: {\r\n // // id: 'customLegend',\r\n // // // $action: 'replace',\r\n // // ...this.buildGraphicLegend(total, config, chartInstance)[0],\r\n // // },\r\n // // });\r\n // // },\r\n // onclick: () => {\r\n // chartInstance.dispatchAction({\r\n // type: 'legendToggleSelect',\r\n // name: pill.item.name,\r\n // });\r\n\r\n // // 🔥 Read fresh selected state from chart\r\n // const selectedMap = chartInstance.getOption()?.legend?.[0]?.selected || {};\r\n\r\n // this.legendSelected = { ...selectedMap };\r\n\r\n // chartInstance.setOption({\r\n // graphic: {\r\n // id: 'customLegend',\r\n // $action: 'replace',\r\n // ...this.buildGraphicLegend(total, config, chartInstance),\r\n // },\r\n // });\r\n // },\r\n // children: [\r\n // // 🔹 Pill Background\r\n\r\n // {\r\n // type: 'rect',\r\n // shape: {\r\n // width: pill.pillWidth,\r\n // height: pillHeight,\r\n // r: 4,\r\n // },\r\n // style: {\r\n // fill: !isSelected ? this.hexToRgba(pill.color, 0.08) : '#F2F2F7',\r\n // stroke: !isSelected ? pill.color : '#D1D1D6',\r\n // // fill: this.hexToRgba(pill.color, 0.08),\r\n // // stroke: pill.color,\r\n // lineWidth: 1,\r\n // },\r\n // },\r\n\r\n // // 🔹 Color Indicator\r\n // {\r\n // type: 'rect',\r\n // shape: {\r\n // width: indicatorWidth,\r\n // height: indicatorWidth,\r\n // r: 2,\r\n // },\r\n // left: horizontalPadding,\r\n // top: (pillHeight - indicatorWidth) / 2,\r\n // // style: {\r\n // // fill: pill.color,\r\n // // },\r\n // style: {\r\n // fill: !isSelected ? pill.color : '#C7C7CC',\r\n // },\r\n // },\r\n\r\n // // 🔹 Label\r\n // {\r\n // type: 'text',\r\n // left: horizontalPadding + indicatorWidth + gapAfterIndicator,\r\n // top: (pillHeight - indicatorWidth) / 2,\r\n // style: {\r\n // text: pill.item.name,\r\n // fontSize: 14,\r\n // // fill: '#1C1C1E',\r\n // fill: !isSelected ? '#1C1C1E' : '#8E8E93',\r\n // textVerticalAlign: 'middle',\r\n // },\r\n // },\r\n\r\n // // 🔹 value text\r\n // {\r\n // type: 'text',\r\n // left: pill.pillWidth - horizontalPadding - indicatorWidth - gapAfterIndicator,\r\n // top: (pillHeight - indicatorWidth) / 2,\r\n // style: {\r\n // text: pill.item.value,\r\n // fontSize: 14,\r\n // fontWeight: 500,\r\n // // fill: '#1C1C1E',\r\n // fill: !isSelected ? '#1C1C1E' : '#8E8E93',\r\n // textAlign: 'right',\r\n // textVerticalAlign: 'middle',\r\n // },\r\n // },\r\n // ],\r\n // };\r\n // }),\r\n // },\r\n // ];\r\n // }\r\n buildGraphicLegend(total: number, config: any, chartInstance: any) {\r\n const pillHeight = 28;\r\n const spacing = 14;\r\n const indicatorWidth = 12;\r\n const horizontalPadding = 8;\r\n const gapAfterIndicator = 4;\r\n const font = '14px sans-serif';\r\n\r\n const isVertical = config.legendDirection === 'vertical';\r\n\r\n // 🔹 Initialize selected state once\r\n const selectedMap = chartInstance?.getOption()?.legend?.[0]?.selected || {};\r\n\r\n const pills = config.data.map((item: any, index: number) => {\r\n const color =\r\n config.colors?.[index] ?? ['#3b82f6', '#f59e0b', '#16a34a', '#ef4444'][index % 4];\r\n\r\n const nameRect = echarts.format.getTextRect(item.name, font);\r\n const valueRect = echarts.format.getTextRect(String(item.value), font);\r\n\r\n const pillWidth =\r\n horizontalPadding +\r\n indicatorWidth +\r\n gapAfterIndicator +\r\n nameRect.width +\r\n 8 +\r\n valueRect.width +\r\n\r\n horizontalPadding;\r\n return { item, color, pillWidth };\r\n });\r\n\r\n const totalWidth = isVertical\r\n ? Math.max(...pills.map((p: any) => p.pillWidth))\r\n : pills.reduce((sum: any, p: any) => sum + p.pillWidth, 0) + spacing * (pills.length - 1);\r\n\r\n const totalHeight = isVertical\r\n ? pills.length * pillHeight + spacing * (pills.length - 1)\r\n : pillHeight;\r\n\r\n let currentOffset = 0;\r\n\r\n // 🔹 Position logic\r\n const positionConfig: any = {};\r\n switch (config.legendPosition) {\r\n case 'top':\r\n positionConfig.top = 20;\r\n break;\r\n case 'bottom':\r\n positionConfig.bottom = 20;\r\n break;\r\n case 'left':\r\n positionConfig.left = 20;\r\n break;\r\n case 'right':\r\n positionConfig.right = 20;\r\n break;\r\n }\r\n\r\n // ALIGNMENT (Cross-Axis)\r\n if (config.legendPosition === 'top' || config.legendPosition === 'bottom') {\r\n // Horizontal area → align horizontally\r\n if (config.legendAlign === 'center') {\r\n positionConfig.left = 'center';\r\n } else if (config.legendAlign === 'right') {\r\n positionConfig.right = 20;\r\n } else {\r\n positionConfig.left = 20;\r\n }\r\n } else {\r\n // Vertical area → align vertically\r\n if (config.legendAlign === 'center') {\r\n positionConfig.top = 'middle';\r\n } else if (config.legendAlign === 'right') {\r\n positionConfig.bottom = 20;\r\n } else {\r\n positionConfig.top = 20;\r\n }\r\n }\r\n\r\n return [\r\n {\r\n id: 'customLegend', // IMPORTANT\r\n type: 'group',\r\n ...positionConfig,\r\n width: totalWidth,\r\n height: totalHeight,\r\n\r\n children: pills.map((pill: any) => {\r\n const offset = currentOffset;\r\n currentOffset += (isVertical ? pillHeight : pill.pillWidth) + spacing;\r\n\r\n const isSelected = selectedMap[pill.item.name] !== false;\r\n\r\n return {\r\n type: 'group',\r\n top: isVertical ? offset : 0,\r\n left: isVertical ? 0 : offset,\r\n width: pill.pillWidth,\r\n height: pillHeight,\r\n cursor: 'pointer',\r\n\r\n onclick: () => {\r\n chartInstance.dispatchAction({\r\n type: 'legendToggleSelect',\r\n name: pill.item.name,\r\n });\r\n chartInstance.setOption({\r\n graphic: {\r\n id: 'customLegend',\r\n // $action: 'replace',\r\n ...this.buildGraphicLegend(total, config, chartInstance)[0],\r\n },\r\n });\r\n },\r\n children: [\r\n // 🔹 Pill Background\r\n\r\n {\r\n type: 'rect',\r\n shape: {\r\n width: pill.pillWidth,\r\n height: pillHeight,\r\n r: 4,\r\n },\r\n style: {\r\n fill: isSelected ? this.hexToRgba(pill.color, 0.08) : '#F2F2F7',\r\n stroke: isSelected ? pill.color : '#D1D1D6',\r\n lineWidth: 1,\r\n },\r\n },\r\n\r\n // 🔹 Color Indicator\r\n {\r\n type: 'rect',\r\n shape: {\r\n width: indicatorWidth,\r\n height: indicatorWidth,\r\n r: 2,\r\n },\r\n left: horizontalPadding,\r\n top: (pillHeight - indicatorWidth) / 2,\r\n style: {\r\n fill: isSelected ? pill.color : '#C7C7CC',\r\n },\r\n },\r\n\r\n // 🔹 Label\r\n {\r\n type: 'text',\r\n left: horizontalPadding + indicatorWidth + gapAfterIndicator,\r\n top: (pillHeight - indicatorWidth) / 2,\r\n style: {\r\n text: pill.item.name,\r\n fontSize: 14,\r\n fill: isSelected ? '#1C1C1E' : '#8E8E93',\r\n textVerticalAlign: 'middle',\r\n },\r\n },\r\n\r\n // 🔹 value text\r\n {\r\n type: 'text',\r\n right: horizontalPadding,\r\n top: (pillHeight - indicatorWidth) / 2,\r\n style: {\r\n text: pill.item.value,\r\n fontSize: 14,\r\n fontWeight: 500,\r\n fill: isSelected ? '#1C1C1E' : '#8E8E93',\r\n textAlign: 'right',\r\n textVerticalAlign: 'middle',\r\n },\r\n },\r\n ],\r\n };\r\n }),\r\n },\r\n ];\r\n }\r\n buildCenterGraphic(config: any, total: number) {\r\n if (!config?.centerLabel?.show) return [];\r\n\r\n const centerConfig = config.centerLabel;\r\n const titleFont = centerConfig.fontSizeTitle ?? 14;\r\n const valueFont = centerConfig.fontSizeValue ?? 22;\r\n\r\n // Use external top if provided, default to 'center'\r\n // config.bottom\r\n const groupTop = centerConfig.top ?? 'center';\r\n\r\n // Offsets relative to groupTop\r\n const titleOffset = -valueFont / 2;\r\n const valueOffset = titleFont / 2;\r\n\r\n return [\r\n {\r\n id: 'centerLabel',\r\n type: 'group',\r\n left: 'center',\r\n top: groupTop,\r\n silent: true,\r\n children: [\r\n {\r\n type: 'text',\r\n style: {\r\n text: centerConfig.title ?? '',\r\n fontSize: titleFont,\r\n fill: centerConfig.titleColor ?? '#666',\r\n textAlign: 'center',\r\n textBaseline: 'middle',\r\n },\r\n top: titleOffset, // relative to groupTop\r\n },\r\n {\r\n type: 'text',\r\n style: {\r\n text: centerConfig.value ?? '',\r\n fontSize: valueFont,\r\n fontWeight: 'bold',\r\n fill: centerConfig.valueColor ?? '#000',\r\n textAlign: 'center',\r\n textBaseline: 'middle',\r\n },\r\n top: valueOffset, // relative to groupTop\r\n },\r\n ],\r\n },\r\n ];\r\n }\r\n hexToRgba(hex: string, alpha: number) {\r\n const r = parseInt(hex.slice(1, 3), 16);\r\n const g = parseInt(hex.slice(3, 5), 16);\r\n const b = parseInt(hex.slice(5, 7), 16);\r\n\r\n return `rgba(${r}, ${g}, ${b}, ${alpha})`;\r\n }\r\n pieTooltipFormatter(params: any, config: PieChartConfig | DoughnutChartConfig) {\r\n const color = params.color;\r\n const name = params.name;\r\n const value = params.value;\r\n const percent = params.percent;\r\n\r\n return `<div style=\"\r\n position: relative;\r\n background-color: #fff;\r\n padding: 8px 16px;\r\n border-radius: 8px;\r\n box-shadow: 0 4px 16px rgba(0,0,0,0.08);\r\n display: flex;\r\n align-items: center;\r\n gap: 10px;\r\n \">\r\n <div style=\"\r\n position: absolute;\r\n left: -10px;\r\n top: 10px;\r\n width: 0;\r\n height: 0;\r\n border-top: 10px solid transparent;\r\n border-bottom: 10px solid transparent;\r\n border-right: 10px solid #ffffff;\r\n \"></div>\r\n\r\n <span style=\"\r\n width: 14px;\r\n height: 14px;\r\n background: ${color};\r\n border-radius: 3px;\r\n display: inline-block;\r\n \"></span>\r\n\r\n <span style=\"\r\n font-size: 12px;\r\n color: #434A51;\r\n \">\r\n ${name}: <b style=\"color:#111; font-weight:600;\">${value}</b> ${config.showTooltipPercent ? '(' + percent + '%)' : ''}\r\n </span>\r\n </div>\r\n `;\r\n }\r\n}\r\n","import {\r\n Component,\r\n Input,\r\n Output,\r\n EventEmitter,\r\n OnChanges,\r\n OnDestroy,\r\n SimpleChanges,\r\n ChangeDetectionStrategy,\r\n} from '@angular/core';\r\n\r\nimport * as echarts from 'echarts/core';\r\nimport { ECharts, EChartsCoreOption } from 'echarts/core';\r\nimport { NgxEchartsDirective, provideEchartsCore } from 'ngx-echarts';\r\n\r\nimport { LineChart } from 'echarts/charts';\r\nimport {\r\n GridComponent,\r\n TooltipComponent,\r\n LegendComponent,\r\n TitleComponent,\r\n} from 'echarts/components';\r\nimport { CanvasRenderer } from 'echarts/renderers';\r\nimport { LineChartConfig } from '../../modal/charts-modal';\r\nimport { Charts } from '../../service/charts';\r\n\r\necharts.use([\r\n LineChart,\r\n GridComponent,\r\n TooltipComponent,\r\n LegendComponent,\r\n CanvasRenderer,\r\n TitleComponent,\r\n]);\r\n\r\n@Component({\r\n selector: 'lib-line-chart',\r\n standalone: true,\r\n imports: [NgxEchartsDirective],\r\n providers: [provideEchartsCore({ echarts })],\r\n templateUrl: './line-chart.html',\r\n styleUrls: ['./line-chart.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class LinesChart {\r\n @Input() config!: LineChartConfig;\r\n @Input() theme: any;\r\n @Input() events: string[] = [];\r\n\r\n @Output() chartEvent = new EventEmitter<{\r\n type: string;\r\n data: any;\r\n }>();\r\n\r\n chartOption: EChartsCoreOption = {};\r\n private chartInstance!: ECharts;\r\n constructor(private chartService: Charts) {}\r\n /* ------------------ CHANGE HANDLING ------------------ */\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (!this.config) return;\r\n\r\n this.chartOption = this.buildOption(this.config);\r\n\r\n if (this.chartInstance) {\r\n this.chartInstance.setOption(this.chartOption, true);\r\n }\r\n }\r\n\r\n /* ------------------ OPTION BUILDER ------------------ */\r\n private buildOption(config: LineChartConfig): EChartsCoreOption {\r\n const total = config.series?.reduce((seriesSum, series) => {\r\n const dataSum = series.data?.reduce((sum, value) => sum + value, 0) || 0;\r\n return seriesSum + dataSum;\r\n }, 0);\r\n return {\r\n backgroundColor: config.backgroundColor || 'transparent',\r\n\r\n title: {\r\n show: config.showTitle ?? !!config.title,\r\n text: config.title,\r\n left: 'center',\r\n },\r\n\r\n tooltip: {\r\n show: config.showTooltip ?? true,\r\n trigger: 'axis',\r\n },\r\n\r\n legend: {\r\n show: false,\r\n },\r\n // graphic: this.chartService?.buildGraphicLegend(total, this.config, this.chartInstance),\r\n\r\n grid: this.config.isTrendChart\r\n ? { left: 0, right: 0, top: 0, bottom: 0 }\r\n : {\r\n left: config.grid?.left ?? '3%',\r\n right: config.grid?.right ?? '4%',\r\n bottom: config.grid?.bottom ?? '3%',\r\n top: config.grid?.top ?? '10%',\r\n containLabel: true,\r\n },\r\n\r\n xAxis: {\r\n show: !this.config.isTrendChart,\r\n type: 'category',\r\n boundaryGap: false,\r\n data: config.xAxisData,\r\n axisLine: {\r\n show: this.config.showXAxisLine ?? true,\r\n },\r\n ...config.xAxis\r\n },\r\n\r\n yAxis: {\r\n show: !this.config.isTrendChart,\r\n type: 'value',\r\n boundaryGap: this.config.isTrendChart ? [0.2] : undefined,\r\n\r\n axisLine: {\r\n show: this.config.showYAxisLine ?? true,\r\n },\r\n ...config.yAxis\r\n },\r\n\r\n series: config.series.map((s) => {\r\n const lineColor = s.color || '#3b82f6';\r\n return {\r\n name: s.name,\r\n type: 'line',\r\n smooth: s.smooth ?? true,\r\n data: s.data,\r\n areaStyle: s.area\r\n ? {\r\n color: {\r\n type: 'linear',\r\n x: 0,\r\n y: 0,\r\n x2: 0,\r\n y2: 1,\r\n colorStops: [\r\n {\r\n offset: 0,\r\n color: lineColor,\r\n },\r\n {\r\n offset: 1,\r\n color: this.chartService.hexToRgba(lineColor, 0),\r\n },\r\n ],\r\n },\r\n opacity: 0.4,\r\n }\r\n : undefined,\r\n color: s.color,\r\n symbol: s.symbol,\r\n };\r\n }),\r\n };\r\n }\r\n\r\n /* ------------------ INIT ------------------ */\r\n onChartInit(ec: ECharts) {\r\n this.chartInstance = ec;\r\n this.bindEvents();\r\n }\r\n\r\n /* ------------------ EVENTS ------------------ */\r\n private bindEvents() {\r\n if (!this.chartInstance) return;\r\n\r\n this.chartInstance.off();\r\n\r\n this.events.forEach((eventName) => {\r\n this.chartInstance.on(eventName, (params: any) => {\r\n if (eventName === 'contextmenu' && params.event?.event) {\r\n params.event.event.preventDefault();\r\n }\r\n\r\n this.chartEvent.emit({\r\n type: eventName,\r\n data: params,\r\n });\r\n });\r\n });\r\n }\r\n\r\n /* ------------------ DESTROY ------------------ */\r\n ngOnDestroy(): void {\r\n this.chartInstance?.dispose();\r\n }\r\n}\r\n","\r\n<div\r\n echarts\r\n [options]=\"chartOption\"\r\n [theme]=\"theme\"\r\n (chartInit)=\"onChartInit($event)\"\r\n class=\"chart-container\">\r\n</div>\r\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'lib-right-click-card',\r\n imports: [],\r\n templateUrl: './right-click-card.html',\r\n styleUrl: './right-click-card.scss',\r\n})\r\nexport class RightClickCard {\r\n @Input() cardPosition: any;\r\n @Input() cardOptions: any;\r\n @Output() contextMenuClick = new EventEmitter<any>();\r\n \r\n onMenuClick(item: any) {\r\n this.contextMenuClick.emit(item);\r\n\r\n // this.closeMenu();\r\n }\r\n}\r\n","<div\r\n class=\"context-card\"\r\n [style.left.px]=\"cardPosition.x\"\r\n [style.top.px]=\"cardPosition.y\"\r\n (click)=\"$event.stopPropagation()\"\r\n>\r\n @for (item of cardOptions; track item.value) {\r\n <div class=\"context-item\" (click)=\"onMenuClick(item)\">\r\n @if (item.icon) {\r\n <img [src]=\"item.icon\" alt=\"icon\" />\r\n }\r\n\r\n <span>{{ item.label }}</span>\r\n </div>\r\n }\r\n</div>\r\n","import {\r\n Component,\r\n Input,\r\n Output,\r\n EventEmitter,\r\n SimpleChanges,\r\n HostListener,\r\n ChangeDetectorRef,\r\n ChangeDetectionStrategy,\r\n} from '@angular/core';\r\n\r\nimport * as echarts from 'echarts/core';\r\nimport { ECharts, EChartsCoreOption } from 'echarts/core';\r\n\r\nimport { NgxEchartsDirective, provideEchartsCore } from 'ngx-echarts';\r\nimport { BarChart as EBarChart } from 'echarts/charts';\r\n\r\nimport {\r\n TitleComponent,\r\n TooltipComponent,\r\n GridComponent,\r\n LegendComponent,\r\n DatasetComponent,\r\n} from 'echarts/components';\r\n\r\nimport { CanvasRenderer } from 'echarts/renderers';\r\nimport { RightClickCard } from '../right-click-card';\r\nimport { BarChartConfig } from '../../modal/charts-modal';\r\n\r\necharts.use([\r\n EBarChart,\r\n TitleComponent,\r\n TooltipComponent,\r\n GridComponent,\r\n LegendComponent,\r\n DatasetComponent,\r\n CanvasRenderer,\r\n]);\r\n\r\n@Component({\r\n selector: 'lib-bar-chart',\r\n imports: [NgxEchartsDirective, RightClickCard],\r\n providers: [provideEchartsCore({ echarts })],\r\n templateUrl: './bar-chart.html',\r\n styleUrl: './bar-chart.scss',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class BarChart {\r\n @Input() config!: BarChartConfig;\r\n @Input() theme: any;\r\n @Input() events: string[] = [];\r\n @Input() contextMenuOptions: any[] = [];\r\n @Input() showContextMenu: boolean = false;\r\n\r\n @Output() contextMenuClick = new EventEmitter<any>();\r\n\r\n @Output() chartEvent = new EventEmitter<{\r\n type: string;\r\n data: any;\r\n }>();\r\n\r\n chartOption!: EChartsCoreOption;\r\n\r\n private chartInstance!: ECharts;\r\n\r\n cardPosition = { x: 0, y: 0 };\r\n openCard = false;\r\n\r\n constructor(private cdr: ChangeDetectorRef) {}\r\n\r\n /* ------------------ CONFIG CHANGE ------------------ */\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (!this.config) return;\r\n\r\n if (changes['theme'] && this.chartInstance) {\r\n this.chartInstance.dispose();\r\n }\r\n\r\n this.buildOption();\r\n }\r\n\r\n /* ------------------ OPTION BUILDER ------------------ */\r\n\r\n buildOption() {\r\n\r\n // Common chart option\r\n this.chartOption = {\r\n backgroundColor: this.config.backgroundColor || 'transparent',\r\n\r\n title: {\r\n show: this.config.showTitle ?? !!this.config.title,\r\n text: this.config.title,\r\n left: this.config.titlePosition || 'center',\r\n },\r\n\r\n tooltip: {\r\n show: this.config.showTooltip ?? true,\r\n trigger: 'axis',\r\n },\r\n\r\n grid: {\r\n left: this.config.gridLeft ?? '',\r\n right: this.config.gridRight ?? '',\r\n bottom: this.config.gridBottom ?? '',\r\n containLabel: true,\r\n },\r\n\r\n xAxis: {\r\n type: 'category',\r\n data: this.config.categories,\r\n axisLine: { show: this.config.showXAxisLine ?? true },\r\n ...this.config.xAxis\r\n },\r\n\r\n yAxis: {\r\n type: 'value',\r\n axisLine: { show: this.config.showYAxisLine ?? true },\r\n ...this.config.yAxis\r\n },\r\n\r\n // Handle both single-series and multi-series dynamically\r\n series: (() => {\r\n if (this.config.series && this.config.series.length) {\r\n // Multi-series (stacked or grouped)\r\n return this.config.series.map((s: any) => ({\r\n type: this.config.type ?? 'bar',\r\n name: s.name,\r\n data: s.data,\r\n stack: s.stack ?? undefined,\r\n barWidth: this.config.barWidth ?? '60%',\r\n color: s.color || this.config.colors,\r\n label: {\r\n show: this.config.showLabel ?? false,\r\n position: this.config.labelPosition ?? 'top',\r\n },\r\n itemStyle: {\r\n borderRadius: this.config.borderRadius ?? 0,\r\n },\r\n emphasis: {\r\n scale:false\r\n },\r\n ...s\r\n }));\r\n } else if (this.config.data) {\r\n // Single-series\r\n return [\r\n {\r\n type: this.config.type ?? 'bar',\r\n name: this.config.seriesName,\r\n data: this.config.data,\r\n barWidth: this.config.barWidth ?? 20,\r\n color: this.config.colors,\r\n label: {\r\n show: this.config.showLabel ?? false,\r\n position: this.config.labelPosition ?? 'top',\r\n },\r\n itemStyle: {\r\n borderRadius: this.config.borderRadius ?? 0,\r\n },\r\n emphasis: {\r\n focus: 'series',\r\n show:false\r\n },\r\n // ...this.config,\r\n },\r\n ];\r\n } else {\r\n return [];\r\n }\r\n })(),\r\n };\r\n }\r\n\r\n /* ------------------ INIT ------------------ */\r\n\r\n onChartInit(ec: ECharts) {\r\n this.chartInstance = ec;\r\n this.buildOption();\r\n this.bindEvents();\r\n }\r\n\r\n /* ------------------ EVENTS ------------------ */\r\n\r\n private bindEvents() {\r\n if (!this.chartInstance) return;\r\n\r\n this.chartInstance.off();\r\n\r\n this.events.forEach((eventName) => {\r\n this.chartInstance.on(eventName, (params: any) => {\r\n if (eventName === 'contextmenu' && params.event?.event) {\r\n params.event.event.preventDefault();\r\n\r\n const container = this.chartInstance.getDom();\r\n const rect = container.getBoundingClientRect();\r\n\r\n this.cardPosition = {\r\n x: params.event.event.clientX - rect.left,\r\n y: params.event.event.clientY - rect.top,\r\n };\r\n\r\n this.openCard = true;\r\n this.cdr.markForCheck();\r\n }\r\n\r\n this.chartEvent.emit({\r\n type: eventName,\r\n data: params,\r\n });\r\n });\r\n });\r\n }\r\n\r\n /* ------------------ CONTEXT MENU ------------------ */\r\n\r\n onMenuClick(item: any) {\r\n this.contextMenuClick.emit(item);\r\n this.closeCard();\r\n }\r\n\r\n @HostListener('document:click')\r\n closeCard() {\r\n this.openCard = false;\r\n }\r\n\r\n /* ------------------ DESTROY ------------------ */\r\n\r\n ngOnDestroy(): void {\r\n if (this.chartInstance) {\r\n this.chartInstance.off();\r\n this.chartInstance.dispose();\r\n }\r\n }\r\n}\r\n","<div\r\n echarts\r\n [options]=\"chartOption\"\r\n [theme]=\"theme\"\r\n class=\"chart-container\"\r\n (chartInit)=\"onChartInit($event)\"\r\n>\r\n</div>\r\n\r\n@if (openCard) {\r\n <lib-right-click-card\r\n [cardOptions]=\"contextMenuOptions\"\r\n (contextMenuClick)=\"onMenuClick($event)\"\r\n [cardPosition]=\"cardPosition\"\r\n ></lib-right-click-card>\r\n}","import {\r\n Component,\r\n Input,\r\n Output,\r\n EventEmitter,\r\n SimpleChanges,\r\n HostListener,\r\n ChangeDetectorRef,\r\n ChangeDetectionStrategy,\r\n} from '@angular/core';\r\n\r\nimport * as echarts from 'echarts/core';\r\nimport { ECharts, EChartsCoreOption } from 'echarts/core';\r\nimport { NgxEchartsDirective, provideEchartsCore } from 'ngx-echarts';\r\nimport { PieChart as EPieChart } from 'echarts/charts';\r\nimport { TitleComponent, TooltipComponent, LegendComponent } from 'echarts/components';\r\nimport { CanvasRenderer } from 'echarts/renderers';\r\nimport { RightClickCard } from '../right-click-card';\r\nimport { PieChartConfig } from '../../modal/charts-modal';\r\nimport { Charts } from '../../service/charts';\r\n\r\necharts.use([EPieChart, TitleComponent, TooltipComponent, LegendComponent, CanvasRenderer]);\r\n@Component({\r\n selector: 'lib-pie-chart',\r\n imports: [NgxEchartsDirective, RightClickCard],\r\n providers: [provideEchartsCore({ echarts })],\r\n templateUrl: './pie-chart.html',\r\n styleUrl: './pie-chart.scss',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class PieChart {\r\n /* -------------------- Inputs -------------------- */\r\n\r\n @Input() config!: PieChartConfig;\r\n @Input() theme: any;\r\n @Input() events: string[] = [];\r\n @Input() cardOptions: any[] = [];\r\n\r\n /* -------------------- Outputs -------------------- */\r\n\r\n @Output() chartEvent = new EventEmitter<{ type: string; data: any }>();\r\n @Output() cardOptionClick = new EventEmitter<any>();\r\n\r\n /* -------------------- Local State -------------------- */\r\n\r\n chartOption!: EChartsCoreOption;\r\n private chartInstance!: ECharts;\r\n\r\n openCard = false;\r\n cardPosition = { x: 0, y: 0 };\r\n\r\n constructor(\r\n private chartService: Charts,\r\n private cdr: ChangeDetectorRef,\r\n ) {}\r\n\r\n /* -------------------- Lifecycle -------------------- */\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (!this.config) return;\r\n\r\n // If theme changes → dispose instance\r\n if (changes['theme'] && this.chartInstance) {\r\n this.chartInstance.dispose();\r\n }\r\n\r\n this.buildOption();\r\n }\r\n\r\n ngOnDestroy(): void {\r\n if (this.chartInstance) {\r\n this.chartInstance.off();\r\n this.chartInstance?.dispose();\r\n }\r\n }\r\n\r\n /* -------------------- Chart Init -------------------- */\r\n\r\n onChartInit(ec: ECharts) {\r\n this.chartInstance = ec;\r\n this.buildOption();\r\n this.bindEvents();\r\n }\r\n\r\n /* -------------------- Build Option -------------------- */\r\n\r\n private buildOption(): void {\r\n const total = this.config.data?.reduce((sum, item) => sum + item.value, 0);\r\n\r\n this.chartOption = {\r\n backgroundColor: this.config.backgroundColor ?? 'transparent',\r\n\r\n title: {\r\n show: this.config.showTitle ?? !!this.config.title,\r\n text: this.config.title,\r\n left: this.config.titlePosition ?? 'center',\r\n },\r\n\r\n tooltip: {\r\n show: this.config.showTooltip ?? true,\r\n trigger: 'item',\r\n backgroundColor: 'transparent', // remove default box\r\n borderWidth: 0,\r\n padding: 0,\r\n confine: true,\r\n formatter: (params: any) =>\r\n this.config.tooltipFormatter\r\n ? this.config.tooltipFormatter(params, this.config)\r\n : this.chartService.pieTooltipFormatter(params, this.config),\r\n },\r\n\r\n legend: { show: false },\r\n\r\n graphic:\r\n this.chartInstance && !this.config.hideLegend\r\n ? this.chartService.buildGraphicLegend(total, this.config, this.chartInstance)\r\n : undefined,\r\n\r\n series: [\r\n {\r\n type: 'pie',\r\n top: this.config.top ?? 0,\r\n bottom: this.config.bottom ?? 0,\r\n radius: this.config.radius ?? '60%',\r\n center: this.config.center ?? ['50%', '50%'],\r\n data: this.config.data,\r\n color: this.config.colors,\r\n\r\n label: {\r\n show: this.config.showLabel ?? false,\r\n position: this.config.labelPosition ?? 'outside',\r\n formatter: (params: any) => {\r\n const percent = ((params.value / total) * 100).toFixed(1);\r\n\r\n let text = params.name;\r\n if (this.config.showLabelValue) text += `\\n${params.value}`;\r\n if (this.config.showLabelPercentage) text += `\\n${percent}%`;\r\n\r\n return text;\r\n },\r\n },\r\n\r\n itemStyle: {\r\n borderRadius: this.config.borderRadius ?? 0,\r\n borderColor: this.config.borderColor ?? '#fff',\r\n borderWidth: this.config.borderWidth ?? 0,\r\n },\r\n\r\n emphasis:\r\n (this.config.enableHoverEffect ?? true)\r\n ? {\r\n itemStyle: {\r\n shadowBlur: 10,\r\n shadowOffsetX: 0,\r\n },\r\n }\r\n : undefined,\r\n },\r\n ],\r\n };\r\n }\r\n\r\n /* -------------------- Events -------------------- */\r\n\r\n private bindEvents(): void {\r\n if (!this.chartInstance) return;\r\n\r\n this.chartInstance.off();\r\n\r\n this.events.forEach((eventName) => {\r\n this.chartInstance.on(eventName, (params: any) => {\r\n if (eventName === 'contextmenu') {\r\n params.event?.event?.preventDefault();\r\n const container = this.chartInstance.getDom();\r\n const rect = container.getBoundingClientRect();\r\n\r\n this.cardPosition = {\r\n x: params.event.event.clientX - rect.left,\r\n y: params.event.event.clientY - rect.top,\r\n };\r\n\r\n this.openCard = true;\r\n this.cdr.markForCheck();\r\n }\r\n\r\n this.chartEvent.emit({ type: eventName, data: params });\r\n });\r\n });\r\n }\r\n\r\n onMenuClick(item: any) {\r\n this.cardOptionClick.emit(item);\r\n this.closeCard();\r\n }\r\n\r\n @HostListener('document:click')\r\n closeCard() {\r\n this.openCard = false;\r\n }\r\n}\r\n","<div\r\n echarts\r\n [options]=\"chartOption\"\r\n [theme]=\"theme\"\r\n class=\"chart-container\"\r\n (chartInit)=\"onChartInit($event)\"\r\n></div>\r\n\r\n@if (openCard) {\r\n <lib-right-click-card\r\n [cardOptions]=\"cardOptions\"\r\n [cardPosition]=\"cardPosition\"\r\n (contextMenuClick)=\"onMenuClick($event)\"\r\n >\r\n </lib-right-click-card>\r\n}\r\n","import {\r\n Component,\r\n Input,\r\n Output,\r\n EventEmitter,\r\n SimpleChanges,\r\n HostListener,\r\n ChangeDetectorRef,\r\n ChangeDetectionStrategy,\r\n} from '@angular/core';\r\nimport * as echarts from 'echarts/core';\r\nimport { ECharts, EChartsCoreOption } from 'echarts/core';\r\nimport { NgxEchartsDirective, provideEchartsCore } from 'ngx-echarts';\r\nimport { PieChart as EPieChart } from 'echarts/charts';\r\nimport {\r\n TitleComponent,\r\n TooltipComponent,\r\n LegendComponent,\r\n GraphicComponent,\r\n} from 'echarts/components';\r\nimport { CanvasRenderer } from 'echarts/renderers';\r\nimport { RightClickCard } from '../right-click-card';\r\nimport { DoughnutChartConfig } from '../../modal/charts-modal';\r\nimport { Charts } from '../../service/charts';\r\n\r\necharts.use([\r\n EPieChart,\r\n TitleComponent,\r\n TooltipComponent,\r\n LegendComponent,\r\n GraphicComponent,\r\n CanvasRenderer,\r\n]);\r\n\r\n@Component({\r\n selector: 'lib-doughnut-chart',\r\n imports: [NgxEchartsDirective, RightClickCard],\r\n providers: [provideEchartsCore({ echarts })],\r\n templateUrl: './doughnut-chart.html',\r\n styleUrl: './doughnut-chart.scss',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class DoughnutChart {\r\n @Input() config!: DoughnutChartConfig;\r\n @Input() theme: any;\r\n @Input() events: string[] = [];\r\n @Input() contextMenuOptions: any[] = [];\r\n @Input() showContextMenu: boolean = false;\r\n\r\n @Output() contextMenuClick = new EventEmitter<any>();\r\n @Output() chartEvent = new EventEmitter<{\r\n type: string;\r\n data: any;\r\n }>();\r\n cardPosition = { x: 0, y: 0 };\r\n openCard: boolean = false;\r\n chartOption!: EChartsCoreOption;\r\n private chartInstance!: ECharts;\r\n constructor(\r\n private chartService: Charts,\r\n private cdr: ChangeDetectorRef,\r\n ) {}\r\n /* ------------------ CONFIG CHANGE ------------------ */\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (!this.config) return;\r\n // If theme changes → dispose instance\r\n if (changes['theme'] && this.chartInstance) {\r\n this.chartInstance.dispose();\r\n }\r\n // Rebuild option when config changes\r\n this.buildOption();\r\n }\r\n // card open on right click\r\n /**\r\n * @description Determines whether menu click on\r\n * @author Shiva Kant\r\n * @param item\r\n */\r\n onMenuClick(item: any) {\r\n this.contextMenuClick.emit(item);\r\n\r\n this.closeCard();\r\n }\r\n\r\n /**\r\n * @description Hosts listener\r\n * @author Shiva Kant\r\n */\r\n @HostListener('document:click')\r\n closeCard() {\r\n this.openCard = false;\r\n }\r\n /* ------------------ OPTION BUILDER ------------------ */\r\n /**\r\n * @description Builds option\r\n * @author Shiva Kant\r\n * @param config\r\n * @returns option\r\n */\r\n buildOption() {\r\n const total = this.config.data?.reduce((sum, item) => sum + item.value, 0);\r\n\r\n const innerRadius = this.config.innerRadius ?? '70%';\r\n const outerRadius = this.config.outerRadius ?? '90%';\r\n\r\n this.chartOption = {\r\n backgroundColor: this.config.backgroundColor || 'transparent',\r\n\r\n title: {\r\n show: this.config.showTitle ?? !!this.config.title,\r\n text: this.config.title,\r\n left: this.config.titlePosition || 'center',\r\n },\r\n\r\n tooltip: {\r\n show: this.config.showTooltip ?? true,\r\n trigger: 'item',\r\n backgroundColor: 'transparent', // remove default box\r\n borderWidth: 0,\r\n padding: 0,\r\n confine: true,\r\n formatter: (params: any) =>\r\n this.config.tooltipFormatter\r\n ? this.config.tooltipFormatter(params, this.config)\r\n : this.chartService.pieTooltipFormatter(params, this.config),\r\n },\r\n\r\n legend: { show: false },\r\n graphic: this.chartInstance\r\n ? [\r\n ...(this.config.hideLegend\r\n ? []\r\n : this.chartService.buildGraphicLegend(total, this.config, this.chartInstance)),\r\n ...this.chartService.buildCenterGraphic(this.config, total),\r\n ]\r\n : undefined,\r\n series: [\r\n {\r\n type: 'pie',\r\n top: this.config.top ?? 0,\r\n bottom: this.config.bottom ?? 0,\r\n radius: [innerRadius, outerRadius],\r\n center: this.config.center ?? ['50%', '50%'],\r\n data: this.config.data,\r\n color: this.config.colors,\r\n\r\n label: {\r\n show: this.config.showLabel ?? false,\r\n position: this.config.labelPosition ?? 'outside',\r\n },\r\n\r\n itemStyle: {\r\n borderRadius: this.config.borderRadius ?? 8,\r\n borderColor: this.config.borderColor || '#fff',\r\n borderWidth: this.config.borderWidth ?? 2,\r\n },\r\n emphasis: {\r\n scale: this.config.emphasisScale,\r\n },\r\n // ...this.config.series\r\n },\r\n ],\r\n };\r\n }\r\n\r\n /* ------------------ INIT ------------------ */\r\n /**\r\n * @description Determines whether chart init on\r\n * @author Shiva Kant\r\n * @param ec\r\n * @param [container]\r\n */\r\n onChartInit(ec: ECharts) {\r\n this.chartInstance = ec;\r\n this.buildOption();\r\n this.bindEvents();\r\n }\r\n\r\n /* ------------------ EVENTS ------------------ */\r\n /**\r\n * @description Binds events\r\n * @author Shiva Kant\r\n * @returns\r\n */\r\n private bindEvents() {\r\n if (!this.chartInstance) return;\r\n\r\n this.chartInstance.off();\r\n\r\n this.events.forEach((eventName) => {\r\n this.chartInstance.on(eventName, (params: any) => {\r\n // Prevent browser context menu\r\n if (eventName === 'contextmenu' && params.event?.event) {\r\n params.event.event.preventDefault();\r\n const container = this.chartInstance.getDom();\r\n const rect = container.getBoundingClientRect();\r\n\r\n this.cardPosition = {\r\n x: params.event?.event.clientX - rect.left,\r\n y: params.event?.event.clientY - rect.top,\r\n };\r\n\r\n this.openCard = true;\r\n this.cdr.markForCheck();\r\n }\r\n\r\n this.chartEvent.emit({\r\n type: eventName,\r\n data: params,\r\n });\r\n });\r\n });\r\n }\r\n\r\n /* ------------------ DESTROY ------------------ */\r\n ngOnDestroy(): void {\r\n if (this.chartInstance) {\r\n this.chartInstance.off();\r\n this.chartInstance?.dispose();\r\n }\r\n }\r\n}\r\n","<div\r\n echarts\r\n [options]=\"chartOption\"\r\n [theme]=\"theme\"\r\n class=\"chart-container\"\r\n (chartInit)=\"onChartInit($event)\"\r\n></div>\r\n@if (openCard) {\r\n <lib-right-click-card\r\n [cardOptions]=\"contextMenuOptions\"\r\n (contextMenuClick)=\"onMenuClick($event)\"\r\n [cardPosition]=\"cardPosition\"\r\n ></lib-right-click-card>\r\n}\r\n","import { Component, Input } from '@angular/core';\r\nimport * as echarts from 'echarts/core';\r\nimport { LineChart } from 'echarts/charts';\r\nimport { GridComponent, TooltipComponent, LegendComponent } from 'echarts/components';\r\nimport { CanvasRenderer } from 'echarts/renderers';\r\nimport { EChartsCoreOption } from 'echarts/core';\r\nimport { SimpleChanges } from '@angular/core';\r\nimport { NgxEchartsDirective, provideEchartsCore } from 'ngx-echarts';\r\necharts.use([LineChart, GridComponent, TooltipComponent, LegendComponent, CanvasRenderer]);\r\n@Component({\r\n selector: 'lib-stacked-area-chart',\r\n imports: [NgxEchartsDirective],\r\n providers: [provideEchartsCore({ echarts })],\r\n templateUrl: './stacked-area-chart.html',\r\n styleUrl: './stacked-area-chart.scss',\r\n})\r\nexport class StackedAreaChart {\r\n @Input() data: any;\r\n @Input() title: string = 'Protocol Traffic Overview';\r\n\r\n chartOption!: EChartsCoreOption;\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (changes['data']) {\r\n this.buildChart();\r\n }\r\n }\r\n\r\n buildChart() {\r\n this.chartOption = {\r\n tooltip: {\r\n trigger: 'axis',\r\n },\r\n legend: {\r\n data: this.data.series.map((s: any) => s.name),\r\n top: 10,\r\n },\r\n grid: {\r\n left: '3%',\r\n right: '4%',\r\n bottom: '3%',\r\n containLabel: true,\r\n },\r\n xAxis: {\r\n type: 'category',\r\n boundaryGap: false,\r\n data: this.data.time,\r\n },\r\n yAxis: {\r\n type: 'value',\r\n },\r\n series: this.data.series.map((s: any) => ({\r\n name: s.name,\r\n type: s.type??'line',\r\n smooth: true,\r\n data: s.values,\r\n areaStyle: {\r\n opacity: 0.15,\r\n },\r\n })),\r\n };\r\n }\r\n}\r\n","<div\r\n echarts\r\n class=\"chart-container\"\r\n [options]=\"chartOption\"\r\n ></div>","import { Component, Input, SimpleChanges } from '@angular/core';\r\nimport { ECharts, EChartsCoreOption } from 'echarts';\r\nimport { NgxEchartsDirective, provideEchartsCore } from 'ngx-echarts';\r\nimport * as echarts from 'echarts/core';\r\nimport { TooltipComponent, GridComponent, LegendComponent } from 'echarts/components';\r\nimport { CanvasRenderer } from 'echarts/renderers';\r\nimport { LineChart } from 'echarts/charts';\r\nimport { AreaChartConfig } from '../../modal/charts-modal';\r\necharts.use([LineChart, GridComponent, TooltipComponent, LegendComponent, CanvasRenderer]);\r\n\r\n@Component({\r\n selector: 'lib-area-chart',\r\n imports: [NgxEchartsDirective],\r\n providers: [provideEchartsCore({ echarts })],\r\n templateUrl: './area-chart.html',\r\n styleUrl: './area-chart.scss',\r\n})\r\nexport class AreaChart {\r\n @Input() config!: AreaChartConfig;\r\n @Input() theme: any;\r\n\r\n private chartInstance!: ECharts;\r\n\r\n chartOption!: EChartsCoreOption;\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (changes['theme'] && !changes['theme'].firstChange) {\r\n // Dispose and let ngx-echarts recreate chart with new theme\r\n if (this.chartInstance) {\r\n this.chartInstance.dispose();\r\n }\r\n }\r\n if (this.config) {\r\n this.buildOption();\r\n }\r\n }\r\n onChartInit(ec: ECharts) {\r\n this.chartInstance = ec;\r\n }\r\n buildOption() {\r\n this.chartOption = {\r\n backgroundColor: this.config.backgroundColor || 'transparent',\r\n\r\n tooltip: {\r\n show: this.config.showTooltip ?? true,\r\n trigger: 'axis',\r\n },\r\n legned: true,\r\n grid: {\r\n left: this.config.grid?.left ?? 20,\r\n right: this.config.grid?.right ?? 20,\r\n top: this.config.grid?.top ?? 20,\r\n bottom: this.config.grid?.bottom ?? 20,\r\n containLabel: true,\r\n },\r\n\r\n xAxis: {\r\n type: 'category',\r\n boundaryGap: false,\r\n data: this.config.xAxisData,\r\n show: this.config.showXAxis ?? true,\r\n axisLine: { show: this.config.showXAxisLine ?? true },\r\n axisTick: { show: this.config.showXAxisTick ?? true },\r\n axisLabel: { show: this.config.showXAxisLabel ?? true },\r\n },\r\n\r\n yAxis: {\r\n type: 'value',\r\n show: this.config.showYAxis ?? true,\r\n axisLine: { show: this.config.showYAxisLine ?? true },\r\n axisTick: { show: this.config.showYAxisTick ?? true },\r\n axisLabel: { show: this.config.showYAxisLabel ?? true },\r\n splitLine: { show: this.config.showGridLines ?? true },\r\n },\r\n\r\n series: [\r\n {\r\n type: 'line',\r\n data: this.config.seriesData,\r\n smooth: this.config.smooth ?? true,\r\n showSymbol: this.config.showSymbol ?? false,\r\n\r\n lineStyle: {\r\n width: this.config.lineWidth ?? 2,\r\n color: this.config.lineColor || '#16a34a',\r\n },\r\n\r\n itemStyle: {\r\n color: this.config.lineColor || '#16a34a',\r\n },\r\n\r\n areaStyle: {\r\n color: this.config.areaColor || 'rgba(22,163,74,0.25)',\r\n ...this.config.areaColor,\r\n },\r\n },\r\n ],\r\n };\r\n }\r\n ngOnDestroy(): void {\r\n if (this.chartInstance) {\r\n this.chartInstance.dispose();\r\n }\r\n }\r\n}\r\n","<div\r\n echarts\r\n [options]=\"chartOption\"\r\n [theme]=\"theme\"\r\n \r\n class=\"chart-container\"\r\n>\r\n</div>\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.Charts","EBarChart","EPieChart"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"cats-charts.mjs","sources":["../../../projects/charts-lib/src/lib/service/charts.ts","../../../projects/charts-lib/src/lib/components/line-chart/line-chart.ts","../../../projects/charts-lib/src/lib/components/line-chart/line-chart.html","../../../projects/charts-lib/src/lib/components/right-click-card/right-click-card.ts","../../../projects/charts-lib/src/lib/components/right-click-card/right-click-card.html","../../../projects/charts-lib/src/lib/components/bar-chart/bar-chart.ts","../../../projects/charts-lib/src/lib/components/bar-chart/bar-chart.html","../../../projects/charts-lib/src/lib/components/pie-chart/pie-chart.ts","../../../projects/charts-lib/src/lib/components/pie-chart/pie-chart.html","../../../projects/charts-lib/src/lib/components/doughnut-chart/doughnut-chart.ts","../../../projects/charts-lib/src/lib/components/doughnut-chart/doughnut-chart.html","../../../projects/charts-lib/src/lib/components/stacked-area-chart/stacked-area-chart.ts","../../../projects/charts-lib/src/lib/components/stacked-area-chart/stacked-area-chart.html","../../../projects/charts-lib/src/lib/components/area-chart/area-chart.ts","../../../projects/charts-lib/src/lib/components/area-chart/area-chart.html","../../../projects/charts-lib/src/cats-charts.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\r\nimport * as echarts from 'echarts/core';\r\nimport { ECharts } from 'echarts/core';\r\nimport { DoughnutChartConfig, PieChartConfig } from '../modal/charts-modal';\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class Charts {\r\n legendSelected: Record<string, boolean> = {};\r\n\r\n buildGraphicLegend(total: number, config: any, chartInstance: any) {\r\n const pillHeight = 28;\r\n const spacing = 14;\r\n const indicatorWidth = 12;\r\n const horizontalPadding = 8;\r\n const gapAfterIndicator = 4;\r\n const font = '14px sans-serif';\r\n\r\n const isVertical = config.legendDirection === 'vertical';\r\n\r\n // 🔹 Initialize selected state once\r\n const selectedMap = chartInstance?.getOption()?.legend?.[0]?.selected || {};\r\n\r\n const pills = config.data.map((item: any, index: number) => {\r\n const color =\r\n config.colors?.[index] ?? ['#3b82f6', '#f59e0b', '#16a34a', '#ef4444'][index % 4];\r\n\r\n const nameRect = echarts.format.getTextRect(item.name, font);\r\n const valueRect = echarts.format.getTextRect(String(item.value), font);\r\n\r\n const pillWidth =\r\n horizontalPadding +\r\n indicatorWidth +\r\n gapAfterIndicator +\r\n nameRect.width +\r\n 8 +\r\n valueRect.width +\r\n horizontalPadding;\r\n return { item, color, pillWidth };\r\n });\r\n\r\n const totalWidth = isVertical\r\n ? Math.max(...pills.map((p: any) => p.pillWidth))\r\n : pills.reduce((sum: any, p: any) => sum + p.pillWidth, 0) + spacing * (pills.length - 1);\r\n\r\n const totalHeight = isVertical\r\n ? pills.length * pillHeight + spacing * (pills.length - 1)\r\n : pillHeight;\r\n\r\n let currentOffset = 0;\r\n\r\n // 🔹 Position logic\r\n const positionConfig: any = {};\r\n switch (config.legendPosition) {\r\n case 'top':\r\n positionConfig.top = 20;\r\n break;\r\n case 'bottom':\r\n positionConfig.bottom = 20;\r\n break;\r\n case 'left':\r\n positionConfig.left = 20;\r\n break;\r\n case 'right':\r\n positionConfig.right = 20;\r\n break;\r\n }\r\n\r\n // ALIGNMENT (Cross-Axis)\r\n if (config.legendPosition === 'top' || config.legendPosition === 'bottom') {\r\n // Horizontal area → align horizontally\r\n if (config.legendAlign === 'center') {\r\n positionConfig.left = 'center';\r\n } else if (config.legendAlign === 'right') {\r\n positionConfig.right = 20;\r\n } else {\r\n positionConfig.left = 20;\r\n }\r\n } else {\r\n // Vertical area → align vertically\r\n if (config.legendAlign === 'center') {\r\n positionConfig.top = 'middle';\r\n } else if (config.legendAlign === 'right') {\r\n positionConfig.bottom = 20;\r\n } else {\r\n positionConfig.top = 20;\r\n }\r\n }\r\n\r\n return [\r\n {\r\n id: 'customLegend', // IMPORTANT\r\n type: 'group',\r\n ...positionConfig,\r\n width: totalWidth,\r\n height: totalHeight,\r\n\r\n children: pills.map((pill: any) => {\r\n const offset = currentOffset;\r\n currentOffset += (isVertical ? pillHeight : pill.pillWidth) + spacing;\r\n\r\n const isSelected = selectedMap[pill.item.name] !== false;\r\n\r\n return {\r\n type: 'group',\r\n top: isVertical ? offset : 0,\r\n left: isVertical ? 0 : offset,\r\n width: pill.pillWidth,\r\n height: pillHeight,\r\n cursor: 'pointer',\r\n\r\n onclick: () => {\r\n chartInstance.dispatchAction({\r\n type: 'legendToggleSelect',\r\n name: pill.item.name,\r\n });\r\n chartInstance.setOption({\r\n graphic: {\r\n id: 'customLegend',\r\n // $action: 'replace',\r\n ...this.buildGraphicLegend(total, config, chartInstance)[0],\r\n },\r\n });\r\n },\r\n children: [\r\n // 🔹 Pill Background\r\n\r\n {\r\n type: 'rect',\r\n shape: {\r\n width: pill.pillWidth,\r\n height: pillHeight,\r\n r: 4,\r\n },\r\n style: {\r\n fill: isSelected ? this.hexToRgba(pill.color, 0.08) : '#F2F2F7',\r\n stroke: isSelected ? pill.color : '#D1D1D6',\r\n lineWidth: 1,\r\n },\r\n },\r\n\r\n // 🔹 Color Indicator\r\n {\r\n type: 'rect',\r\n shape: {\r\n width: indicatorWidth,\r\n height: indicatorWidth,\r\n r: 2,\r\n },\r\n left: horizontalPadding,\r\n top: (pillHeight - indicatorWidth) / 2,\r\n style: {\r\n fill: isSelected ? pill.color : '#C7C7CC',\r\n },\r\n },\r\n\r\n // 🔹 Label\r\n {\r\n type: 'text',\r\n left: horizontalPadding + indicatorWidth + gapAfterIndicator,\r\n top: (pillHeight - indicatorWidth) / 2,\r\n style: {\r\n text: pill.item.name,\r\n fontSize: 14,\r\n fill: isSelected ? '#1C1C1E' : '#8E8E93',\r\n textVerticalAlign: 'middle',\r\n },\r\n },\r\n\r\n // 🔹 value text\r\n {\r\n type: 'text',\r\n right: horizontalPadding,\r\n top: (pillHeight - indicatorWidth) / 2,\r\n style: {\r\n text: pill.item.value,\r\n fontSize: 14,\r\n fontWeight: 500,\r\n fill: isSelected ? '#1C1C1E' : '#8E8E93',\r\n textAlign: 'right',\r\n textVerticalAlign: 'middle',\r\n },\r\n },\r\n ],\r\n };\r\n }),\r\n },\r\n ];\r\n }\r\n buildCenterGraphic(config: any, total: number) {\r\n if (!config?.centerLabel?.show) return [];\r\n\r\n const centerConfig = config.centerLabel;\r\n const titleFont = centerConfig.fontSizeTitle ?? 14;\r\n const valueFont = centerConfig.fontSizeValue ?? 22;\r\n\r\n // Use external top if provided, default to 'center'\r\n // config.bottom\r\n const groupTop = centerConfig.top ?? 'center';\r\n\r\n // Offsets relative to groupTop\r\n const titleOffset = -valueFont / 2;\r\n const valueOffset = titleFont / 2;\r\n\r\n return [\r\n {\r\n id: 'centerLabel',\r\n type: 'group',\r\n left: 'center',\r\n top: groupTop,\r\n silent: true,\r\n children: [\r\n {\r\n type: 'text',\r\n style: {\r\n text: centerConfig.title ?? '',\r\n fontSize: titleFont,\r\n fill: centerConfig.titleColor ?? '#666',\r\n textAlign: 'center',\r\n textBaseline: 'middle',\r\n },\r\n top: titleOffset, // relative to groupTop\r\n },\r\n {\r\n type: 'text',\r\n style: {\r\n text: centerConfig.value ?? '',\r\n fontSize: valueFont,\r\n fontWeight: 'bold',\r\n fill: centerConfig.valueColor ?? '#000',\r\n textAlign: 'center',\r\n textBaseline: 'middle',\r\n },\r\n top: valueOffset, // relative to groupTop\r\n },\r\n ],\r\n },\r\n ];\r\n }\r\n hexToRgba(hex: string, alpha: number) {\r\n const r = parseInt(hex.slice(1, 3), 16);\r\n const g = parseInt(hex.slice(3, 5), 16);\r\n const b = parseInt(hex.slice(5, 7), 16);\r\n\r\n return `rgba(${r}, ${g}, ${b}, ${alpha})`;\r\n }\r\n pieTooltipFormatter(params: any, config: PieChartConfig | DoughnutChartConfig) {\r\n const color = params.color;\r\n const name = params.name;\r\n const value = params.value;\r\n const percent = params.percent;\r\n\r\n return `<div style=\"\r\n position: relative;\r\n background-color: #fff;\r\n padding: 8px 16px;\r\n border-radius: 8px;\r\n box-shadow: 0 4px 16px rgba(0,0,0,0.08);\r\n display: flex;\r\n align-items: center;\r\n gap: 10px;\r\n \">\r\n <div style=\"\r\n position: absolute;\r\n left: -10px;\r\n top: 10px;\r\n width: 0;\r\n height: 0;\r\n border-top: 10px solid transparent;\r\n border-bottom: 10px solid transparent;\r\n border-right: 10px solid #ffffff;\r\n \"></div>\r\n\r\n <span style=\"\r\n width: 14px;\r\n height: 14px;\r\n background: ${color};\r\n border-radius: 3px;\r\n display: inline-block;\r\n \"></span>\r\n\r\n <span style=\"\r\n font-size: 12px;\r\n color: #434A51;\r\n \">\r\n ${name}: <b style=\"color:#111; font-weight:600;\">${value}</b> ${config.showTooltipPercent ? '(' + percent + '%)' : ''}\r\n </span>\r\n </div>\r\n `;\r\n }\r\n barLineTooltipFormatter(params: any) {\r\n if (!params || !params.length) return '';\r\n\r\n const date = params[0].axisValueLabel || params[0].name;\r\n\r\n let total = 0;\r\n let rows = '';\r\n\r\n params.forEach((item: any) => {\r\n const color = item.color;\r\n const name = item.seriesName;\r\n const value = item.value ?? 0;\r\n\r\n total += Number(value);\r\n\r\n rows += `\r\n <div style=\"\r\n display:flex;\r\n align-items:center;\r\n gap:8px;\r\n font-size:13px;\r\n color:#434A51;\r\n margin-top:6px;\r\n \">\r\n <span style=\"\r\n width:14px;\r\n height:14px;\r\n background:${color};\r\n border-radius:3px;\r\n display:inline-block;\r\n \"></span>\r\n\r\n <span>${name}: <b style=\"color:#111;font-weight:600;\">${value}</b></span>\r\n </div>\r\n `;\r\n });\r\n\r\n return `\r\n <div style=\"\r\n background:#ffffff;\r\n padding:16px;\r\n border-radius: 8px;\r\n background-color: #ffffff;\r\n border: 1px solid #f0f0f0;\r\n box-shadow: 0px 10.55px 23.39px -3.52px #0a0d1214;\r\n min-width:190px;\r\n font-family: Inter, sans-serif;\r\n \">\r\n <div style=\"\r\n position: absolute;\r\n left: -10px;\r\n top: 50%;\r\n width: 0;\r\n height: 0;\r\n border-top: 10px solid transparent;\r\n border-bottom: 10px solid transparent;\r\n border-right: 10px solid #ffffff;\r\n \"></div>\r\n <div style=\"\r\n font-size:15px;\r\n font-weight:600;\r\n color:#111;\r\n margin-bottom:2px;\r\n border-bottom: 1px #F0F0F0 ;\r\n \">\r\n ${date}\r\n </div>\r\n\r\n ${rows}\r\n\r\n <div style=\"\r\n font-size:13px;\r\n color:#434A51;\r\n margin-top:10px;\r\n \">\r\n Total: <b style=\"color:#111;font-weight:600;\">${total}</b>\r\n </div>\r\n\r\n </div>\r\n `;\r\n }\r\n}\r\n // <div style=\"\r\n // font-size:13px;\r\n // color:#8B9096;\r\n // margin-bottom:10px;\r\n // \">\r\n // Wednesday\r\n // </div>","import {\r\n Component,\r\n Input,\r\n Output,\r\n EventEmitter,\r\n OnChanges,\r\n OnDestroy,\r\n SimpleChanges,\r\n ChangeDetectionStrategy,\r\n} from '@angular/core';\r\n\r\nimport * as echarts from 'echarts/core';\r\nimport { ECharts, EChartsCoreOption } from 'echarts/core';\r\nimport { NgxEchartsDirective, provideEchartsCore } from 'ngx-echarts';\r\n\r\nimport { LineChart } from 'echarts/charts';\r\nimport {\r\n GridComponent,\r\n TooltipComponent,\r\n LegendComponent,\r\n TitleComponent,\r\n} from 'echarts/components';\r\nimport { CanvasRenderer } from 'echarts/renderers';\r\nimport { LineChartConfig } from '../../modal/charts-modal';\r\nimport { Charts } from '../../service/charts';\r\n\r\necharts.use([\r\n LineChart,\r\n GridComponent,\r\n TooltipComponent,\r\n LegendComponent,\r\n CanvasRenderer,\r\n TitleComponent,\r\n]);\r\n\r\n@Component({\r\n selector: 'lib-line-chart',\r\n standalone: true,\r\n imports: [NgxEchartsDirective],\r\n providers: [provideEchartsCore({ echarts })],\r\n templateUrl: './line-chart.html',\r\n styleUrls: ['./line-chart.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class LinesChart {\r\n @Input() config!: LineChartConfig;\r\n @Input() theme: any;\r\n @Input() events: string[] = [];\r\n\r\n @Output() chartEvent = new EventEmitter<{\r\n type: string;\r\n data: any;\r\n }>();\r\n\r\n chartOption: EChartsCoreOption = {};\r\n private chartInstance!: ECharts;\r\n constructor(private chartService: Charts) {}\r\n /* ------------------ CHANGE HANDLING ------------------ */\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (!this.config) return;\r\n\r\n this.chartOption = this.buildOption(this.config);\r\n\r\n if (this.chartInstance) {\r\n this.chartInstance.setOption(this.chartOption, true);\r\n }\r\n }\r\n\r\n /* ------------------ OPTION BUILDER ------------------ */\r\n private buildOption(config: LineChartConfig): EChartsCoreOption {\r\n const total = config.series?.reduce((seriesSum, series) => {\r\n const dataSum = series.data?.reduce((sum, value) => sum + value, 0) || 0;\r\n return seriesSum + dataSum;\r\n }, 0);\r\n return {\r\n backgroundColor: config.backgroundColor || 'transparent',\r\n\r\n title: {\r\n show: config.showTitle ?? !!config.title,\r\n text: config.title,\r\n left: 'center',\r\n },\r\n\r\n tooltip: {\r\n trigger: 'axis',\r\n padding:0,\r\n formatter: (params: any) => this.chartService.barLineTooltipFormatter(params),\r\n },\r\n\r\n legend: {\r\n show: false,\r\n },\r\n // graphic: this.chartService?.buildGraphicLegend(total, this.config, this.chartInstance),\r\n\r\n grid: this.config.isTrendChart\r\n ? { left: 0, right: 0, top: 0, bottom: 0 }\r\n : {\r\n left: config.grid?.left ?? '3%',\r\n right: config.grid?.right ?? '4%',\r\n bottom: config.grid?.bottom ?? '3%',\r\n top: config.grid?.top ?? '10%',\r\n containLabel: true,\r\n },\r\n\r\n xAxis: {\r\n show: !this.config.isTrendChart,\r\n type: 'category',\r\n boundaryGap: false,\r\n data: config.xAxisData,\r\n axisLine: {\r\n show: this.config.showXAxisLine ?? true,\r\n },\r\n ...config.xAxis,\r\n },\r\n\r\n yAxis: {\r\n show: !this.config.isTrendChart,\r\n type: 'value',\r\n boundaryGap: this.config.isTrendChart ? [0.2] : undefined,\r\n\r\n axisLine: {\r\n show: this.config.showYAxisLine ?? true,\r\n },\r\n ...config.yAxis,\r\n },\r\n\r\n series: config.series.map((s) => {\r\n const lineColor = s.color || '#3b82f6';\r\n return {\r\n name: s.name,\r\n type: 'line',\r\n smooth: s.smooth ?? true,\r\n data: s.data,\r\n areaStyle: s.area\r\n ? {\r\n color: {\r\n type: 'linear',\r\n x: 0,\r\n y: 0,\r\n x2: 0,\r\n y2: 1,\r\n colorStops: [\r\n {\r\n offset: 0,\r\n color: lineColor,\r\n },\r\n {\r\n offset: 1,\r\n color: this.chartService.hexToRgba(lineColor, 0),\r\n },\r\n ],\r\n },\r\n opacity: 0.4,\r\n }\r\n : undefined,\r\n color: s.color,\r\n symbol: s.symbol,\r\n };\r\n }),\r\n };\r\n }\r\n\r\n /* ------------------ INIT ------------------ */\r\n onChartInit(ec: ECharts) {\r\n this.chartInstance = ec;\r\n this.bindEvents();\r\n }\r\n\r\n /* ------------------ EVENTS ------------------ */\r\n private bindEvents() {\r\n if (!this.chartInstance) return;\r\n\r\n this.chartInstance.off();\r\n\r\n this.events.forEach((eventName) => {\r\n this.chartInstance.on(eventName, (params: any) => {\r\n if (eventName === 'contextmenu' && params.event?.event) {\r\n params.event.event.preventDefault();\r\n }\r\n\r\n this.chartEvent.emit({\r\n type: eventName,\r\n data: params,\r\n });\r\n });\r\n });\r\n }\r\n\r\n /* ------------------ DESTROY ------------------ */\r\n ngOnDestroy(): void {\r\n this.chartInstance?.dispose();\r\n }\r\n}\r\n","\r\n<div\r\n echarts\r\n [options]=\"chartOption\"\r\n [theme]=\"theme\"\r\n (chartInit)=\"onChartInit($event)\"\r\n class=\"chart-container\">\r\n</div>\r\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'lib-right-click-card',\r\n imports: [],\r\n templateUrl: './right-click-card.html',\r\n styleUrl: './right-click-card.scss',\r\n})\r\nexport class RightClickCard {\r\n @Input() cardPosition: any;\r\n @Input() cardOptions: any;\r\n @Output() contextMenuClick = new EventEmitter<any>();\r\n \r\n onMenuClick(item: any) {\r\n this.contextMenuClick.emit(item);\r\n\r\n // this.closeMenu();\r\n }\r\n}\r\n","<div\r\n class=\"context-card\"\r\n [style.left.px]=\"cardPosition.x\"\r\n [style.top.px]=\"cardPosition.y\"\r\n (click)=\"$event.stopPropagation()\"\r\n>\r\n @for (item of cardOptions; track item.value) {\r\n <div class=\"context-item\" (click)=\"onMenuClick(item)\">\r\n @if (item.icon) {\r\n <img [src]=\"item.icon\" alt=\"icon\" />\r\n }\r\n\r\n <span>{{ item.label }}</span>\r\n </div>\r\n }\r\n</div>\r\n","import {\r\n Component,\r\n Input,\r\n Output,\r\n EventEmitter,\r\n SimpleChanges,\r\n HostListener,\r\n ChangeDetectorRef,\r\n ChangeDetectionStrategy,\r\n} from '@angular/core';\r\n\r\nimport * as echarts from 'echarts/core';\r\nimport { ECharts, EChartsCoreOption } from 'echarts/core';\r\n\r\nimport { NgxEchartsDirective, provideEchartsCore } from 'ngx-echarts';\r\nimport { BarChart as EBarChart } from 'echarts/charts';\r\n\r\nimport {\r\n TitleComponent,\r\n TooltipComponent,\r\n GridComponent,\r\n LegendComponent,\r\n DatasetComponent,\r\n} from 'echarts/components';\r\n\r\nimport { CanvasRenderer } from 'echarts/renderers';\r\nimport { RightClickCard } from '../right-click-card';\r\nimport { BarChartConfig } from '../../modal/charts-modal';\r\nimport { Charts } from '../../service/charts';\r\n\r\necharts.use([\r\n EBarChart,\r\n TitleComponent,\r\n TooltipComponent,\r\n GridComponent,\r\n LegendComponent,\r\n DatasetComponent,\r\n CanvasRenderer,\r\n]);\r\n\r\n@Component({\r\n selector: 'lib-bar-chart',\r\n imports: [NgxEchartsDirective, RightClickCard],\r\n providers: [provideEchartsCore({ echarts })],\r\n templateUrl: './bar-chart.html',\r\n styleUrl: './bar-chart.scss',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class BarChart {\r\n @Input() config!: BarChartConfig;\r\n @Input() theme: any;\r\n @Input() events: string[] = [];\r\n @Input() contextMenuOptions: any[] = [];\r\n @Input() showContextMenu: boolean = false;\r\n\r\n @Output() contextMenuClick = new EventEmitter<any>();\r\n\r\n @Output() chartEvent = new EventEmitter<{\r\n type: string;\r\n data: any;\r\n }>();\r\n\r\n chartOption!: EChartsCoreOption;\r\n\r\n private chartInstance!: ECharts;\r\n\r\n cardPosition = { x: 0, y: 0 };\r\n openCard = false;\r\n constructor(\r\n private chartService: Charts,\r\n private cdr: ChangeDetectorRef,\r\n ) {}\r\n\r\n /* ------------------ CONFIG CHANGE ------------------ */\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (!this.config) return;\r\n\r\n if (changes['theme'] && this.chartInstance) {\r\n this.chartInstance.dispose();\r\n }\r\n\r\n this.buildOption();\r\n }\r\n\r\n /* ------------------ OPTION BUILDER ------------------ */\r\n\r\n buildOption() {\r\n\r\n // Common chart option\r\n this.chartOption = {\r\n backgroundColor: this.config.backgroundColor || 'transparent',\r\n\r\n title: {\r\n show: this.config.showTitle ?? !!this.config.title,\r\n text: this.config.title,\r\n left: this.config.titlePosition || 'center',\r\n },\r\n\r\n // tooltip: {\r\n // show: this.config.showTooltip ?? true,\r\n // trigger: 'axis',\r\n // },\r\n tooltip: {\r\n trigger: 'axis',\r\n backgroundColor: 'transparent', // remove default box\r\n borderWidth: 0,\r\n padding: 0,\r\n confine: true,\r\n formatter: (params: any) => this.chartService.barLineTooltipFormatter(params),\r\n },\r\n legends: {\r\n show: false,\r\n },\r\n grid: {\r\n left: this.config.gridLeft ?? '',\r\n right: this.config.gridRight ?? '',\r\n bottom: this.config.gridBottom ?? '',\r\n containLabel: true,\r\n },\r\n\r\n xAxis: {\r\n type: 'category',\r\n data: this.config.categories,\r\n axisLine: { show: this.config.showXAxisLine ?? true },\r\n ...this.config.xAxis,\r\n },\r\n\r\n yAxis: {\r\n type: 'value',\r\n axisLine: { show: this.config.showYAxisLine ?? true },\r\n ...this.config.yAxis,\r\n },\r\n\r\n // Handle both single-series and multi-series dynamically\r\n series: (() => {\r\n if (this.config.series && this.config.series.length) {\r\n // Multi-series (stacked or grouped)\r\n return this.config.series.map((s: any) => ({\r\n type: this.config.type ?? 'bar',\r\n name: s.name,\r\n data: s.data,\r\n stack: s.stack ?? undefined,\r\n barWidth: this.config.barWidth ?? '60%',\r\n color: s.color || this.config.colors,\r\n label: {\r\n show: this.config.showLabel ?? false,\r\n position: this.config.labelPosition ?? 'top',\r\n },\r\n itemStyle: {\r\n borderRadius: this.config.borderRadius ?? 0,\r\n },\r\n emphasis: {\r\n scale: false,\r\n },\r\n ...s,\r\n }));\r\n } else if (this.config.data) {\r\n // Single-series\r\n return [\r\n {\r\n type: this.config.type ?? 'bar',\r\n name: this.config.seriesName,\r\n data: this.config.data,\r\n barWidth: this.config.barWidth ?? 20,\r\n color: this.config.colors,\r\n label: {\r\n show: this.config.showLabel ?? false,\r\n position: this.config.labelPosition ?? 'top',\r\n },\r\n itemStyle: {\r\n borderRadius: this.config.borderRadius ?? 0,\r\n },\r\n emphasis: {\r\n focus: 'series',\r\n show: false,\r\n },\r\n // ...this.config,\r\n },\r\n ];\r\n } else {\r\n return [];\r\n }\r\n })(),\r\n };\r\n }\r\n\r\n /* ------------------ INIT ------------------ */\r\n\r\n onChartInit(ec: ECharts) {\r\n this.chartInstance = ec;\r\n this.buildOption();\r\n this.bindEvents();\r\n }\r\n\r\n /* ------------------ EVENTS ------------------ */\r\n\r\n private bindEvents() {\r\n if (!this.chartInstance) return;\r\n\r\n this.chartInstance.off();\r\n\r\n this.events.forEach((eventName) => {\r\n this.chartInstance.on(eventName, (params: any) => {\r\n if (eventName === 'contextmenu' && params.event?.event) {\r\n params.event.event.preventDefault();\r\n\r\n const container = this.chartInstance.getDom();\r\n const rect = container.getBoundingClientRect();\r\n\r\n this.cardPosition = {\r\n x: params.event.event.clientX - rect.left,\r\n y: params.event.event.clientY - rect.top,\r\n };\r\n\r\n this.openCard = true;\r\n this.cdr.markForCheck();\r\n }\r\n\r\n this.chartEvent.emit({\r\n type: eventName,\r\n data: params,\r\n });\r\n });\r\n });\r\n }\r\n\r\n /* ------------------ CONTEXT MENU ------------------ */\r\n\r\n onMenuClick(item: any) {\r\n this.contextMenuClick.emit(item);\r\n this.closeCard();\r\n }\r\n\r\n @HostListener('document:click')\r\n closeCard() {\r\n this.openCard = false;\r\n }\r\n\r\n /* ------------------ DESTROY ------------------ */\r\n\r\n ngOnDestroy(): void {\r\n if (this.chartInstance) {\r\n this.chartInstance.off();\r\n this.chartInstance.dispose();\r\n }\r\n }\r\n}\r\n","<div\r\n echarts\r\n [options]=\"chartOption\"\r\n [theme]=\"theme\"\r\n class=\"chart-container\"\r\n (chartInit)=\"onChartInit($event)\"\r\n>\r\n</div>\r\n\r\n@if (openCard) {\r\n <lib-right-click-card\r\n [cardOptions]=\"contextMenuOptions\"\r\n (contextMenuClick)=\"onMenuClick($event)\"\r\n [cardPosition]=\"cardPosition\"\r\n ></lib-right-click-card>\r\n}","import {\r\n Component,\r\n Input,\r\n Output,\r\n EventEmitter,\r\n SimpleChanges,\r\n HostListener,\r\n ChangeDetectorRef,\r\n ChangeDetectionStrategy,\r\n} from '@angular/core';\r\n\r\nimport * as echarts from 'echarts/core';\r\nimport { ECharts, EChartsCoreOption } from 'echarts/core';\r\nimport { NgxEchartsDirective, provideEchartsCore } from 'ngx-echarts';\r\nimport { PieChart as EPieChart } from 'echarts/charts';\r\nimport { TitleComponent, TooltipComponent, LegendComponent } from 'echarts/components';\r\nimport { CanvasRenderer } from 'echarts/renderers';\r\nimport { RightClickCard } from '../right-click-card';\r\nimport { PieChartConfig } from '../../modal/charts-modal';\r\nimport { Charts } from '../../service/charts';\r\n\r\necharts.use([EPieChart, TitleComponent, TooltipComponent, LegendComponent, CanvasRenderer]);\r\n@Component({\r\n selector: 'lib-pie-chart',\r\n imports: [NgxEchartsDirective, RightClickCard],\r\n providers: [provideEchartsCore({ echarts })],\r\n templateUrl: './pie-chart.html',\r\n styleUrl: './pie-chart.scss',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class PieChart {\r\n /* -------------------- Inputs -------------------- */\r\n\r\n @Input() config!: PieChartConfig;\r\n @Input() theme: any;\r\n @Input() events: string[] = [];\r\n @Input() cardOptions: any[] = [];\r\n\r\n /* -------------------- Outputs -------------------- */\r\n\r\n @Output() chartEvent = new EventEmitter<{ type: string; data: any }>();\r\n @Output() cardOptionClick = new EventEmitter<any>();\r\n\r\n /* -------------------- Local State -------------------- */\r\n\r\n chartOption!: EChartsCoreOption;\r\n private chartInstance!: ECharts;\r\n\r\n openCard = false;\r\n cardPosition = { x: 0, y: 0 };\r\n\r\n constructor(\r\n private chartService: Charts,\r\n private cdr: ChangeDetectorRef,\r\n ) {}\r\n\r\n /* -------------------- Lifecycle -------------------- */\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (!this.config) return;\r\n\r\n // If theme changes → dispose instance\r\n if (changes['theme'] && this.chartInstance) {\r\n this.chartInstance.dispose();\r\n }\r\n\r\n this.buildOption();\r\n }\r\n\r\n ngOnDestroy(): void {\r\n if (this.chartInstance) {\r\n this.chartInstance.off();\r\n this.chartInstance?.dispose();\r\n }\r\n }\r\n\r\n /* -------------------- Chart Init -------------------- */\r\n\r\n onChartInit(ec: ECharts) {\r\n this.chartInstance = ec;\r\n this.buildOption();\r\n this.bindEvents();\r\n }\r\n\r\n /* -------------------- Build Option -------------------- */\r\n\r\n private buildOption(): void {\r\n const total = this.config.data?.reduce((sum, item) => sum + item.value, 0);\r\n\r\n this.chartOption = {\r\n backgroundColor: this.config.backgroundColor ?? 'transparent',\r\n\r\n title: {\r\n show: this.config.showTitle ?? !!this.config.title,\r\n text: this.config.title,\r\n left: this.config.titlePosition ?? 'center',\r\n },\r\n\r\n tooltip: {\r\n show: this.config.showTooltip ?? true,\r\n trigger: 'item',\r\n backgroundColor: 'transparent', // remove default box\r\n borderWidth: 0,\r\n padding: 0,\r\n confine: true,\r\n formatter: (params: any) =>\r\n this.config.tooltipFormatter\r\n ? this.config.tooltipFormatter(params, this.config)\r\n : this.chartService.pieTooltipFormatter(params, this.config),\r\n },\r\n\r\n legend: { show: false },\r\n\r\n graphic:\r\n this.chartInstance && !this.config.hideLegend\r\n ? this.chartService.buildGraphicLegend(total, this.config, this.chartInstance)\r\n : undefined,\r\n\r\n series: [\r\n {\r\n type: 'pie',\r\n top: this.config.top ?? 0,\r\n bottom: this.config.bottom ?? 0,\r\n radius: this.config.radius ?? '60%',\r\n center: this.config.center ?? ['50%', '50%'],\r\n data: this.config.data,\r\n color: this.config.colors,\r\n\r\n label: {\r\n show: this.config.showLabel ?? false,\r\n position: this.config.labelPosition ?? 'outside',\r\n formatter: (params: any) => {\r\n const percent = ((params.value / total) * 100).toFixed(1);\r\n\r\n let text = params.name;\r\n if (this.config.showLabelValue) text += `\\n${params.value}`;\r\n if (this.config.showLabelPercentage) text += `\\n${percent}%`;\r\n\r\n return text;\r\n },\r\n },\r\n\r\n itemStyle: {\r\n borderRadius: this.config.borderRadius ?? 0,\r\n borderColor: this.config.borderColor ?? '#fff',\r\n borderWidth: this.config.borderWidth ?? 0,\r\n },\r\n\r\n emphasis:\r\n (this.config.enableHoverEffect ?? true)\r\n ? {\r\n itemStyle: {\r\n shadowBlur: 10,\r\n shadowOffsetX: 0,\r\n },\r\n }\r\n : undefined,\r\n },\r\n ],\r\n };\r\n }\r\n\r\n /* -------------------- Events -------------------- */\r\n\r\n private bindEvents(): void {\r\n if (!this.chartInstance) return;\r\n\r\n this.chartInstance.off();\r\n\r\n this.events.forEach((eventName) => {\r\n this.chartInstance.on(eventName, (params: any) => {\r\n if (eventName === 'contextmenu') {\r\n params.event?.event?.preventDefault();\r\n const container = this.chartInstance.getDom();\r\n const rect = container.getBoundingClientRect();\r\n\r\n this.cardPosition = {\r\n x: params.event.event.clientX - rect.left,\r\n y: params.event.event.clientY - rect.top,\r\n };\r\n\r\n this.openCard = true;\r\n this.cdr.markForCheck();\r\n }\r\n\r\n this.chartEvent.emit({ type: eventName, data: params });\r\n });\r\n });\r\n }\r\n\r\n onMenuClick(item: any) {\r\n this.cardOptionClick.emit(item);\r\n this.closeCard();\r\n }\r\n\r\n @HostListener('document:click')\r\n closeCard() {\r\n this.openCard = false;\r\n }\r\n}\r\n","<div\r\n echarts\r\n [options]=\"chartOption\"\r\n [theme]=\"theme\"\r\n class=\"chart-container\"\r\n (chartInit)=\"onChartInit($event)\"\r\n></div>\r\n\r\n@if (openCard) {\r\n <lib-right-click-card\r\n [cardOptions]=\"cardOptions\"\r\n [cardPosition]=\"cardPosition\"\r\n (contextMenuClick)=\"onMenuClick($event)\"\r\n >\r\n </lib-right-click-card>\r\n}\r\n","import {\r\n Component,\r\n Input,\r\n Output,\r\n EventEmitter,\r\n SimpleChanges,\r\n HostListener,\r\n ChangeDetectorRef,\r\n ChangeDetectionStrategy,\r\n} from '@angular/core';\r\nimport * as echarts from 'echarts/core';\r\nimport { ECharts, EChartsCoreOption } from 'echarts/core';\r\nimport { NgxEchartsDirective, provideEchartsCore } from 'ngx-echarts';\r\nimport { PieChart as EPieChart } from 'echarts/charts';\r\nimport {\r\n TitleComponent,\r\n TooltipComponent,\r\n LegendComponent,\r\n GraphicComponent,\r\n} from 'echarts/components';\r\nimport { CanvasRenderer } from 'echarts/renderers';\r\nimport { RightClickCard } from '../right-click-card';\r\nimport { DoughnutChartConfig } from '../../modal/charts-modal';\r\nimport { Charts } from '../../service/charts';\r\n\r\necharts.use([\r\n EPieChart,\r\n TitleComponent,\r\n TooltipComponent,\r\n LegendComponent,\r\n GraphicComponent,\r\n CanvasRenderer,\r\n]);\r\n\r\n@Component({\r\n selector: 'lib-doughnut-chart',\r\n imports: [NgxEchartsDirective, RightClickCard],\r\n providers: [provideEchartsCore({ echarts })],\r\n templateUrl: './doughnut-chart.html',\r\n styleUrl: './doughnut-chart.scss',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class DoughnutChart {\r\n @Input() config!: DoughnutChartConfig;\r\n @Input() theme: any;\r\n @Input() events: string[] = [];\r\n @Input() contextMenuOptions: any[] = [];\r\n @Input() showContextMenu: boolean = false;\r\n\r\n @Output() contextMenuClick = new EventEmitter<any>();\r\n @Output() chartEvent = new EventEmitter<{\r\n type: string;\r\n data: any;\r\n }>();\r\n cardPosition = { x: 0, y: 0 };\r\n openCard: boolean = false;\r\n chartOption!: EChartsCoreOption;\r\n private chartInstance!: ECharts;\r\n constructor(\r\n private chartService: Charts,\r\n private cdr: ChangeDetectorRef,\r\n ) {}\r\n /* ------------------ CONFIG CHANGE ------------------ */\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (!this.config) return;\r\n // If theme changes → dispose instance\r\n if (changes['theme'] && this.chartInstance) {\r\n this.chartInstance.dispose();\r\n }\r\n // Rebuild option when config changes\r\n this.buildOption();\r\n }\r\n // card open on right click\r\n /**\r\n * @description Determines whether menu click on\r\n * @author Shiva Kant\r\n * @param item\r\n */\r\n onMenuClick(item: any) {\r\n this.contextMenuClick.emit(item);\r\n\r\n this.closeCard();\r\n }\r\n\r\n /**\r\n * @description Hosts listener\r\n * @author Shiva Kant\r\n */\r\n @HostListener('document:click')\r\n closeCard() {\r\n this.openCard = false;\r\n }\r\n /* ------------------ OPTION BUILDER ------------------ */\r\n /**\r\n * @description Builds option\r\n * @author Shiva Kant\r\n * @param config\r\n * @returns option\r\n */\r\n buildOption() {\r\n const total = this.config.data?.reduce((sum, item) => sum + item.value, 0);\r\n\r\n const innerRadius = this.config.innerRadius ?? '70%';\r\n const outerRadius = this.config.outerRadius ?? '90%';\r\n\r\n this.chartOption = {\r\n backgroundColor: this.config.backgroundColor || 'transparent',\r\n\r\n title: {\r\n show: this.config.showTitle ?? !!this.config.title,\r\n text: this.config.title,\r\n left: this.config.titlePosition || 'center',\r\n },\r\n\r\n tooltip: {\r\n show: this.config.showTooltip ?? true,\r\n trigger: 'item',\r\n backgroundColor: 'transparent', // remove default box\r\n borderWidth: 0,\r\n padding: 0,\r\n confine: true,\r\n formatter: (params: any) =>\r\n this.config.tooltipFormatter\r\n ? this.config.tooltipFormatter(params, this.config)\r\n : this.chartService.pieTooltipFormatter(params, this.config),\r\n },\r\n\r\n legend: { show: false },\r\n graphic: this.chartInstance\r\n ? [\r\n ...(this.config.hideLegend\r\n ? []\r\n : this.chartService.buildGraphicLegend(total, this.config, this.chartInstance)),\r\n ...this.chartService.buildCenterGraphic(this.config, total),\r\n ]\r\n : undefined,\r\n series: [\r\n {\r\n type: 'pie',\r\n top: this.config.top ?? 0,\r\n bottom: this.config.bottom ?? 0,\r\n radius: [innerRadius, outerRadius],\r\n center: this.config.center ?? ['50%', '50%'],\r\n data: this.config.data,\r\n color: this.config.colors,\r\n\r\n label: {\r\n show: this.config.showLabel ?? false,\r\n position: this.config.labelPosition ?? 'outside',\r\n },\r\n\r\n itemStyle: {\r\n borderRadius: this.config.borderRadius ?? 8,\r\n borderColor: this.config.borderColor || '#fff',\r\n borderWidth: this.config.borderWidth ?? 2,\r\n },\r\n emphasis: {\r\n scale: this.config.emphasisScale,\r\n },\r\n // ...this.config.series\r\n },\r\n ],\r\n };\r\n }\r\n\r\n /* ------------------ INIT ------------------ */\r\n /**\r\n * @description Determines whether chart init on\r\n * @author Shiva Kant\r\n * @param ec\r\n * @param [container]\r\n */\r\n onChartInit(ec: ECharts) {\r\n this.chartInstance = ec;\r\n this.buildOption();\r\n this.bindEvents();\r\n }\r\n\r\n /* ------------------ EVENTS ------------------ */\r\n /**\r\n * @description Binds events\r\n * @author Shiva Kant\r\n * @returns\r\n */\r\n private bindEvents() {\r\n if (!this.chartInstance) return;\r\n\r\n this.chartInstance.off();\r\n\r\n this.events.forEach((eventName) => {\r\n this.chartInstance.on(eventName, (params: any) => {\r\n // Prevent browser context menu\r\n if (eventName === 'contextmenu' && params.event?.event) {\r\n params.event.event.preventDefault();\r\n const container = this.chartInstance.getDom();\r\n const rect = container.getBoundingClientRect();\r\n\r\n this.cardPosition = {\r\n x: params.event?.event.clientX - rect.left,\r\n y: params.event?.event.clientY - rect.top,\r\n };\r\n\r\n this.openCard = true;\r\n this.cdr.markForCheck();\r\n }\r\n\r\n this.chartEvent.emit({\r\n type: eventName,\r\n data: params,\r\n });\r\n });\r\n });\r\n }\r\n\r\n /* ------------------ DESTROY ------------------ */\r\n ngOnDestroy(): void {\r\n if (this.chartInstance) {\r\n this.chartInstance.off();\r\n this.chartInstance?.dispose();\r\n }\r\n }\r\n}\r\n","<div\r\n echarts\r\n [options]=\"chartOption\"\r\n [theme]=\"theme\"\r\n class=\"chart-container\"\r\n (chartInit)=\"onChartInit($event)\"\r\n></div>\r\n@if (openCard) {\r\n <lib-right-click-card\r\n [cardOptions]=\"contextMenuOptions\"\r\n (contextMenuClick)=\"onMenuClick($event)\"\r\n [cardPosition]=\"cardPosition\"\r\n ></lib-right-click-card>\r\n}\r\n","import { Component, Input } from '@angular/core';\r\nimport * as echarts from 'echarts/core';\r\nimport { LineChart } from 'echarts/charts';\r\nimport { GridComponent, TooltipComponent, LegendComponent } from 'echarts/components';\r\nimport { CanvasRenderer } from 'echarts/renderers';\r\nimport { EChartsCoreOption } from 'echarts/core';\r\nimport { SimpleChanges } from '@angular/core';\r\nimport { NgxEchartsDirective, provideEchartsCore } from 'ngx-echarts';\r\necharts.use([LineChart, GridComponent, TooltipComponent, LegendComponent, CanvasRenderer]);\r\n@Component({\r\n selector: 'lib-stacked-area-chart',\r\n imports: [NgxEchartsDirective],\r\n providers: [provideEchartsCore({ echarts })],\r\n templateUrl: './stacked-area-chart.html',\r\n styleUrl: './stacked-area-chart.scss',\r\n})\r\nexport class StackedAreaChart {\r\n @Input() data: any;\r\n @Input() title: string = 'Protocol Traffic Overview';\r\n\r\n chartOption!: EChartsCoreOption;\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (changes['data']) {\r\n this.buildChart();\r\n }\r\n }\r\n\r\n buildChart() {\r\n this.chartOption = {\r\n tooltip: {\r\n trigger: 'axis',\r\n },\r\n legend: {\r\n data: this.data.series.map((s: any) => s.name),\r\n top: 10,\r\n },\r\n grid: {\r\n left: '3%',\r\n right: '4%',\r\n bottom: '3%',\r\n containLabel: true,\r\n },\r\n xAxis: {\r\n type: 'category',\r\n boundaryGap: false,\r\n data: this.data.time,\r\n },\r\n yAxis: {\r\n type: 'value',\r\n },\r\n series: this.data.series.map((s: any) => ({\r\n name: s.name,\r\n type: s.type??'line',\r\n smooth: true,\r\n data: s.values,\r\n areaStyle: {\r\n opacity: 0.15,\r\n },\r\n })),\r\n };\r\n }\r\n}\r\n","<div\r\n echarts\r\n class=\"chart-container\"\r\n [options]=\"chartOption\"\r\n ></div>","import { Component, Input, SimpleChanges } from '@angular/core';\r\nimport { ECharts, EChartsCoreOption } from 'echarts';\r\nimport { NgxEchartsDirective, provideEchartsCore } from 'ngx-echarts';\r\nimport * as echarts from 'echarts/core';\r\nimport { TooltipComponent, GridComponent, LegendComponent } from 'echarts/components';\r\nimport { CanvasRenderer } from 'echarts/renderers';\r\nimport { LineChart } from 'echarts/charts';\r\nimport { AreaChartConfig } from '../../modal/charts-modal';\r\necharts.use([LineChart, GridComponent, TooltipComponent, LegendComponent, CanvasRenderer]);\r\n\r\n@Component({\r\n selector: 'lib-area-chart',\r\n imports: [NgxEchartsDirective],\r\n providers: [provideEchartsCore({ echarts })],\r\n templateUrl: './area-chart.html',\r\n styleUrl: './area-chart.scss',\r\n})\r\nexport class AreaChart {\r\n @Input() config!: AreaChartConfig;\r\n @Input() theme: any;\r\n\r\n private chartInstance!: ECharts;\r\n\r\n chartOption!: EChartsCoreOption;\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (changes['theme'] && !changes['theme'].firstChange) {\r\n // Dispose and let ngx-echarts recreate chart with new theme\r\n if (this.chartInstance) {\r\n this.chartInstance.dispose();\r\n }\r\n }\r\n if (this.config) {\r\n this.buildOption();\r\n }\r\n }\r\n onChartInit(ec: ECharts) {\r\n this.chartInstance = ec;\r\n }\r\n buildOption() {\r\n this.chartOption = {\r\n backgroundColor: this.config.backgroundColor || 'transparent',\r\n\r\n tooltip: {\r\n show: this.config.showTooltip ?? true,\r\n trigger: 'axis',\r\n },\r\n legned: true,\r\n grid: {\r\n left: this.config.grid?.left ?? 20,\r\n right: this.config.grid?.right ?? 20,\r\n top: this.config.grid?.top ?? 20,\r\n bottom: this.config.grid?.bottom ?? 20,\r\n containLabel: true,\r\n },\r\n\r\n xAxis: {\r\n type: 'category',\r\n boundaryGap: false,\r\n data: this.config.xAxisData,\r\n show: this.config.showXAxis ?? true,\r\n axisLine: { show: this.config.showXAxisLine ?? true },\r\n axisTick: { show: this.config.showXAxisTick ?? true },\r\n axisLabel: { show: this.config.showXAxisLabel ?? true },\r\n },\r\n\r\n yAxis: {\r\n type: 'value',\r\n show: this.config.showYAxis ?? true,\r\n axisLine: { show: this.config.showYAxisLine ?? true },\r\n axisTick: { show: this.config.showYAxisTick ?? true },\r\n axisLabel: { show: this.config.showYAxisLabel ?? true },\r\n splitLine: { show: this.config.showGridLines ?? true },\r\n },\r\n\r\n series: [\r\n {\r\n type: 'line',\r\n data: this.config.seriesData,\r\n smooth: this.config.smooth ?? true,\r\n showSymbol: this.config.showSymbol ?? false,\r\n\r\n lineStyle: {\r\n width: this.config.lineWidth ?? 2,\r\n color: this.config.lineColor || '#16a34a',\r\n },\r\n\r\n itemStyle: {\r\n color: this.config.lineColor || '#16a34a',\r\n },\r\n\r\n areaStyle: {\r\n color: this.config.areaColor || 'rgba(22,163,74,0.25)',\r\n ...this.config.areaColor,\r\n },\r\n },\r\n ],\r\n };\r\n }\r\n ngOnDestroy(): void {\r\n if (this.chartInstance) {\r\n this.chartInstance.dispose();\r\n }\r\n }\r\n}\r\n","<div\r\n echarts\r\n [options]=\"chartOption\"\r\n [theme]=\"theme\"\r\n \r\n class=\"chart-container\"\r\n>\r\n</div>\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.Charts","EBarChart","EPieChart"],"mappings":"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"}
|
package/index.d.ts
CHANGED
|
@@ -196,6 +196,7 @@ declare class Charts {
|
|
|
196
196
|
}[];
|
|
197
197
|
hexToRgba(hex: string, alpha: number): string;
|
|
198
198
|
pieTooltipFormatter(params: any, config: PieChartConfig | DoughnutChartConfig): string;
|
|
199
|
+
barLineTooltipFormatter(params: any): string;
|
|
199
200
|
static ɵfac: i0.ɵɵFactoryDeclaration<Charts, never>;
|
|
200
201
|
static ɵprov: i0.ɵɵInjectableDeclaration<Charts>;
|
|
201
202
|
}
|
|
@@ -222,6 +223,7 @@ declare class LinesChart {
|
|
|
222
223
|
}
|
|
223
224
|
|
|
224
225
|
declare class BarChart {
|
|
226
|
+
private chartService;
|
|
225
227
|
private cdr;
|
|
226
228
|
config: BarChartConfig;
|
|
227
229
|
theme: any;
|
|
@@ -240,7 +242,7 @@ declare class BarChart {
|
|
|
240
242
|
y: number;
|
|
241
243
|
};
|
|
242
244
|
openCard: boolean;
|
|
243
|
-
constructor(cdr: ChangeDetectorRef);
|
|
245
|
+
constructor(chartService: Charts, cdr: ChangeDetectorRef);
|
|
244
246
|
ngOnChanges(changes: SimpleChanges): void;
|
|
245
247
|
buildOption(): void;
|
|
246
248
|
onChartInit(ec: ECharts): void;
|