@tetacom/svg-charts 1.4.21 → 1.4.23
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/chart/base/series-base.component.d.ts +1 -1
- package/chart/chart/chart.component.d.ts +1 -1
- package/chart/chart-container/annotation/annotation.component.d.ts +1 -1
- package/chart/chart-container/chart-container.component.d.ts +1 -1
- package/chart/chart-container/crosshair/crosshair.component.d.ts +1 -1
- package/chart/chart-container/gridlines/gridlines.component.d.ts +1 -1
- package/chart/chart-container/plotband/plot-band.component.d.ts +1 -1
- package/chart/chart-container/plotline/plotline.component.d.ts +1 -1
- package/chart/chart-container/series/area-series/area-series.component.d.ts +1 -1
- package/chart/chart-container/series/bar/bar-series.component.d.ts +1 -1
- package/chart/chart-container/series/block-area-series/block-area-series.component.d.ts +1 -1
- package/chart/chart-container/series/block-series/block-series.component.d.ts +1 -1
- package/chart/chart-container/series/line/line-series.component.d.ts +1 -1
- package/chart/chart-container/series/linear-series-base.d.ts +1 -1
- package/chart/chart-container/series/scatter-series/scatter-series.component.d.ts +1 -1
- package/chart/chart-container/series-host/series-host.component.d.ts +1 -1
- package/chart/chart-container/tooltip/tooltip.component.d.ts +1 -1
- package/chart/chart-container/x-axis/x-axis.component.d.ts +1 -1
- package/chart/chart-container/y-axis/y-axis.component.d.ts +1 -1
- package/chart/directives/brushable.directive.d.ts +1 -1
- package/chart/directives/draggable-point.directive.d.ts +1 -1
- package/chart/directives/zoomable.directive.d.ts +1 -1
- package/chart/legend/legend.component.d.ts +1 -1
- package/chart/model/i-broadcast-message.d.ts +2 -2
- package/chart/stories/bandseries/bandseries.component.d.ts +1 -1
- package/esm2022/chart/base/series-base.component.mjs +50 -0
- package/esm2022/chart/chart/chart.component.mjs +175 -0
- package/esm2022/chart/chart-container/annotation/annotation.component.mjs +108 -0
- package/esm2022/chart/chart-container/chart-container.component.mjs +194 -0
- package/esm2022/chart/chart-container/crosshair/crosshair.component.mjs +39 -0
- package/esm2022/chart/chart-container/gridlines/gridlines.component.mjs +45 -0
- package/esm2022/chart/chart-container/plotband/plot-band.component.mjs +174 -0
- package/esm2022/chart/chart-container/plotline/plotline.component.mjs +98 -0
- package/esm2022/chart/chart-container/series/area-series/area-series.component.mjs +74 -0
- package/esm2022/chart/chart-container/series/bar/bar-series.component.mjs +68 -0
- package/esm2022/chart/chart-container/series/block-area-series/block-area-series.component.mjs +69 -0
- package/esm2022/chart/chart-container/series/block-series/block-series.component.mjs +69 -0
- package/{esm2020 → esm2022}/chart/chart-container/series/line/line-series.component.mjs +37 -30
- package/esm2022/chart/chart-container/series/linear-series-base.mjs +210 -0
- package/esm2022/chart/chart-container/series/scatter-series/scatter-series.component.mjs +53 -0
- package/esm2022/chart/chart-container/series-host/series-host.component.mjs +50 -0
- package/{esm2020 → esm2022}/chart/chart-container/tooltip/tooltip.component.mjs +18 -5
- package/esm2022/chart/chart-container/x-axis/x-axis.component.mjs +54 -0
- package/esm2022/chart/chart-container/y-axis/y-axis.component.mjs +40 -0
- package/{esm2020 → esm2022}/chart/chart.module.mjs +36 -36
- package/esm2022/chart/core/axis/axis.mjs +135 -0
- package/esm2022/chart/core/axis/builders/axis-size-builder.mjs +31 -0
- package/esm2022/chart/core/axis/builders/extremes-builder.mjs +33 -0
- package/esm2022/chart/directives/brushable.directive.mjs +162 -0
- package/esm2022/chart/directives/draggable-point.directive.mjs +147 -0
- package/esm2022/chart/directives/zoomable.directive.mjs +263 -0
- package/esm2022/chart/legend/legend.component.mjs +38 -0
- package/{esm2020 → esm2022}/chart/model/chart-bounds.mjs +5 -5
- package/esm2022/chart/model/i-broadcast-message.mjs +27 -0
- package/esm2022/chart/model/plot-band.mjs +28 -0
- package/esm2022/chart/model/plot-line.mjs +21 -0
- package/esm2022/chart/service/broadcast.service.mjs +24 -0
- package/esm2022/chart/service/brush.service.mjs +22 -0
- package/esm2022/chart/service/chart.service.mjs +244 -0
- package/esm2022/chart/service/scale.service.mjs +206 -0
- package/esm2022/chart/service/zoom.service.mjs +85 -0
- package/esm2022/chart/stories/bandseries/bandseries.component.mjs +36 -0
- package/{fesm2020 → fesm2022}/tetacom-svg-charts.mjs +584 -338
- package/fesm2022/tetacom-svg-charts.mjs.map +1 -0
- package/package.json +8 -14
- package/esm2020/chart/base/series-base.component.mjs +0 -42
- package/esm2020/chart/chart/chart.component.mjs +0 -172
- package/esm2020/chart/chart-container/annotation/annotation.component.mjs +0 -99
- package/esm2020/chart/chart-container/chart-container.component.mjs +0 -182
- package/esm2020/chart/chart-container/crosshair/crosshair.component.mjs +0 -34
- package/esm2020/chart/chart-container/gridlines/gridlines.component.mjs +0 -37
- package/esm2020/chart/chart-container/plotband/plot-band.component.mjs +0 -163
- package/esm2020/chart/chart-container/plotline/plotline.component.mjs +0 -87
- package/esm2020/chart/chart-container/series/area-series/area-series.component.mjs +0 -67
- package/esm2020/chart/chart-container/series/bar/bar-series.component.mjs +0 -59
- package/esm2020/chart/chart-container/series/block-area-series/block-area-series.component.mjs +0 -60
- package/esm2020/chart/chart-container/series/block-series/block-series.component.mjs +0 -60
- package/esm2020/chart/chart-container/series/linear-series-base.mjs +0 -198
- package/esm2020/chart/chart-container/series/scatter-series/scatter-series.component.mjs +0 -43
- package/esm2020/chart/chart-container/series-host/series-host.component.mjs +0 -46
- package/esm2020/chart/chart-container/x-axis/x-axis.component.mjs +0 -48
- package/esm2020/chart/chart-container/y-axis/y-axis.component.mjs +0 -36
- package/esm2020/chart/core/axis/axis.mjs +0 -128
- package/esm2020/chart/core/axis/builders/axis-size-builder.mjs +0 -33
- package/esm2020/chart/core/axis/builders/extremes-builder.mjs +0 -35
- package/esm2020/chart/directives/brushable.directive.mjs +0 -153
- package/esm2020/chart/directives/draggable-point.directive.mjs +0 -141
- package/esm2020/chart/directives/zoomable.directive.mjs +0 -254
- package/esm2020/chart/legend/legend.component.mjs +0 -36
- package/esm2020/chart/model/i-broadcast-message.mjs +0 -18
- package/esm2020/chart/model/plot-band.mjs +0 -17
- package/esm2020/chart/model/plot-line.mjs +0 -13
- package/esm2020/chart/service/broadcast.service.mjs +0 -23
- package/esm2020/chart/service/brush.service.mjs +0 -21
- package/esm2020/chart/service/chart.service.mjs +0 -229
- package/esm2020/chart/service/scale.service.mjs +0 -203
- package/esm2020/chart/service/zoom.service.mjs +0 -80
- package/esm2020/chart/stories/bandseries/bandseries.component.mjs +0 -29
- package/fesm2015/tetacom-svg-charts.mjs +0 -3095
- package/fesm2015/tetacom-svg-charts.mjs.map +0 -1
- package/fesm2020/tetacom-svg-charts.mjs.map +0 -1
- /package/{esm2020 → esm2022}/chart/chart-container/series/public-api.mjs +0 -0
- /package/{esm2020 → esm2022}/chart/core/axis/builders/public-api.mjs +0 -0
- /package/{esm2020 → esm2022}/chart/core/utils/generate-ticks.mjs +0 -0
- /package/{esm2020 → esm2022}/chart/core/utils/get-text-width.mjs +0 -0
- /package/{esm2020 → esm2022}/chart/core/utils/public-api.mjs +0 -0
- /package/{esm2020 → esm2022}/chart/default/default-axis-config.mjs +0 -0
- /package/{esm2020 → esm2022}/chart/default/default-chart-config.mjs +0 -0
- /package/{esm2020 → esm2022}/chart/default/default-series-config.mjs +0 -0
- /package/{esm2020 → esm2022}/chart/default/defaultSeriesTypeMapping.mjs +0 -0
- /package/{esm2020 → esm2022}/chart/model/annotation.mjs +0 -0
- /package/{esm2020 → esm2022}/chart/model/axis-options.mjs +0 -0
- /package/{esm2020 → esm2022}/chart/model/base-point.mjs +0 -0
- /package/{esm2020 → esm2022}/chart/model/enum/axis-orientation.mjs +0 -0
- /package/{esm2020 → esm2022}/chart/model/enum/brush-type.mjs +0 -0
- /package/{esm2020 → esm2022}/chart/model/enum/clip-points-direction.mjs +0 -0
- /package/{esm2020 → esm2022}/chart/model/enum/drag-point-type.mjs +0 -0
- /package/{esm2020 → esm2022}/chart/model/enum/fill-type.mjs +0 -0
- /package/{esm2020 → esm2022}/chart/model/enum/public-api.mjs +0 -0
- /package/{esm2020 → esm2022}/chart/model/enum/scale-type.mjs +0 -0
- /package/{esm2020 → esm2022}/chart/model/enum/series-type.mjs +0 -0
- /package/{esm2020 → esm2022}/chart/model/enum/tooltip-tracking.mjs +0 -0
- /package/{esm2020 → esm2022}/chart/model/enum/zoom-behavior-type.mjs +0 -0
- /package/{esm2020 → esm2022}/chart/model/enum/zoom-type.mjs +0 -0
- /package/{esm2020 → esm2022}/chart/model/i-builder.mjs +0 -0
- /package/{esm2020 → esm2022}/chart/model/i-chart-config.mjs +0 -0
- /package/{esm2020 → esm2022}/chart/model/i-chart-event.mjs +0 -0
- /package/{esm2020 → esm2022}/chart/model/i-display-tooltip.mjs +0 -0
- /package/{esm2020 → esm2022}/chart/model/i-point-move.mjs +0 -0
- /package/{esm2020 → esm2022}/chart/model/i-scales-map.mjs +0 -0
- /package/{esm2020 → esm2022}/chart/model/marker-options.mjs +0 -0
- /package/{esm2020 → esm2022}/chart/model/public-api.mjs +0 -0
- /package/{esm2020 → esm2022}/chart/model/series.mjs +0 -0
- /package/{esm2020 → esm2022}/chart/model/svg-attributes.mjs +0 -0
- /package/{esm2020 → esm2022}/chart/model/tooltip-options.mjs +0 -0
- /package/{esm2020 → esm2022}/chart/service/public-api.mjs +0 -0
- /package/{esm2020 → esm2022}/public-api.mjs +0 -0
- /package/{esm2020 → esm2022}/tetacom-svg-charts.mjs +0 -0
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { ChangeDetectionStrategy, Component, Input, } from '@angular/core';
|
|
2
|
+
import { map } from "rxjs";
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
import * as i1 from "../../service/scale.service";
|
|
5
|
+
import * as i2 from "@angular/common";
|
|
6
|
+
export class YAxisComponent {
|
|
7
|
+
scaleService;
|
|
8
|
+
y;
|
|
9
|
+
axis;
|
|
10
|
+
size;
|
|
11
|
+
_alive = true;
|
|
12
|
+
constructor(scaleService) {
|
|
13
|
+
this.scaleService = scaleService;
|
|
14
|
+
this.y = this.scaleService.scales.pipe(map((_) => {
|
|
15
|
+
return _.y.get(this.axis.index)?.scale;
|
|
16
|
+
}));
|
|
17
|
+
}
|
|
18
|
+
ngOnInit() { }
|
|
19
|
+
ngOnDestroy() {
|
|
20
|
+
this._alive = false;
|
|
21
|
+
}
|
|
22
|
+
ngAfterViewInit() {
|
|
23
|
+
}
|
|
24
|
+
getLabelTransform() {
|
|
25
|
+
return `translate(${this.axis.options.opposite
|
|
26
|
+
? this.axis.selfSize
|
|
27
|
+
: -this.axis.selfSize}, ${this.size.height / 2}) rotate(-90)`;
|
|
28
|
+
}
|
|
29
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.4", ngImport: i0, type: YAxisComponent, deps: [{ token: i1.ScaleService }], target: i0.ɵɵFactoryTarget.Component });
|
|
30
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.4", type: YAxisComponent, selector: "[teta-y-axis]", inputs: { axis: "axis", size: "size" }, ngImport: i0, template: "<ng-container *ngIf=\"y | async as scale\">\n <svg:g [attr.text-anchor]=\"axis.options.opposite ? 'start' : 'end'\" *ngFor=\"let tick of scale.ticks()\" [attr.transform]=\"'translate(0, '+ scale(tick) +')'\">\n <text fill=\"var(--color-text-70)\" dy=\"0.32em\" [attr.x]=\"axis.options.opposite ? 10 : -9\">{{ this.axis.options.tickFormat ? this.axis.options.tickFormat(tick) : this.axis.defaultFormatter()(tick) }}</text>\n <line stroke=\"var(--color-text-30)\" [attr.x2]=\"axis.options.opposite ? 6 : -6\"></line>\n </svg:g>\n\n <svg:g class=\"label-axis font-caption\" [attr.transform]=\"getLabelTransform()\">\n <text [attr.dy]=\"axis.options.opposite ? '-4px' : '4px'\" text-anchor=\"middle\" [attr.dominant-baseline]=\"axis.options.opposite ? 'auto' : 'hanging'\">{{ axis.options.title }}</text>\n </svg:g>\n</ng-container>\n\n", styles: [":host{shape-rendering:crispEdges}:host .label-axis{fill:var(--color-text-70)}\n"], dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
31
|
+
}
|
|
32
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.4", ngImport: i0, type: YAxisComponent, decorators: [{
|
|
33
|
+
type: Component,
|
|
34
|
+
args: [{ selector: '[teta-y-axis]', changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-container *ngIf=\"y | async as scale\">\n <svg:g [attr.text-anchor]=\"axis.options.opposite ? 'start' : 'end'\" *ngFor=\"let tick of scale.ticks()\" [attr.transform]=\"'translate(0, '+ scale(tick) +')'\">\n <text fill=\"var(--color-text-70)\" dy=\"0.32em\" [attr.x]=\"axis.options.opposite ? 10 : -9\">{{ this.axis.options.tickFormat ? this.axis.options.tickFormat(tick) : this.axis.defaultFormatter()(tick) }}</text>\n <line stroke=\"var(--color-text-30)\" [attr.x2]=\"axis.options.opposite ? 6 : -6\"></line>\n </svg:g>\n\n <svg:g class=\"label-axis font-caption\" [attr.transform]=\"getLabelTransform()\">\n <text [attr.dy]=\"axis.options.opposite ? '-4px' : '4px'\" text-anchor=\"middle\" [attr.dominant-baseline]=\"axis.options.opposite ? 'auto' : 'hanging'\">{{ axis.options.title }}</text>\n </svg:g>\n</ng-container>\n\n", styles: [":host{shape-rendering:crispEdges}:host .label-axis{fill:var(--color-text-70)}\n"] }]
|
|
35
|
+
}], ctorParameters: function () { return [{ type: i1.ScaleService }]; }, propDecorators: { axis: [{
|
|
36
|
+
type: Input
|
|
37
|
+
}], size: [{
|
|
38
|
+
type: Input
|
|
39
|
+
}] } });
|
|
40
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoieS1heGlzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9jaGFydC9jaGFydC1jb250YWluZXIveS1heGlzL3ktYXhpcy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9zcmMvY2hhcnQvY2hhcnQtY29udGFpbmVyL3ktYXhpcy95LWF4aXMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVMLHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsS0FBSyxHQUVOLE1BQU0sZUFBZSxDQUFDO0FBSXZCLE9BQU8sRUFBQyxHQUFHLEVBQWEsTUFBTSxNQUFNLENBQUM7Ozs7QUFRckMsTUFBTSxPQUFPLGNBQWM7SUFTTDtJQVBwQixDQUFDLENBQWtCO0lBRVYsSUFBSSxDQUFPO0lBQ1gsSUFBSSxDQUFVO0lBRWYsTUFBTSxHQUFHLElBQUksQ0FBQztJQUV0QixZQUFvQixZQUEwQjtRQUExQixpQkFBWSxHQUFaLFlBQVksQ0FBYztRQUM1QyxJQUFJLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRTtZQUMvQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsS0FBSyxDQUFBO1FBQ3hDLENBQUMsQ0FBQyxDQUFDLENBQUE7SUFDTCxDQUFDO0lBRUQsUUFBUSxLQUFVLENBQUM7SUFFbkIsV0FBVztRQUNULElBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDO0lBQ3RCLENBQUM7SUFFRCxlQUFlO0lBQ2YsQ0FBQztJQUVELGlCQUFpQjtRQUNmLE9BQU8sYUFDTCxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRO1lBQ3hCLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVE7WUFDcEIsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUNqQixLQUFLLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsZUFBZSxDQUFDO0lBQzNDLENBQUM7dUdBOUJVLGNBQWM7MkZBQWQsY0FBYyw2RkNsQjNCLCswQkFXQTs7MkZET2EsY0FBYztrQkFOMUIsU0FBUzsrQkFDRSxlQUFlLG1CQUdSLHVCQUF1QixDQUFDLE1BQU07bUdBTXRDLElBQUk7c0JBQVosS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBZnRlclZpZXdJbml0LFxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ29tcG9uZW50LFxuICBJbnB1dCxcbiAgT25Jbml0LFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEF4aXMgfSBmcm9tICcuLi8uLi9jb3JlL2F4aXMvYXhpcyc7XG5cbmltcG9ydCB7U2NhbGVTZXJ2aWNlfSBmcm9tIFwiLi4vLi4vc2VydmljZS9zY2FsZS5zZXJ2aWNlXCI7XG5pbXBvcnQge21hcCwgT2JzZXJ2YWJsZX0gZnJvbSBcInJ4anNcIjtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnW3RldGEteS1heGlzXScsXG4gIHRlbXBsYXRlVXJsOiAnLi95LWF4aXMuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi95LWF4aXMuY29tcG9uZW50LnNjc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIFlBeGlzQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBBZnRlclZpZXdJbml0IHtcblxuICB5OiBPYnNlcnZhYmxlPGFueT47XG5cbiAgQElucHV0KCkgYXhpczogQXhpcztcbiAgQElucHV0KCkgc2l6ZTogRE9NUmVjdDtcblxuICBwcml2YXRlIF9hbGl2ZSA9IHRydWU7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBzY2FsZVNlcnZpY2U6IFNjYWxlU2VydmljZSkge1xuICAgIHRoaXMueSA9IHRoaXMuc2NhbGVTZXJ2aWNlLnNjYWxlcy5waXBlKG1hcCgoXykgPT4ge1xuICAgICAgcmV0dXJuIF8ueS5nZXQodGhpcy5heGlzLmluZGV4KT8uc2NhbGVcbiAgICB9KSlcbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge31cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLl9hbGl2ZSA9IGZhbHNlO1xuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCkge1xuICB9XG5cbiAgZ2V0TGFiZWxUcmFuc2Zvcm0oKSB7XG4gICAgcmV0dXJuIGB0cmFuc2xhdGUoJHtcbiAgICAgIHRoaXMuYXhpcy5vcHRpb25zLm9wcG9zaXRlXG4gICAgICAgID8gdGhpcy5heGlzLnNlbGZTaXplXG4gICAgICAgIDogLXRoaXMuYXhpcy5zZWxmU2l6ZVxuICAgIH0sICR7dGhpcy5zaXplLmhlaWdodCAvIDJ9KSByb3RhdGUoLTkwKWA7XG4gIH1cblxufVxuIiwiPG5nLWNvbnRhaW5lciAqbmdJZj1cInkgfCBhc3luYyBhcyBzY2FsZVwiPlxuICA8c3ZnOmcgW2F0dHIudGV4dC1hbmNob3JdPVwiYXhpcy5vcHRpb25zLm9wcG9zaXRlID8gJ3N0YXJ0JyA6ICdlbmQnXCIgKm5nRm9yPVwibGV0IHRpY2sgb2Ygc2NhbGUudGlja3MoKVwiIFthdHRyLnRyYW5zZm9ybV09XCIndHJhbnNsYXRlKDAsICcrIHNjYWxlKHRpY2spICsnKSdcIj5cbiAgICA8dGV4dCBmaWxsPVwidmFyKC0tY29sb3ItdGV4dC03MClcIiBkeT1cIjAuMzJlbVwiIFthdHRyLnhdPVwiYXhpcy5vcHRpb25zLm9wcG9zaXRlID8gMTAgOiAtOVwiPnt7IHRoaXMuYXhpcy5vcHRpb25zLnRpY2tGb3JtYXQgPyB0aGlzLmF4aXMub3B0aW9ucy50aWNrRm9ybWF0KHRpY2spIDogdGhpcy5heGlzLmRlZmF1bHRGb3JtYXR0ZXIoKSh0aWNrKSB9fTwvdGV4dD5cbiAgICA8bGluZSBzdHJva2U9XCJ2YXIoLS1jb2xvci10ZXh0LTMwKVwiIFthdHRyLngyXT1cImF4aXMub3B0aW9ucy5vcHBvc2l0ZSA/IDYgOiAtNlwiPjwvbGluZT5cbiAgPC9zdmc6Zz5cblxuICA8c3ZnOmcgY2xhc3M9XCJsYWJlbC1heGlzIGZvbnQtY2FwdGlvblwiIFthdHRyLnRyYW5zZm9ybV09XCJnZXRMYWJlbFRyYW5zZm9ybSgpXCI+XG4gICAgPHRleHQgW2F0dHIuZHldPVwiYXhpcy5vcHRpb25zLm9wcG9zaXRlID8gJy00cHgnIDogJzRweCdcIiB0ZXh0LWFuY2hvcj1cIm1pZGRsZVwiIFthdHRyLmRvbWluYW50LWJhc2VsaW5lXT1cImF4aXMub3B0aW9ucy5vcHBvc2l0ZSA/ICdhdXRvJyA6ICdoYW5naW5nJ1wiPnt7IGF4aXMub3B0aW9ucy50aXRsZSB9fTwvdGV4dD5cbiAgPC9zdmc6Zz5cbjwvbmctY29udGFpbmVyPlxuXG4iXX0=
|
|
@@ -27,42 +27,42 @@ import { DraggablePointDirective } from './directives/draggable-point.directive'
|
|
|
27
27
|
import { BandseriesComponent } from './stories/bandseries/bandseries.component';
|
|
28
28
|
import * as i0 from "@angular/core";
|
|
29
29
|
export class ChartModule {
|
|
30
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.4", ngImport: i0, type: ChartModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
31
|
+
static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.1.4", ngImport: i0, type: ChartModule, declarations: [ChartComponent,
|
|
32
|
+
SeriesHostComponent,
|
|
33
|
+
ChartContainerComponent,
|
|
34
|
+
LegendComponent,
|
|
35
|
+
SeriesBaseComponent,
|
|
36
|
+
LinearSeriesBase,
|
|
37
|
+
LineSeriesComponent,
|
|
38
|
+
GridlinesComponent,
|
|
39
|
+
XAxisComponent,
|
|
40
|
+
YAxisComponent,
|
|
41
|
+
PlotlineComponent,
|
|
42
|
+
PlotBandComponent,
|
|
43
|
+
BarSeriesComponent,
|
|
44
|
+
TooltipComponent,
|
|
45
|
+
ZoomableDirective,
|
|
46
|
+
BrushableDirective,
|
|
47
|
+
AreaSeriesComponent,
|
|
48
|
+
ScatterSeriesComponent,
|
|
49
|
+
BlockSeriesComponent,
|
|
50
|
+
BlockAreaSeriesComponent,
|
|
51
|
+
AnnotationComponent,
|
|
52
|
+
CrosshairComponent,
|
|
53
|
+
DraggablePointDirective,
|
|
54
|
+
BandseriesComponent], imports: [CommonModule, LetModule], exports: [ChartComponent,
|
|
55
|
+
LegendComponent,
|
|
56
|
+
SeriesBaseComponent,
|
|
57
|
+
LineSeriesComponent,
|
|
58
|
+
BarSeriesComponent,
|
|
59
|
+
ScatterSeriesComponent,
|
|
60
|
+
AreaSeriesComponent,
|
|
61
|
+
BlockSeriesComponent,
|
|
62
|
+
BlockAreaSeriesComponent] });
|
|
63
|
+
static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.1.4", ngImport: i0, type: ChartModule, imports: [CommonModule, LetModule] });
|
|
30
64
|
}
|
|
31
|
-
|
|
32
|
-
ChartModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.0.2", ngImport: i0, type: ChartModule, declarations: [ChartComponent,
|
|
33
|
-
SeriesHostComponent,
|
|
34
|
-
ChartContainerComponent,
|
|
35
|
-
LegendComponent,
|
|
36
|
-
SeriesBaseComponent,
|
|
37
|
-
LinearSeriesBase,
|
|
38
|
-
LineSeriesComponent,
|
|
39
|
-
GridlinesComponent,
|
|
40
|
-
XAxisComponent,
|
|
41
|
-
YAxisComponent,
|
|
42
|
-
PlotlineComponent,
|
|
43
|
-
PlotBandComponent,
|
|
44
|
-
BarSeriesComponent,
|
|
45
|
-
TooltipComponent,
|
|
46
|
-
ZoomableDirective,
|
|
47
|
-
BrushableDirective,
|
|
48
|
-
AreaSeriesComponent,
|
|
49
|
-
ScatterSeriesComponent,
|
|
50
|
-
BlockSeriesComponent,
|
|
51
|
-
BlockAreaSeriesComponent,
|
|
52
|
-
AnnotationComponent,
|
|
53
|
-
CrosshairComponent,
|
|
54
|
-
DraggablePointDirective,
|
|
55
|
-
BandseriesComponent], imports: [CommonModule, LetModule], exports: [ChartComponent,
|
|
56
|
-
LegendComponent,
|
|
57
|
-
SeriesBaseComponent,
|
|
58
|
-
LineSeriesComponent,
|
|
59
|
-
BarSeriesComponent,
|
|
60
|
-
ScatterSeriesComponent,
|
|
61
|
-
AreaSeriesComponent,
|
|
62
|
-
BlockSeriesComponent,
|
|
63
|
-
BlockAreaSeriesComponent] });
|
|
64
|
-
ChartModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: ChartModule, imports: [CommonModule, LetModule] });
|
|
65
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.2", ngImport: i0, type: ChartModule, decorators: [{
|
|
65
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.4", ngImport: i0, type: ChartModule, decorators: [{
|
|
66
66
|
type: NgModule,
|
|
67
67
|
args: [{
|
|
68
68
|
declarations: [
|
|
@@ -105,4 +105,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.2", ngImpor
|
|
|
105
105
|
imports: [CommonModule, LetModule],
|
|
106
106
|
}]
|
|
107
107
|
}] });
|
|
108
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
108
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhcnQubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NoYXJ0L2NoYXJ0Lm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsUUFBUSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ3ZDLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUM3QyxPQUFPLEVBQUMsY0FBYyxFQUFDLE1BQU0seUJBQXlCLENBQUM7QUFDdkQsT0FBTyxFQUFDLG1CQUFtQixFQUFDLE1BQU0scURBQXFELENBQUM7QUFDeEYsT0FBTyxFQUFDLHVCQUF1QixFQUFDLE1BQU0sNkNBQTZDLENBQUM7QUFDcEYsT0FBTyxFQUFDLGVBQWUsRUFBQyxNQUFNLDJCQUEyQixDQUFDO0FBQzFELE9BQU8sRUFBQyxtQkFBbUIsRUFBQyxNQUFNLDhCQUE4QixDQUFDO0FBQ2pFLE9BQU8sRUFBQyxtQkFBbUIsRUFBQyxNQUFNLHFEQUFxRCxDQUFDO0FBQ3hGLE9BQU8sRUFBQyxrQkFBa0IsRUFBQyxNQUFNLGlEQUFpRCxDQUFDO0FBQ25GLE9BQU8sRUFBQyxjQUFjLEVBQUMsTUFBTSwyQ0FBMkMsQ0FBQztBQUN6RSxPQUFPLEVBQUMsY0FBYyxFQUFDLE1BQU0sMkNBQTJDLENBQUM7QUFDekUsT0FBTyxFQUFDLGlCQUFpQixFQUFDLE1BQU0sK0NBQStDLENBQUM7QUFDaEYsT0FBTyxFQUFDLGlCQUFpQixFQUFDLE1BQU0sZ0RBQWdELENBQUM7QUFDakYsT0FBTyxFQUFDLGtCQUFrQixFQUFDLE1BQU0sbURBQW1ELENBQUM7QUFDckYsT0FBTyxFQUFDLGdCQUFnQixFQUFDLE1BQU0sNkNBQTZDLENBQUM7QUFDN0UsT0FBTyxFQUFDLGlCQUFpQixFQUFDLE1BQU0saUNBQWlDLENBQUM7QUFDbEUsT0FBTyxFQUFDLGtCQUFrQixFQUFDLE1BQU0sa0NBQWtDLENBQUM7QUFDcEUsT0FBTyxFQUFDLHNCQUFzQixFQUFDLE1BQU0sa0VBQWtFLENBQUM7QUFDeEcsT0FBTyxFQUFDLG9CQUFvQixFQUFDLE1BQU0sOERBQThELENBQUM7QUFDbEcsT0FBTyxFQUFDLHdCQUF3QixFQUFDLE1BQU0sd0VBQXdFLENBQUM7QUFDaEgsT0FBTyxFQUFDLG1CQUFtQixFQUFDLE1BQU0sNERBQTRELENBQUM7QUFDL0YsT0FBTyxFQUFDLG1CQUFtQixFQUFDLE1BQU0sbURBQW1ELENBQUM7QUFDdEYsT0FBTyxFQUFDLGdCQUFnQixFQUFDLE1BQU0sNkNBQTZDLENBQUM7QUFDN0UsT0FBTyxFQUFDLGtCQUFrQixFQUFDLE1BQU0saURBQWlELENBQUM7QUFDbkYsT0FBTyxFQUFDLFNBQVMsRUFBQyxNQUFNLHdCQUF3QixDQUFDO0FBQ2pELE9BQU8sRUFBQyx1QkFBdUIsRUFBQyxNQUFNLHdDQUF3QyxDQUFDO0FBQy9FLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDJDQUEyQyxDQUFDOztBQTBDaEYsTUFBTSxPQUFPLFdBQVc7dUdBQVgsV0FBVzt3R0FBWCxXQUFXLGlCQXRDcEIsY0FBYztZQUNkLG1CQUFtQjtZQUNuQix1QkFBdUI7WUFDdkIsZUFBZTtZQUNmLG1CQUFtQjtZQUNuQixnQkFBZ0I7WUFDaEIsbUJBQW1CO1lBQ25CLGtCQUFrQjtZQUNsQixjQUFjO1lBQ2QsY0FBYztZQUNkLGlCQUFpQjtZQUNqQixpQkFBaUI7WUFDakIsa0JBQWtCO1lBQ2xCLGdCQUFnQjtZQUNoQixpQkFBaUI7WUFDakIsa0JBQWtCO1lBQ2xCLG1CQUFtQjtZQUNuQixzQkFBc0I7WUFDdEIsb0JBQW9CO1lBQ3BCLHdCQUF3QjtZQUN4QixtQkFBbUI7WUFDbkIsa0JBQWtCO1lBQ2xCLHVCQUF1QjtZQUN2QixtQkFBbUIsYUFhWCxZQUFZLEVBQUUsU0FBUyxhQVYvQixjQUFjO1lBQ2QsZUFBZTtZQUNmLG1CQUFtQjtZQUNuQixtQkFBbUI7WUFDbkIsa0JBQWtCO1lBQ2xCLHNCQUFzQjtZQUN0QixtQkFBbUI7WUFDbkIsb0JBQW9CO1lBQ3BCLHdCQUF3Qjt3R0FJZixXQUFXLFlBRlosWUFBWSxFQUFFLFNBQVM7OzJGQUV0QixXQUFXO2tCQXhDdkIsUUFBUTttQkFBQztvQkFDUixZQUFZLEVBQUU7d0JBQ1osY0FBYzt3QkFDZCxtQkFBbUI7d0JBQ25CLHVCQUF1Qjt3QkFDdkIsZUFBZTt3QkFDZixtQkFBbUI7d0JBQ25CLGdCQUFnQjt3QkFDaEIsbUJBQW1CO3dCQUNuQixrQkFBa0I7d0JBQ2xCLGNBQWM7d0JBQ2QsY0FBYzt3QkFDZCxpQkFBaUI7d0JBQ2pCLGlCQUFpQjt3QkFDakIsa0JBQWtCO3dCQUNsQixnQkFBZ0I7d0JBQ2hCLGlCQUFpQjt3QkFDakIsa0JBQWtCO3dCQUNsQixtQkFBbUI7d0JBQ25CLHNCQUFzQjt3QkFDdEIsb0JBQW9CO3dCQUNwQix3QkFBd0I7d0JBQ3hCLG1CQUFtQjt3QkFDbkIsa0JBQWtCO3dCQUNsQix1QkFBdUI7d0JBQ3ZCLG1CQUFtQjtxQkFDcEI7b0JBQ0QsT0FBTyxFQUFFO3dCQUNQLGNBQWM7d0JBQ2QsZUFBZTt3QkFDZixtQkFBbUI7d0JBQ25CLG1CQUFtQjt3QkFDbkIsa0JBQWtCO3dCQUNsQixzQkFBc0I7d0JBQ3RCLG1CQUFtQjt3QkFDbkIsb0JBQW9CO3dCQUNwQix3QkFBd0I7cUJBQ3pCO29CQUNELE9BQU8sRUFBRSxDQUFDLFlBQVksRUFBRSxTQUFTLENBQUM7aUJBQ25DIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtOZ01vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0NvbW1vbk1vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7Q2hhcnRDb21wb25lbnR9IGZyb20gJy4vY2hhcnQvY2hhcnQuY29tcG9uZW50JztcbmltcG9ydCB7U2VyaWVzSG9zdENvbXBvbmVudH0gZnJvbSAnLi9jaGFydC1jb250YWluZXIvc2VyaWVzLWhvc3Qvc2VyaWVzLWhvc3QuY29tcG9uZW50JztcbmltcG9ydCB7Q2hhcnRDb250YWluZXJDb21wb25lbnR9IGZyb20gJy4vY2hhcnQtY29udGFpbmVyL2NoYXJ0LWNvbnRhaW5lci5jb21wb25lbnQnO1xuaW1wb3J0IHtMZWdlbmRDb21wb25lbnR9IGZyb20gJy4vbGVnZW5kL2xlZ2VuZC5jb21wb25lbnQnO1xuaW1wb3J0IHtTZXJpZXNCYXNlQ29tcG9uZW50fSBmcm9tICcuL2Jhc2Uvc2VyaWVzLWJhc2UuY29tcG9uZW50JztcbmltcG9ydCB7TGluZVNlcmllc0NvbXBvbmVudH0gZnJvbSAnLi9jaGFydC1jb250YWluZXIvc2VyaWVzL2xpbmUvbGluZS1zZXJpZXMuY29tcG9uZW50JztcbmltcG9ydCB7R3JpZGxpbmVzQ29tcG9uZW50fSBmcm9tICcuL2NoYXJ0LWNvbnRhaW5lci9ncmlkbGluZXMvZ3JpZGxpbmVzLmNvbXBvbmVudCc7XG5pbXBvcnQge1hBeGlzQ29tcG9uZW50fSBmcm9tICcuL2NoYXJ0LWNvbnRhaW5lci94LWF4aXMveC1heGlzLmNvbXBvbmVudCc7XG5pbXBvcnQge1lBeGlzQ29tcG9uZW50fSBmcm9tICcuL2NoYXJ0LWNvbnRhaW5lci95LWF4aXMveS1heGlzLmNvbXBvbmVudCc7XG5pbXBvcnQge1Bsb3RsaW5lQ29tcG9uZW50fSBmcm9tICcuL2NoYXJ0LWNvbnRhaW5lci9wbG90bGluZS9wbG90bGluZS5jb21wb25lbnQnO1xuaW1wb3J0IHtQbG90QmFuZENvbXBvbmVudH0gZnJvbSAnLi9jaGFydC1jb250YWluZXIvcGxvdGJhbmQvcGxvdC1iYW5kLmNvbXBvbmVudCc7XG5pbXBvcnQge0JhclNlcmllc0NvbXBvbmVudH0gZnJvbSAnLi9jaGFydC1jb250YWluZXIvc2VyaWVzL2Jhci9iYXItc2VyaWVzLmNvbXBvbmVudCc7XG5pbXBvcnQge1Rvb2x0aXBDb21wb25lbnR9IGZyb20gJy4vY2hhcnQtY29udGFpbmVyL3Rvb2x0aXAvdG9vbHRpcC5jb21wb25lbnQnO1xuaW1wb3J0IHtab29tYWJsZURpcmVjdGl2ZX0gZnJvbSAnLi9kaXJlY3RpdmVzL3pvb21hYmxlLmRpcmVjdGl2ZSc7XG5pbXBvcnQge0JydXNoYWJsZURpcmVjdGl2ZX0gZnJvbSAnLi9kaXJlY3RpdmVzL2JydXNoYWJsZS5kaXJlY3RpdmUnO1xuaW1wb3J0IHtTY2F0dGVyU2VyaWVzQ29tcG9uZW50fSBmcm9tICcuL2NoYXJ0LWNvbnRhaW5lci9zZXJpZXMvc2NhdHRlci1zZXJpZXMvc2NhdHRlci1zZXJpZXMuY29tcG9uZW50JztcbmltcG9ydCB7QmxvY2tTZXJpZXNDb21wb25lbnR9IGZyb20gJy4vY2hhcnQtY29udGFpbmVyL3Nlcmllcy9ibG9jay1zZXJpZXMvYmxvY2stc2VyaWVzLmNvbXBvbmVudCc7XG5pbXBvcnQge0Jsb2NrQXJlYVNlcmllc0NvbXBvbmVudH0gZnJvbSAnLi9jaGFydC1jb250YWluZXIvc2VyaWVzL2Jsb2NrLWFyZWEtc2VyaWVzL2Jsb2NrLWFyZWEtc2VyaWVzLmNvbXBvbmVudCc7XG5pbXBvcnQge0FyZWFTZXJpZXNDb21wb25lbnR9IGZyb20gJy4vY2hhcnQtY29udGFpbmVyL3Nlcmllcy9hcmVhLXNlcmllcy9hcmVhLXNlcmllcy5jb21wb25lbnQnO1xuaW1wb3J0IHtBbm5vdGF0aW9uQ29tcG9uZW50fSBmcm9tICcuL2NoYXJ0LWNvbnRhaW5lci9hbm5vdGF0aW9uL2Fubm90YXRpb24uY29tcG9uZW50JztcbmltcG9ydCB7TGluZWFyU2VyaWVzQmFzZX0gZnJvbSAnLi9jaGFydC1jb250YWluZXIvc2VyaWVzL2xpbmVhci1zZXJpZXMtYmFzZSc7XG5pbXBvcnQge0Nyb3NzaGFpckNvbXBvbmVudH0gZnJvbSAnLi9jaGFydC1jb250YWluZXIvY3Jvc3NoYWlyL2Nyb3NzaGFpci5jb21wb25lbnQnO1xuaW1wb3J0IHtMZXRNb2R1bGV9IGZyb20gJ0B0ZXRhY29tL25nLWNvbXBvbmVudHMnO1xuaW1wb3J0IHtEcmFnZ2FibGVQb2ludERpcmVjdGl2ZX0gZnJvbSAnLi9kaXJlY3RpdmVzL2RyYWdnYWJsZS1wb2ludC5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgQmFuZHNlcmllc0NvbXBvbmVudCB9IGZyb20gJy4vc3Rvcmllcy9iYW5kc2VyaWVzL2JhbmRzZXJpZXMuY29tcG9uZW50JztcblxuQE5nTW9kdWxlKHtcbiAgZGVjbGFyYXRpb25zOiBbXG4gICAgQ2hhcnRDb21wb25lbnQsXG4gICAgU2VyaWVzSG9zdENvbXBvbmVudCxcbiAgICBDaGFydENvbnRhaW5lckNvbXBvbmVudCxcbiAgICBMZWdlbmRDb21wb25lbnQsXG4gICAgU2VyaWVzQmFzZUNvbXBvbmVudCxcbiAgICBMaW5lYXJTZXJpZXNCYXNlLFxuICAgIExpbmVTZXJpZXNDb21wb25lbnQsXG4gICAgR3JpZGxpbmVzQ29tcG9uZW50LFxuICAgIFhBeGlzQ29tcG9uZW50LFxuICAgIFlBeGlzQ29tcG9uZW50LFxuICAgIFBsb3RsaW5lQ29tcG9uZW50LFxuICAgIFBsb3RCYW5kQ29tcG9uZW50LFxuICAgIEJhclNlcmllc0NvbXBvbmVudCxcbiAgICBUb29sdGlwQ29tcG9uZW50LFxuICAgIFpvb21hYmxlRGlyZWN0aXZlLFxuICAgIEJydXNoYWJsZURpcmVjdGl2ZSxcbiAgICBBcmVhU2VyaWVzQ29tcG9uZW50LFxuICAgIFNjYXR0ZXJTZXJpZXNDb21wb25lbnQsXG4gICAgQmxvY2tTZXJpZXNDb21wb25lbnQsXG4gICAgQmxvY2tBcmVhU2VyaWVzQ29tcG9uZW50LFxuICAgIEFubm90YXRpb25Db21wb25lbnQsXG4gICAgQ3Jvc3NoYWlyQ29tcG9uZW50LFxuICAgIERyYWdnYWJsZVBvaW50RGlyZWN0aXZlLFxuICAgIEJhbmRzZXJpZXNDb21wb25lbnQsXG4gIF0sXG4gIGV4cG9ydHM6IFtcbiAgICBDaGFydENvbXBvbmVudCxcbiAgICBMZWdlbmRDb21wb25lbnQsXG4gICAgU2VyaWVzQmFzZUNvbXBvbmVudCxcbiAgICBMaW5lU2VyaWVzQ29tcG9uZW50LFxuICAgIEJhclNlcmllc0NvbXBvbmVudCxcbiAgICBTY2F0dGVyU2VyaWVzQ29tcG9uZW50LFxuICAgIEFyZWFTZXJpZXNDb21wb25lbnQsXG4gICAgQmxvY2tTZXJpZXNDb21wb25lbnQsXG4gICAgQmxvY2tBcmVhU2VyaWVzQ29tcG9uZW50LFxuICBdLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBMZXRNb2R1bGVdLFxufSlcbmV4cG9ydCBjbGFzcyBDaGFydE1vZHVsZSB7XG59XG4iXX0=
|
|
@@ -0,0 +1,135 @@
|
|
|
1
|
+
import { AxisOrientation } from '../../model/enum/axis-orientation';
|
|
2
|
+
import * as d3 from 'd3';
|
|
3
|
+
import { AxisSizeBuilder, ExtremesBuilder } from './builders/public-api';
|
|
4
|
+
import { ScaleType } from '../../model/enum/scale-type';
|
|
5
|
+
export class Axis {
|
|
6
|
+
chartConfig;
|
|
7
|
+
_orientation;
|
|
8
|
+
_index;
|
|
9
|
+
_extremes = [0, 0];
|
|
10
|
+
_selfSize;
|
|
11
|
+
_ticksValues;
|
|
12
|
+
_options;
|
|
13
|
+
_originDomain = [0, 0];
|
|
14
|
+
_scale;
|
|
15
|
+
defaultFormatters = new Map()
|
|
16
|
+
.set(ScaleType.linear, d3.format(',.5~r'))
|
|
17
|
+
.set(ScaleType.time, d3.timeFormat('%d.%m.%Y'))
|
|
18
|
+
.set(ScaleType.log, d3.format('~s'))
|
|
19
|
+
.set(ScaleType.symlog, d3.format('~s'))
|
|
20
|
+
.set(ScaleType.pow, d3.format('~s'))
|
|
21
|
+
.set(ScaleType.sqrt, d3.format('~s'))
|
|
22
|
+
.set(ScaleType.band, (_) => { return _; });
|
|
23
|
+
defaultScales = new Map()
|
|
24
|
+
.set(ScaleType.linear, d3.scaleLinear)
|
|
25
|
+
.set(ScaleType.log, d3.scaleLog)
|
|
26
|
+
.set(ScaleType.symlog, d3.scaleSymlog)
|
|
27
|
+
.set(ScaleType.pow, d3.scalePow)
|
|
28
|
+
.set(ScaleType.sqrt, d3.scaleSqrt)
|
|
29
|
+
.set(ScaleType.time, d3.scaleTime)
|
|
30
|
+
.set(ScaleType.band, d3.scaleBand);
|
|
31
|
+
constructor(config) {
|
|
32
|
+
this.chartConfig = config;
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Factory for creating x,y axes
|
|
36
|
+
* @param {AxisOrientation} orientation
|
|
37
|
+
* Axis type
|
|
38
|
+
* @param {IChartConfig} config
|
|
39
|
+
* Chart config
|
|
40
|
+
* @param {number} index
|
|
41
|
+
* New generated axis
|
|
42
|
+
*/
|
|
43
|
+
static createAxis(orientation, config, index) {
|
|
44
|
+
const axis = new Axis(config);
|
|
45
|
+
axis.setLocate(orientation);
|
|
46
|
+
axis.setIndex(index);
|
|
47
|
+
axis.setOptions();
|
|
48
|
+
axis.setExtremes();
|
|
49
|
+
axis.setTicksValues();
|
|
50
|
+
axis.setSelfSize();
|
|
51
|
+
return axis;
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
*
|
|
55
|
+
* @param {orientation} orientation
|
|
56
|
+
* Set locate axis x or y
|
|
57
|
+
*/
|
|
58
|
+
setLocate(orientation) {
|
|
59
|
+
this._orientation = orientation;
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
*
|
|
63
|
+
* @param {number} index
|
|
64
|
+
* Index axis
|
|
65
|
+
*/
|
|
66
|
+
setIndex(index) {
|
|
67
|
+
this._index = index;
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* @return {Array<Series<BasePoint>>}
|
|
71
|
+
* Linked series
|
|
72
|
+
*/
|
|
73
|
+
linkedSeries() {
|
|
74
|
+
const linkedFilter = (serie) => serie[this._orientation === AxisOrientation.y ? 'yAxisIndex' : 'xAxisIndex'] === this._index;
|
|
75
|
+
return this.chartConfig?.series.filter(linkedFilter);
|
|
76
|
+
}
|
|
77
|
+
setExtremes() {
|
|
78
|
+
const builder = new ExtremesBuilder();
|
|
79
|
+
this._extremes = builder.build(this);
|
|
80
|
+
}
|
|
81
|
+
setOriginDomain(domain) {
|
|
82
|
+
this._originDomain = domain;
|
|
83
|
+
}
|
|
84
|
+
setScale(scale) {
|
|
85
|
+
this._scale = scale;
|
|
86
|
+
if (this.options.scaleType.type === ScaleType.band) {
|
|
87
|
+
this._scale.ticks = () => {
|
|
88
|
+
return this._scale.domain();
|
|
89
|
+
};
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
setSelfSize() {
|
|
93
|
+
this._selfSize = new AxisSizeBuilder().build(this);
|
|
94
|
+
}
|
|
95
|
+
setTicksValues() {
|
|
96
|
+
//this._ticksValues = generateTicks(this._extremes);
|
|
97
|
+
}
|
|
98
|
+
setOptions() {
|
|
99
|
+
const options = this.orientation === AxisOrientation.x
|
|
100
|
+
? this.chartConfig.xAxis[this.index]
|
|
101
|
+
: this.chartConfig.yAxis[this.index];
|
|
102
|
+
this._options = options;
|
|
103
|
+
}
|
|
104
|
+
get scale() {
|
|
105
|
+
return this._scale;
|
|
106
|
+
}
|
|
107
|
+
get extremes() {
|
|
108
|
+
return this._extremes;
|
|
109
|
+
}
|
|
110
|
+
get orientation() {
|
|
111
|
+
return this._orientation;
|
|
112
|
+
}
|
|
113
|
+
get selfSize() {
|
|
114
|
+
return this._selfSize;
|
|
115
|
+
}
|
|
116
|
+
get tickValues() {
|
|
117
|
+
return this._ticksValues;
|
|
118
|
+
}
|
|
119
|
+
get index() {
|
|
120
|
+
return this._index;
|
|
121
|
+
}
|
|
122
|
+
get options() {
|
|
123
|
+
return this._options;
|
|
124
|
+
}
|
|
125
|
+
get originDomain() {
|
|
126
|
+
return this._originDomain;
|
|
127
|
+
}
|
|
128
|
+
defaultFormatter() {
|
|
129
|
+
return this.defaultFormatters.get(this.options.scaleType.type);
|
|
130
|
+
}
|
|
131
|
+
defaultScale() {
|
|
132
|
+
return this.defaultScales.get(this.options.scaleType.type);
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXhpcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9jaGFydC9jb3JlL2F4aXMvYXhpcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUMsZUFBZSxFQUFDLE1BQU0sbUNBQW1DLENBQUM7QUFHbEUsT0FBTyxLQUFLLEVBQUUsTUFBTSxJQUFJLENBQUM7QUFFekIsT0FBTyxFQUFDLGVBQWUsRUFBRSxlQUFlLEVBQUMsTUFBTSx1QkFBdUIsQ0FBQztBQUN2RSxPQUFPLEVBQUMsU0FBUyxFQUFDLE1BQU0sNkJBQTZCLENBQUM7QUFFdEQsTUFBTSxPQUFPLElBQUk7SUFDUCxXQUFXLENBQWU7SUFDMUIsWUFBWSxDQUFrQjtJQUM5QixNQUFNLENBQVM7SUFDZixTQUFTLEdBQXdCLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ3hDLFNBQVMsQ0FBUztJQUNsQixZQUFZLENBQVc7SUFDdkIsUUFBUSxDQUFjO0lBQ3RCLGFBQWEsR0FBcUIsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFFekMsTUFBTSxDQUFNO0lBRVosaUJBQWlCLEdBQUcsSUFBSSxHQUFHLEVBQWtCO1NBQ2xELEdBQUcsQ0FBQyxTQUFTLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUM7U0FDekMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUMsQ0FBQztTQUM5QyxHQUFHLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO1NBQ25DLEdBQUcsQ0FBQyxTQUFTLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDdEMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxJ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QyxhQUFhLENBQUM7SUFDNUIsQ0FBQztJQUVNLGdCQUFnQjtRQUNyQixPQUFPLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDakUsQ0FBQztJQUVNLFlBQVk7UUFDakIsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUM3RCxDQUFDO0NBR0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0lDaGFydENvbmZpZ30gZnJvbSAnLi4vLi4vbW9kZWwvaS1jaGFydC1jb25maWcnO1xuaW1wb3J0IHtBeGlzT3JpZW50YXRpb259IGZyb20gJy4uLy4uL21vZGVsL2VudW0vYXhpcy1vcmllbnRhdGlvbic7XG5pbXBvcnQge1Nlcmllc30gZnJvbSAnLi4vLi4vbW9kZWwvc2VyaWVzJztcbmltcG9ydCB7QmFzZVBvaW50fSBmcm9tICcuLi8uLi9tb2RlbC9iYXNlLXBvaW50JztcbmltcG9ydCAqIGFzIGQzIGZyb20gJ2QzJztcbmltcG9ydCB7QXhpc09wdGlvbnN9IGZyb20gJy4uLy4uL21vZGVsL2F4aXMtb3B0aW9ucyc7XG5pbXBvcnQge0F4aXNTaXplQnVpbGRlciwgRXh0cmVtZXNCdWlsZGVyfSBmcm9tICcuL2J1aWxkZXJzL3B1YmxpYy1hcGknO1xuaW1wb3J0IHtTY2FsZVR5cGV9IGZyb20gJy4uLy4uL21vZGVsL2VudW0vc2NhbGUtdHlwZSc7XG5cbmV4cG9ydCBjbGFzcyBBeGlzIHtcbiAgcHJpdmF0ZSBjaGFydENvbmZpZzogSUNoYXJ0Q29uZmlnO1xuICBwcml2YXRlIF9vcmllbnRhdGlvbjogQXhpc09yaWVudGF0aW9uO1xuICBwcml2YXRlIF9pbmRleDogbnVtYmVyO1xuICBwcml2YXRlIF9leHRyZW1lczogbnVtYmVyW10gfCBzdHJpbmdbXSA9IFswLCAwXTtcbiAgcHJpdmF0ZSBfc2VsZlNpemU6IG51bWJlcjtcbiAgcHJpdmF0ZSBfdGlja3NWYWx1ZXM6IG51bWJlcltdO1xuICBwcml2YXRlIF9vcHRpb25zOiBBeGlzT3B0aW9ucztcbiAgcHJpdmF0ZSBfb3JpZ2luRG9tYWluOiBbbnVtYmVyLCBudW1iZXJdID0gWzAsIDBdO1xuXG4gIHByaXZhdGUgX3NjYWxlOiBhbnk7XG5cbiAgcHJpdmF0ZSBkZWZhdWx0Rm9ybWF0dGVycyA9IG5ldyBNYXA8U2NhbGVUeXBlLCBhbnk+KClcbiAgICAuc2V0KFNjYWxlVHlwZS5saW5lYXIsIGQzLmZvcm1hdCgnLC41fnInKSlcbiAgICAuc2V0KFNjYWxlVHlwZS50aW1lLCBkMy50aW1lRm9ybWF0KCclZC4lbS4lWScpKVxuICAgIC5zZXQoU2NhbGVUeXBlLmxvZywgZDMuZm9ybWF0KCd+cycpKVxuICAgIC5zZXQoU2NhbGVUeXBlLnN5bWxvZywgZDMuZm9ybWF0KCd+cycpKVxuICAgIC5zZXQoU2NhbGVUeXBlLnBvdywgZDMuZm9ybWF0KCd+cycpKVxuICAgIC5zZXQoU2NhbGVUeXBlLnNxcnQsIGQzLmZvcm1hdCgnfnMnKSlcbiAgICAuc2V0KFNjYWxlVHlwZS5iYW5kLCAoXykgPT4ge3JldHVybiBffSlcblxuXG5cbiAgcHJpdmF0ZSBkZWZhdWx0U2NhbGVzID0gbmV3IE1hcDxTY2FsZVR5cGUsIGFueT4oKVxuICAgIC5zZXQoU2NhbGVUeXBlLmxpbmVhciwgZDMuc2NhbGVMaW5lYXIpXG4gICAgLnNldChTY2FsZVR5cGUubG9nLCBkMy5zY2FsZUxvZylcbiAgICAuc2V0KFNjYWxlVHlwZS5zeW1sb2csIGQzLnNjYWxlU3ltbG9nKVxuICAgIC5zZXQoU2NhbGVUeXBlLnBvdywgZDMuc2NhbGVQb3cpXG4gICAgLnNldChTY2FsZVR5cGUuc3FydCwgZDMuc2NhbGVTcXJ0KVxuICAgIC5zZXQoU2NhbGVUeXBlLnRpbWUsIGQzLnNjYWxlVGltZSlcbiAgICAuc2V0KFNjYWxlVHlwZS5iYW5kLCBkMy5zY2FsZUJhbmQpO1xuXG4gIGNvbnN0cnVjdG9yKGNvbmZpZzogSUNoYXJ0Q29uZmlnKSB7XG4gICAgdGhpcy5jaGFydENvbmZpZyA9IGNvbmZpZztcbiAgfVxuXG4gIC8qKlxuICAgKiBGYWN0b3J5IGZvciBjcmVhdGluZyB4LHkgYXhlc1xuICAgKiBAcGFyYW0ge0F4aXNPcmllbnRhdGlvbn0gb3JpZW50YXRpb25cbiAgICogQXhpcyB0eXBlXG4gICAqIEBwYXJhbSB7SUNoYXJ0Q29uZmlnfSBjb25maWdcbiAgICogQ2hhcnQgY29uZmlnXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBpbmRleFxuICAgKiBOZXcgZ2VuZXJhdGVkIGF4aXNcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgY3JlYXRlQXhpcyhcbiAgICBvcmllbnRhdGlvbjogQXhpc09yaWVudGF0aW9uLFxuICAgIGNvbmZpZzogSUNoYXJ0Q29uZmlnLFxuICAgIGluZGV4OiBudW1iZXJcbiAgKTogQXhpcyB7XG4gICAgY29uc3QgYXhpcyA9IG5ldyBBeGlzKGNvbmZpZyk7XG4gICAgYXhpcy5zZXRMb2NhdGUob3JpZW50YXRpb24pO1xuICAgIGF4aXMuc2V0SW5kZXgoaW5kZXgpO1xuXG4gICAgYXhpcy5zZXRPcHRpb25zKCk7XG4gICAgYXhpcy5zZXRFeHRyZW1lcygpO1xuICAgIGF4aXMuc2V0VGlja3NWYWx1ZXMoKTtcbiAgICBheGlzLnNldFNlbGZTaXplKCk7XG5cbiAgICByZXR1cm4gYXhpcztcbiAgfVxuXG4gIC8qKlxuICAgKlxuICAgKiBAcGFyYW0ge29yaWVudGF0aW9ufSBvcmllbnRhdGlvblxuICAgKiBTZXQgbG9jYXRlIGF4aXMgeCBvciB5XG4gICAqL1xuICBwcml2YXRlIHNldExvY2F0ZShvcmllbnRhdGlvbjogQXhpc09yaWVudGF0aW9uKTogdm9pZCB7XG4gICAgdGhpcy5fb3JpZW50YXRpb24gPSBvcmllbnRhdGlvbjtcbiAgfVxuXG4gIC8qKlxuICAgKlxuICAgKiBAcGFyYW0ge251bWJlcn0gaW5kZXhcbiAgICogSW5kZXggYXhpc1xuICAgKi9cbiAgcHJpdmF0ZSBzZXRJbmRleChpbmRleDogbnVtYmVyKTogdm9pZCB7XG4gICAgdGhpcy5faW5kZXggPSBpbmRleDtcbiAgfVxuXG4gIC8qKlxuICAgKiBAcmV0dXJuIHtBcnJheTxTZXJpZXM8QmFzZVBvaW50Pj59XG4gICAqIExpbmtlZCBzZXJpZXNcbiAgICovXG4gIHB1YmxpYyBsaW5rZWRTZXJpZXMoKTogQXJyYXk8U2VyaWVzPEJhc2VQb2ludD4+IHtcbiAgICBjb25zdCBsaW5rZWRGaWx0ZXIgPSAoc2VyaWU6IFNlcmllczxCYXNlUG9pbnQ+KSA9PlxuICAgICAgc2VyaWVbXG4gICAgICAgIHRoaXMuX29yaWVudGF0aW9uID09PSBBeGlzT3JpZW50YXRpb24ueSA/ICd5QXhpc0luZGV4JyA6ICd4QXhpc0luZGV4J1xuICAgICAgICBdID09PSB0aGlzLl9pbmRleDtcblxuICAgIHJldHVybiB0aGlzLmNoYXJ0Q29uZmlnPy5zZXJpZXMuZmlsdGVyKGxpbmtlZEZpbHRlcik7XG4gIH1cblxuICBwdWJsaWMgc2V0RXh0cmVtZXMoKTogdm9pZCB7XG4gICAgY29uc3QgYnVpbGRlciA9IG5ldyBFeHRyZW1lc0J1aWxkZXIoKTtcbiAgICB0aGlzLl9leHRyZW1lcyA9IGJ1aWxkZXIuYnVpbGQodGhpcyk7XG4gIH1cblxuICBwdWJsaWMgc2V0T3JpZ2luRG9tYWluKGRvbWFpbjogW251bWJlciwgbnVtYmVyXSkge1xuICAgIHRoaXMuX29yaWdpbkRvbWFpbiA9IGRvbWFpbjtcbiAgfVxuXG4gIHB1YmxpYyBzZXRTY2FsZShzY2FsZTogYW55KSB7XG4gICAgdGhpcy5fc2NhbGUgPSBzY2FsZTtcblxuICAgIGlmKHRoaXMub3B0aW9ucy5zY2FsZVR5cGUudHlwZSA9PT0gU2NhbGVUeXBlLmJhbmQpIHtcbiAgICAgIHRoaXMuX3NjYWxlLnRpY2tzID0gKCkgPT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fc2NhbGUuZG9tYWluKClcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHNldFNlbGZTaXplKCk6IHZvaWQge1xuICAgIHRoaXMuX3NlbGZTaXplID0gbmV3IEF4aXNTaXplQnVpbGRlcigpLmJ1aWxkKHRoaXMpO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXRUaWNrc1ZhbHVlcygpOiB2b2lkIHtcbiAgICAvL3RoaXMuX3RpY2tzVmFsdWVzID0gZ2VuZXJhdGVUaWNrcyh0aGlzLl9leHRyZW1lcyk7XG4gIH1cblxuICBwcml2YXRlIHNldE9wdGlvbnMoKTogdm9pZCB7XG4gICAgY29uc3Qgb3B0aW9ucyA9XG4gICAgICB0aGlzLm9yaWVudGF0aW9uID09PSBBeGlzT3JpZW50YXRpb24ueFxuICAgICAgICA/IHRoaXMuY2hhcnRDb25maWcueEF4aXNbdGhpcy5pbmRleF1cbiAgICAgICAgOiB0aGlzLmNoYXJ0Q29uZmlnLnlBeGlzW3RoaXMuaW5kZXhdO1xuXG4gICAgdGhpcy5fb3B0aW9ucyA9IG9wdGlvbnM7XG4gIH1cblxuICBnZXQgc2NhbGUoKTogYW55IHtcbiAgICByZXR1cm4gdGhpcy5fc2NhbGU7XG4gIH1cblxuICBnZXQgZXh0cmVtZXMoKTogQXJyYXk8bnVtYmVyIHwgc3RyaW5nPiB7XG4gICAgcmV0dXJuIHRoaXMuX2V4dHJlbWVzO1xuICB9XG5cbiAgZ2V0IG9yaWVudGF0aW9uKCk6IEF4aXNPcmllbnRhdGlvbiB7XG4gICAgcmV0dXJuIHRoaXMuX29yaWVudGF0aW9uO1xuICB9XG5cbiAgZ2V0IHNlbGZTaXplKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuX3NlbGZTaXplO1xuICB9XG5cbiAgZ2V0IHRpY2tWYWx1ZXMoKTogbnVtYmVyW10ge1xuICAgIHJldHVybiB0aGlzLl90aWNrc1ZhbHVlcztcbiAgfVxuXG4gIGdldCBpbmRleCgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLl9pbmRleDtcbiAgfVxuXG4gIGdldCBvcHRpb25zKCk6IEF4aXNPcHRpb25zIHtcbiAgICByZXR1cm4gdGhpcy5fb3B0aW9ucztcbiAgfVxuXG4gIGdldCBvcmlnaW5Eb21haW4oKTogW251bWJlciwgbnVtYmVyXSB7XG4gICAgcmV0dXJuIHRoaXMuX29yaWdpbkRvbWFpbjtcbiAgfVxuXG4gIHB1YmxpYyBkZWZhdWx0Rm9ybWF0dGVyKCkge1xuICAgIHJldHVybiB0aGlzLmRlZmF1bHRGb3JtYXR0ZXJzLmdldCh0aGlzLm9wdGlvbnMuc2NhbGVUeXBlLnR5cGUpO1xuICB9XG5cbiAgcHVibGljIGRlZmF1bHRTY2FsZSgpIHtcbiAgICByZXR1cm4gdGhpcy5kZWZhdWx0U2NhbGVzLmdldCh0aGlzLm9wdGlvbnMuc2NhbGVUeXBlLnR5cGUpO1xuICB9XG5cblxufVxuIl19
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { AxisOrientation } from '../../../model/enum/axis-orientation';
|
|
2
|
+
import { maxIndex } from 'd3-array';
|
|
3
|
+
import { getTextWidth } from '../../utils/public-api';
|
|
4
|
+
import { ScaleType } from "../../../model/enum/scale-type";
|
|
5
|
+
export class AxisSizeBuilder {
|
|
6
|
+
titlePadding = 11;
|
|
7
|
+
basePadding = 16;
|
|
8
|
+
backupRatio = 0.58;
|
|
9
|
+
build(settings) {
|
|
10
|
+
let finalPadding = this.basePadding;
|
|
11
|
+
if (settings.orientation === AxisOrientation.y) {
|
|
12
|
+
const formatter = settings.options.tickFormat || settings.defaultFormatter();
|
|
13
|
+
finalPadding += settings.options.title ? this.titlePadding : 0;
|
|
14
|
+
const scale = settings.defaultScale()();
|
|
15
|
+
scale.domain(settings.extremes);
|
|
16
|
+
if (settings.options.scaleType.type === ScaleType.band) {
|
|
17
|
+
scale.ticks = (ticks) => {
|
|
18
|
+
return scale.domain();
|
|
19
|
+
};
|
|
20
|
+
}
|
|
21
|
+
const ticks = scale.ticks(20);
|
|
22
|
+
const maxElementLengthIndex = maxIndex(ticks, (_) => formatter(_).length);
|
|
23
|
+
finalPadding += getTextWidth(formatter(ticks[maxElementLengthIndex]), this.backupRatio);
|
|
24
|
+
}
|
|
25
|
+
if (settings.orientation === AxisOrientation.x) {
|
|
26
|
+
finalPadding += finalPadding + 20;
|
|
27
|
+
}
|
|
28
|
+
return finalPadding;
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXhpcy1zaXplLWJ1aWxkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvY2hhcnQvY29yZS9heGlzL2J1aWxkZXJzL2F4aXMtc2l6ZS1idWlsZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBQyxlQUFlLEVBQUMsTUFBTSxzQ0FBc0MsQ0FBQztBQUNyRSxPQUFPLEVBQUMsUUFBUSxFQUFDLE1BQU0sVUFBVSxDQUFDO0FBQ2xDLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSx3QkFBd0IsQ0FBQztBQUVwRCxPQUFPLEVBQUMsU0FBUyxFQUFDLE1BQU0sZ0NBQWdDLENBQUM7QUFFekQsTUFBTSxPQUFPLGVBQWU7SUFDbEIsWUFBWSxHQUFHLEVBQUUsQ0FBQztJQUNsQixXQUFXLEdBQUcsRUFBRSxDQUFDO0lBQ2pCLFdBQVcsR0FBRyxJQUFJLENBQUM7SUFFM0IsS0FBSyxDQUFDLFFBQWM7UUFDbEIsSUFBSSxZQUFZLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQztRQUVwQyxJQUFJLFFBQVEsQ0FBQyxXQUFXLEtBQUssZUFBZSxDQUFDLENBQUMsRUFBRTtZQUM5QyxNQUFNLFNBQVMsR0FBRyxRQUFRLENBQUMsT0FBTyxDQUFDLFVBQVUsSUFBSSxRQUFRLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztZQUU3RSxZQUFZLElBQUksUUFBUSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUUvRCxNQUFNLEtBQUssR0FBRyxRQUFRLENBQUMsWUFBWSxFQUFFLEVBQUUsQ0FBQztZQUN4QyxLQUFLLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQTtZQUcvQixJQUFHLFFBQVEsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLElBQUksS0FBSyxTQUFTLENBQUMsSUFBSSxFQUFFO2dCQUNyRCxLQUFLLENBQUMsS0FBSyxHQUFHLENBQUMsS0FBYyxFQUFFLEVBQUU7b0JBQy9CLE9BQU8sS0FBSyxDQUFDLE1BQU0sRUFBRSxDQUFBO2dCQUN2QixDQUFDLENBQUE7YUFDRjtZQUNELE1BQU0sS0FBSyxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUM7WUFFOUIsTUFBTSxxQkFBcUIsR0FBRyxRQUFRLENBQ3BDLEtBQUssRUFDTCxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FDM0IsQ0FBQztZQUVGLFlBQVksSUFBSSxZQUFZLENBQzFCLFNBQVMsQ0FBQyxLQUFLLENBQUMscUJBQXFCLENBQUMsQ0FBQyxFQUN2QyxJQUFJLENBQUMsV0FBVyxDQUNqQixDQUFDO1NBQ0g7UUFFRCxJQUFJLFFBQVEsQ0FBQyxXQUFXLEtBQUssZUFBZSxDQUFDLENBQUMsRUFBRTtZQUM5QyxZQUFZLElBQUksWUFBWSxHQUFHLEVBQUUsQ0FBQztTQUNuQztRQUVELE9BQU8sWUFBWSxDQUFDO0lBQ3RCLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7QXhpc30gZnJvbSAnLi4vYXhpcyc7XG5pbXBvcnQge0F4aXNPcmllbnRhdGlvbn0gZnJvbSAnLi4vLi4vLi4vbW9kZWwvZW51bS9heGlzLW9yaWVudGF0aW9uJztcbmltcG9ydCB7bWF4SW5kZXh9IGZyb20gJ2QzLWFycmF5JztcbmltcG9ydCB7Z2V0VGV4dFdpZHRofSBmcm9tICcuLi8uLi91dGlscy9wdWJsaWMtYXBpJztcbmltcG9ydCB7SUJ1aWxkZXJ9IGZyb20gJy4uLy4uLy4uL21vZGVsL2ktYnVpbGRlcic7XG5pbXBvcnQge1NjYWxlVHlwZX0gZnJvbSBcIi4uLy4uLy4uL21vZGVsL2VudW0vc2NhbGUtdHlwZVwiO1xuXG5leHBvcnQgY2xhc3MgQXhpc1NpemVCdWlsZGVyIGltcGxlbWVudHMgSUJ1aWxkZXI8QXhpcywgbnVtYmVyPiB7XG4gIHByaXZhdGUgdGl0bGVQYWRkaW5nID0gMTE7XG4gIHByaXZhdGUgYmFzZVBhZGRpbmcgPSAxNjtcbiAgcHJpdmF0ZSBiYWNrdXBSYXRpbyA9IDAuNTg7XG5cbiAgYnVpbGQoc2V0dGluZ3M6IEF4aXMpOiBudW1iZXIge1xuICAgIGxldCBmaW5hbFBhZGRpbmcgPSB0aGlzLmJhc2VQYWRkaW5nO1xuXG4gICAgaWYgKHNldHRpbmdzLm9yaWVudGF0aW9uID09PSBBeGlzT3JpZW50YXRpb24ueSkge1xuICAgICAgY29uc3QgZm9ybWF0dGVyID0gc2V0dGluZ3Mub3B0aW9ucy50aWNrRm9ybWF0IHx8IHNldHRpbmdzLmRlZmF1bHRGb3JtYXR0ZXIoKTtcblxuICAgICAgZmluYWxQYWRkaW5nICs9IHNldHRpbmdzLm9wdGlvbnMudGl0bGUgPyB0aGlzLnRpdGxlUGFkZGluZyA6IDA7XG5cbiAgICAgIGNvbnN0IHNjYWxlID0gc2V0dGluZ3MuZGVmYXVsdFNjYWxlKCkoKTtcbiAgICAgIHNjYWxlLmRvbWFpbihzZXR0aW5ncy5leHRyZW1lcylcblxuXG4gICAgICBpZihzZXR0aW5ncy5vcHRpb25zLnNjYWxlVHlwZS50eXBlID09PSBTY2FsZVR5cGUuYmFuZCkge1xuICAgICAgICBzY2FsZS50aWNrcyA9ICh0aWNrcz86IG51bWJlcikgPT4ge1xuICAgICAgICAgIHJldHVybiBzY2FsZS5kb21haW4oKVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICBjb25zdCB0aWNrcyA9IHNjYWxlLnRpY2tzKDIwKTtcblxuICAgICAgY29uc3QgbWF4RWxlbWVudExlbmd0aEluZGV4ID0gbWF4SW5kZXgoXG4gICAgICAgIHRpY2tzLFxuICAgICAgICAoXykgPT4gZm9ybWF0dGVyKF8pLmxlbmd0aFxuICAgICAgKTtcblxuICAgICAgZmluYWxQYWRkaW5nICs9IGdldFRleHRXaWR0aChcbiAgICAgICAgZm9ybWF0dGVyKHRpY2tzW21heEVsZW1lbnRMZW5ndGhJbmRleF0pLFxuICAgICAgICB0aGlzLmJhY2t1cFJhdGlvXG4gICAgICApO1xuICAgIH1cblxuICAgIGlmIChzZXR0aW5ncy5vcmllbnRhdGlvbiA9PT0gQXhpc09yaWVudGF0aW9uLngpIHtcbiAgICAgIGZpbmFsUGFkZGluZyArPSBmaW5hbFBhZGRpbmcgKyAyMDtcbiAgICB9XG5cbiAgICByZXR1cm4gZmluYWxQYWRkaW5nO1xuICB9XG59XG4iXX0=
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { AxisOrientation } from '../../../model/enum/axis-orientation';
|
|
2
|
+
import * as d3 from 'd3';
|
|
3
|
+
import { ScaleType } from "../../../model/enum/scale-type";
|
|
4
|
+
export class ExtremesBuilder {
|
|
5
|
+
extentAccessorMap = new Map()
|
|
6
|
+
.set(AxisOrientation.x, (_) => _.x)
|
|
7
|
+
.set(AxisOrientation.y, (_) => _.y);
|
|
8
|
+
extremes = [0, 0];
|
|
9
|
+
build(settings) {
|
|
10
|
+
const options = settings.options;
|
|
11
|
+
const hasMin = options?.min != null;
|
|
12
|
+
const hasMax = options?.max != null;
|
|
13
|
+
if (!hasMin || !hasMax) {
|
|
14
|
+
const linkedSeries = settings.linkedSeries();
|
|
15
|
+
const data = linkedSeries.reduce((acc, current) => {
|
|
16
|
+
return acc.concat(current.data);
|
|
17
|
+
}, []);
|
|
18
|
+
const accessor = this.extentAccessorMap.get(settings.orientation);
|
|
19
|
+
this.extremes = data.length > 1 ? d3.extent(data, accessor) : [0, 0];
|
|
20
|
+
if (settings.options.scaleType.type === ScaleType.band) {
|
|
21
|
+
this.extremes = data.map(accessor);
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
if (hasMin) {
|
|
25
|
+
this.extremes[0] = options?.min;
|
|
26
|
+
}
|
|
27
|
+
if (hasMax) {
|
|
28
|
+
this.extremes[1] = options?.max;
|
|
29
|
+
}
|
|
30
|
+
return this.extremes;
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXh0cmVtZXMtYnVpbGRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9jaGFydC9jb3JlL2F4aXMvYnVpbGRlcnMvZXh0cmVtZXMtYnVpbGRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFHQSxPQUFPLEVBQUMsZUFBZSxFQUFDLE1BQU0sc0NBQXNDLENBQUM7QUFFckUsT0FBTyxLQUFLLEVBQUUsTUFBTSxJQUFJLENBQUM7QUFDekIsT0FBTyxFQUFDLFNBQVMsRUFBQyxNQUFNLGdDQUFnQyxDQUFDO0FBRXpELE1BQU0sT0FBTyxlQUFlO0lBQ2xCLGlCQUFpQixHQUFHLElBQUksR0FBRyxFQUNGO1NBQzlCLEdBQUcsQ0FBQyxlQUFlLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQ2xDLEdBQUcsQ0FBQyxlQUFlLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFFOUIsUUFBUSxHQUF3QixDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUUvQyxLQUFLLENBQUMsUUFBYztRQUNsQixNQUFNLE9BQU8sR0FBRyxRQUFRLENBQUMsT0FBTyxDQUFDO1FBRWpDLE1BQU0sTUFBTSxHQUFHLE9BQU8sRUFBRSxHQUFHLElBQUksSUFBSSxDQUFDO1FBQ3BDLE1BQU0sTUFBTSxHQUFHLE9BQU8sRUFBRSxHQUFHLElBQUksSUFBSSxDQUFDO1FBRXBDLElBQUksQ0FBQyxNQUFNLElBQUksQ0FBQyxNQUFNLEVBQUU7WUFDdEIsTUFBTSxZQUFZLEdBQUcsUUFBUSxDQUFDLFlBQVksRUFBRSxDQUFDO1lBQzdDLE1BQU0sSUFBSSxHQUFHLFlBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFnQixFQUFFLE9BQU8sRUFBRSxFQUFFO2dCQUM3RCxPQUFPLEdBQUcsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ2xDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztZQUNQLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1lBQ2xFLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztZQUVyRSxJQUFHLFFBQVEsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLElBQUksS0FBSyxTQUFTLENBQUMsSUFBSSxFQUFFO2dCQUNyRCxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUE7YUFDbkM7U0FFRjtRQUVELElBQUksTUFBTSxFQUFFO1lBQ1YsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsR0FBRyxPQUFPLEVBQUUsR0FBRyxDQUFDO1NBQ2pDO1FBRUQsSUFBSSxNQUFNLEVBQUU7WUFDVixJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxHQUFHLE9BQU8sRUFBRSxHQUFHLENBQUM7U0FDakM7UUFFRCxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUM7SUFDdkIsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtJQnVpbGRlcn0gZnJvbSAnLi4vLi4vLi4vbW9kZWwvaS1idWlsZGVyJztcbmltcG9ydCB7QXhpc30gZnJvbSAnLi4vYXhpcyc7XG5pbXBvcnQge0Jhc2VQb2ludH0gZnJvbSAnLi4vLi4vLi4vbW9kZWwvYmFzZS1wb2ludCc7XG5pbXBvcnQge0F4aXNPcmllbnRhdGlvbn0gZnJvbSAnLi4vLi4vLi4vbW9kZWwvZW51bS9heGlzLW9yaWVudGF0aW9uJztcblxuaW1wb3J0ICogYXMgZDMgZnJvbSAnZDMnO1xuaW1wb3J0IHtTY2FsZVR5cGV9IGZyb20gXCIuLi8uLi8uLi9tb2RlbC9lbnVtL3NjYWxlLXR5cGVcIjtcblxuZXhwb3J0IGNsYXNzIEV4dHJlbWVzQnVpbGRlciBpbXBsZW1lbnRzIElCdWlsZGVyPEF4aXMsIG51bWJlcltdIHwgc3RyaW5nW10+IHtcbiAgcHJpdmF0ZSBleHRlbnRBY2Nlc3Nvck1hcCA9IG5ldyBNYXA8QXhpc09yaWVudGF0aW9uLFxuICAgIChwb2ludDogQmFzZVBvaW50KSA9PiBudW1iZXI+KClcbiAgICAuc2V0KEF4aXNPcmllbnRhdGlvbi54LCAoXykgPT4gXy54KVxuICAgIC5zZXQoQXhpc09yaWVudGF0aW9uLnksIChfKSA9PiBfLnkpO1xuXG4gIHByaXZhdGUgZXh0cmVtZXM6IG51bWJlcltdIHwgc3RyaW5nW10gPSBbMCwgMF07XG5cbiAgYnVpbGQoc2V0dGluZ3M6IEF4aXMpOiBudW1iZXJbXSB8IHN0cmluZ1tdIHtcbiAgICBjb25zdCBvcHRpb25zID0gc2V0dGluZ3Mub3B0aW9ucztcblxuICAgIGNvbnN0IGhhc01pbiA9IG9wdGlvbnM/Lm1pbiAhPSBudWxsO1xuICAgIGNvbnN0IGhhc01heCA9IG9wdGlvbnM/Lm1heCAhPSBudWxsO1xuXG4gICAgaWYgKCFoYXNNaW4gfHwgIWhhc01heCkge1xuICAgICAgY29uc3QgbGlua2VkU2VyaWVzID0gc2V0dGluZ3MubGlua2VkU2VyaWVzKCk7XG4gICAgICBjb25zdCBkYXRhID0gbGlua2VkU2VyaWVzLnJlZHVjZSgoYWNjOiBCYXNlUG9pbnRbXSwgY3VycmVudCkgPT4ge1xuICAgICAgICByZXR1cm4gYWNjLmNvbmNhdChjdXJyZW50LmRhdGEpO1xuICAgICAgfSwgW10pO1xuICAgICAgY29uc3QgYWNjZXNzb3IgPSB0aGlzLmV4dGVudEFjY2Vzc29yTWFwLmdldChzZXR0aW5ncy5vcmllbnRhdGlvbik7XG4gICAgICB0aGlzLmV4dHJlbWVzID0gZGF0YS5sZW5ndGggPiAxID8gZDMuZXh0ZW50KGRhdGEsIGFjY2Vzc29yKSA6IFswLCAwXTtcblxuICAgICAgaWYoc2V0dGluZ3Mub3B0aW9ucy5zY2FsZVR5cGUudHlwZSA9PT0gU2NhbGVUeXBlLmJhbmQpIHtcbiAgICAgICAgdGhpcy5leHRyZW1lcyA9IGRhdGEubWFwKGFjY2Vzc29yKVxuICAgICAgfVxuXG4gICAgfVxuXG4gICAgaWYgKGhhc01pbikge1xuICAgICAgdGhpcy5leHRyZW1lc1swXSA9IG9wdGlvbnM/Lm1pbjtcbiAgICB9XG5cbiAgICBpZiAoaGFzTWF4KSB7XG4gICAgICB0aGlzLmV4dHJlbWVzWzFdID0gb3B0aW9ucz8ubWF4O1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLmV4dHJlbWVzO1xuICB9XG59XG4iXX0=
|
|
@@ -0,0 +1,162 @@
|
|
|
1
|
+
import { Directive, Input, } from '@angular/core';
|
|
2
|
+
import { BrushType } from '../model/enum/brush-type';
|
|
3
|
+
import * as d3 from 'd3';
|
|
4
|
+
import { BrushMessage } from '../model/i-broadcast-message';
|
|
5
|
+
import { filter, takeWhile } from 'rxjs';
|
|
6
|
+
import * as i0 from "@angular/core";
|
|
7
|
+
import * as i1 from "../service/brush.service";
|
|
8
|
+
import * as i2 from "../service/chart.service";
|
|
9
|
+
export class BrushableDirective {
|
|
10
|
+
brushService;
|
|
11
|
+
chartService;
|
|
12
|
+
element;
|
|
13
|
+
zone;
|
|
14
|
+
config;
|
|
15
|
+
axis;
|
|
16
|
+
selection;
|
|
17
|
+
brush;
|
|
18
|
+
brushMap = new Map()
|
|
19
|
+
.set(BrushType.x, d3.brushX())
|
|
20
|
+
.set(BrushType.y, d3.brushY());
|
|
21
|
+
_alive = true;
|
|
22
|
+
_container;
|
|
23
|
+
constructor(brushService, chartService, element, zone) {
|
|
24
|
+
this.brushService = brushService;
|
|
25
|
+
this.chartService = chartService;
|
|
26
|
+
this.element = element;
|
|
27
|
+
this.zone = zone;
|
|
28
|
+
this._container = d3.select(this.element.nativeElement);
|
|
29
|
+
}
|
|
30
|
+
ngOnInit() {
|
|
31
|
+
this.brushService.brushDomain.pipe(takeWhile(() => this._alive), filter((brush) => brush.chartId !== this.config.id)).subscribe((brush) => {
|
|
32
|
+
this._container.call(this.brush.move, [
|
|
33
|
+
Math.floor(brush.selection[0]),
|
|
34
|
+
Math.floor(brush.selection[1]),
|
|
35
|
+
].map(this.axis.scale));
|
|
36
|
+
});
|
|
37
|
+
}
|
|
38
|
+
ngOnDestroy() {
|
|
39
|
+
this._alive = false;
|
|
40
|
+
}
|
|
41
|
+
ngAfterViewInit() {
|
|
42
|
+
if (this.config?.brush?.enable) {
|
|
43
|
+
const brushMessage = new BrushMessage({
|
|
44
|
+
chartId: this.config.id,
|
|
45
|
+
selection: [this.config?.brush?.from, this.config?.brush?.to],
|
|
46
|
+
mode: 'init'
|
|
47
|
+
});
|
|
48
|
+
this.brushService.setBrush(brushMessage);
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
ngOnChanges(changes) {
|
|
52
|
+
if (changes.hasOwnProperty('config')) {
|
|
53
|
+
this.clearPreviousSelection();
|
|
54
|
+
}
|
|
55
|
+
if (this.config?.brush?.enable) {
|
|
56
|
+
this.applyBrush(this.config, this.axis.scale);
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
applyBrush(config, brushScale) {
|
|
60
|
+
this.brush?.on('start brush end', null);
|
|
61
|
+
if (config.brush?.enable) {
|
|
62
|
+
this.brush = this.brushMap.get(config?.brush?.type ?? BrushType.x);
|
|
63
|
+
this.brush.on('start brush end', (_) => {
|
|
64
|
+
if (_.sourceEvent) {
|
|
65
|
+
if (!_.selection)
|
|
66
|
+
return;
|
|
67
|
+
const [from, to] = _.selection;
|
|
68
|
+
if (to - from === 0) {
|
|
69
|
+
const selection = this.selection?.map(brushScale) ??
|
|
70
|
+
[config.brush?.from, config.brush?.to].map(brushScale);
|
|
71
|
+
const halfBrushHeight = (selection[1] - selection[0]) / 2;
|
|
72
|
+
const invertedSelection = [
|
|
73
|
+
from - halfBrushHeight,
|
|
74
|
+
to + halfBrushHeight,
|
|
75
|
+
].map(brushScale.invert);
|
|
76
|
+
if (invertedSelection[1] - invertedSelection[0] >
|
|
77
|
+
config.brush?.max) {
|
|
78
|
+
this._container.call(this.brush.move, [
|
|
79
|
+
Math.floor(invertedSelection[0]),
|
|
80
|
+
Math.floor(invertedSelection[0] + config.brush?.max),
|
|
81
|
+
].map(brushScale));
|
|
82
|
+
return;
|
|
83
|
+
}
|
|
84
|
+
if (invertedSelection[1] - invertedSelection[0] <
|
|
85
|
+
config.brush?.min) {
|
|
86
|
+
this._container.call(this.brush.move, [
|
|
87
|
+
Math.floor(invertedSelection[0]),
|
|
88
|
+
Math.ceil(invertedSelection[0] + config.brush?.min),
|
|
89
|
+
].map(brushScale));
|
|
90
|
+
return;
|
|
91
|
+
}
|
|
92
|
+
this._container.call(this.brush.move, [
|
|
93
|
+
from - halfBrushHeight,
|
|
94
|
+
to + halfBrushHeight,
|
|
95
|
+
]);
|
|
96
|
+
return;
|
|
97
|
+
}
|
|
98
|
+
if (brushScale.invert(to) - brushScale.invert(from) >
|
|
99
|
+
config.brush?.max) {
|
|
100
|
+
this._container.call(this.brush.move, this.selection
|
|
101
|
+
? [
|
|
102
|
+
this.selection[0],
|
|
103
|
+
this.selection[0] + config.brush?.max,
|
|
104
|
+
].map(brushScale)
|
|
105
|
+
: [config.brush?.from, config.brush?.to].map(brushScale));
|
|
106
|
+
return;
|
|
107
|
+
}
|
|
108
|
+
if (brushScale.invert(to) - brushScale.invert(from) <
|
|
109
|
+
config.brush?.min) {
|
|
110
|
+
this._container.call(this.brush.move, this.selection
|
|
111
|
+
? [
|
|
112
|
+
this.selection[0],
|
|
113
|
+
this.selection[0] + config.brush?.min,
|
|
114
|
+
].map(brushScale)
|
|
115
|
+
: [config.brush?.from, config.brush?.to].map(brushScale));
|
|
116
|
+
return;
|
|
117
|
+
}
|
|
118
|
+
if (_.sourceEvent instanceof MouseEvent) {
|
|
119
|
+
this.selection = _.selection.map(brushScale.invert);
|
|
120
|
+
}
|
|
121
|
+
const brushMessage = new BrushMessage({
|
|
122
|
+
chartId: this.config.id,
|
|
123
|
+
selection: [brushScale.invert(from), brushScale.invert(to)],
|
|
124
|
+
mode: _.mode
|
|
125
|
+
});
|
|
126
|
+
this.brushService.setBrush(brushMessage);
|
|
127
|
+
}
|
|
128
|
+
});
|
|
129
|
+
this.zone.runOutsideAngular(() => {
|
|
130
|
+
setTimeout(() => {
|
|
131
|
+
this._container.call(this.brush);
|
|
132
|
+
let domain = brushScale.domain();
|
|
133
|
+
if (config?.brush?.from) {
|
|
134
|
+
domain[0] = config.brush.from;
|
|
135
|
+
}
|
|
136
|
+
if (config?.brush?.to) {
|
|
137
|
+
domain[1] = config.brush.to;
|
|
138
|
+
}
|
|
139
|
+
this._container.call(this.brush.move, this.selection
|
|
140
|
+
? this.selection.map(brushScale)
|
|
141
|
+
: domain.map(brushScale), {});
|
|
142
|
+
}, 0);
|
|
143
|
+
});
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
clearPreviousSelection() {
|
|
147
|
+
this.selection = null;
|
|
148
|
+
}
|
|
149
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.4", ngImport: i0, type: BrushableDirective, deps: [{ token: i1.BrushService }, { token: i2.ChartService }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Directive });
|
|
150
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.1.4", type: BrushableDirective, selector: "[tetaBrushable]", inputs: { config: "config", axis: "axis" }, usesOnChanges: true, ngImport: i0 });
|
|
151
|
+
}
|
|
152
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.4", ngImport: i0, type: BrushableDirective, decorators: [{
|
|
153
|
+
type: Directive,
|
|
154
|
+
args: [{
|
|
155
|
+
selector: '[tetaBrushable]',
|
|
156
|
+
}]
|
|
157
|
+
}], ctorParameters: function () { return [{ type: i1.BrushService }, { type: i2.ChartService }, { type: i0.ElementRef }, { type: i0.NgZone }]; }, propDecorators: { config: [{
|
|
158
|
+
type: Input
|
|
159
|
+
}], axis: [{
|
|
160
|
+
type: Input
|
|
161
|
+
}] } });
|
|
162
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnJ1c2hhYmxlLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jaGFydC9kaXJlY3RpdmVzL2JydXNoYWJsZS5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVMLFNBQVMsRUFFVCxLQUFLLEdBR04sTUFBTSxlQUFlLENBQUM7QUFLdkIsT0FBTyxFQUFDLFNBQVMsRUFBQyxNQUFNLDBCQUEwQixDQUFDO0FBQ25ELE9BQU8sS0FBSyxFQUFFLE1BQU0sSUFBSSxDQUFDO0FBQ3pCLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSw4QkFBOEIsQ0FBQztBQUMxRCxPQUFPLEVBQUMsTUFBTSxFQUFFLFNBQVMsRUFBQyxNQUFNLE1BQU0sQ0FBQzs7OztBQUt2QyxNQUFNLE9BQU8sa0JBQWtCO0lBYW5CO0lBQ0E7SUFDQTtJQUNBO0lBZkQsTUFBTSxDQUFlO0lBQ3JCLElBQUksQ0FBTztJQUVaLFNBQVMsQ0FBVztJQUNwQixLQUFLLENBQXdCO0lBQzdCLFFBQVEsR0FBRyxJQUFJLEdBQUcsRUFBb0M7U0FDM0QsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLE1BQU0sRUFBRSxDQUFDO1NBQzdCLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDO0lBQ3pCLE1BQU0sR0FBRyxJQUFJLENBQUM7SUFDZCxVQUFVLENBQUM7SUFFbkIsWUFDVSxZQUEwQixFQUMxQixZQUEwQixFQUMxQixPQUFtQixFQUNuQixJQUFZO1FBSFosaUJBQVksR0FBWixZQUFZLENBQWM7UUFDMUIsaUJBQVksR0FBWixZQUFZLENBQWM7UUFDMUIsWUFBTyxHQUFQLE9BQU8sQ0FBWTtRQUNuQixTQUFJLEdBQUosSUFBSSxDQUFRO1FBRXBCLElBQUksQ0FBQyxVQUFVLEdBQUcsRUFBRSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBQzFELENBQUM7SUFFRCxRQUFRO1FBQ04sSUFBSSxDQUFDLFlBQVksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUNoQyxTQUFTLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUM1QixNQUFNLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLEtBQUssQ0FBQyxPQUFPLEtBQUssSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FDcEQsQ0FBQyxTQUFTLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRTtZQUNwQixJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FDbEIsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQ2Y7Z0JBQ0UsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUM5QixJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUM7YUFDL0IsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FDdkIsQ0FBQztRQUNKLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQztJQUN0QixDQUFDO0lBRUQsZUFBZTtRQUNiLElBQUcsSUFBSSxDQUFDLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFO1lBQzdCLE1BQU0sWUFBWSxHQUFHLElBQUksWUFBWSxDQUFDO2dCQUNwQyxPQUFPLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUFFO2dCQUN2QixTQUFTLEVBQUUsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLE1BQU0sRUFBRSxLQUFLLEVBQUUsRUFBRSxDQUFDO2dCQUM3RCxJQUFJLEVBQUUsTUFBTTthQUNiLENBQUMsQ0FBQztZQUNILElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQyxDQUFDO1NBQzFDO0lBQ0gsQ0FBQztJQUVELFdBQVcsQ0FBQyxPQUFzQjtRQUNoQyxJQUFJLE9BQU8sQ0FBQyxjQUFjLENBQUMsUUFBUSxDQUFDLEVBQUU7WUFDcEMsSUFBSSxDQUFDLHNCQUFzQixFQUFFLENBQUM7U0FDL0I7UUFFRCxJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRTtZQUM5QixJQUFJLENBQUMsVUFBVSxDQUNiLElBQUksQ0FBQyxNQUFNLEVBQ1gsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQ2hCLENBQUM7U0FDSDtJQUNILENBQUM7SUFFRCxVQUFVLENBQUMsTUFBb0IsRUFBRSxVQUFlO1FBQzlDLElBQUksQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLGlCQUFpQixFQUFFLElBQUksQ0FBQyxDQUFDO1FBQ3hDLElBQUksTUFBTSxDQUFDLEtBQUssRUFBRSxNQUFNLEVBQUU7WUFDeEIsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxNQUFNLEVBQUUsS0FBSyxFQUFFLElBQUksSUFBSSxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDbkUsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsaUJBQWlCLEVBQUUsQ0FBQyxDQUF1QixFQUFFLEVBQUU7Z0JBQzNELElBQUksQ0FBQyxDQUFDLFdBQVcsRUFBRTtvQkFDakIsSUFBSSxDQUFDLENBQUMsQ0FBQyxTQUFTO3dCQUFFLE9BQU87b0JBQ3pCLE1BQU0sQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFNBQXFCLENBQUM7b0JBQzNDLElBQUksRUFBRSxHQUFHLElBQUksS0FBSyxDQUFDLEVBQUU7d0JBQ25CLE1BQU0sU0FBUyxHQUNiLElBQUksQ0FBQyxTQUFTLEVBQUUsR0FBRyxDQUFDLFVBQVUsQ0FBQzs0QkFDL0IsQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLElBQUksRUFBRSxNQUFNLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQzt3QkFDekQsTUFBTSxlQUFlLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEdBQUcsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO3dCQUMxRCxNQUFNLGlCQUFpQixHQUFhOzRCQUNsQyxJQUFJLEdBQUcsZUFBZTs0QkFDdEIsRUFBRSxHQUFHLGVBQWU7eUJBQ3JCLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQzt3QkFFekIsSUFDRSxpQkFBaUIsQ0FBQyxDQUFDLENBQUMsR0FBRyxpQkFBaUIsQ0FBQyxDQUFDLENBQUM7NEJBQzNDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsR0FBRyxFQUNqQjs0QkFDQSxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FDbEIsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQ2Y7Z0NBQ0UsSUFBSSxDQUFDLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLENBQUMsQ0FBQztnQ0FDaEMsSUFBSSxDQUFDLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLENBQUMsR0FBRyxNQUFNLENBQUMsS0FBSyxFQUFFLEdBQUcsQ0FBQzs2QkFDckQsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLENBQ2xCLENBQUM7NEJBQ0YsT0FBTzt5QkFDUjt3QkFFRCxJQUNFLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxHQUFHLGlCQUFpQixDQUFDLENBQUMsQ0FBQzs0QkFDM0MsTUFBTSxDQUFDLEtBQUssRUFBRSxHQUFHLEVBQ2pCOzRCQUNBLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUNsQixJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksRUFDZjtnQ0FDRSxJQUFJLENBQUMsS0FBSyxDQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxDQUFDO2dDQUNoQyxJQUFJLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxLQUFLLEVBQUUsR0FBRyxDQUFDOzZCQUNwRCxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FDbEIsQ0FBQzs0QkFDRixPQUFPO3lCQUNSO3dCQUVELElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFOzRCQUNwQyxJQUFJLEdBQUcsZUFBZTs0QkFDdEIsRUFBRSxHQUFHLGVBQWU7eUJBQ3JCLENBQUMsQ0FBQzt3QkFDSCxPQUFPO3FCQUNSO29CQUVELElBQ0UsVUFBVSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsR0FBRyxVQUFVLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQzt3QkFDL0MsTUFBTSxDQUFDLEtBQUssRUFBRSxHQUFHLEVBQ2pCO3dCQUNBLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUNsQixJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksRUFDZixJQUFJLENBQUMsU0FBUzs0QkFDWixDQUFDLENBQUM7Z0NBQ0EsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUM7Z0NBQ2pCLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEdBQUcsTUFBTSxDQUFDLEtBQUssRUFBRSxHQUFHOzZCQUN0QyxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUM7NEJBQ2pCLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsSUFBSSxFQUFFLE1BQU0sQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUMzRCxDQUFDO3dCQUNGLE9BQU87cUJBQ1I7b0JBRUQsSUFDRSxVQUFVLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxHQUFHLFVBQVUsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDO3dCQUMvQyxNQUFNLENBQUMsS0FBSyxFQUFFLEdBQUcsRUFDakI7d0JBQ0EsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQ2xCLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUNmLElBQUksQ0FBQyxTQUFTOzRCQUNaLENBQUMsQ0FBQztnQ0FDQSxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQztnQ0FDakIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsR0FBRyxNQUFNLENBQUMsS0FBSyxFQUFFLEdBQUc7NkJBQ3RDLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQzs0QkFDakIsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxJQUFJLEVBQUUsTUFBTSxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLENBQzNELENBQUM7d0JBQ0YsT0FBTztxQkFDUjtvQkFFRCxJQUFJLENBQUMsQ0FBQyxXQUFXLFlBQVksVUFBVSxFQUFFO3dCQUN2QyxJQUFJLENBQUMsU0FBUyxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQztxQkFDckQ7b0JBRUQsTUFBTSxZQUFZLEdBQUcsSUFBSSxZQUFZLENBQUM7d0JBQ3BDLE9BQU8sRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUU7d0JBQ3ZCLFNBQVMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsVUFBVSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQzt3QkFDM0QsSUFBSSxFQUFFLENBQUMsQ0FBQyxJQUFJO3FCQUNiLENBQUMsQ0FBQztvQkFDSCxJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxZQUFZLENBQUMsQ0FBQztpQkFDMUM7WUFDSCxDQUFDLENBQUMsQ0FBQztZQUVILElBQUksQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsR0FBRyxFQUFFO2dCQUMvQixVQUFVLENBQUMsR0FBRyxFQUFFO29CQUNkLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztvQkFFakMsSUFBSSxNQUFNLEdBQUcsVUFBVSxDQUFDLE1BQU0sRUFBRSxDQUFDO29CQUVqQyxJQUFJLE1BQU0sRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFO3dCQUN2QixNQUFNLENBQUMsQ0FBQyxDQUFDLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUM7cUJBQy9CO29CQUVELElBQUksTUFBTSxFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUU7d0JBQ3JCLE1BQU0sQ0FBQyxDQUFDLENBQUMsR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztxQkFDN0I7b0JBRUQsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQ2xCLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUNmLElBQUksQ0FBQyxTQUFTO3dCQUNaLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUM7d0JBQ2hDLENBQUMsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxFQUMxQixFQUFFLENBQ0gsQ0FBQztnQkFDSixDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFDUixDQUFDLENBQUMsQ0FBQztTQUNKO0lBQ0gsQ0FBQztJQUVELHNCQUFzQjtRQUNwQixJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQztJQUN4QixDQUFDO3VHQTlMVSxrQkFBa0I7MkZBQWxCLGtCQUFrQjs7MkZBQWxCLGtCQUFrQjtrQkFIOUIsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsaUJBQWlCO2lCQUM1Qjs0S0FFVSxNQUFNO3NCQUFkLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQWZ0ZXJWaWV3SW5pdCxcbiAgRGlyZWN0aXZlLFxuICBFbGVtZW50UmVmLFxuICBJbnB1dCwgTmdab25lLCBPbkNoYW5nZXMsIE9uRGVzdHJveSxcbiAgT25Jbml0LFxuICBTaW1wbGVDaGFuZ2VzLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7SUNoYXJ0Q29uZmlnfSBmcm9tICcuLi9tb2RlbC9pLWNoYXJ0LWNvbmZpZyc7XG5pbXBvcnQge0JydXNoU2VydmljZX0gZnJvbSAnLi4vc2VydmljZS9icnVzaC5zZXJ2aWNlJztcbmltcG9ydCB7Q2hhcnRTZXJ2aWNlfSBmcm9tICcuLi9zZXJ2aWNlL2NoYXJ0LnNlcnZpY2UnO1xuaW1wb3J0IHtBeGlzfSBmcm9tICcuLi9jb3JlL2F4aXMvYXhpcyc7XG5pbXBvcnQge0JydXNoVHlwZX0gZnJvbSAnLi4vbW9kZWwvZW51bS9icnVzaC10eXBlJztcbmltcG9ydCAqIGFzIGQzIGZyb20gJ2QzJztcbmltcG9ydCB7QnJ1c2hNZXNzYWdlfSBmcm9tICcuLi9tb2RlbC9pLWJyb2FkY2FzdC1tZXNzYWdlJztcbmltcG9ydCB7ZmlsdGVyLCB0YWtlV2hpbGV9IGZyb20gJ3J4anMnO1xuXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdbdGV0YUJydXNoYWJsZV0nLFxufSlcbmV4cG9ydCBjbGFzcyBCcnVzaGFibGVEaXJlY3RpdmUgaW1wbGVtZW50cyBPbkRlc3Ryb3ksIE9uSW5pdCwgQWZ0ZXJWaWV3SW5pdCwgT25DaGFuZ2VzIHtcbiAgQElucHV0KCkgY29uZmlnOiBJQ2hhcnRDb25maWc7XG4gIEBJbnB1dCgpIGF4aXM6IEF4aXM7XG5cbiAgcHJpdmF0ZSBzZWxlY3Rpb246IG51bWJlcltdO1xuICBwcml2YXRlIGJydXNoOiBkMy5CcnVzaEJlaGF2aW9yPGFueT47XG4gIHByaXZhdGUgYnJ1c2hNYXAgPSBuZXcgTWFwPEJydXNoVHlwZSwgZDMuQnJ1c2hCZWhhdmlvcjxhbnk+PigpXG4gICAgLnNldChCcnVzaFR5cGUueCwgZDMuYnJ1c2hYKCkpXG4gICAgLnNldChCcnVzaFR5cGUueSwgZDMuYnJ1c2hZKCkpO1xuICBwcml2YXRlIF9hbGl2ZSA9IHRydWU7XG4gIHByaXZhdGUgX2NvbnRhaW5lcjtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGJydXNoU2VydmljZTogQnJ1c2hTZXJ2aWNlLFxuICAgIHByaXZhdGUgY2hhcnRTZXJ2aWNlOiBDaGFydFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBlbGVtZW50OiBFbGVtZW50UmVmLFxuICAgIHByaXZhdGUgem9uZTogTmdab25lXG4gICkge1xuICAgIHRoaXMuX2NvbnRhaW5lciA9IGQzLnNlbGVjdCh0aGlzLmVsZW1lbnQubmF0aXZlRWxlbWVudCk7XG4gIH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLmJydXNoU2VydmljZS5icnVzaERvbWFpbi5waXBlKFxuICAgICAgdGFrZVdoaWxlKCgpID0+IHRoaXMuX2FsaXZlKSxcbiAgICAgIGZpbHRlcigoYnJ1c2gpID0+IGJydXNoLmNoYXJ0SWQgIT09IHRoaXMuY29uZmlnLmlkKVxuICAgICkuc3Vic2NyaWJlKChicnVzaCkgPT4ge1xuICAgICAgdGhpcy5fY29udGFpbmVyLmNhbGwoXG4gICAgICAgIHRoaXMuYnJ1c2gubW92ZSxcbiAgICAgICAgW1xuICAgICAgICAgIE1hdGguZmxvb3IoYnJ1c2guc2VsZWN0aW9uWzBdKSxcbiAgICAgICAgICBNYXRoLmZsb29yKGJydXNoLnNlbGVjdGlvblsxXSksXG4gICAgICAgIF0ubWFwKHRoaXMuYXhpcy5zY2FsZSlcbiAgICAgICk7XG4gICAgfSk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLl9hbGl2ZSA9IGZhbHNlO1xuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCkge1xuICAgIGlmKHRoaXMuY29uZmlnPy5icnVzaD8uZW5hYmxlKSB7XG4gICAgICBjb25zdCBicnVzaE1lc3NhZ2UgPSBuZXcgQnJ1c2hNZXNzYWdlKHtcbiAgICAgICAgY2hhcnRJZDogdGhpcy5jb25maWcuaWQsXG4gICAgICAgIHNlbGVjdGlvbjogW3RoaXMuY29uZmlnPy5icnVzaD8uZnJvbSwgdGhpcy5jb25maWc/LmJydXNoPy50b10sXG4gICAgICAgIG1vZGU6ICdpbml0J1xuICAgICAgfSk7XG4gICAgICB0aGlzLmJydXNoU2VydmljZS5zZXRCcnVzaChicnVzaE1lc3NhZ2UpO1xuICAgIH1cbiAgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcbiAgICBpZiAoY2hhbmdlcy5oYXNPd25Qcm9wZXJ0eSgnY29uZmlnJykpIHtcbiAgICAgIHRoaXMuY2xlYXJQcmV2aW91c1NlbGVjdGlvbigpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmNvbmZpZz8uYnJ1c2g/LmVuYWJsZSkge1xuICAgICAgdGhpcy5hcHBseUJydXNoKFxuICAgICAgICB0aGlzLmNvbmZpZyxcbiAgICAgICAgdGhpcy5heGlzLnNjYWxlXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIGFwcGx5QnJ1c2goY29uZmlnOiBJQ2hhcnRDb25maWcsIGJydXNoU2NhbGU6IGFueSkge1xuICAgIHRoaXMuYnJ1c2g/Lm9uKCdzdGFydCBicnVzaCBlbmQnLCBudWxsKTtcbiAgICBpZiAoY29uZmlnLmJydXNoPy5lbmFibGUpIHtcbiAgICAgIHRoaXMuYnJ1c2ggPSB0aGlzLmJydXNoTWFwLmdldChjb25maWc/LmJydXNoPy50eXBlID8/IEJydXNoVHlwZS54KTtcbiAgICAgIHRoaXMuYnJ1c2gub24oJ3N0YXJ0IGJydXNoIGVuZCcsIChfOiBkMy5EM0JydXNoRXZlbnQ8YW55PikgPT4ge1xuICAgICAgICBpZiAoXy5zb3VyY2VFdmVudCkge1xuICAgICAgICAgIGlmICghXy5zZWxlY3Rpb24pIHJldHVybjtcbiAgICAgICAgICBjb25zdCBbZnJvbSwgdG9dID0gXy5zZWxlY3Rpb24gYXMgbnVtYmVyW107XG4gICAgICAgICAgaWYgKHRvIC0gZnJvbSA9PT0gMCkge1xuICAgICAgICAgICAgY29uc3Qgc2VsZWN0aW9uOiBudW1iZXJbXSA9XG4gICAgICAgICAgICAgIHRoaXMuc2VsZWN0aW9uPy5tYXAoYnJ1c2hTY2FsZSkgPz9cbiAgICAgICAgICAgICAgW2NvbmZpZy5icnVzaD8uZnJvbSwgY29uZmlnLmJydXNoPy50b10ubWFwKGJydXNoU2NhbGUpO1xuICAgICAgICAgICAgY29uc3QgaGFsZkJydXNoSGVpZ2h0ID0gKHNlbGVjdGlvblsxXSAtIHNlbGVjdGlvblswXSkgLyAyO1xuICAgICAgICAgICAgY29uc3QgaW52ZXJ0ZWRTZWxlY3Rpb246IG51bWJlcltdID0gW1xuICAgICAgICAgICAgICBmcm9tIC0gaGFsZkJydXNoSGVpZ2h0LFxuICAgICAgICAgICAgICB0byArIGhhbGZCcnVzaEhlaWdodCxcbiAgICAgICAgICAgIF0ubWFwKGJydXNoU2NhbGUuaW52ZXJ0KTtcblxuICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICBpbnZlcnRlZFNlbGVjdGlvblsxXSAtIGludmVydGVkU2VsZWN0aW9uWzBdID5cbiAgICAgICAgICAgICAgY29uZmlnLmJydXNoPy5tYXhcbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICB0aGlzLl9jb250YWluZXIuY2FsbChcbiAgICAgICAgICAgICAgICB0aGlzLmJydXNoLm1vdmUsXG4gICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgTWF0aC5mbG9vcihpbnZlcnRlZFNlbGVjdGlvblswXSksXG4gICAgICAgICAgICAgICAgICBNYXRoLmZsb29yKGludmVydGVkU2VsZWN0aW9uWzBdICsgY29uZmlnLmJydXNoPy5tYXgpLFxuICAgICAgICAgICAgICAgIF0ubWFwKGJydXNoU2NhbGUpXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICBpbnZlcnRlZFNlbGVjdGlvblsxXSAtIGludmVydGVkU2VsZWN0aW9uWzBdIDxcbiAgICAgICAgICAgICAgY29uZmlnLmJydXNoPy5taW5cbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICB0aGlzLl9jb250YWluZXIuY2FsbChcbiAgICAgICAgICAgICAgICB0aGlzLmJydXNoLm1vdmUsXG4gICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgTWF0aC5mbG9vcihpbnZlcnRlZFNlbGVjdGlvblswXSksXG4gICAgICAgICAgICAgICAgICBNYXRoLmNlaWwoaW52ZXJ0ZWRTZWxlY3Rpb25bMF0gKyBjb25maWcuYnJ1c2g/Lm1pbiksXG4gICAgICAgICAgICAgICAgXS5tYXAoYnJ1c2hTY2FsZSlcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLl9jb250YWluZXIuY2FsbCh0aGlzLmJydXNoLm1vdmUsIFtcbiAgICAgICAgICAgICAgZnJvbSAtIGhhbGZCcnVzaEhlaWdodCxcbiAgICAgICAgICAgICAgdG8gKyBoYWxmQnJ1c2hIZWlnaHQsXG4gICAgICAgICAgICBdKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAoXG4gICAgICAgICAgICBicnVzaFNjYWxlLmludmVydCh0bykgLSBicnVzaFNjYWxlLmludmVydChmcm9tKSA+XG4gICAgICAgICAgICBjb25maWcuYnJ1c2g/Lm1heFxuICAgICAgICAgICkge1xuICAgICAgICAgICAgdGhpcy5fY29udGFpbmVyLmNhbGwoXG4gICAgICAgICAgICAgIHRoaXMuYnJ1c2gubW92ZSxcbiAgICAgICAgICAgICAgdGhpcy5zZWxlY3Rpb25cbiAgICAgICAgICAgICAgICA/IFtcbiAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0aW9uWzBdLFxuICAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3Rpb25bMF0gKyBjb25maWcuYnJ1c2g/Lm1heCxcbiAgICAgICAgICAgICAgICBdLm1hcChicnVzaFNjYWxlKVxuICAgICAgICAgICAgICAgIDogW2NvbmZpZy5icnVzaD8uZnJvbSwgY29uZmlnLmJydXNoPy50b10ubWFwKGJydXNoU2NhbGUpXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmIChcbiAgICAgICAgICAgIGJydXNoU2NhbGUuaW52ZXJ0KHRvKSAtIGJydXNoU2NhbGUuaW52ZXJ0KGZyb20pIDxcbiAgICAgICAgICAgIGNvbmZpZy5icnVzaD8ubWluXG4gICAgICAgICAgKSB7XG4gICAgICAgICAgICB0aGlzLl9jb250YWluZXIuY2FsbChcbiAgICAgICAgICAgICAgdGhpcy5icnVzaC5tb3ZlLFxuICAgICAgICAgICAgICB0aGlzLnNlbGVjdGlvblxuICAgICAgICAgICAgICAgID8gW1xuICAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3Rpb25bMF0sXG4gICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGlvblswXSArIGNvbmZpZy5icnVzaD8ubWluLFxuICAgICAgICAgICAgICAgIF0ubWFwKGJydXNoU2NhbGUpXG4gICAgICAgICAgICAgICAgOiBbY29uZmlnLmJydXNoPy5mcm9tLCBjb25maWcuYnJ1c2g/LnRvXS5tYXAoYnJ1c2hTY2FsZSlcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKF8uc291cmNlRXZlbnQgaW5zdGFuY2VvZiBNb3VzZUV2ZW50KSB7XG4gICAgICAgICAgICB0aGlzLnNlbGVjdGlvbiA9IF8uc2VsZWN0aW9uLm1hcChicnVzaFNjYWxlLmludmVydCk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgY29uc3QgYnJ1c2hNZXNzYWdlID0gbmV3IEJydXNoTWVzc2FnZSh7XG4gICAgICAgICAgICBjaGFydElkOiB0aGlzLmNvbmZpZy5pZCxcbiAgICAgICAgICAgIHNlbGVjdGlvbjogW2JydXNoU2NhbGUuaW52ZXJ0KGZyb20pLCBicnVzaFNjYWxlLmludmVydCh0byldLFxuICAgICAgICAgICAgbW9kZTogXy5tb2RlXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgdGhpcy5icnVzaFNlcnZpY2Uuc2V0QnJ1c2goYnJ1c2hNZXNzYWdlKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG5cbiAgICAgIHRoaXMuem9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiB7XG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgIHRoaXMuX2NvbnRhaW5lci5jYWxsKHRoaXMuYnJ1c2gpO1xuXG4gICAgICAgICAgbGV0IGRvbWFpbiA9IGJydXNoU2NhbGUuZG9tYWluKCk7XG5cbiAgICAgICAgICBpZiAoY29uZmlnPy5icnVzaD8uZnJvbSkge1xuICAgICAgICAgICAgZG9tYWluWzBdID0gY29uZmlnLmJydXNoLmZyb207XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKGNvbmZpZz8uYnJ1c2g/LnRvKSB7XG4gICAgICAgICAgICBkb21haW5bMV0gPSBjb25maWcuYnJ1c2gudG87XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgdGhpcy5fY29udGFpbmVyLmNhbGwoXG4gICAgICAgICAgICB0aGlzLmJydXNoLm1vdmUsXG4gICAgICAgICAgICB0aGlzLnNlbGVjdGlvblxuICAgICAgICAgICAgICA/IHRoaXMuc2VsZWN0aW9uLm1hcChicnVzaFNjYWxlKVxuICAgICAgICAgICAgICA6IGRvbWFpbi5tYXAoYnJ1c2hTY2FsZSksXG4gICAgICAgICAgICB7fVxuICAgICAgICAgICk7XG4gICAgICAgIH0sIDApO1xuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgY2xlYXJQcmV2aW91c1NlbGVjdGlvbigpIHtcbiAgICB0aGlzLnNlbGVjdGlvbiA9IG51bGw7XG4gIH1cbn1cbiJdfQ==
|