@tetacom/svg-charts 1.0.2 → 1.1.0
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/dist/chart/base/series-base.component.d.ts +4 -1
- package/dist/chart/chart/chart.component.d.ts +12 -9
- package/dist/chart/chart-container/chart-container.component.d.ts +18 -23
- package/dist/chart/chart-container/gridlines/gridlines.component.d.ts +7 -16
- package/dist/chart/chart-container/plotband/{plotband.component.d.ts → plot-band.component.d.ts} +10 -10
- package/dist/chart/chart-container/plotline/plotline.component.d.ts +5 -5
- package/dist/chart/chart-container/series/line/line-series.component.d.ts +2 -2
- package/dist/chart/chart-container/series/scatter-series/scatter-series.component.d.ts +28 -0
- package/dist/chart/chart-container/series-host/series-host.component.d.ts +4 -1
- package/dist/chart/chart-container/tooltip/tooltip.component.d.ts +6 -3
- package/dist/chart/chart-container/x-axis/x-axis.component.d.ts +6 -10
- package/dist/chart/chart-container/y-axis/y-axis.component.d.ts +7 -11
- package/dist/chart/chart.module.d.ts +4 -3
- package/dist/chart/core/axis/axis.d.ts +8 -3
- package/dist/chart/default/default-axis-config.d.ts +2 -0
- package/dist/chart/default/default-chart-config.d.ts +2 -0
- package/dist/chart/default/default-series-config.d.ts +3 -0
- package/dist/chart/directives/brushable.directive.d.ts +2 -1
- package/dist/chart/directives/zoomable.directive.d.ts +1 -3
- package/dist/chart/legend/legend.component.d.ts +1 -3
- package/dist/chart/model/axis-options.d.ts +9 -7
- package/dist/chart/model/base-point.d.ts +1 -1
- package/dist/chart/model/enum/public-api.d.ts +1 -1
- package/dist/chart/model/enum/scale-type.d.ts +8 -0
- package/dist/chart/model/enum/series-type.d.ts +2 -1
- package/dist/chart/model/i-broadcast-message.d.ts +14 -2
- package/dist/chart/model/i-chart-config.d.ts +1 -0
- package/dist/chart/model/{plotband.d.ts → plot-band.d.ts} +7 -5
- package/dist/chart/model/{plotline.d.ts → plot-line.d.ts} +3 -1
- package/dist/chart/model/public-api.d.ts +2 -2
- package/dist/chart/service/brush.service.d.ts +2 -5
- package/dist/chart/service/chart.service.d.ts +16 -17
- package/dist/chart/service/scale.service.d.ts +13 -8
- package/dist/chart/service/zoom.service.d.ts +6 -14
- package/dist/esm2020/chart/base/series-base.component.mjs +7 -9
- package/dist/esm2020/chart/chart/chart.component.mjs +28 -30
- package/dist/esm2020/chart/chart-container/chart-container.component.mjs +97 -115
- package/dist/esm2020/chart/chart-container/gridlines/gridlines.component.mjs +19 -31
- package/dist/esm2020/chart/chart-container/plotband/plot-band.component.mjs +141 -0
- package/dist/esm2020/chart/chart-container/plotline/plotline.component.mjs +11 -14
- package/dist/esm2020/chart/chart-container/series/bar/bar-series.component.mjs +11 -11
- package/dist/esm2020/chart/chart-container/series/line/line-series.component.mjs +33 -29
- package/dist/esm2020/chart/chart-container/series/scatter-series/scatter-series.component.mjs +174 -0
- package/dist/esm2020/chart/chart-container/series-host/series-host.component.mjs +16 -5
- package/dist/esm2020/chart/chart-container/tooltip/tooltip.component.mjs +17 -19
- package/dist/esm2020/chart/chart-container/x-axis/x-axis.component.mjs +19 -22
- package/dist/esm2020/chart/chart-container/y-axis/y-axis.component.mjs +20 -25
- package/dist/esm2020/chart/chart.module.mjs +8 -5
- package/dist/esm2020/chart/core/axis/axis.mjs +25 -16
- package/dist/esm2020/chart/core/axis/builders/extremes-builder.mjs +2 -3
- package/dist/esm2020/chart/default/default-axis-config.mjs +9 -0
- package/dist/esm2020/chart/default/default-chart-config.mjs +23 -0
- package/dist/esm2020/chart/default/default-series-config.mjs +8 -0
- package/dist/esm2020/chart/directives/brushable.directive.mjs +5 -3
- package/dist/esm2020/chart/directives/zoomable.directive.mjs +7 -8
- package/dist/esm2020/chart/legend/legend.component.mjs +4 -7
- package/dist/esm2020/chart/model/axis-options.mjs +1 -1
- package/dist/esm2020/chart/model/base-point.mjs +1 -1
- package/dist/esm2020/chart/model/enum/public-api.mjs +2 -2
- package/dist/esm2020/chart/model/enum/scale-type.mjs +10 -0
- package/dist/esm2020/chart/model/enum/series-type.mjs +2 -1
- package/dist/esm2020/chart/model/i-broadcast-message.mjs +1 -1
- package/dist/esm2020/chart/model/i-chart-config.mjs +1 -1
- package/dist/esm2020/chart/model/plot-band.mjs +17 -0
- package/dist/esm2020/chart/model/plot-line.mjs +13 -0
- package/dist/esm2020/chart/model/public-api.mjs +3 -3
- package/dist/esm2020/chart/service/broadcast.service.mjs +3 -5
- package/dist/esm2020/chart/service/brush.service.mjs +26 -23
- package/dist/esm2020/chart/service/chart.service.mjs +61 -43
- package/dist/esm2020/chart/service/scale.service.mjs +138 -50
- package/dist/esm2020/chart/service/zoom.service.mjs +82 -85
- package/dist/esm2020/public-api.mjs +2 -1
- package/dist/fesm2015/tetacom-svg-charts.mjs +942 -659
- package/dist/fesm2015/tetacom-svg-charts.mjs.map +1 -1
- package/dist/fesm2020/tetacom-svg-charts.mjs +929 -657
- package/dist/fesm2020/tetacom-svg-charts.mjs.map +1 -1
- package/package.json +1 -1
- package/src/chart/Chart.stories.ts +88 -173
- package/src/chart/base/series-base.component.ts +4 -9
- package/src/chart/chart/chart.component.html +16 -5
- package/src/chart/chart/chart.component.scss +1 -0
- package/src/chart/chart/chart.component.ts +39 -33
- package/src/chart/chart-container/chart-container.component.html +102 -57
- package/src/chart/chart-container/chart-container.component.scss +0 -1
- package/src/chart/chart-container/chart-container.component.ts +136 -165
- package/src/chart/chart-container/gridlines/gridlines.component.html +9 -2
- package/src/chart/chart-container/gridlines/gridlines.component.ts +17 -35
- package/src/chart/chart-container/plotband/{plotband.component.html → plot-band.component.html} +15 -9
- package/src/chart/chart-container/plotband/plot-band.component.scss +13 -0
- package/src/chart/chart-container/plotband/{plotband.component.spec.ts → plot-band.component.spec.ts} +5 -5
- package/src/chart/chart-container/plotband/{plotband.component.ts → plot-band.component.ts} +51 -57
- package/src/chart/chart-container/plotline/plotline.component.html +3 -3
- package/src/chart/chart-container/plotline/plotline.component.ts +10 -22
- package/src/chart/chart-container/series/bar/bar-series.component.ts +10 -12
- package/src/chart/chart-container/series/line/line-series.component.html +29 -31
- package/src/chart/chart-container/series/line/line-series.component.ts +69 -50
- package/src/chart/chart-container/series/scatter-series/scatter-series.component.html +43 -0
- package/src/chart/chart-container/series/scatter-series/scatter-series.component.scss +9 -0
- package/src/chart/chart-container/series/scatter-series/scatter-series.component.spec.ts +25 -0
- package/src/chart/chart-container/series/scatter-series/scatter-series.component.ts +254 -0
- package/src/chart/chart-container/series-host/series-host.component.ts +25 -16
- package/src/chart/chart-container/tooltip/tooltip.component.html +1 -1
- package/src/chart/chart-container/tooltip/tooltip.component.scss +2 -1
- package/src/chart/chart-container/tooltip/tooltip.component.ts +25 -26
- package/src/chart/chart-container/x-axis/x-axis.component.ts +18 -20
- package/src/chart/chart-container/y-axis/y-axis.component.ts +18 -28
- package/src/chart/chart.module.ts +4 -2
- package/src/chart/core/axis/axis.ts +37 -21
- package/src/chart/core/axis/builders/extremes-builder.ts +7 -12
- package/src/chart/core/builder/domain-builder.ts +0 -0
- package/src/chart/default/default-axis-config.ts +10 -0
- package/src/chart/default/default-chart-config.ts +20 -8
- package/src/chart/default/default-series-config.ts +10 -0
- package/src/chart/directives/brushable.directive.ts +2 -1
- package/src/chart/directives/zoomable.directive.ts +6 -9
- package/src/chart/legend/legend.component.html +7 -5
- package/src/chart/legend/legend.component.ts +2 -6
- package/src/chart/model/axis-options.ts +9 -7
- package/src/chart/model/base-point.ts +1 -1
- package/src/chart/model/enum/public-api.ts +1 -1
- package/src/chart/model/enum/scale-type.ts +8 -0
- package/src/chart/model/enum/series-type.ts +1 -0
- package/src/chart/model/i-broadcast-message.ts +17 -2
- package/src/chart/model/i-chart-config.ts +1 -0
- package/src/chart/model/i-dom-rect.ts +6 -0
- package/src/chart/model/{plotband.ts → plot-band.ts} +8 -5
- package/src/chart/model/{plotline.ts → plot-line.ts} +5 -2
- package/src/chart/model/public-api.ts +2 -2
- package/src/chart/service/broadcast.service.ts +5 -4
- package/src/chart/service/brush.service.ts +34 -31
- package/src/chart/service/chart.service.ts +70 -54
- package/src/chart/service/scale.service.ts +218 -61
- package/src/chart/service/zoom.service.ts +144 -113
- package/src/public-api.ts +3 -0
- package/dist/chart/model/enum/axis-type.d.ts +0 -7
- package/dist/chart/service/axes.service.d.ts +0 -11
- package/dist/esm2020/chart/chart-container/plotband/plotband.component.mjs +0 -139
- package/dist/esm2020/chart/model/enum/axis-type.mjs +0 -9
- package/dist/esm2020/chart/model/plotband.mjs +0 -16
- package/dist/esm2020/chart/model/plotline.mjs +0 -12
- package/dist/esm2020/chart/service/axes.service.mjs +0 -29
- package/src/chart/chart-container/plotband/plotband.component.scss +0 -13
- package/src/chart/model/enum/axis-type.ts +0 -7
- package/src/chart/service/axes.service.spec.ts +0 -16
- package/src/chart/service/axes.service.ts +0 -27
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { SvgAttributes } from './svg-attributes';
|
|
2
|
-
export declare class
|
|
3
|
-
id
|
|
2
|
+
export declare class PlotBand {
|
|
3
|
+
id?: number | string;
|
|
4
|
+
name?: string;
|
|
4
5
|
from: number;
|
|
5
6
|
to: number;
|
|
6
7
|
label?: string;
|
|
@@ -10,11 +11,12 @@ export declare class Plotband {
|
|
|
10
11
|
min?: number;
|
|
11
12
|
max?: number;
|
|
12
13
|
style?: {
|
|
13
|
-
|
|
14
|
+
plotBand?: SvgAttributes;
|
|
14
15
|
grabbers?: SvgAttributes;
|
|
15
16
|
};
|
|
16
17
|
constructor(options?: {
|
|
17
|
-
id
|
|
18
|
+
id?: number | string;
|
|
19
|
+
name?: string;
|
|
18
20
|
from: number;
|
|
19
21
|
to: number;
|
|
20
22
|
label?: string;
|
|
@@ -24,7 +26,7 @@ export declare class Plotband {
|
|
|
24
26
|
min?: number;
|
|
25
27
|
max?: number;
|
|
26
28
|
style?: {
|
|
27
|
-
|
|
29
|
+
plotBand?: SvgAttributes;
|
|
28
30
|
grabbers?: SvgAttributes;
|
|
29
31
|
};
|
|
30
32
|
});
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { SvgAttributes } from './svg-attributes';
|
|
2
2
|
export declare class PlotLine {
|
|
3
3
|
id?: number | string;
|
|
4
|
+
name?: string;
|
|
4
5
|
value: number;
|
|
5
6
|
label?: string;
|
|
6
7
|
min?: number;
|
|
@@ -8,7 +9,8 @@ export declare class PlotLine {
|
|
|
8
9
|
draggable?: boolean;
|
|
9
10
|
style?: SvgAttributes;
|
|
10
11
|
constructor(options?: {
|
|
11
|
-
id?: number;
|
|
12
|
+
id?: number | string;
|
|
13
|
+
name?: string;
|
|
12
14
|
value: number;
|
|
13
15
|
label?: string;
|
|
14
16
|
min?: number;
|
|
@@ -7,7 +7,7 @@ export * from './i-chart-config';
|
|
|
7
7
|
export * from './i-chart-event';
|
|
8
8
|
export * from './i-point-move';
|
|
9
9
|
export * from './marker-options';
|
|
10
|
-
export * from './
|
|
11
|
-
export * from './
|
|
10
|
+
export * from './plot-band';
|
|
11
|
+
export * from './plot-line';
|
|
12
12
|
export * from './series';
|
|
13
13
|
export * from './svg-attributes';
|
|
@@ -2,16 +2,13 @@ import { ElementRef } from '@angular/core';
|
|
|
2
2
|
import { Subscription } from 'rxjs';
|
|
3
3
|
import { BroadcastService } from './broadcast.service';
|
|
4
4
|
import { IChartConfig } from '../model/i-chart-config';
|
|
5
|
-
import { ScaleService } from './scale.service';
|
|
6
5
|
import * as i0 from "@angular/core";
|
|
7
6
|
export declare class BrushService {
|
|
8
7
|
private broadcastService;
|
|
9
|
-
private scaleService;
|
|
10
8
|
broadcastSubscribtion: Subscription;
|
|
11
9
|
private brushMap;
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
applyBrush(svgElement: ElementRef, config: IChartConfig, size: DOMRect): void;
|
|
10
|
+
constructor(broadcastService: BroadcastService);
|
|
11
|
+
applyBrush(svgElement: ElementRef, config: IChartConfig, brushScale: any): void;
|
|
15
12
|
static ɵfac: i0.ɵɵFactoryDeclaration<BrushService, never>;
|
|
16
13
|
static ɵprov: i0.ɵɵInjectableDeclaration<BrushService>;
|
|
17
14
|
}
|
|
@@ -1,38 +1,37 @@
|
|
|
1
1
|
import { IChartConfig } from '../model/i-chart-config';
|
|
2
|
-
import { AxesService } from './axes.service';
|
|
3
2
|
import { Observable } from 'rxjs';
|
|
4
|
-
import { ScaleService } from './scale.service';
|
|
5
3
|
import { IChartEvent } from '../model/i-chart-event';
|
|
6
4
|
import { IDisplayTooltip } from '../model/i-display-tooltip';
|
|
7
|
-
import {
|
|
8
|
-
import { PlotLine } from '../model/
|
|
5
|
+
import { PlotBand } from '../model/plot-band';
|
|
6
|
+
import { PlotLine } from '../model/plot-line';
|
|
9
7
|
import { IPointMove } from '../model/i-point-move';
|
|
10
8
|
import * as i0 from "@angular/core";
|
|
11
9
|
export declare class ChartService {
|
|
12
|
-
|
|
13
|
-
private scaleService;
|
|
10
|
+
config: Observable<IChartConfig>;
|
|
14
11
|
size: Observable<DOMRect>;
|
|
15
|
-
pointerMove: Observable<
|
|
12
|
+
pointerMove: Observable<PointerEvent>;
|
|
16
13
|
tooltips: Observable<IDisplayTooltip>;
|
|
17
|
-
|
|
18
|
-
|
|
14
|
+
plotBandEvent: Observable<IChartEvent<PlotBand>>;
|
|
15
|
+
plotLineMove: Observable<IChartEvent<PlotLine>>;
|
|
16
|
+
plotBandClick: Observable<IChartEvent<PlotBand>>;
|
|
19
17
|
pointMove: Observable<IChartEvent<IPointMove>>;
|
|
18
|
+
private config$;
|
|
20
19
|
private size$;
|
|
21
20
|
private pointerMove$;
|
|
22
21
|
private tooltips$;
|
|
23
|
-
private
|
|
24
|
-
private
|
|
22
|
+
private plotBandEvent$;
|
|
23
|
+
private plotLineMove$;
|
|
25
24
|
private pointMove$;
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
init(config: IChartConfig): void;
|
|
25
|
+
constructor();
|
|
26
|
+
setConfig(config: IChartConfig): void;
|
|
29
27
|
setSize(size: DOMRect): void;
|
|
30
|
-
setPointerMove(event:
|
|
28
|
+
setPointerMove(event: PointerEvent): void;
|
|
31
29
|
setTooltip(tooltip: IDisplayTooltip): void;
|
|
32
|
-
emitPlotband(event: IChartEvent<
|
|
30
|
+
emitPlotband(event: IChartEvent<PlotBand>): void;
|
|
33
31
|
emitPlotline(event: IChartEvent<PlotLine>): void;
|
|
34
32
|
emitPoint(event: IChartEvent<IPointMove>): void;
|
|
35
|
-
|
|
33
|
+
private setDefaults;
|
|
34
|
+
private setpreparationData;
|
|
36
35
|
static ɵfac: i0.ɵɵFactoryDeclaration<ChartService, never>;
|
|
37
36
|
static ɵprov: i0.ɵɵInjectableDeclaration<ChartService>;
|
|
38
37
|
}
|
|
@@ -1,14 +1,19 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
1
|
+
import { Axis } from '../core/axis/axis';
|
|
2
|
+
import { ChartService } from './chart.service';
|
|
3
|
+
import { Observable } from 'rxjs';
|
|
4
|
+
import { ZoomService } from './zoom.service';
|
|
3
5
|
import * as i0 from "@angular/core";
|
|
4
6
|
export declare class ScaleService {
|
|
5
|
-
private
|
|
6
|
-
|
|
7
|
-
|
|
7
|
+
private chartService;
|
|
8
|
+
private zoomService;
|
|
9
|
+
yAxisMap: Observable<Map<number, Axis>>;
|
|
10
|
+
xAxisMap: Observable<Map<number, Axis>>;
|
|
11
|
+
yScaleMap: Observable<Map<number, any>>;
|
|
12
|
+
xScaleMap: Observable<Map<number, any>>;
|
|
13
|
+
private transformCacheX;
|
|
14
|
+
private transformCacheY;
|
|
8
15
|
private scaleMapping;
|
|
9
|
-
constructor(
|
|
10
|
-
createScales(size: DOMRect, config?: IChartConfig): void;
|
|
11
|
-
private getScale;
|
|
16
|
+
constructor(chartService: ChartService, zoomService: ZoomService);
|
|
12
17
|
static ɵfac: i0.ɵɵFactoryDeclaration<ScaleService, never>;
|
|
13
18
|
static ɵprov: i0.ɵɵInjectableDeclaration<ScaleService>;
|
|
14
19
|
}
|
|
@@ -1,25 +1,17 @@
|
|
|
1
1
|
import { ElementRef } from '@angular/core';
|
|
2
|
-
import { ScaleService } from './scale.service';
|
|
3
2
|
import { Observable, Subscription } from 'rxjs';
|
|
4
3
|
import { IChartConfig } from '../model/i-chart-config';
|
|
5
4
|
import { BroadcastService } from './broadcast.service';
|
|
6
|
-
import {
|
|
5
|
+
import { Axis } from '../core/axis/axis';
|
|
6
|
+
import { IChartEvent } from '../model/i-chart-event';
|
|
7
7
|
import * as i0 from "@angular/core";
|
|
8
8
|
export declare class ZoomService {
|
|
9
|
-
private scaleService;
|
|
10
9
|
private broadcastService;
|
|
11
|
-
|
|
12
|
-
zoomed: Observable<
|
|
10
|
+
broadcastSubscription: Subscription[];
|
|
11
|
+
zoomed: Observable<IChartEvent<Axis>>;
|
|
13
12
|
private zoomed$;
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
private y;
|
|
17
|
-
private zoom;
|
|
18
|
-
private svg;
|
|
19
|
-
private initialZoom;
|
|
20
|
-
constructor(scaleService: ScaleService, broadcastService: BroadcastService, chartService: ChartService);
|
|
21
|
-
applyZoom(svgElement: ElementRef, config: IChartConfig, size: DOMRect): void;
|
|
22
|
-
setZoom(transform: any): void;
|
|
13
|
+
constructor(broadcastService: BroadcastService);
|
|
14
|
+
applyZoom(svgElement: ElementRef, config: IChartConfig, size: DOMRect, axis?: Axis): void;
|
|
23
15
|
static ɵfac: i0.ɵɵFactoryDeclaration<ZoomService, never>;
|
|
24
16
|
static ɵprov: i0.ɵɵInjectableDeclaration<ZoomService>;
|
|
25
17
|
}
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import { Component, Input, } from '@angular/core';
|
|
2
|
-
import { tap } from 'rxjs';
|
|
3
2
|
import * as i0 from "@angular/core";
|
|
4
3
|
import * as i1 from "../service/chart.service";
|
|
5
4
|
import * as i2 from "../service/scale.service";
|
|
@@ -11,24 +10,23 @@ export class SeriesBaseComponent {
|
|
|
11
10
|
this.scaleService = scaleService;
|
|
12
11
|
this.zoomService = zoomService;
|
|
13
12
|
this.element = element;
|
|
14
|
-
this.zoomService.zoomed
|
|
15
|
-
.pipe(tap((_) => {
|
|
16
|
-
this.cdr.detectChanges();
|
|
17
|
-
}))
|
|
18
|
-
.subscribe();
|
|
19
13
|
}
|
|
20
14
|
ngOnInit() { }
|
|
21
15
|
}
|
|
22
16
|
SeriesBaseComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.1", ngImport: i0, type: SeriesBaseComponent, deps: [{ token: i1.ChartService }, { token: i0.ChangeDetectorRef }, { token: i2.ScaleService }, { token: i3.ZoomService }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
23
|
-
SeriesBaseComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.1", type: SeriesBaseComponent, selector: "ng-component", inputs: { series: "series", size: "size" }, ngImport: i0, template: '', isInline: true });
|
|
17
|
+
SeriesBaseComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.1", type: SeriesBaseComponent, selector: "ng-component", inputs: { config: "config", series: "series", size: "size", rect: "rect" }, ngImport: i0, template: '', isInline: true });
|
|
24
18
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.1", ngImport: i0, type: SeriesBaseComponent, decorators: [{
|
|
25
19
|
type: Component,
|
|
26
20
|
args: [{
|
|
27
21
|
template: '',
|
|
28
22
|
}]
|
|
29
|
-
}], ctorParameters: function () { return [{ type: i1.ChartService }, { type: i0.ChangeDetectorRef }, { type: i2.ScaleService }, { type: i3.ZoomService }, { type: i0.ElementRef }]; }, propDecorators: {
|
|
23
|
+
}], ctorParameters: function () { return [{ type: i1.ChartService }, { type: i0.ChangeDetectorRef }, { type: i2.ScaleService }, { type: i3.ZoomService }, { type: i0.ElementRef }]; }, propDecorators: { config: [{
|
|
24
|
+
type: Input
|
|
25
|
+
}], series: [{
|
|
30
26
|
type: Input
|
|
31
27
|
}], size: [{
|
|
32
28
|
type: Input
|
|
29
|
+
}], rect: [{
|
|
30
|
+
type: Input
|
|
33
31
|
}] } });
|
|
34
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
32
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VyaWVzLWJhc2UuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2NoYXJ0L2Jhc2Uvc2VyaWVzLWJhc2UuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFTCxTQUFTLEVBRVQsS0FBSyxHQUVOLE1BQU0sZUFBZSxDQUFDOzs7OztBQVl2QixNQUFNLE9BQU8sbUJBQW1CO0lBUTlCLFlBQ1ksR0FBaUIsRUFDakIsR0FBc0IsRUFDdEIsWUFBMEIsRUFDMUIsV0FBd0IsRUFDeEIsT0FBbUI7UUFKbkIsUUFBRyxHQUFILEdBQUcsQ0FBYztRQUNqQixRQUFHLEdBQUgsR0FBRyxDQUFtQjtRQUN0QixpQkFBWSxHQUFaLFlBQVksQ0FBYztRQUMxQixnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUN4QixZQUFPLEdBQVAsT0FBTyxDQUFZO0lBQzVCLENBQUM7SUFFSixRQUFRLEtBQVUsQ0FBQzs7Z0hBaEJSLG1CQUFtQjtvR0FBbkIsbUJBQW1CLGdJQUZwQixFQUFFOzJGQUVELG1CQUFtQjtrQkFIL0IsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsRUFBRTtpQkFDYjtpTkFFVSxNQUFNO3NCQUFkLEtBQUs7Z0JBQ0csTUFBTTtzQkFBZCxLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBFbGVtZW50UmVmLFxuICBJbnB1dCxcbiAgT25Jbml0LFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENoYXJ0U2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2UvY2hhcnQuc2VydmljZSc7XG5pbXBvcnQgeyBTZXJpZXMgfSBmcm9tICcuLi9tb2RlbC9zZXJpZXMnO1xuaW1wb3J0IHsgQmFzZVBvaW50IH0gZnJvbSAnLi4vbW9kZWwvYmFzZS1wb2ludCc7XG5pbXBvcnQgeyBTY2FsZVNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlL3NjYWxlLnNlcnZpY2UnO1xuaW1wb3J0IHsgWm9vbVNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlL3pvb20uc2VydmljZSc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCB0YXAgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IElDaGFydENvbmZpZyB9IGZyb20gJy4uL21vZGVsL2ktY2hhcnQtY29uZmlnJztcblxuQENvbXBvbmVudCh7XG4gIHRlbXBsYXRlOiAnJyxcbn0pXG5leHBvcnQgY2xhc3MgU2VyaWVzQmFzZUNvbXBvbmVudDxUIGV4dGVuZHMgQmFzZVBvaW50PiBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIEBJbnB1dCgpIGNvbmZpZzogSUNoYXJ0Q29uZmlnO1xuICBASW5wdXQoKSBzZXJpZXM6IFNlcmllczxUPjtcbiAgQElucHV0KCkgc2l6ZTogRE9NUmVjdDtcbiAgQElucHV0KCkgcmVjdDogYW55O1xuXG4gIHpvb206IE9ic2VydmFibGU8YW55PjtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcm90ZWN0ZWQgc3ZjOiBDaGFydFNlcnZpY2UsXG4gICAgcHJvdGVjdGVkIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgcHJvdGVjdGVkIHNjYWxlU2VydmljZTogU2NhbGVTZXJ2aWNlLFxuICAgIHByb3RlY3RlZCB6b29tU2VydmljZTogWm9vbVNlcnZpY2UsXG4gICAgcHJvdGVjdGVkIGVsZW1lbnQ6IEVsZW1lbnRSZWZcbiAgKSB7fVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge31cbn1cbiJdfQ==
|
|
@@ -3,8 +3,7 @@ import { ChartService } from '../service/chart.service';
|
|
|
3
3
|
import { ZoomService } from '../service/zoom.service';
|
|
4
4
|
import { ScaleService } from '../service/scale.service';
|
|
5
5
|
import { BrushService } from '../service/brush.service';
|
|
6
|
-
import {
|
|
7
|
-
import { ChartBounds } from '../model/chart-bounds';
|
|
6
|
+
import { map, takeWhile } from 'rxjs';
|
|
8
7
|
import * as i0 from "@angular/core";
|
|
9
8
|
import * as i1 from "../service/chart.service";
|
|
10
9
|
import * as i2 from "../service/zoom.service";
|
|
@@ -12,57 +11,56 @@ import * as i3 from "../chart-container/chart-container.component";
|
|
|
12
11
|
import * as i4 from "../legend/legend.component";
|
|
13
12
|
import * as i5 from "@angular/common";
|
|
14
13
|
export class ChartComponent {
|
|
15
|
-
constructor(
|
|
16
|
-
this.
|
|
17
|
-
this.
|
|
14
|
+
constructor(_svc, _zoomService) {
|
|
15
|
+
this._svc = _svc;
|
|
16
|
+
this._zoomService = _zoomService;
|
|
18
17
|
this.plotBandsMove = new EventEmitter();
|
|
18
|
+
this.plotBandsClick = new EventEmitter();
|
|
19
19
|
this.plotLinesMove = new EventEmitter();
|
|
20
20
|
this.pointMove = new EventEmitter();
|
|
21
|
+
this._alive = true;
|
|
22
|
+
this.svcConfig = this._svc.config;
|
|
23
|
+
this.hasSeriesData = this.svcConfig.pipe(map((_) => _.series?.length > 0 && _.series?.some((_) => _.data?.length > 0)));
|
|
21
24
|
}
|
|
22
25
|
set config(config) {
|
|
23
|
-
this.
|
|
24
|
-
bounds: new ChartBounds(),
|
|
25
|
-
}, config);
|
|
26
|
-
}
|
|
27
|
-
get config() {
|
|
28
|
-
return this._config;
|
|
26
|
+
this._svc.setConfig(config);
|
|
29
27
|
}
|
|
30
28
|
ngOnChanges(changes) { }
|
|
31
29
|
ngOnInit() {
|
|
32
|
-
this.
|
|
30
|
+
this._svc.plotBandEvent
|
|
31
|
+
.pipe(takeWhile(() => this._alive))
|
|
32
|
+
.subscribe((_) => {
|
|
33
33
|
this.plotBandsMove.emit(_);
|
|
34
34
|
});
|
|
35
|
-
this.
|
|
35
|
+
this._svc.plotLineMove.pipe(takeWhile(() => this._alive)).subscribe((_) => {
|
|
36
36
|
this.plotLinesMove.emit(_);
|
|
37
37
|
});
|
|
38
|
-
this.
|
|
38
|
+
this._svc.pointMove.pipe(takeWhile(() => this._alive)).subscribe((_) => {
|
|
39
39
|
this.pointMove.emit(_);
|
|
40
40
|
});
|
|
41
|
+
this._svc.plotBandClick
|
|
42
|
+
.pipe(takeWhile(() => this._alive))
|
|
43
|
+
.subscribe((_) => {
|
|
44
|
+
this.plotBandsClick.emit(_);
|
|
45
|
+
});
|
|
41
46
|
}
|
|
42
47
|
ngAfterViewInit() { }
|
|
43
48
|
ngOnDestroy() {
|
|
44
|
-
this.
|
|
49
|
+
this._alive = false;
|
|
50
|
+
this._zoomService.broadcastSubscription?.forEach((sub) => {
|
|
51
|
+
sub.unsubscribe();
|
|
52
|
+
});
|
|
45
53
|
}
|
|
46
54
|
}
|
|
47
55
|
ChartComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.0.1", ngImport: i0, type: ChartComponent, deps: [{ token: i1.ChartService }, { token: i2.ZoomService }], target: i0.ɵɵFactoryTarget.Component });
|
|
48
|
-
ChartComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.1", type: ChartComponent, selector: "teta-svg-chart", inputs: { config: "config" }, outputs: { plotBandsMove: "plotBandsMove", plotLinesMove: "plotLinesMove", pointMove: "pointMove" }, providers: [
|
|
49
|
-
ChartService,
|
|
50
|
-
ZoomService,
|
|
51
|
-
ScaleService,
|
|
52
|
-
AxesService,
|
|
53
|
-
BrushService,
|
|
54
|
-
], usesOnChanges: true, ngImport: i0, template: "<div class=\"column column_auto\">\n <teta-chart-container class=\"chart-container\" [config]=\"config\"></teta-chart-container>\n</div>\n\n<teta-legend *ngIf=\"config.legend?.enable === true\" [series]=\"config.series\"></teta-legend>\n", styles: [":host{display:flex;flex-direction:column;height:100%;width:100%}\n"], components: [{ type: i3.ChartContainerComponent, selector: "teta-chart-container", inputs: ["config"] }, { type: i4.LegendComponent, selector: "teta-legend", inputs: ["series"] }], directives: [{ type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
56
|
+
ChartComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.0.1", type: ChartComponent, selector: "teta-svg-chart", inputs: { config: "config" }, outputs: { plotBandsMove: "plotBandsMove", plotBandsClick: "plotBandsClick", plotLinesMove: "plotLinesMove", pointMove: "pointMove" }, providers: [ChartService, ZoomService, ScaleService, BrushService], usesOnChanges: true, ngImport: i0, template: "<ng-container *ngIf=\"{\n hasSeriesData: hasSeriesData | async,\n svcConfig: svcConfig | async\n} as data\">\n <ng-container *ngIf=\"data.hasSeriesData === true else noData\">\n <div class=\"column column_auto\">\n <teta-chart-container class=\"chart-container\"></teta-chart-container>\n </div>\n <teta-legend *ngIf=\"data.svcConfig.legend?.enable === true\" [series]=\"data.svcConfig.series\"></teta-legend>\n </ng-container>\n</ng-container>\n<ng-template #noData>\n <div class=\"column column_auto align-center justify-content-center\">\n <span class=\"font-body-3 color-text-40\">\u0414\u0430\u043D\u043D\u044B\u0435 \u043E\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u044E\u0442</span>\n </div>\n</ng-template>\n", styles: [":host{position:relative;display:flex;flex-direction:column;height:100%;width:100%}\n"], components: [{ type: i3.ChartContainerComponent, selector: "teta-chart-container" }, { type: i4.LegendComponent, selector: "teta-legend", inputs: ["series"] }], directives: [{ type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], pipes: { "async": i5.AsyncPipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
55
57
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.1", ngImport: i0, type: ChartComponent, decorators: [{
|
|
56
58
|
type: Component,
|
|
57
|
-
args: [{ selector: 'teta-svg-chart', providers: [
|
|
58
|
-
ChartService,
|
|
59
|
-
ZoomService,
|
|
60
|
-
ScaleService,
|
|
61
|
-
AxesService,
|
|
62
|
-
BrushService,
|
|
63
|
-
], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"column column_auto\">\n <teta-chart-container class=\"chart-container\" [config]=\"config\"></teta-chart-container>\n</div>\n\n<teta-legend *ngIf=\"config.legend?.enable === true\" [series]=\"config.series\"></teta-legend>\n", styles: [":host{display:flex;flex-direction:column;height:100%;width:100%}\n"] }]
|
|
59
|
+
args: [{ selector: 'teta-svg-chart', providers: [ChartService, ZoomService, ScaleService, BrushService], changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-container *ngIf=\"{\n hasSeriesData: hasSeriesData | async,\n svcConfig: svcConfig | async\n} as data\">\n <ng-container *ngIf=\"data.hasSeriesData === true else noData\">\n <div class=\"column column_auto\">\n <teta-chart-container class=\"chart-container\"></teta-chart-container>\n </div>\n <teta-legend *ngIf=\"data.svcConfig.legend?.enable === true\" [series]=\"data.svcConfig.series\"></teta-legend>\n </ng-container>\n</ng-container>\n<ng-template #noData>\n <div class=\"column column_auto align-center justify-content-center\">\n <span class=\"font-body-3 color-text-40\">\u0414\u0430\u043D\u043D\u044B\u0435 \u043E\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0443\u044E\u0442</span>\n </div>\n</ng-template>\n", styles: [":host{position:relative;display:flex;flex-direction:column;height:100%;width:100%}\n"] }]
|
|
64
60
|
}], ctorParameters: function () { return [{ type: i1.ChartService }, { type: i2.ZoomService }]; }, propDecorators: { plotBandsMove: [{
|
|
65
61
|
type: Output
|
|
62
|
+
}], plotBandsClick: [{
|
|
63
|
+
type: Output
|
|
66
64
|
}], plotLinesMove: [{
|
|
67
65
|
type: Output
|
|
68
66
|
}], pointMove: [{
|
|
@@ -70,4 +68,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.0.1", ngImpor
|
|
|
70
68
|
}], config: [{
|
|
71
69
|
type: Input
|
|
72
70
|
}] } });
|
|
73
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
71
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhcnQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2NoYXJ0L2NoYXJ0L2NoYXJ0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uL3NyYy9jaGFydC9jaGFydC9jaGFydC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxZQUFZLEVBQ1osS0FBSyxFQUlMLE1BQU0sR0FFUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFJeEQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3RELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUN4RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFLeEQsT0FBTyxFQUFFLEdBQUcsRUFBYyxTQUFTLEVBQU8sTUFBTSxNQUFNLENBQUM7Ozs7Ozs7QUFTdkQsTUFBTSxPQUFPLGNBQWM7SUE4QnpCLFlBQW9CLElBQWtCLEVBQVUsWUFBeUI7UUFBckQsU0FBSSxHQUFKLElBQUksQ0FBYztRQUFVLGlCQUFZLEdBQVosWUFBWSxDQUFhO1FBekJ6RSxrQkFBYSxHQUF3QyxJQUFJLFlBQVksRUFFbEUsQ0FBQztRQUdKLG1CQUFjLEdBQXdDLElBQUksWUFBWSxFQUVuRSxDQUFDO1FBR0osa0JBQWEsR0FBd0MsSUFBSSxZQUFZLEVBRWxFLENBQUM7UUFHSixjQUFTLEdBQTBDLElBQUksWUFBWSxFQUVoRSxDQUFDO1FBTUksV0FBTSxHQUFHLElBQUksQ0FBQztRQUdwQixJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDO1FBQ2xDLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQ3RDLEdBQUcsQ0FDRCxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxNQUFNLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FDekUsQ0FDRixDQUFDO0lBQ0osQ0FBQztJQWJELElBQWEsTUFBTSxDQUFDLE1BQW9CO1FBQ3RDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQzlCLENBQUM7SUFhRCxXQUFXLENBQUMsT0FBc0IsSUFBRyxDQUFDO0lBRXRDLFFBQVE7UUFDTixJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWE7YUFDcEIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7YUFDbEMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUU7WUFDZixJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUM3QixDQUFDLENBQUMsQ0FBQztRQUVMLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUU7WUFDeEUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDN0IsQ0FBQyxDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFO1lBQ3JFLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3pCLENBQUMsQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhO2FBQ3BCLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO2FBQ2xDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFO1lBQ2YsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDOUIsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRUQsZUFBZSxLQUFJLENBQUM7SUFFcEIsV0FBVztRQUNULElBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDO1FBQ3BCLElBQUksQ0FBQyxZQUFZLENBQUMscUJBQXFCLEVBQUUsT0FBTyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUU7WUFDdkQsR0FBRyxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ3BCLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzs7MkdBdEVVLGNBQWM7K0ZBQWQsY0FBYyw4TUFIZCxDQUFDLFlBQVksRUFBRSxXQUFXLEVBQUUsWUFBWSxFQUFFLFlBQVksQ0FBQywrQ0M1QnBFLDJ1QkFnQkE7MkZEZWEsY0FBYztrQkFQMUIsU0FBUzsrQkFDRSxnQkFBZ0IsYUFHZixDQUFDLFlBQVksRUFBRSxXQUFXLEVBQUUsWUFBWSxFQUFFLFlBQVksQ0FBQyxtQkFDakQsdUJBQXVCLENBQUMsTUFBTTs2SEFPL0MsYUFBYTtzQkFEWixNQUFNO2dCQU1QLGNBQWM7c0JBRGIsTUFBTTtnQkFNUCxhQUFhO3NCQURaLE1BQU07Z0JBTVAsU0FBUztzQkFEUixNQUFNO2dCQUtNLE1BQU07c0JBQWxCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ29tcG9uZW50LFxuICBFdmVudEVtaXR0ZXIsXG4gIElucHV0LFxuICBPbkNoYW5nZXMsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxuICBPdXRwdXQsXG4gIFNpbXBsZUNoYW5nZXMsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ2hhcnRTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZS9jaGFydC5zZXJ2aWNlJztcbmltcG9ydCB7IElDaGFydENvbmZpZyB9IGZyb20gJy4uL21vZGVsL2ktY2hhcnQtY29uZmlnJztcbmltcG9ydCB7IEJhc2VQb2ludCB9IGZyb20gJy4uL21vZGVsL2Jhc2UtcG9pbnQnO1xuaW1wb3J0IHsgU2VyaWVzIH0gZnJvbSAnLi4vbW9kZWwvc2VyaWVzJztcbmltcG9ydCB7IFpvb21TZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZS96b29tLnNlcnZpY2UnO1xuaW1wb3J0IHsgU2NhbGVTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZS9zY2FsZS5zZXJ2aWNlJztcbmltcG9ydCB7IEJydXNoU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2UvYnJ1c2guc2VydmljZSc7XG5pbXBvcnQgeyBJQ2hhcnRFdmVudCB9IGZyb20gJy4uL21vZGVsL2ktY2hhcnQtZXZlbnQnO1xuaW1wb3J0IHsgUGxvdExpbmUgfSBmcm9tICcuLi9tb2RlbC9wbG90LWxpbmUnO1xuaW1wb3J0IHsgUGxvdEJhbmQgfSBmcm9tICcuLi9tb2RlbC9wbG90LWJhbmQnO1xuaW1wb3J0IHsgSVBvaW50TW92ZSB9IGZyb20gJy4uL21vZGVsL2ktcG9pbnQtbW92ZSc7XG5pbXBvcnQgeyBtYXAsIE9ic2VydmFibGUsIHRha2VXaGlsZSwgdGFwIH0gZnJvbSAncnhqcyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3RldGEtc3ZnLWNoYXJ0JyxcbiAgdGVtcGxhdGVVcmw6ICcuL2NoYXJ0LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vY2hhcnQuY29tcG9uZW50LnNjc3MnXSxcbiAgcHJvdmlkZXJzOiBbQ2hhcnRTZXJ2aWNlLCBab29tU2VydmljZSwgU2NhbGVTZXJ2aWNlLCBCcnVzaFNlcnZpY2VdLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgQ2hhcnRDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcywgT25EZXN0cm95IHtcbiAgbGVnZW5kU2VyaWVzOiBBcnJheTxTZXJpZXM8QmFzZVBvaW50Pj47XG4gIGhhc1Nlcmllc0RhdGE6IE9ic2VydmFibGU8Ym9vbGVhbj47XG4gIHN2Y0NvbmZpZzogT2JzZXJ2YWJsZTxJQ2hhcnRDb25maWc+O1xuICBAT3V0cHV0KClcbiAgcGxvdEJhbmRzTW92ZTogRXZlbnRFbWl0dGVyPElDaGFydEV2ZW50PFBsb3RCYW5kPj4gPSBuZXcgRXZlbnRFbWl0dGVyPFxuICAgIElDaGFydEV2ZW50PFBsb3RCYW5kPlxuICA+KCk7XG5cbiAgQE91dHB1dCgpXG4gIHBsb3RCYW5kc0NsaWNrOiBFdmVudEVtaXR0ZXI8SUNoYXJ0RXZlbnQ8UGxvdEJhbmQ+PiA9IG5ldyBFdmVudEVtaXR0ZXI8XG4gICAgSUNoYXJ0RXZlbnQ8UGxvdEJhbmQ+XG4gID4oKTtcblxuICBAT3V0cHV0KClcbiAgcGxvdExpbmVzTW92ZTogRXZlbnRFbWl0dGVyPElDaGFydEV2ZW50PFBsb3RMaW5lPj4gPSBuZXcgRXZlbnRFbWl0dGVyPFxuICAgIElDaGFydEV2ZW50PFBsb3RMaW5lPlxuICA+KCk7XG5cbiAgQE91dHB1dCgpXG4gIHBvaW50TW92ZTogRXZlbnRFbWl0dGVyPElDaGFydEV2ZW50PElQb2ludE1vdmU+PiA9IG5ldyBFdmVudEVtaXR0ZXI8XG4gICAgSUNoYXJ0RXZlbnQ8SVBvaW50TW92ZT5cbiAgPigpO1xuXG4gIEBJbnB1dCgpIHNldCBjb25maWcoY29uZmlnOiBJQ2hhcnRDb25maWcpIHtcbiAgICB0aGlzLl9zdmMuc2V0Q29uZmlnKGNvbmZpZyk7XG4gIH1cblxuICBwcml2YXRlIF9hbGl2ZSA9IHRydWU7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBfc3ZjOiBDaGFydFNlcnZpY2UsIHByaXZhdGUgX3pvb21TZXJ2aWNlOiBab29tU2VydmljZSkge1xuICAgIHRoaXMuc3ZjQ29uZmlnID0gdGhpcy5fc3ZjLmNvbmZpZztcbiAgICB0aGlzLmhhc1Nlcmllc0RhdGEgPSB0aGlzLnN2Y0NvbmZpZy5waXBlKFxuICAgICAgbWFwKFxuICAgICAgICAoXykgPT4gXy5zZXJpZXM/Lmxlbmd0aCA+IDAgJiYgXy5zZXJpZXM/LnNvbWUoKF8pID0+IF8uZGF0YT8ubGVuZ3RoID4gMClcbiAgICAgIClcbiAgICApO1xuICB9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcykge31cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLl9zdmMucGxvdEJhbmRFdmVudFxuICAgICAgLnBpcGUodGFrZVdoaWxlKCgpID0+IHRoaXMuX2FsaXZlKSlcbiAgICAgIC5zdWJzY3JpYmUoKF8pID0+IHtcbiAgICAgICAgdGhpcy5wbG90QmFuZHNNb3ZlLmVtaXQoXyk7XG4gICAgICB9KTtcblxuICAgIHRoaXMuX3N2Yy5wbG90TGluZU1vdmUucGlwZSh0YWtlV2hpbGUoKCkgPT4gdGhpcy5fYWxpdmUpKS5zdWJzY3JpYmUoKF8pID0+IHtcbiAgICAgIHRoaXMucGxvdExpbmVzTW92ZS5lbWl0KF8pO1xuICAgIH0pO1xuXG4gICAgdGhpcy5fc3ZjLnBvaW50TW92ZS5waXBlKHRha2VXaGlsZSgoKSA9PiB0aGlzLl9hbGl2ZSkpLnN1YnNjcmliZSgoXykgPT4ge1xuICAgICAgdGhpcy5wb2ludE1vdmUuZW1pdChfKTtcbiAgICB9KTtcblxuICAgIHRoaXMuX3N2Yy5wbG90QmFuZENsaWNrXG4gICAgICAucGlwZSh0YWtlV2hpbGUoKCkgPT4gdGhpcy5fYWxpdmUpKVxuICAgICAgLnN1YnNjcmliZSgoXykgPT4ge1xuICAgICAgICB0aGlzLnBsb3RCYW5kc0NsaWNrLmVtaXQoXyk7XG4gICAgICB9KTtcbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHt9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy5fYWxpdmUgPSBmYWxzZTtcbiAgICB0aGlzLl96b29tU2VydmljZS5icm9hZGNhc3RTdWJzY3JpcHRpb24/LmZvckVhY2goKHN1YikgPT4ge1xuICAgICAgc3ViLnVuc3Vic2NyaWJlKCk7XG4gICAgfSk7XG4gIH1cbn1cbiIsIjxuZy1jb250YWluZXIgKm5nSWY9XCJ7XG4gIGhhc1Nlcmllc0RhdGE6IGhhc1Nlcmllc0RhdGEgfCBhc3luYyxcbiAgc3ZjQ29uZmlnOiBzdmNDb25maWcgfCBhc3luY1xufSBhcyBkYXRhXCI+XG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJkYXRhLmhhc1Nlcmllc0RhdGEgPT09IHRydWUgZWxzZSBub0RhdGFcIj5cbiAgICA8ZGl2IGNsYXNzPVwiY29sdW1uIGNvbHVtbl9hdXRvXCI+XG4gICAgICA8dGV0YS1jaGFydC1jb250YWluZXIgY2xhc3M9XCJjaGFydC1jb250YWluZXJcIj48L3RldGEtY2hhcnQtY29udGFpbmVyPlxuICAgIDwvZGl2PlxuICAgIDx0ZXRhLWxlZ2VuZCAqbmdJZj1cImRhdGEuc3ZjQ29uZmlnLmxlZ2VuZD8uZW5hYmxlID09PSB0cnVlXCIgW3Nlcmllc109XCJkYXRhLnN2Y0NvbmZpZy5zZXJpZXNcIj48L3RldGEtbGVnZW5kPlxuICA8L25nLWNvbnRhaW5lcj5cbjwvbmctY29udGFpbmVyPlxuPG5nLXRlbXBsYXRlICNub0RhdGE+XG4gIDxkaXYgY2xhc3M9XCJjb2x1bW4gY29sdW1uX2F1dG8gYWxpZ24tY2VudGVyIGp1c3RpZnktY29udGVudC1jZW50ZXJcIj5cbiAgICA8c3BhbiBjbGFzcz1cImZvbnQtYm9keS0zIGNvbG9yLXRleHQtNDBcIj7QlNCw0L3QvdGL0LUg0L7RgtGB0YPRgtGB0YLQstGD0Y7Rgjwvc3Bhbj5cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuIl19
|