@tetacom/svg-charts 1.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.browserslistrc +16 -0
- package/README.md +24 -0
- package/dist/README.md +24 -0
- package/dist/chart/base/series-base.component.d.ts +22 -0
- package/dist/chart/chart/chart.component.d.ts +29 -0
- package/dist/chart/chart-container/chart-container.component.d.ts +42 -0
- package/dist/chart/chart-container/gridlines/gridlines.component.d.ts +23 -0
- package/dist/chart/chart-container/plotband/plotband.component.d.ts +33 -0
- package/dist/chart/chart-container/plotline/plotline.component.d.ts +30 -0
- package/dist/chart/chart-container/series/bar/bar-series.component.d.ts +25 -0
- package/dist/chart/chart-container/series/line/line-series.component.d.ts +28 -0
- package/dist/chart/chart-container/series-host/series-host.component.d.ts +20 -0
- package/dist/chart/chart-container/tooltip/tooltip.component.d.ts +29 -0
- package/dist/chart/chart-container/x-axis/x-axis.component.d.ts +23 -0
- package/dist/chart/chart-container/y-axis/y-axis.component.d.ts +24 -0
- package/dist/chart/chart.module.d.ts +22 -0
- package/dist/chart/core/axis/axis.d.ts +54 -0
- package/dist/chart/core/axis/builders/axis-size-builder.d.ts +8 -0
- package/dist/chart/core/axis/builders/extremes-builder.d.ts +7 -0
- package/dist/chart/core/axis/builders/public-api.d.ts +2 -0
- package/dist/chart/core/utils/generate-ticks.d.ts +1 -0
- package/dist/chart/core/utils/get-text-width.d.ts +1 -0
- package/dist/chart/core/utils/public-api.d.ts +2 -0
- package/dist/chart/directives/brushable.directive.d.ts +17 -0
- package/dist/chart/directives/zoomable.directive.d.ts +20 -0
- package/dist/chart/legend/legend.component.d.ts +14 -0
- package/dist/chart/model/axis-options.d.ts +17 -0
- package/dist/chart/model/base-point.d.ts +9 -0
- package/dist/chart/model/chart-bounds.d.ts +12 -0
- package/dist/chart/model/enum/axis-orientation.d.ts +4 -0
- package/dist/chart/model/enum/axis-type.d.ts +7 -0
- package/dist/chart/model/enum/brush-type.d.ts +5 -0
- package/dist/chart/model/enum/drag-point-type.d.ts +5 -0
- package/dist/chart/model/enum/series-type.d.ts +4 -0
- package/dist/chart/model/enum/tooltip-tracking.d.ts +4 -0
- package/dist/chart/model/enum/zoom-type.d.ts +5 -0
- package/dist/chart/model/i-broadcast-message.d.ts +5 -0
- package/dist/chart/model/i-builder.d.ts +3 -0
- package/dist/chart/model/i-chart-config.d.ts +32 -0
- package/dist/chart/model/i-chart-event.d.ts +4 -0
- package/dist/chart/model/i-display-tooltip.d.ts +6 -0
- package/dist/chart/model/i-point-move.d.ts +6 -0
- package/dist/chart/model/marker-options.d.ts +7 -0
- package/dist/chart/model/plotband.d.ts +31 -0
- package/dist/chart/model/plotline.d.ts +19 -0
- package/dist/chart/model/series.d.ts +17 -0
- package/dist/chart/model/svg-attributes.d.ts +14 -0
- package/dist/chart/model/tooltip-options.d.ts +8 -0
- package/dist/chart/service/axes.service.d.ts +11 -0
- package/dist/chart/service/broadcast.service.d.ts +11 -0
- package/dist/chart/service/brush.service.d.ts +17 -0
- package/dist/chart/service/chart.service.d.ts +38 -0
- package/dist/chart/service/scale.service.d.ts +14 -0
- package/dist/chart/service/zoom.service.d.ts +25 -0
- package/dist/esm2020/chart/base/series-base.component.mjs +34 -0
- package/dist/esm2020/chart/chart/chart.component.mjs +73 -0
- package/dist/esm2020/chart/chart-container/chart-container.component.mjs +151 -0
- package/dist/esm2020/chart/chart-container/gridlines/gridlines.component.mjs +41 -0
- package/dist/esm2020/chart/chart-container/plotband/plotband.component.mjs +139 -0
- package/dist/esm2020/chart/chart-container/plotline/plotline.component.mjs +79 -0
- package/dist/esm2020/chart/chart-container/series/bar/bar-series.component.mjs +48 -0
- package/dist/esm2020/chart/chart-container/series/line/line-series.component.mjs +148 -0
- package/dist/esm2020/chart/chart-container/series-host/series-host.component.mjs +59 -0
- package/dist/esm2020/chart/chart-container/tooltip/tooltip.component.mjs +81 -0
- package/dist/esm2020/chart/chart-container/x-axis/x-axis.component.mjs +56 -0
- package/dist/esm2020/chart/chart-container/y-axis/y-axis.component.mjs +63 -0
- package/dist/esm2020/chart/chart.module.mjs +62 -0
- package/dist/esm2020/chart/core/axis/axis.mjs +96 -0
- package/dist/esm2020/chart/core/axis/builders/axis-size-builder.mjs +24 -0
- package/dist/esm2020/chart/core/axis/builders/extremes-builder.mjs +32 -0
- package/dist/esm2020/chart/core/axis/builders/public-api.mjs +3 -0
- package/dist/esm2020/chart/core/utils/generate-ticks.mjs +11 -0
- package/dist/esm2020/chart/core/utils/get-text-width.mjs +6 -0
- package/dist/esm2020/chart/core/utils/public-api.mjs +3 -0
- package/dist/esm2020/chart/directives/brushable.directive.mjs +28 -0
- package/dist/esm2020/chart/directives/zoomable.directive.mjs +37 -0
- package/dist/esm2020/chart/legend/legend.component.mjs +30 -0
- package/dist/esm2020/chart/model/axis-options.mjs +2 -0
- package/dist/esm2020/chart/model/base-point.mjs +2 -0
- package/dist/esm2020/chart/model/chart-bounds.mjs +13 -0
- package/dist/esm2020/chart/model/enum/axis-orientation.mjs +6 -0
- package/dist/esm2020/chart/model/enum/axis-type.mjs +9 -0
- package/dist/esm2020/chart/model/enum/brush-type.mjs +7 -0
- package/dist/esm2020/chart/model/enum/drag-point-type.mjs +7 -0
- package/dist/esm2020/chart/model/enum/series-type.mjs +6 -0
- package/dist/esm2020/chart/model/enum/tooltip-tracking.mjs +6 -0
- package/dist/esm2020/chart/model/enum/zoom-type.mjs +7 -0
- package/dist/esm2020/chart/model/i-broadcast-message.mjs +2 -0
- package/dist/esm2020/chart/model/i-builder.mjs +2 -0
- package/dist/esm2020/chart/model/i-chart-config.mjs +2 -0
- package/dist/esm2020/chart/model/i-chart-event.mjs +2 -0
- package/dist/esm2020/chart/model/i-display-tooltip.mjs +2 -0
- package/dist/esm2020/chart/model/i-point-move.mjs +2 -0
- package/dist/esm2020/chart/model/marker-options.mjs +2 -0
- package/dist/esm2020/chart/model/plotband.mjs +16 -0
- package/dist/esm2020/chart/model/plotline.mjs +12 -0
- package/dist/esm2020/chart/model/series.mjs +2 -0
- package/dist/esm2020/chart/model/svg-attributes.mjs +2 -0
- package/dist/esm2020/chart/model/tooltip-options.mjs +2 -0
- package/dist/esm2020/chart/service/axes.service.mjs +29 -0
- package/dist/esm2020/chart/service/broadcast.service.mjs +25 -0
- package/dist/esm2020/chart/service/brush.service.mjs +67 -0
- package/dist/esm2020/chart/service/chart.service.mjs +76 -0
- package/dist/esm2020/chart/service/scale.service.mjs +64 -0
- package/dist/esm2020/chart/service/zoom.service.mjs +117 -0
- package/dist/esm2020/public-api.mjs +7 -0
- package/dist/esm2020/tetacom-svg-charts.mjs +5 -0
- package/dist/fesm2015/tetacom-svg-charts.mjs +1589 -0
- package/dist/fesm2015/tetacom-svg-charts.mjs.map +1 -0
- package/dist/fesm2020/tetacom-svg-charts.mjs +1575 -0
- package/dist/fesm2020/tetacom-svg-charts.mjs.map +1 -0
- package/dist/package.json +35 -0
- package/dist/public-api.d.ts +3 -0
- package/dist/tetacom-svg-charts.d.ts +5 -0
- package/karma.conf.js +44 -0
- package/ng-package.json +7 -0
- package/package.json +15 -0
- package/src/chart/Chart.stories.ts +397 -0
- package/src/chart/base/series-base.component.ts +41 -0
- package/src/chart/chart/chart.component.html +5 -0
- package/src/chart/chart/chart.component.scss +6 -0
- package/src/chart/chart/chart.component.spec.ts +25 -0
- package/src/chart/chart/chart.component.ts +97 -0
- package/src/chart/chart-container/chart-container.component.html +78 -0
- package/src/chart/chart-container/chart-container.component.scss +15 -0
- package/src/chart/chart-container/chart-container.component.spec.ts +25 -0
- package/src/chart/chart-container/chart-container.component.ts +242 -0
- package/src/chart/chart-container/gridlines/gridlines.component.html +7 -0
- package/src/chart/chart-container/gridlines/gridlines.component.scss +8 -0
- package/src/chart/chart-container/gridlines/gridlines.component.spec.ts +25 -0
- package/src/chart/chart-container/gridlines/gridlines.component.ts +55 -0
- package/src/chart/chart-container/plotband/plotband.component.html +58 -0
- package/src/chart/chart-container/plotband/plotband.component.scss +13 -0
- package/src/chart/chart-container/plotband/plotband.component.spec.ts +25 -0
- package/src/chart/chart-container/plotband/plotband.component.ts +206 -0
- package/src/chart/chart-container/plotline/plotline.component.html +22 -0
- package/src/chart/chart-container/plotline/plotline.component.scss +6 -0
- package/src/chart/chart-container/plotline/plotline.component.spec.ts +25 -0
- package/src/chart/chart-container/plotline/plotline.component.ts +113 -0
- package/src/chart/chart-container/series/bar/bar-series.component.html +3 -0
- package/src/chart/chart-container/series/bar/bar-series.component.scss +0 -0
- package/src/chart/chart-container/series/bar/bar-series.component.ts +71 -0
- package/src/chart/chart-container/series/line/line-series.component.html +38 -0
- package/src/chart/chart-container/series/line/line-series.component.scss +9 -0
- package/src/chart/chart-container/series/line/line-series.component.spec.ts +25 -0
- package/src/chart/chart-container/series/line/line-series.component.ts +245 -0
- package/src/chart/chart-container/series-host/series-host.component.ts +80 -0
- package/src/chart/chart-container/tooltip/tooltip.component.html +14 -0
- package/src/chart/chart-container/tooltip/tooltip.component.scss +7 -0
- package/src/chart/chart-container/tooltip/tooltip.component.spec.ts +25 -0
- package/src/chart/chart-container/tooltip/tooltip.component.ts +134 -0
- package/src/chart/chart-container/x-axis/x-axis.component.html +1 -0
- package/src/chart/chart-container/x-axis/x-axis.component.scss +3 -0
- package/src/chart/chart-container/x-axis/x-axis.component.spec.ts +25 -0
- package/src/chart/chart-container/x-axis/x-axis.component.ts +80 -0
- package/src/chart/chart-container/y-axis/y-axis.component.html +4 -0
- package/src/chart/chart-container/y-axis/y-axis.component.scss +13 -0
- package/src/chart/chart-container/y-axis/y-axis.component.spec.ts +25 -0
- package/src/chart/chart-container/y-axis/y-axis.component.ts +90 -0
- package/src/chart/chart.module.ts +40 -0
- package/src/chart/core/axis/axis.ts +132 -0
- package/src/chart/core/axis/builders/axis-size-builder.ts +37 -0
- package/src/chart/core/axis/builders/extremes-builder.ts +45 -0
- package/src/chart/core/axis/builders/public-api.ts +2 -0
- package/src/chart/core/utils/generate-ticks.ts +14 -0
- package/src/chart/core/utils/get-text-width.ts +10 -0
- package/src/chart/core/utils/public-api.ts +2 -0
- package/src/chart/default/default-chart-config.ts +12 -0
- package/src/chart/directives/brushable.directive.ts +30 -0
- package/src/chart/directives/zoomable.directive.ts +31 -0
- package/src/chart/legend/legend.component.html +6 -0
- package/src/chart/legend/legend.component.scss +20 -0
- package/src/chart/legend/legend.component.spec.ts +25 -0
- package/src/chart/legend/legend.component.ts +35 -0
- package/src/chart/model/axis-options.ts +18 -0
- package/src/chart/model/base-point.ts +10 -0
- package/src/chart/model/chart-bounds.ts +18 -0
- package/src/chart/model/enum/axis-orientation.ts +4 -0
- package/src/chart/model/enum/axis-type.ts +7 -0
- package/src/chart/model/enum/brush-type.ts +5 -0
- package/src/chart/model/enum/drag-point-type.ts +5 -0
- package/src/chart/model/enum/public-api.ts +7 -0
- package/src/chart/model/enum/series-type.ts +4 -0
- package/src/chart/model/enum/tooltip-tracking.ts +4 -0
- package/src/chart/model/enum/zoom-type.ts +5 -0
- package/src/chart/model/i-broadcast-message.ts +5 -0
- package/src/chart/model/i-builder.ts +3 -0
- package/src/chart/model/i-chart-config.ts +33 -0
- package/src/chart/model/i-chart-event.ts +4 -0
- package/src/chart/model/i-display-tooltip.ts +7 -0
- package/src/chart/model/i-drag-event.ts +5 -0
- package/src/chart/model/i-point-move.ts +7 -0
- package/src/chart/model/marker-options.ts +8 -0
- package/src/chart/model/plotband.ts +45 -0
- package/src/chart/model/plotline.ts +29 -0
- package/src/chart/model/public-api.ts +0 -0
- package/src/chart/model/series.ts +18 -0
- package/src/chart/model/svg-attributes.ts +14 -0
- package/src/chart/model/tooltip-options.ts +37 -0
- package/src/chart/service/axes.service.spec.ts +16 -0
- package/src/chart/service/axes.service.ts +27 -0
- package/src/chart/service/broadcast.service.spec.ts +16 -0
- package/src/chart/service/broadcast.service.ts +24 -0
- package/src/chart/service/brush.service.spec.ts +16 -0
- package/src/chart/service/brush.service.ts +87 -0
- package/src/chart/service/chart.service.spec.ts +16 -0
- package/src/chart/service/chart.service.ts +100 -0
- package/src/chart/service/scale.service.spec.ts +16 -0
- package/src/chart/service/scale.service.ts +74 -0
- package/src/chart/service/zoom.service.spec.ts +16 -0
- package/src/chart/service/zoom.service.ts +153 -0
- package/src/public-api.ts +7 -0
- package/src/test.ts +27 -0
- package/tsconfig.lib.json +15 -0
- package/tsconfig.lib.prod.json +10 -0
- package/tsconfig.spec.json +17 -0
|
@@ -0,0 +1,148 @@
|
|
|
1
|
+
import { ChangeDetectionStrategy, Component, } from '@angular/core';
|
|
2
|
+
import * as d3 from 'd3';
|
|
3
|
+
import { SeriesBaseComponent } from '../../../base/series-base.component';
|
|
4
|
+
import { filter, map, tap } from 'rxjs';
|
|
5
|
+
import { TooltipTracking } from '../../../model/enum/tooltip-tracking';
|
|
6
|
+
import { DragPointType } from '../../../model/enum/drag-point-type';
|
|
7
|
+
import * as i0 from "@angular/core";
|
|
8
|
+
import * as i1 from "../../../service/chart.service";
|
|
9
|
+
import * as i2 from "../../../service/scale.service";
|
|
10
|
+
import * as i3 from "../../../service/zoom.service";
|
|
11
|
+
import * as i4 from "@angular/common";
|
|
12
|
+
export class LineSeriesComponent extends SeriesBaseComponent {
|
|
13
|
+
constructor(svc, cdr, scaleService, zoomService, element) {
|
|
14
|
+
super(svc, cdr, scaleService, zoomService, element);
|
|
15
|
+
this.svc = svc;
|
|
16
|
+
this.cdr = cdr;
|
|
17
|
+
this.scaleService = scaleService;
|
|
18
|
+
this.zoomService = zoomService;
|
|
19
|
+
this.element = element;
|
|
20
|
+
}
|
|
21
|
+
ngOnInit() {
|
|
22
|
+
this.display = this.zoomService.zoomed.pipe(map(({ event }) => {
|
|
23
|
+
return event?.type === 'end' ? 1 : 0;
|
|
24
|
+
}));
|
|
25
|
+
this.transform = this.svc.pointerMove.pipe(filter(({ event }) => event), map(({ event }) => {
|
|
26
|
+
return this.getTransform(event);
|
|
27
|
+
}), tap((_) => this.cdr.detectChanges()));
|
|
28
|
+
}
|
|
29
|
+
ngAfterViewInit() {
|
|
30
|
+
const drag = (node, event, d) => {
|
|
31
|
+
if (d.marker?.dragType === DragPointType.x ||
|
|
32
|
+
d.marker?.dragType === DragPointType.xy) {
|
|
33
|
+
d.x = this.x.invert(event.x);
|
|
34
|
+
}
|
|
35
|
+
if (d.marker?.dragType === DragPointType.y ||
|
|
36
|
+
d.marker?.dragType === DragPointType.xy) {
|
|
37
|
+
d.y = this.y.invert(event.y);
|
|
38
|
+
}
|
|
39
|
+
this.svc.emitPoint({
|
|
40
|
+
target: {
|
|
41
|
+
series: this.series,
|
|
42
|
+
point: d,
|
|
43
|
+
},
|
|
44
|
+
event,
|
|
45
|
+
});
|
|
46
|
+
this.cdr.detectChanges();
|
|
47
|
+
};
|
|
48
|
+
const dragMarkers = d3
|
|
49
|
+
.drag()
|
|
50
|
+
.subject(function (event, d) {
|
|
51
|
+
const node = d3.select(this);
|
|
52
|
+
return { x: node.attr('cx'), y: node.attr('cy') };
|
|
53
|
+
})
|
|
54
|
+
.on('start drag end', function (event, d) {
|
|
55
|
+
const node = d3.select(this);
|
|
56
|
+
drag(node, event, d);
|
|
57
|
+
});
|
|
58
|
+
const draggableMarkers = this.series.data?.filter((_) => _?.marker && _?.marker?.draggable);
|
|
59
|
+
const element = d3
|
|
60
|
+
.select(this.element.nativeElement)
|
|
61
|
+
.selectAll('.draggable-marker')
|
|
62
|
+
.data(draggableMarkers);
|
|
63
|
+
element.call(dragMarkers);
|
|
64
|
+
this.svgElement = d3
|
|
65
|
+
.select(this.element.nativeElement)
|
|
66
|
+
.select('.line')
|
|
67
|
+
.node();
|
|
68
|
+
}
|
|
69
|
+
getPath() {
|
|
70
|
+
this.x = this.scaleService.xScales.get(this.series.xAxisIndex);
|
|
71
|
+
this.y = this.scaleService.yScales.get(this.series.yAxisIndex);
|
|
72
|
+
const line = d3
|
|
73
|
+
.line()
|
|
74
|
+
.defined((point) => point.x !== null || point.y !== null)
|
|
75
|
+
.x((point) => this.x(point.x))
|
|
76
|
+
.y((point) => this.y(point.y));
|
|
77
|
+
const path = line(this.series.data);
|
|
78
|
+
return path;
|
|
79
|
+
}
|
|
80
|
+
getMarkers() {
|
|
81
|
+
return this.series.data?.filter((_) => _?.marker);
|
|
82
|
+
}
|
|
83
|
+
getTransform(event) {
|
|
84
|
+
const mouse = d3.pointer(event);
|
|
85
|
+
const foundX = this.scaleService.xScales.get(this.series.xAxisIndex);
|
|
86
|
+
const foundY = this.scaleService.yScales.get(this.series.yAxisIndex);
|
|
87
|
+
const tooltipTracking = this.svc.config?.tooltip?.tracking;
|
|
88
|
+
const lineIntersection = (p0_x, p0_y, p1_x, p1_y, p2_x, p2_y, p3_x, p3_y) => {
|
|
89
|
+
const rV = {};
|
|
90
|
+
let s1_x, s1_y, s2_x, s2_y;
|
|
91
|
+
s1_x = p1_x - p0_x;
|
|
92
|
+
s1_y = p1_y - p0_y;
|
|
93
|
+
s2_x = p3_x - p2_x;
|
|
94
|
+
s2_y = p3_y - p2_y;
|
|
95
|
+
let s, t;
|
|
96
|
+
s =
|
|
97
|
+
(-s1_y * (p0_x - p2_x) + s1_x * (p0_y - p2_y)) /
|
|
98
|
+
(-s2_x * s1_y + s1_x * s2_y);
|
|
99
|
+
t =
|
|
100
|
+
(s2_x * (p0_y - p2_y) - s2_y * (p0_x - p2_x)) /
|
|
101
|
+
(-s2_x * s1_y + s1_x * s2_y);
|
|
102
|
+
if (s >= 0 && s <= 1 && t >= 0 && t <= 1) {
|
|
103
|
+
// Collision detected
|
|
104
|
+
rV.x = p0_x + t * s1_x;
|
|
105
|
+
rV.y = p0_y + t * s1_y;
|
|
106
|
+
}
|
|
107
|
+
return rV;
|
|
108
|
+
};
|
|
109
|
+
if (tooltipTracking === TooltipTracking.x) {
|
|
110
|
+
const bisect = d3.bisector((_) => _.x).right;
|
|
111
|
+
const x0 = foundX.invert(mouse[0]);
|
|
112
|
+
const rightId = bisect(this.series.data, x0);
|
|
113
|
+
const range = foundY.range();
|
|
114
|
+
const intersect = lineIntersection(mouse[0], range[0], mouse[0], range[1], foundX(this.series.data[rightId - 1]?.x), foundY(this.series.data[rightId - 1]?.y), foundX(this.series.data[rightId]?.x), foundY(this.series.data[rightId]?.y));
|
|
115
|
+
console.log(intersect);
|
|
116
|
+
this.svc.setTooltip({
|
|
117
|
+
point: { x: foundX.invert(intersect.x), y: foundY.invert(intersect.y) },
|
|
118
|
+
series: this.series,
|
|
119
|
+
});
|
|
120
|
+
return {
|
|
121
|
+
x: intersect.x,
|
|
122
|
+
y: intersect.y,
|
|
123
|
+
};
|
|
124
|
+
}
|
|
125
|
+
if (tooltipTracking === TooltipTracking.y) {
|
|
126
|
+
const bisect = d3.bisector((_) => _.y).right;
|
|
127
|
+
const y0 = foundY.invert(mouse[1]);
|
|
128
|
+
const rightId = bisect(this.series.data, y0);
|
|
129
|
+
const range = foundX.range();
|
|
130
|
+
const intersect = lineIntersection(range[0], mouse[1], range[1], mouse[1], foundX(this.series.data[rightId - 1]?.x), foundY(this.series.data[rightId - 1]?.y), foundX(this.series.data[rightId]?.x), foundY(this.series.data[rightId]?.y));
|
|
131
|
+
this.svc.setTooltip({
|
|
132
|
+
point: { x: foundX.invert(intersect.x), y: foundY.invert(intersect.y) },
|
|
133
|
+
series: this.series,
|
|
134
|
+
});
|
|
135
|
+
return {
|
|
136
|
+
x: intersect.x,
|
|
137
|
+
y: intersect.y,
|
|
138
|
+
};
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
LineSeriesComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.1", ngImport: i0, type: LineSeriesComponent, deps: [{ token: i1.ChartService }, { token: i0.ChangeDetectorRef }, { token: i2.ScaleService }, { token: i3.ZoomService }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
143
|
+
LineSeriesComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.1", type: LineSeriesComponent, selector: "svg:svg[teta-line-series]", usesInheritance: true, ngImport: i0, template: "<svg:path\n class=\"line\"\n [attr.d]=\"getPath()\"\n [attr.stroke]=\"series.color\"\n [attr.stroke-width]=\"series.style?.strokeWidth\"\n fill=\"none\">\n</svg:path>\n\n<ng-container *ngIf=\"transform | async as t\">\n <svg:circle\n r=\"3\"\n [attr.fill]=\"series.color\"\n [attr.transform]=\"'translate('+ t.x +', '+ t.y +')'\"\n [attr.opacity]=\"display | async\">\n </svg:circle>\n</ng-container>\n\n<ng-container *ngIf=\"getMarkers() as markers\">\n\n <svg:circle\n class=\"marker\"\n *ngFor=\"let point of markers\"\n [class.draggable-marker]=\"point?.marker?.draggable\"\n [attr.r]=\"point.marker.style?.radius ?? 5\"\n [attr.fill]=\"point.marker.style?.fill ?? 'transparent'\"\n [attr.stroke]=\"point.marker.style?.stroke ?? 'none'\"\n [attr.stroke-width]=\"point.marker.style?.strokeWidth\"\n [attr.stroke-dasharray]=\"point.marker.style?.strokeDasharray\"\n [attr.cx]=\"x(point.x)\"\n [attr.cy]=\"y(point.y)\"\n >\n </svg:circle>\n\n\n</ng-container>\n\n\n\n", styles: [".draggable-marker{cursor:move}.active{stroke-opacity:.5}.marker-grab{opacity:0}\n"], directives: [{ type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }], pipes: { "async": i4.AsyncPipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
144
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.1", ngImport: i0, type: LineSeriesComponent, decorators: [{
|
|
145
|
+
type: Component,
|
|
146
|
+
args: [{ selector: 'svg:svg[teta-line-series]', changeDetection: ChangeDetectionStrategy.OnPush, template: "<svg:path\n class=\"line\"\n [attr.d]=\"getPath()\"\n [attr.stroke]=\"series.color\"\n [attr.stroke-width]=\"series.style?.strokeWidth\"\n fill=\"none\">\n</svg:path>\n\n<ng-container *ngIf=\"transform | async as t\">\n <svg:circle\n r=\"3\"\n [attr.fill]=\"series.color\"\n [attr.transform]=\"'translate('+ t.x +', '+ t.y +')'\"\n [attr.opacity]=\"display | async\">\n </svg:circle>\n</ng-container>\n\n<ng-container *ngIf=\"getMarkers() as markers\">\n\n <svg:circle\n class=\"marker\"\n *ngFor=\"let point of markers\"\n [class.draggable-marker]=\"point?.marker?.draggable\"\n [attr.r]=\"point.marker.style?.radius ?? 5\"\n [attr.fill]=\"point.marker.style?.fill ?? 'transparent'\"\n [attr.stroke]=\"point.marker.style?.stroke ?? 'none'\"\n [attr.stroke-width]=\"point.marker.style?.strokeWidth\"\n [attr.stroke-dasharray]=\"point.marker.style?.strokeDasharray\"\n [attr.cx]=\"x(point.x)\"\n [attr.cy]=\"y(point.y)\"\n >\n </svg:circle>\n\n\n</ng-container>\n\n\n\n", styles: [".draggable-marker{cursor:move}.active{stroke-opacity:.5}.marker-grab{opacity:0}\n"] }]
|
|
147
|
+
}], ctorParameters: function () { return [{ type: i1.ChartService }, { type: i0.ChangeDetectorRef }, { type: i2.ScaleService }, { type: i3.ZoomService }, { type: i0.ElementRef }]; } });
|
|
148
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGluZS1zZXJpZXMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2NoYXJ0L2NoYXJ0LWNvbnRhaW5lci9zZXJpZXMvbGluZS9saW5lLXNlcmllcy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvY2hhcnQvY2hhcnQtY29udGFpbmVyL3Nlcmllcy9saW5lL2xpbmUtc2VyaWVzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFTCx1QkFBdUIsRUFFdkIsU0FBUyxHQUdWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sS0FBSyxFQUFFLE1BQU0sSUFBSSxDQUFDO0FBQ3pCLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBSTFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFjLEdBQUcsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUdwRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDdkUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHFDQUFxQyxDQUFDOzs7Ozs7QUFRcEUsTUFBTSxPQUFPLG1CQUNYLFNBQVEsbUJBQXNCO0lBVTlCLFlBQ3FCLEdBQWlCLEVBQ2pCLEdBQXNCLEVBQ3RCLFlBQTBCLEVBQzFCLFdBQXdCLEVBQ3hCLE9BQW1CO1FBRXRDLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLFlBQVksRUFBRSxXQUFXLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFOakMsUUFBRyxHQUFILEdBQUcsQ0FBYztRQUNqQixRQUFHLEdBQUgsR0FBRyxDQUFtQjtRQUN0QixpQkFBWSxHQUFaLFlBQVksQ0FBYztRQUMxQixnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUN4QixZQUFPLEdBQVAsT0FBTyxDQUFZO0lBR3hDLENBQUM7SUFFUSxRQUFRO1FBQ2YsSUFBSSxDQUFDLE9BQU8sR0FB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O2FBQ2YsQ0FBQztTQUNIO0lBQ0gsQ0FBQzs7Z0hBMU5VLG1CQUFtQjtvR0FBbkIsbUJBQW1CLHdGQ3pCaEMsd2hDQXNDQTsyRkRiYSxtQkFBbUI7a0JBTi9CLFNBQVM7K0JBQ0UsMkJBQTJCLG1CQUdwQix1QkFBdUIsQ0FBQyxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQWZ0ZXJWaWV3SW5pdCxcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIE9uSW5pdCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgKiBhcyBkMyBmcm9tICdkMyc7XG5pbXBvcnQgeyBTZXJpZXNCYXNlQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vLi4vYmFzZS9zZXJpZXMtYmFzZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ2hhcnRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZS9jaGFydC5zZXJ2aWNlJztcbmltcG9ydCB7IEJhc2VQb2ludCB9IGZyb20gJy4uLy4uLy4uL21vZGVsL2Jhc2UtcG9pbnQnO1xuaW1wb3J0IHsgU2NhbGVTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZS9zY2FsZS5zZXJ2aWNlJztcbmltcG9ydCB7IGZpbHRlciwgbWFwLCBPYnNlcnZhYmxlLCB0YXAgfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgWm9vbVNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlL3pvb20uc2VydmljZSc7XG5pbXBvcnQgeyBUb29sdGlwVHJhY2tpbmcgfSBmcm9tICcuLi8uLi8uLi9tb2RlbC9lbnVtL3Rvb2x0aXAtdHJhY2tpbmcnO1xuaW1wb3J0IHsgRHJhZ1BvaW50VHlwZSB9IGZyb20gJy4uLy4uLy4uL21vZGVsL2VudW0vZHJhZy1wb2ludC10eXBlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnc3ZnOnN2Z1t0ZXRhLWxpbmUtc2VyaWVzXScsXG4gIHRlbXBsYXRlVXJsOiAnLi9saW5lLXNlcmllcy5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2xpbmUtc2VyaWVzLmNvbXBvbmVudC5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBMaW5lU2VyaWVzQ29tcG9uZW50PFQgZXh0ZW5kcyBCYXNlUG9pbnQ+XG4gIGV4dGVuZHMgU2VyaWVzQmFzZUNvbXBvbmVudDxUPlxuICBpbXBsZW1lbnRzIE9uSW5pdCwgQWZ0ZXJWaWV3SW5pdFxue1xuICB0cmFuc2Zvcm06IE9ic2VydmFibGU8UGljazxCYXNlUG9pbnQsICd4JyB8ICd5Jz4+O1xuICBkaXNwbGF5OiBPYnNlcnZhYmxlPG51bWJlcj47XG5cbiAgc3ZnRWxlbWVudDogU1ZHR2VvbWV0cnlFbGVtZW50O1xuICB4OiBhbnk7XG4gIHk6IGFueTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcm90ZWN0ZWQgb3ZlcnJpZGUgc3ZjOiBDaGFydFNlcnZpY2UsXG4gICAgcHJvdGVjdGVkIG92ZXJyaWRlIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgcHJvdGVjdGVkIG92ZXJyaWRlIHNjYWxlU2VydmljZTogU2NhbGVTZXJ2aWNlLFxuICAgIHByb3RlY3RlZCBvdmVycmlkZSB6b29tU2VydmljZTogWm9vbVNlcnZpY2UsXG4gICAgcHJvdGVjdGVkIG92ZXJyaWRlIGVsZW1lbnQ6IEVsZW1lbnRSZWZcbiAgKSB7XG4gICAgc3VwZXIoc3ZjLCBjZHIsIHNjYWxlU2VydmljZSwgem9vbVNlcnZpY2UsIGVsZW1lbnQpO1xuICB9XG5cbiAgb3ZlcnJpZGUgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5kaXNwbGF5ID0gdGhpcy56b29tU2VydmljZS56b29tZWQucGlwZShcbiAgICAgIG1hcCgoeyBldmVudCB9KSA9PiB7XG4gICAgICAgIHJldHVybiBldmVudD8udHlwZSA9PT0gJ2VuZCcgPyAxIDogMDtcbiAgICAgIH0pXG4gICAgKTtcblxuICAgIHRoaXMudHJhbnNmb3JtID0gdGhpcy5zdmMucG9pbnRlck1vdmUucGlwZShcbiAgICAgIGZpbHRlcigoeyBldmVudCB9KSA9PiBldmVudCksXG4gICAgICBtYXAoKHsgZXZlbnQgfSkgPT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5nZXRUcmFuc2Zvcm0oZXZlbnQpO1xuICAgICAgfSksXG4gICAgICB0YXAoKF8pID0+IHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKSlcbiAgICApO1xuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCkge1xuICAgIGNvbnN0IGRyYWcgPSAobm9kZSwgZXZlbnQ6IGQzLkQzRHJhZ0V2ZW50PGFueSwgYW55LCBhbnk+LCBkOiBCYXNlUG9pbnQpID0+IHtcbiAgICAgIGlmIChcbiAgICAgICAgZC5tYXJrZXI/LmRyYWdUeXBlID09PSBEcmFnUG9pbnRUeXBlLnggfHxcbiAgICAgICAgZC5tYXJrZXI/LmRyYWdUeXBlID09PSBEcmFnUG9pbnRUeXBlLnh5XG4gICAgICApIHtcbiAgICAgICAgZC54ID0gdGhpcy54LmludmVydChldmVudC54KTtcbiAgICAgIH1cblxuICAgICAgaWYgKFxuICAgICAgICBkLm1hcmtlcj8uZHJhZ1R5cGUgPT09IERyYWdQb2ludFR5cGUueSB8fFxuICAgICAgICBkLm1hcmtlcj8uZHJhZ1R5cGUgPT09IERyYWdQb2ludFR5cGUueHlcbiAgICAgICkge1xuICAgICAgICBkLnkgPSB0aGlzLnkuaW52ZXJ0KGV2ZW50LnkpO1xuICAgICAgfVxuXG4gICAgICB0aGlzLnN2Yy5lbWl0UG9pbnQoe1xuICAgICAgICB0YXJnZXQ6IHtcbiAgICAgICAgICBzZXJpZXM6IHRoaXMuc2VyaWVzLFxuICAgICAgICAgIHBvaW50OiBkLFxuICAgICAgICB9LFxuICAgICAgICBldmVudCxcbiAgICAgIH0pO1xuXG4gICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfTtcblxuICAgIGNvbnN0IGRyYWdNYXJrZXJzID0gZDNcbiAgICAgIC5kcmFnKClcbiAgICAgIC5zdWJqZWN0KGZ1bmN0aW9uIChldmVudCwgZDogQmFzZVBvaW50KSB7XG4gICAgICAgIGNvbnN0IG5vZGUgPSBkMy5zZWxlY3QodGhpcyk7XG4gICAgICAgIHJldHVybiB7IHg6IG5vZGUuYXR0cignY3gnKSwgeTogbm9kZS5hdHRyKCdjeScpIH07XG4gICAgICB9KVxuICAgICAgLm9uKFxuICAgICAgICAnc3RhcnQgZHJhZyBlbmQnLFxuICAgICAgICBmdW5jdGlvbiAoZXZlbnQ6IGQzLkQzRHJhZ0V2ZW50PGFueSwgYW55LCBhbnk+LCBkOiBCYXNlUG9pbnQpIHtcbiAgICAgICAgICBjb25zdCBub2RlID0gZDMuc2VsZWN0KHRoaXMpO1xuXG4gICAgICAgICAgZHJhZyhub2RlLCBldmVudCwgZCk7XG4gICAgICAgIH1cbiAgICAgICk7XG5cbiAgICBjb25zdCBkcmFnZ2FibGVNYXJrZXJzID0gdGhpcy5zZXJpZXMuZGF0YT8uZmlsdGVyKFxuICAgICAgKF8pID0+IF8/Lm1hcmtlciAmJiBfPy5tYXJrZXI/LmRyYWdnYWJsZVxuICAgICk7XG5cbiAgICBjb25zdCBlbGVtZW50ID0gZDNcbiAgICAgIC5zZWxlY3QodGhpcy5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQpXG4gICAgICAuc2VsZWN0QWxsKCcuZHJhZ2dhYmxlLW1hcmtlcicpXG4gICAgICAuZGF0YShkcmFnZ2FibGVNYXJrZXJzKTtcblxuICAgIGVsZW1lbnQuY2FsbChkcmFnTWFya2VycyBhcyBhbnkpO1xuXG4gICAgdGhpcy5zdmdFbGVtZW50ID0gZDNcbiAgICAgIC5zZWxlY3QodGhpcy5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQpXG4gICAgICAuc2VsZWN0KCcubGluZScpXG4gICAgICAubm9kZSgpIGFzIFNWR0dlb21ldHJ5RWxlbWVudDtcbiAgfVxuXG4gIGdldFBhdGgoKSB7XG4gICAgdGhpcy54ID0gdGhpcy5zY2FsZVNlcnZpY2UueFNjYWxlcy5nZXQodGhpcy5zZXJpZXMueEF4aXNJbmRleCk7XG4gICAgdGhpcy55ID0gdGhpcy5zY2FsZVNlcnZpY2UueVNjYWxlcy5nZXQodGhpcy5zZXJpZXMueUF4aXNJbmRleCk7XG5cbiAgICBjb25zdCBsaW5lID0gZDNcbiAgICAgIC5saW5lPEJhc2VQb2ludD4oKVxuICAgICAgLmRlZmluZWQoKHBvaW50KSA9PiBwb2ludC54ICE9PSBudWxsIHx8IHBvaW50LnkgIT09IG51bGwpXG4gICAgICAueCgocG9pbnQpID0+IHRoaXMueChwb2ludC54KSlcbiAgICAgIC55KChwb2ludCkgPT4gdGhpcy55KHBvaW50LnkpKTtcblxuICAgIGNvbnN0IHBhdGggPSBsaW5lKHRoaXMuc2VyaWVzLmRhdGEpO1xuXG4gICAgcmV0dXJuIHBhdGg7XG4gIH1cblxuICBnZXRNYXJrZXJzKCkge1xuICAgIHJldHVybiB0aGlzLnNlcmllcy5kYXRhPy5maWx0ZXIoKF8pID0+IF8/Lm1hcmtlcik7XG4gIH1cblxuICBnZXRUcmFuc2Zvcm0oZXZlbnQ6IGFueSk6IFBpY2s8QmFzZVBvaW50LCAneCcgfCAneSc+IHtcbiAgICBjb25zdCBtb3VzZSA9IGQzLnBvaW50ZXIoZXZlbnQpO1xuXG4gICAgY29uc3QgZm91bmRYID0gdGhpcy5zY2FsZVNlcnZpY2UueFNjYWxlcy5nZXQodGhpcy5zZXJpZXMueEF4aXNJbmRleCk7XG4gICAgY29uc3QgZm91bmRZID0gdGhpcy5zY2FsZVNlcnZpY2UueVNjYWxlcy5nZXQodGhpcy5zZXJpZXMueUF4aXNJbmRleCk7XG5cbiAgICBjb25zdCB0b29sdGlwVHJhY2tpbmcgPSB0aGlzLnN2Yy5jb25maWc/LnRvb2x0aXA/LnRyYWNraW5nO1xuXG4gICAgY29uc3QgbGluZUludGVyc2VjdGlvbiA9IChcbiAgICAgIHAwX3gsXG4gICAgICBwMF95LFxuICAgICAgcDFfeCxcbiAgICAgIHAxX3ksXG4gICAgICBwMl94LFxuICAgICAgcDJfeSxcbiAgICAgIHAzX3gsXG4gICAgICBwM195XG4gICAgKSA9PiB7XG4gICAgICBjb25zdCByViA9IHt9IGFzIGFueTtcbiAgICAgIGxldCBzMV94LCBzMV95LCBzMl94LCBzMl95O1xuICAgICAgczFfeCA9IHAxX3ggLSBwMF94O1xuICAgICAgczFfeSA9IHAxX3kgLSBwMF95O1xuICAgICAgczJfeCA9IHAzX3ggLSBwMl94O1xuICAgICAgczJfeSA9IHAzX3kgLSBwMl95O1xuXG4gICAgICBsZXQgcywgdDtcbiAgICAgIHMgPVxuICAgICAgICAoLXMxX3kgKiAocDBfeCAtIHAyX3gpICsgczFfeCAqIChwMF95IC0gcDJfeSkpIC9cbiAgICAgICAgKC1zMl94ICogczFfeSArIHMxX3ggKiBzMl95KTtcbiAgICAgIHQgPVxuICAgICAgICAoczJfeCAqIChwMF95IC0gcDJfeSkgLSBzMl95ICogKHAwX3ggLSBwMl94KSkgL1xuICAgICAgICAoLXMyX3ggKiBzMV95ICsgczFfeCAqIHMyX3kpO1xuXG4gICAgICBpZiAocyA+PSAwICYmIHMgPD0gMSAmJiB0ID49IDAgJiYgdCA8PSAxKSB7XG4gICAgICAgIC8vIENvbGxpc2lvbiBkZXRlY3RlZFxuICAgICAgICByVi54ID0gcDBfeCArIHQgKiBzMV94O1xuICAgICAgICByVi55ID0gcDBfeSArIHQgKiBzMV95O1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gclY7XG4gICAgfTtcblxuICAgIGlmICh0b29sdGlwVHJhY2tpbmcgPT09IFRvb2x0aXBUcmFja2luZy54KSB7XG4gICAgICBjb25zdCBiaXNlY3QgPSBkMy5iaXNlY3RvcigoXzogQmFzZVBvaW50KSA9PiBfLngpLnJpZ2h0O1xuXG4gICAgICBjb25zdCB4MCA9IGZvdW5kWC5pbnZlcnQobW91c2VbMF0pO1xuICAgICAgY29uc3QgcmlnaHRJZCA9IGJpc2VjdCh0aGlzLnNlcmllcy5kYXRhLCB4MCk7XG5cbiAgICAgIGNvbnN0IHJhbmdlID0gZm91bmRZLnJhbmdlKCk7XG5cbiAgICAgIGNvbnN0IGludGVyc2VjdCA9IGxpbmVJbnRlcnNlY3Rpb24oXG4gICAgICAgIG1vdXNlWzBdLFxuICAgICAgICByYW5nZVswXSxcbiAgICAgICAgbW91c2VbMF0sXG4gICAgICAgIHJhbmdlWzFdLFxuICAgICAgICBmb3VuZFgodGhpcy5zZXJpZXMuZGF0YVtyaWdodElkIC0gMV0/LngpLFxuICAgICAgICBmb3VuZFkodGhpcy5zZXJpZXMuZGF0YVtyaWdodElkIC0gMV0/LnkpLFxuICAgICAgICBmb3VuZFgodGhpcy5zZXJpZXMuZGF0YVtyaWdodElkXT8ueCksXG4gICAgICAgIGZvdW5kWSh0aGlzLnNlcmllcy5kYXRhW3JpZ2h0SWRdPy55KVxuICAgICAgKTtcblxuICAgICAgY29uc29sZS5sb2coaW50ZXJzZWN0KTtcblxuICAgICAgdGhpcy5zdmMuc2V0VG9vbHRpcCh7XG4gICAgICAgIHBvaW50OiB7IHg6IGZvdW5kWC5pbnZlcnQoaW50ZXJzZWN0LngpLCB5OiBmb3VuZFkuaW52ZXJ0KGludGVyc2VjdC55KSB9LFxuICAgICAgICBzZXJpZXM6IHRoaXMuc2VyaWVzLFxuICAgICAgfSk7XG5cbiAgICAgIHJldHVybiB7XG4gICAgICAgIHg6IGludGVyc2VjdC54LFxuICAgICAgICB5OiBpbnRlcnNlY3QueSxcbiAgICAgIH07XG4gICAgfVxuXG4gICAgaWYgKHRvb2x0aXBUcmFja2luZyA9PT0gVG9vbHRpcFRyYWNraW5nLnkpIHtcbiAgICAgIGNvbnN0IGJpc2VjdCA9IGQzLmJpc2VjdG9yKChfOiBCYXNlUG9pbnQpID0+IF8ueSkucmlnaHQ7XG5cbiAgICAgIGNvbnN0IHkwID0gZm91bmRZLmludmVydChtb3VzZVsxXSk7XG5cbiAgICAgIGNvbnN0IHJpZ2h0SWQgPSBiaXNlY3QodGhpcy5zZXJpZXMuZGF0YSwgeTApO1xuICAgICAgY29uc3QgcmFuZ2UgPSBmb3VuZFgucmFuZ2UoKTtcblxuICAgICAgY29uc3QgaW50ZXJzZWN0ID0gbGluZUludGVyc2VjdGlvbihcbiAgICAgICAgcmFuZ2VbMF0sXG4gICAgICAgIG1vdXNlWzFdLFxuICAgICAgICByYW5nZVsxXSxcbiAgICAgICAgbW91c2VbMV0sXG4gICAgICAgIGZvdW5kWCh0aGlzLnNlcmllcy5kYXRhW3JpZ2h0SWQgLSAxXT8ueCksXG4gICAgICAgIGZvdW5kWSh0aGlzLnNlcmllcy5kYXRhW3JpZ2h0SWQgLSAxXT8ueSksXG4gICAgICAgIGZvdW5kWCh0aGlzLnNlcmllcy5kYXRhW3JpZ2h0SWRdPy54KSxcbiAgICAgICAgZm91bmRZKHRoaXMuc2VyaWVzLmRhdGFbcmlnaHRJZF0/LnkpXG4gICAgICApO1xuXG4gICAgICB0aGlzLnN2Yy5zZXRUb29sdGlwKHtcbiAgICAgICAgcG9pbnQ6IHsgeDogZm91bmRYLmludmVydChpbnRlcnNlY3QueCksIHk6IGZvdW5kWS5pbnZlcnQoaW50ZXJzZWN0LnkpIH0sXG4gICAgICAgIHNlcmllczogdGhpcy5zZXJpZXMsXG4gICAgICB9KTtcblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgeDogaW50ZXJzZWN0LngsXG4gICAgICAgIHk6IGludGVyc2VjdC55LFxuICAgICAgfTtcbiAgICB9XG4gIH1cbn1cbiIsIjxzdmc6cGF0aFxuICBjbGFzcz1cImxpbmVcIlxuICBbYXR0ci5kXT1cImdldFBhdGgoKVwiXG4gIFthdHRyLnN0cm9rZV09XCJzZXJpZXMuY29sb3JcIlxuICBbYXR0ci5zdHJva2Utd2lkdGhdPVwic2VyaWVzLnN0eWxlPy5zdHJva2VXaWR0aFwiXG4gIGZpbGw9XCJub25lXCI+XG48L3N2ZzpwYXRoPlxuXG48bmctY29udGFpbmVyICpuZ0lmPVwidHJhbnNmb3JtIHwgYXN5bmMgYXMgdFwiPlxuICA8c3ZnOmNpcmNsZVxuICAgIHI9XCIzXCJcbiAgICBbYXR0ci5maWxsXT1cInNlcmllcy5jb2xvclwiXG4gICAgW2F0dHIudHJhbnNmb3JtXT1cIid0cmFuc2xhdGUoJysgdC54ICsnLCAnKyB0LnkgKycpJ1wiXG4gICAgW2F0dHIub3BhY2l0eV09XCJkaXNwbGF5IHwgYXN5bmNcIj5cbiAgPC9zdmc6Y2lyY2xlPlxuPC9uZy1jb250YWluZXI+XG5cbjxuZy1jb250YWluZXIgKm5nSWY9XCJnZXRNYXJrZXJzKCkgYXMgbWFya2Vyc1wiPlxuXG4gICAgPHN2ZzpjaXJjbGVcbiAgICAgIGNsYXNzPVwibWFya2VyXCJcbiAgICAgICpuZ0Zvcj1cImxldCBwb2ludCBvZiBtYXJrZXJzXCJcbiAgICAgIFtjbGFzcy5kcmFnZ2FibGUtbWFya2VyXT1cInBvaW50Py5tYXJrZXI/LmRyYWdnYWJsZVwiXG4gICAgICBbYXR0ci5yXT1cInBvaW50Lm1hcmtlci5zdHlsZT8ucmFkaXVzID8/IDVcIlxuICAgICAgW2F0dHIuZmlsbF09XCJwb2ludC5tYXJrZXIuc3R5bGU/LmZpbGwgPz8gJ3RyYW5zcGFyZW50J1wiXG4gICAgICBbYXR0ci5zdHJva2VdPVwicG9pbnQubWFya2VyLnN0eWxlPy5zdHJva2UgPz8gJ25vbmUnXCJcbiAgICAgIFthdHRyLnN0cm9rZS13aWR0aF09XCJwb2ludC5tYXJrZXIuc3R5bGU/LnN0cm9rZVdpZHRoXCJcbiAgICAgIFthdHRyLnN0cm9rZS1kYXNoYXJyYXldPVwicG9pbnQubWFya2VyLnN0eWxlPy5zdHJva2VEYXNoYXJyYXlcIlxuICAgICAgW2F0dHIuY3hdPVwieChwb2ludC54KVwiXG4gICAgICBbYXR0ci5jeV09XCJ5KHBvaW50LnkpXCJcbiAgICA+XG4gICAgPC9zdmc6Y2lyY2xlPlxuXG5cbjwvbmctY29udGFpbmVyPlxuXG5cblxuIl19
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import { ChangeDetectionStrategy, ChangeDetectorRef, Component, Input, } from '@angular/core';
|
|
2
|
+
import { SeriesBaseComponent } from '../../base/series-base.component';
|
|
3
|
+
import { LineSeriesComponent } from '../series/line/line-series.component';
|
|
4
|
+
import { BarSeriesComponent } from '../series/bar/bar-series.component';
|
|
5
|
+
import { tap } from 'rxjs';
|
|
6
|
+
import { throttleTime } from 'rxjs/operators';
|
|
7
|
+
import { SeriesType } from '../../model/enum/series-type';
|
|
8
|
+
import * as i0 from "@angular/core";
|
|
9
|
+
import * as i1 from "../../service/chart.service";
|
|
10
|
+
export class SeriesHostComponent {
|
|
11
|
+
constructor(viewContainerRef, chartService) {
|
|
12
|
+
this.viewContainerRef = viewContainerRef;
|
|
13
|
+
this.chartService = chartService;
|
|
14
|
+
this.defaultSeriesTypeMapping = new Map()
|
|
15
|
+
.set(SeriesType.line, LineSeriesComponent)
|
|
16
|
+
.set(SeriesType.bar, BarSeriesComponent);
|
|
17
|
+
this._init = false;
|
|
18
|
+
this.chartService.size
|
|
19
|
+
.pipe(throttleTime(100, null, { trailing: true }), tap(() => {
|
|
20
|
+
this._componentRef?.injector.get(ChangeDetectorRef).detectChanges();
|
|
21
|
+
}))
|
|
22
|
+
.subscribe();
|
|
23
|
+
}
|
|
24
|
+
ngOnInit() {
|
|
25
|
+
if (!SeriesBaseComponent.isPrototypeOf(this.series.component)) {
|
|
26
|
+
this.series.component =
|
|
27
|
+
this.defaultSeriesTypeMapping.get(this.series.type) ||
|
|
28
|
+
LineSeriesComponent;
|
|
29
|
+
}
|
|
30
|
+
this._componentRef = this.viewContainerRef.createComponent(this.series.component);
|
|
31
|
+
this._componentRef.instance.series = this.series;
|
|
32
|
+
this._componentRef.instance.size = this.size;
|
|
33
|
+
this._init = true;
|
|
34
|
+
}
|
|
35
|
+
ngOnDestroy() { }
|
|
36
|
+
ngOnChanges(changes) {
|
|
37
|
+
if (this._init && changes.hasOwnProperty('series')) {
|
|
38
|
+
this._componentRef.instance.series = this.series;
|
|
39
|
+
this._componentRef.instance.size = this.size;
|
|
40
|
+
this._componentRef.injector.get(ChangeDetectorRef).markForCheck();
|
|
41
|
+
this._componentRef.injector.get(ChangeDetectorRef).detectChanges();
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
SeriesHostComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.1", ngImport: i0, type: SeriesHostComponent, deps: [{ token: i0.ViewContainerRef }, { token: i1.ChartService }], target: i0.ɵɵFactoryTarget.Component });
|
|
46
|
+
SeriesHostComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.1", type: SeriesHostComponent, selector: "[teta-series-host]", inputs: { series: "series", size: "size" }, usesOnChanges: true, ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
47
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.1", ngImport: i0, type: SeriesHostComponent, decorators: [{
|
|
48
|
+
type: Component,
|
|
49
|
+
args: [{
|
|
50
|
+
selector: '[teta-series-host]',
|
|
51
|
+
template: '',
|
|
52
|
+
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
53
|
+
}]
|
|
54
|
+
}], ctorParameters: function () { return [{ type: i0.ViewContainerRef }, { type: i1.ChartService }]; }, propDecorators: { series: [{
|
|
55
|
+
type: Input
|
|
56
|
+
}], size: [{
|
|
57
|
+
type: Input
|
|
58
|
+
}] } });
|
|
59
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VyaWVzLWhvc3QuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2NoYXJ0L2NoYXJ0LWNvbnRhaW5lci9zZXJpZXMtaG9zdC9zZXJpZXMtaG9zdC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixpQkFBaUIsRUFDakIsU0FBUyxFQUVULEtBQUssR0FJTixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUN2RSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUMzRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUt4RSxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzNCLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM5QyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sOEJBQThCLENBQUM7OztBQU8xRCxNQUFNLE9BQU8sbUJBQW1CO0lBYzlCLFlBQ1UsZ0JBQWtDLEVBQ2xDLFlBQTBCO1FBRDFCLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUFDbEMsaUJBQVksR0FBWixZQUFZLENBQWM7UUFaNUIsNkJBQXdCLEdBQUcsSUFBSSxHQUFHLEVBR3ZDO2FBQ0EsR0FBRyxDQUFDLFVBQVUsQ0FBQyxJQUFJLEVBQUUsbUJBQW1CLENBQUM7YUFDekMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxHQUFHLEVBQUUsa0JBQWtCLENBQUMsQ0FBQztRQUVuQyxVQUFLLEdBQUcsS0FBSyxDQUFDO1FBT3BCLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSTthQUNuQixJQUFJLENBQ0gsWUFBWSxDQUFDLEdBQUcsRUFBRSxJQUFJLEVBQUUsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLENBQUMsRUFDM0MsR0FBRyxDQUFDLEdBQUcsRUFBRTtZQUNQLElBQUksQ0FBQyxhQUFhLEVBQUUsUUFBUSxDQUFDLEdBQUcsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQ3RFLENBQUMsQ0FBQyxDQUNIO2FBQ0EsU0FBUyxFQUFFLENBQUM7SUFDakIsQ0FBQztJQUVELFFBQVE7UUFDTixJQUFJLENBQUMsbUJBQW1CLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLEVBQUU7WUFDN0QsSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTO2dCQUNuQixJQUFJLENBQUMsd0JBQXdCLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDO29CQUNuRCxtQkFBbUIsQ0FBQztTQUN2QjtRQUVELElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLGVBQWUsQ0FDeEQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQ3RCLENBQUM7UUFDRixJQUFJLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQztRQUNqRCxJQUFJLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQztRQUM3QyxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQztJQUNwQixDQUFDO0lBRUQsV0FBVyxLQUFVLENBQUM7SUFFdEIsV0FBVyxDQUFDLE9BQXNCO1FBQ2hDLElBQUksSUFBSSxDQUFDLEtBQUssSUFBSSxPQUFPLENBQUMsY0FBYyxDQUFDLFFBQVEsQ0FBQyxFQUFFO1lBQ2xELElBQUksQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDO1lBQ2pELElBQUksQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDO1lBQzdDLElBQUksQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLFlBQVksRUFBRSxDQUFDO1lBQ2xFLElBQUksQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLGFBQWEsRUFBRSxDQUFDO1NBQ3BFO0lBQ0gsQ0FBQzs7Z0hBcERVLG1CQUFtQjtvR0FBbkIsbUJBQW1CLDJIQUhwQixFQUFFOzJGQUdELG1CQUFtQjtrQkFML0IsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsb0JBQW9CO29CQUM5QixRQUFRLEVBQUUsRUFBRTtvQkFDWixlQUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTtpQkFDaEQ7a0lBRVUsTUFBTTtzQkFBZCxLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBDb21wb25lbnRSZWYsXG4gIElucHV0LFxuICBPbkluaXQsXG4gIFNpbXBsZUNoYW5nZXMsXG4gIFZpZXdDb250YWluZXJSZWYsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU2VyaWVzQmFzZUNvbXBvbmVudCB9IGZyb20gJy4uLy4uL2Jhc2Uvc2VyaWVzLWJhc2UuY29tcG9uZW50JztcbmltcG9ydCB7IExpbmVTZXJpZXNDb21wb25lbnQgfSBmcm9tICcuLi9zZXJpZXMvbGluZS9saW5lLXNlcmllcy5jb21wb25lbnQnO1xuaW1wb3J0IHsgQmFyU2VyaWVzQ29tcG9uZW50IH0gZnJvbSAnLi4vc2VyaWVzL2Jhci9iYXItc2VyaWVzLmNvbXBvbmVudCc7XG5cbmltcG9ydCB7IFNlcmllcyB9IGZyb20gJy4uLy4uL21vZGVsL3Nlcmllcyc7XG5pbXBvcnQgeyBCYXNlUG9pbnQgfSBmcm9tICcuLi8uLi9tb2RlbC9iYXNlLXBvaW50JztcbmltcG9ydCB7IENoYXJ0U2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2UvY2hhcnQuc2VydmljZSc7XG5pbXBvcnQgeyB0YXAgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IHRocm90dGxlVGltZSB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IFNlcmllc1R5cGUgfSBmcm9tICcuLi8uLi9tb2RlbC9lbnVtL3Nlcmllcy10eXBlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnW3RldGEtc2VyaWVzLWhvc3RdJyxcbiAgdGVtcGxhdGU6ICcnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgU2VyaWVzSG9zdENvbXBvbmVudDxUIGV4dGVuZHMgQmFzZVBvaW50PiBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIEBJbnB1dCgpIHNlcmllczogU2VyaWVzPFQ+O1xuICBASW5wdXQoKSBzaXplOiBET01SZWN0O1xuXG4gIHByaXZhdGUgZGVmYXVsdFNlcmllc1R5cGVNYXBwaW5nID0gbmV3IE1hcDxcbiAgICBTZXJpZXNUeXBlLFxuICAgIHR5cGVvZiBTZXJpZXNCYXNlQ29tcG9uZW50XG4gID4oKVxuICAgIC5zZXQoU2VyaWVzVHlwZS5saW5lLCBMaW5lU2VyaWVzQ29tcG9uZW50KVxuICAgIC5zZXQoU2VyaWVzVHlwZS5iYXIsIEJhclNlcmllc0NvbXBvbmVudCk7XG5cbiAgcHJpdmF0ZSBfaW5pdCA9IGZhbHNlO1xuICBwcml2YXRlIF9jb21wb25lbnRSZWY6IENvbXBvbmVudFJlZjxhbnk+O1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgdmlld0NvbnRhaW5lclJlZjogVmlld0NvbnRhaW5lclJlZixcbiAgICBwcml2YXRlIGNoYXJ0U2VydmljZTogQ2hhcnRTZXJ2aWNlXG4gICkge1xuICAgIHRoaXMuY2hhcnRTZXJ2aWNlLnNpemVcbiAgICAgIC5waXBlKFxuICAgICAgICB0aHJvdHRsZVRpbWUoMTAwLCBudWxsLCB7IHRyYWlsaW5nOiB0cnVlIH0pLFxuICAgICAgICB0YXAoKCkgPT4ge1xuICAgICAgICAgIHRoaXMuX2NvbXBvbmVudFJlZj8uaW5qZWN0b3IuZ2V0KENoYW5nZURldGVjdG9yUmVmKS5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgIH0pXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCk7XG4gIH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICBpZiAoIVNlcmllc0Jhc2VDb21wb25lbnQuaXNQcm90b3R5cGVPZih0aGlzLnNlcmllcy5jb21wb25lbnQpKSB7XG4gICAgICB0aGlzLnNlcmllcy5jb21wb25lbnQgPVxuICAgICAgICB0aGlzLmRlZmF1bHRTZXJpZXNUeXBlTWFwcGluZy5nZXQodGhpcy5zZXJpZXMudHlwZSkgfHxcbiAgICAgICAgTGluZVNlcmllc0NvbXBvbmVudDtcbiAgICB9XG5cbiAgICB0aGlzLl9jb21wb25lbnRSZWYgPSB0aGlzLnZpZXdDb250YWluZXJSZWYuY3JlYXRlQ29tcG9uZW50KFxuICAgICAgdGhpcy5zZXJpZXMuY29tcG9uZW50XG4gICAgKTtcbiAgICB0aGlzLl9jb21wb25lbnRSZWYuaW5zdGFuY2Uuc2VyaWVzID0gdGhpcy5zZXJpZXM7XG4gICAgdGhpcy5fY29tcG9uZW50UmVmLmluc3RhbmNlLnNpemUgPSB0aGlzLnNpemU7XG4gICAgdGhpcy5faW5pdCA9IHRydWU7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHt9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIGlmICh0aGlzLl9pbml0ICYmIGNoYW5nZXMuaGFzT3duUHJvcGVydHkoJ3NlcmllcycpKSB7XG4gICAgICB0aGlzLl9jb21wb25lbnRSZWYuaW5zdGFuY2Uuc2VyaWVzID0gdGhpcy5zZXJpZXM7XG4gICAgICB0aGlzLl9jb21wb25lbnRSZWYuaW5zdGFuY2Uuc2l6ZSA9IHRoaXMuc2l6ZTtcbiAgICAgIHRoaXMuX2NvbXBvbmVudFJlZi5pbmplY3Rvci5nZXQoQ2hhbmdlRGV0ZWN0b3JSZWYpLm1hcmtGb3JDaGVjaygpO1xuICAgICAgdGhpcy5fY29tcG9uZW50UmVmLmluamVjdG9yLmdldChDaGFuZ2VEZXRlY3RvclJlZikuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH1cbiAgfVxufVxuIl19
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
import { Component, Input, } from '@angular/core';
|
|
2
|
+
import { filter, map, merge, takeWhile, tap } from 'rxjs';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
import * as i1 from "../../service/chart.service";
|
|
5
|
+
import * as i2 from "../../service/zoom.service";
|
|
6
|
+
import * as i3 from "@angular/platform-browser";
|
|
7
|
+
import * as i4 from "@angular/common";
|
|
8
|
+
export class TooltipComponent {
|
|
9
|
+
constructor(svc, cdr, zoomService, sanitizer) {
|
|
10
|
+
this.svc = svc;
|
|
11
|
+
this.cdr = cdr;
|
|
12
|
+
this.zoomService = zoomService;
|
|
13
|
+
this.sanitizer = sanitizer;
|
|
14
|
+
this.tooltips = [];
|
|
15
|
+
this.alive = true;
|
|
16
|
+
}
|
|
17
|
+
ngOnInit() {
|
|
18
|
+
this.display = merge(this.svc.pointerMove, this.zoomService.zoomed).pipe(map(({ event }) => {
|
|
19
|
+
const opacity = event?.type === 'mousemove' ? 1 : 0;
|
|
20
|
+
return opacity;
|
|
21
|
+
}), tap(() => {
|
|
22
|
+
requestAnimationFrame(() => {
|
|
23
|
+
this.cdr.detectChanges();
|
|
24
|
+
});
|
|
25
|
+
}));
|
|
26
|
+
this.position = this.svc.pointerMove.pipe(filter(({ event }) => event), map((_) => {
|
|
27
|
+
return this.getPoisition(_);
|
|
28
|
+
}), tap((_) => this.cdr.detectChanges()));
|
|
29
|
+
const transformHtml = (html) => {
|
|
30
|
+
return this.sanitizer.bypassSecurityTrustHtml(html);
|
|
31
|
+
};
|
|
32
|
+
const defaultFormatter = (tooltips) => {
|
|
33
|
+
let html = '';
|
|
34
|
+
tooltips.forEach((_) => {
|
|
35
|
+
const indicatorStyle = `display:block; width: 10px; height: 2px; background-color: ${_?.series?.color}`;
|
|
36
|
+
html += `<div class="display-flex align-center"><span class="margin-right-1" style="${indicatorStyle}"></span>
|
|
37
|
+
<span class="font-title-3">${_.series.name}
|
|
38
|
+
<span class="font-body-3">x: ${_.point.x?.toFixed(2)} y: ${_.point.y?.toFixed(2)}</span></span></div>`;
|
|
39
|
+
});
|
|
40
|
+
return transformHtml(html);
|
|
41
|
+
};
|
|
42
|
+
const formatter = this.svc.config?.tooltip?.format;
|
|
43
|
+
this.displayTooltips = merge(this.svc.pointerMove.pipe(tap((_) => (this.tooltips = []))), this.svc.tooltips).pipe(takeWhile((_) => this.alive), filter((_) => !_['event']), map((tooltip) => {
|
|
44
|
+
if (tooltip) {
|
|
45
|
+
this.tooltips.push(tooltip);
|
|
46
|
+
}
|
|
47
|
+
const formatted = formatter
|
|
48
|
+
? formatter(this.tooltips)
|
|
49
|
+
: defaultFormatter(this.tooltips);
|
|
50
|
+
return formatted;
|
|
51
|
+
}));
|
|
52
|
+
}
|
|
53
|
+
getPoisition({ event }) {
|
|
54
|
+
const centerX = this.size.width / 2;
|
|
55
|
+
const centerY = this.size.height / 2;
|
|
56
|
+
const padding = { x: 10, y: 10 };
|
|
57
|
+
const scene = {
|
|
58
|
+
left: event.pageX > centerX ? 'initial' : `${event.pageX + padding.x}px`,
|
|
59
|
+
top: event.pageY > centerY ? 'initial' : `${event.pageY + padding.y}px`,
|
|
60
|
+
bottom: event.pageY > centerY
|
|
61
|
+
? `${window.innerHeight - event.pageY}px`
|
|
62
|
+
: 'initial',
|
|
63
|
+
right: event.pageX > centerX
|
|
64
|
+
? `${window.innerWidth - event.pageX + padding.x}px`
|
|
65
|
+
: 'initial',
|
|
66
|
+
};
|
|
67
|
+
return scene;
|
|
68
|
+
}
|
|
69
|
+
ngOnDestroy() {
|
|
70
|
+
this.alive = false;
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
TooltipComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.1", ngImport: i0, type: TooltipComponent, deps: [{ token: i1.ChartService }, { token: i0.ChangeDetectorRef }, { token: i2.ZoomService }, { token: i3.DomSanitizer }], target: i0.ɵɵFactoryTarget.Component });
|
|
74
|
+
TooltipComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.1", type: TooltipComponent, selector: "teta-tooltip", inputs: { size: "size" }, ngImport: i0, template: "<ng-container *ngIf=\"position | async as p\">\n\n <div class=\"chart-tooltip color-text-90 bg-background-50 shadow-2 padding-2 border-radius-1\"\n [style.position]=\"'fixed'\"\n [style.opacity]=\"display | async\"\n style=\"pointer-events: none;\"\n [style.left]=\"p.left\"\n [style.top]=\"p.top\"\n [style.bottom]=\"p.bottom\"\n [style.right]=\"p.right\"\n [innerHTML]=\"displayTooltips | async\">\n </div>\n</ng-container>\n\n", styles: [":host{position:absolute}.chart-tooltip{transition:all .1s ease}\n"], directives: [{ type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], pipes: { "async": i4.AsyncPipe } });
|
|
75
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.1", ngImport: i0, type: TooltipComponent, decorators: [{
|
|
76
|
+
type: Component,
|
|
77
|
+
args: [{ selector: 'teta-tooltip', template: "<ng-container *ngIf=\"position | async as p\">\n\n <div class=\"chart-tooltip color-text-90 bg-background-50 shadow-2 padding-2 border-radius-1\"\n [style.position]=\"'fixed'\"\n [style.opacity]=\"display | async\"\n style=\"pointer-events: none;\"\n [style.left]=\"p.left\"\n [style.top]=\"p.top\"\n [style.bottom]=\"p.bottom\"\n [style.right]=\"p.right\"\n [innerHTML]=\"displayTooltips | async\">\n </div>\n</ng-container>\n\n", styles: [":host{position:absolute}.chart-tooltip{transition:all .1s ease}\n"] }]
|
|
78
|
+
}], ctorParameters: function () { return [{ type: i1.ChartService }, { type: i0.ChangeDetectorRef }, { type: i2.ZoomService }, { type: i3.DomSanitizer }]; }, propDecorators: { size: [{
|
|
79
|
+
type: Input
|
|
80
|
+
}] } });
|
|
81
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9vbHRpcC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvY2hhcnQvY2hhcnQtY29udGFpbmVyL3Rvb2x0aXAvdG9vbHRpcC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9zcmMvY2hhcnQvY2hhcnQtY29udGFpbmVyL3Rvb2x0aXAvdG9vbHRpcC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsU0FBUyxFQUNULEtBQUssR0FHTixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQWMsU0FBUyxFQUFFLEdBQUcsRUFBRSxNQUFNLE1BQU0sQ0FBQzs7Ozs7O0FBWXRFLE1BQU0sT0FBTyxnQkFBZ0I7SUFrQjNCLFlBQ1UsR0FBaUIsRUFDakIsR0FBc0IsRUFDdEIsV0FBd0IsRUFDeEIsU0FBdUI7UUFIdkIsUUFBRyxHQUFILEdBQUcsQ0FBYztRQUNqQixRQUFHLEdBQUgsR0FBRyxDQUFtQjtRQUN0QixnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUN4QixjQUFTLEdBQVQsU0FBUyxDQUFjO1FBVmpDLGFBQVEsR0FBRyxFQUFFLENBQUM7UUFFTixVQUFLLEdBQUcsSUFBSSxDQUFDO0lBU2xCLENBQUM7SUFFSixRQUFRO1FBQ04sSUFBSSxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxXQUFXLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLENBQ3RFLEdBQUcsQ0FBQyxDQUFDLEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFBRTtZQUNoQixNQUFNLE9BQU8sR0FBRyxLQUFLLEVBQUUsSUFBSSxLQUFLLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFFcEQsT0FBTyxPQUFPLENBQUM7UUFDakIs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RGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgSW5wdXQsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGZpbHRlciwgbWFwLCBtZXJnZSwgT2JzZXJ2YWJsZSwgdGFrZVdoaWxlLCB0YXAgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IENoYXJ0U2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2UvY2hhcnQuc2VydmljZSc7XG5pbXBvcnQgeyBab29tU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2Uvem9vbS5zZXJ2aWNlJztcbmltcG9ydCB7IElDaGFydEV2ZW50IH0gZnJvbSAnLi4vLi4vbW9kZWwvaS1jaGFydC1ldmVudCc7XG5pbXBvcnQgeyBJRGlzcGxheVRvb2x0aXAgfSBmcm9tICcuLi8uLi9tb2RlbC9pLWRpc3BsYXktdG9vbHRpcCc7XG5pbXBvcnQgeyBEb21TYW5pdGl6ZXIgfSBmcm9tICdAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndGV0YS10b29sdGlwJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3Rvb2x0aXAuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi90b29sdGlwLmNvbXBvbmVudC5zY3NzJ10sXG59KVxuZXhwb3J0IGNsYXNzIFRvb2x0aXBDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gIEBJbnB1dCgpIHNpemU6IERPTVJlY3Q7XG5cbiAgcG9zaXRpb246IE9ic2VydmFibGU8e1xuICAgIGxlZnQ6IHN0cmluZztcbiAgICB0b3A6IHN0cmluZztcbiAgICBib3R0b206IHN0cmluZztcbiAgICByaWdodDogc3RyaW5nO1xuICB9PjtcblxuICBkaXNwbGF5VG9vbHRpcHM6IE9ic2VydmFibGU8c3RyaW5nPjtcblxuICB0b29sdGlwcyA9IFtdO1xuXG4gIHByaXZhdGUgYWxpdmUgPSB0cnVlO1xuXG4gIGRpc3BsYXk6IE9ic2VydmFibGU8bnVtYmVyPjtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHN2YzogQ2hhcnRTZXJ2aWNlLFxuICAgIHByaXZhdGUgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBwcml2YXRlIHpvb21TZXJ2aWNlOiBab29tU2VydmljZSxcbiAgICBwcml2YXRlIHNhbml0aXplcjogRG9tU2FuaXRpemVyXG4gICkge31cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmRpc3BsYXkgPSBtZXJnZSh0aGlzLnN2Yy5wb2ludGVyTW92ZSwgdGhpcy56b29tU2VydmljZS56b29tZWQpLnBpcGUoXG4gICAgICBtYXAoKHsgZXZlbnQgfSkgPT4ge1xuICAgICAgICBjb25zdCBvcGFjaXR5ID0gZXZlbnQ/LnR5cGUgPT09ICdtb3VzZW1vdmUnID8gMSA6IDA7XG5cbiAgICAgICAgcmV0dXJuIG9wYWNpdHk7XG4gICAgICB9KSxcbiAgICAgIHRhcCgoKSA9PiB7XG4gICAgICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZSgoKSA9PiB7XG4gICAgICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICB9KTtcbiAgICAgIH0pXG4gICAgKTtcblxuICAgIHRoaXMucG9zaXRpb24gPSB0aGlzLnN2Yy5wb2ludGVyTW92ZS5waXBlKFxuICAgICAgZmlsdGVyKCh7IGV2ZW50IH0pID0+IGV2ZW50KSxcbiAgICAgIG1hcCgoXykgPT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5nZXRQb2lzaXRpb24oXyk7XG4gICAgICB9KSxcbiAgICAgIHRhcCgoXykgPT4gdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpKVxuICAgICk7XG5cbiAgICBjb25zdCB0cmFuc2Zvcm1IdG1sID0gKGh0bWwpID0+IHtcbiAgICAgIHJldHVybiB0aGlzLnNhbml0aXplci5ieXBhc3NTZWN1cml0eVRydXN0SHRtbChodG1sKTtcbiAgICB9O1xuXG4gICAgY29uc3QgZGVmYXVsdEZvcm1hdHRlciA9ICh0b29sdGlwczogSURpc3BsYXlUb29sdGlwW10pID0+IHtcbiAgICAgIGxldCBodG1sID0gJyc7XG5cbiAgICAgIHRvb2x0aXBzLmZvckVhY2goKF8pID0+IHtcbiAgICAgICAgY29uc3QgaW5kaWNhdG9yU3R5bGUgPSBgZGlzcGxheTpibG9jazsgd2lkdGg6IDEwcHg7IGhlaWdodDogMnB4OyBiYWNrZ3JvdW5kLWNvbG9yOiAke18/LnNlcmllcz8uY29sb3J9YDtcblxuICAgICAgICBodG1sICs9IGA8ZGl2IGNsYXNzPVwiZGlzcGxheS1mbGV4IGFsaWduLWNlbnRlclwiPjxzcGFuIGNsYXNzPVwibWFyZ2luLXJpZ2h0LTFcIiBzdHlsZT1cIiR7aW5kaWNhdG9yU3R5bGV9XCI+PC9zcGFuPlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZm9udC10aXRsZS0zXCI+JHtfLnNlcmllcy5uYW1lfVxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZm9udC1ib2R5LTNcIj54OiAke18ucG9pbnQueD8udG9GaXhlZChcbiAgICAgICAgICAgIDJcbiAgICAgICAgICApfSB5OiAke18ucG9pbnQueT8udG9GaXhlZCgyKX08L3NwYW4+PC9zcGFuPjwvZGl2PmA7XG4gICAgICB9KTtcblxuICAgICAgcmV0dXJuIHRyYW5zZm9ybUh0bWwoaHRtbCk7XG4gICAgfTtcblxuICAgIGNvbnN0IGZvcm1hdHRlciA9IHRoaXMuc3ZjLmNvbmZpZz8udG9vbHRpcD8uZm9ybWF0O1xuXG4gICAgdGhpcy5kaXNwbGF5VG9vbHRpcHMgPSBtZXJnZShcbiAgICAgIHRoaXMuc3ZjLnBvaW50ZXJNb3ZlLnBpcGUodGFwKChfKSA9PiAodGhpcy50b29sdGlwcyA9IFtdKSkpLFxuICAgICAgdGhpcy5zdmMudG9vbHRpcHNcbiAgICApLnBpcGUoXG4gICAgICB0YWtlV2hpbGUoKF8pID0+IHRoaXMuYWxpdmUpLFxuICAgICAgZmlsdGVyKChfKSA9PiAhX1snZXZlbnQnXSksXG4gICAgICBtYXAoKHRvb2x0aXA6IGFueSkgPT4ge1xuICAgICAgICBpZiAodG9vbHRpcCkge1xuICAgICAgICAgIHRoaXMudG9vbHRpcHMucHVzaCh0b29sdGlwKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGZvcm1hdHRlZCA9IGZvcm1hdHRlclxuICAgICAgICAgID8gZm9ybWF0dGVyKHRoaXMudG9vbHRpcHMpXG4gICAgICAgICAgOiBkZWZhdWx0Rm9ybWF0dGVyKHRoaXMudG9vbHRpcHMpO1xuXG4gICAgICAgIHJldHVybiBmb3JtYXR0ZWQ7XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIGdldFBvaXNpdGlvbih7IGV2ZW50IH06IGFueSkge1xuICAgIGNvbnN0IGNlbnRlclggPSB0aGlzLnNpemUud2lkdGggLyAyO1xuICAgIGNvbnN0IGNlbnRlclkgPSB0aGlzLnNpemUuaGVpZ2h0IC8gMjtcblxuICAgIGNvbnN0IHBhZGRpbmcgPSB7IHg6IDEwLCB5OiAxMCB9O1xuXG4gICAgY29uc3Qgc2NlbmUgPSB7XG4gICAgICBsZWZ0OiBldmVudC5wYWdlWCA+IGNlbnRlclggPyAnaW5pdGlhbCcgOiBgJHtldmVudC5wYWdlWCArIHBhZGRpbmcueH1weGAsXG4gICAgICB0b3A6IGV2ZW50LnBhZ2VZID4gY2VudGVyWSA/ICdpbml0aWFsJyA6IGAke2V2ZW50LnBhZ2VZICsgcGFkZGluZy55fXB4YCxcbiAgICAgIGJvdHRvbTpcbiAgICAgICAgZXZlbnQucGFnZVkgPiBjZW50ZXJZXG4gICAgICAgICAgPyBgJHt3aW5kb3cuaW5uZXJIZWlnaHQgLSBldmVudC5wYWdlWX1weGBcbiAgICAgICAgICA6ICdpbml0aWFsJyxcbiAgICAgIHJpZ2h0OlxuICAgICAgICBldmVudC5wYWdlWCA+IGNlbnRlclhcbiAgICAgICAgICA/IGAke3dpbmRvdy5pbm5lcldpZHRoIC0gZXZlbnQucGFnZVggKyBwYWRkaW5nLnh9cHhgXG4gICAgICAgICAgOiAnaW5pdGlhbCcsXG4gICAgfTtcblxuICAgIHJldHVybiBzY2VuZTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMuYWxpdmUgPSBmYWxzZTtcbiAgfVxufVxuIiwiPG5nLWNvbnRhaW5lciAqbmdJZj1cInBvc2l0aW9uIHwgYXN5bmMgYXMgcFwiPlxuXG4gIDxkaXYgY2xhc3M9XCJjaGFydC10b29sdGlwIGNvbG9yLXRleHQtOTAgYmctYmFja2dyb3VuZC01MCBzaGFkb3ctMiBwYWRkaW5nLTIgYm9yZGVyLXJhZGl1cy0xXCJcbiAgICAgICBbc3R5bGUucG9zaXRpb25dPVwiJ2ZpeGVkJ1wiXG4gICAgICAgW3N0eWxlLm9wYWNpdHldPVwiZGlzcGxheSB8IGFzeW5jXCJcbiAgICAgICBzdHlsZT1cInBvaW50ZXItZXZlbnRzOiBub25lO1wiXG4gICAgICAgW3N0eWxlLmxlZnRdPVwicC5sZWZ0XCJcbiAgICAgICBbc3R5bGUudG9wXT1cInAudG9wXCJcbiAgICAgICBbc3R5bGUuYm90dG9tXT1cInAuYm90dG9tXCJcbiAgICAgICBbc3R5bGUucmlnaHRdPVwicC5yaWdodFwiXG4gICAgICAgW2lubmVySFRNTF09XCJkaXNwbGF5VG9vbHRpcHMgfCBhc3luY1wiPlxuICA8L2Rpdj5cbjwvbmctY29udGFpbmVyPlxuXG4iXX0=
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import { ChangeDetectionStrategy, Component, Input, ViewChild, } from '@angular/core';
|
|
2
|
+
import * as d3 from 'd3';
|
|
3
|
+
import { merge, takeWhile, tap } from 'rxjs';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
import * as i1 from "../../service/scale.service";
|
|
6
|
+
import * as i2 from "../../service/chart.service";
|
|
7
|
+
import * as i3 from "../../service/zoom.service";
|
|
8
|
+
export class XAxisComponent {
|
|
9
|
+
constructor(scaleService, chartService, cdr, zoomService) {
|
|
10
|
+
this.scaleService = scaleService;
|
|
11
|
+
this.chartService = chartService;
|
|
12
|
+
this.cdr = cdr;
|
|
13
|
+
this.zoomService = zoomService;
|
|
14
|
+
this._alive = true;
|
|
15
|
+
merge(this.zoomService.zoomed, this.chartService.size)
|
|
16
|
+
.pipe(takeWhile(() => this._alive), tap((_) => {
|
|
17
|
+
this.draw();
|
|
18
|
+
this.cdr.detectChanges();
|
|
19
|
+
}))
|
|
20
|
+
.subscribe();
|
|
21
|
+
}
|
|
22
|
+
ngOnInit() { }
|
|
23
|
+
ngOnDestroy() {
|
|
24
|
+
this._alive = false;
|
|
25
|
+
}
|
|
26
|
+
ngAfterViewInit() {
|
|
27
|
+
this.draw();
|
|
28
|
+
}
|
|
29
|
+
draw() {
|
|
30
|
+
const scale = this.scaleService.xScales.get(this.axis.index);
|
|
31
|
+
const axis = this.axis.options.opposite
|
|
32
|
+
? d3
|
|
33
|
+
.axisTop(scale)
|
|
34
|
+
.tickFormat(this.axis.options.tickFormat ?? this.axis.defaultFormatter())
|
|
35
|
+
: d3
|
|
36
|
+
.axisBottom(scale)
|
|
37
|
+
.tickFormat(this.axis.options.tickFormat ?? this.axis.defaultFormatter());
|
|
38
|
+
d3.select(this.node.nativeElement)
|
|
39
|
+
.call(axis)
|
|
40
|
+
.call((_) => _.select('.domain').remove());
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
XAxisComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.1", ngImport: i0, type: XAxisComponent, deps: [{ token: i1.ScaleService }, { token: i2.ChartService }, { token: i0.ChangeDetectorRef }, { token: i3.ZoomService }], target: i0.ɵɵFactoryTarget.Component });
|
|
44
|
+
XAxisComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.1", type: XAxisComponent, selector: "[teta-x-axis]", inputs: { axis: "axis", size: "size" }, viewQueries: [{ propertyName: "node", first: true, predicate: ["svg"], descendants: true }], ngImport: i0, template: "<svg:g #svg></svg:g>\n", styles: [":host .tick{stroke:var(--color-text-20)}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
45
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.1", ngImport: i0, type: XAxisComponent, decorators: [{
|
|
46
|
+
type: Component,
|
|
47
|
+
args: [{ selector: '[teta-x-axis]', changeDetection: ChangeDetectionStrategy.OnPush, template: "<svg:g #svg></svg:g>\n", styles: [":host .tick{stroke:var(--color-text-20)}\n"] }]
|
|
48
|
+
}], ctorParameters: function () { return [{ type: i1.ScaleService }, { type: i2.ChartService }, { type: i0.ChangeDetectorRef }, { type: i3.ZoomService }]; }, propDecorators: { axis: [{
|
|
49
|
+
type: Input
|
|
50
|
+
}], size: [{
|
|
51
|
+
type: Input
|
|
52
|
+
}], node: [{
|
|
53
|
+
type: ViewChild,
|
|
54
|
+
args: ['svg']
|
|
55
|
+
}] } });
|
|
56
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoieC1heGlzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9jaGFydC9jaGFydC1jb250YWluZXIveC1heGlzL3gtYXhpcy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9zcmMvY2hhcnQvY2hhcnQtY29udGFpbmVyL3gtYXhpcy94LWF4aXMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVMLHVCQUF1QixFQUV2QixTQUFTLEVBRVQsS0FBSyxFQUtMLFNBQVMsR0FDVixNQUFNLGVBQWUsQ0FBQztBQUl2QixPQUFPLEtBQUssRUFBRSxNQUFNLElBQUksQ0FBQztBQUV6QixPQUFPLEVBQWUsS0FBSyxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsTUFBTSxNQUFNLENBQUM7Ozs7O0FBUTFELE1BQU0sT0FBTyxjQUFjO0lBT3pCLFlBQ1UsWUFBMEIsRUFDMUIsWUFBMEIsRUFDMUIsR0FBc0IsRUFDdEIsV0FBd0I7UUFIeEIsaUJBQVksR0FBWixZQUFZLENBQWM7UUFDMUIsaUJBQVksR0FBWixZQUFZLENBQWM7UUFDMUIsUUFBRyxHQUFILEdBQUcsQ0FBbUI7UUFDdEIsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFOMUIsV0FBTSxHQUFHLElBQUksQ0FBQztRQVFwQixLQUFLLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUM7YUFDbkQsSUFBSSxDQUNILFNBQVMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQzVCLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFO1lBQ1IsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ1osSUFBSSxDQUFDLEdBQUcsQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUMzQixDQUFDLENBQUMsQ0FDSDthQUNBLFNBQVMsRUFBRSxDQUFDO0lBQ2pCLENBQUM7SUFFRCxRQUFRLEtBQVUsQ0FBQztJQUVuQixXQUFXO1FBQ1QsSUFBSSxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUM7SUFDdEIsQ0FBQztJQUVELGVBQWU7UUFDYixJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDZCxDQUFDO0lBRU8sSUFBSTtRQUNWLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRTdELE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVE7WUFDckMsQ0FBQyxDQUFDLEVBQUU7aUJBQ0MsT0FBTyxDQUFDLEtBQUssQ0FBQztpQkFDZCxVQUFVLENBQ1QsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsVUFBVSxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FDN0Q7WUFDTCxDQUFDLENBQUMsRUFBRTtpQkFDQyxVQUFVLENBQUMsS0FBSyxDQUFDO2lCQUNqQixVQUFVLENBQ1QsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsVUFBVSxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FDN0QsQ0FBQztRQUVSLEVBQUUsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUM7YUFDL0IsSUFBSSxDQUFDLElBQUksQ0FBQzthQUNWLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDO0lBQy9DLENBQUM7OzJHQXBEVSxjQUFjOytGQUFkLGNBQWMsMExDMUIzQix3QkFDQTsyRkR5QmEsY0FBYztrQkFOMUIsU0FBUzsrQkFDRSxlQUFlLG1CQUdSLHVCQUF1QixDQUFDLE1BQU07d0xBR3RDLElBQUk7c0JBQVosS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUs7Z0JBQ1ksSUFBSTtzQkFBckIsU0FBUzt1QkFBQyxLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQWZ0ZXJWaWV3SW5pdCxcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIElucHV0LFxuICBPbkNoYW5nZXMsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxuICBTaW1wbGVDaGFuZ2VzLFxuICBWaWV3Q2hpbGQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQXhpcyB9IGZyb20gJy4uLy4uL2NvcmUvYXhpcy9heGlzJztcbmltcG9ydCB7IFNjYWxlU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2Uvc2NhbGUuc2VydmljZSc7XG5pbXBvcnQgeyBDaGFydFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlL2NoYXJ0LnNlcnZpY2UnO1xuaW1wb3J0ICogYXMgZDMgZnJvbSAnZDMnO1xuaW1wb3J0IHsgWm9vbVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlL3pvb20uc2VydmljZSc7XG5pbXBvcnQgeyBjb25jYXQsIG1hcCwgbWVyZ2UsIHRha2VXaGlsZSwgdGFwIH0gZnJvbSAncnhqcyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ1t0ZXRhLXgtYXhpc10nLFxuICB0ZW1wbGF0ZVVybDogJy4veC1heGlzLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4veC1heGlzLmNvbXBvbmVudC5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBYQXhpc0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95LCBBZnRlclZpZXdJbml0IHtcbiAgQElucHV0KCkgYXhpczogQXhpcztcbiAgQElucHV0KCkgc2l6ZTogRE9NUmVjdDtcbiAgQFZpZXdDaGlsZCgnc3ZnJykgbm9kZTogRWxlbWVudFJlZjtcblxuICBwcml2YXRlIF9hbGl2ZSA9IHRydWU7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBzY2FsZVNlcnZpY2U6IFNjYWxlU2VydmljZSxcbiAgICBwcml2YXRlIGNoYXJ0U2VydmljZTogQ2hhcnRTZXJ2aWNlLFxuICAgIHByaXZhdGUgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBwcml2YXRlIHpvb21TZXJ2aWNlOiBab29tU2VydmljZVxuICApIHtcbiAgICBtZXJnZSh0aGlzLnpvb21TZXJ2aWNlLnpvb21lZCwgdGhpcy5jaGFydFNlcnZpY2Uuc2l6ZSlcbiAgICAgIC5waXBlKFxuICAgICAgICB0YWtlV2hpbGUoKCkgPT4gdGhpcy5fYWxpdmUpLFxuICAgICAgICB0YXAoKF8pID0+IHtcbiAgICAgICAgICB0aGlzLmRyYXcoKTtcbiAgICAgICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgIH0pXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCk7XG4gIH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHt9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5fYWxpdmUgPSBmYWxzZTtcbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICB0aGlzLmRyYXcoKTtcbiAgfVxuXG4gIHByaXZhdGUgZHJhdygpIHtcbiAgICBjb25zdCBzY2FsZSA9IHRoaXMuc2NhbGVTZXJ2aWNlLnhTY2FsZXMuZ2V0KHRoaXMuYXhpcy5pbmRleCk7XG5cbiAgICBjb25zdCBheGlzID0gdGhpcy5heGlzLm9wdGlvbnMub3Bwb3NpdGVcbiAgICAgID8gZDNcbiAgICAgICAgICAuYXhpc1RvcChzY2FsZSlcbiAgICAgICAgICAudGlja0Zvcm1hdChcbiAgICAgICAgICAgIHRoaXMuYXhpcy5vcHRpb25zLnRpY2tGb3JtYXQgPz8gdGhpcy5heGlzLmRlZmF1bHRGb3JtYXR0ZXIoKVxuICAgICAgICAgIClcbiAgICAgIDogZDNcbiAgICAgICAgICAuYXhpc0JvdHRvbShzY2FsZSlcbiAgICAgICAgICAudGlja0Zvcm1hdChcbiAgICAgICAgICAgIHRoaXMuYXhpcy5vcHRpb25zLnRpY2tGb3JtYXQgPz8gdGhpcy5heGlzLmRlZmF1bHRGb3JtYXR0ZXIoKVxuICAgICAgICAgICk7XG5cbiAgICBkMy5zZWxlY3QodGhpcy5ub2RlLm5hdGl2ZUVsZW1lbnQpXG4gICAgICAuY2FsbChheGlzKVxuICAgICAgLmNhbGwoKF8pID0+IF8uc2VsZWN0KCcuZG9tYWluJykucmVtb3ZlKCkpO1xuICB9XG59XG4iLCI8c3ZnOmcgI3N2Zz48L3N2ZzpnPlxuIl19
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
import { ChangeDetectionStrategy, Component, Input, ViewChild, } from '@angular/core';
|
|
2
|
+
import * as d3 from 'd3';
|
|
3
|
+
import { merge, takeWhile, tap } from 'rxjs';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
import * as i1 from "../../service/scale.service";
|
|
6
|
+
import * as i2 from "../../service/chart.service";
|
|
7
|
+
import * as i3 from "../../service/zoom.service";
|
|
8
|
+
export class YAxisComponent {
|
|
9
|
+
constructor(scaleService, chartService, cdr, zoomService) {
|
|
10
|
+
this.scaleService = scaleService;
|
|
11
|
+
this.chartService = chartService;
|
|
12
|
+
this.cdr = cdr;
|
|
13
|
+
this.zoomService = zoomService;
|
|
14
|
+
this._alive = true;
|
|
15
|
+
merge(this.zoomService.zoomed, this.chartService.size)
|
|
16
|
+
.pipe(takeWhile(() => this._alive), tap((_) => {
|
|
17
|
+
this.draw();
|
|
18
|
+
this.cdr.markForCheck();
|
|
19
|
+
}))
|
|
20
|
+
.subscribe();
|
|
21
|
+
}
|
|
22
|
+
ngOnInit() { }
|
|
23
|
+
ngOnDestroy() {
|
|
24
|
+
this._alive = false;
|
|
25
|
+
}
|
|
26
|
+
ngAfterViewInit() {
|
|
27
|
+
this.draw();
|
|
28
|
+
}
|
|
29
|
+
getLabelTransform() {
|
|
30
|
+
return `translate(${this.axis.options.opposite
|
|
31
|
+
? this.axis.selfSize - 24
|
|
32
|
+
: -this.axis.selfSize + 24}, ${this.size.height / 2}) rotate(${this.axis.options.opposite ? '90' : '-90'})`;
|
|
33
|
+
}
|
|
34
|
+
draw() {
|
|
35
|
+
const scale = this.scaleService.yScales.get(this.axis.index);
|
|
36
|
+
const axis = this.axis.options.opposite
|
|
37
|
+
? d3
|
|
38
|
+
.axisRight(scale)
|
|
39
|
+
// .tickValues(this.axis.tickValues)
|
|
40
|
+
.tickFormat(this.axis.options.tickFormat ?? this.axis.defaultFormatter())
|
|
41
|
+
: d3
|
|
42
|
+
.axisLeft(scale)
|
|
43
|
+
// .tickValues(this.axis.tickValues)
|
|
44
|
+
.tickFormat(this.axis.options.tickFormat ?? this.axis.defaultFormatter());
|
|
45
|
+
d3.select(this.node.nativeElement)
|
|
46
|
+
.call(axis)
|
|
47
|
+
.call((_) => _.select('.domain').remove());
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
YAxisComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.1", ngImport: i0, type: YAxisComponent, deps: [{ token: i1.ScaleService }, { token: i2.ChartService }, { token: i0.ChangeDetectorRef }, { token: i3.ZoomService }], target: i0.ɵɵFactoryTarget.Component });
|
|
51
|
+
YAxisComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.1", type: YAxisComponent, selector: "[teta-y-axis]", inputs: { axis: "axis", size: "size" }, viewQueries: [{ propertyName: "node", first: true, predicate: ["svg"], descendants: true }], ngImport: i0, template: "<svg:g #svg></svg:g>\n<svg:g class=\"label-axis font-caption\" [attr.transform]=\"getLabelTransform()\">\n <text dy=\"-8px\" text-anchor=\"middle\" dominant-baseline=\"middle\">{{ axis.options.title }}</text>\n</svg:g>\n", styles: [":host{shape-rendering:crispEdges}::ng-deep .tick text{fill:var(--color-text-70)}::ng-deep .tick line{stroke:var(--color-text-20)}:host .label-axis{fill:var(--color-text-70)}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
52
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.1", ngImport: i0, type: YAxisComponent, decorators: [{
|
|
53
|
+
type: Component,
|
|
54
|
+
args: [{ selector: '[teta-y-axis]', changeDetection: ChangeDetectionStrategy.OnPush, template: "<svg:g #svg></svg:g>\n<svg:g class=\"label-axis font-caption\" [attr.transform]=\"getLabelTransform()\">\n <text dy=\"-8px\" text-anchor=\"middle\" dominant-baseline=\"middle\">{{ axis.options.title }}</text>\n</svg:g>\n", styles: [":host{shape-rendering:crispEdges}::ng-deep .tick text{fill:var(--color-text-70)}::ng-deep .tick line{stroke:var(--color-text-20)}:host .label-axis{fill:var(--color-text-70)}\n"] }]
|
|
55
|
+
}], ctorParameters: function () { return [{ type: i1.ScaleService }, { type: i2.ChartService }, { type: i0.ChangeDetectorRef }, { type: i3.ZoomService }]; }, propDecorators: { axis: [{
|
|
56
|
+
type: Input
|
|
57
|
+
}], size: [{
|
|
58
|
+
type: Input
|
|
59
|
+
}], node: [{
|
|
60
|
+
type: ViewChild,
|
|
61
|
+
args: ['svg']
|
|
62
|
+
}] } });
|
|
63
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoieS1heGlzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9jaGFydC9jaGFydC1jb250YWluZXIveS1heGlzL3ktYXhpcy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9zcmMvY2hhcnQvY2hhcnQtY29udGFpbmVyL3ktYXhpcy95LWF4aXMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVMLHVCQUF1QixFQUV2QixTQUFTLEVBRVQsS0FBSyxFQUdMLFNBQVMsR0FDVixNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEtBQUssRUFBRSxNQUFNLElBQUksQ0FBQztBQUl6QixPQUFPLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsTUFBTSxNQUFNLENBQUM7Ozs7O0FBUTdDLE1BQU0sT0FBTyxjQUFjO0lBT3pCLFlBQ1UsWUFBMEIsRUFDMUIsWUFBMEIsRUFDMUIsR0FBc0IsRUFDdEIsV0FBd0I7UUFIeEIsaUJBQVksR0FBWixZQUFZLENBQWM7UUFDMUIsaUJBQVksR0FBWixZQUFZLENBQWM7UUFDMUIsUUFBRyxHQUFILEdBQUcsQ0FBbUI7UUFDdEIsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFOMUIsV0FBTSxHQUFHLElBQUksQ0FBQztRQVFwQixLQUFLLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUM7YUFDbkQsSUFBSSxDQUNILFNBQVMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQzVCLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFO1lBQ1IsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ1osSUFBSSxDQUFDLEdBQUcsQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUMxQixDQUFDLENBQUMsQ0FDSDthQUNBLFNBQVMsRUFBRSxDQUFDO0lBQ2pCLENBQUM7SUFFRCxRQUFRLEtBQVUsQ0FBQztJQUVuQixXQUFXO1FBQ1QsSUFBSSxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUM7SUFDdEIsQ0FBQztJQUVELGVBQWU7UUFDYixJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDZCxDQUFDO0lBRUQsaUJBQWlCO1FBQ2YsT0FBTyxhQUNMLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVE7WUFDeEIsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxHQUFHLEVBQUU7WUFDekIsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLEdBQUcsRUFDNUIsS0FBSyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLFlBQ3ZCLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUN0QyxHQUFHLENBQUM7SUFDTixDQUFDO0lBRU8sSUFBSTtRQUNWLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRTdELE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVE7WUFDckMsQ0FBQyxDQUFDLEVBQUU7aUJBQ0MsU0FBUyxDQUFDLEtBQUssQ0FBQztnQkFDakIsb0NBQW9DO2lCQUNuQyxVQUFVLENBQ1QsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsVUFBVSxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FDN0Q7WUFDTCxDQUFDLENBQUMsRUFBRTtpQkFDQyxRQUFRLENBQUMsS0FBSyxDQUFDO2dCQUNoQixvQ0FBb0M7aUJBQ25DLFVBQVUsQ0FDVCxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxVQUFVLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUM3RCxDQUFDO1FBRVIsRUFBRSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQzthQUMvQixJQUFJLENBQUMsSUFBSSxDQUFDO2FBQ1YsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUM7SUFDL0MsQ0FBQzs7MkdBaEVVLGNBQWM7K0ZBQWQsY0FBYywwTEN4QjNCLCtOQUlBOzJGRG9CYSxjQUFjO2tCQU4xQixTQUFTOytCQUNFLGVBQWUsbUJBR1IsdUJBQXVCLENBQUMsTUFBTTt3TEFHdEMsSUFBSTtzQkFBWixLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSztnQkFDWSxJQUFJO3NCQUFyQixTQUFTO3VCQUFDLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBZnRlclZpZXdJbml0LFxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgRWxlbWVudFJlZixcbiAgSW5wdXQsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxuICBWaWV3Q2hpbGQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQXhpcyB9IGZyb20gJy4uLy4uL2NvcmUvYXhpcy9heGlzJztcbmltcG9ydCAqIGFzIGQzIGZyb20gJ2QzJztcbmltcG9ydCB7IFNjYWxlU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2Uvc2NhbGUuc2VydmljZSc7XG5pbXBvcnQgeyBDaGFydFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlL2NoYXJ0LnNlcnZpY2UnO1xuaW1wb3J0IHsgWm9vbVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlL3pvb20uc2VydmljZSc7XG5pbXBvcnQgeyBtZXJnZSwgdGFrZVdoaWxlLCB0YXAgfSBmcm9tICdyeGpzJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnW3RldGEteS1heGlzXScsXG4gIHRlbXBsYXRlVXJsOiAnLi95LWF4aXMuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi95LWF4aXMuY29tcG9uZW50LnNjc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIFlBeGlzQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3ksIEFmdGVyVmlld0luaXQge1xuICBASW5wdXQoKSBheGlzOiBBeGlzO1xuICBASW5wdXQoKSBzaXplOiBET01SZWN0O1xuICBAVmlld0NoaWxkKCdzdmcnKSBub2RlOiBFbGVtZW50UmVmO1xuXG4gIHByaXZhdGUgX2FsaXZlID0gdHJ1ZTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHNjYWxlU2VydmljZTogU2NhbGVTZXJ2aWNlLFxuICAgIHByaXZhdGUgY2hhcnRTZXJ2aWNlOiBDaGFydFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBjZHI6IENoYW5nZURldGVjdG9yUmVmLFxuICAgIHByaXZhdGUgem9vbVNlcnZpY2U6IFpvb21TZXJ2aWNlXG4gICkge1xuICAgIG1lcmdlKHRoaXMuem9vbVNlcnZpY2Uuem9vbWVkLCB0aGlzLmNoYXJ0U2VydmljZS5zaXplKVxuICAgICAgLnBpcGUoXG4gICAgICAgIHRha2VXaGlsZSgoKSA9PiB0aGlzLl9hbGl2ZSksXG4gICAgICAgIHRhcCgoXykgPT4ge1xuICAgICAgICAgIHRoaXMuZHJhdygpO1xuICAgICAgICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICAgICAgICB9KVxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgpO1xuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7fVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuX2FsaXZlID0gZmFsc2U7XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgdGhpcy5kcmF3KCk7XG4gIH1cblxuICBnZXRMYWJlbFRyYW5zZm9ybSgpIHtcbiAgICByZXR1cm4gYHRyYW5zbGF0ZSgke1xuICAgICAgdGhpcy5heGlzLm9wdGlvbnMub3Bwb3NpdGVcbiAgICAgICAgPyB0aGlzLmF4aXMuc2VsZlNpemUgLSAyNFxuICAgICAgICA6IC10aGlzLmF4aXMuc2VsZlNpemUgKyAyNFxuICAgIH0sICR7dGhpcy5zaXplLmhlaWdodCAvIDJ9KSByb3RhdGUoJHtcbiAgICAgIHRoaXMuYXhpcy5vcHRpb25zLm9wcG9zaXRlID8gJzkwJyA6ICctOTAnXG4gICAgfSlgO1xuICB9XG5cbiAgcHJpdmF0ZSBkcmF3KCkge1xuICAgIGNvbnN0IHNjYWxlID0gdGhpcy5zY2FsZVNlcnZpY2UueVNjYWxlcy5nZXQodGhpcy5heGlzLmluZGV4KTtcblxuICAgIGNvbnN0IGF4aXMgPSB0aGlzLmF4aXMub3B0aW9ucy5vcHBvc2l0ZVxuICAgICAgPyBkM1xuICAgICAgICAgIC5heGlzUmlnaHQoc2NhbGUpXG4gICAgICAgICAgLy8gLnRpY2tWYWx1ZXModGhpcy5heGlzLnRpY2tWYWx1ZXMpXG4gICAgICAgICAgLnRpY2tGb3JtYXQoXG4gICAgICAgICAgICB0aGlzLmF4aXMub3B0aW9ucy50aWNrRm9ybWF0ID8/IHRoaXMuYXhpcy5kZWZhdWx0Rm9ybWF0dGVyKClcbiAgICAgICAgICApXG4gICAgICA6IGQzXG4gICAgICAgICAgLmF4aXNMZWZ0KHNjYWxlKVxuICAgICAgICAgIC8vIC50aWNrVmFsdWVzKHRoaXMuYXhpcy50aWNrVmFsdWVzKVxuICAgICAgICAgIC50aWNrRm9ybWF0KFxuICAgICAgICAgICAgdGhpcy5heGlzLm9wdGlvbnMudGlja0Zvcm1hdCA/PyB0aGlzLmF4aXMuZGVmYXVsdEZvcm1hdHRlcigpXG4gICAgICAgICAgKTtcblxuICAgIGQzLnNlbGVjdCh0aGlzLm5vZGUubmF0aXZlRWxlbWVudClcbiAgICAgIC5jYWxsKGF4aXMpXG4gICAgICAuY2FsbCgoXykgPT4gXy5zZWxlY3QoJy5kb21haW4nKS5yZW1vdmUoKSk7XG4gIH1cbn1cbiIsIjxzdmc6ZyAjc3ZnPjwvc3ZnOmc+XG48c3ZnOmcgY2xhc3M9XCJsYWJlbC1heGlzIGZvbnQtY2FwdGlvblwiIFthdHRyLnRyYW5zZm9ybV09XCJnZXRMYWJlbFRyYW5zZm9ybSgpXCI+XG4gIDx0ZXh0IGR5PVwiLThweFwiIHRleHQtYW5jaG9yPVwibWlkZGxlXCIgZG9taW5hbnQtYmFzZWxpbmU9XCJtaWRkbGVcIj57eyBheGlzLm9wdGlvbnMudGl0bGUgfX08L3RleHQ+XG48L3N2ZzpnPlxuIl19
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import { NgModule } from '@angular/core';
|
|
2
|
+
import { CommonModule } from '@angular/common';
|
|
3
|
+
import { ChartComponent } from './chart/chart.component';
|
|
4
|
+
import { SeriesHostComponent } from './chart-container/series-host/series-host.component';
|
|
5
|
+
import { ChartContainerComponent } from './chart-container/chart-container.component';
|
|
6
|
+
import { LegendComponent } from './legend/legend.component';
|
|
7
|
+
import { SeriesBaseComponent } from './base/series-base.component';
|
|
8
|
+
import { LineSeriesComponent } from './chart-container/series/line/line-series.component';
|
|
9
|
+
import { GridlinesComponent } from './chart-container/gridlines/gridlines.component';
|
|
10
|
+
import { XAxisComponent } from './chart-container/x-axis/x-axis.component';
|
|
11
|
+
import { YAxisComponent } from './chart-container/y-axis/y-axis.component';
|
|
12
|
+
import { PlotlineComponent } from './chart-container/plotline/plotline.component';
|
|
13
|
+
import { PlotbandComponent } from './chart-container/plotband/plotband.component';
|
|
14
|
+
import { BarSeriesComponent } from './chart-container/series/bar/bar-series.component';
|
|
15
|
+
import { TooltipComponent } from './chart-container/tooltip/tooltip.component';
|
|
16
|
+
import { ZoomableDirective } from './directives/zoomable.directive';
|
|
17
|
+
import { BrushableDirective } from './directives/brushable.directive';
|
|
18
|
+
import * as i0 from "@angular/core";
|
|
19
|
+
export class ChartModule {
|
|
20
|
+
}
|
|
21
|
+
ChartModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.1", ngImport: i0, type: ChartModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
22
|
+
ChartModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.0.1", ngImport: i0, type: ChartModule, declarations: [ChartComponent,
|
|
23
|
+
SeriesHostComponent,
|
|
24
|
+
ChartContainerComponent,
|
|
25
|
+
LegendComponent,
|
|
26
|
+
SeriesBaseComponent,
|
|
27
|
+
LineSeriesComponent,
|
|
28
|
+
GridlinesComponent,
|
|
29
|
+
XAxisComponent,
|
|
30
|
+
YAxisComponent,
|
|
31
|
+
PlotlineComponent,
|
|
32
|
+
PlotbandComponent,
|
|
33
|
+
BarSeriesComponent,
|
|
34
|
+
TooltipComponent,
|
|
35
|
+
ZoomableDirective,
|
|
36
|
+
BrushableDirective], imports: [CommonModule], exports: [ChartComponent] });
|
|
37
|
+
ChartModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.0.1", ngImport: i0, type: ChartModule, imports: [[CommonModule]] });
|
|
38
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.1", ngImport: i0, type: ChartModule, decorators: [{
|
|
39
|
+
type: NgModule,
|
|
40
|
+
args: [{
|
|
41
|
+
declarations: [
|
|
42
|
+
ChartComponent,
|
|
43
|
+
SeriesHostComponent,
|
|
44
|
+
ChartContainerComponent,
|
|
45
|
+
LegendComponent,
|
|
46
|
+
SeriesBaseComponent,
|
|
47
|
+
LineSeriesComponent,
|
|
48
|
+
GridlinesComponent,
|
|
49
|
+
XAxisComponent,
|
|
50
|
+
YAxisComponent,
|
|
51
|
+
PlotlineComponent,
|
|
52
|
+
PlotbandComponent,
|
|
53
|
+
BarSeriesComponent,
|
|
54
|
+
TooltipComponent,
|
|
55
|
+
ZoomableDirective,
|
|
56
|
+
BrushableDirective,
|
|
57
|
+
],
|
|
58
|
+
exports: [ChartComponent],
|
|
59
|
+
imports: [CommonModule],
|
|
60
|
+
}]
|
|
61
|
+
}] });
|
|
62
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhcnQubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NoYXJ0L2NoYXJ0Lm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDekQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0scURBQXFELENBQUM7QUFDMUYsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sNkNBQTZDLENBQUM7QUFDdEYsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzVELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ25FLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHFEQUFxRCxDQUFDO0FBQzFGLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGlEQUFpRCxDQUFDO0FBQ3JGLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQUMzRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sMkNBQTJDLENBQUM7QUFDM0UsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sK0NBQStDLENBQUM7QUFDbEYsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sK0NBQStDLENBQUM7QUFDbEYsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sbURBQW1ELENBQUM7QUFDdkYsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sNkNBQTZDLENBQUM7QUFDL0UsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDcEUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sa0NBQWtDLENBQUM7O0FBdUJ0RSxNQUFNLE9BQU8sV0FBVzs7d0dBQVgsV0FBVzt5R0FBWCxXQUFXLGlCQW5CcEIsY0FBYztRQUNkLG1CQUFtQjtRQUNuQix1QkFBdUI7UUFDdkIsZUFBZTtRQUNmLG1CQUFtQjtRQUNuQixtQkFBbUI7UUFDbkIsa0JBQWtCO1FBQ2xCLGNBQWM7UUFDZCxjQUFjO1FBQ2QsaUJBQWlCO1FBQ2pCLGlCQUFpQjtRQUNqQixrQkFBa0I7UUFDbEIsZ0JBQWdCO1FBQ2hCLGlCQUFpQjtRQUNqQixrQkFBa0IsYUFHVixZQUFZLGFBRFosY0FBYzt5R0FHYixXQUFXLFlBRmIsQ0FBQyxZQUFZLENBQUM7MkZBRVosV0FBVztrQkFyQnZCLFFBQVE7bUJBQUM7b0JBQ1IsWUFBWSxFQUFFO3dCQUNaLGNBQWM7d0JBQ2QsbUJBQW1CO3dCQUNuQix1QkFBdUI7d0JBQ3ZCLGVBQWU7d0JBQ2YsbUJBQW1CO3dCQUNuQixtQkFBbUI7d0JBQ25CLGtCQUFrQjt3QkFDbEIsY0FBYzt3QkFDZCxjQUFjO3dCQUNkLGlCQUFpQjt3QkFDakIsaUJBQWlCO3dCQUNqQixrQkFBa0I7d0JBQ2xCLGdCQUFnQjt3QkFDaEIsaUJBQWlCO3dCQUNqQixrQkFBa0I7cUJBQ25CO29CQUNELE9BQU8sRUFBRSxDQUFDLGNBQWMsQ0FBQztvQkFDekIsT0FBTyxFQUFFLENBQUMsWUFBWSxDQUFDO2lCQUN4QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQ2hhcnRDb21wb25lbnQgfSBmcm9tICcuL2NoYXJ0L2NoYXJ0LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBTZXJpZXNIb3N0Q29tcG9uZW50IH0gZnJvbSAnLi9jaGFydC1jb250YWluZXIvc2VyaWVzLWhvc3Qvc2VyaWVzLWhvc3QuY29tcG9uZW50JztcbmltcG9ydCB7IENoYXJ0Q29udGFpbmVyQ29tcG9uZW50IH0gZnJvbSAnLi9jaGFydC1jb250YWluZXIvY2hhcnQtY29udGFpbmVyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBMZWdlbmRDb21wb25lbnQgfSBmcm9tICcuL2xlZ2VuZC9sZWdlbmQuY29tcG9uZW50JztcbmltcG9ydCB7IFNlcmllc0Jhc2VDb21wb25lbnQgfSBmcm9tICcuL2Jhc2Uvc2VyaWVzLWJhc2UuY29tcG9uZW50JztcbmltcG9ydCB7IExpbmVTZXJpZXNDb21wb25lbnQgfSBmcm9tICcuL2NoYXJ0LWNvbnRhaW5lci9zZXJpZXMvbGluZS9saW5lLXNlcmllcy5jb21wb25lbnQnO1xuaW1wb3J0IHsgR3JpZGxpbmVzQ29tcG9uZW50IH0gZnJvbSAnLi9jaGFydC1jb250YWluZXIvZ3JpZGxpbmVzL2dyaWRsaW5lcy5jb21wb25lbnQnO1xuaW1wb3J0IHsgWEF4aXNDb21wb25lbnQgfSBmcm9tICcuL2NoYXJ0LWNvbnRhaW5lci94LWF4aXMveC1heGlzLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBZQXhpc0NvbXBvbmVudCB9IGZyb20gJy4vY2hhcnQtY29udGFpbmVyL3ktYXhpcy95LWF4aXMuY29tcG9uZW50JztcbmltcG9ydCB7IFBsb3RsaW5lQ29tcG9uZW50IH0gZnJvbSAnLi9jaGFydC1jb250YWluZXIvcGxvdGxpbmUvcGxvdGxpbmUuY29tcG9uZW50JztcbmltcG9ydCB7IFBsb3RiYW5kQ29tcG9uZW50IH0gZnJvbSAnLi9jaGFydC1jb250YWluZXIvcGxvdGJhbmQvcGxvdGJhbmQuY29tcG9uZW50JztcbmltcG9ydCB7IEJhclNlcmllc0NvbXBvbmVudCB9IGZyb20gJy4vY2hhcnQtY29udGFpbmVyL3Nlcmllcy9iYXIvYmFyLXNlcmllcy5jb21wb25lbnQnO1xuaW1wb3J0IHsgVG9vbHRpcENvbXBvbmVudCB9IGZyb20gJy4vY2hhcnQtY29udGFpbmVyL3Rvb2x0aXAvdG9vbHRpcC5jb21wb25lbnQnO1xuaW1wb3J0IHsgWm9vbWFibGVEaXJlY3RpdmUgfSBmcm9tICcuL2RpcmVjdGl2ZXMvem9vbWFibGUuZGlyZWN0aXZlJztcbmltcG9ydCB7IEJydXNoYWJsZURpcmVjdGl2ZSB9IGZyb20gJy4vZGlyZWN0aXZlcy9icnVzaGFibGUuZGlyZWN0aXZlJztcblxuQE5nTW9kdWxlKHtcbiAgZGVjbGFyYXRpb25zOiBbXG4gICAgQ2hhcnRDb21wb25lbnQsXG4gICAgU2VyaWVzSG9zdENvbXBvbmVudCxcbiAgICBDaGFydENvbnRhaW5lckNvbXBvbmVudCxcbiAgICBMZWdlbmRDb21wb25lbnQsXG4gICAgU2VyaWVzQmFzZUNvbXBvbmVudCxcbiAgICBMaW5lU2VyaWVzQ29tcG9uZW50LFxuICAgIEdyaWRsaW5lc0NvbXBvbmVudCxcbiAgICBYQXhpc0NvbXBvbmVudCxcbiAgICBZQXhpc0NvbXBvbmVudCxcbiAgICBQbG90bGluZUNvbXBvbmVudCxcbiAgICBQbG90YmFuZENvbXBvbmVudCxcbiAgICBCYXJTZXJpZXNDb21wb25lbnQsXG4gICAgVG9vbHRpcENvbXBvbmVudCxcbiAgICBab29tYWJsZURpcmVjdGl2ZSxcbiAgICBCcnVzaGFibGVEaXJlY3RpdmUsXG4gIF0sXG4gIGV4cG9ydHM6IFtDaGFydENvbXBvbmVudF0sXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGVdLFxufSlcbmV4cG9ydCBjbGFzcyBDaGFydE1vZHVsZSB7fVxuIl19
|