@tetacom/svg-charts 1.2.17 → 1.2.20
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/chart-container/chart-container.component.d.ts +3 -0
- package/esm2020/chart/chart-container/annotation/annotation.component.mjs +5 -5
- package/esm2020/chart/chart-container/chart-container.component.mjs +10 -7
- package/esm2020/chart/chart-container/plotband/plot-band.component.mjs +3 -3
- package/esm2020/chart/chart-container/series/area-series/area-series.component.mjs +6 -3
- package/esm2020/chart/chart-container/series/bar/bar-series.component.mjs +6 -6
- package/esm2020/chart/chart-container/series/block-area-series/block-area-series.component.mjs +3 -3
- package/esm2020/chart/chart-container/series/block-series/block-series.component.mjs +3 -3
- package/esm2020/chart/chart-container/series/linear-series-base.mjs +6 -3
- package/esm2020/chart/chart-container/series/scatter-series/scatter-series.component.mjs +5 -5
- package/esm2020/chart/chart-container/x-axis/x-axis.component.mjs +2 -2
- package/fesm2015/tetacom-svg-charts.mjs +45 -30
- package/fesm2015/tetacom-svg-charts.mjs.map +1 -1
- package/fesm2020/tetacom-svg-charts.mjs +39 -30
- package/fesm2020/tetacom-svg-charts.mjs.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tetacom-svg-charts.mjs","sources":["../../src/chart/model/enum/zoom-type.ts","../../src/chart/model/chart-bounds.ts","../../src/chart/model/enum/tooltip-tracking.ts","../../src/chart/model/enum/zoom-behavior-type.ts","../../src/chart/default/default-chart-config.ts","../../src/chart/model/enum/scale-type.ts","../../src/chart/default/default-axis-config.ts","../../src/chart/model/enum/series-type.ts","../../src/chart/model/enum/fill-type.ts","../../src/chart/model/enum/clip-points-direction.ts","../../src/chart/default/default-series-config.ts","../../src/chart/service/chart.service.ts","../../src/chart/model/enum/axis-orientation.ts","../../src/chart/service/zoom.service.ts","../../src/chart/core/utils/get-text-width.ts","../../src/chart/core/utils/generate-ticks.ts","../../src/chart/core/axis/builders/axis-size-builder.ts","../../src/chart/core/axis/builders/extremes-builder.ts","../../src/chart/core/axis/axis.ts","../../src/chart/service/scale.service.ts","../../src/chart/model/enum/brush-type.ts","../../src/chart/model/i-broadcast-message.ts","../../src/chart/service/broadcast.service.ts","../../src/chart/service/brush.service.ts","../../src/chart/base/series-base.component.ts","../../src/chart/model/enum/drag-point-type.ts","../../src/chart/chart-container/series/linear-series-base.ts","../../src/chart/chart-container/series/line/line-series.component.ts","../../src/chart/chart-container/series/line/line-series.component.html","../../src/chart/chart-container/series/bar/bar-series.component.ts","../../src/chart/chart-container/series/bar/bar-series.component.html","../../src/chart/chart-container/series/scatter-series/scatter-series.component.ts","../../src/chart/chart-container/series/scatter-series/scatter-series.component.html","../../src/chart/chart-container/series/block-series/block-series.component.ts","../../src/chart/chart-container/series/block-series/block-series.component.html","../../src/chart/chart-container/series/block-area-series/block-area-series.component.ts","../../src/chart/chart-container/series/block-area-series/block-area-series.component.html","../../src/chart/chart-container/series/area-series/area-series.component.ts","../../src/chart/chart-container/series/area-series/area-series.component.html","../../src/chart/default/defaultSeriesTypeMapping.ts","../../src/chart/chart-container/series-host/series-host.component.ts","../../src/chart/chart-container/gridlines/gridlines.component.ts","../../src/chart/chart-container/gridlines/gridlines.component.html","../../src/chart/chart-container/x-axis/x-axis.component.ts","../../src/chart/chart-container/x-axis/x-axis.component.html","../../src/chart/chart-container/y-axis/y-axis.component.ts","../../src/chart/chart-container/y-axis/y-axis.component.html","../../src/chart/chart-container/plotline/plotline.component.ts","../../src/chart/chart-container/plotline/plotline.component.html","../../src/chart/chart-container/plotband/plot-band.component.ts","../../src/chart/chart-container/plotband/plot-band.component.html","../../src/chart/chart-container/tooltip/tooltip.component.ts","../../src/chart/chart-container/tooltip/tooltip.component.html","../../src/chart/directives/zoomable.directive.ts","../../src/chart/directives/brushable.directive.ts","../../src/chart/chart-container/annotation/annotation.component.ts","../../src/chart/chart-container/annotation/annotation.component.html","../../src/chart/chart-container/crosshair/crosshair.component.ts","../../src/chart/chart-container/crosshair/crosshair.component.html","../../src/chart/chart-container/chart-container.component.ts","../../src/chart/chart-container/chart-container.component.html","../../src/chart/legend/legend.component.ts","../../src/chart/legend/legend.component.html","../../src/chart/chart/chart.component.ts","../../src/chart/chart/chart.component.html","../../src/chart/chart.module.ts","../../src/chart/model/plot-band.ts","../../src/chart/model/plot-line.ts","../../src/public-api.ts","../../src/tetacom-svg-charts.ts"],"sourcesContent":["export enum ZoomType {\n x,\n y,\n xy,\n}\n","export class ChartBounds {\n top?: number = 0;\n right?: number = 0;\n bottom?: number = 0;\n left?: number = 0;\n\n constructor(options?: {\n top?: number;\n right?: number;\n bottom?: number;\n left?: number;\n }) {\n this.top = options?.top || 0;\n this.right = options?.right || 0;\n this.bottom = options?.bottom || 0;\n this.left = options?.left || 0;\n }\n}\n","export enum TooltipTracking {\n x,\n y,\n}\n","export enum ZoomBehaviorType {\n move,\n wheel\n}\n","import {IChartConfig} from '../model/i-chart-config';\nimport {ZoomType} from '../model/enum/zoom-type';\nimport {ChartBounds} from '../model/chart-bounds';\nimport {TooltipTracking} from '../model/enum/tooltip-tracking';\nimport {ZoomBehaviorType} from \"../model/enum/zoom-behavior-type\";\n\nexport const defaultChartConfig = (): IChartConfig => ({\n name: null,\n zoom: {\n enable: true,\n type: ZoomType.x,\n zoomBehavior: ZoomBehaviorType.move\n },\n bounds: new ChartBounds({\n bottom: 12,\n left: 12,\n top: 12,\n right: 12\n }),\n legend: {\n enable: true,\n },\n tooltip: {\n enable: true,\n showMarkers: true,\n tracking: TooltipTracking.x,\n showCrosshair: false,\n padding: {\n x: 16,\n y: 16\n }\n },\n xAxis: [],\n yAxis: [],\n series: [],\n gridLines: {\n enable: true\n }\n});\n","export enum ScaleType {\n linear,\n log,\n symlog,\n pow,\n sqrt,\n time,\n category,\n}\n","import { AxisOptions } from '../model/axis-options';\nimport { ScaleType } from '../model/enum/scale-type';\n\nexport const defaultAxisConfig: AxisOptions = {\n visible: true,\n zoom: true,\n scaleType: {\n type: ScaleType.linear,\n },\n niceTicks: false,\n};\n","export enum SeriesType {\n line,\n bar,\n area,\n scatter,\n block,\n blockArea\n}\n","export enum FillType {\n default,\n gradient,\n}\nexport enum FillDirection {\n x,\n y,\n}\n","export enum ClipPointsDirection {\n x,\n y\n}\n\n","import {Series} from '../model/series';\nimport {BasePoint} from '../model/base-point';\nimport {SeriesType} from '../model/enum/series-type';\nimport {FillType} from '../model/enum/fill-type';\nimport {ClipPointsDirection} from \"../model/enum/clip-points-direction\";\n\nexport const defaultSeriesConfig = (): Series<BasePoint> => ({\n data: [],\n type: SeriesType.line,\n xAxisIndex: 0,\n yAxisIndex: 0,\n fillType: FillType.default,\n color: 'coral',\n visible: true,\n clipPointsDirection: ClipPointsDirection.x\n});\n","import {Injectable} from '@angular/core';\nimport {IChartConfig} from '../model/i-chart-config';\nimport {\n BehaviorSubject,\n filter,\n lastValueFrom,\n map,\n Observable,\n of,\n shareReplay,\n Subject,\n take, takeLast, tap,\n withLatestFrom,\n} from 'rxjs';\nimport {IChartEvent} from '../model/i-chart-event';\nimport {IDisplayTooltip} from '../model/i-display-tooltip';\nimport {PlotBand} from '../model/plot-band';\nimport {PlotLine} from '../model/plot-line';\nimport {IPointMove} from '../model/i-point-move';\nimport {defaultChartConfig} from '../default/default-chart-config';\nimport {defaultAxisConfig} from '../default/default-axis-config';\nimport {defaultSeriesConfig} from '../default/default-series-config';\nimport {BasePoint} from '../model/base-point';\nimport {Series} from '../model/series';\nimport {Annotation} from '../model/annotation';\nimport {ClipPointsDirection} from \"../model/enum/clip-points-direction\";\nimport {ZoomService} from \"./zoom.service\";\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ChartService {\n public id: Observable<string>;\n public config: Observable<IChartConfig>;\n public size: Observable<DOMRect>;\n public pointerMove: Observable<PointerEvent>;\n public tooltips: Observable<Map<Series<BasePoint>, IDisplayTooltip>>;\n public plotBandEvent: Observable<IChartEvent<PlotBand>>;\n public plotLineMove: Observable<IChartEvent<PlotLine>>;\n public plotBandClick: Observable<IChartEvent<PlotBand>>;\n public plotBandContextMenu: Observable<IChartEvent<PlotBand>>;\n public pointMove: Observable<IChartEvent<IPointMove>>;\n public annotationMove: Observable<IChartEvent<Annotation>>;\n public annotationClick: Observable<IChartEvent<Annotation>>;\n public annotationContextMenu: Observable<IChartEvent<Annotation>>;\n public chartClick: Observable<IChartEvent<BasePoint>>;\n public chartContextMenu: Observable<IChartEvent<BasePoint>>;\n public zoomInstance: Observable<ZoomService>;\n\n private config$ = new BehaviorSubject<IChartConfig>(defaultChartConfig());\n private size$ = new BehaviorSubject<DOMRect>(new DOMRectReadOnly());\n private pointerMove$ = new Subject<PointerEvent>();\n private tooltips$ = new BehaviorSubject<Map<Series<BasePoint>, IDisplayTooltip>>(new Map());\n private plotBandEvent$ = new Subject<IChartEvent<PlotBand>>();\n private plotLineMove$ = new Subject<IChartEvent<PlotLine>>();\n private pointMove$ = new Subject<IChartEvent<IPointMove>>();\n private chartClick$ = new Subject<IChartEvent<BasePoint>>();\n private chartContextMenu$ = new Subject<IChartEvent<BasePoint>>();\n private annotationEvent$ = new Subject<IChartEvent<Annotation>>();\n private annotationMove$ = new Subject<IChartEvent<Annotation>>();\n private zoomInstance$ = new Subject<ZoomService>();\n\n\n private static _hiddenSeriesPostfix = 'hidden_series';\n\n constructor() {\n this.id = of((Date.now() + Math.random()).toString(36));\n\n this.config = this.config$.asObservable().pipe(\n withLatestFrom(this.id),\n map(this.setDefaults),\n map(this.setPreparationData),\n map(this.restoreLocalStorage),\n shareReplay({\n bufferSize: 1,\n refCount: true,\n })\n );\n\n\n this.size = this.size$.asObservable();\n this.pointerMove = this.pointerMove$.asObservable();\n this.tooltips = this.tooltips$.asObservable();\n this.plotBandEvent = this.plotBandEvent$.asObservable();\n this.plotLineMove = this.plotLineMove$.asObservable();\n this.pointMove = this.pointMove$.asObservable();\n this.chartClick = this.chartClick$.asObservable();\n this.chartContextMenu = this.chartContextMenu$.asObservable();\n this.annotationClick = this.annotationEvent$\n .asObservable()\n .pipe(filter((_) => _?.event?.type === 'click'));\n this.annotationContextMenu = this.annotationEvent$\n .asObservable()\n .pipe(filter((_) => _?.event?.type === 'contextmenu'));\n this.annotationMove = this.annotationMove$.asObservable();\n\n this.plotBandClick = this.plotBandEvent$\n .asObservable()\n .pipe(filter((_) => _?.event?.type === 'click'));\n this.plotBandContextMenu = this.plotBandEvent$\n .asObservable()\n .pipe(filter((_) => _?.event?.type === 'contextmenu'));\n this.zoomInstance = this.zoomInstance$.asObservable();\n }\n\n public setConfig(config: IChartConfig) {\n this.clearTooltips();\n this.config$.next(config);\n }\n\n public setSize(size: DOMRect) {\n this.size$.next(size);\n }\n\n public setPointerMove(event: PointerEvent) {\n this.pointerMove$.next(event);\n }\n\n public setTooltip(tooltip: IDisplayTooltip) {\n const currentTooltips = this.tooltips$.value;\n if (!tooltip.point) {\n currentTooltips.delete(tooltip.series);\n } else {\n currentTooltips.set(tooltip.series, tooltip);\n }\n this.tooltips$.next(\n new Map<Series<BasePoint>, IDisplayTooltip>(currentTooltips)\n );\n }\n\n public clearTooltips() {\n this.tooltips$.next(new Map());\n }\n\n public async toggleVisibilitySeries(seriesIndex: Array<number | string>, visible?: boolean) {\n\n if (seriesIndex?.length === 0) {\n return;\n }\n\n const currentConfig = await lastValueFrom(this.config.pipe(take(1)));\n\n seriesIndex.forEach((serieIndex) => {\n const currentSerieIndex = currentConfig.series.findIndex((_) => _.id === serieIndex);\n\n if (currentSerieIndex === -1) {\n return;\n }\n currentConfig.series[currentSerieIndex].visible = visible !== undefined ? visible : !currentConfig.series[currentSerieIndex].visible;\n\n const seriesLinkCount = currentConfig.series.filter((_) => _.yAxisIndex === currentConfig.series[currentSerieIndex].yAxisIndex && _.visible === true).length\n currentConfig.yAxis[currentConfig.series[currentSerieIndex].yAxisIndex].visible = seriesLinkCount !== 0;\n })\n\n try {\n this.saveCookie(currentConfig);\n } finally {\n this.config$.next(currentConfig);\n }\n }\n\n public emitMoveAnnotation(event: IChartEvent<Annotation>) {\n this.annotationMove$.next(event);\n }\n\n public emitAnnotation(event: IChartEvent<Annotation>) {\n this.annotationEvent$.next(event);\n }\n\n public emitPlotband(event: IChartEvent<PlotBand>) {\n this.plotBandEvent$.next(event);\n }\n\n public emitPlotline(event: IChartEvent<PlotLine>) {\n this.plotLineMove$.next(event);\n }\n\n public emitPoint(event: IChartEvent<IPointMove>) {\n this.pointMove$.next(event);\n }\n\n public emitChartClick(event: IChartEvent<BasePoint>) {\n this.chartClick$.next(event);\n }\n\n public emitChartContextMenu(event: IChartEvent<BasePoint>) {\n this.chartContextMenu$.next(event);\n }\n\n public emitZoomInstance(event: ZoomService) {\n this.zoomInstance$.next(event);\n }\n\n private saveCookie(config: IChartConfig) {\n if(!config.name) return;\n const hiddenSeries = config.series?.filter((_) => !_.visible).map((_) => _.id);\n localStorage.setItem(`${config.name}_${ChartService._hiddenSeriesPostfix}`, JSON.stringify(hiddenSeries))\n }\n\n private restoreLocalStorage(config: IChartConfig): IChartConfig {\n if(!config.name) return config;\n\n const hiddenSeries = localStorage.getItem(`${config.name}_${ChartService._hiddenSeriesPostfix}`);\n if (hiddenSeries) {\n const json = JSON.parse(hiddenSeries) as Array<string | number>;\n config.series = config.series.map((serie, index) => {\n serie.visible = !json.includes(serie.id);\n\n const currentSerieIndex = config.series.findIndex((_) => _.id === serie.id);\n\n if (currentSerieIndex !== -1) {\n const seriesLinkCount = config.series.filter((_) => _.yAxisIndex === config.series[currentSerieIndex].yAxisIndex && _.visible === true).length\n config.yAxis[config.series[currentSerieIndex].yAxisIndex].visible = seriesLinkCount !== 0;\n }\n\n\n return serie;\n });\n\n\n return config\n }\n\n return config\n }\n\n private setDefaults(data: [IChartConfig, string]): IChartConfig {\n\n let [config, id] = data;\n\n const defaultConfig = (defaultConfig) => {\n return (source) => {\n return Object.assign({}, defaultConfig, source);\n };\n };\n\n config = Object.assign({}, defaultChartConfig(), config);\n config.id = id;\n\n config.xAxis = config.xAxis.map(defaultConfig(defaultAxisConfig));\n config.yAxis = config.yAxis.map(defaultConfig(defaultAxisConfig));\n config.series = config.series.map(defaultConfig(defaultSeriesConfig()));\n\n config.series = config.series.map((_, index) => {\n return {\n ..._,\n data: _.data ?? [],\n id: _.id ?? index,\n };\n });\n\n const oppositeYCount = config.yAxis?.filter((_) => _.opposite);\n const oppositeXCount = config.xAxis?.filter((_) => _.opposite);\n\n const nonOppositeYCount = config.yAxis?.filter((_) => !_.opposite);\n const nonOppositeXCount = config.xAxis?.filter((_) => !_.opposite);\n\n if (nonOppositeXCount?.length > 1) {\n config.bounds.bottom = 0;\n }\n\n if (oppositeXCount?.length > 1) {\n config.bounds.top = 0;\n }\n\n if (nonOppositeYCount?.length > 1) {\n config.bounds.left = 0;\n }\n\n if (oppositeYCount?.length > 1) {\n config.bounds.right = 0;\n }\n\n config.tooltip = Object.assign(\n {},\n defaultChartConfig().tooltip,\n config.tooltip\n );\n\n config.zoom = Object.assign(\n {},\n defaultChartConfig().zoom,\n config.zoom\n );\n\n config.zoom.syncChannel = config.zoom?.syncChannel ?? id;\n\n return config;\n }\n\n private setPreparationData(config: IChartConfig): IChartConfig {\n if (config.inverted) {\n\n\n const xAxes = [...config.xAxis];\n const yAxes = [...config.yAxis];\n\n config.xAxis = yAxes;\n config.yAxis = xAxes;\n\n config.series = config.series?.map((serie) => {\n const x = serie.xAxisIndex;\n const y = serie.yAxisIndex;\n serie.xAxisIndex = y;\n serie.yAxisIndex = x;\n return {\n ...serie,\n clipPointsDirection: ClipPointsDirection.y,\n data: serie?.data?.map((point) => {\n return {\n ...point,\n x: point?.y,\n y: point?.x,\n x1: point?.y1,\n y1: point?.x1,\n };\n }),\n };\n });\n }\n\n if (config?.brush?.enable) {\n config.yAxis = config.yAxis.map((_) => ({..._, zoom: false}));\n config.xAxis = config.xAxis.map((_) => ({..._, zoom: false}));\n }\n\n return config;\n }\n}\n","export enum AxisOrientation {\n x,\n y\n}\n","import {Injectable} from '@angular/core';\nimport {BehaviorSubject, Observable, shareReplay,} from 'rxjs';\nimport {Axis} from '../core/axis/axis';\nimport {IChartEvent} from '../model/i-chart-event';\nimport {ZoomBehavior, zoomIdentity} from \"d3\";\nimport {AxisOrientation} from \"../model/enum/axis-orientation\";\nimport {ScaleType} from \"../model/enum/scale-type\";\nimport objectHash from 'object-hash';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ZoomService {\n broadcastSubscription = [];\n zoomed: Observable<IChartEvent<Axis>>;\n axisHashMap = new Map<string, Axis>();\n scaleHashMap = new Map<string, any>();\n elementHashMap = new Map<string, any>();\n zoomHashMap = new Map<string, ZoomBehavior<any, any>>();\n\n private zoomed$ = new BehaviorSubject<IChartEvent<Axis>>({});\n private broadcastChannel: string;\n\n constructor() {\n this.zoomed = this.zoomed$.asObservable().pipe(shareReplay({\n bufferSize: 1,\n refCount: true\n }));\n }\n\n fireZoom(zoom: IChartEvent<Axis>) {\n this.zoomed$.next(zoom);\n }\n\n setBroadcastChannel(channel: string) {\n this.broadcastChannel = channel;\n }\n\n setZoom(from: number, to: number, axisIndex = 0, axisOrientation = AxisOrientation.x) {\n\n const hash = objectHash.sha1({index: axisIndex, orientation: axisOrientation});\n\n if (!this.zoomHashMap.has(hash)) {\n return;\n }\n\n const currentAxis = this.axisHashMap.get(hash);\n const currentScale = this.scaleHashMap.get(hash);\n const currentElement = this.elementHashMap.get(hash);\n const currentZoom = this.zoomHashMap.get(hash);\n\n currentScale.domain(currentAxis.originDomain)\n\n if (axisOrientation === AxisOrientation.x) {\n if (currentAxis.options.scaleType.type === ScaleType.log) {\n currentScale.domain(currentAxis.options.inverted ? [...currentAxis.originDomain].reverse() : currentAxis.originDomain)\n }\n }\n\n if (axisOrientation === AxisOrientation.y) {\n if (currentAxis.options.scaleType.type === ScaleType.log) {\n currentScale.domain(currentAxis.options.inverted ? currentAxis.originDomain : [...currentAxis.originDomain].reverse())\n }\n }\n\n const delta = Math.abs(currentScale(to) - currentScale(from));\n const scale = currentScale.range()[1] / delta;\n\n let transform = zoomIdentity.scale(scale);\n\n if (currentAxis.orientation === AxisOrientation.x) {\n if (currentAxis.options.scaleType.type === ScaleType.log) {\n currentScale.domain(currentAxis.options.inverted ? [...currentScale.domain()].reverse() : currentScale.domain())\n }\n transform = transform.translate(-currentScale(from), 0);\n }\n\n if (currentAxis.orientation === AxisOrientation.y) {\n if (currentAxis.options.scaleType.type === ScaleType.log) {\n currentScale.domain(currentAxis.options.inverted ? currentScale.domain() : [...currentScale.domain()].reverse())\n }\n transform = transform.translate(0, -currentScale(from));\n }\n currentElement.transition().call(currentZoom.transform, transform, null, new MouseEvent('setZoom'))\n }\n\n resetZoom(axisIndex = 0, axisOrientation = AxisOrientation.x) {\n const hash = objectHash.sha1({index: axisIndex, orientation: axisOrientation});\n if (!this.zoomHashMap.has(hash)) {\n return;\n }\n const currentElement = this.elementHashMap.get(hash);\n const currentZoom = this.zoomHashMap.get(hash);\n currentElement.transition().call(currentZoom.transform, zoomIdentity, null, new MouseEvent('resetZoom'));\n }\n\n}\n","export const getTextWidth = (\n inputText?: string | number | null,\n backupRatio = 0.5,\n fontSize = 10\n): number => {\n let text = inputText ?? '';\n text = text.toString();\n\n return fontSize * backupRatio * text.length;\n};\n","import * as d3 from 'd3';\n\nexport function generateTicks(extremes: number[]) {\n const [min, max] = extremes;\n\n const tickCount = 10;\n const tickStep = (max - min) / tickCount;\n\n const ticks = d3\n .range(min, max + tickStep, tickStep)\n .filter((step) => step <= max);\n\n return ticks;\n}\n","import { Axis } from '../axis';\nimport { AxisOrientation } from '../../../model/enum/axis-orientation';\nimport { maxIndex } from 'd3-array';\nimport { getTextWidth } from '../../utils/public-api';\nimport { IBuilder } from '../../../model/i-builder';\n\nexport class AxisSizeBuilder implements IBuilder<Axis, number> {\n private titlePadding = 11;\n private basePadding = 16;\n private backupRatio = 0.58;\n\n build(settings: Axis): number {\n let finalPadding = this.basePadding;\n\n if (settings.orientation === AxisOrientation.y) {\n const formatter = settings.options.tickFormat || settings.defaultFormatter();\n\n finalPadding += settings.options.title ? this.titlePadding : 0;\n\n const scale = settings.defaultScale();\n const ticks = scale().domain(settings.extremes).ticks(20);\n\n const maxElementLengthIndex = maxIndex(\n ticks,\n (_) => formatter(_).length\n );\n\n\n finalPadding += getTextWidth(\n formatter(ticks[maxElementLengthIndex]),\n this.backupRatio\n );\n }\n\n if (settings.orientation === AxisOrientation.x) {\n finalPadding += finalPadding + 20;\n }\n\n return finalPadding;\n }\n}\n","import {IBuilder} from '../../../model/i-builder';\nimport {Axis} from '../axis';\nimport {BasePoint} from '../../../model/base-point';\nimport {AxisOrientation} from '../../../model/enum/axis-orientation';\n\nimport * as d3 from 'd3';\n\nexport class ExtremesBuilder implements IBuilder<Axis, [number, number]> {\n private extentAccessorMap = new Map<AxisOrientation,\n (point: BasePoint) => number>()\n .set(AxisOrientation.x, (_) => _.x)\n .set(AxisOrientation.y, (_) => _.y);\n\n private extremes: [number, number] = [0, 0];\n\n build(settings: Axis): [number, number] {\n const options = settings.options;\n\n const hasMin = options?.min != null;\n const hasMax = options?.max != null;\n\n if (!hasMin || !hasMax) {\n const linkedSeries = settings.linkedSeries();\n const data = linkedSeries.reduce((acc: BasePoint[], current) => {\n return acc.concat(current.data);\n }, []);\n const accessor = this.extentAccessorMap.get(settings.orientation);\n this.extremes = data.length > 1 ? d3.extent(data, accessor) : [0, 0];\n }\n\n if (hasMin) {\n this.extremes[0] = options?.min;\n }\n\n if (hasMax) {\n this.extremes[1] = options?.max;\n }\n return this.extremes;\n }\n}\n","import { IChartConfig } from '../../model/i-chart-config';\nimport { AxisOrientation } from '../../model/enum/axis-orientation';\nimport { Series } from '../../model/series';\nimport { BasePoint } from '../../model/base-point';\nimport * as d3 from 'd3';\nimport { AxisOptions } from '../../model/axis-options';\nimport { AxisSizeBuilder, ExtremesBuilder } from './builders/public-api';\nimport { generateTicks } from '../utils/public-api';\nimport { ScaleType } from '../../model/enum/scale-type';\n\nexport class Axis {\n private chartConfig: IChartConfig;\n private _orientation: AxisOrientation;\n private _index: number;\n private _extremes: [number, number] = [0, 0];\n private _selfSize: number;\n private _ticksValues: number[];\n private _options: AxisOptions;\n private _originDomain: Array<any> = [];\n\n private _scale: any;\n\n private defaultFormatters = new Map<ScaleType, any>()\n .set(ScaleType.linear, d3.format(',.5~r'))\n .set(ScaleType.time, d3.timeFormat('%d.%m.%Y'))\n .set(ScaleType.log, d3.format('~s'))\n .set(ScaleType.symlog, d3.format('~s'))\n .set(ScaleType.pow, d3.format('~s'))\n .set(ScaleType.sqrt, d3.format('~s'));\n\n private defaultScales = new Map<ScaleType, any>()\n .set(ScaleType.linear, d3.scaleLinear)\n .set(ScaleType.log, d3.scaleLog)\n .set(ScaleType.symlog, d3.scaleSymlog)\n .set(ScaleType.pow, d3.scalePow)\n .set(ScaleType.sqrt, d3.scaleSqrt)\n .set(ScaleType.time, d3.scaleTime);\n\n constructor(config: IChartConfig) {\n this.chartConfig = config;\n }\n\n /**\n * Factory for creating x,y axes\n * @param {AxisOrientation} orientation\n * Axis type\n * @param {IChartConfig} config\n * Chart config\n * @param {number} index\n * New generated axis\n */\n public static createAxis(\n orientation: AxisOrientation,\n config: IChartConfig,\n index: number\n ): Axis {\n const axis = new Axis(config);\n axis.setLocate(orientation);\n axis.setIndex(index);\n\n axis.setOptions();\n axis.setExtremes();\n axis.setTicksValues();\n axis.setSelfSize();\n\n return axis;\n }\n\n /**\n *\n * @param {orientation} orientation\n * Set locate axis x or y\n */\n private setLocate(orientation: AxisOrientation): void {\n this._orientation = orientation;\n }\n\n /**\n *\n * @param {number} index\n * Index axis\n */\n private setIndex(index: number): void {\n this._index = index;\n }\n\n /**\n * @return {Array<Series<BasePoint>>}\n * Linked series\n */\n public linkedSeries(): Array<Series<BasePoint>> {\n const linkedFilter = (serie: Series<BasePoint>) =>\n serie[\n this._orientation === AxisOrientation.y ? 'yAxisIndex' : 'xAxisIndex'\n ] === this._index;\n\n return this.chartConfig?.series.filter(linkedFilter);\n }\n\n public setExtremes(): void {\n const builder = new ExtremesBuilder();\n this._extremes = builder.build(this);\n }\n\n public setOriginDomain(domain: Array<any>) {\n this._originDomain = domain;\n }\n\n public setScale(scale: any) {\n this._scale = scale;\n }\n\n private setSelfSize(): void {\n this._selfSize = new AxisSizeBuilder().build(this);\n }\n\n private setTicksValues(): void {\n this._ticksValues = generateTicks(this._extremes);\n }\n\n private setOptions(): void {\n const options =\n this.orientation === AxisOrientation.x\n ? this.chartConfig.xAxis[this.index]\n : this.chartConfig.yAxis[this.index];\n\n this._options = options;\n }\n\n get scale(): any {\n return this._scale;\n }\n\n get extremes(): Array<number> {\n return this._extremes;\n }\n\n get orientation(): AxisOrientation {\n return this._orientation;\n }\n\n get selfSize(): number {\n return this._selfSize;\n }\n\n get tickValues(): number[] {\n return this._ticksValues;\n }\n\n get index(): number {\n return this._index;\n }\n\n get options(): AxisOptions {\n return this._options;\n }\n\n get originDomain(): Array<any> {\n return this._originDomain\n }\n\n public defaultFormatter() {\n return this.defaultFormatters.get(this.options.scaleType.type);\n }\n\n public defaultScale() {\n return this.defaultScales.get(this.options.scaleType.type);\n }\n\n\n}\n","import {Injectable} from '@angular/core';\nimport * as d3 from 'd3';\nimport {D3ZoomEvent, ZoomTransform} from 'd3';\nimport {Axis} from '../core/axis/axis';\nimport {AxisOrientation} from '../model/enum/axis-orientation';\nimport {IChartConfig} from '../model/i-chart-config';\nimport {ChartService} from './chart.service';\nimport {combineLatest, map, Observable, shareReplay, withLatestFrom,} from 'rxjs';\nimport {IChartEvent} from '../model/i-chart-event';\nimport {ZoomService} from './zoom.service';\nimport {ScaleType} from '../model/enum/scale-type';\nimport {IScalesMap} from \"../model/i-scales-map\";\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ScaleService {\n public scales: Observable<IScalesMap>\n\n private transformCacheX = new Map<number, ZoomTransform>();\n private transformCacheY = new Map<number, ZoomTransform>();\n\n private scaleMapping = new Map<ScaleType, any>()\n .set(ScaleType.linear, d3.scaleLinear)\n .set(ScaleType.time, d3.scaleTime)\n .set(ScaleType.category, d3.scaleOrdinal)\n .set(ScaleType.log, d3.scaleLog)\n .set(ScaleType.symlog, d3.scaleSymlog)\n .set(ScaleType.pow, d3.scalePow)\n .set(ScaleType.sqrt, d3.scaleSqrt);\n\n constructor(\n private chartService: ChartService,\n private zoomService: ZoomService\n ) {\n\n this.scales = combineLatest([\n this.chartService.size,\n this.chartService.config,\n this.zoomService.zoomed,\n ]).pipe(\n map((data: [DOMRectReadOnly, IChartConfig, IChartEvent<Axis>]) => {\n\n const [size, config, zoom] = data;\n\n const xAxisMap = new Map<number, Axis>();\n const yAxisMap = new Map<number, Axis>();\n\n config.yAxis.map((_, index) => {\n yAxisMap.set(index, Axis.createAxis(AxisOrientation.y, config, index));\n });\n\n\n config.xAxis.map((_, index) => {\n xAxisMap.set(index, Axis.createAxis(AxisOrientation.x, config, index));\n });\n\n // Generate x scales\n const left = Array.from(yAxisMap.values())\n .filter((_) => _.options?.visible && _.options?.opposite)\n .reduce((acc, cur) => acc + cur.selfSize, 0);\n\n const right = Array.from(yAxisMap.values())\n .filter((_) => _.options?.visible && _.options?.opposite !== true)\n .reduce((acc, cur) => acc + cur.selfSize, 0);\n\n const finalWidth = (size.width || 0) - left - right;\n\n xAxisMap.forEach((axis) => {\n let domain = axis.extremes;\n\n if (axis?.options.inverted) {\n domain = [...axis.extremes].reverse();\n }\n\n let scale = this.scaleMapping\n .get(axis.options.scaleType.type)()\n .domain(domain)\n .range([0, finalWidth - config.bounds.right]);\n\n if (axis.options.niceTicks) {\n scale.nice();\n }\n\n if (axis.options.scaleType.type === ScaleType.log) {\n scale.base(axis.options.scaleType.base)\n }\n\n axis.setScale(scale);\n axis.setOriginDomain(scale.domain());\n\n\n const hasCache = this.transformCacheX.has(axis.index);\n const shouldRestore =\n zoom?.target?.orientation !== AxisOrientation.x ||\n zoom.target?.index !== axis.index;\n\n if (hasCache && shouldRestore) {\n const restoredTransform = this.transformCacheX.get(axis.index);\n axis.setScale(restoredTransform.rescaleX(scale));\n }\n });\n\n if (zoom) {\n const event = zoom.event as D3ZoomEvent<any, any>;\n\n if (zoom.target?.orientation === AxisOrientation.x) {\n\n if (xAxisMap.has(zoom.target.index)) {\n const x = xAxisMap.get(zoom.target.index);\n const rescaled = event.transform.rescaleX(x.scale);\n x.setScale(rescaled);\n\n const axis = xAxisMap.get(zoom.target.index);\n this.transformCacheX.set(axis.index, event.transform);\n }\n }\n }\n\n\n // Generate y axis\n\n const top = Array.from(xAxisMap.values())\n .filter((_) => _.options?.visible && _.options?.opposite)\n .reduce((acc, cur) => acc + cur.selfSize, 0);\n\n const bottom = Array.from(xAxisMap.values())\n .filter((_) => _.options?.visible && _.options?.opposite !== true)\n .reduce((acc, cur) => acc + cur.selfSize, 0);\n\n const finalHeight =\n (size.height || 0) -\n top -\n bottom -\n config?.bounds?.top -\n config.bounds?.bottom;\n\n yAxisMap.forEach((axis) => {\n let domain = axis.extremes;\n\n if (axis.orientation === AxisOrientation.y) {\n domain = [...axis.extremes].reverse();\n }\n\n if (axis?.options.inverted) {\n domain = domain.reverse();\n }\n\n const scale = this.scaleMapping\n .get(axis.options.scaleType.type)()\n .domain(domain)\n .range([config.bounds.top, finalHeight]);\n\n if (axis.options.niceTicks) {\n scale.nice();\n }\n\n if (axis.options.scaleType.type === ScaleType.log) {\n scale.base(axis.options.scaleType.base)\n }\n\n axis.setScale(scale);\n axis.setOriginDomain(scale.domain());\n\n const hasCache = this.transformCacheY.has(axis.index);\n\n const shouldRestore =\n zoom?.target?.orientation !== AxisOrientation.y ||\n zoom.target?.index !== axis.index;\n\n if (hasCache && shouldRestore) {\n const restoredTransform = this.transformCacheY.get(axis.index);\n axis.setScale(restoredTransform.rescaleY(scale));\n }\n });\n\n if (zoom) {\n const event = zoom.event as D3ZoomEvent<any, any>;\n\n if (zoom.target?.orientation === AxisOrientation.y) {\n\n if (yAxisMap.has(zoom.target.index)) {\n const y = yAxisMap.get(zoom.target.index);\n\n const rescaled = event.transform.rescaleY(y.scale);\n y.setScale(rescaled);\n\n const axis = yAxisMap.get(zoom.target.index);\n this.transformCacheY.set(axis.index, event.transform);\n }\n }\n }\n\n return {\n x: xAxisMap,\n y: yAxisMap\n }\n }),\n shareReplay({\n bufferSize: 1,\n refCount: true,\n })\n )\n }\n}\n","export enum BrushType {\n x,\n y,\n xy,\n}\n","import {D3BrushEvent, D3ZoomEvent} from 'd3';\nimport {Axis} from '../core/axis/axis';\nimport {BrushType} from './enum/brush-type';\n\n\nexport type TransformStyle = {\n transition?: boolean;\n}\n\nexport class ZoomMessage {\n event?: D3ZoomEvent<any, any> | any;\n axis?: Axis;\n domain?: number[];\n chartId: string;\n style?: TransformStyle;\n\n constructor(options?: {\n event: D3ZoomEvent<any, any> | any;\n axis?: Axis;\n domain?: number[]\n chartId: string;\n style?: TransformStyle;\n }) {\n this.event = options?.event;\n this.axis = options?.axis;\n this.domain = options.domain;\n this.chartId = options?.chartId;\n this.style = options?.style;\n }\n}\n\nexport class BrushMessage {\n event: D3BrushEvent<any> | null;\n brushType: BrushType;\n selection: number[];\n brushScale?: any;\n style?: TransformStyle\n\n constructor(options?: {\n event: D3BrushEvent<any> | null;\n brushType: BrushType;\n selection: number[];\n brushScale?: any;\n style?: TransformStyle\n }) {\n this.event = options?.event;\n this.brushType = options?.brushType;\n this.selection = options?.selection;\n this.brushScale = options?.brushScale;\n this.style = options?.style;\n }\n}\n\nexport interface IBroadcastMessage<T> {\n channel: string;\n message: T;\n}\n","import { Injectable } from '@angular/core';\nimport {BrushMessage, IBroadcastMessage, ZoomMessage} from '../model/i-broadcast-message';\nimport {filter, map, Observable, ReplaySubject, shareReplay, Subject} from 'rxjs';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class BroadcastService {\n private zoomEmitter: Subject<IBroadcastMessage<ZoomMessage>>;\n private brushEmitter: ReplaySubject<IBroadcastMessage<BrushMessage>>;\n\n constructor() {\n this.zoomEmitter = new Subject<IBroadcastMessage<ZoomMessage>>();\n this.brushEmitter = new ReplaySubject<IBroadcastMessage<BrushMessage>>(1)\n }\n\n broadcastZoom(value: IBroadcastMessage<ZoomMessage>) {\n this.zoomEmitter.next(value);\n }\n\n broadcastBrush(value: IBroadcastMessage<BrushMessage>) {\n this.brushEmitter.next(value);\n }\n\n subscribeToZoom(channel: string): Observable<IBroadcastMessage<ZoomMessage>> {\n return this.zoomEmitter.asObservable().pipe(\n filter((msg) => channel && msg.channel === channel),\n shareReplay({\n bufferSize: 1,\n refCount: true\n })\n );\n }\n\n subscribeToBrush(channel: string): Observable<IBroadcastMessage<BrushMessage>> {\n return this.brushEmitter.asObservable().pipe(\n filter((msg) => channel && msg.channel === channel),\n shareReplay({\n bufferSize: 1,\n refCount: true\n })\n );\n }\n}\n","import { ElementRef, Injectable, NgZone } from '@angular/core';\nimport { BrushType } from '../model/enum/brush-type';\nimport * as d3 from 'd3';\nimport { animationFrameScheduler, filter, Subscription, tap } from 'rxjs';\nimport { BroadcastService } from './broadcast.service';\nimport { IChartConfig } from '../model/i-chart-config';\nimport {\n BrushMessage,\n IBroadcastMessage,\n ZoomMessage,\n} from '../model/i-broadcast-message';\nimport {debounceTime, throttleTime} from 'rxjs/operators';\nimport { AxisOrientation } from '../model/enum/axis-orientation';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class BrushService {\n broadcastSubscribtion: Subscription;\n\n private brush: d3.BrushBehavior<any>;\n\n private brushMap = new Map<BrushType, d3.BrushBehavior<any>>()\n .set(BrushType.x, d3.brushX())\n .set(BrushType.y, d3.brushY());\n\n private selection: number[];\n\n constructor(\n private broadcastService: BroadcastService,\n private zone: NgZone\n ) {}\n\n applyBrush(svgElement: ElementRef, config: IChartConfig, brushScale: any) {\n this.broadcastSubscribtion?.unsubscribe();\n this.brush?.on('start brush end', null);\n if (config.brush?.enable) {\n this.brush = this.brushMap.get(config?.brush?.type ?? BrushType.x);\n\n const container = d3.select(svgElement.nativeElement);\n\n this.brush.on('start brush end', (_: d3.D3BrushEvent<any>) => {\n if (_.sourceEvent) {\n if (!_.selection) return;\n\n const [from, to] = _.selection as number[];\n\n if (to - from === 0) {\n const selection: number[] =\n this.selection?.map(brushScale) ??\n [config.brush?.from, config.brush?.to].map(brushScale);\n const halfBrushHeight = (selection[1] - selection[0]) / 2;\n\n const invertedSelection: number[] = [\n from - halfBrushHeight,\n to + halfBrushHeight,\n ].map(brushScale.invert);\n\n if (\n invertedSelection[1] - invertedSelection[0] >\n config.brush?.max\n ) {\n container.call(\n this.brush.move,\n [\n Math.floor(invertedSelection[0]),\n Math.floor(invertedSelection[0] + config.brush?.max),\n ].map(brushScale)\n );\n return;\n }\n\n if (\n invertedSelection[1] - invertedSelection[0] <\n config.brush?.min\n ) {\n container.call(\n this.brush.move,\n [\n Math.floor(invertedSelection[0]),\n Math.ceil(invertedSelection[0] + config.brush?.min),\n ].map(brushScale)\n );\n return;\n }\n\n container.call(this.brush.move, [\n from - halfBrushHeight,\n to + halfBrushHeight,\n ]);\n return;\n }\n\n if (\n brushScale.invert(to) - brushScale.invert(from) >\n config.brush?.max\n ) {\n container.call(\n this.brush.move,\n this.selection\n ? [\n this.selection[0],\n this.selection[0] + config.brush?.max,\n ].map(brushScale)\n : [config.brush?.from, config.brush?.to].map(brushScale)\n );\n return;\n }\n\n if (\n brushScale.invert(to) - brushScale.invert(from) <\n config.brush?.min\n ) {\n container.call(\n this.brush.move,\n this.selection\n ? [\n this.selection[0],\n this.selection[0] + config.brush?.min,\n ].map(brushScale)\n : [config.brush?.from, config.brush?.to].map(brushScale)\n );\n return;\n }\n\n if (_.sourceEvent instanceof MouseEvent) {\n this.selection = _.selection.map(brushScale.invert);\n }\n\n const brushMessage = new BrushMessage({\n event: _,\n selection: [brushScale.invert(from), brushScale.invert(to)],\n brushType: config?.brush?.type ?? BrushType.x,\n brushScale,\n });\n\n this.broadcastService.broadcastBrush({\n channel: config?.zoom?.syncChannel,\n message: brushMessage,\n });\n }\n });\n\n this.zone.runOutsideAngular(() => {\n setTimeout(() => {\n container.call(this.brush);\n\n let domain = brushScale.domain();\n\n if (config?.brush?.from) {\n domain[0] = config.brush.from;\n }\n\n if (config?.brush?.to) {\n domain[1] = config.brush.to;\n }\n\n container.call(\n this.brush.move,\n this.selection\n ? this.selection.map(brushScale)\n : domain.map(brushScale),\n {}\n );\n }, 0);\n });\n\n this.broadcastSubscribtion = this.broadcastService\n .subscribeToZoom(config?.zoom?.syncChannel)\n .pipe(\n filter((m: IBroadcastMessage<ZoomMessage>) => {\n return (\n m.message.event.sourceEvent instanceof MouseEvent ||\n m.message.event.sourceEvent instanceof WheelEvent ||\n (window.TouchEvent &&\n m.message.event.sourceEvent instanceof TouchEvent)\n );\n }),\n tap((m: IBroadcastMessage<ZoomMessage>) => {\n const {\n message: { domain },\n } = m;\n\n if (\n (m.message?.axis.index === 0 &&\n m.message?.axis.orientation === AxisOrientation.y &&\n config.brush?.type === BrushType.y) ||\n (m.message?.axis.orientation === AxisOrientation.x &&\n config.brush?.type === BrushType.x)\n ) {\n container.call(this.brush.move, [\n brushScale(domain[0]),\n brushScale(domain[1]),\n ]);\n\n this.selection = domain;\n }\n }),\n debounceTime(30),\n tap((m: IBroadcastMessage<ZoomMessage>) => {\n const {\n message: { domain },\n } = m;\n\n if (m.message.event.type === 'zoom') {\n const brushMessage = new BrushMessage({\n event: null,\n selection: domain,\n brushType: config?.brush?.type ?? BrushType.x,\n brushScale,\n });\n\n this.broadcastService.broadcastBrush({\n channel: config?.zoom?.syncChannel,\n message: brushMessage,\n });\n }\n })\n )\n .subscribe();\n }\n }\n\n clearPreviousSelection() {\n this.selection = null;\n }\n}\n","import {\n ChangeDetectorRef,\n Component,\n ElementRef,\n Input,\n OnInit,\n} from '@angular/core';\nimport {ChartService} from '../service/chart.service';\nimport {Series} from '../model/series';\nimport {BasePoint} from '../model/base-point';\nimport {ScaleService} from '../service/scale.service';\nimport {ZoomService} from '../service/zoom.service';\nimport {IChartConfig} from '../model/i-chart-config';\n\n@Component({\n template: '',\n})\nexport class SeriesBaseComponent<T extends BasePoint> implements OnInit {\n @Input()\n set config(config: IChartConfig) {\n this._config = config;\n }\n\n get config() {\n return this._config;\n }\n\n @Input()\n set series(series: Series<T>) {\n this._series = series;\n }\n\n get series() {\n return this._series;\n }\n\n protected _series: Series<T>;\n protected _config: IChartConfig;\n\n constructor(\n protected svc: ChartService,\n protected cdr: ChangeDetectorRef,\n protected scaleService: ScaleService,\n protected zoomService: ZoomService,\n protected element: ElementRef\n ) {\n }\n\n ngOnInit(): void {\n }\n}\n","export enum DragPointType {\n x,\n y,\n xy,\n}\n","import {BasePoint} from '../../model/base-point';\nimport {SeriesBaseComponent} from '../../base/series-base.component';\nimport {AfterViewInit, ChangeDetectorRef, Component, ElementRef, OnDestroy, OnInit} from '@angular/core';\nimport {combineLatest, map, Observable, tap, withLatestFrom} from 'rxjs';\nimport {ChartService} from '../../service/chart.service';\nimport {ScaleService} from '../../service/scale.service';\nimport {ZoomService} from '../../service/zoom.service';\nimport * as d3 from 'd3';\nimport {DragPointType} from '../../model/enum/drag-point-type';\nimport {TooltipTracking} from '../../model/enum/tooltip-tracking';\nimport {ClipPointsDirection} from '../../model/enum/clip-points-direction';\nimport {Axis} from \"../../core/axis/axis\";\nimport {IScalesMap} from \"../../model/i-scales-map\";\n\n@Component({\n template: '',\n})\nexport class LinearSeriesBase<T extends BasePoint>\n extends SeriesBaseComponent<T>\n implements OnInit, AfterViewInit, OnDestroy {\n\n public defaultClipPointsMapping: Map<ClipPointsDirection, (min: number, max: number) => (point: BasePoint, idx: number, arr: Array<BasePoint>) => {}> = new Map();\n\n transform: Observable<Pick<BasePoint, 'x' | 'y'>>;\n display: Observable<number>;\n path: Observable<string>;\n svgElement: SVGGeometryElement;\n x: any;\n y: any;\n markers: any;\n\n constructor(\n protected override svc: ChartService,\n protected override cdr: ChangeDetectorRef,\n protected override scaleService: ScaleService,\n protected override zoomService: ZoomService,\n protected override element: ElementRef\n ) {\n super(svc, cdr, scaleService, zoomService, element);\n }\n\n override ngOnInit(): void {\n const filterX = (min: number, max: number) => (\n point: BasePoint,\n idx: number,\n arr: Array<BasePoint>\n ) => {\n const bigger = min > max ? min : max;\n const smaller = min > max ? max : min;\n return (point.x <= bigger ||\n point.x1 <= bigger ||\n (arr[idx - 1] && arr[idx - 1].x <= bigger) ||\n (arr[idx - 1] && arr[idx - 1].x1 <= bigger)) &&\n (point.x >= smaller ||\n point.x1 >= smaller ||\n (arr[idx + 1] && arr[idx + 1].x >= smaller) ||\n (arr[idx + 1] && arr[idx + 1].x1 >= smaller))\n ;\n };\n\n const filterY = (min: number, max: number) => (\n point: BasePoint,\n idx: number,\n arr: Array<BasePoint>\n ) => {\n const bigger = min > max ? min : max;\n const smaller = min > max ? max : min;\n return (point.y <= bigger ||\n point.y1 <= bigger ||\n (arr[idx - 1] && arr[idx - 1].y <= bigger) ||\n (arr[idx - 1] && arr[idx - 1].y1 <= bigger)) &&\n (point.y >= smaller ||\n point.y1 >= smaller ||\n (arr[idx + 1] && arr[idx + 1].y >= smaller) ||\n (arr[idx + 1] && arr[idx + 1].y1 >= smaller));\n };\n\n this.defaultClipPointsMapping.set(ClipPointsDirection.x, filterX);\n this.defaultClipPointsMapping.set(ClipPointsDirection.y, filterY);\n\n this.transform = this.svc.pointerMove.pipe(\n withLatestFrom(this.scaleService.scales),\n map((data: [PointerEvent, IScalesMap]) => {\n const [event, {x, y}] = data;\n\n return this.getTransform(event, x.get(this.series.xAxisIndex).scale, y.get(this.series.yAxisIndex).scale);\n }),\n tap(() => setTimeout(() => this.cdr.detectChanges()))\n );\n\n this.path = this.scaleService.scales.pipe(\n map((data) => {\n const {x, y} = data;\n this.x = x.get(this.series.xAxisIndex).scale;\n this.y = y.get(this.series.yAxisIndex).scale;\n\n const filter = this.defaultClipPointsMapping.get(this.series.clipPointsDirection);\n\n const line = d3\n .line<BasePoint>()\n .defined(\n (point) =>\n point.x !== null &&\n point.y !== null &&\n point.x !== undefined &&\n point.y !== undefined &&\n !isNaN(point.x) &&\n !isNaN(point.y)\n )\n .x((point) => this.x(point.x))\n .y((point) => this.y(point.y));\n\n let filteredData = this.series.data;\n\n if (this.series.clipPointsDirection === ClipPointsDirection.x) {\n let [min, max] = this.x.domain();\n\n min = min instanceof Date ? min.getTime() : min;\n max = max instanceof Date ? max.getTime() : max;\n\n filteredData = filteredData?.filter(filter(min, max));\n }\n\n\n if (this.series.clipPointsDirection === ClipPointsDirection.y) {\n let [min, max] = this.y.domain();\n\n min = min instanceof Date ? min.getTime() : min;\n max = max instanceof Date ? max.getTime() : max;\n\n filteredData = filteredData?.filter(filter(min, max));\n }\n\n return line(filteredData);\n })\n );\n }\n\n ngOnDestroy() {\n this.markers?.on('start drag end', null);\n this.svc.setTooltip({\n point: null,\n series: this.series,\n });\n }\n\n ngAfterViewInit() {\n const drag = (node, event: d3.D3DragEvent<any, any, any>, d: BasePoint) => {\n if (\n d.marker?.dragType === DragPointType.x ||\n d.marker?.dragType === DragPointType.xy\n ) {\n d.x = this.x.invert(event.x);\n }\n\n if (\n d.marker?.dragType === DragPointType.y ||\n d.marker?.dragType === DragPointType.xy\n ) {\n d.y = this.y.invert(event.y);\n }\n\n this.svc.emitPoint({\n target: {\n series: this.series,\n point: d,\n },\n event,\n });\n\n this.cdr.detectChanges();\n };\n this.markers = d3\n .drag()\n .subject(function (event, d: BasePoint) {\n const node = d3.select(this);\n return {x: node.attr('cx'), y: node.attr('cy')};\n });\n const dragMarkers =\n this.markers.on(\n 'start drag end',\n function (event: d3.D3DragEvent<any, any, any>, d: BasePoint) {\n const node = d3.select(this);\n\n drag(node, event, d);\n }\n );\n\n const draggableMarkers = this.series.data?.filter(\n (_) => _?.marker && _?.marker?.draggable\n );\n\n const element = d3\n .select(this.element.nativeElement)\n .selectAll('.draggable-marker')\n .data(draggableMarkers);\n\n element.call(dragMarkers as any);\n\n this.svgElement = d3\n .select(this.element.nativeElement)\n .select('.line')\n .node() as SVGGeometryElement;\n }\n\n getMarkers() {\n return this.series.data?.filter((_) => _?.marker);\n }\n\n getTransform(\n event: any,\n scaleX: any,\n scaleY: any\n ): Pick<BasePoint, 'x' | 'y'> {\n if (event.type === 'mouseleave') {\n return null;\n }\n const mouse = [event?.offsetX, event?.offsetY];\n\n const tooltipTracking = this.config?.tooltip?.tracking;\n const lineIntersection = (\n p0_x,\n p0_y,\n p1_x,\n p1_y,\n p2_x,\n p2_y,\n p3_x,\n p3_y\n ) => {\n const rV = {} as any;\n let s1_x, s1_y, s2_x, s2_y;\n s1_x = p1_x - p0_x;\n s1_y = p1_y - p0_y;\n s2_x = p3_x - p2_x;\n s2_y = p3_y - p2_y;\n\n let s, t;\n s =\n (-s1_y * (p0_x - p2_x) + s1_x * (p0_y - p2_y)) /\n (-s2_x * s1_y + s1_x * s2_y);\n t =\n (s2_x * (p0_y - p2_y) - s2_y * (p0_x - p2_x)) /\n (-s2_x * s1_y + s1_x * s2_y);\n\n if (s >= 0 && s <= 1 && t >= 0 && t <= 1) {\n // Collision detected\n rV.x = p0_x + t * s1_x;\n rV.y = p0_y + t * s1_y;\n }\n\n return rV;\n };\n\n if (tooltipTracking === TooltipTracking.x) {\n const bisect = d3.bisector((_: BasePoint) => _.x).right;\n const pointer = mouse[0];\n\n let x0 = scaleX.invert(pointer);\n if (x0 instanceof Date) {\n x0 = x0.getTime();\n }\n const rightId = bisect(this.series.data, x0);\n const range = scaleY.range();\n\n const intersect = lineIntersection(\n pointer,\n range[0],\n pointer,\n range[1],\n scaleX(this.series.data[rightId - 1]?.x),\n scaleY(this.series.data[rightId - 1]?.y),\n scaleX(this.series.data[rightId]?.x),\n scaleY(this.series.data[rightId]?.y)\n );\n const x = scaleX.invert(intersect.x);\n const y = scaleY.invert(intersect.y);\n if (x !== null && x !== undefined && !isNaN(x) && y !== null && y !== undefined && !isNaN(y)) {\n this.svc.setTooltip({\n point: {x: scaleX.invert(intersect.x), y: scaleY.invert(intersect.y)},\n series: this.series,\n });\n } else {\n this.svc.setTooltip({\n point: null,\n series: this.series,\n });\n }\n\n return {\n x: intersect.x,\n y: intersect.y,\n };\n }\n\n if (tooltipTracking === TooltipTracking.y) {\n const bisect = d3.bisector((_: BasePoint) => _.y).right;\n\n let y0 = scaleY.invert(mouse[1]);\n if (y0 instanceof Date) {\n y0 = y0.getTime();\n }\n const rightId = bisect(this.series.data, y0);\n const range = scaleX.range();\n\n const intersect = lineIntersection(\n range[0],\n mouse[1],\n range[1],\n mouse[1],\n scaleX(this.series.data[rightId - 1]?.x),\n scaleY(this.series.data[rightId - 1]?.y),\n scaleX(this.series.data[rightId]?.x),\n scaleY(this.series.data[rightId]?.y)\n );\n\n const x = scaleX.invert(intersect.x);\n const y = scaleY.invert(intersect.y);\n\n if (x !== null && x !== undefined && !isNaN(x) && y !== null && y !== undefined && !isNaN(y)) {\n this.svc.setTooltip({\n point: {x: scaleX.invert(intersect.x), y: scaleY.invert(intersect.y)},\n series: this.series,\n });\n } else {\n this.svc.setTooltip({\n point: null,\n series: this.series,\n });\n }\n\n return {\n x: intersect.x,\n y: intersect.y,\n };\n }\n }\n}\n","import {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef, OnDestroy,\n OnInit,\n} from '@angular/core';\nimport {ChartService} from '../../../service/chart.service';\nimport {BasePoint} from '../../../model/base-point';\nimport {ScaleService} from '../../../service/scale.service';\nimport {ZoomService} from '../../../service/zoom.service';\nimport {LinearSeriesBase} from '../linear-series-base';\n\n@Component({\n selector: 'svg:svg[teta-line-series]',\n templateUrl: './line-series.component.html',\n styleUrls: ['./line-series.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class LineSeriesComponent<T extends BasePoint>\n extends LinearSeriesBase<T>\n implements OnInit, AfterViewInit, OnDestroy {\n\n constructor(\n protected override svc: ChartService,\n protected override cdr: ChangeDetectorRef,\n protected override scaleService: ScaleService,\n protected override zoomService: ZoomService,\n protected override element: ElementRef\n ) {\n super(svc, cdr, scaleService, zoomService, element);\n }\n}\n","<svg:path\n class=\"line\"\n [attr.d]=\"path | async\"\n [attr.stroke]=\"series.color\"\n [attr.stroke-dasharray]=\"series.style?.strokeDasharray\"\n [attr.stroke-width]=\"series.style?.strokeWidth\"\n fill=\"none\">\n</svg:path>\n<ng-container *ngIf=\"transform | async as t\">\n <svg:circle\n *ngIf=\"t?.x !=null && t?.y!=null\"\n r=\"3\"\n [attr.fill]=\"series.color\"\n [attr.transform]=\"'translate('+ t.x +', '+ t.y +')'\"\n >\n </svg:circle>\n</ng-container>\n<ng-container *ngIf=\"getMarkers() as markers\">\n <svg:circle\n class=\"marker\"\n *ngFor=\"let point of markers\"\n [class.draggable-marker]=\"point?.marker?.draggable\"\n [attr.r]=\"point.marker.style?.radius ?? 5\"\n [attr.fill]=\"point.marker.style?.fill ?? 'transparent'\"\n [attr.stroke]=\"point.marker.style?.stroke ?? 'none'\"\n [attr.stroke-width]=\"point.marker.style?.strokeWidth\"\n [attr.stroke-dasharray]=\"point.marker.style?.strokeDasharray\"\n [attr.cx]=\"x(point.x)\"\n [attr.cy]=\"y(point.y)\"\n >\n </svg:circle>\n</ng-container>\n\n\n\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n OnChanges,\n OnInit,\n SimpleChanges,\n} from '@angular/core';\nimport { SeriesBaseComponent } from '../../../base/series-base.component';\nimport { BasePoint } from '../../../model/base-point';\nimport { ChartService } from '../../../service/chart.service';\nimport { ScaleService } from '../../../service/scale.service';\nimport { ZoomService } from '../../../service/zoom.service';\nimport { map, Observable } from 'rxjs';\nimport { SeriesType } from '../../../model/enum/series-type';\nimport * as d3 from 'd3';\n\n@Component({\n selector: 'svg:svg[teta-bar-series]',\n templateUrl: './bar-series.component.html',\n styleUrls: ['./bar-series.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class BarSeriesComponent<T extends BasePoint>\n extends SeriesBaseComponent<T>\n implements OnInit, OnChanges\n{\n x: Observable<any>;\n x1: Observable<any>;\n y: Observable<any>;\n\n barSeriesCount: Observable<number>;\n\n Math: any = Math;\n\n constructor(\n protected override svc: ChartService,\n protected override cdr: ChangeDetectorRef,\n protected override scaleService: ScaleService,\n protected override zoomService: ZoomService,\n protected override element: ElementRef\n ) {\n super(svc, cdr, scaleService, zoomService, element);\n }\n\n override ngOnInit(): void {\n this.barSeriesCount = this.svc.config.pipe(\n map((_) => {\n const count = _.series.filter(\n (_) =>\n _.type === SeriesType.bar && _.xAxisIndex === this.series.xAxisIndex\n );\n\n return count.length;\n })\n );\n\n this.x1 = this.scaleService.scales.pipe(\n map((_) => {\n const x = _.x.get(this.series.xAxisIndex).scale;\n const range = x.range();\n const domain = this.series.data.map((_) => _.x);\n\n return d3\n .scaleBand<number>()\n .range([0, range[1]])\n .domain(domain)\n .padding(0.1);\n })\n );\n\n this.x = this.scaleService.scales.pipe(\n map((_) => _.x.get(this.series.xAxisIndex).scale)\n );\n\n this.y = this.scaleService.scales.pipe(\n map((_) => _.y.get(this.series.yAxisIndex).scale)\n );\n }\n\n mouseenter(point: BasePoint) {\n this.svc.setTooltip({\n point: point,\n series: this.series,\n });\n }\n\n mouseleave(point: BasePoint) {\n this.svc.setTooltip({\n point: null,\n series: this.series,\n });\n }\n\n ngOnChanges(changes: SimpleChanges) {}\n}\n","<ng-container *ngIf=\"{\n x: x | async,\n x1: x1 | async,\n y: y | async,\n barSeriesCount: barSeriesCount | async\n} as data\">\n <ng-container *ngIf=\"data.barSeriesCount > 1\">\n <svg:rect\n *ngFor=\"let point of series.data\"\n (mouseenter)=\"mouseenter(point)\"\n (mouseleave)=\"mouseleave(point)\"\n [attr.x]=\"data.x(point.x) + (series.id * data.x1.bandwidth() / data.barSeriesCount)\"\n [attr.y]=\"point.y > 0 ? data.y(point.y) : data.y(0)\"\n [attr.width]=\"data.x1.bandwidth() / data.barSeriesCount\"\n [attr.height]=\"Math.abs(data.y(point.y) - data.y(0))\"\n [attr.fill]=\"series.color\"\n ></svg:rect>\n </ng-container>\n <ng-container *ngIf=\"data.barSeriesCount === 1\">\n <svg:rect\n *ngFor=\"let point of series.data\"\n (mouseenter)=\"mouseenter(point)\"\n (mouseleave)=\"mouseleave(point)\"\n [attr.x]=\"data.x(point.x)\"\n [attr.y]=\"point.y > 0 ? data.y(point.y) : data.y(0)\"\n [attr.width]=\"data.x1.bandwidth()\"\n [attr.height]=\"Math.abs(data.y(point.y) - data.y(0))\"\n [attr.fill]=\"point.color ?? series.color\"\n ></svg:rect>\n </ng-container>\n</ng-container>\n\n","import {AfterViewInit, ChangeDetectionStrategy, ChangeDetectorRef, Component, ElementRef, OnInit} from '@angular/core';\nimport {BasePoint} from '../../../model/base-point';\nimport {SeriesBaseComponent} from '../../../base/series-base.component';\nimport {map, Observable} from 'rxjs';\nimport {ChartService} from '../../../service/chart.service';\nimport {ScaleService} from '../../../service/scale.service';\nimport {ZoomService} from '../../../service/zoom.service';\n\n@Component({\n selector: 'svg:svg[teta-scatter-series]',\n templateUrl: './scatter-series.component.html',\n styleUrls: ['./scatter-series.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class ScatterSeriesComponent<T extends BasePoint>\n extends SeriesBaseComponent<T>\n implements OnInit, AfterViewInit {\n transform: Observable<Pick<BasePoint, 'x' | 'y'>>;\n display: Observable<number>;\n path: Observable<string>;\n x: Observable<any>;\n y: Observable<any>;\n\n constructor(\n protected override svc: ChartService,\n protected override cdr: ChangeDetectorRef,\n protected override scaleService: ScaleService,\n protected override zoomService: ZoomService,\n protected override element: ElementRef\n ) {\n super(svc, cdr, scaleService, zoomService, element);\n }\n\n override ngOnInit(): void {\n this.x = this.scaleService.scales.pipe(map(_ => _.x.get(this.series.xAxisIndex).scale));\n this.y = this.scaleService.scales.pipe(map(_ => _.y.get(this.series.yAxisIndex).scale));\n }\n\n ngAfterViewInit() {\n }\n\n mouseenter(point: BasePoint) {\n this.svc.setTooltip({\n point: point,\n series: this.series,\n });\n }\n\n mouseleave(point: BasePoint) {\n this.svc.setTooltip({\n point: null,\n series: this.series,\n });\n }\n}\n","<ng-container *ngIf=\"{\n y: y | async,\n x: x | async\n} as scales\">\n <svg:circle\n class=\"line\"\n *ngFor=\"let point of series.data\"\n (mouseenter)=\"mouseenter(point)\"\n (mouseleave)=\"mouseleave(point)\"\n [attr.cx]=\"scales.x(point.x)\"\n [attr.cy]=\"scales.y(point.y)\"\n [attr.r]=\"series.style?.radius ?? 1\"\n [attr.stroke]=\"point.color ?? series.color\"\n [attr.fill]=\"point.color ?? series.color\"\n [attr.stroke-width]=\"series.style?.strokeWidth\">\n </svg:circle>\n</ng-container>\n\n\n\n","import {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n OnInit,\n} from '@angular/core';\nimport {BasePoint} from '../../../model/base-point';\nimport {SeriesBaseComponent} from '../../../base/series-base.component';\nimport {filter, map, Observable} from 'rxjs';\nimport {ChartService} from '../../../service/chart.service';\nimport {ScaleService} from '../../../service/scale.service';\nimport {ZoomService} from '../../../service/zoom.service';\nimport {FillType} from '../../../model/enum/fill-type';\n\n@Component({\n selector: 'svg:svg[teta-block-series]',\n templateUrl: './block-series.component.html',\n styleUrls: ['./block-series.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class BlockSeriesComponent<T extends BasePoint>\n extends SeriesBaseComponent<T>\n implements OnInit, AfterViewInit {\n x: Observable<any>;\n y: Observable<any>;\n displayPoints: Observable<BasePoint[]>;\n fillType = FillType;\n id: string;\n Math = Math;\n\n constructor(\n protected override svc: ChartService,\n protected override cdr: ChangeDetectorRef,\n protected override scaleService: ScaleService,\n protected override zoomService: ZoomService,\n protected override element: ElementRef\n ) {\n super(svc, cdr, scaleService, zoomService, element);\n this.id = (Date.now() + Math.random()).toString(36);\n\n }\n\n override ngOnInit(): void {\n\n this.x = this.scaleService.scales.pipe(\n map((_) => _.x.get(this.series.xAxisIndex)?.scale)\n );\n this.y = this.scaleService.scales.pipe(\n map((_) => _.y.get(this.series.yAxisIndex)?.scale)\n );\n\n this.displayPoints = this.y.pipe(\n filter((y) => y),\n map((y) => {\n return this.series.data.filter((point, index, arr) => {\n const [min, max] = y.domain();\n return (point.y >= min ||\n point.y1 >= min ||\n arr[index + 1]?.y >= min ||\n arr[index + 1]?.y1 >= min) &&\n (point.y <= max ||\n point.y1 <= max ||\n arr[index - 1]?.y <= max ||\n arr[index - 1]?.y1 <= max);\n });\n })\n );\n }\n\n mouseenter(point: BasePoint) {\n this.svc.setTooltip({\n point: point,\n series: this.series,\n });\n }\n\n mouseleave(point: BasePoint) {\n this.svc.setTooltip({\n point: null,\n series: this.series,\n });\n }\n\n ngAfterViewInit() {\n }\n}\n","<ng-container *ngIf=\"{\n y: y | async,\n x: x | async,\n points: displayPoints | async\n} as data\">\n <svg:defs *ngIf=\"series?.fillType === fillType.gradient\">\n <svg:linearGradient [id]=\"'gradient-fill-' + id\" gradientUnits=\"userSpaceOnUse\"\n x1=\"0%\"\n [attr.y1]=\"config?.inverted ? '0%' : '100%'\"\n [attr.x2]=\"config?.inverted ? '100%' : '0%'\"\n y2=\"0%\">\n <svg:stop offset=\"0%\" [attr.stop-color]=\"series.color\" stop-opacity=\"0\"></svg:stop>\n <svg:stop offset=\"5%\" [attr.stop-color]=\"series.color\" stop-opacity=\"0.1\"></svg:stop>\n <svg:stop offset=\"20%\" [attr.stop-color]=\"series.color\" stop-opacity=\"0.2\"></svg:stop>\n <svg:stop offset=\"60%\" [attr.stop-color]=\"series.color\" stop-opacity=\"0.5\"></svg:stop>\n <svg:stop offset=\"100%\" [attr.stop-color]=\"series.color\" stop-opacity=\"0.9\"></svg:stop>\n </svg:linearGradient>\n </svg:defs>\n <ng-container *ngFor=\"let point of data.points\">\n <svg:g (mouseenter)=\"mouseenter(point)\"\n (mouseleave)=\"mouseleave(point)\">\n <svg:rect\n x=\"0\"\n [attr.y]=\"data.y(point.y)\"\n [attr.height]=\"Math.abs(data.y(point.y1) - data.y(point.y))\"\n [attr.fill]=\"series.fillType === fillType.gradient ? 'url(#gradient-fill-'+id+')' : point.iconId ? 'url(#pattern'+point.iconId+')' : point.color ?? series.color\"\n [attr.fill-opacity]=\"series.style?.fillOpacity\"\n width=\"100%\">\n </svg:rect>\n <svg:text *ngIf=\"point.text && data.y(point.y1) - data.y(point.y) > 8\"\n x=\"50%\"\n [attr.y]=\"(data.y(point.y1) + data.y(point.y)) / 2\"\n alignment-baseline=\"middle\"\n text-anchor=\"middle\">{{ point.text }}\n </svg:text>\n <svg:line x1=\"0\" x2=\"100%\" [attr.y1]=\"data.y(point.y)\" [attr.y2]=\"data.y(point.y)\"\n [attr.stroke]=\"point.iconId ? 'var(--color-text-10)' : point.color ?? series.color\"></svg:line>\n <svg:line x1=\"0\" x2=\"100%\" [attr.y1]=\"data.y(point.y1)\" [attr.y2]=\"data.y(point.y1)\"\n [attr.stroke]=\"point.iconId ? 'var(--color-text-10)' : point.color ?? series.color\"></svg:line>\n </svg:g>\n </ng-container>\n\n\n</ng-container>\n","import {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n OnInit,\n} from '@angular/core';\nimport {SeriesBaseComponent} from '../../../base/series-base.component';\nimport {BasePoint} from '../../../model/base-point';\nimport {ChartService} from '../../../service/chart.service';\nimport {ScaleService} from '../../../service/scale.service';\nimport {ZoomService} from '../../../service/zoom.service';\nimport {filter, map, Observable} from 'rxjs';\nimport {FillType} from '../../../model/enum/fill-type';\n\n@Component({\n selector: 'svg:svg[teta-block-area-series]',\n templateUrl: './block-area-series.component.html',\n styleUrls: ['./block-area-series.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class BlockAreaSeriesComponent<T extends BasePoint>\n extends SeriesBaseComponent<T>\n implements OnInit, AfterViewInit {\n x: Observable<any>;\n y: Observable<any>;\n displayPoints: Observable<BasePoint[]>;\n fillType = FillType;\n id: string;\n Math = Math;\n constructor(\n protected override svc: ChartService,\n protected override cdr: ChangeDetectorRef,\n protected override scaleService: ScaleService,\n protected override zoomService: ZoomService,\n protected override element: ElementRef\n ) {\n super(svc, cdr, scaleService, zoomService, element);\n this.id = (Date.now() + Math.random()).toString(36);\n }\n\n override ngOnInit(): void {\n this.x = this.scaleService.scales.pipe(\n map((_) => _.x.get(this.series.xAxisIndex)?.scale)\n );\n this.y = this.scaleService.scales.pipe(\n map((_) => _.y.get(this.series.yAxisIndex)?.scale)\n );\n\n this.displayPoints = this.y.pipe(\n filter((y) => y),\n map((y) => {\n return this.series.data.filter((point, index, arr) => {\n const [min, max] = y.domain();\n return (point.y >= min ||\n point.y1 >= min ||\n arr[index + 1]?.y >= min ||\n arr[index + 1]?.y1 >= min) &&\n (point.y <= max ||\n point.y1 <= max ||\n arr[index - 1]?.y <= max ||\n arr[index - 1]?.y1 <= max);\n });\n })\n );\n }\n\n ngAfterViewInit() {\n }\n\n mouseenter(point: BasePoint) {\n this.svc.setTooltip({\n point: point,\n series: this.series,\n });\n }\n\n mouseleave(point: BasePoint) {\n this.svc.setTooltip({\n point: null,\n series: this.series,\n });\n }\n}\n","<ng-container *ngIf=\"{\n y: y | async,\n x: x | async,\n points: displayPoints | async\n} as data\">\n <svg:defs *ngIf=\"series?.fillType === fillType.gradient\">\n <svg:linearGradient [id]=\"'gradient-fill-' + id\"\n gradientUnits=\"userSpaceOnUse\"\n x1=\"0%\"\n [attr.y1]=\"config?.inverted ? '0%' : '100%'\"\n [attr.x2]=\"config?.inverted ? '100%' : '0%'\"\n y2=\"0%\">\n <svg:stop offset=\"0%\" [attr.stop-color]=\"series.color\" stop-opacity=\"0\"></svg:stop>\n <svg:stop offset=\"5%\" [attr.stop-color]=\"series.color\" stop-opacity=\"0.1\"></svg:stop>\n <svg:stop offset=\"20%\" [attr.stop-color]=\"series.color\" stop-opacity=\"0.2\"></svg:stop>\n <svg:stop offset=\"60%\" [attr.stop-color]=\"series.color\" stop-opacity=\"0.5\"></svg:stop>\n <svg:stop offset=\"100%\" [attr.stop-color]=\"series.color\" stop-opacity=\"0.9\"></svg:stop>\n </svg:linearGradient>\n </svg:defs>\n <ng-container *ngFor=\"let point of data.points\">\n <svg:g (mouseenter)=\"mouseenter(point)\"\n (mouseleave)=\"mouseleave(point)\">\n <svg:rect\n *ngIf=\"!!config.inverted\"\n [attr.x]=\"data.x(0) < data.x(point.x) ? data.x(0) : data.x(point.x)\"\n [attr.y]=\"data.y(point.y)\"\n [attr.height]=\"Math.abs(data.y(point.y1) - data.y(point.y))\"\n [attr.width]=\"data.x(0) < data.x(point.x) ? data.x(point.x) - data.x(0) : data.x(0) - data.x(point.x)\"\n [attr.stroke]=\"point.iconId ? '' : point.color ?? series.color\"\n [attr.stroke-dasharray]=\"series.style?.strokeDasharray\"\n [attr.stroke-width]=\"series.style?.strokeWidth\"\n [attr.fill]=\"series.fillType === fillType.gradient ? 'url(#gradient-fill-'+id+')' : point.iconId ? 'url(#pattern'+point.iconId+')' : point.color ?? series.color\"\n [attr.fill-opacity]=\"series.style?.fillOpacity\">\n </svg:rect>\n <svg:rect\n *ngIf=\"!config.inverted\"\n [attr.x]=\"data.x(point.x)\"\n [attr.y]=\"data.y(0)\"\n [attr.height]=\"Math.abs(data.y(0) - data.y(point.y))\"\n [attr.width]=\"data.x(point.x1) - data.x(point.x)\"\n [attr.stroke]=\"point.iconId ? '' : point.color ?? series.color\"\n [attr.stroke-dasharray]=\"series.style?.strokeDasharray\"\n [attr.stroke-width]=\"series.style?.strokeWidth\"\n [attr.fill]=\"series.fillType === fillType.gradient ? 'url(#gradient-fill-'+id+')' : point.iconId ? 'url(#pattern'+point.iconId+')' : point.color ?? series.color\"\n [attr.fill-opacity]=\"series.style?.fillOpacity\">\n </svg:rect>\n <svg:text *ngIf=\"point.text\"\n x=\"50%\"\n [attr.y]=\"(data.y(point.y1) + data.y(point.y)) / 2\"\n alignment-baseline=\"middle\"\n text-anchor=\"middle\">{{ point.text }}\n </svg:text>\n\n <!-- <svg:line x1=\"0\" x2=\"100%\" [attr.y1]=\"data.y(point.y)\" [attr.y2]=\"data.y(point.y)\" [attr.stroke]=\"point.iconId ? 'var(--color-text-10)' : point.color ?? series.color\"></svg:line>-->\n <!-- <svg:line x1=\"0\" x2=\"100%\" [attr.y1]=\"data.y(point.y1)\" [attr.y2]=\"data.y(point.y1)\" [attr.stroke]=\"point.iconId ? 'var(--color-text-10)' : point.color ?? series.color\"></svg:line>-->\n\n </svg:g>\n </ng-container>\n\n\n</ng-container>\n","import {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef, OnDestroy,\n OnInit,\n} from '@angular/core';\nimport {BasePoint} from '../../../model/base-point';\nimport {ChartService} from '../../../service/chart.service';\nimport {ScaleService} from '../../../service/scale.service';\nimport {ZoomService} from '../../../service/zoom.service';\nimport {FillDirection, FillType} from '../../../model/enum/fill-type';\nimport {LinearSeriesBase} from '../linear-series-base';\nimport {combineLatest, map, Observable} from 'rxjs';\nimport * as d3 from 'd3';\nimport {ClipPointsDirection} from \"../../../model/enum/clip-points-direction\";\nimport {Axis} from \"../../../core/axis/axis\";\n\n@Component({\n selector: 'svg:svg[teta-area-series]',\n templateUrl: './area-series.component.html',\n styleUrls: ['./area-series.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class AreaSeriesComponent<T extends BasePoint>\n extends LinearSeriesBase<T>\n implements OnInit, AfterViewInit, OnDestroy {\n areaPath: Observable<string>;\n\n fillDirection = FillDirection;\n fillType = FillType;\n id: string;\n\n constructor(\n protected override svc: ChartService,\n protected override cdr: ChangeDetectorRef,\n protected override scaleService: ScaleService,\n protected override zoomService: ZoomService,\n protected override element: ElementRef\n ) {\n super(svc, cdr, scaleService, zoomService, element);\n this.id = (Date.now() + Math.random()).toString(36);\n }\n\n override ngOnInit() {\n super.ngOnInit();\n this.areaPath = this.scaleService.scales.pipe(\n map(\n (\n data\n ) => {\n const {x, y} = data;\n\n this.x = x.get(this.series.xAxisIndex).scale;\n this.y = y.get(this.series.yAxisIndex).scale;\n\n const area = d3\n .area<BasePoint>()\n .defined(\n (point) =>\n point.x !== null &&\n point.y !== null &&\n !isNaN(point.x) &&\n !isNaN(point.y)\n );\n\n area\n .x1((_) =>\n _.x1 !== null && _.x1 !== undefined ? this.x(_.x1) : this.x(0)\n )\n .x0((_) => this.x(_.x))\n\n .y((_) =>\n this.y(_.y)\n );\n\n\n const filter = this.defaultClipPointsMapping.get(this.series.clipPointsDirection);\n let filteredData = this.series.data;\n\n if(this.series.clipPointsDirection === ClipPointsDirection.x) {\n let [min, max] = this.x.domain();\n\n min = min instanceof Date ? min.getTime() : min;\n max = max instanceof Date ? max.getTime() : max;\n\n filteredData = filteredData?.filter(filter(min, max));\n }\n\n\n if(this.series.clipPointsDirection === ClipPointsDirection.y) {\n let [min, max] = this.y.domain();\n\n min = min instanceof Date ? min.getTime() : min;\n max = max instanceof Date ? max.getTime() : max;\n\n filteredData = filteredData?.filter(filter(min, max));\n }\n\n return area(filteredData);\n }\n )\n );\n }\n}\n","<svg:defs *ngIf=\"series?.fillType === fillType.gradient\">\n <svg:linearGradient [id]=\"'gradient-fill-' + id\" gradientUnits=\"userSpaceOnUse\"\n x1=\"0%\"\n [attr.y1]=\"config?.inverted || series?.fillDirection === fillDirection.y ? '0%' : '100%'\"\n [attr.x2]=\"config?.inverted || series?.fillDirection === fillDirection.y ? '100%' : '0%'\"\n y2=\"0%\">\n <svg:stop offset=\"0%\" [attr.stop-color]=\"series.color\" stop-opacity=\"0\"></svg:stop>\n <svg:stop offset=\"5%\" [attr.stop-color]=\"series.color\" stop-opacity=\"0.1\"></svg:stop>\n <svg:stop offset=\"20%\" [attr.stop-color]=\"series.color\" stop-opacity=\"0.2\"></svg:stop>\n <svg:stop offset=\"60%\" [attr.stop-color]=\"series.color\" stop-opacity=\"0.5\"></svg:stop>\n <svg:stop offset=\"100%\" [attr.stop-color]=\"series.color\" stop-opacity=\"0.8\"></svg:stop>\n </svg:linearGradient>\n</svg:defs>\n<svg:path\n class=\"area\"\n [attr.d]=\"areaPath | async\"\n [attr.stroke-width]=\"0\"\n [attr.fill-opacity]=\"series.style?.fillOpacity\"\n [attr.fill]=\"series.fillType === fillType.gradient ? 'url(#gradient-fill-'+id+')' : series.style.fill ?? series.color\">\n</svg:path>\n<svg:path\n class=\"area\"\n fill=\"none\"\n [attr.d]=\"path | async\"\n [attr.stroke]=\"series.color\"\n [attr.stroke-dasharray]=\"series.style?.strokeDasharray\"\n [attr.stroke-width]=\"series.style?.strokeWidth\">\n</svg:path>\n<ng-container *ngIf=\"transform | async as t\">\n <svg:circle\n *ngIf=\"t?.x !=null && t?.y !=null\"\n r=\"3\"\n [attr.fill]=\"series.color\"\n [attr.transform]=\"'translate('+ t.x +', '+ t.y +')'\"\n >\n </svg:circle>\n</ng-container>\n<ng-container *ngIf=\"getMarkers() as markers\">\n <svg:circle\n class=\"marker\"\n *ngFor=\"let point of markers\"\n [class.draggable-marker]=\"point?.marker?.draggable\"\n [attr.r]=\"point.marker.style?.radius ?? 5\"\n [attr.fill]=\"point.marker.style?.fill ?? 'transparent'\"\n [attr.stroke]=\"point.marker.style?.stroke ?? 'none'\"\n [attr.stroke-width]=\"point.marker.style?.strokeWidth\"\n [attr.stroke-dasharray]=\"point.marker.style?.strokeDasharray\"\n [attr.cx]=\"x(point.x)\"\n [attr.cy]=\"y(point.y)\"\n >\n </svg:circle>\n</ng-container>\n\n\n\n","import {SeriesType} from '../model/enum/series-type';\nimport {SeriesBaseComponent} from '../base/series-base.component';\nimport {LineSeriesComponent} from '../chart-container/series/line/line-series.component';\nimport {BarSeriesComponent} from '../chart-container/series/bar/bar-series.component';\nimport {ScatterSeriesComponent} from '../chart-container/series/scatter-series/scatter-series.component';\nimport {BlockSeriesComponent} from '../chart-container/series/block-series/block-series.component';\nimport {BlockAreaSeriesComponent} from '../chart-container/series/block-area-series/block-area-series.component';\nimport {AreaSeriesComponent} from '../chart-container/series/area-series/area-series.component';\n\nexport const defaultSeriesTypeMapping = new Map<SeriesType,\n typeof SeriesBaseComponent>()\n .set(SeriesType.line, LineSeriesComponent)\n .set(SeriesType.bar, BarSeriesComponent)\n .set(SeriesType.scatter, ScatterSeriesComponent)\n .set(SeriesType.block, BlockSeriesComponent)\n .set(SeriesType.area, AreaSeriesComponent)\n .set(SeriesType.blockArea, BlockAreaSeriesComponent);\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ComponentRef,\n Input, OnDestroy,\n OnInit,\n SimpleChanges,\n ViewContainerRef,\n} from '@angular/core';\nimport {SeriesBaseComponent} from '../../base/series-base.component';\nimport {LineSeriesComponent} from '../series/line/line-series.component';\nimport {Series} from '../../model/series';\nimport {BasePoint} from '../../model/base-point';\nimport {IChartConfig} from '../../model/i-chart-config';\nimport {defaultSeriesTypeMapping} from '../../default/defaultSeriesTypeMapping';\n\n@Component({\n selector: '[teta-series-host]',\n template: '',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class SeriesHostComponent<T extends BasePoint> implements OnInit, OnDestroy {\n @Input() config: IChartConfig;\n @Input() series: Series<T>;\n\n private _init = false;\n private _componentRef: ComponentRef<any>;\n\n constructor(\n private viewContainerRef: ViewContainerRef\n ) {\n }\n\n ngOnInit(): void {\n if (!SeriesBaseComponent.isPrototypeOf(this.series.component)) {\n this.series.component =\n defaultSeriesTypeMapping.get(this.series.type) || LineSeriesComponent;\n }\n\n this._componentRef = this.viewContainerRef.createComponent(\n this.series.component\n );\n this._componentRef.instance.config = this.config;\n this._componentRef.instance.series = this.series;\n this._init = true;\n }\n\n ngOnDestroy(): void {\n this._componentRef.destroy();\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (this._init && (changes.hasOwnProperty('series') || changes.hasOwnProperty('config'))) {\n this._componentRef.instance.config = this.config;\n this._componentRef.instance.series = this.series;\n this._componentRef.injector.get(ChangeDetectorRef).detectChanges();\n }\n }\n}\n","import {\n AfterViewInit,\n ChangeDetectionStrategy,\n Component, Input,\n} from '@angular/core';\n\nimport {ScaleService} from \"../../service/scale.service\";\nimport {map, Observable} from \"rxjs\";\nimport {IChartConfig} from \"../../model/i-chart-config\";\nimport {ChartService} from \"../../service/chart.service\";\n\n@Component({\n selector: '[teta-gridlines]',\n templateUrl: './gridlines.component.html',\n styleUrls: ['./gridlines.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class GridlinesComponent implements AfterViewInit {\n\n @Input() size: DOMRect;\n\n config: Observable<IChartConfig>;\n tickYValues: Observable<number[]>;\n tickXValues: Observable<number[]>;\n x: Observable<any>;\n y: Observable<any>;\n\n constructor(private svc: ScaleService, private chartService: ChartService) {\n this.config = this.chartService.config;\n\n this.tickYValues = this.svc.scales.pipe(map((_) => {\n const ratio = this.size.height / 40;\n return _.y.get(0)?.scale.ticks(ratio);\n }));\n this.tickXValues = this.svc.scales.pipe(map((_) => {\n const ratio = this.size.width / 40;\n return _.x.get(0)?.scale.ticks(ratio);\n }));\n\n this.y = this.svc.scales.pipe(map((_) => _.y.get(0)?.scale));\n this.x = this.svc.scales.pipe(map((_) => _.x.get(0)?.scale));\n }\n\n ngAfterViewInit() {\n\n }\n}\n","<ng-container *ngIf=\"{\n xValues: tickXValues | async,\n yValues: tickYValues | async,\n x: x | async,\n y: y | async,\n config: config | async\n} as data\">\n <ng-container *ngIf=\"data.y && data.config.gridLines?.showY !== false\">\n <ng-container *ngFor=\"let tick of data.yValues\">\n <svg:line [attr.x1]=\"0\"\n [attr.y1]=\"data.y(tick)\"\n [attr.x2]=\"size?.width\"\n [attr.y2]=\"data.y(tick)\"></svg:line>\n </ng-container>\n </ng-container>\n\n <ng-container *ngIf=\"data.x && data.config.gridLines?.showX !== false\">\n <ng-container *ngFor=\"let tick of data.xValues\">\n <svg:line [attr.x1]=\"data.x(tick)\"\n [attr.y1]=\"0\"\n [attr.x2]=\"data.x(tick)\"\n [attr.y2]=\"size?.height\"></svg:line>\n </ng-container>\n </ng-container>\n\n</ng-container>\n\n\n","import {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n Input,\n OnDestroy,\n OnInit,\n} from '@angular/core';\nimport {Axis} from '../../core/axis/axis';\n\nimport {lastValueFrom, map, Observable, take, withLatestFrom} from \"rxjs\";\nimport {ScaleService} from \"../../service/scale.service\";\nimport {getTextWidth} from \"../../core/utils/get-text-width\";\nimport * as d3 from 'd3';\nimport {ChartService} from \"../../service/chart.service\";\nimport {IChartConfig} from \"../../model/i-chart-config\";\n\n@Component({\n selector: '[teta-x-axis]',\n templateUrl: './x-axis.component.html',\n styleUrls: ['./x-axis.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class XAxisComponent implements OnInit {\n x: Observable<any>;\n ticks: Observable<any[]>\n\n @Input() axis: Axis;\n @Input() size: DOMRect;\n\n private _alive = true;\n\n constructor(private scaleService: ScaleService, private _svc: ChartService) {\n this.x = this.scaleService.scales.pipe(map((_) => {\n return _.x.get(this.axis.index)?.scale\n }))\n\n\n this.ticks = this.x.pipe(\n withLatestFrom(this._svc.size),\n map((_: [any, DOMRect]) => {\n const [x, size] = _;\n\n const tickSize = x.ticks().map((_) => getTextWidth(this.axis.options.tickFormat ? this.axis.options.tickFormat(_) : this.axis.defaultFormatter()(_), 0.45, 11))\n return x.ticks(size.width / parseInt(d3.max(tickSize), 10) / 2)\n })\n )\n }\n\n getLabelTransform() {\n return `translate(${\n this.size.width / 2\n }, ${this.axis.options.opposite ? -32 : 32})`;\n }\n\n ngOnInit(): void {\n }\n\n ngOnDestroy(): void {\n this._alive = false;\n }\n\n}\n","<ng-container *ngIf=\"{x: x | async, ticks: ticks | async} as data\">\n <svg:g text-anchor=\"middle\" *ngFor=\"let tick of data.ticks\" [attr.transform]=\"'translate('+ data.x(tick) +', 0)'\">\n <text fill=\"var(--color-text-70)\" [attr.dy]=\"axis.options.opposite ? '-0.71em' : '0.71em'\" [attr.y]=\"axis.options.opposite ? 0 : 9\">{{ this.axis.options.tickFormat ? this.axis.options.tickFormat(tick) : this.axis.defaultFormatter()(tick) }}</text>\n <line stroke=\"var(--color-text-30)\" [attr.y2]=\"axis.options.opposite ? -6 : 6\"></line>\n </svg:g>\n\n <svg:g class=\"label-axis font-caption\" [attr.transform]=\"getLabelTransform()\">\n <text fill=\"var(--color-text-70)\" text-anchor=\"middle\" dominant-baseline=\"middle\">{{ axis.options.title }}</text>\n </svg:g>\n</ng-container>\n\n","import {\n AfterViewInit,\n ChangeDetectionStrategy,\n Component,\n Input,\n OnInit,\n} from '@angular/core';\nimport { Axis } from '../../core/axis/axis';\n\nimport {ScaleService} from \"../../service/scale.service\";\nimport {map, Observable} from \"rxjs\";\n\n@Component({\n selector: '[teta-y-axis]',\n templateUrl: './y-axis.component.html',\n styleUrls: ['./y-axis.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class YAxisComponent implements OnInit, AfterViewInit {\n\n y: Observable<any>;\n\n @Input() axis: Axis;\n @Input() size: DOMRect;\n\n private _alive = true;\n\n constructor(private scaleService: ScaleService) {\n this.y = this.scaleService.scales.pipe(map((_) => {\n return _.y.get(this.axis.index)?.scale\n }))\n }\n\n ngOnInit(): void {}\n\n ngOnDestroy(): void {\n this._alive = false;\n }\n\n ngAfterViewInit() {\n }\n\n getLabelTransform() {\n return `translate(${\n this.axis.options.opposite\n ? this.axis.selfSize\n : -this.axis.selfSize\n }, ${this.size.height / 2}) rotate(-90)`;\n }\n\n}\n","<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","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n Input, OnDestroy,\n OnInit,\n} from '@angular/core';\nimport {PlotLine} from '../../model/plot-line';\nimport {Axis} from '../../core/axis/axis';\nimport {AxisOrientation} from '../../model/enum/axis-orientation';\nimport {ZoomService} from '../../service/zoom.service';\nimport {ScaleService} from '../../service/scale.service';\nimport * as d3 from 'd3';\nimport {IChartEvent} from '../../model/i-chart-event';\nimport {ChartService} from '../../service/chart.service';\n\n@Component({\n selector: '[teta-plot-line]',\n templateUrl: './plotline.component.html',\n styleUrls: ['./plotline.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class PlotlineComponent implements OnInit, OnDestroy {\n @Input() plotLine: PlotLine;\n @Input() size: DOMRect;\n @Input() axis: Axis;\n @Input() scale: any;\n orientation = AxisOrientation;\n dragElements: any;\n\n private _domain: number[];\n\n constructor(\n private cdr: ChangeDetectorRef,\n private zoomService: ZoomService,\n private scaleService: ScaleService,\n private chartService: ChartService,\n private element: ElementRef\n ) {\n }\n\n ngOnInit(): void {\n this._domain = this.scale.domain();\n\n const plotlineElement = d3\n .select(this.element.nativeElement)\n .select('.plotline');\n\n const grabElement = d3\n .select(this.element.nativeElement)\n .selectAll('.grabber');\n\n this.dragElements = d3\n .drag()\n .subject(() => {\n if (this.axis.orientation === AxisOrientation.y) {\n return {y: plotlineElement.attr('y1')};\n }\n if (this.axis.orientation === AxisOrientation.x) {\n return {x: plotlineElement.attr('x1')};\n }\n });\n const drag = this.dragElements\n .on(\n 'start drag end',\n (event: d3.D3DragEvent<any, PlotLine, any>, d: PlotLine) => {\n d.value = this.scale.invert(\n event[AxisOrientation[this.axis.orientation]]\n );\n\n this.emit({\n event,\n target: d,\n });\n\n this.cdr.detectChanges();\n }\n );\n\n plotlineElement.datum<PlotLine>(this.plotLine);\n grabElement.datum<PlotLine>(this.plotLine);\n\n if (this.plotLine.draggable) {\n grabElement.call(drag);\n }\n }\n\n ngOnDestroy() {\n this.dragElements.on('start drag end', null);\n }\n\n emit(event: IChartEvent<PlotLine>) {\n this.chartService.emitPlotline(event);\n }\n\n get value() {\n return this.scale(this.plotLine.value);\n }\n\n get height(): number {\n return this.size.height;\n }\n\n get width(): number {\n return this.size.width;\n }\n}\n","<svg:line class=\"plotline\"\n [attr.stroke]=\"plotLine.style?.stroke || 'red'\"\n [attr.stroke-width]=\"plotLine.style?.strokeWidth || 4\"\n [attr.stroke-dasharray]=\"plotLine.style?.strokeDasharray\"\n [attr.x1]=\"axis.orientation === orientation.x ? value : 0\"\n [attr.x2]=\"axis.orientation === orientation.x ? value : width\"\n [attr.y1]=\"axis.orientation === orientation.x ? 0 : value\"\n [attr.y2]=\"axis.orientation === orientation.x ? height : value\">\n</svg:line>\n\n\n<svg:text\n *ngIf=\"axis.orientation === orientation.x\"\n text-anchor=\"middle\"\n dominant-baseline=\"central\"\n class=\"label font-title-2 fill-text-70\"\n [attr.x]=\"value\"\n dy=\"-2em\"\n [attr.transform]=\"'rotate(-90, '+ value +',' + height / 2 + ')'\"\n [attr.y]=\"height / 2\">{{plotLine.label}}\n</svg:text>\n\n<svg:text\n *ngIf=\"axis.orientation === orientation.y\"\n text-anchor=\"middle\"\n class=\"label font-title-2 fill-text-70\"\n dominant-baseline=\"central\"\n [attr.x]=\"value\"\n [attr.y]=\"width / 2\">{{plotLine.label}}\n</svg:text>\n\n<svg:line class=\"grabber\"\n\n [class.x-grabber]=\"axis.orientation === orientation.x\"\n [class.y-grabber]=\"axis.orientation === orientation.y\"\n [attr.stroke]=\"'red'\"\n [attr.stroke-width]=\"8\"\n opacity=\"0\"\n [attr.x1]=\"axis.orientation === orientation.x ? value : 0\"\n [attr.x2]=\"axis.orientation === orientation.x ? value : width\"\n [attr.y1]=\"axis.orientation === orientation.x ? 0 : value\"\n [attr.y2]=\"axis.orientation === orientation.x ? height : value\">\n</svg:line>\n","import {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n HostListener,\n Input, OnDestroy\n} from '@angular/core';\nimport * as d3 from 'd3';\nimport {PlotBand} from '../../model/plot-band';\nimport {ScaleService} from '../../service/scale.service';\nimport {Axis} from '../../core/axis/axis';\nimport {ZoomService} from '../../service/zoom.service';\nimport {AxisOrientation} from '../../model/enum/axis-orientation';\nimport {IChartEvent} from '../../model/i-chart-event';\nimport {ChartService} from '../../service/chart.service';\n\n@Component({\n selector: '[teta-plot-band]',\n templateUrl: './plot-band.component.html',\n styleUrls: ['./plot-band.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class PlotBandComponent implements AfterViewInit, OnDestroy {\n @Input() plotBand: PlotBand;\n @Input() axis: Axis;\n @Input() scale: any;\n @Input() size: DOMRect;\n\n orientation = AxisOrientation;\n resizeElements: any;\n dragElements: any;\n\n constructor(\n private scaleService: ScaleService,\n private zoomService: ZoomService,\n private chartService: ChartService,\n private cdr: ChangeDetectorRef,\n private element: ElementRef\n ) {\n }\n\n @HostListener('click', ['$event']) click(event: MouseEvent) {\n this.emit({\n target: this.plotBand,\n event,\n });\n }\n\n @HostListener('contextmenu', ['$event']) contextMenu(event: MouseEvent) {\n this.emit({\n target: this.plotBand,\n event,\n });\n }\n\n emit(event: IChartEvent<PlotBand>) {\n this.chartService.emitPlotband(event);\n }\n\n ngAfterViewInit(): void {\n\n const plotbandElement = d3\n .select(this.element.nativeElement)\n .select('.plotband');\n\n const grabElements = d3\n .select(this.element.nativeElement)\n .selectAll('.grabber');\n\n this.dragElements = d3\n .drag()\n .subject(() => {\n if (this.axis.orientation === AxisOrientation.x) {\n return {x: plotbandElement.attr('x')};\n }\n\n if (this.axis.orientation === AxisOrientation.y) {\n return {y: plotbandElement.attr('y')};\n }\n });\n\n const drag = this.dragElements\n .on(\n 'start drag end',\n (event: d3.D3DragEvent<any, PlotBand, any>, d: PlotBand) => {\n\n let bandSize = parseFloat(\n plotbandElement.attr(\n this.axis.orientation === AxisOrientation.x ? 'width' : 'height'\n )\n );\n\n d.from = this.scale.invert(\n event[AxisOrientation[this.axis.orientation]]\n );\n\n d.to = this.scale.invert(\n event[AxisOrientation[this.axis.orientation]] + bandSize\n );\n\n this.emit({\n event,\n target: d,\n });\n\n this.cdr.detectChanges();\n }\n );\n\n let grabberKey;\n this.resizeElements = d3\n .drag();\n\n const resize = this.resizeElements\n .on(\n 'start drag end',\n (event: d3.D3DragEvent<any, PlotBand, any>, d: PlotBand) => {\n if (event?.type === 'start') {\n const {grabber} = event?.sourceEvent?.target?.dataset;\n grabberKey = grabber;\n }\n\n const min = Math.min(...this.scale.domain());\n const max = Math.max(...this.scale.domain());\n\n const minValue = d.min ?? min;\n const maxValue = d.max ?? max;\n\n d[grabberKey] = this.scale.invert(\n event[AxisOrientation[this.axis.orientation]]\n );\n\n if (grabberKey === 'from') {\n const borderMin = d.from <= minValue;\n\n if (d.from >= d.to) {\n d.from = d.to;\n }\n\n if (borderMin) {\n d.from = minValue;\n }\n }\n\n if (grabberKey === 'to') {\n const borderMax = d.to >= maxValue;\n\n if (borderMax) {\n d.to = maxValue;\n }\n\n if (d.to <= d.from) {\n d.to = d.from;\n }\n }\n\n this.emit({\n event,\n target: d,\n });\n\n this.cdr.detectChanges();\n }\n );\n\n plotbandElement.datum<PlotBand>(this.plotBand);\n grabElements.datum<PlotBand>(this.plotBand);\n\n if (this.plotBand.draggable) {\n plotbandElement.call(drag);\n }\n\n if (this.plotBand.resizable) {\n grabElements.call(resize);\n }\n }\n\n ngOnDestroy() {\n this.dragElements.on('start drag end', null);\n this.resizeElements.on('start drag end', null);\n }\n\n get height(): number {\n return this.size.height;\n }\n\n get width(): number {\n return this.size.width;\n }\n\n get from(): number {\n return this.scale(this.plotBand.from);\n }\n\n get to(): number {\n return this.scale(this.plotBand.to);\n }\n\n get bandSize(): number {\n return Math.abs(\n this.scale(this.plotBand.to) - this.scale(this.plotBand.from)\n );\n }\n\n getTextCenter = () => this.scale((this.plotBand.from + this.plotBand.to) / 2);\n\n getFill(d: PlotBand): string {\n if (d.style?.plotBand?.patternImage) {\n return `url(#${d.style.plotBand?.patternImage})`;\n }\n return d.style.plotBand?.fill;\n }\n}\n","<svg:rect\n class=\"plotband\" xmlns:svg=\"http://www.w3.org/1999/html\"\n [class.draggable]=\"plotBand?.draggable === true\"\n [attr.fill]=\"getFill(plotBand)\"\n [attr.opacity]=\"plotBand.style?.plotBand?.opacity\"\n [attr.height]=\"axis.orientation === orientation.x ? height : bandSize\"\n [attr.width]=\"axis.orientation === orientation.x ? bandSize : width\"\n [attr.y]=\"axis.orientation === orientation.y ? from : null\"\n [attr.x]=\"axis.orientation === orientation.x ? from : null\">\n</svg:rect>\n\n<svg:text\n *ngIf=\"axis.orientation === orientation.x\"\n text-anchor=\"middle\"\n dominant-baseline=\"central\"\n class=\"label font-body-3 fill-text-70\"\n [attr.x]=\"getTextCenter()\"\n [attr.transform]=\"'rotate(-90, '+ getTextCenter() +',' + height / 2 + ')'\"\n [attr.y]=\"height / 2\">{{plotBand.label}}\n</svg:text>\n\n<svg:text\n *ngIf=\"axis.orientation === orientation.y\"\n text-anchor=\"middle\"\n class=\"label font-body-3 fill-text-70\"\n dominant-baseline=\"central\"\n [attr.x]=\"getTextCenter()\"\n [attr.y]=\"width / 2\">{{plotBand.label}}\n</svg:text>\n\n<svg:line class=\"display-grabber\"\n *ngIf=\"plotBand.showGrabbers && plotBand.resizable\"\n [attr.stroke]=\"plotBand.style?.grabbers?.stroke || 'var(--color-text-50)'\"\n [attr.stroke-width]=\"plotBand.style?.grabbers?.strokeWidth || 4\"\n [attr.stroke-dasharray]=\"plotBand.style?.grabbers?.strokeDasharray\"\n [attr.x1]=\"axis.orientation === orientation.x ? from : 0\"\n [attr.x2]=\"axis.orientation === orientation.x ? from : width\"\n [attr.data-grabber]=\"'from'\"\n [attr.y1]=\"axis.orientation === orientation.x ? 0 : from\"\n [attr.y2]=\"axis.orientation === orientation.x ? height : from\">\n</svg:line>\n\n<svg:line class=\"display-grabber\"\n *ngIf=\"plotBand.showGrabbers && plotBand.resizable\"\n [attr.stroke]=\"plotBand.style?.grabbers?.stroke || 'var(--color-text-50)'\"\n [attr.stroke-width]=\"plotBand.style?.grabbers?.strokeWidth || 4\"\n [attr.stroke-dasharray]=\"plotBand.style?.grabbers?.strokeDasharray\"\n [attr.x1]=\"axis.orientation === orientation.x ? to : 0\"\n [attr.x2]=\"axis.orientation === orientation.x ? to : width\"\n [attr.data-grabber]=\"'to'\"\n [attr.y1]=\"axis.orientation === orientation.x ? 0 : to\"\n [attr.y2]=\"axis.orientation === orientation.x ? height : to\">\n</svg:line>\n\n<svg:line class=\"grabber\"\n *ngIf=\"plotBand.resizable\"\n [class.x-grabber]=\"axis.orientation === orientation.x\"\n [class.y-grabber]=\"axis.orientation === orientation.y\"\n [class.resizeable]=\"plotBand?.resizable\"\n [attr.stroke]=\"plotBand.style?.grabbers?.stroke || 'var(--color-text-50)'\"\n [attr.stroke-width]=\"8\"\n [style.transform]=\"axis.orientation === orientation.x ? 'translateX(2px)' : 'translateY(2px)'\"\n [attr.x1]=\"axis.orientation === orientation.x ? from : 0\"\n [attr.x2]=\"axis.orientation === orientation.x ? from : width\"\n [attr.data-grabber]=\"'from'\"\n [attr.y1]=\"axis.orientation === orientation.x ? 0 : from\"\n [attr.y2]=\"axis.orientation === orientation.x ? height : from\">\n</svg:line>\n<svg:line class=\"grabber\"\n *ngIf=\"plotBand.resizable\"\n [class.x-grabber]=\"axis.orientation === orientation.x\"\n [class.y-grabber]=\"axis.orientation === orientation.y\"\n [class.resizeable]=\"plotBand?.resizable\"\n [attr.stroke]=\"plotBand.style?.grabbers?.stroke || 'var(--color-text-50)'\"\n [attr.stroke-width]=\"8\"\n [style.transform]=\"axis.orientation === orientation.x ? 'translateX(-2px)' : 'translateY(-2px)'\"\n [attr.x1]=\"axis.orientation === orientation.x ? to : 0\"\n [attr.x2]=\"axis.orientation === orientation.x ? to : width\"\n [attr.data-grabber]=\"'to'\"\n [attr.y1]=\"axis.orientation === orientation.x ? 0 : to\"\n [attr.y2]=\"axis.orientation === orientation.x ? height : to\">\n</svg:line>\n\n\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n Input,\n NgZone,\n OnInit,\n ViewChild,\n} from '@angular/core';\nimport {filter, map, Observable, tap} from 'rxjs';\nimport {ChartService} from '../../service/chart.service';\nimport {ZoomService} from '../../service/zoom.service';\nimport {IDisplayTooltip} from '../../model/i-display-tooltip';\nimport {DomSanitizer, SafeHtml} from '@angular/platform-browser';\nimport {IChartConfig} from '../../model/i-chart-config';\nimport {Series} from '../../model/series';\nimport * as d3 from 'd3';\nimport {Align, PositionUtil, VerticalAlign} from '@tetacom/ng-components';\n\n@Component({\n selector: 'teta-tooltip',\n templateUrl: './tooltip.component.html',\n styleUrls: ['./tooltip.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class TooltipComponent implements OnInit {\n @Input() size: DOMRect;\n @Input() config: IChartConfig;\n\n @ViewChild('tooltip', {static: false, read: ElementRef}) tooltip: ElementRef;\n\n position: Observable<{\n left?: number;\n top?: number;\n bottom?: number;\n right?: number;\n }>;\n\n displayTooltips: Observable<SafeHtml>;\n display: Observable<number>;\n tooltips: Observable<IDisplayTooltip[]>;\n\n constructor(\n private svc: ChartService,\n private cdr: ChangeDetectorRef,\n private zoomService: ZoomService,\n private sanitizer: DomSanitizer,\n private _zone: NgZone,\n private _elementRef: ElementRef\n ) {\n this.tooltips = this.svc.tooltips.pipe(map((_) => [..._.values()]));\n }\n\n ngOnInit(): void {\n this.display = this.svc.pointerMove.pipe(\n map((event: PointerEvent) => {\n return event.type === 'mousemove' ? 1 : 0;\n }),\n tap(() => {\n setTimeout(() => {\n this.cdr.detectChanges();\n });\n })\n );\n\n this.position = this.svc.pointerMove.pipe(\n filter((event) => !!event),\n map((_) => {\n return this.getPosition(_);\n }),\n tap(() => this.cdr.detectChanges())\n );\n\n const transformHtml = (html): SafeHtml => {\n return this.sanitizer.bypassSecurityTrustHtml(html);\n };\n\n const defaultFormatter = (tooltips: IDisplayTooltip[]): SafeHtml => {\n let html = '';\n const format = d3.timeFormat('%d.%m.%Y');\n tooltips.forEach((_) => {\n const indicatorStyle = `display:block; width: 10px; height: 2px; background-color: ${_?.series?.color}`;\n\n html += `<div class=\"display-flex align-center\"><span class=\"margin-right-1\" style=\"${indicatorStyle}\"></span>\n <span class=\"font-title-3\">${_.series.name}\n <span class=\"font-body-3\">\n x: ${(_.point.x as any) instanceof Date ? format(_.point.x as any) : _.point.x?.toFixed(2)}\n y: ${(_.point.y as any) instanceof Date ? format(_.point.y as any) : _.point.y?.toFixed(2)}\n </span>\n </span></div>`;\n });\n\n return transformHtml(html);\n };\n\n const formatter = this.config?.tooltip?.format;\n\n this.displayTooltips = this.svc.tooltips.pipe(\n map((tooltips: Map<Series<any>, IDisplayTooltip>) => {\n const tooltipList = [...tooltips.values()];\n if (tooltipList?.length < 1) {\n return '';\n }\n const formatted = formatter\n ? transformHtml(formatter(tooltipList))\n : defaultFormatter(tooltipList);\n return formatted;\n })\n );\n }\n\n private getPosition(event: PointerEvent) {\n if (!this.tooltip) {\n return null;\n }\n return PositionUtil.getPosition(\n {\n top: event.pageY,\n bottom: event.pageY,\n left: event.pageX,\n right: event.pageX,\n },\n this.tooltip?.nativeElement?.getBoundingClientRect(),\n Align.auto,\n VerticalAlign.top,\n 12\n );\n }\n\n\n format(input: number | Date): string {\n if (input instanceof Date) {\n const format = d3.timeFormat('%d.%m.%Y');\n return format(input);\n }\n\n const format = d3.format(',.5~r');\n return format(input);\n }\n}\n","<ng-container *tetaLet=\"position | async as p\">\n <ng-container *ngIf=\"tooltips | async as t\">\n <div class=\"chart-tooltip color-text-90 bg-background-50 shadow-2\"\n #tooltip\n [style.position]=\"'fixed'\"\n *ngIf=\"t.length > 0\"\n [style.opacity]=\"display | async\"\n style=\"pointer-events: none; min-width: 200px;\"\n [style.left.px]=\"p?.left\"\n [style.top.px]=\"p?.top\"\n [style.bottom.px]=\"p?.bottom\"\n [style.right.px]=\"p?.right\"\n >\n <ng-container *ngIf=\"config.tooltip?.template\">\n <ng-container *ngTemplateOutlet=\"config.tooltip.template; context: {$implicit: t}\"></ng-container>\n </ng-container>\n\n <ng-container *ngIf=\"config.tooltip?.format; else default\">\n <div [innerHTML]=\"displayTooltips | async\"></div>\n </ng-container>\n\n <ng-template #default>\n <div *ngIf=\"!config.tooltip?.template\" class=\"padding-2 border-radius-1\">\n <ng-container *ngFor=\"let tooltip of t\">\n <div class=\"display-flex align-center\">\n <span class=\"display-block margin-right-1\" [style.width.px]=\"10\" [style.height.px]=\"2\"\n [style.background-color]=\"tooltip.series?.color\"></span>\n <span class=\"font-title-3\">\n {{ tooltip.series?.name }}\n <span class=\"font-body-3\">\n x: {{ format(tooltip.point?.x) }}\n y: {{ format(tooltip.point?.y) }}\n </span>\n </span>\n </div>\n </ng-container>\n </div>\n </ng-template>\n </div>\n </ng-container>\n</ng-container>\n\n\n\n","import {\n AfterViewInit,\n Directive,\n ElementRef,\n HostBinding,\n Input,\n NgZone,\n OnDestroy,\n SimpleChanges,\n} from '@angular/core';\nimport {ZoomService} from '../service/zoom.service';\nimport {IChartConfig} from '../model/i-chart-config';\nimport {Axis} from '../core/axis/axis';\nimport * as d3 from 'd3';\nimport {D3ZoomEvent, ZoomBehavior, zoomIdentity} from 'd3';\nimport {ZoomType} from '../model/enum/zoom-type';\nimport {AxisOrientation} from '../model/enum/axis-orientation';\nimport {BrushMessage, IBroadcastMessage, ZoomMessage,} from '../model/i-broadcast-message';\nimport {BrushType} from '../model/enum/brush-type';\nimport {BroadcastService} from '../service/broadcast.service';\nimport {debounceTime, tap} from 'rxjs/operators';\nimport {combineLatestWith, filter, takeWhile} from 'rxjs';\nimport {ChartService} from '../service/chart.service';\nimport {ZoomBehaviorType} from '../model/enum/zoom-behavior-type';\nimport objectHash from 'object-hash';\n\n@Directive({\n selector: '[tetaZoomable]',\n})\nexport class ZoomableDirective implements OnDestroy, AfterViewInit {\n @Input() config: IChartConfig;\n @Input() axis: Axis;\n @Input() size: DOMRect;\n @Input() brushScale?: any;\n @Input() scale?: any;\n\n @HostBinding('class.zoomable') private zoomable = false;\n @HostBinding('class.crosshair') private crosshair = false;\n\n private _element: d3.Selection<SVGElement, any, any, any>;\n private zoom: ZoomBehavior<any, any>;\n private alive = true;\n\n private currentTransform = zoomIdentity;\n private currentSelection;\n private hash: string;\n\n constructor(\n private elementRef: ElementRef,\n private zoomService: ZoomService,\n private broadcastService: BroadcastService,\n private chartService: ChartService,\n private zone: NgZone\n ) {\n }\n\n ngOnInit() {\n if (this.axis?.options?.zoom || this.config?.zoom?.enable) {\n this.zoomable = this.config?.zoom?.zoomBehavior === ZoomBehaviorType.move && !this.config?.tooltip?.showCrosshair;\n this.crosshair = this.config?.tooltip?.showCrosshair;\n }\n }\n\n ngOnChanges(changes: SimpleChanges) {\n if (changes.hasOwnProperty('brushScale') || changes.hasOwnProperty('scale') || changes.hasOwnProperty('axis')) {\n if (this.hash) {\n this.zoomService.scaleHashMap.set(this.hash, this.scale);\n this.zoomService.axisHashMap.set(this.hash, this.axis);\n }\n }\n }\n\n ngAfterViewInit() {\n const enable =\n (this.axis?.options?.zoom && this.axis?.options.visible !== false) ||\n this.config?.zoom?.enable;\n\n if (!enable) {\n return;\n }\n\n\n if (enable) {\n this._element = d3.select(this.elementRef.nativeElement);\n this.hash = objectHash.sha1({index: this.axis.index, orientation: this.axis.orientation});\n\n this.zoom = d3.zoom().extent([\n [0, 0],\n [this.size.width, this.size.height],\n ]);\n\n if (this.config.zoom?.limitTranslateByData) {\n this.zoom.translateExtent([\n [0, 0],\n [this.size.width, this.size.height],\n ]);\n }\n\n\n if(this.config.zoom?.wheelDelta) {\n this.zoom.wheelDelta(this.config.zoom?.wheelDelta)\n }\n\n this.zoomService.axisHashMap.set(this.hash, this.axis);\n this.zoomService.elementHashMap.set(this.hash, this._element);\n this.zoomService.scaleHashMap.set(this.hash, this.scale);\n this.zoomService.zoomHashMap.set(this.hash, this.zoom);\n this.zoomService.setBroadcastChannel(this.config?.zoom.syncChannel);\n\n\n const maxZoom = this.config.zoom?.max\n ? (this.axis.extremes[1] - this.axis.extremes[0]) /\n this.config.zoom?.max\n : this.config.zoom?.limitZoomByData\n ? 1\n : 0;\n\n const minZoom = this.config.zoom?.min\n ? (this.axis.extremes[1] - this.axis.extremes[0]) /\n this.config.zoom?.min\n : Infinity;\n\n this.zoom.scaleExtent([maxZoom, minZoom]);\n\n this.zoom.on('zoom end', this.zoomed);\n this._element.call(this.zoom).on('dblclick.zoom', null); // Disable dbclick zoom\n\n\n this.chartService.emitZoomInstance(this.zoomService);\n\n if (this.config?.zoom?.zoomBehavior === ZoomBehaviorType.wheel) {\n this.runWheelZoom();\n }\n }\n\n // Subscribe to zoom events\n this.broadcastService.subscribeToZoom(this.config?.zoom.syncChannel).pipe(\n takeWhile((_) => this.alive),\n tap((m: IBroadcastMessage<ZoomMessage>) => {\n if (\n this.axis.index === m.message?.axis?.index && this.axis.orientation === m.message?.axis?.orientation\n ) {\n const currentZoom = d3.zoomTransform(this._element.node());\n\n if (currentZoom !== m.message.event.transform && this.config.id === m.message?.chartId) {\n this._element.call(\n this.zoom.transform,\n m.message.event.transform\n );\n }\n }\n }),\n filter(\n (m: IBroadcastMessage<ZoomMessage>) =>\n m.message.event.sourceEvent instanceof MouseEvent ||\n m.message.event.sourceEvent instanceof WheelEvent ||\n (window.TouchEvent &&\n m.message.event.sourceEvent instanceof TouchEvent)\n ),\n filter((m: IBroadcastMessage<ZoomMessage>) => {\n return (\n this.axis.index === m.message?.axis?.index &&\n this.axis.orientation === m.message?.axis?.orientation\n );\n }),\n tap((m: IBroadcastMessage<ZoomMessage>) => {\n if (this.config.id !== m.message?.chartId) {\n\n this.brushScale.domain(this.axis.originDomain);\n\n const scale = Math.abs(this.axis.originDomain[1] - this.axis.originDomain[0]) / Math.abs(m.message.domain[1] - m.message.domain[0]);\n\n let transform = zoomIdentity.scale(scale);\n\n if (this.config?.zoom?.type === ZoomType.x) {\n if (this.config.xAxis[0]?.inverted) {\n transform = transform.translate(this.brushScale(-m.message.domain[1]), 0);\n } else {\n transform = transform.translate(-this.brushScale(m.message.domain[0]), 0);\n }\n }\n\n if (this.config?.zoom?.type === ZoomType.y) {\n if (this.config.yAxis[0]?.inverted) {\n transform = transform.translate(0, -this.brushScale(m.message.domain[0]));\n } else {\n transform = transform.translate(0, -this.brushScale(m.message.domain[1]));\n }\n }\n\n this._element.call(\n this.zoom.transform,\n transform,\n null,\n {}\n );\n }\n })\n )\n .subscribe();\n\n // Subscribe to brush events x or y\n\n if (\n (this.config.brush?.type === BrushType.x &&\n this.axis.orientation === AxisOrientation.x) ||\n (this.config.brush?.type === BrushType.y &&\n this.axis.orientation === AxisOrientation.y)\n ) {\n\n this.broadcastService.subscribeToBrush(this.config?.zoom.syncChannel)\n .pipe(\n combineLatestWith(this.chartService.size),\n takeWhile((_) => this.alive),\n filter((data: [IBroadcastMessage<BrushMessage>, DOMRect]) => {\n const [m] = data;\n return Boolean(m.message.selection)\n }),\n tap((data: [IBroadcastMessage<BrushMessage>, DOMRect]) => {\n\n const [m] = data;\n const currentTransform = d3.zoomTransform(this._element.node());\n if (\n !m.message.event &&\n this.currentSelection &&\n currentTransform.k !== 1\n ) {\n return;\n }\n\n const s = m.message.selection;\n\n this.brushScale.domain(this.axis.originDomain);\n const domain = this.brushScale.domain();\n\n const scale = Math.abs(domain[1] - domain[0]) / Math.abs(s[1] - s[0]);\n let transform = zoomIdentity.scale(scale);\n\n if (m.message?.brushType === BrushType.x) {\n if (this.config.xAxis[0]?.inverted) {\n transform = transform.translate(-this.brushScale(s[0]), 0);\n } else {\n transform = transform.translate(-this.brushScale(s[1]), 0);\n }\n }\n\n if (m.message?.brushType === BrushType.y) {\n if (this.config.yAxis[0]?.inverted) {\n transform = transform.translate(0, -this.brushScale(s[0]));\n } else {\n transform = transform.translate(0, -this.brushScale(s[1]));\n }\n }\n\n if (m.message?.style?.transition) {\n this._element.transition().call(this.zoom.transform, transform, null, {});\n } else {\n this._element.call(this.zoom.transform, transform, null, {});\n }\n\n this.currentSelection = m.message.selection;\n })\n )\n .subscribe();\n }\n }\n\n ngOnDestroy(): void {\n this.zoom?.on('start zoom end', null);\n this._element?.on('wheel', null);\n this.alive = false;\n }\n\n\n zoomed = (event: D3ZoomEvent<any, any>) => {\n if (event.sourceEvent) {\n if (Object.keys(event.sourceEvent).length !== 0) {\n\n if (this.currentTransform === event.transform) {\n return;\n }\n\n const origin = this.brushScale.copy().domain(this.axis.extremes);\n\n let domain =\n this.config.zoom?.type === ZoomType.y\n ? event.transform.rescaleY(origin).domain()\n : event.transform.rescaleX(origin).domain();\n\n const message = new ZoomMessage({\n event,\n axis: this.axis,\n domain,\n chartId: this.config.id,\n });\n\n this.broadcastService.broadcastZoom({\n channel: this.config?.zoom?.syncChannel,\n message,\n });\n }\n\n this.zoomService.fireZoom({\n event,\n target: this.axis,\n });\n\n this.currentTransform = event.transform;\n }\n };\n\n private runWheelZoom() {\n let type: 'start' | 'zoom' | 'end' = 'start';\n let wheeling;\n\n this.zoom\n .filter(\n (event) => {\n return (event.ctrlKey && event.type === 'wheel') ||\n Boolean(window.TouchEvent && event.type !== 'wheel');\n }\n )\n .wheelDelta((event) => {\n const delta =\n this.config?.zoom.type === ZoomType.x\n ? -event.deltaX\n : -event.deltaY;\n return delta * 0.002;\n });\n\n const emit = (type: string, event: WheelEvent) => {\n const origin = this.brushScale.copy().domain(this.axis.extremes);\n let transform = zoomIdentity;\n const delta =\n type === 'end'\n ? 0\n : this.config.zoom?.type === ZoomType.y\n ? event.deltaY\n : event.deltaX;\n\n if (this.config.zoom?.type === ZoomType.y) {\n transform = transform.translate(\n 0,\n this.currentTransform.y - delta / 2\n );\n }\n\n if (this.config.zoom?.type === ZoomType.x) {\n transform = transform.translate(\n this.currentTransform.x - delta / 2,\n 0\n );\n }\n\n transform = transform.scale(this.currentTransform.k);\n\n let domain =\n this.config.zoom?.type === ZoomType.y\n ? transform.rescaleY(origin).domain()\n : transform.rescaleX(origin).domain();\n\n const message = new ZoomMessage({\n event: {\n sourceEvent: event,\n transform,\n type,\n },\n axis: this.axis,\n domain,\n chartId: this.config.id,\n });\n\n this.zoomService.fireZoom({\n event: {\n sourceEvent: event,\n transform,\n type,\n },\n target: this.axis,\n });\n\n this._element.call(this.zoom.transform, transform);\n this.currentTransform = transform;\n\n this.broadcastService.broadcastZoom({\n channel: this.config?.zoom?.syncChannel,\n message,\n });\n };\n\n\n this._element.on('wheel', (event: WheelEvent) => {\n event.preventDefault();\n\n if (event.ctrlKey) {\n return;\n }\n\n this.zone.runOutsideAngular(() => {\n clearTimeout(wheeling);\n emit(type, event);\n type = 'zoom';\n\n wheeling = setTimeout(() => {\n emit('end', event);\n\n type = 'start';\n }, 50);\n });\n });\n\n }\n}\n","import {\n AfterViewInit,\n Directive,\n ElementRef,\n Input,\n OnInit,\n SimpleChanges,\n} from '@angular/core';\nimport { IChartConfig } from '../model/i-chart-config';\nimport { BrushService } from '../service/brush.service';\nimport { ChartService } from '../service/chart.service';\n\n@Directive({\n selector: '[tetaBrushable]',\n})\nexport class BrushableDirective implements OnInit, AfterViewInit {\n @Input() config: IChartConfig;\n @Input() brushScale: any;\n\n constructor(\n private brushService: BrushService,\n private chartService: ChartService,\n private element: ElementRef\n ) {}\n\n ngOnInit() {}\n ngAfterViewInit() {}\n\n ngOnChanges(changes: SimpleChanges) {\n\n if(changes.hasOwnProperty('config')) {\n this.brushService.clearPreviousSelection();\n }\n\n if(this.config?.brush?.enable) {\n this.brushService.applyBrush(\n this.element,\n this.config,\n this.brushScale\n );\n }\n }\n}\n","import {\n ChangeDetectionStrategy, ChangeDetectorRef,\n Component,\n ElementRef, HostListener,\n Input, OnDestroy,\n ViewChild,\n} from '@angular/core';\nimport {Annotation} from '../../model/annotation';\nimport * as d3 from 'd3';\nimport {map, Observable} from 'rxjs';\nimport {ScaleService} from '../../service/scale.service';\nimport {ChartService} from '../../service/chart.service';\n\n@Component({\n selector: '[teta-annotation]',\n templateUrl: './annotation.component.html',\n styleUrls: ['./annotation.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class AnnotationComponent implements OnDestroy {\n @Input() set annotation(annotation: Annotation) {\n this._annotation = annotation;\n }\n\n get annotation(): Annotation {\n return this._annotation;\n }\n\n @ViewChild('annotationNode', {static: false})\n set node(node: ElementRef) {\n this._node = node;\n this.init();\n this.cdr.detectChanges();\n }\n\n get node() {\n return this._node;\n }\n\n x: Observable<any>;\n y: Observable<any>;\n\n private drag: d3.DragBehavior<any, any, any>;\n private _annotation: Annotation;\n private _node: ElementRef;\n\n constructor(\n private scaleService: ScaleService,\n private cdr: ChangeDetectorRef,\n private chartService: ChartService) {\n this.x = this.scaleService.scales.pipe(map((_) => _.x.get(this.annotation.xAxisIndex ?? 0).scale));\n this.y = this.scaleService.scales.pipe(map((_) => _.y.get(this.annotation.yAxisIndex ?? 0).scale));\n this.drag = d3.drag();\n }\n\n @HostListener('click', ['$event']) click(event: MouseEvent) {\n this.chartService.emitAnnotation({\n event,\n target: this.annotation\n });\n }\n\n @HostListener('contextmenu', ['$event']) contextMenu(event: MouseEvent) {\n this.chartService.emitAnnotation({\n event,\n target: this.annotation\n });\n }\n\n\n ngOnDestroy() {\n this.drag.on('drag end', null);\n }\n\n private init() {\n\n d3.select(this.node.nativeElement).datum(this.annotation);\n\n if (this.annotation.draggable) {\n this.drag.on('drag end', (event, d: Annotation) => {\n d.dx += event.dx;\n d.dy += event.dy;\n this.cdr.detectChanges();\n this.chartService.emitMoveAnnotation({\n event,\n target: d\n });\n });\n d3.select(this.node.nativeElement).call(this.drag);\n }\n }\n}\n","<ng-container *ngIf=\"{\n x: x | async,\n y: y | async\n } as data\">\n <svg:circle\n [attr.r]=\"annotation.style?.radius ?? 5\"\n [attr.cx]=\"data.x(annotation.point.x)\"\n [attr.fill]=\"annotation?.style?.fill ?? 'var(--color-text-90)'\"\n [attr.cy]=\"data.y(annotation.point.y)\">\n </svg:circle>\n <svg:line\n [attr.x1]=\"data.x(annotation.point.x)\"\n [attr.y1]=\"data.y(annotation.point.y)\"\n [attr.x2]=\"data.x(annotation.point.x) + (annotation.dx ?? 0)\"\n [attr.y2]=\"data.y(annotation.point.y) + (annotation.dy ?? 0)\"\n [attr.stroke]=\"annotation.style?.stroke ?? 'var(--color-text-90)'\"\n [attr.stroke-width]=\"annotation.style?.strokeWidth ?? 1\"\n [attr.stroke-dasharray]=\"annotation.style?.strokeDasharray ?? null\"\n >\n </svg:line>\n <svg:foreignObject\n class=\"position-absolute\"\n [attr.width]=\"node?.nativeElement.offsetWidth ?? 0\"\n [attr.height]=\"node?.nativeElement.offsetHeight ?? 0\"\n [attr.x]=\"data.x(annotation.point.x) + (annotation.dx ?? 0) - 10\"\n [attr.y]=\"data.y(annotation.point.y) + (annotation.dy ?? 0) - 10\">\n <div\n #annotationNode\n [style.background-color]=\"annotation.style?.fill ?? 'var(--color-text-90)'\"\n [style.cursor]=\"annotation?.draggable ? 'move' : 'default'\"\n [className]=\"'padding-h-2 ' + annotation.className ?? ''\"\n style=\"border-radius: 2px; display: inline-block;\">\n <ng-container *ngIf=\"annotation.template;else default\">\n <ng-container *ngTemplateOutlet=\"annotation.template;context: {$implicit: annotation}\"></ng-container>\n </ng-container>\n </div>\n </svg:foreignObject>\n</ng-container>\n<ng-template #default>\n {{ annotation.note?.label}}\n</ng-template>\n","import {ChangeDetectorRef, Component, Input, OnInit} from '@angular/core';\nimport {ScaleService} from \"../../service/scale.service\";\nimport {map, Observable, tap} from \"rxjs\";\nimport {ChartService} from \"../../service/chart.service\";\n\n@Component({\n selector: '[teta-crosshair]',\n templateUrl: './crosshair.component.html',\n styleUrls: ['./crosshair.component.scss']\n})\nexport class CrosshairComponent implements OnInit {\n\n @Input() size: DOMRect;\n transform: Observable<any>;\n\n constructor(private scaleService: ScaleService, private chartService: ChartService, private cdr: ChangeDetectorRef) {\n }\n\n ngOnInit(): void {\n this.transform = this.chartService.pointerMove.pipe(\n map((event: PointerEvent) => {\n const composedPath = event.composedPath() as HTMLElement[];\n const classes = composedPath.map((_) => _.classList?.contains('crosshair')).filter((_) => _)\n console.log(classes)\n\n\n return {\n x: event.type === 'mouseleave' ? -9999 : event.offsetX,\n y: event.type === 'mouseleave' ? -9999 : event.offsetY\n }\n }),\n tap(() => {\n setTimeout(() => {\n this.cdr.detectChanges();\n })\n\n })\n )\n\n }\n\n}\n","<ng-container *ngIf=\"transform | async as t\">\n <svg:line [attr.x1]=\"t.x\" y1=\"0\" [attr.x2]=\"t.x\" [attr.y2]=\"size.height\" stroke=\"var(--color-text-90)\" stroke-width=\"0.5\"></svg:line>\n <svg:line x1=\"0\" [attr.y1]=\"t.y\" [attr.x2]=\"size.width\" [attr.y2]=\"t.y\" stroke=\"var(--color-text-90)\" stroke-width=\"0.5\"></svg:line>\n</ng-container>\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n NgZone,\n OnDestroy,\n OnInit,\n} from '@angular/core';\nimport {IChartConfig} from '../model/i-chart-config';\nimport {ChartService} from '../service/chart.service';\nimport {\n animationFrameScheduler,\n combineLatestWith,\n map,\n Observable, observeOn,\n shareReplay,\n withLatestFrom,\n} from 'rxjs';\nimport {Axis} from '../core/axis/axis';\nimport {AxisOrientation} from '../model/enum/axis-orientation';\nimport {ScaleService} from '../service/scale.service';\nimport {ZoomService} from '../service/zoom.service';\nimport {BrushType} from '../model/enum/brush-type';\nimport {ZoomType} from '../model/enum/zoom-type';\nimport {tetaZoneFull} from '@tetacom/ng-components';\nimport {IScalesMap} from '../model/i-scales-map';\n\ntype Opposite = boolean;\n\n@Component({\n selector: 'teta-chart-container',\n templateUrl: './chart-container.component.html',\n styleUrls: ['./chart-container.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ChartContainerComponent implements OnInit, OnDestroy {\n config: Observable<IChartConfig>;\n scales: Observable<IScalesMap>;\n size: Observable<DOMRect>;\n visibleRect: Observable<any>;\n brushScale: Observable<any>;\n zoomType = ZoomType;\n\n private _observer: ResizeObserver;\n private filterPositionMap = new Map<Opposite,\n (axis: Axis) => (_: Axis) => boolean>()\n .set(\n true,\n (axis) => (_: Axis) =>\n _.options.opposite && _.options.visible && axis.index <= _.index\n )\n .set(\n false,\n (axis) => (_: Axis) =>\n _.options.opposite !== true &&\n _.options.visible &&\n _.index <= axis.index\n );\n\n constructor(\n private _svc: ChartService,\n private _cdr: ChangeDetectorRef,\n private _scaleService: ScaleService,\n private _zoomService: ZoomService,\n private _elementRef: ElementRef,\n private _zone: NgZone\n ) {\n this.config = this._svc.config;\n this.size = this._svc.size;\n\n this.scales = this._scaleService.scales.pipe(\n observeOn(animationFrameScheduler),\n tetaZoneFull(this._zone),\n shareReplay({\n bufferSize: 1,\n refCount: true,\n })\n );\n\n this.brushScale = this._scaleService.scales.pipe(\n withLatestFrom(this.config),\n map((data: [IScalesMap, IChartConfig]) => {\n const [{x, y}, config] = data;\n\n return config.brush?.type === BrushType.x || config?.zoom?.type === ZoomType.x ? x.get(0)?.scale : y.get(0)?.scale;\n }),\n shareReplay({\n bufferSize: 1,\n refCount: true,\n })\n );\n\n this.visibleRect = this.size.pipe(\n combineLatestWith(this.scales)\n ).pipe(\n withLatestFrom(this.config),\n map(\n (\n data: [[DOMRect, IScalesMap], IChartConfig]\n ) => {\n const [[size, {x, y}], config] = data;\n const yAxesArray = Array.from(y.values());\n const xAxesArray = Array.from(x.values());\n const left = yAxesArray\n .filter((_) => _.options.opposite !== true && _.options.visible)\n .reduce(this.sumSize, 0);\n\n const right = yAxesArray\n .filter((_) => _.options.opposite && _.options.visible)\n .reduce(this.sumSize, 0);\n\n const bottom = xAxesArray\n .filter((_) => _.options.opposite !== true && _.options.visible)\n .reduce(this.sumSize, 0);\n\n const top = xAxesArray\n .filter((_) => _.options.opposite && _.options.visible)\n .reduce(this.sumSize, 0);\n return {\n x: left + config.bounds?.left,\n y: top + config.bounds?.top,\n width:\n size.width -\n left -\n right -\n config.bounds?.left -\n config.bounds?.right,\n height:\n size.height -\n top -\n bottom -\n config.bounds?.top -\n config.bounds?.bottom,\n };\n }\n ),\n tetaZoneFull(this._zone),\n shareReplay({\n bufferSize: 1,\n refCount: true,\n })\n );\n }\n\n ngOnInit() {\n }\n\n\n ngAfterViewInit(): void {\n this._observer = new ResizeObserver((entries: ResizeObserverEntry[]) => {\n requestAnimationFrame(() => {\n if (\n !Array.isArray(entries) ||\n !entries.length ||\n entries[0].contentRect.width <= 0 ||\n entries[0].contentRect.height <= 0\n ) {\n return;\n }\n this._svc.setSize(entries[0].contentRect);\n });\n });\n this._observer.observe(this._elementRef.nativeElement);\n }\n\n ngOnDestroy() {\n this._observer.disconnect();\n }\n\n private sumSize = (acc, curr) => acc + curr.selfSize;\n\n getTranslate(axis?: Axis, size?: DOMRect): Observable<string> {\n return this.scales.pipe(\n withLatestFrom(this.config),\n map((data: [IScalesMap, IChartConfig]) => {\n const [{x, y}, config] = data;\n const xAxesArray = Array.from(x.values());\n const yAxesArray = Array.from(y.values());\n\n const oppositeFilter = this.filterPositionMap.get(true);\n const nonOppositeFilter = this.filterPositionMap.get(false);\n\n const oppositeOffsetY = yAxesArray.filter(oppositeFilter(axis));\n const nonOppositeOffsetY = yAxesArray.filter(nonOppositeFilter(axis));\n\n const oppositeOffsetX = xAxesArray.filter(oppositeFilter(axis));\n const nonOppositeOffsetX = xAxesArray.filter(nonOppositeFilter(axis));\n\n const oppositeTranslateY = oppositeOffsetY.reduce(\n (acc, curr) => acc + curr.selfSize,\n config.bounds?.right\n );\n const nonOppisteTranslateY = nonOppositeOffsetY.reduce(\n (acc, curr) => acc + curr.selfSize,\n config.bounds?.left\n );\n\n const oppositeTranslateX = oppositeOffsetX.reduce(\n (acc, curr) => acc + curr.selfSize,\n config.bounds?.top\n );\n\n const nonOppisteTranslateX = nonOppositeOffsetX.reduce(\n (acc, curr) => acc + curr.selfSize,\n config.bounds?.bottom\n );\n\n const left = yAxesArray\n .filter((_) => _.options.visible && _.options.opposite !== true)\n .reduce((acc, curr) => acc + curr.selfSize, config.bounds?.left);\n\n const top = xAxesArray\n .filter((_) => _.options.visible && _.options.opposite === true)\n .reduce((acc, curr) => acc + curr.selfSize, config.bounds?.top);\n\n if (axis.orientation === AxisOrientation.x) {\n return `translate(${left}, ${\n axis.options.opposite\n ? oppositeTranslateX\n : size.height - nonOppisteTranslateX\n })`;\n }\n\n if (axis.orientation === AxisOrientation.y) {\n return `translate(${\n axis.options.opposite\n ? size.width - oppositeTranslateY\n : nonOppisteTranslateY\n }, ${top})`;\n }\n\n return 'translate(0, 0)';\n })\n );\n }\n\n identify(index, item) {\n return item.value.index;\n }\n\n click(\n event: PointerEvent,\n xScales: Map<number, Axis>,\n yScales: Map<number, Axis>\n ) {\n const x = xScales.get(0).scale;\n const y = yScales.get(0).scale;\n this._svc.emitChartClick({\n event: event,\n target: {\n x: x.invert(event.offsetX),\n y: y.invert(event.offsetY),\n },\n });\n }\n\n contextMenu(\n event: MouseEvent,\n xScales: Map<number, Axis>,\n yScales: Map<number, Axis>\n ) {\n const x = xScales.get(0).scale;\n const y = yScales.get(0).scale;\n this._svc.emitChartContextMenu({\n event: event,\n target: {\n x: x.invert(event.offsetX),\n y: y.invert(event.offsetY),\n },\n });\n }\n\n mouseMove(event) {\n this._svc.setPointerMove(event);\n }\n\n mouseLeave(event) {\n this._svc.setPointerMove(event);\n }\n}\n","<ng-container *ngIf=\"{\n size: size | async,\n config: config | async,\n scales: scales | async,\n visibleRect: visibleRect | async,\n brushScale: brushScale | async\n} as data\" xmlns:svg=\"http://www.w3.org/1999/html\">\n <teta-tooltip *ngIf=\"data.config?.tooltip?.enable\"\n [size]=\"data.size\"\n [config]=\"data.config\"></teta-tooltip>\n <ng-container *ngIf=\"data.visibleRect?.width > 0 && data.visibleRect?.height > 0 && data.scales.x.size > 0 && data.scales.y.size > 0\">\n <svg height=\"100%\" width=\"100%\" class=\"position-absolute\">\n <g class=\"y-axis-container\">\n <ng-container *ngFor=\"let item of data.scales.y | keyvalue; trackBy: identify\">\n <ng-container *ngIf=\"item.value.options.visible\">\n <g\n teta-y-axis\n [axis]=\"item.value\"\n [size]=\"data.visibleRect\"\n [attr.transform]=\"getTranslate(item.value, data.size) | async\"></g>\n <rect\n tetaZoomable\n fill-opacity=\"0\"\n [brushScale]=\"data.brushScale\"\n [scale]=\"data.scales.y.get(item.key).scale\"\n [axis]=\"item.value\"\n [config]=\"data.config\"\n [size]=\"data.visibleRect\"\n [attr.x]=\"item.value.options.opposite ? 0 : -item.value.selfSize\"\n [attr.y]=\"0\"\n [attr.height]=\"data.visibleRect.height\"\n [attr.width]=\"item.value.selfSize\"\n [attr.transform]=\"getTranslate(item.value, data.size) | async\"></rect>\n </ng-container>\n\n </ng-container>\n </g>\n <g class=\"x-axis-container\">\n <ng-container *ngFor=\"let item of data.scales.x | keyvalue; trackBy: identify\">\n <ng-container *ngIf=\"item.value.options.visible && data.scales.x.size > 0 && data.scales.y.size > 0\">\n <g\n teta-x-axis\n [axis]=\"item.value\"\n [size]=\"data.visibleRect\"\n [attr.transform]=\"getTranslate(item.value, data.size) | async\"></g>\n <rect\n tetaZoomable\n fill-opacity=\"0\"\n [brushScale]=\"data.brushScale\"\n [scale]=\"data.scales.x.get(item.key).scale\"\n [axis]=\"item.value\"\n [config]=\"data.config\"\n [size]=\"data.visibleRect\"\n [attr.x]=\"0\"\n [attr.y]=\"item.value.options.opposite ? -item.value.selfSize : 0\"\n [attr.width]=\"data.visibleRect.width\"\n [attr.height]=\"item.value.selfSize\"\n [attr.transform]=\"getTranslate(item.value, data.size) | async\"></rect>\n </ng-container>\n </ng-container>\n </g>\n </svg>\n </ng-container>\n <ng-container *ngIf=\"data.visibleRect?.width > 0 && data.visibleRect?.height > 0 && data.scales.x.size > 0 && data.scales.y.size > 0\">\n <svg\n tetaBrushable\n tetaZoomable\n class=\"position-absolute\"\n [size]=\"data.visibleRect\"\n [brushScale]=\"data.brushScale\"\n [scale]=\"data.brushScale\"\n [config]=\"data.config\"\n [axis]=\"data.config?.zoom?.type === zoomType.x ? data.scales.x.get(0) : data.scales.y.get(0)\"\n [attr.width]=\"data.visibleRect.width\"\n [attr.height]=\"data.visibleRect.height\"\n [attr.viewBox]=\"'0 0 ' + data.visibleRect.width + ' ' + data.visibleRect.height\"\n [style.transform]=\"'translate('+ data.visibleRect.x +'px, '+ data.visibleRect.y +'px)'\"\n (contextmenu)=\"contextMenu($event, data.scales.x, data.scales.y)\"\n (click)=\"click($event, data.scales.x, data.scales.y)\"\n (mouseleave)=\"mouseLeave($event)\"\n (mousemove)=\"mouseMove($event)\">\n\n <g class=\"gridlines\"\n teta-gridlines\n *ngIf=\"data.config.gridLines?.enable !== false\"\n [size]=\"data.size\"></g>\n\n <g class=\"x-axis-plotband-container\">\n <ng-container *ngFor=\"let axis of data.config.xAxis; let i = index\">\n <g teta-plot-band *ngFor=\"let plotBand of axis.plotBands\"\n [plotBand]=\"plotBand\"\n [scale]=\"data.scales.x.get(i).scale\"\n [size]=\"data.size\"\n [axis]=\"data.scales.x.get(i)\"></g>\n </ng-container>\n </g>\n <g class=\"y-axis-plotband-container\">\n <ng-container *ngFor=\"let axis of data.config.yAxis; let i = index\">\n <g teta-plot-band *ngFor=\"let plotBand of axis.plotBands\"\n [plotBand]=\"plotBand\"\n [scale]=\"data.scales.y.get(i).scale\"\n [size]=\"data.size\"\n [axis]=\"data.scales.y.get(i)\"></g>\n </ng-container>\n </g>\n <g class=\"x-axis-plotline-container\">\n <ng-container *ngFor=\"let axis of data.config.xAxis; let i = index\">\n <g teta-plot-line *ngFor=\"let plotLine of axis.plotLines\"\n [plotLine]=\"plotLine\"\n [scale]=\"data.scales.x.get(i).scale\"\n [size]=\"data.size\"\n [axis]=\"data.scales.x.get(i)\"></g>\n </ng-container>\n </g>\n <g class=\"y-axis-plotline-container\">\n <ng-container *ngFor=\"let axis of data.config.yAxis; let i = index\">\n <g teta-plot-line *ngFor=\"let plotLine of axis.plotLines\"\n [plotLine]=\"plotLine\"\n [scale]=\"data.scales.y.get(i).scale\"\n [size]=\"data.size\"\n [axis]=\"data.scales.x.get(i)\"></g>\n </ng-container>\n </g>\n <g class=\"series-container\">\n <ng-container *ngFor=\"let series of data.config.series\">\n <g teta-series-host\n *ngIf=\"series.visible\"\n [config]=\"data.config\"\n [series]=\"series\"></g>\n </ng-container>\n </g>\n <g class=\"annotations\">\n <g teta-annotation\n *ngFor=\"let annotation of data.config.annotations\"\n [annotation]=\"annotation\"></g>\n </g>\n <g class=\"crosshair\" *ngIf=\"data.config.tooltip?.showCrosshair\">\n <g teta-crosshair [size]=\"data.visibleRect\"></g>\n </g>\n </svg>\n\n </ng-container>\n</ng-container>\n","import {\n ChangeDetectionStrategy,\n Component,\n HostBinding,\n Input,\n} from '@angular/core';\nimport { Series } from '../model/series';\nimport { BasePoint } from '../model/base-point';\nimport { SeriesType } from '../model/enum/series-type';\nimport {ChartService} from \"../service/chart.service\";\n\n@Component({\n selector: 'teta-legend',\n templateUrl: './legend.component.html',\n styleUrls: ['./legend.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class LegendComponent {\n private sizeMapping = new Map<SeriesType, number>()\n .set(SeriesType.line, 2)\n .set(SeriesType.scatter, 12)\n .set(SeriesType.bar, 12)\n .set(SeriesType.area, 2)\n .set(SeriesType.block, 12)\n .set(SeriesType.blockArea, 2);\n\n @Input() series: Array<Series<BasePoint>>;\n @HostBinding('class.padding-bottom-4') classLegend = true;\n\n constructor(private chartService: ChartService) {}\n\n getHeight(serie: Series<BasePoint>) {\n return this.sizeMapping.get(serie.type ?? SeriesType.line);\n }\n\n click(serie: Series<BasePoint>) {\n this.chartService.toggleVisibilitySeries([serie.id]);\n }\n}\n","<ng-container *ngFor=\"let serie of series\" class=\"padding-bottom-4\">\n <div *ngIf=\"serie?.showInLegend !== false\">\n <div class=\"legend-item cursor-pointer\" (click)=\"click(serie)\">\n <div class=\"legend-icon-form\"\n [style.height.px]=\"getHeight(serie)\"\n [style.border-top-color]=\"serie.visible ? serie.color : 'var(--color-text-30)'\"\n [style.border-top-style]=\"serie.style?.strokeDasharray ? 'dashed' : 'solid'\"\n [style.border-width.px]=\"serie.style?.strokeDasharray ? 1 : 2\"></div>\n <div class=\"legend-label\" style=\"user-select: none\" [style.text-decoration]=\"serie.visible ? 'none' : 'line-through'\">{{ serie.name }}</div>\n </div>\n </div>\n</ng-container>\n","import {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n Input,\n OnChanges,\n OnDestroy,\n OnInit,\n Output,\n SimpleChanges,\n} from '@angular/core';\nimport {ChartService} from '../service/chart.service';\nimport {IChartConfig} from '../model/i-chart-config';\nimport {BasePoint} from '../model/base-point';\nimport {ZoomService} from '../service/zoom.service';\nimport {ScaleService} from '../service/scale.service';\nimport {BrushService} from '../service/brush.service';\nimport {IChartEvent} from '../model/i-chart-event';\nimport {PlotLine} from '../model/plot-line';\nimport {PlotBand} from '../model/plot-band';\nimport {IPointMove} from '../model/i-point-move';\nimport {map, Observable, takeWhile, withLatestFrom} from 'rxjs';\nimport {Annotation} from '../model/annotation';\nimport {TooltipTracking} from '../model/enum/tooltip-tracking';\nimport {IScalesMap} from \"../model/i-scales-map\";\n\n@Component({\n selector: 'teta-svg-chart',\n templateUrl: './chart.component.html',\n styleUrls: ['./chart.component.scss'],\n providers: [ChartService, ZoomService, ScaleService, BrushService],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ChartComponent implements OnInit, OnChanges, OnDestroy {\n hasSeriesData: Observable<boolean>;\n svcConfig: Observable<IChartConfig>;\n @Output()\n pointerMove: EventEmitter<IChartEvent<Map<number, number>>> = new EventEmitter<IChartEvent<Map<number, number>>>();\n\n @Output()\n plotBandsMove: EventEmitter<IChartEvent<PlotBand>> = new EventEmitter<IChartEvent<PlotBand>>();\n\n @Output()\n plotBandClick: EventEmitter<IChartEvent<PlotBand>> = new EventEmitter<IChartEvent<PlotBand>>();\n\n @Output()\n plotBandContextMenu: EventEmitter<IChartEvent<PlotBand>> = new EventEmitter<IChartEvent<PlotBand>>();\n\n @Output()\n plotLinesMove: EventEmitter<IChartEvent<PlotLine>> = new EventEmitter<IChartEvent<PlotLine>>();\n\n @Output()\n pointMove: EventEmitter<IChartEvent<IPointMove>> = new EventEmitter<IChartEvent<IPointMove>>();\n\n @Output()\n chartClick: EventEmitter<IChartEvent<BasePoint>> = new EventEmitter<IChartEvent<BasePoint>>();\n\n @Output()\n chartContextMenu: EventEmitter<IChartEvent<BasePoint>> = new EventEmitter<IChartEvent<BasePoint>>();\n\n @Output()\n annotationContextMenu: EventEmitter<IChartEvent<Annotation>> = new EventEmitter<IChartEvent<Annotation>>();\n\n @Output()\n annotationClick: EventEmitter<IChartEvent<Annotation>> = new EventEmitter<IChartEvent<Annotation>>();\n\n @Output()\n annotationMove: EventEmitter<IChartEvent<Annotation>> = new EventEmitter<IChartEvent<Annotation>>();\n\n @Output()\n zoomServiceInstance: EventEmitter<ZoomService> = new EventEmitter<ZoomService>();\n\n\n @Input() set config(config: IChartConfig) {\n this.chartService.setConfig(config);\n }\n\n private _alive = true;\n\n constructor(public chartService: ChartService,\n public zoomService: ZoomService,\n public scaleService: ScaleService) {\n\n this.svcConfig = this.chartService.config;\n this.hasSeriesData = this.svcConfig.pipe(\n map(\n (_) => _.series?.length > 0 && _.series?.some((_) => _.data?.length > 0)\n )\n );\n }\n\n ngOnChanges(changes: SimpleChanges) {\n }\n\n ngOnInit(): void {\n this.chartService.pointerMove\n .pipe(\n takeWhile(() => this._alive),\n withLatestFrom(this.scaleService.scales, this.chartService.config)\n )\n .subscribe((data: [PointerEvent, IScalesMap, IChartConfig]) => {\n const [event, {x, y}, config] = data;\n const tooltipTracking = config?.tooltip?.tracking;\n if (tooltipTracking === TooltipTracking.y) {\n const result = new Map<number, number>();\n y.forEach((value, key) => {\n result.set(key, value.scale.invert(event.offsetY));\n });\n this.pointerMove.emit({\n event: event,\n target: result\n });\n } else {\n const result = new Map<number, number>();\n x.forEach((value, key) => {\n result.set(key, value.scale.invert(event.offsetX));\n });\n this.pointerMove.emit({\n event: event,\n target: result\n });\n }\n });\n\n this.chartService.plotBandEvent\n .pipe(takeWhile(() => this._alive))\n .subscribe((_) => {\n this.plotBandsMove.emit(_);\n });\n\n this.chartService.plotLineMove.pipe(takeWhile(() => this._alive)).subscribe((_) => {\n this.plotLinesMove.emit(_);\n });\n\n this.chartService.pointMove.pipe(takeWhile(() => this._alive)).subscribe((_) => {\n this.pointMove.emit(_);\n });\n\n this.chartService.chartClick\n .pipe(\n takeWhile(() => this._alive)\n ).subscribe((_) => {\n this.chartClick.emit(_);\n });\n\n this.chartService.chartContextMenu\n .pipe(\n takeWhile(() => this._alive)\n ).subscribe((_) => {\n this.chartContextMenu.emit(_);\n });\n\n this.chartService.plotBandClick\n .pipe(\n takeWhile(() => this._alive))\n .subscribe((_) => {\n this.plotBandClick.emit(_);\n });\n\n this.chartService.plotBandContextMenu\n .pipe(\n takeWhile(() => this._alive))\n .subscribe((_) => {\n this.plotBandContextMenu.emit(_);\n });\n\n this.chartService.annotationContextMenu\n .pipe(\n takeWhile(() => this._alive))\n .subscribe((_) => {\n this.annotationContextMenu.emit(_);\n });\n\n this.chartService.annotationClick\n .pipe(\n takeWhile(() => this._alive))\n .subscribe((_) => {\n this.annotationClick.emit(_);\n });\n\n this.chartService.annotationMove\n .pipe(\n takeWhile(() => this._alive))\n .subscribe((_) => {\n this.annotationMove.emit(_);\n });\n\n this.chartService.zoomInstance\n .pipe(\n takeWhile(() => this._alive))\n .subscribe((_) => {\n this.zoomServiceInstance.emit(_);\n });\n\n }\n\n ngAfterViewInit() {\n }\n\n ngOnDestroy() {\n this._alive = false;\n this.zoomService.broadcastSubscription?.forEach((sub) => {\n sub.unsubscribe();\n });\n }\n}\n","<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 position-relative\"></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 justify-content-center\">\n <span class=\"font-body-3 color-text-40\" style=\"overflow: hidden; text-overflow: ellipsis; text-align: center; white-space: nowrap\">Данные отсутствуют</span>\n </div>\n</ng-template>\n","import {NgModule} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {ChartComponent} from './chart/chart.component';\nimport {SeriesHostComponent} from './chart-container/series-host/series-host.component';\nimport {ChartContainerComponent} from './chart-container/chart-container.component';\nimport {LegendComponent} from './legend/legend.component';\nimport {SeriesBaseComponent} from './base/series-base.component';\nimport {LineSeriesComponent} from './chart-container/series/line/line-series.component';\nimport {GridlinesComponent} from './chart-container/gridlines/gridlines.component';\nimport {XAxisComponent} from './chart-container/x-axis/x-axis.component';\nimport {YAxisComponent} from './chart-container/y-axis/y-axis.component';\nimport {PlotlineComponent} from './chart-container/plotline/plotline.component';\nimport {PlotBandComponent} from './chart-container/plotband/plot-band.component';\nimport {BarSeriesComponent} from './chart-container/series/bar/bar-series.component';\nimport {TooltipComponent} from './chart-container/tooltip/tooltip.component';\nimport {ZoomableDirective} from './directives/zoomable.directive';\nimport {BrushableDirective} from './directives/brushable.directive';\nimport {ScatterSeriesComponent} from './chart-container/series/scatter-series/scatter-series.component';\nimport {BlockSeriesComponent} from './chart-container/series/block-series/block-series.component';\nimport {BlockAreaSeriesComponent} from './chart-container/series/block-area-series/block-area-series.component';\nimport {AreaSeriesComponent} from './chart-container/series/area-series/area-series.component';\nimport {AnnotationComponent} from './chart-container/annotation/annotation.component';\nimport {LinearSeriesBase} from './chart-container/series/linear-series-base';\nimport { CrosshairComponent } from './chart-container/crosshair/crosshair.component';\nimport {LetModule} from '@tetacom/ng-components';\n\n@NgModule({\n declarations: [\n ChartComponent,\n SeriesHostComponent,\n ChartContainerComponent,\n LegendComponent,\n SeriesBaseComponent,\n LinearSeriesBase,\n LineSeriesComponent,\n GridlinesComponent,\n XAxisComponent,\n YAxisComponent,\n PlotlineComponent,\n PlotBandComponent,\n BarSeriesComponent,\n TooltipComponent,\n ZoomableDirective,\n BrushableDirective,\n AreaSeriesComponent,\n ScatterSeriesComponent,\n BlockSeriesComponent,\n BlockAreaSeriesComponent,\n AnnotationComponent,\n CrosshairComponent,\n ],\n exports: [\n ChartComponent,\n LegendComponent,\n SeriesBaseComponent,\n LineSeriesComponent,\n BarSeriesComponent,\n ScatterSeriesComponent,\n AreaSeriesComponent,\n BlockSeriesComponent,\n BlockAreaSeriesComponent,\n ],\n imports: [CommonModule, LetModule],\n})\nexport class ChartModule {\n}\n","import { SvgAttributes } from './svg-attributes';\n\nexport class PlotBand {\n id?: number | string;\n name?: string;\n from: number;\n to: number;\n label?: string;\n showGrabbers?: boolean;\n draggable?: boolean;\n resizable?: boolean;\n min?: number;\n max?: number;\n style?: {\n plotBand?: SvgAttributes;\n grabbers?: SvgAttributes;\n };\n\n constructor(options?: {\n id?: number | string;\n name?: string;\n from: number;\n to: number;\n label?: string;\n showGrabbers?: boolean;\n draggable?: boolean;\n resizable?: boolean;\n min?: number;\n max?: number;\n style?: {\n plotBand?: SvgAttributes;\n grabbers?: SvgAttributes;\n };\n }) {\n this.id = options?.id;\n this.name = options?.name;\n this.from = options?.from;\n this.to = options?.to;\n this.label = options?.label;\n this.showGrabbers =\n options?.showGrabbers != null ? options.showGrabbers : true;\n this.draggable = options?.draggable != null ? options?.draggable : false;\n this.resizable = options?.resizable != null ? options?.resizable : true;\n this.min = options?.min;\n this.max = options?.max;\n this.style = options?.style;\n }\n}\n","import {SvgAttributes} from './svg-attributes';\n\nexport class PlotLine {\n id?: number | string;\n name?: string;\n value: number;\n label?: string;\n min?: number;\n max?: number;\n draggable?: boolean;\n style?: SvgAttributes;\n\n constructor(options?: {\n id?: number | string;\n name?: string;\n value: number;\n label?: string;\n min?: number;\n max?: number;\n draggable?: boolean;\n style?: SvgAttributes;\n }) {\n this.id = options?.id;\n this.name = options?.name;\n this.value = options?.value;\n this.label = options?.label;\n this.min = options?.min;\n this.max = options?.max;\n this.draggable = options?.draggable;\n this.style = options?.style;\n }\n}\n","/*\n * Public API Surface of chart\n */\n\nexport * from './chart/chart.module';\nexport * from './chart/service/public-api';\nexport * from './chart/base/series-base.component';\nexport * from './chart/chart/chart.component';\nexport * from './chart/legend/legend.component';\nexport * from './chart/model/public-api';\nexport * from './chart/chart-container/series/public-api';\nexport * from './chart/core/axis/axis';\nexport * from './chart/core/utils/public-api'\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.ChartService","i2.ZoomService","i1.BroadcastService","i2.ScaleService","i3.ZoomService","i1.ScaleService","i2.ChartService","i3","i2","i1.ZoomService","i3.ChartService","tap","i2.BroadcastService","i1.BrushService","i5.SeriesHostComponent","i6.GridlinesComponent","i7.XAxisComponent","i8.YAxisComponent","i9.PlotlineComponent","i10.PlotBandComponent","i11.TooltipComponent","i12.ZoomableDirective","i13.BrushableDirective","i14.AnnotationComponent","i15.CrosshairComponent","i3.ScaleService","i5.ChartContainerComponent","i6.LegendComponent"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"tetacom-svg-charts.mjs","sources":["../../src/chart/model/enum/zoom-type.ts","../../src/chart/model/chart-bounds.ts","../../src/chart/model/enum/tooltip-tracking.ts","../../src/chart/model/enum/zoom-behavior-type.ts","../../src/chart/default/default-chart-config.ts","../../src/chart/model/enum/scale-type.ts","../../src/chart/default/default-axis-config.ts","../../src/chart/model/enum/series-type.ts","../../src/chart/model/enum/fill-type.ts","../../src/chart/model/enum/clip-points-direction.ts","../../src/chart/default/default-series-config.ts","../../src/chart/service/chart.service.ts","../../src/chart/model/enum/axis-orientation.ts","../../src/chart/service/zoom.service.ts","../../src/chart/core/utils/get-text-width.ts","../../src/chart/core/utils/generate-ticks.ts","../../src/chart/core/axis/builders/axis-size-builder.ts","../../src/chart/core/axis/builders/extremes-builder.ts","../../src/chart/core/axis/axis.ts","../../src/chart/service/scale.service.ts","../../src/chart/model/enum/brush-type.ts","../../src/chart/model/i-broadcast-message.ts","../../src/chart/service/broadcast.service.ts","../../src/chart/service/brush.service.ts","../../src/chart/base/series-base.component.ts","../../src/chart/model/enum/drag-point-type.ts","../../src/chart/chart-container/series/linear-series-base.ts","../../src/chart/chart-container/series/line/line-series.component.ts","../../src/chart/chart-container/series/line/line-series.component.html","../../src/chart/chart-container/series/bar/bar-series.component.ts","../../src/chart/chart-container/series/bar/bar-series.component.html","../../src/chart/chart-container/series/scatter-series/scatter-series.component.ts","../../src/chart/chart-container/series/scatter-series/scatter-series.component.html","../../src/chart/chart-container/series/block-series/block-series.component.ts","../../src/chart/chart-container/series/block-series/block-series.component.html","../../src/chart/chart-container/series/block-area-series/block-area-series.component.ts","../../src/chart/chart-container/series/block-area-series/block-area-series.component.html","../../src/chart/chart-container/series/area-series/area-series.component.ts","../../src/chart/chart-container/series/area-series/area-series.component.html","../../src/chart/default/defaultSeriesTypeMapping.ts","../../src/chart/chart-container/series-host/series-host.component.ts","../../src/chart/chart-container/gridlines/gridlines.component.ts","../../src/chart/chart-container/gridlines/gridlines.component.html","../../src/chart/chart-container/x-axis/x-axis.component.ts","../../src/chart/chart-container/x-axis/x-axis.component.html","../../src/chart/chart-container/y-axis/y-axis.component.ts","../../src/chart/chart-container/y-axis/y-axis.component.html","../../src/chart/chart-container/plotline/plotline.component.ts","../../src/chart/chart-container/plotline/plotline.component.html","../../src/chart/chart-container/plotband/plot-band.component.ts","../../src/chart/chart-container/plotband/plot-band.component.html","../../src/chart/chart-container/tooltip/tooltip.component.ts","../../src/chart/chart-container/tooltip/tooltip.component.html","../../src/chart/directives/zoomable.directive.ts","../../src/chart/directives/brushable.directive.ts","../../src/chart/chart-container/annotation/annotation.component.ts","../../src/chart/chart-container/annotation/annotation.component.html","../../src/chart/chart-container/crosshair/crosshair.component.ts","../../src/chart/chart-container/crosshair/crosshair.component.html","../../src/chart/chart-container/chart-container.component.ts","../../src/chart/chart-container/chart-container.component.html","../../src/chart/legend/legend.component.ts","../../src/chart/legend/legend.component.html","../../src/chart/chart/chart.component.ts","../../src/chart/chart/chart.component.html","../../src/chart/chart.module.ts","../../src/chart/model/plot-band.ts","../../src/chart/model/plot-line.ts","../../src/public-api.ts","../../src/tetacom-svg-charts.ts"],"sourcesContent":["export enum ZoomType {\n x,\n y,\n xy,\n}\n","export class ChartBounds {\n top?: number = 0;\n right?: number = 0;\n bottom?: number = 0;\n left?: number = 0;\n\n constructor(options?: {\n top?: number;\n right?: number;\n bottom?: number;\n left?: number;\n }) {\n this.top = options?.top || 0;\n this.right = options?.right || 0;\n this.bottom = options?.bottom || 0;\n this.left = options?.left || 0;\n }\n}\n","export enum TooltipTracking {\n x,\n y,\n}\n","export enum ZoomBehaviorType {\n move,\n wheel\n}\n","import {IChartConfig} from '../model/i-chart-config';\nimport {ZoomType} from '../model/enum/zoom-type';\nimport {ChartBounds} from '../model/chart-bounds';\nimport {TooltipTracking} from '../model/enum/tooltip-tracking';\nimport {ZoomBehaviorType} from \"../model/enum/zoom-behavior-type\";\n\nexport const defaultChartConfig = (): IChartConfig => ({\n name: null,\n zoom: {\n enable: true,\n type: ZoomType.x,\n zoomBehavior: ZoomBehaviorType.move\n },\n bounds: new ChartBounds({\n bottom: 12,\n left: 12,\n top: 12,\n right: 12\n }),\n legend: {\n enable: true,\n },\n tooltip: {\n enable: true,\n showMarkers: true,\n tracking: TooltipTracking.x,\n showCrosshair: false,\n padding: {\n x: 16,\n y: 16\n }\n },\n xAxis: [],\n yAxis: [],\n series: [],\n gridLines: {\n enable: true\n }\n});\n","export enum ScaleType {\n linear,\n log,\n symlog,\n pow,\n sqrt,\n time,\n category,\n}\n","import { AxisOptions } from '../model/axis-options';\nimport { ScaleType } from '../model/enum/scale-type';\n\nexport const defaultAxisConfig: AxisOptions = {\n visible: true,\n zoom: true,\n scaleType: {\n type: ScaleType.linear,\n },\n niceTicks: false,\n};\n","export enum SeriesType {\n line,\n bar,\n area,\n scatter,\n block,\n blockArea\n}\n","export enum FillType {\n default,\n gradient,\n}\nexport enum FillDirection {\n x,\n y,\n}\n","export enum ClipPointsDirection {\n x,\n y\n}\n\n","import {Series} from '../model/series';\nimport {BasePoint} from '../model/base-point';\nimport {SeriesType} from '../model/enum/series-type';\nimport {FillType} from '../model/enum/fill-type';\nimport {ClipPointsDirection} from \"../model/enum/clip-points-direction\";\n\nexport const defaultSeriesConfig = (): Series<BasePoint> => ({\n data: [],\n type: SeriesType.line,\n xAxisIndex: 0,\n yAxisIndex: 0,\n fillType: FillType.default,\n color: 'coral',\n visible: true,\n clipPointsDirection: ClipPointsDirection.x\n});\n","import {Injectable} from '@angular/core';\nimport {IChartConfig} from '../model/i-chart-config';\nimport {\n BehaviorSubject,\n filter,\n lastValueFrom,\n map,\n Observable,\n of,\n shareReplay,\n Subject,\n take, takeLast, tap,\n withLatestFrom,\n} from 'rxjs';\nimport {IChartEvent} from '../model/i-chart-event';\nimport {IDisplayTooltip} from '../model/i-display-tooltip';\nimport {PlotBand} from '../model/plot-band';\nimport {PlotLine} from '../model/plot-line';\nimport {IPointMove} from '../model/i-point-move';\nimport {defaultChartConfig} from '../default/default-chart-config';\nimport {defaultAxisConfig} from '../default/default-axis-config';\nimport {defaultSeriesConfig} from '../default/default-series-config';\nimport {BasePoint} from '../model/base-point';\nimport {Series} from '../model/series';\nimport {Annotation} from '../model/annotation';\nimport {ClipPointsDirection} from \"../model/enum/clip-points-direction\";\nimport {ZoomService} from \"./zoom.service\";\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ChartService {\n public id: Observable<string>;\n public config: Observable<IChartConfig>;\n public size: Observable<DOMRect>;\n public pointerMove: Observable<PointerEvent>;\n public tooltips: Observable<Map<Series<BasePoint>, IDisplayTooltip>>;\n public plotBandEvent: Observable<IChartEvent<PlotBand>>;\n public plotLineMove: Observable<IChartEvent<PlotLine>>;\n public plotBandClick: Observable<IChartEvent<PlotBand>>;\n public plotBandContextMenu: Observable<IChartEvent<PlotBand>>;\n public pointMove: Observable<IChartEvent<IPointMove>>;\n public annotationMove: Observable<IChartEvent<Annotation>>;\n public annotationClick: Observable<IChartEvent<Annotation>>;\n public annotationContextMenu: Observable<IChartEvent<Annotation>>;\n public chartClick: Observable<IChartEvent<BasePoint>>;\n public chartContextMenu: Observable<IChartEvent<BasePoint>>;\n public zoomInstance: Observable<ZoomService>;\n\n private config$ = new BehaviorSubject<IChartConfig>(defaultChartConfig());\n private size$ = new BehaviorSubject<DOMRect>(new DOMRectReadOnly());\n private pointerMove$ = new Subject<PointerEvent>();\n private tooltips$ = new BehaviorSubject<Map<Series<BasePoint>, IDisplayTooltip>>(new Map());\n private plotBandEvent$ = new Subject<IChartEvent<PlotBand>>();\n private plotLineMove$ = new Subject<IChartEvent<PlotLine>>();\n private pointMove$ = new Subject<IChartEvent<IPointMove>>();\n private chartClick$ = new Subject<IChartEvent<BasePoint>>();\n private chartContextMenu$ = new Subject<IChartEvent<BasePoint>>();\n private annotationEvent$ = new Subject<IChartEvent<Annotation>>();\n private annotationMove$ = new Subject<IChartEvent<Annotation>>();\n private zoomInstance$ = new Subject<ZoomService>();\n\n\n private static _hiddenSeriesPostfix = 'hidden_series';\n\n constructor() {\n this.id = of((Date.now() + Math.random()).toString(36));\n\n this.config = this.config$.asObservable().pipe(\n withLatestFrom(this.id),\n map(this.setDefaults),\n map(this.setPreparationData),\n map(this.restoreLocalStorage),\n shareReplay({\n bufferSize: 1,\n refCount: true,\n })\n );\n\n\n this.size = this.size$.asObservable();\n this.pointerMove = this.pointerMove$.asObservable();\n this.tooltips = this.tooltips$.asObservable();\n this.plotBandEvent = this.plotBandEvent$.asObservable();\n this.plotLineMove = this.plotLineMove$.asObservable();\n this.pointMove = this.pointMove$.asObservable();\n this.chartClick = this.chartClick$.asObservable();\n this.chartContextMenu = this.chartContextMenu$.asObservable();\n this.annotationClick = this.annotationEvent$\n .asObservable()\n .pipe(filter((_) => _?.event?.type === 'click'));\n this.annotationContextMenu = this.annotationEvent$\n .asObservable()\n .pipe(filter((_) => _?.event?.type === 'contextmenu'));\n this.annotationMove = this.annotationMove$.asObservable();\n\n this.plotBandClick = this.plotBandEvent$\n .asObservable()\n .pipe(filter((_) => _?.event?.type === 'click'));\n this.plotBandContextMenu = this.plotBandEvent$\n .asObservable()\n .pipe(filter((_) => _?.event?.type === 'contextmenu'));\n this.zoomInstance = this.zoomInstance$.asObservable();\n }\n\n public setConfig(config: IChartConfig) {\n this.clearTooltips();\n this.config$.next(config);\n }\n\n public setSize(size: DOMRect) {\n this.size$.next(size);\n }\n\n public setPointerMove(event: PointerEvent) {\n this.pointerMove$.next(event);\n }\n\n public setTooltip(tooltip: IDisplayTooltip) {\n const currentTooltips = this.tooltips$.value;\n if (!tooltip.point) {\n currentTooltips.delete(tooltip.series);\n } else {\n currentTooltips.set(tooltip.series, tooltip);\n }\n this.tooltips$.next(\n new Map<Series<BasePoint>, IDisplayTooltip>(currentTooltips)\n );\n }\n\n public clearTooltips() {\n this.tooltips$.next(new Map());\n }\n\n public async toggleVisibilitySeries(seriesIndex: Array<number | string>, visible?: boolean) {\n\n if (seriesIndex?.length === 0) {\n return;\n }\n\n const currentConfig = await lastValueFrom(this.config.pipe(take(1)));\n\n seriesIndex.forEach((serieIndex) => {\n const currentSerieIndex = currentConfig.series.findIndex((_) => _.id === serieIndex);\n\n if (currentSerieIndex === -1) {\n return;\n }\n currentConfig.series[currentSerieIndex].visible = visible !== undefined ? visible : !currentConfig.series[currentSerieIndex].visible;\n\n const seriesLinkCount = currentConfig.series.filter((_) => _.yAxisIndex === currentConfig.series[currentSerieIndex].yAxisIndex && _.visible === true).length\n currentConfig.yAxis[currentConfig.series[currentSerieIndex].yAxisIndex].visible = seriesLinkCount !== 0;\n })\n\n try {\n this.saveCookie(currentConfig);\n } finally {\n this.config$.next(currentConfig);\n }\n }\n\n public emitMoveAnnotation(event: IChartEvent<Annotation>) {\n this.annotationMove$.next(event);\n }\n\n public emitAnnotation(event: IChartEvent<Annotation>) {\n this.annotationEvent$.next(event);\n }\n\n public emitPlotband(event: IChartEvent<PlotBand>) {\n this.plotBandEvent$.next(event);\n }\n\n public emitPlotline(event: IChartEvent<PlotLine>) {\n this.plotLineMove$.next(event);\n }\n\n public emitPoint(event: IChartEvent<IPointMove>) {\n this.pointMove$.next(event);\n }\n\n public emitChartClick(event: IChartEvent<BasePoint>) {\n this.chartClick$.next(event);\n }\n\n public emitChartContextMenu(event: IChartEvent<BasePoint>) {\n this.chartContextMenu$.next(event);\n }\n\n public emitZoomInstance(event: ZoomService) {\n this.zoomInstance$.next(event);\n }\n\n private saveCookie(config: IChartConfig) {\n if(!config.name) return;\n const hiddenSeries = config.series?.filter((_) => !_.visible).map((_) => _.id);\n localStorage.setItem(`${config.name}_${ChartService._hiddenSeriesPostfix}`, JSON.stringify(hiddenSeries))\n }\n\n private restoreLocalStorage(config: IChartConfig): IChartConfig {\n if(!config.name) return config;\n\n const hiddenSeries = localStorage.getItem(`${config.name}_${ChartService._hiddenSeriesPostfix}`);\n if (hiddenSeries) {\n const json = JSON.parse(hiddenSeries) as Array<string | number>;\n config.series = config.series.map((serie, index) => {\n serie.visible = !json.includes(serie.id);\n\n const currentSerieIndex = config.series.findIndex((_) => _.id === serie.id);\n\n if (currentSerieIndex !== -1) {\n const seriesLinkCount = config.series.filter((_) => _.yAxisIndex === config.series[currentSerieIndex].yAxisIndex && _.visible === true).length\n config.yAxis[config.series[currentSerieIndex].yAxisIndex].visible = seriesLinkCount !== 0;\n }\n\n\n return serie;\n });\n\n\n return config\n }\n\n return config\n }\n\n private setDefaults(data: [IChartConfig, string]): IChartConfig {\n\n let [config, id] = data;\n\n const defaultConfig = (defaultConfig) => {\n return (source) => {\n return Object.assign({}, defaultConfig, source);\n };\n };\n\n config = Object.assign({}, defaultChartConfig(), config);\n config.id = id;\n\n config.xAxis = config.xAxis.map(defaultConfig(defaultAxisConfig));\n config.yAxis = config.yAxis.map(defaultConfig(defaultAxisConfig));\n config.series = config.series.map(defaultConfig(defaultSeriesConfig()));\n\n config.series = config.series.map((_, index) => {\n return {\n ..._,\n data: _.data ?? [],\n id: _.id ?? index,\n };\n });\n\n const oppositeYCount = config.yAxis?.filter((_) => _.opposite);\n const oppositeXCount = config.xAxis?.filter((_) => _.opposite);\n\n const nonOppositeYCount = config.yAxis?.filter((_) => !_.opposite);\n const nonOppositeXCount = config.xAxis?.filter((_) => !_.opposite);\n\n if (nonOppositeXCount?.length > 1) {\n config.bounds.bottom = 0;\n }\n\n if (oppositeXCount?.length > 1) {\n config.bounds.top = 0;\n }\n\n if (nonOppositeYCount?.length > 1) {\n config.bounds.left = 0;\n }\n\n if (oppositeYCount?.length > 1) {\n config.bounds.right = 0;\n }\n\n config.tooltip = Object.assign(\n {},\n defaultChartConfig().tooltip,\n config.tooltip\n );\n\n config.zoom = Object.assign(\n {},\n defaultChartConfig().zoom,\n config.zoom\n );\n\n config.zoom.syncChannel = config.zoom?.syncChannel ?? id;\n\n return config;\n }\n\n private setPreparationData(config: IChartConfig): IChartConfig {\n if (config.inverted) {\n\n\n const xAxes = [...config.xAxis];\n const yAxes = [...config.yAxis];\n\n config.xAxis = yAxes;\n config.yAxis = xAxes;\n\n config.series = config.series?.map((serie) => {\n const x = serie.xAxisIndex;\n const y = serie.yAxisIndex;\n serie.xAxisIndex = y;\n serie.yAxisIndex = x;\n return {\n ...serie,\n clipPointsDirection: ClipPointsDirection.y,\n data: serie?.data?.map((point) => {\n return {\n ...point,\n x: point?.y,\n y: point?.x,\n x1: point?.y1,\n y1: point?.x1,\n };\n }),\n };\n });\n }\n\n if (config?.brush?.enable) {\n config.yAxis = config.yAxis.map((_) => ({..._, zoom: false}));\n config.xAxis = config.xAxis.map((_) => ({..._, zoom: false}));\n }\n\n return config;\n }\n}\n","export enum AxisOrientation {\n x,\n y\n}\n","import {Injectable} from '@angular/core';\nimport {BehaviorSubject, Observable, shareReplay,} from 'rxjs';\nimport {Axis} from '../core/axis/axis';\nimport {IChartEvent} from '../model/i-chart-event';\nimport {ZoomBehavior, zoomIdentity} from \"d3\";\nimport {AxisOrientation} from \"../model/enum/axis-orientation\";\nimport {ScaleType} from \"../model/enum/scale-type\";\nimport objectHash from 'object-hash';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ZoomService {\n broadcastSubscription = [];\n zoomed: Observable<IChartEvent<Axis>>;\n axisHashMap = new Map<string, Axis>();\n scaleHashMap = new Map<string, any>();\n elementHashMap = new Map<string, any>();\n zoomHashMap = new Map<string, ZoomBehavior<any, any>>();\n\n private zoomed$ = new BehaviorSubject<IChartEvent<Axis>>({});\n private broadcastChannel: string;\n\n constructor() {\n this.zoomed = this.zoomed$.asObservable().pipe(shareReplay({\n bufferSize: 1,\n refCount: true\n }));\n }\n\n fireZoom(zoom: IChartEvent<Axis>) {\n this.zoomed$.next(zoom);\n }\n\n setBroadcastChannel(channel: string) {\n this.broadcastChannel = channel;\n }\n\n setZoom(from: number, to: number, axisIndex = 0, axisOrientation = AxisOrientation.x) {\n\n const hash = objectHash.sha1({index: axisIndex, orientation: axisOrientation});\n\n if (!this.zoomHashMap.has(hash)) {\n return;\n }\n\n const currentAxis = this.axisHashMap.get(hash);\n const currentScale = this.scaleHashMap.get(hash);\n const currentElement = this.elementHashMap.get(hash);\n const currentZoom = this.zoomHashMap.get(hash);\n\n currentScale.domain(currentAxis.originDomain)\n\n if (axisOrientation === AxisOrientation.x) {\n if (currentAxis.options.scaleType.type === ScaleType.log) {\n currentScale.domain(currentAxis.options.inverted ? [...currentAxis.originDomain].reverse() : currentAxis.originDomain)\n }\n }\n\n if (axisOrientation === AxisOrientation.y) {\n if (currentAxis.options.scaleType.type === ScaleType.log) {\n currentScale.domain(currentAxis.options.inverted ? currentAxis.originDomain : [...currentAxis.originDomain].reverse())\n }\n }\n\n const delta = Math.abs(currentScale(to) - currentScale(from));\n const scale = currentScale.range()[1] / delta;\n\n let transform = zoomIdentity.scale(scale);\n\n if (currentAxis.orientation === AxisOrientation.x) {\n if (currentAxis.options.scaleType.type === ScaleType.log) {\n currentScale.domain(currentAxis.options.inverted ? [...currentScale.domain()].reverse() : currentScale.domain())\n }\n transform = transform.translate(-currentScale(from), 0);\n }\n\n if (currentAxis.orientation === AxisOrientation.y) {\n if (currentAxis.options.scaleType.type === ScaleType.log) {\n currentScale.domain(currentAxis.options.inverted ? currentScale.domain() : [...currentScale.domain()].reverse())\n }\n transform = transform.translate(0, -currentScale(from));\n }\n currentElement.transition().call(currentZoom.transform, transform, null, new MouseEvent('setZoom'))\n }\n\n resetZoom(axisIndex = 0, axisOrientation = AxisOrientation.x) {\n const hash = objectHash.sha1({index: axisIndex, orientation: axisOrientation});\n if (!this.zoomHashMap.has(hash)) {\n return;\n }\n const currentElement = this.elementHashMap.get(hash);\n const currentZoom = this.zoomHashMap.get(hash);\n currentElement.transition().call(currentZoom.transform, zoomIdentity, null, new MouseEvent('resetZoom'));\n }\n\n}\n","export const getTextWidth = (\n inputText?: string | number | null,\n backupRatio = 0.5,\n fontSize = 10\n): number => {\n let text = inputText ?? '';\n text = text.toString();\n\n return fontSize * backupRatio * text.length;\n};\n","import * as d3 from 'd3';\n\nexport function generateTicks(extremes: number[]) {\n const [min, max] = extremes;\n\n const tickCount = 10;\n const tickStep = (max - min) / tickCount;\n\n const ticks = d3\n .range(min, max + tickStep, tickStep)\n .filter((step) => step <= max);\n\n return ticks;\n}\n","import { Axis } from '../axis';\nimport { AxisOrientation } from '../../../model/enum/axis-orientation';\nimport { maxIndex } from 'd3-array';\nimport { getTextWidth } from '../../utils/public-api';\nimport { IBuilder } from '../../../model/i-builder';\n\nexport class AxisSizeBuilder implements IBuilder<Axis, number> {\n private titlePadding = 11;\n private basePadding = 16;\n private backupRatio = 0.58;\n\n build(settings: Axis): number {\n let finalPadding = this.basePadding;\n\n if (settings.orientation === AxisOrientation.y) {\n const formatter = settings.options.tickFormat || settings.defaultFormatter();\n\n finalPadding += settings.options.title ? this.titlePadding : 0;\n\n const scale = settings.defaultScale();\n const ticks = scale().domain(settings.extremes).ticks(20);\n\n const maxElementLengthIndex = maxIndex(\n ticks,\n (_) => formatter(_).length\n );\n\n\n finalPadding += getTextWidth(\n formatter(ticks[maxElementLengthIndex]),\n this.backupRatio\n );\n }\n\n if (settings.orientation === AxisOrientation.x) {\n finalPadding += finalPadding + 20;\n }\n\n return finalPadding;\n }\n}\n","import {IBuilder} from '../../../model/i-builder';\nimport {Axis} from '../axis';\nimport {BasePoint} from '../../../model/base-point';\nimport {AxisOrientation} from '../../../model/enum/axis-orientation';\n\nimport * as d3 from 'd3';\n\nexport class ExtremesBuilder implements IBuilder<Axis, [number, number]> {\n private extentAccessorMap = new Map<AxisOrientation,\n (point: BasePoint) => number>()\n .set(AxisOrientation.x, (_) => _.x)\n .set(AxisOrientation.y, (_) => _.y);\n\n private extremes: [number, number] = [0, 0];\n\n build(settings: Axis): [number, number] {\n const options = settings.options;\n\n const hasMin = options?.min != null;\n const hasMax = options?.max != null;\n\n if (!hasMin || !hasMax) {\n const linkedSeries = settings.linkedSeries();\n const data = linkedSeries.reduce((acc: BasePoint[], current) => {\n return acc.concat(current.data);\n }, []);\n const accessor = this.extentAccessorMap.get(settings.orientation);\n this.extremes = data.length > 1 ? d3.extent(data, accessor) : [0, 0];\n }\n\n if (hasMin) {\n this.extremes[0] = options?.min;\n }\n\n if (hasMax) {\n this.extremes[1] = options?.max;\n }\n return this.extremes;\n }\n}\n","import { IChartConfig } from '../../model/i-chart-config';\nimport { AxisOrientation } from '../../model/enum/axis-orientation';\nimport { Series } from '../../model/series';\nimport { BasePoint } from '../../model/base-point';\nimport * as d3 from 'd3';\nimport { AxisOptions } from '../../model/axis-options';\nimport { AxisSizeBuilder, ExtremesBuilder } from './builders/public-api';\nimport { generateTicks } from '../utils/public-api';\nimport { ScaleType } from '../../model/enum/scale-type';\n\nexport class Axis {\n private chartConfig: IChartConfig;\n private _orientation: AxisOrientation;\n private _index: number;\n private _extremes: [number, number] = [0, 0];\n private _selfSize: number;\n private _ticksValues: number[];\n private _options: AxisOptions;\n private _originDomain: Array<any> = [];\n\n private _scale: any;\n\n private defaultFormatters = new Map<ScaleType, any>()\n .set(ScaleType.linear, d3.format(',.5~r'))\n .set(ScaleType.time, d3.timeFormat('%d.%m.%Y'))\n .set(ScaleType.log, d3.format('~s'))\n .set(ScaleType.symlog, d3.format('~s'))\n .set(ScaleType.pow, d3.format('~s'))\n .set(ScaleType.sqrt, d3.format('~s'));\n\n private defaultScales = new Map<ScaleType, any>()\n .set(ScaleType.linear, d3.scaleLinear)\n .set(ScaleType.log, d3.scaleLog)\n .set(ScaleType.symlog, d3.scaleSymlog)\n .set(ScaleType.pow, d3.scalePow)\n .set(ScaleType.sqrt, d3.scaleSqrt)\n .set(ScaleType.time, d3.scaleTime);\n\n constructor(config: IChartConfig) {\n this.chartConfig = config;\n }\n\n /**\n * Factory for creating x,y axes\n * @param {AxisOrientation} orientation\n * Axis type\n * @param {IChartConfig} config\n * Chart config\n * @param {number} index\n * New generated axis\n */\n public static createAxis(\n orientation: AxisOrientation,\n config: IChartConfig,\n index: number\n ): Axis {\n const axis = new Axis(config);\n axis.setLocate(orientation);\n axis.setIndex(index);\n\n axis.setOptions();\n axis.setExtremes();\n axis.setTicksValues();\n axis.setSelfSize();\n\n return axis;\n }\n\n /**\n *\n * @param {orientation} orientation\n * Set locate axis x or y\n */\n private setLocate(orientation: AxisOrientation): void {\n this._orientation = orientation;\n }\n\n /**\n *\n * @param {number} index\n * Index axis\n */\n private setIndex(index: number): void {\n this._index = index;\n }\n\n /**\n * @return {Array<Series<BasePoint>>}\n * Linked series\n */\n public linkedSeries(): Array<Series<BasePoint>> {\n const linkedFilter = (serie: Series<BasePoint>) =>\n serie[\n this._orientation === AxisOrientation.y ? 'yAxisIndex' : 'xAxisIndex'\n ] === this._index;\n\n return this.chartConfig?.series.filter(linkedFilter);\n }\n\n public setExtremes(): void {\n const builder = new ExtremesBuilder();\n this._extremes = builder.build(this);\n }\n\n public setOriginDomain(domain: Array<any>) {\n this._originDomain = domain;\n }\n\n public setScale(scale: any) {\n this._scale = scale;\n }\n\n private setSelfSize(): void {\n this._selfSize = new AxisSizeBuilder().build(this);\n }\n\n private setTicksValues(): void {\n this._ticksValues = generateTicks(this._extremes);\n }\n\n private setOptions(): void {\n const options =\n this.orientation === AxisOrientation.x\n ? this.chartConfig.xAxis[this.index]\n : this.chartConfig.yAxis[this.index];\n\n this._options = options;\n }\n\n get scale(): any {\n return this._scale;\n }\n\n get extremes(): Array<number> {\n return this._extremes;\n }\n\n get orientation(): AxisOrientation {\n return this._orientation;\n }\n\n get selfSize(): number {\n return this._selfSize;\n }\n\n get tickValues(): number[] {\n return this._ticksValues;\n }\n\n get index(): number {\n return this._index;\n }\n\n get options(): AxisOptions {\n return this._options;\n }\n\n get originDomain(): Array<any> {\n return this._originDomain\n }\n\n public defaultFormatter() {\n return this.defaultFormatters.get(this.options.scaleType.type);\n }\n\n public defaultScale() {\n return this.defaultScales.get(this.options.scaleType.type);\n }\n\n\n}\n","import {Injectable} from '@angular/core';\nimport * as d3 from 'd3';\nimport {D3ZoomEvent, ZoomTransform} from 'd3';\nimport {Axis} from '../core/axis/axis';\nimport {AxisOrientation} from '../model/enum/axis-orientation';\nimport {IChartConfig} from '../model/i-chart-config';\nimport {ChartService} from './chart.service';\nimport {combineLatest, map, Observable, shareReplay, withLatestFrom,} from 'rxjs';\nimport {IChartEvent} from '../model/i-chart-event';\nimport {ZoomService} from './zoom.service';\nimport {ScaleType} from '../model/enum/scale-type';\nimport {IScalesMap} from \"../model/i-scales-map\";\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ScaleService {\n public scales: Observable<IScalesMap>\n\n private transformCacheX = new Map<number, ZoomTransform>();\n private transformCacheY = new Map<number, ZoomTransform>();\n\n private scaleMapping = new Map<ScaleType, any>()\n .set(ScaleType.linear, d3.scaleLinear)\n .set(ScaleType.time, d3.scaleTime)\n .set(ScaleType.category, d3.scaleOrdinal)\n .set(ScaleType.log, d3.scaleLog)\n .set(ScaleType.symlog, d3.scaleSymlog)\n .set(ScaleType.pow, d3.scalePow)\n .set(ScaleType.sqrt, d3.scaleSqrt);\n\n constructor(\n private chartService: ChartService,\n private zoomService: ZoomService\n ) {\n\n this.scales = combineLatest([\n this.chartService.size,\n this.chartService.config,\n this.zoomService.zoomed,\n ]).pipe(\n map((data: [DOMRectReadOnly, IChartConfig, IChartEvent<Axis>]) => {\n\n const [size, config, zoom] = data;\n\n const xAxisMap = new Map<number, Axis>();\n const yAxisMap = new Map<number, Axis>();\n\n config.yAxis.map((_, index) => {\n yAxisMap.set(index, Axis.createAxis(AxisOrientation.y, config, index));\n });\n\n\n config.xAxis.map((_, index) => {\n xAxisMap.set(index, Axis.createAxis(AxisOrientation.x, config, index));\n });\n\n // Generate x scales\n const left = Array.from(yAxisMap.values())\n .filter((_) => _.options?.visible && _.options?.opposite)\n .reduce((acc, cur) => acc + cur.selfSize, 0);\n\n const right = Array.from(yAxisMap.values())\n .filter((_) => _.options?.visible && _.options?.opposite !== true)\n .reduce((acc, cur) => acc + cur.selfSize, 0);\n\n const finalWidth = (size.width || 0) - left - right;\n\n xAxisMap.forEach((axis) => {\n let domain = axis.extremes;\n\n if (axis?.options.inverted) {\n domain = [...axis.extremes].reverse();\n }\n\n let scale = this.scaleMapping\n .get(axis.options.scaleType.type)()\n .domain(domain)\n .range([0, finalWidth - config.bounds.right]);\n\n if (axis.options.niceTicks) {\n scale.nice();\n }\n\n if (axis.options.scaleType.type === ScaleType.log) {\n scale.base(axis.options.scaleType.base)\n }\n\n axis.setScale(scale);\n axis.setOriginDomain(scale.domain());\n\n\n const hasCache = this.transformCacheX.has(axis.index);\n const shouldRestore =\n zoom?.target?.orientation !== AxisOrientation.x ||\n zoom.target?.index !== axis.index;\n\n if (hasCache && shouldRestore) {\n const restoredTransform = this.transformCacheX.get(axis.index);\n axis.setScale(restoredTransform.rescaleX(scale));\n }\n });\n\n if (zoom) {\n const event = zoom.event as D3ZoomEvent<any, any>;\n\n if (zoom.target?.orientation === AxisOrientation.x) {\n\n if (xAxisMap.has(zoom.target.index)) {\n const x = xAxisMap.get(zoom.target.index);\n const rescaled = event.transform.rescaleX(x.scale);\n x.setScale(rescaled);\n\n const axis = xAxisMap.get(zoom.target.index);\n this.transformCacheX.set(axis.index, event.transform);\n }\n }\n }\n\n\n // Generate y axis\n\n const top = Array.from(xAxisMap.values())\n .filter((_) => _.options?.visible && _.options?.opposite)\n .reduce((acc, cur) => acc + cur.selfSize, 0);\n\n const bottom = Array.from(xAxisMap.values())\n .filter((_) => _.options?.visible && _.options?.opposite !== true)\n .reduce((acc, cur) => acc + cur.selfSize, 0);\n\n const finalHeight =\n (size.height || 0) -\n top -\n bottom -\n config?.bounds?.top -\n config.bounds?.bottom;\n\n yAxisMap.forEach((axis) => {\n let domain = axis.extremes;\n\n if (axis.orientation === AxisOrientation.y) {\n domain = [...axis.extremes].reverse();\n }\n\n if (axis?.options.inverted) {\n domain = domain.reverse();\n }\n\n const scale = this.scaleMapping\n .get(axis.options.scaleType.type)()\n .domain(domain)\n .range([config.bounds.top, finalHeight]);\n\n if (axis.options.niceTicks) {\n scale.nice();\n }\n\n if (axis.options.scaleType.type === ScaleType.log) {\n scale.base(axis.options.scaleType.base)\n }\n\n axis.setScale(scale);\n axis.setOriginDomain(scale.domain());\n\n const hasCache = this.transformCacheY.has(axis.index);\n\n const shouldRestore =\n zoom?.target?.orientation !== AxisOrientation.y ||\n zoom.target?.index !== axis.index;\n\n if (hasCache && shouldRestore) {\n const restoredTransform = this.transformCacheY.get(axis.index);\n axis.setScale(restoredTransform.rescaleY(scale));\n }\n });\n\n if (zoom) {\n const event = zoom.event as D3ZoomEvent<any, any>;\n\n if (zoom.target?.orientation === AxisOrientation.y) {\n\n if (yAxisMap.has(zoom.target.index)) {\n const y = yAxisMap.get(zoom.target.index);\n\n const rescaled = event.transform.rescaleY(y.scale);\n y.setScale(rescaled);\n\n const axis = yAxisMap.get(zoom.target.index);\n this.transformCacheY.set(axis.index, event.transform);\n }\n }\n }\n\n return {\n x: xAxisMap,\n y: yAxisMap\n }\n }),\n shareReplay({\n bufferSize: 1,\n refCount: true,\n })\n )\n }\n}\n","export enum BrushType {\n x,\n y,\n xy,\n}\n","import {D3BrushEvent, D3ZoomEvent} from 'd3';\nimport {Axis} from '../core/axis/axis';\nimport {BrushType} from './enum/brush-type';\n\n\nexport type TransformStyle = {\n transition?: boolean;\n}\n\nexport class ZoomMessage {\n event?: D3ZoomEvent<any, any> | any;\n axis?: Axis;\n domain?: number[];\n chartId: string;\n style?: TransformStyle;\n\n constructor(options?: {\n event: D3ZoomEvent<any, any> | any;\n axis?: Axis;\n domain?: number[]\n chartId: string;\n style?: TransformStyle;\n }) {\n this.event = options?.event;\n this.axis = options?.axis;\n this.domain = options.domain;\n this.chartId = options?.chartId;\n this.style = options?.style;\n }\n}\n\nexport class BrushMessage {\n event: D3BrushEvent<any> | null;\n brushType: BrushType;\n selection: number[];\n brushScale?: any;\n style?: TransformStyle\n\n constructor(options?: {\n event: D3BrushEvent<any> | null;\n brushType: BrushType;\n selection: number[];\n brushScale?: any;\n style?: TransformStyle\n }) {\n this.event = options?.event;\n this.brushType = options?.brushType;\n this.selection = options?.selection;\n this.brushScale = options?.brushScale;\n this.style = options?.style;\n }\n}\n\nexport interface IBroadcastMessage<T> {\n channel: string;\n message: T;\n}\n","import { Injectable } from '@angular/core';\nimport {BrushMessage, IBroadcastMessage, ZoomMessage} from '../model/i-broadcast-message';\nimport {filter, map, Observable, ReplaySubject, shareReplay, Subject} from 'rxjs';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class BroadcastService {\n private zoomEmitter: Subject<IBroadcastMessage<ZoomMessage>>;\n private brushEmitter: ReplaySubject<IBroadcastMessage<BrushMessage>>;\n\n constructor() {\n this.zoomEmitter = new Subject<IBroadcastMessage<ZoomMessage>>();\n this.brushEmitter = new ReplaySubject<IBroadcastMessage<BrushMessage>>(1)\n }\n\n broadcastZoom(value: IBroadcastMessage<ZoomMessage>) {\n this.zoomEmitter.next(value);\n }\n\n broadcastBrush(value: IBroadcastMessage<BrushMessage>) {\n this.brushEmitter.next(value);\n }\n\n subscribeToZoom(channel: string): Observable<IBroadcastMessage<ZoomMessage>> {\n return this.zoomEmitter.asObservable().pipe(\n filter((msg) => channel && msg.channel === channel),\n shareReplay({\n bufferSize: 1,\n refCount: true\n })\n );\n }\n\n subscribeToBrush(channel: string): Observable<IBroadcastMessage<BrushMessage>> {\n return this.brushEmitter.asObservable().pipe(\n filter((msg) => channel && msg.channel === channel),\n shareReplay({\n bufferSize: 1,\n refCount: true\n })\n );\n }\n}\n","import { ElementRef, Injectable, NgZone } from '@angular/core';\nimport { BrushType } from '../model/enum/brush-type';\nimport * as d3 from 'd3';\nimport { animationFrameScheduler, filter, Subscription, tap } from 'rxjs';\nimport { BroadcastService } from './broadcast.service';\nimport { IChartConfig } from '../model/i-chart-config';\nimport {\n BrushMessage,\n IBroadcastMessage,\n ZoomMessage,\n} from '../model/i-broadcast-message';\nimport {debounceTime, throttleTime} from 'rxjs/operators';\nimport { AxisOrientation } from '../model/enum/axis-orientation';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class BrushService {\n broadcastSubscribtion: Subscription;\n\n private brush: d3.BrushBehavior<any>;\n\n private brushMap = new Map<BrushType, d3.BrushBehavior<any>>()\n .set(BrushType.x, d3.brushX())\n .set(BrushType.y, d3.brushY());\n\n private selection: number[];\n\n constructor(\n private broadcastService: BroadcastService,\n private zone: NgZone\n ) {}\n\n applyBrush(svgElement: ElementRef, config: IChartConfig, brushScale: any) {\n this.broadcastSubscribtion?.unsubscribe();\n this.brush?.on('start brush end', null);\n if (config.brush?.enable) {\n this.brush = this.brushMap.get(config?.brush?.type ?? BrushType.x);\n\n const container = d3.select(svgElement.nativeElement);\n\n this.brush.on('start brush end', (_: d3.D3BrushEvent<any>) => {\n if (_.sourceEvent) {\n if (!_.selection) return;\n\n const [from, to] = _.selection as number[];\n\n if (to - from === 0) {\n const selection: number[] =\n this.selection?.map(brushScale) ??\n [config.brush?.from, config.brush?.to].map(brushScale);\n const halfBrushHeight = (selection[1] - selection[0]) / 2;\n\n const invertedSelection: number[] = [\n from - halfBrushHeight,\n to + halfBrushHeight,\n ].map(brushScale.invert);\n\n if (\n invertedSelection[1] - invertedSelection[0] >\n config.brush?.max\n ) {\n container.call(\n this.brush.move,\n [\n Math.floor(invertedSelection[0]),\n Math.floor(invertedSelection[0] + config.brush?.max),\n ].map(brushScale)\n );\n return;\n }\n\n if (\n invertedSelection[1] - invertedSelection[0] <\n config.brush?.min\n ) {\n container.call(\n this.brush.move,\n [\n Math.floor(invertedSelection[0]),\n Math.ceil(invertedSelection[0] + config.brush?.min),\n ].map(brushScale)\n );\n return;\n }\n\n container.call(this.brush.move, [\n from - halfBrushHeight,\n to + halfBrushHeight,\n ]);\n return;\n }\n\n if (\n brushScale.invert(to) - brushScale.invert(from) >\n config.brush?.max\n ) {\n container.call(\n this.brush.move,\n this.selection\n ? [\n this.selection[0],\n this.selection[0] + config.brush?.max,\n ].map(brushScale)\n : [config.brush?.from, config.brush?.to].map(brushScale)\n );\n return;\n }\n\n if (\n brushScale.invert(to) - brushScale.invert(from) <\n config.brush?.min\n ) {\n container.call(\n this.brush.move,\n this.selection\n ? [\n this.selection[0],\n this.selection[0] + config.brush?.min,\n ].map(brushScale)\n : [config.brush?.from, config.brush?.to].map(brushScale)\n );\n return;\n }\n\n if (_.sourceEvent instanceof MouseEvent) {\n this.selection = _.selection.map(brushScale.invert);\n }\n\n const brushMessage = new BrushMessage({\n event: _,\n selection: [brushScale.invert(from), brushScale.invert(to)],\n brushType: config?.brush?.type ?? BrushType.x,\n brushScale,\n });\n\n this.broadcastService.broadcastBrush({\n channel: config?.zoom?.syncChannel,\n message: brushMessage,\n });\n }\n });\n\n this.zone.runOutsideAngular(() => {\n setTimeout(() => {\n container.call(this.brush);\n\n let domain = brushScale.domain();\n\n if (config?.brush?.from) {\n domain[0] = config.brush.from;\n }\n\n if (config?.brush?.to) {\n domain[1] = config.brush.to;\n }\n\n container.call(\n this.brush.move,\n this.selection\n ? this.selection.map(brushScale)\n : domain.map(brushScale),\n {}\n );\n }, 0);\n });\n\n this.broadcastSubscribtion = this.broadcastService\n .subscribeToZoom(config?.zoom?.syncChannel)\n .pipe(\n filter((m: IBroadcastMessage<ZoomMessage>) => {\n return (\n m.message.event.sourceEvent instanceof MouseEvent ||\n m.message.event.sourceEvent instanceof WheelEvent ||\n (window.TouchEvent &&\n m.message.event.sourceEvent instanceof TouchEvent)\n );\n }),\n tap((m: IBroadcastMessage<ZoomMessage>) => {\n const {\n message: { domain },\n } = m;\n\n if (\n (m.message?.axis.index === 0 &&\n m.message?.axis.orientation === AxisOrientation.y &&\n config.brush?.type === BrushType.y) ||\n (m.message?.axis.orientation === AxisOrientation.x &&\n config.brush?.type === BrushType.x)\n ) {\n container.call(this.brush.move, [\n brushScale(domain[0]),\n brushScale(domain[1]),\n ]);\n\n this.selection = domain;\n }\n }),\n debounceTime(30),\n tap((m: IBroadcastMessage<ZoomMessage>) => {\n const {\n message: { domain },\n } = m;\n\n if (m.message.event.type === 'zoom') {\n const brushMessage = new BrushMessage({\n event: null,\n selection: domain,\n brushType: config?.brush?.type ?? BrushType.x,\n brushScale,\n });\n\n this.broadcastService.broadcastBrush({\n channel: config?.zoom?.syncChannel,\n message: brushMessage,\n });\n }\n })\n )\n .subscribe();\n }\n }\n\n clearPreviousSelection() {\n this.selection = null;\n }\n}\n","import {\n ChangeDetectorRef,\n Component,\n ElementRef,\n Input,\n OnInit,\n} from '@angular/core';\nimport {ChartService} from '../service/chart.service';\nimport {Series} from '../model/series';\nimport {BasePoint} from '../model/base-point';\nimport {ScaleService} from '../service/scale.service';\nimport {ZoomService} from '../service/zoom.service';\nimport {IChartConfig} from '../model/i-chart-config';\n\n@Component({\n template: '',\n})\nexport class SeriesBaseComponent<T extends BasePoint> implements OnInit {\n @Input()\n set config(config: IChartConfig) {\n this._config = config;\n }\n\n get config() {\n return this._config;\n }\n\n @Input()\n set series(series: Series<T>) {\n this._series = series;\n }\n\n get series() {\n return this._series;\n }\n\n protected _series: Series<T>;\n protected _config: IChartConfig;\n\n constructor(\n protected svc: ChartService,\n protected cdr: ChangeDetectorRef,\n protected scaleService: ScaleService,\n protected zoomService: ZoomService,\n protected element: ElementRef\n ) {\n }\n\n ngOnInit(): void {\n }\n}\n","export enum DragPointType {\n x,\n y,\n xy,\n}\n","import {BasePoint} from '../../model/base-point';\nimport {SeriesBaseComponent} from '../../base/series-base.component';\nimport {AfterViewInit, ChangeDetectorRef, Component, ElementRef, OnDestroy, OnInit} from '@angular/core';\nimport {combineLatest, filter, map, Observable, tap, withLatestFrom} from 'rxjs';\nimport {ChartService} from '../../service/chart.service';\nimport {ScaleService} from '../../service/scale.service';\nimport {ZoomService} from '../../service/zoom.service';\nimport * as d3 from 'd3';\nimport {DragPointType} from '../../model/enum/drag-point-type';\nimport {TooltipTracking} from '../../model/enum/tooltip-tracking';\nimport {ClipPointsDirection} from '../../model/enum/clip-points-direction';\nimport {Axis} from \"../../core/axis/axis\";\nimport {IScalesMap} from \"../../model/i-scales-map\";\n\n@Component({\n template: '',\n})\nexport class LinearSeriesBase<T extends BasePoint>\n extends SeriesBaseComponent<T>\n implements OnInit, AfterViewInit, OnDestroy {\n\n public defaultClipPointsMapping: Map<ClipPointsDirection, (min: number, max: number) => (point: BasePoint, idx: number, arr: Array<BasePoint>) => {}> = new Map();\n\n transform: Observable<Pick<BasePoint, 'x' | 'y'>>;\n display: Observable<number>;\n path: Observable<string>;\n svgElement: SVGGeometryElement;\n x: any;\n y: any;\n markers: any;\n\n constructor(\n protected override svc: ChartService,\n protected override cdr: ChangeDetectorRef,\n protected override scaleService: ScaleService,\n protected override zoomService: ZoomService,\n protected override element: ElementRef\n ) {\n super(svc, cdr, scaleService, zoomService, element);\n }\n\n override ngOnInit(): void {\n const filterX = (min: number, max: number) => (\n point: BasePoint,\n idx: number,\n arr: Array<BasePoint>\n ) => {\n const bigger = min > max ? min : max;\n const smaller = min > max ? max : min;\n return (point.x <= bigger ||\n point.x1 <= bigger ||\n (arr[idx - 1] && arr[idx - 1].x <= bigger) ||\n (arr[idx - 1] && arr[idx - 1].x1 <= bigger)) &&\n (point.x >= smaller ||\n point.x1 >= smaller ||\n (arr[idx + 1] && arr[idx + 1].x >= smaller) ||\n (arr[idx + 1] && arr[idx + 1].x1 >= smaller))\n ;\n };\n\n const filterY = (min: number, max: number) => (\n point: BasePoint,\n idx: number,\n arr: Array<BasePoint>\n ) => {\n const bigger = min > max ? min : max;\n const smaller = min > max ? max : min;\n return (point.y <= bigger ||\n point.y1 <= bigger ||\n (arr[idx - 1] && arr[idx - 1].y <= bigger) ||\n (arr[idx - 1] && arr[idx - 1].y1 <= bigger)) &&\n (point.y >= smaller ||\n point.y1 >= smaller ||\n (arr[idx + 1] && arr[idx + 1].y >= smaller) ||\n (arr[idx + 1] && arr[idx + 1].y1 >= smaller));\n };\n\n this.defaultClipPointsMapping.set(ClipPointsDirection.x, filterX);\n this.defaultClipPointsMapping.set(ClipPointsDirection.y, filterY);\n\n this.transform = this.svc.pointerMove.pipe(\n withLatestFrom(this.scaleService.scales),\n map((data: [PointerEvent, IScalesMap]) => {\n const [event, {x, y}] = data;\n\n return this.getTransform(event, x.get(this.series.xAxisIndex).scale, y.get(this.series.yAxisIndex).scale);\n }),\n tap(() => setTimeout(() => this.cdr.detectChanges()))\n );\n\n this.path = this.scaleService.scales.pipe(\n map((data) => {\n const {x, y} = data;\n this.x = x.get(this.series.xAxisIndex)?.scale;\n this.y = y.get(this.series.yAxisIndex)?.scale;\n\n if(!this.x || !this.y) {\n return ''\n }\n\n const filter = this.defaultClipPointsMapping.get(this.series.clipPointsDirection);\n\n const line = d3\n .line<BasePoint>()\n .defined(\n (point) =>\n point.x !== null &&\n point.y !== null &&\n point.x !== undefined &&\n point.y !== undefined &&\n !isNaN(point.x) &&\n !isNaN(point.y)\n )\n .x((point) => this.x(point.x))\n .y((point) => this.y(point.y));\n\n let filteredData = this.series.data;\n\n if (this.series.clipPointsDirection === ClipPointsDirection.x) {\n let [min, max] = this.x.domain();\n\n min = min instanceof Date ? min.getTime() : min;\n max = max instanceof Date ? max.getTime() : max;\n\n filteredData = filteredData?.filter(filter(min, max));\n }\n\n\n if (this.series.clipPointsDirection === ClipPointsDirection.y) {\n let [min, max] = this.y.domain();\n\n min = min instanceof Date ? min.getTime() : min;\n max = max instanceof Date ? max.getTime() : max;\n\n filteredData = filteredData?.filter(filter(min, max));\n }\n\n return line(filteredData);\n })\n );\n }\n\n ngOnDestroy() {\n this.markers?.on('start drag end', null);\n this.svc.setTooltip({\n point: null,\n series: this.series,\n });\n }\n\n ngAfterViewInit() {\n const drag = (node, event: d3.D3DragEvent<any, any, any>, d: BasePoint) => {\n if (\n d.marker?.dragType === DragPointType.x ||\n d.marker?.dragType === DragPointType.xy\n ) {\n d.x = this.x.invert(event.x);\n }\n\n if (\n d.marker?.dragType === DragPointType.y ||\n d.marker?.dragType === DragPointType.xy\n ) {\n d.y = this.y.invert(event.y);\n }\n\n this.svc.emitPoint({\n target: {\n series: this.series,\n point: d,\n },\n event,\n });\n\n this.cdr.detectChanges();\n };\n this.markers = d3\n .drag()\n .subject(function (event, d: BasePoint) {\n const node = d3.select(this);\n return {x: node.attr('cx'), y: node.attr('cy')};\n });\n const dragMarkers =\n this.markers.on(\n 'start drag end',\n function (event: d3.D3DragEvent<any, any, any>, d: BasePoint) {\n const node = d3.select(this);\n\n drag(node, event, d);\n }\n );\n\n const draggableMarkers = this.series.data?.filter(\n (_) => _?.marker && _?.marker?.draggable\n );\n\n const element = d3\n .select(this.element.nativeElement)\n .selectAll('.draggable-marker')\n .data(draggableMarkers);\n\n element.call(dragMarkers as any);\n\n this.svgElement = d3\n .select(this.element.nativeElement)\n .select('.line')\n .node() as SVGGeometryElement;\n }\n\n getMarkers() {\n return this.series.data?.filter((_) => _?.marker);\n }\n\n getTransform(\n event: any,\n scaleX: any,\n scaleY: any\n ): Pick<BasePoint, 'x' | 'y'> {\n if (event.type === 'mouseleave') {\n return null;\n }\n const mouse = [event?.offsetX, event?.offsetY];\n\n const tooltipTracking = this.config?.tooltip?.tracking;\n const lineIntersection = (\n p0_x,\n p0_y,\n p1_x,\n p1_y,\n p2_x,\n p2_y,\n p3_x,\n p3_y\n ) => {\n const rV = {} as any;\n let s1_x, s1_y, s2_x, s2_y;\n s1_x = p1_x - p0_x;\n s1_y = p1_y - p0_y;\n s2_x = p3_x - p2_x;\n s2_y = p3_y - p2_y;\n\n let s, t;\n s =\n (-s1_y * (p0_x - p2_x) + s1_x * (p0_y - p2_y)) /\n (-s2_x * s1_y + s1_x * s2_y);\n t =\n (s2_x * (p0_y - p2_y) - s2_y * (p0_x - p2_x)) /\n (-s2_x * s1_y + s1_x * s2_y);\n\n if (s >= 0 && s <= 1 && t >= 0 && t <= 1) {\n // Collision detected\n rV.x = p0_x + t * s1_x;\n rV.y = p0_y + t * s1_y;\n }\n\n return rV;\n };\n\n if (tooltipTracking === TooltipTracking.x) {\n const bisect = d3.bisector((_: BasePoint) => _.x).right;\n const pointer = mouse[0];\n\n let x0 = scaleX.invert(pointer);\n if (x0 instanceof Date) {\n x0 = x0.getTime();\n }\n const rightId = bisect(this.series.data, x0);\n const range = scaleY.range();\n\n const intersect = lineIntersection(\n pointer,\n range[0],\n pointer,\n range[1],\n scaleX(this.series.data[rightId - 1]?.x),\n scaleY(this.series.data[rightId - 1]?.y),\n scaleX(this.series.data[rightId]?.x),\n scaleY(this.series.data[rightId]?.y)\n );\n const x = scaleX.invert(intersect.x);\n const y = scaleY.invert(intersect.y);\n if (x !== null && x !== undefined && !isNaN(x) && y !== null && y !== undefined && !isNaN(y)) {\n this.svc.setTooltip({\n point: {x: scaleX.invert(intersect.x), y: scaleY.invert(intersect.y)},\n series: this.series,\n });\n } else {\n this.svc.setTooltip({\n point: null,\n series: this.series,\n });\n }\n\n return {\n x: intersect.x,\n y: intersect.y,\n };\n }\n\n if (tooltipTracking === TooltipTracking.y) {\n const bisect = d3.bisector((_: BasePoint) => _.y).right;\n\n let y0 = scaleY.invert(mouse[1]);\n if (y0 instanceof Date) {\n y0 = y0.getTime();\n }\n const rightId = bisect(this.series.data, y0);\n const range = scaleX.range();\n\n const intersect = lineIntersection(\n range[0],\n mouse[1],\n range[1],\n mouse[1],\n scaleX(this.series.data[rightId - 1]?.x),\n scaleY(this.series.data[rightId - 1]?.y),\n scaleX(this.series.data[rightId]?.x),\n scaleY(this.series.data[rightId]?.y)\n );\n\n const x = scaleX.invert(intersect.x);\n const y = scaleY.invert(intersect.y);\n\n if (x !== null && x !== undefined && !isNaN(x) && y !== null && y !== undefined && !isNaN(y)) {\n this.svc.setTooltip({\n point: {x: scaleX.invert(intersect.x), y: scaleY.invert(intersect.y)},\n series: this.series,\n });\n } else {\n this.svc.setTooltip({\n point: null,\n series: this.series,\n });\n }\n\n return {\n x: intersect.x,\n y: intersect.y,\n };\n }\n }\n}\n","import {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef, OnDestroy,\n OnInit,\n} from '@angular/core';\nimport {ChartService} from '../../../service/chart.service';\nimport {BasePoint} from '../../../model/base-point';\nimport {ScaleService} from '../../../service/scale.service';\nimport {ZoomService} from '../../../service/zoom.service';\nimport {LinearSeriesBase} from '../linear-series-base';\n\n@Component({\n selector: 'svg:svg[teta-line-series]',\n templateUrl: './line-series.component.html',\n styleUrls: ['./line-series.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class LineSeriesComponent<T extends BasePoint>\n extends LinearSeriesBase<T>\n implements OnInit, AfterViewInit, OnDestroy {\n\n constructor(\n protected override svc: ChartService,\n protected override cdr: ChangeDetectorRef,\n protected override scaleService: ScaleService,\n protected override zoomService: ZoomService,\n protected override element: ElementRef\n ) {\n super(svc, cdr, scaleService, zoomService, element);\n }\n}\n","<svg:path\n class=\"line\"\n [attr.d]=\"path | async\"\n [attr.stroke]=\"series.color\"\n [attr.stroke-dasharray]=\"series.style?.strokeDasharray\"\n [attr.stroke-width]=\"series.style?.strokeWidth\"\n fill=\"none\">\n</svg:path>\n<ng-container *ngIf=\"transform | async as t\">\n <svg:circle\n *ngIf=\"t?.x !=null && t?.y!=null\"\n r=\"3\"\n [attr.fill]=\"series.color\"\n [attr.transform]=\"'translate('+ t.x +', '+ t.y +')'\"\n >\n </svg:circle>\n</ng-container>\n<ng-container *ngIf=\"getMarkers() as markers\">\n <svg:circle\n class=\"marker\"\n *ngFor=\"let point of markers\"\n [class.draggable-marker]=\"point?.marker?.draggable\"\n [attr.r]=\"point.marker.style?.radius ?? 5\"\n [attr.fill]=\"point.marker.style?.fill ?? 'transparent'\"\n [attr.stroke]=\"point.marker.style?.stroke ?? 'none'\"\n [attr.stroke-width]=\"point.marker.style?.strokeWidth\"\n [attr.stroke-dasharray]=\"point.marker.style?.strokeDasharray\"\n [attr.cx]=\"x(point.x)\"\n [attr.cy]=\"y(point.y)\"\n >\n </svg:circle>\n</ng-container>\n\n\n\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n OnChanges,\n OnInit,\n SimpleChanges,\n} from '@angular/core';\nimport { SeriesBaseComponent } from '../../../base/series-base.component';\nimport { BasePoint } from '../../../model/base-point';\nimport { ChartService } from '../../../service/chart.service';\nimport { ScaleService } from '../../../service/scale.service';\nimport { ZoomService } from '../../../service/zoom.service';\nimport { map, Observable } from 'rxjs';\nimport { SeriesType } from '../../../model/enum/series-type';\nimport * as d3 from 'd3';\n\n@Component({\n selector: 'svg:svg[teta-bar-series]',\n templateUrl: './bar-series.component.html',\n styleUrls: ['./bar-series.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class BarSeriesComponent<T extends BasePoint>\n extends SeriesBaseComponent<T>\n implements OnInit, OnChanges\n{\n x: Observable<any>;\n x1: Observable<any>;\n y: Observable<any>;\n\n barSeriesCount: Observable<number>;\n\n Math: any = Math;\n\n constructor(\n protected override svc: ChartService,\n protected override cdr: ChangeDetectorRef,\n protected override scaleService: ScaleService,\n protected override zoomService: ZoomService,\n protected override element: ElementRef\n ) {\n super(svc, cdr, scaleService, zoomService, element);\n }\n\n override ngOnInit(): void {\n this.barSeriesCount = this.svc.config.pipe(\n map((_) => {\n const count = _.series.filter(\n (_) =>\n _.type === SeriesType.bar && _.xAxisIndex === this.series.xAxisIndex\n );\n\n return count.length;\n })\n );\n\n this.x1 = this.scaleService.scales.pipe(\n map((_) => {\n const x = _.x.get(this.series.xAxisIndex)?.scale;\n const range = x.range();\n const domain = this.series.data.map((_) => _.x);\n\n return d3\n .scaleBand<number>()\n .range([0, range[1]])\n .domain(domain)\n .padding(0.1);\n })\n );\n\n this.x = this.scaleService.scales.pipe(\n map((_) => _.x.get(this.series.xAxisIndex)?.scale)\n );\n\n this.y = this.scaleService.scales.pipe(\n map((_) => _.y.get(this.series.yAxisIndex)?.scale)\n );\n }\n\n mouseenter(point: BasePoint) {\n this.svc.setTooltip({\n point: point,\n series: this.series,\n });\n }\n\n mouseleave(point: BasePoint) {\n this.svc.setTooltip({\n point: null,\n series: this.series,\n });\n }\n\n ngOnChanges(changes: SimpleChanges) {}\n}\n","<ng-container *ngIf=\"{\n x: x | async,\n x1: x1 | async,\n y: y | async,\n barSeriesCount: barSeriesCount | async\n} as data\">\n <ng-container *ngIf=\"data.x && data.y\">\n <ng-container *ngIf=\"data.barSeriesCount > 1\">\n <svg:rect\n *ngFor=\"let point of series.data\"\n (mouseenter)=\"mouseenter(point)\"\n (mouseleave)=\"mouseleave(point)\"\n [attr.x]=\"data.x(point.x) + (series.id * data.x1.bandwidth() / data.barSeriesCount)\"\n [attr.y]=\"point.y > 0 ? data.y(point.y) : data.y(0)\"\n [attr.width]=\"data.x1.bandwidth() / data.barSeriesCount\"\n [attr.height]=\"Math.abs(data.y(point.y) - data.y(0))\"\n [attr.fill]=\"series.color\"\n ></svg:rect>\n </ng-container>\n <ng-container *ngIf=\"data.barSeriesCount === 1\">\n <svg:rect\n *ngFor=\"let point of series.data\"\n (mouseenter)=\"mouseenter(point)\"\n (mouseleave)=\"mouseleave(point)\"\n [attr.x]=\"data.x(point.x)\"\n [attr.y]=\"point.y > 0 ? data.y(point.y) : data.y(0)\"\n [attr.width]=\"data.x1.bandwidth()\"\n [attr.height]=\"Math.abs(data.y(point.y) - data.y(0))\"\n [attr.fill]=\"point.color ?? series.color\"\n ></svg:rect>\n </ng-container>\n </ng-container>\n</ng-container>\n\n","import {AfterViewInit, ChangeDetectionStrategy, ChangeDetectorRef, Component, ElementRef, OnInit} from '@angular/core';\nimport {BasePoint} from '../../../model/base-point';\nimport {SeriesBaseComponent} from '../../../base/series-base.component';\nimport {map, Observable} from 'rxjs';\nimport {ChartService} from '../../../service/chart.service';\nimport {ScaleService} from '../../../service/scale.service';\nimport {ZoomService} from '../../../service/zoom.service';\n\n@Component({\n selector: 'svg:svg[teta-scatter-series]',\n templateUrl: './scatter-series.component.html',\n styleUrls: ['./scatter-series.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class ScatterSeriesComponent<T extends BasePoint>\n extends SeriesBaseComponent<T>\n implements OnInit, AfterViewInit {\n transform: Observable<Pick<BasePoint, 'x' | 'y'>>;\n display: Observable<number>;\n path: Observable<string>;\n x: Observable<any>;\n y: Observable<any>;\n\n constructor(\n protected override svc: ChartService,\n protected override cdr: ChangeDetectorRef,\n protected override scaleService: ScaleService,\n protected override zoomService: ZoomService,\n protected override element: ElementRef\n ) {\n super(svc, cdr, scaleService, zoomService, element);\n }\n\n override ngOnInit(): void {\n this.x = this.scaleService.scales.pipe(map(_ => _.x.get(this.series.xAxisIndex)?.scale));\n this.y = this.scaleService.scales.pipe(map(_ => _.y.get(this.series.yAxisIndex)?.scale));\n }\n\n ngAfterViewInit() {\n }\n\n mouseenter(point: BasePoint) {\n this.svc.setTooltip({\n point: point,\n series: this.series,\n });\n }\n\n mouseleave(point: BasePoint) {\n this.svc.setTooltip({\n point: null,\n series: this.series,\n });\n }\n}\n","<ng-container *ngIf=\"{\n y: y | async,\n x: x | async\n} as scales\">\n <ng-container *ngIf=\"scales.x && scales.y\">\n <svg:circle\n class=\"line\"\n *ngFor=\"let point of series.data\"\n (mouseenter)=\"mouseenter(point)\"\n (mouseleave)=\"mouseleave(point)\"\n [attr.cx]=\"scales.x(point.x)\"\n [attr.cy]=\"scales.y(point.y)\"\n [attr.r]=\"series.style?.radius ?? 1\"\n [attr.stroke]=\"point.color ?? series.color\"\n [attr.fill]=\"point.color ?? series.color\"\n [attr.stroke-width]=\"series.style?.strokeWidth\">\n </svg:circle>\n </ng-container>\n</ng-container>\n\n\n\n","import {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n OnInit,\n} from '@angular/core';\nimport {BasePoint} from '../../../model/base-point';\nimport {SeriesBaseComponent} from '../../../base/series-base.component';\nimport {filter, map, Observable} from 'rxjs';\nimport {ChartService} from '../../../service/chart.service';\nimport {ScaleService} from '../../../service/scale.service';\nimport {ZoomService} from '../../../service/zoom.service';\nimport {FillType} from '../../../model/enum/fill-type';\n\n@Component({\n selector: 'svg:svg[teta-block-series]',\n templateUrl: './block-series.component.html',\n styleUrls: ['./block-series.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class BlockSeriesComponent<T extends BasePoint>\n extends SeriesBaseComponent<T>\n implements OnInit, AfterViewInit {\n x: Observable<any>;\n y: Observable<any>;\n displayPoints: Observable<BasePoint[]>;\n fillType = FillType;\n id: string;\n Math = Math;\n\n constructor(\n protected override svc: ChartService,\n protected override cdr: ChangeDetectorRef,\n protected override scaleService: ScaleService,\n protected override zoomService: ZoomService,\n protected override element: ElementRef\n ) {\n super(svc, cdr, scaleService, zoomService, element);\n this.id = (Date.now() + Math.random()).toString(36);\n\n }\n\n override ngOnInit(): void {\n\n this.x = this.scaleService.scales.pipe(\n map((_) => _.x.get(this.series.xAxisIndex)?.scale)\n );\n this.y = this.scaleService.scales.pipe(\n map((_) => _.y.get(this.series.yAxisIndex)?.scale)\n );\n\n this.displayPoints = this.y.pipe(\n filter((y) => y),\n map((y) => {\n return this.series.data.filter((point, index, arr) => {\n const [min, max] = y.domain();\n return (point.y >= min ||\n point.y1 >= min ||\n arr[index + 1]?.y >= min ||\n arr[index + 1]?.y1 >= min) &&\n (point.y <= max ||\n point.y1 <= max ||\n arr[index - 1]?.y <= max ||\n arr[index - 1]?.y1 <= max);\n });\n })\n );\n }\n\n mouseenter(point: BasePoint) {\n this.svc.setTooltip({\n point: point,\n series: this.series,\n });\n }\n\n mouseleave(point: BasePoint) {\n this.svc.setTooltip({\n point: null,\n series: this.series,\n });\n }\n\n ngAfterViewInit() {\n }\n}\n","<ng-container *ngIf=\"{\n y: y | async,\n x: x | async,\n points: displayPoints | async\n} as data\">\n <svg:defs *ngIf=\"series?.fillType === fillType.gradient\">\n <svg:linearGradient [id]=\"'gradient-fill-' + id\" gradientUnits=\"userSpaceOnUse\"\n x1=\"0%\"\n [attr.y1]=\"config?.inverted ? '0%' : '100%'\"\n [attr.x2]=\"config?.inverted ? '100%' : '0%'\"\n y2=\"0%\">\n <svg:stop offset=\"0%\" [attr.stop-color]=\"series.color\" stop-opacity=\"0\"></svg:stop>\n <svg:stop offset=\"5%\" [attr.stop-color]=\"series.color\" stop-opacity=\"0.1\"></svg:stop>\n <svg:stop offset=\"20%\" [attr.stop-color]=\"series.color\" stop-opacity=\"0.2\"></svg:stop>\n <svg:stop offset=\"60%\" [attr.stop-color]=\"series.color\" stop-opacity=\"0.5\"></svg:stop>\n <svg:stop offset=\"100%\" [attr.stop-color]=\"series.color\" stop-opacity=\"0.9\"></svg:stop>\n </svg:linearGradient>\n </svg:defs>\n <ng-container *ngIf=\"data.x && data.y\">\n <ng-container *ngFor=\"let point of data.points\">\n <svg:g (mouseenter)=\"mouseenter(point)\"\n (mouseleave)=\"mouseleave(point)\">\n <svg:rect\n x=\"0\"\n [attr.y]=\"data.y(point.y)\"\n [attr.height]=\"Math.abs(data.y(point.y1) - data.y(point.y))\"\n [attr.fill]=\"series.fillType === fillType.gradient ? 'url(#gradient-fill-'+id+')' : point.iconId ? 'url(#pattern'+point.iconId+')' : point.color ?? series.color\"\n [attr.fill-opacity]=\"series.style?.fillOpacity\"\n width=\"100%\">\n </svg:rect>\n <svg:text *ngIf=\"point.text && data.y(point.y1) - data.y(point.y) > 8\"\n x=\"50%\"\n [attr.y]=\"(data.y(point.y1) + data.y(point.y)) / 2\"\n alignment-baseline=\"middle\"\n text-anchor=\"middle\">{{ point.text }}\n </svg:text>\n <svg:line x1=\"0\" x2=\"100%\" [attr.y1]=\"data.y(point.y)\" [attr.y2]=\"data.y(point.y)\"\n [attr.stroke]=\"point.iconId ? 'var(--color-text-10)' : point.color ?? series.color\"></svg:line>\n <svg:line x1=\"0\" x2=\"100%\" [attr.y1]=\"data.y(point.y1)\" [attr.y2]=\"data.y(point.y1)\"\n [attr.stroke]=\"point.iconId ? 'var(--color-text-10)' : point.color ?? series.color\"></svg:line>\n </svg:g>\n </ng-container>\n\n </ng-container>\n</ng-container>\n","import {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n OnInit,\n} from '@angular/core';\nimport {SeriesBaseComponent} from '../../../base/series-base.component';\nimport {BasePoint} from '../../../model/base-point';\nimport {ChartService} from '../../../service/chart.service';\nimport {ScaleService} from '../../../service/scale.service';\nimport {ZoomService} from '../../../service/zoom.service';\nimport {filter, map, Observable} from 'rxjs';\nimport {FillType} from '../../../model/enum/fill-type';\n\n@Component({\n selector: 'svg:svg[teta-block-area-series]',\n templateUrl: './block-area-series.component.html',\n styleUrls: ['./block-area-series.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class BlockAreaSeriesComponent<T extends BasePoint>\n extends SeriesBaseComponent<T>\n implements OnInit, AfterViewInit {\n x: Observable<any>;\n y: Observable<any>;\n displayPoints: Observable<BasePoint[]>;\n fillType = FillType;\n id: string;\n Math = Math;\n constructor(\n protected override svc: ChartService,\n protected override cdr: ChangeDetectorRef,\n protected override scaleService: ScaleService,\n protected override zoomService: ZoomService,\n protected override element: ElementRef\n ) {\n super(svc, cdr, scaleService, zoomService, element);\n this.id = (Date.now() + Math.random()).toString(36);\n }\n\n override ngOnInit(): void {\n this.x = this.scaleService.scales.pipe(\n map((_) => _.x.get(this.series.xAxisIndex)?.scale)\n );\n this.y = this.scaleService.scales.pipe(\n map((_) => _.y.get(this.series.yAxisIndex)?.scale)\n );\n\n this.displayPoints = this.y.pipe(\n filter((y) => y),\n map((y) => {\n return this.series.data.filter((point, index, arr) => {\n const [min, max] = y.domain();\n return (point.y >= min ||\n point.y1 >= min ||\n arr[index + 1]?.y >= min ||\n arr[index + 1]?.y1 >= min) &&\n (point.y <= max ||\n point.y1 <= max ||\n arr[index - 1]?.y <= max ||\n arr[index - 1]?.y1 <= max);\n });\n })\n );\n }\n\n ngAfterViewInit() {\n }\n\n mouseenter(point: BasePoint) {\n this.svc.setTooltip({\n point: point,\n series: this.series,\n });\n }\n\n mouseleave(point: BasePoint) {\n this.svc.setTooltip({\n point: null,\n series: this.series,\n });\n }\n}\n","<ng-container *ngIf=\"{\n y: y | async,\n x: x | async,\n points: displayPoints | async\n} as data\">\n <svg:defs *ngIf=\"series?.fillType === fillType.gradient\">\n <svg:linearGradient [id]=\"'gradient-fill-' + id\"\n gradientUnits=\"userSpaceOnUse\"\n x1=\"0%\"\n [attr.y1]=\"config?.inverted ? '0%' : '100%'\"\n [attr.x2]=\"config?.inverted ? '100%' : '0%'\"\n y2=\"0%\">\n <svg:stop offset=\"0%\" [attr.stop-color]=\"series.color\" stop-opacity=\"0\"></svg:stop>\n <svg:stop offset=\"5%\" [attr.stop-color]=\"series.color\" stop-opacity=\"0.1\"></svg:stop>\n <svg:stop offset=\"20%\" [attr.stop-color]=\"series.color\" stop-opacity=\"0.2\"></svg:stop>\n <svg:stop offset=\"60%\" [attr.stop-color]=\"series.color\" stop-opacity=\"0.5\"></svg:stop>\n <svg:stop offset=\"100%\" [attr.stop-color]=\"series.color\" stop-opacity=\"0.9\"></svg:stop>\n </svg:linearGradient>\n </svg:defs>\n <ng-container *ngIf=\"data.x && data.y\">\n\n\n <ng-container *ngFor=\"let point of data.points\">\n <svg:g (mouseenter)=\"mouseenter(point)\"\n (mouseleave)=\"mouseleave(point)\">\n <svg:rect\n *ngIf=\"!!config.inverted\"\n [attr.x]=\"data.x(0) < data.x(point.x) ? data.x(0) : data.x(point.x)\"\n [attr.y]=\"data.y(point.y)\"\n [attr.height]=\"Math.abs(data.y(point.y1) - data.y(point.y))\"\n [attr.width]=\"data.x(0) < data.x(point.x) ? data.x(point.x) - data.x(0) : data.x(0) - data.x(point.x)\"\n [attr.stroke]=\"point.iconId ? '' : point.color ?? series.color\"\n [attr.stroke-dasharray]=\"series.style?.strokeDasharray\"\n [attr.stroke-width]=\"series.style?.strokeWidth\"\n [attr.fill]=\"series.fillType === fillType.gradient ? 'url(#gradient-fill-'+id+')' : point.iconId ? 'url(#pattern'+point.iconId+')' : point.color ?? series.color\"\n [attr.fill-opacity]=\"series.style?.fillOpacity\">\n </svg:rect>\n <svg:rect\n *ngIf=\"!config.inverted\"\n [attr.x]=\"data.x(point.x)\"\n [attr.y]=\"data.y(0)\"\n [attr.height]=\"Math.abs(data.y(0) - data.y(point.y))\"\n [attr.width]=\"data.x(point.x1) - data.x(point.x)\"\n [attr.stroke]=\"point.iconId ? '' : point.color ?? series.color\"\n [attr.stroke-dasharray]=\"series.style?.strokeDasharray\"\n [attr.stroke-width]=\"series.style?.strokeWidth\"\n [attr.fill]=\"series.fillType === fillType.gradient ? 'url(#gradient-fill-'+id+')' : point.iconId ? 'url(#pattern'+point.iconId+')' : point.color ?? series.color\"\n [attr.fill-opacity]=\"series.style?.fillOpacity\">\n </svg:rect>\n <svg:text *ngIf=\"point.text\"\n x=\"50%\"\n [attr.y]=\"(data.y(point.y1) + data.y(point.y)) / 2\"\n alignment-baseline=\"middle\"\n text-anchor=\"middle\">{{ point.text }}\n </svg:text>\n\n <!-- <svg:line x1=\"0\" x2=\"100%\" [attr.y1]=\"data.y(point.y)\" [attr.y2]=\"data.y(point.y)\" [attr.stroke]=\"point.iconId ? 'var(--color-text-10)' : point.color ?? series.color\"></svg:line>-->\n <!-- <svg:line x1=\"0\" x2=\"100%\" [attr.y1]=\"data.y(point.y1)\" [attr.y2]=\"data.y(point.y1)\" [attr.stroke]=\"point.iconId ? 'var(--color-text-10)' : point.color ?? series.color\"></svg:line>-->\n\n </svg:g>\n </ng-container>\n\n </ng-container>\n</ng-container>\n","import {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef, OnDestroy,\n OnInit,\n} from '@angular/core';\nimport {BasePoint} from '../../../model/base-point';\nimport {ChartService} from '../../../service/chart.service';\nimport {ScaleService} from '../../../service/scale.service';\nimport {ZoomService} from '../../../service/zoom.service';\nimport {FillDirection, FillType} from '../../../model/enum/fill-type';\nimport {LinearSeriesBase} from '../linear-series-base';\nimport {combineLatest, map, Observable} from 'rxjs';\nimport * as d3 from 'd3';\nimport {ClipPointsDirection} from \"../../../model/enum/clip-points-direction\";\nimport {Axis} from \"../../../core/axis/axis\";\n\n@Component({\n selector: 'svg:svg[teta-area-series]',\n templateUrl: './area-series.component.html',\n styleUrls: ['./area-series.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class AreaSeriesComponent<T extends BasePoint>\n extends LinearSeriesBase<T>\n implements OnInit, AfterViewInit, OnDestroy {\n areaPath: Observable<string>;\n\n fillDirection = FillDirection;\n fillType = FillType;\n id: string;\n\n constructor(\n protected override svc: ChartService,\n protected override cdr: ChangeDetectorRef,\n protected override scaleService: ScaleService,\n protected override zoomService: ZoomService,\n protected override element: ElementRef\n ) {\n super(svc, cdr, scaleService, zoomService, element);\n this.id = (Date.now() + Math.random()).toString(36);\n }\n\n override ngOnInit() {\n super.ngOnInit();\n this.areaPath = this.scaleService.scales.pipe(\n map(\n (\n data\n ) => {\n const {x, y} = data;\n\n this.x = x.get(this.series.xAxisIndex)?.scale;\n this.y = y.get(this.series.yAxisIndex)?.scale;\n\n if(!this.x || !this.y) {\n return ''\n }\n\n const area = d3\n .area<BasePoint>()\n .defined(\n (point) =>\n point.x !== null &&\n point.y !== null &&\n !isNaN(point.x) &&\n !isNaN(point.y)\n );\n\n area\n .x1((_) =>\n _.x1 !== null && _.x1 !== undefined ? this.x(_.x1) : this.x(0)\n )\n .x0((_) => this.x(_.x))\n\n .y((_) =>\n this.y(_.y)\n );\n\n\n const filter = this.defaultClipPointsMapping.get(this.series.clipPointsDirection);\n let filteredData = this.series.data;\n\n if(this.series.clipPointsDirection === ClipPointsDirection.x) {\n let [min, max] = this.x.domain();\n\n min = min instanceof Date ? min.getTime() : min;\n max = max instanceof Date ? max.getTime() : max;\n\n filteredData = filteredData?.filter(filter(min, max));\n }\n\n\n if(this.series.clipPointsDirection === ClipPointsDirection.y) {\n let [min, max] = this.y.domain();\n\n min = min instanceof Date ? min.getTime() : min;\n max = max instanceof Date ? max.getTime() : max;\n\n filteredData = filteredData?.filter(filter(min, max));\n }\n\n return area(filteredData);\n }\n )\n );\n }\n}\n","<svg:defs *ngIf=\"series?.fillType === fillType.gradient\">\n <svg:linearGradient [id]=\"'gradient-fill-' + id\" gradientUnits=\"userSpaceOnUse\"\n x1=\"0%\"\n [attr.y1]=\"config?.inverted || series?.fillDirection === fillDirection.y ? '0%' : '100%'\"\n [attr.x2]=\"config?.inverted || series?.fillDirection === fillDirection.y ? '100%' : '0%'\"\n y2=\"0%\">\n <svg:stop offset=\"0%\" [attr.stop-color]=\"series.color\" stop-opacity=\"0\"></svg:stop>\n <svg:stop offset=\"5%\" [attr.stop-color]=\"series.color\" stop-opacity=\"0.1\"></svg:stop>\n <svg:stop offset=\"20%\" [attr.stop-color]=\"series.color\" stop-opacity=\"0.2\"></svg:stop>\n <svg:stop offset=\"60%\" [attr.stop-color]=\"series.color\" stop-opacity=\"0.5\"></svg:stop>\n <svg:stop offset=\"100%\" [attr.stop-color]=\"series.color\" stop-opacity=\"0.8\"></svg:stop>\n </svg:linearGradient>\n</svg:defs>\n<svg:path\n class=\"area\"\n [attr.d]=\"areaPath | async\"\n [attr.stroke-width]=\"0\"\n [attr.fill-opacity]=\"series.style?.fillOpacity\"\n [attr.fill]=\"series.fillType === fillType.gradient ? 'url(#gradient-fill-'+id+')' : series.style.fill ?? series.color\">\n</svg:path>\n<svg:path\n class=\"area\"\n fill=\"none\"\n [attr.d]=\"path | async\"\n [attr.stroke]=\"series.color\"\n [attr.stroke-dasharray]=\"series.style?.strokeDasharray\"\n [attr.stroke-width]=\"series.style?.strokeWidth\">\n</svg:path>\n<ng-container *ngIf=\"transform | async as t\">\n <svg:circle\n *ngIf=\"t?.x !=null && t?.y !=null\"\n r=\"3\"\n [attr.fill]=\"series.color\"\n [attr.transform]=\"'translate('+ t.x +', '+ t.y +')'\"\n >\n </svg:circle>\n</ng-container>\n<ng-container *ngIf=\"getMarkers() as markers\">\n <svg:circle\n class=\"marker\"\n *ngFor=\"let point of markers\"\n [class.draggable-marker]=\"point?.marker?.draggable\"\n [attr.r]=\"point.marker.style?.radius ?? 5\"\n [attr.fill]=\"point.marker.style?.fill ?? 'transparent'\"\n [attr.stroke]=\"point.marker.style?.stroke ?? 'none'\"\n [attr.stroke-width]=\"point.marker.style?.strokeWidth\"\n [attr.stroke-dasharray]=\"point.marker.style?.strokeDasharray\"\n [attr.cx]=\"x(point.x)\"\n [attr.cy]=\"y(point.y)\"\n >\n </svg:circle>\n</ng-container>\n\n\n\n","import {SeriesType} from '../model/enum/series-type';\nimport {SeriesBaseComponent} from '../base/series-base.component';\nimport {LineSeriesComponent} from '../chart-container/series/line/line-series.component';\nimport {BarSeriesComponent} from '../chart-container/series/bar/bar-series.component';\nimport {ScatterSeriesComponent} from '../chart-container/series/scatter-series/scatter-series.component';\nimport {BlockSeriesComponent} from '../chart-container/series/block-series/block-series.component';\nimport {BlockAreaSeriesComponent} from '../chart-container/series/block-area-series/block-area-series.component';\nimport {AreaSeriesComponent} from '../chart-container/series/area-series/area-series.component';\n\nexport const defaultSeriesTypeMapping = new Map<SeriesType,\n typeof SeriesBaseComponent>()\n .set(SeriesType.line, LineSeriesComponent)\n .set(SeriesType.bar, BarSeriesComponent)\n .set(SeriesType.scatter, ScatterSeriesComponent)\n .set(SeriesType.block, BlockSeriesComponent)\n .set(SeriesType.area, AreaSeriesComponent)\n .set(SeriesType.blockArea, BlockAreaSeriesComponent);\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ComponentRef,\n Input, OnDestroy,\n OnInit,\n SimpleChanges,\n ViewContainerRef,\n} from '@angular/core';\nimport {SeriesBaseComponent} from '../../base/series-base.component';\nimport {LineSeriesComponent} from '../series/line/line-series.component';\nimport {Series} from '../../model/series';\nimport {BasePoint} from '../../model/base-point';\nimport {IChartConfig} from '../../model/i-chart-config';\nimport {defaultSeriesTypeMapping} from '../../default/defaultSeriesTypeMapping';\n\n@Component({\n selector: '[teta-series-host]',\n template: '',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class SeriesHostComponent<T extends BasePoint> implements OnInit, OnDestroy {\n @Input() config: IChartConfig;\n @Input() series: Series<T>;\n\n private _init = false;\n private _componentRef: ComponentRef<any>;\n\n constructor(\n private viewContainerRef: ViewContainerRef\n ) {\n }\n\n ngOnInit(): void {\n if (!SeriesBaseComponent.isPrototypeOf(this.series.component)) {\n this.series.component =\n defaultSeriesTypeMapping.get(this.series.type) || LineSeriesComponent;\n }\n\n this._componentRef = this.viewContainerRef.createComponent(\n this.series.component\n );\n this._componentRef.instance.config = this.config;\n this._componentRef.instance.series = this.series;\n this._init = true;\n }\n\n ngOnDestroy(): void {\n this._componentRef.destroy();\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (this._init && (changes.hasOwnProperty('series') || changes.hasOwnProperty('config'))) {\n this._componentRef.instance.config = this.config;\n this._componentRef.instance.series = this.series;\n this._componentRef.injector.get(ChangeDetectorRef).detectChanges();\n }\n }\n}\n","import {\n AfterViewInit,\n ChangeDetectionStrategy,\n Component, Input,\n} from '@angular/core';\n\nimport {ScaleService} from \"../../service/scale.service\";\nimport {map, Observable} from \"rxjs\";\nimport {IChartConfig} from \"../../model/i-chart-config\";\nimport {ChartService} from \"../../service/chart.service\";\n\n@Component({\n selector: '[teta-gridlines]',\n templateUrl: './gridlines.component.html',\n styleUrls: ['./gridlines.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class GridlinesComponent implements AfterViewInit {\n\n @Input() size: DOMRect;\n\n config: Observable<IChartConfig>;\n tickYValues: Observable<number[]>;\n tickXValues: Observable<number[]>;\n x: Observable<any>;\n y: Observable<any>;\n\n constructor(private svc: ScaleService, private chartService: ChartService) {\n this.config = this.chartService.config;\n\n this.tickYValues = this.svc.scales.pipe(map((_) => {\n const ratio = this.size.height / 40;\n return _.y.get(0)?.scale.ticks(ratio);\n }));\n this.tickXValues = this.svc.scales.pipe(map((_) => {\n const ratio = this.size.width / 40;\n return _.x.get(0)?.scale.ticks(ratio);\n }));\n\n this.y = this.svc.scales.pipe(map((_) => _.y.get(0)?.scale));\n this.x = this.svc.scales.pipe(map((_) => _.x.get(0)?.scale));\n }\n\n ngAfterViewInit() {\n\n }\n}\n","<ng-container *ngIf=\"{\n xValues: tickXValues | async,\n yValues: tickYValues | async,\n x: x | async,\n y: y | async,\n config: config | async\n} as data\">\n <ng-container *ngIf=\"data.y && data.config.gridLines?.showY !== false\">\n <ng-container *ngFor=\"let tick of data.yValues\">\n <svg:line [attr.x1]=\"0\"\n [attr.y1]=\"data.y(tick)\"\n [attr.x2]=\"size?.width\"\n [attr.y2]=\"data.y(tick)\"></svg:line>\n </ng-container>\n </ng-container>\n\n <ng-container *ngIf=\"data.x && data.config.gridLines?.showX !== false\">\n <ng-container *ngFor=\"let tick of data.xValues\">\n <svg:line [attr.x1]=\"data.x(tick)\"\n [attr.y1]=\"0\"\n [attr.x2]=\"data.x(tick)\"\n [attr.y2]=\"size?.height\"></svg:line>\n </ng-container>\n </ng-container>\n\n</ng-container>\n\n\n","import {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n Input,\n OnDestroy,\n OnInit,\n} from '@angular/core';\nimport {Axis} from '../../core/axis/axis';\n\nimport {lastValueFrom, map, Observable, take, withLatestFrom} from \"rxjs\";\nimport {ScaleService} from \"../../service/scale.service\";\nimport {getTextWidth} from \"../../core/utils/get-text-width\";\nimport * as d3 from 'd3';\nimport {ChartService} from \"../../service/chart.service\";\nimport {IChartConfig} from \"../../model/i-chart-config\";\n\n@Component({\n selector: '[teta-x-axis]',\n templateUrl: './x-axis.component.html',\n styleUrls: ['./x-axis.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class XAxisComponent implements OnInit {\n x: Observable<any>;\n ticks: Observable<any[]>\n\n @Input() axis: Axis;\n @Input() size: DOMRect;\n\n private _alive = true;\n\n constructor(private scaleService: ScaleService, private _svc: ChartService) {\n this.x = this.scaleService.scales.pipe(map((_) => {\n return _.x.get(this.axis.index)?.scale\n }))\n\n\n this.ticks = this.x.pipe(\n withLatestFrom(this._svc.size),\n map((_: [any, DOMRect]) => {\n const [x, size] = _;\n\n const tickSize = x.ticks().map((_) => getTextWidth(this.axis.options.tickFormat ? this.axis.options.tickFormat(_) : this.axis.defaultFormatter()(_), 0.45, 11))\n return x.ticks(size.width / parseInt(d3.max(tickSize), 10) / 3)\n })\n )\n }\n\n getLabelTransform() {\n return `translate(${\n this.size.width / 2\n }, ${this.axis.options.opposite ? -32 : 32})`;\n }\n\n ngOnInit(): void {\n }\n\n ngOnDestroy(): void {\n this._alive = false;\n }\n\n}\n","<ng-container *ngIf=\"{x: x | async, ticks: ticks | async} as data\">\n <svg:g text-anchor=\"middle\" *ngFor=\"let tick of data.ticks\" [attr.transform]=\"'translate('+ data.x(tick) +', 0)'\">\n <text fill=\"var(--color-text-70)\" [attr.dy]=\"axis.options.opposite ? '-0.71em' : '0.71em'\" [attr.y]=\"axis.options.opposite ? 0 : 9\">{{ this.axis.options.tickFormat ? this.axis.options.tickFormat(tick) : this.axis.defaultFormatter()(tick) }}</text>\n <line stroke=\"var(--color-text-30)\" [attr.y2]=\"axis.options.opposite ? -6 : 6\"></line>\n </svg:g>\n\n <svg:g class=\"label-axis font-caption\" [attr.transform]=\"getLabelTransform()\">\n <text fill=\"var(--color-text-70)\" text-anchor=\"middle\" dominant-baseline=\"middle\">{{ axis.options.title }}</text>\n </svg:g>\n</ng-container>\n\n","import {\n AfterViewInit,\n ChangeDetectionStrategy,\n Component,\n Input,\n OnInit,\n} from '@angular/core';\nimport { Axis } from '../../core/axis/axis';\n\nimport {ScaleService} from \"../../service/scale.service\";\nimport {map, Observable} from \"rxjs\";\n\n@Component({\n selector: '[teta-y-axis]',\n templateUrl: './y-axis.component.html',\n styleUrls: ['./y-axis.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class YAxisComponent implements OnInit, AfterViewInit {\n\n y: Observable<any>;\n\n @Input() axis: Axis;\n @Input() size: DOMRect;\n\n private _alive = true;\n\n constructor(private scaleService: ScaleService) {\n this.y = this.scaleService.scales.pipe(map((_) => {\n return _.y.get(this.axis.index)?.scale\n }))\n }\n\n ngOnInit(): void {}\n\n ngOnDestroy(): void {\n this._alive = false;\n }\n\n ngAfterViewInit() {\n }\n\n getLabelTransform() {\n return `translate(${\n this.axis.options.opposite\n ? this.axis.selfSize\n : -this.axis.selfSize\n }, ${this.size.height / 2}) rotate(-90)`;\n }\n\n}\n","<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","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n Input, OnDestroy,\n OnInit,\n} from '@angular/core';\nimport {PlotLine} from '../../model/plot-line';\nimport {Axis} from '../../core/axis/axis';\nimport {AxisOrientation} from '../../model/enum/axis-orientation';\nimport {ZoomService} from '../../service/zoom.service';\nimport {ScaleService} from '../../service/scale.service';\nimport * as d3 from 'd3';\nimport {IChartEvent} from '../../model/i-chart-event';\nimport {ChartService} from '../../service/chart.service';\n\n@Component({\n selector: '[teta-plot-line]',\n templateUrl: './plotline.component.html',\n styleUrls: ['./plotline.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class PlotlineComponent implements OnInit, OnDestroy {\n @Input() plotLine: PlotLine;\n @Input() size: DOMRect;\n @Input() axis: Axis;\n @Input() scale: any;\n orientation = AxisOrientation;\n dragElements: any;\n\n private _domain: number[];\n\n constructor(\n private cdr: ChangeDetectorRef,\n private zoomService: ZoomService,\n private scaleService: ScaleService,\n private chartService: ChartService,\n private element: ElementRef\n ) {\n }\n\n ngOnInit(): void {\n this._domain = this.scale.domain();\n\n const plotlineElement = d3\n .select(this.element.nativeElement)\n .select('.plotline');\n\n const grabElement = d3\n .select(this.element.nativeElement)\n .selectAll('.grabber');\n\n this.dragElements = d3\n .drag()\n .subject(() => {\n if (this.axis.orientation === AxisOrientation.y) {\n return {y: plotlineElement.attr('y1')};\n }\n if (this.axis.orientation === AxisOrientation.x) {\n return {x: plotlineElement.attr('x1')};\n }\n });\n const drag = this.dragElements\n .on(\n 'start drag end',\n (event: d3.D3DragEvent<any, PlotLine, any>, d: PlotLine) => {\n d.value = this.scale.invert(\n event[AxisOrientation[this.axis.orientation]]\n );\n\n this.emit({\n event,\n target: d,\n });\n\n this.cdr.detectChanges();\n }\n );\n\n plotlineElement.datum<PlotLine>(this.plotLine);\n grabElement.datum<PlotLine>(this.plotLine);\n\n if (this.plotLine.draggable) {\n grabElement.call(drag);\n }\n }\n\n ngOnDestroy() {\n this.dragElements.on('start drag end', null);\n }\n\n emit(event: IChartEvent<PlotLine>) {\n this.chartService.emitPlotline(event);\n }\n\n get value() {\n return this.scale(this.plotLine.value);\n }\n\n get height(): number {\n return this.size.height;\n }\n\n get width(): number {\n return this.size.width;\n }\n}\n","<svg:line class=\"plotline\"\n [attr.stroke]=\"plotLine.style?.stroke || 'red'\"\n [attr.stroke-width]=\"plotLine.style?.strokeWidth || 4\"\n [attr.stroke-dasharray]=\"plotLine.style?.strokeDasharray\"\n [attr.x1]=\"axis.orientation === orientation.x ? value : 0\"\n [attr.x2]=\"axis.orientation === orientation.x ? value : width\"\n [attr.y1]=\"axis.orientation === orientation.x ? 0 : value\"\n [attr.y2]=\"axis.orientation === orientation.x ? height : value\">\n</svg:line>\n\n\n<svg:text\n *ngIf=\"axis.orientation === orientation.x\"\n text-anchor=\"middle\"\n dominant-baseline=\"central\"\n class=\"label font-title-2 fill-text-70\"\n [attr.x]=\"value\"\n dy=\"-2em\"\n [attr.transform]=\"'rotate(-90, '+ value +',' + height / 2 + ')'\"\n [attr.y]=\"height / 2\">{{plotLine.label}}\n</svg:text>\n\n<svg:text\n *ngIf=\"axis.orientation === orientation.y\"\n text-anchor=\"middle\"\n class=\"label font-title-2 fill-text-70\"\n dominant-baseline=\"central\"\n [attr.x]=\"value\"\n [attr.y]=\"width / 2\">{{plotLine.label}}\n</svg:text>\n\n<svg:line class=\"grabber\"\n\n [class.x-grabber]=\"axis.orientation === orientation.x\"\n [class.y-grabber]=\"axis.orientation === orientation.y\"\n [attr.stroke]=\"'red'\"\n [attr.stroke-width]=\"8\"\n opacity=\"0\"\n [attr.x1]=\"axis.orientation === orientation.x ? value : 0\"\n [attr.x2]=\"axis.orientation === orientation.x ? value : width\"\n [attr.y1]=\"axis.orientation === orientation.x ? 0 : value\"\n [attr.y2]=\"axis.orientation === orientation.x ? height : value\">\n</svg:line>\n","import {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n HostListener,\n Input, OnDestroy\n} from '@angular/core';\nimport * as d3 from 'd3';\nimport {PlotBand} from '../../model/plot-band';\nimport {ScaleService} from '../../service/scale.service';\nimport {Axis} from '../../core/axis/axis';\nimport {ZoomService} from '../../service/zoom.service';\nimport {AxisOrientation} from '../../model/enum/axis-orientation';\nimport {IChartEvent} from '../../model/i-chart-event';\nimport {ChartService} from '../../service/chart.service';\n\n@Component({\n selector: '[teta-plot-band]',\n templateUrl: './plot-band.component.html',\n styleUrls: ['./plot-band.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class PlotBandComponent implements AfterViewInit, OnDestroy {\n @Input() plotBand: PlotBand;\n @Input() axis: Axis;\n @Input() scale: any;\n @Input() size: DOMRect;\n\n orientation = AxisOrientation;\n resizeElements: any;\n dragElements: any;\n\n constructor(\n private scaleService: ScaleService,\n private zoomService: ZoomService,\n private chartService: ChartService,\n private cdr: ChangeDetectorRef,\n private element: ElementRef\n ) {\n }\n\n @HostListener('click', ['$event']) click(event: MouseEvent) {\n this.emit({\n target: this.plotBand,\n event,\n });\n }\n\n @HostListener('contextmenu', ['$event']) contextMenu(event: MouseEvent) {\n this.emit({\n target: this.plotBand,\n event,\n });\n }\n\n emit(event: IChartEvent<PlotBand>) {\n this.chartService.emitPlotband(event);\n }\n\n ngAfterViewInit(): void {\n\n const plotbandElement = d3\n .select(this.element.nativeElement)\n .select('.plotband');\n\n const grabElements = d3\n .select(this.element.nativeElement)\n .selectAll('.grabber');\n\n this.dragElements = d3\n .drag()\n .subject(() => {\n if (this.axis.orientation === AxisOrientation.x) {\n return {x: plotbandElement.attr('x')};\n }\n\n if (this.axis.orientation === AxisOrientation.y) {\n return {y: plotbandElement.attr('y')};\n }\n });\n\n const drag = this.dragElements\n .on(\n 'start drag end',\n (event: d3.D3DragEvent<any, PlotBand, any>, d: PlotBand) => {\n\n let bandSize = parseFloat(\n plotbandElement.attr(\n this.axis.orientation === AxisOrientation.x ? 'width' : 'height'\n )\n );\n\n d.from = this.scale.invert(\n event[AxisOrientation[this.axis.orientation]]\n );\n\n d.to = this.scale.invert(\n event[AxisOrientation[this.axis.orientation]] + bandSize\n );\n\n this.emit({\n event,\n target: d,\n });\n\n this.cdr.detectChanges();\n }\n );\n\n let grabberKey;\n this.resizeElements = d3\n .drag();\n\n const resize = this.resizeElements\n .on(\n 'start drag end',\n (event: d3.D3DragEvent<any, PlotBand, any>, d: PlotBand) => {\n if (event?.type === 'start') {\n const {grabber} = event?.sourceEvent?.target?.dataset;\n grabberKey = grabber;\n }\n\n const min = Math.min(...this.scale.domain());\n const max = Math.max(...this.scale.domain());\n\n const minValue = d.min ?? min;\n const maxValue = d.max ?? max;\n\n d[grabberKey] = this.scale.invert(\n event[AxisOrientation[this.axis.orientation]]\n );\n\n if (grabberKey === 'from') {\n const borderMin = d.from <= minValue;\n\n if (d.from >= d.to) {\n d.from = d.to;\n }\n\n if (borderMin) {\n d.from = minValue;\n }\n }\n\n if (grabberKey === 'to') {\n const borderMax = d.to >= maxValue;\n\n if (borderMax) {\n d.to = maxValue;\n }\n\n if (d.to <= d.from) {\n d.to = d.from;\n }\n }\n\n this.emit({\n event,\n target: d,\n });\n\n this.cdr.detectChanges();\n }\n );\n\n plotbandElement.datum<PlotBand>(this.plotBand);\n grabElements.datum<PlotBand>(this.plotBand);\n\n if (this.plotBand.draggable) {\n plotbandElement.call(drag);\n }\n\n if (this.plotBand.resizable) {\n grabElements.call(resize);\n }\n }\n\n ngOnDestroy() {\n this.dragElements.on('start drag end', null);\n this.resizeElements.on('start drag end', null);\n }\n\n get height(): number {\n return this.size.height;\n }\n\n get width(): number {\n return this.size.width;\n }\n\n get from(): number {\n return this.scale(this.plotBand.from);\n }\n\n get to(): number {\n return this.scale(this.plotBand.to);\n }\n\n get bandSize(): number {\n return Math.abs(\n this.scale(this.plotBand.to) - this.scale(this.plotBand.from)\n );\n }\n\n getTextCenter = () => this.scale((this.plotBand.from + this.plotBand.to) / 2);\n\n getFill(d: PlotBand): string {\n if (d.style?.plotBand?.patternImage) {\n return `url(#${d.style.plotBand?.patternImage})`;\n }\n return d.style.plotBand?.fill;\n }\n}\n","<svg:rect\n class=\"plotband\" xmlns:svg=\"http://www.w3.org/1999/html\"\n [class.draggable]=\"plotBand?.draggable === true\"\n [attr.fill]=\"getFill(plotBand)\"\n [attr.opacity]=\"plotBand.style?.plotBand?.opacity\"\n [attr.height]=\"axis.orientation === orientation.x ? height : bandSize\"\n [attr.width]=\"axis.orientation === orientation.x ? bandSize : width\"\n [attr.y]=\"axis.orientation === orientation.y ? from : null\"\n [attr.x]=\"axis.orientation === orientation.x ? from : null\">\n</svg:rect>\n\n<svg:text\n *ngIf=\"axis.orientation === orientation.x\"\n text-anchor=\"middle\"\n dominant-baseline=\"central\"\n class=\"label font-caption fill-text-90\"\n [attr.x]=\"getTextCenter()\"\n [attr.transform]=\"'rotate(-90, '+ getTextCenter() +',' + height / 2 + ')'\"\n [attr.y]=\"height / 2\">{{plotBand.label}}\n</svg:text>\n\n<svg:text\n *ngIf=\"axis.orientation === orientation.y\"\n text-anchor=\"middle\"\n class=\"label font-caption fill-text-90\"\n dominant-baseline=\"central\"\n [attr.x]=\"getTextCenter()\"\n [attr.y]=\"width / 2\">{{plotBand.label}}\n</svg:text>\n\n<svg:line class=\"display-grabber\"\n *ngIf=\"plotBand.showGrabbers && plotBand.resizable\"\n [attr.stroke]=\"plotBand.style?.grabbers?.stroke || 'var(--color-text-50)'\"\n [attr.stroke-width]=\"plotBand.style?.grabbers?.strokeWidth || 4\"\n [attr.stroke-dasharray]=\"plotBand.style?.grabbers?.strokeDasharray\"\n [attr.x1]=\"axis.orientation === orientation.x ? from : 0\"\n [attr.x2]=\"axis.orientation === orientation.x ? from : width\"\n [attr.data-grabber]=\"'from'\"\n [attr.y1]=\"axis.orientation === orientation.x ? 0 : from\"\n [attr.y2]=\"axis.orientation === orientation.x ? height : from\">\n</svg:line>\n\n<svg:line class=\"display-grabber\"\n *ngIf=\"plotBand.showGrabbers && plotBand.resizable\"\n [attr.stroke]=\"plotBand.style?.grabbers?.stroke || 'var(--color-text-50)'\"\n [attr.stroke-width]=\"plotBand.style?.grabbers?.strokeWidth || 4\"\n [attr.stroke-dasharray]=\"plotBand.style?.grabbers?.strokeDasharray\"\n [attr.x1]=\"axis.orientation === orientation.x ? to : 0\"\n [attr.x2]=\"axis.orientation === orientation.x ? to : width\"\n [attr.data-grabber]=\"'to'\"\n [attr.y1]=\"axis.orientation === orientation.x ? 0 : to\"\n [attr.y2]=\"axis.orientation === orientation.x ? height : to\">\n</svg:line>\n\n<svg:line class=\"grabber\"\n *ngIf=\"plotBand.resizable\"\n [class.x-grabber]=\"axis.orientation === orientation.x\"\n [class.y-grabber]=\"axis.orientation === orientation.y\"\n [class.resizeable]=\"plotBand?.resizable\"\n [attr.stroke]=\"plotBand.style?.grabbers?.stroke || 'var(--color-text-50)'\"\n [attr.stroke-width]=\"8\"\n [style.transform]=\"axis.orientation === orientation.x ? 'translateX(2px)' : 'translateY(2px)'\"\n [attr.x1]=\"axis.orientation === orientation.x ? from : 0\"\n [attr.x2]=\"axis.orientation === orientation.x ? from : width\"\n [attr.data-grabber]=\"'from'\"\n [attr.y1]=\"axis.orientation === orientation.x ? 0 : from\"\n [attr.y2]=\"axis.orientation === orientation.x ? height : from\">\n</svg:line>\n<svg:line class=\"grabber\"\n *ngIf=\"plotBand.resizable\"\n [class.x-grabber]=\"axis.orientation === orientation.x\"\n [class.y-grabber]=\"axis.orientation === orientation.y\"\n [class.resizeable]=\"plotBand?.resizable\"\n [attr.stroke]=\"plotBand.style?.grabbers?.stroke || 'var(--color-text-50)'\"\n [attr.stroke-width]=\"8\"\n [style.transform]=\"axis.orientation === orientation.x ? 'translateX(-2px)' : 'translateY(-2px)'\"\n [attr.x1]=\"axis.orientation === orientation.x ? to : 0\"\n [attr.x2]=\"axis.orientation === orientation.x ? to : width\"\n [attr.data-grabber]=\"'to'\"\n [attr.y1]=\"axis.orientation === orientation.x ? 0 : to\"\n [attr.y2]=\"axis.orientation === orientation.x ? height : to\">\n</svg:line>\n\n\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n Input,\n NgZone,\n OnInit,\n ViewChild,\n} from '@angular/core';\nimport {filter, map, Observable, tap} from 'rxjs';\nimport {ChartService} from '../../service/chart.service';\nimport {ZoomService} from '../../service/zoom.service';\nimport {IDisplayTooltip} from '../../model/i-display-tooltip';\nimport {DomSanitizer, SafeHtml} from '@angular/platform-browser';\nimport {IChartConfig} from '../../model/i-chart-config';\nimport {Series} from '../../model/series';\nimport * as d3 from 'd3';\nimport {Align, PositionUtil, VerticalAlign} from '@tetacom/ng-components';\n\n@Component({\n selector: 'teta-tooltip',\n templateUrl: './tooltip.component.html',\n styleUrls: ['./tooltip.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class TooltipComponent implements OnInit {\n @Input() size: DOMRect;\n @Input() config: IChartConfig;\n\n @ViewChild('tooltip', {static: false, read: ElementRef}) tooltip: ElementRef;\n\n position: Observable<{\n left?: number;\n top?: number;\n bottom?: number;\n right?: number;\n }>;\n\n displayTooltips: Observable<SafeHtml>;\n display: Observable<number>;\n tooltips: Observable<IDisplayTooltip[]>;\n\n constructor(\n private svc: ChartService,\n private cdr: ChangeDetectorRef,\n private zoomService: ZoomService,\n private sanitizer: DomSanitizer,\n private _zone: NgZone,\n private _elementRef: ElementRef\n ) {\n this.tooltips = this.svc.tooltips.pipe(map((_) => [..._.values()]));\n }\n\n ngOnInit(): void {\n this.display = this.svc.pointerMove.pipe(\n map((event: PointerEvent) => {\n return event.type === 'mousemove' ? 1 : 0;\n }),\n tap(() => {\n setTimeout(() => {\n this.cdr.detectChanges();\n });\n })\n );\n\n this.position = this.svc.pointerMove.pipe(\n filter((event) => !!event),\n map((_) => {\n return this.getPosition(_);\n }),\n tap(() => this.cdr.detectChanges())\n );\n\n const transformHtml = (html): SafeHtml => {\n return this.sanitizer.bypassSecurityTrustHtml(html);\n };\n\n const defaultFormatter = (tooltips: IDisplayTooltip[]): SafeHtml => {\n let html = '';\n const format = d3.timeFormat('%d.%m.%Y');\n tooltips.forEach((_) => {\n const indicatorStyle = `display:block; width: 10px; height: 2px; background-color: ${_?.series?.color}`;\n\n html += `<div class=\"display-flex align-center\"><span class=\"margin-right-1\" style=\"${indicatorStyle}\"></span>\n <span class=\"font-title-3\">${_.series.name}\n <span class=\"font-body-3\">\n x: ${(_.point.x as any) instanceof Date ? format(_.point.x as any) : _.point.x?.toFixed(2)}\n y: ${(_.point.y as any) instanceof Date ? format(_.point.y as any) : _.point.y?.toFixed(2)}\n </span>\n </span></div>`;\n });\n\n return transformHtml(html);\n };\n\n const formatter = this.config?.tooltip?.format;\n\n this.displayTooltips = this.svc.tooltips.pipe(\n map((tooltips: Map<Series<any>, IDisplayTooltip>) => {\n const tooltipList = [...tooltips.values()];\n if (tooltipList?.length < 1) {\n return '';\n }\n const formatted = formatter\n ? transformHtml(formatter(tooltipList))\n : defaultFormatter(tooltipList);\n return formatted;\n })\n );\n }\n\n private getPosition(event: PointerEvent) {\n if (!this.tooltip) {\n return null;\n }\n return PositionUtil.getPosition(\n {\n top: event.pageY,\n bottom: event.pageY,\n left: event.pageX,\n right: event.pageX,\n },\n this.tooltip?.nativeElement?.getBoundingClientRect(),\n Align.auto,\n VerticalAlign.top,\n 12\n );\n }\n\n\n format(input: number | Date): string {\n if (input instanceof Date) {\n const format = d3.timeFormat('%d.%m.%Y');\n return format(input);\n }\n\n const format = d3.format(',.5~r');\n return format(input);\n }\n}\n","<ng-container *tetaLet=\"position | async as p\">\n <ng-container *ngIf=\"tooltips | async as t\">\n <div class=\"chart-tooltip color-text-90 bg-background-50 shadow-2\"\n #tooltip\n [style.position]=\"'fixed'\"\n *ngIf=\"t.length > 0\"\n [style.opacity]=\"display | async\"\n style=\"pointer-events: none; min-width: 200px;\"\n [style.left.px]=\"p?.left\"\n [style.top.px]=\"p?.top\"\n [style.bottom.px]=\"p?.bottom\"\n [style.right.px]=\"p?.right\"\n >\n <ng-container *ngIf=\"config.tooltip?.template\">\n <ng-container *ngTemplateOutlet=\"config.tooltip.template; context: {$implicit: t}\"></ng-container>\n </ng-container>\n\n <ng-container *ngIf=\"config.tooltip?.format; else default\">\n <div [innerHTML]=\"displayTooltips | async\"></div>\n </ng-container>\n\n <ng-template #default>\n <div *ngIf=\"!config.tooltip?.template\" class=\"padding-2 border-radius-1\">\n <ng-container *ngFor=\"let tooltip of t\">\n <div class=\"display-flex align-center\">\n <span class=\"display-block margin-right-1\" [style.width.px]=\"10\" [style.height.px]=\"2\"\n [style.background-color]=\"tooltip.series?.color\"></span>\n <span class=\"font-title-3\">\n {{ tooltip.series?.name }}\n <span class=\"font-body-3\">\n x: {{ format(tooltip.point?.x) }}\n y: {{ format(tooltip.point?.y) }}\n </span>\n </span>\n </div>\n </ng-container>\n </div>\n </ng-template>\n </div>\n </ng-container>\n</ng-container>\n\n\n\n","import {\n AfterViewInit,\n Directive,\n ElementRef,\n HostBinding,\n Input,\n NgZone,\n OnDestroy,\n SimpleChanges,\n} from '@angular/core';\nimport {ZoomService} from '../service/zoom.service';\nimport {IChartConfig} from '../model/i-chart-config';\nimport {Axis} from '../core/axis/axis';\nimport * as d3 from 'd3';\nimport {D3ZoomEvent, ZoomBehavior, zoomIdentity} from 'd3';\nimport {ZoomType} from '../model/enum/zoom-type';\nimport {AxisOrientation} from '../model/enum/axis-orientation';\nimport {BrushMessage, IBroadcastMessage, ZoomMessage,} from '../model/i-broadcast-message';\nimport {BrushType} from '../model/enum/brush-type';\nimport {BroadcastService} from '../service/broadcast.service';\nimport {debounceTime, tap} from 'rxjs/operators';\nimport {combineLatestWith, filter, takeWhile} from 'rxjs';\nimport {ChartService} from '../service/chart.service';\nimport {ZoomBehaviorType} from '../model/enum/zoom-behavior-type';\nimport objectHash from 'object-hash';\n\n@Directive({\n selector: '[tetaZoomable]',\n})\nexport class ZoomableDirective implements OnDestroy, AfterViewInit {\n @Input() config: IChartConfig;\n @Input() axis: Axis;\n @Input() size: DOMRect;\n @Input() brushScale?: any;\n @Input() scale?: any;\n\n @HostBinding('class.zoomable') private zoomable = false;\n @HostBinding('class.crosshair') private crosshair = false;\n\n private _element: d3.Selection<SVGElement, any, any, any>;\n private zoom: ZoomBehavior<any, any>;\n private alive = true;\n\n private currentTransform = zoomIdentity;\n private currentSelection;\n private hash: string;\n\n constructor(\n private elementRef: ElementRef,\n private zoomService: ZoomService,\n private broadcastService: BroadcastService,\n private chartService: ChartService,\n private zone: NgZone\n ) {\n }\n\n ngOnInit() {\n if (this.axis?.options?.zoom || this.config?.zoom?.enable) {\n this.zoomable = this.config?.zoom?.zoomBehavior === ZoomBehaviorType.move && !this.config?.tooltip?.showCrosshair;\n this.crosshair = this.config?.tooltip?.showCrosshair;\n }\n }\n\n ngOnChanges(changes: SimpleChanges) {\n if (changes.hasOwnProperty('brushScale') || changes.hasOwnProperty('scale') || changes.hasOwnProperty('axis')) {\n if (this.hash) {\n this.zoomService.scaleHashMap.set(this.hash, this.scale);\n this.zoomService.axisHashMap.set(this.hash, this.axis);\n }\n }\n }\n\n ngAfterViewInit() {\n const enable =\n (this.axis?.options?.zoom && this.axis?.options.visible !== false) ||\n this.config?.zoom?.enable;\n\n if (!enable) {\n return;\n }\n\n\n if (enable) {\n this._element = d3.select(this.elementRef.nativeElement);\n this.hash = objectHash.sha1({index: this.axis.index, orientation: this.axis.orientation});\n\n this.zoom = d3.zoom().extent([\n [0, 0],\n [this.size.width, this.size.height],\n ]);\n\n if (this.config.zoom?.limitTranslateByData) {\n this.zoom.translateExtent([\n [0, 0],\n [this.size.width, this.size.height],\n ]);\n }\n\n\n if(this.config.zoom?.wheelDelta) {\n this.zoom.wheelDelta(this.config.zoom?.wheelDelta)\n }\n\n this.zoomService.axisHashMap.set(this.hash, this.axis);\n this.zoomService.elementHashMap.set(this.hash, this._element);\n this.zoomService.scaleHashMap.set(this.hash, this.scale);\n this.zoomService.zoomHashMap.set(this.hash, this.zoom);\n this.zoomService.setBroadcastChannel(this.config?.zoom.syncChannel);\n\n\n const maxZoom = this.config.zoom?.max\n ? (this.axis.extremes[1] - this.axis.extremes[0]) /\n this.config.zoom?.max\n : this.config.zoom?.limitZoomByData\n ? 1\n : 0;\n\n const minZoom = this.config.zoom?.min\n ? (this.axis.extremes[1] - this.axis.extremes[0]) /\n this.config.zoom?.min\n : Infinity;\n\n this.zoom.scaleExtent([maxZoom, minZoom]);\n\n this.zoom.on('zoom end', this.zoomed);\n this._element.call(this.zoom).on('dblclick.zoom', null); // Disable dbclick zoom\n\n\n this.chartService.emitZoomInstance(this.zoomService);\n\n if (this.config?.zoom?.zoomBehavior === ZoomBehaviorType.wheel) {\n this.runWheelZoom();\n }\n }\n\n // Subscribe to zoom events\n this.broadcastService.subscribeToZoom(this.config?.zoom.syncChannel).pipe(\n takeWhile((_) => this.alive),\n tap((m: IBroadcastMessage<ZoomMessage>) => {\n if (\n this.axis.index === m.message?.axis?.index && this.axis.orientation === m.message?.axis?.orientation\n ) {\n const currentZoom = d3.zoomTransform(this._element.node());\n\n if (currentZoom !== m.message.event.transform && this.config.id === m.message?.chartId) {\n this._element.call(\n this.zoom.transform,\n m.message.event.transform\n );\n }\n }\n }),\n filter(\n (m: IBroadcastMessage<ZoomMessage>) =>\n m.message.event.sourceEvent instanceof MouseEvent ||\n m.message.event.sourceEvent instanceof WheelEvent ||\n (window.TouchEvent &&\n m.message.event.sourceEvent instanceof TouchEvent)\n ),\n filter((m: IBroadcastMessage<ZoomMessage>) => {\n return (\n this.axis.index === m.message?.axis?.index &&\n this.axis.orientation === m.message?.axis?.orientation\n );\n }),\n tap((m: IBroadcastMessage<ZoomMessage>) => {\n if (this.config.id !== m.message?.chartId) {\n\n this.brushScale.domain(this.axis.originDomain);\n\n const scale = Math.abs(this.axis.originDomain[1] - this.axis.originDomain[0]) / Math.abs(m.message.domain[1] - m.message.domain[0]);\n\n let transform = zoomIdentity.scale(scale);\n\n if (this.config?.zoom?.type === ZoomType.x) {\n if (this.config.xAxis[0]?.inverted) {\n transform = transform.translate(this.brushScale(-m.message.domain[1]), 0);\n } else {\n transform = transform.translate(-this.brushScale(m.message.domain[0]), 0);\n }\n }\n\n if (this.config?.zoom?.type === ZoomType.y) {\n if (this.config.yAxis[0]?.inverted) {\n transform = transform.translate(0, -this.brushScale(m.message.domain[0]));\n } else {\n transform = transform.translate(0, -this.brushScale(m.message.domain[1]));\n }\n }\n\n this._element.call(\n this.zoom.transform,\n transform,\n null,\n {}\n );\n }\n })\n )\n .subscribe();\n\n // Subscribe to brush events x or y\n\n if (\n (this.config.brush?.type === BrushType.x &&\n this.axis.orientation === AxisOrientation.x) ||\n (this.config.brush?.type === BrushType.y &&\n this.axis.orientation === AxisOrientation.y)\n ) {\n\n this.broadcastService.subscribeToBrush(this.config?.zoom.syncChannel)\n .pipe(\n combineLatestWith(this.chartService.size),\n takeWhile((_) => this.alive),\n filter((data: [IBroadcastMessage<BrushMessage>, DOMRect]) => {\n const [m] = data;\n return Boolean(m.message.selection)\n }),\n tap((data: [IBroadcastMessage<BrushMessage>, DOMRect]) => {\n\n const [m] = data;\n const currentTransform = d3.zoomTransform(this._element.node());\n if (\n !m.message.event &&\n this.currentSelection &&\n currentTransform.k !== 1\n ) {\n return;\n }\n\n const s = m.message.selection;\n\n this.brushScale.domain(this.axis.originDomain);\n const domain = this.brushScale.domain();\n\n const scale = Math.abs(domain[1] - domain[0]) / Math.abs(s[1] - s[0]);\n let transform = zoomIdentity.scale(scale);\n\n if (m.message?.brushType === BrushType.x) {\n if (this.config.xAxis[0]?.inverted) {\n transform = transform.translate(-this.brushScale(s[0]), 0);\n } else {\n transform = transform.translate(-this.brushScale(s[1]), 0);\n }\n }\n\n if (m.message?.brushType === BrushType.y) {\n if (this.config.yAxis[0]?.inverted) {\n transform = transform.translate(0, -this.brushScale(s[0]));\n } else {\n transform = transform.translate(0, -this.brushScale(s[1]));\n }\n }\n\n if (m.message?.style?.transition) {\n this._element.transition().call(this.zoom.transform, transform, null, {});\n } else {\n this._element.call(this.zoom.transform, transform, null, {});\n }\n\n this.currentSelection = m.message.selection;\n })\n )\n .subscribe();\n }\n }\n\n ngOnDestroy(): void {\n this.zoom?.on('start zoom end', null);\n this._element?.on('wheel', null);\n this.alive = false;\n }\n\n\n zoomed = (event: D3ZoomEvent<any, any>) => {\n if (event.sourceEvent) {\n if (Object.keys(event.sourceEvent).length !== 0) {\n\n if (this.currentTransform === event.transform) {\n return;\n }\n\n const origin = this.brushScale.copy().domain(this.axis.extremes);\n\n let domain =\n this.config.zoom?.type === ZoomType.y\n ? event.transform.rescaleY(origin).domain()\n : event.transform.rescaleX(origin).domain();\n\n const message = new ZoomMessage({\n event,\n axis: this.axis,\n domain,\n chartId: this.config.id,\n });\n\n this.broadcastService.broadcastZoom({\n channel: this.config?.zoom?.syncChannel,\n message,\n });\n }\n\n this.zoomService.fireZoom({\n event,\n target: this.axis,\n });\n\n this.currentTransform = event.transform;\n }\n };\n\n private runWheelZoom() {\n let type: 'start' | 'zoom' | 'end' = 'start';\n let wheeling;\n\n this.zoom\n .filter(\n (event) => {\n return (event.ctrlKey && event.type === 'wheel') ||\n Boolean(window.TouchEvent && event.type !== 'wheel');\n }\n )\n .wheelDelta((event) => {\n const delta =\n this.config?.zoom.type === ZoomType.x\n ? -event.deltaX\n : -event.deltaY;\n return delta * 0.002;\n });\n\n const emit = (type: string, event: WheelEvent) => {\n const origin = this.brushScale.copy().domain(this.axis.extremes);\n let transform = zoomIdentity;\n const delta =\n type === 'end'\n ? 0\n : this.config.zoom?.type === ZoomType.y\n ? event.deltaY\n : event.deltaX;\n\n if (this.config.zoom?.type === ZoomType.y) {\n transform = transform.translate(\n 0,\n this.currentTransform.y - delta / 2\n );\n }\n\n if (this.config.zoom?.type === ZoomType.x) {\n transform = transform.translate(\n this.currentTransform.x - delta / 2,\n 0\n );\n }\n\n transform = transform.scale(this.currentTransform.k);\n\n let domain =\n this.config.zoom?.type === ZoomType.y\n ? transform.rescaleY(origin).domain()\n : transform.rescaleX(origin).domain();\n\n const message = new ZoomMessage({\n event: {\n sourceEvent: event,\n transform,\n type,\n },\n axis: this.axis,\n domain,\n chartId: this.config.id,\n });\n\n this.zoomService.fireZoom({\n event: {\n sourceEvent: event,\n transform,\n type,\n },\n target: this.axis,\n });\n\n this._element.call(this.zoom.transform, transform);\n this.currentTransform = transform;\n\n this.broadcastService.broadcastZoom({\n channel: this.config?.zoom?.syncChannel,\n message,\n });\n };\n\n\n this._element.on('wheel', (event: WheelEvent) => {\n event.preventDefault();\n\n if (event.ctrlKey) {\n return;\n }\n\n this.zone.runOutsideAngular(() => {\n clearTimeout(wheeling);\n emit(type, event);\n type = 'zoom';\n\n wheeling = setTimeout(() => {\n emit('end', event);\n\n type = 'start';\n }, 50);\n });\n });\n\n }\n}\n","import {\n AfterViewInit,\n Directive,\n ElementRef,\n Input,\n OnInit,\n SimpleChanges,\n} from '@angular/core';\nimport { IChartConfig } from '../model/i-chart-config';\nimport { BrushService } from '../service/brush.service';\nimport { ChartService } from '../service/chart.service';\n\n@Directive({\n selector: '[tetaBrushable]',\n})\nexport class BrushableDirective implements OnInit, AfterViewInit {\n @Input() config: IChartConfig;\n @Input() brushScale: any;\n\n constructor(\n private brushService: BrushService,\n private chartService: ChartService,\n private element: ElementRef\n ) {}\n\n ngOnInit() {}\n ngAfterViewInit() {}\n\n ngOnChanges(changes: SimpleChanges) {\n\n if(changes.hasOwnProperty('config')) {\n this.brushService.clearPreviousSelection();\n }\n\n if(this.config?.brush?.enable) {\n this.brushService.applyBrush(\n this.element,\n this.config,\n this.brushScale\n );\n }\n }\n}\n","import {\n ChangeDetectionStrategy, ChangeDetectorRef,\n Component,\n ElementRef, HostListener,\n Input, OnDestroy,\n ViewChild,\n} from '@angular/core';\nimport {Annotation} from '../../model/annotation';\nimport * as d3 from 'd3';\nimport {map, Observable} from 'rxjs';\nimport {ScaleService} from '../../service/scale.service';\nimport {ChartService} from '../../service/chart.service';\n\n@Component({\n selector: '[teta-annotation]',\n templateUrl: './annotation.component.html',\n styleUrls: ['./annotation.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class AnnotationComponent implements OnDestroy {\n @Input() set annotation(annotation: Annotation) {\n this._annotation = annotation;\n }\n\n get annotation(): Annotation {\n return this._annotation;\n }\n\n @ViewChild('annotationNode', {static: false})\n set node(node: ElementRef) {\n this._node = node;\n this.init();\n this.cdr.detectChanges();\n }\n\n get node() {\n return this._node;\n }\n\n x: Observable<any>;\n y: Observable<any>;\n\n private drag: d3.DragBehavior<any, any, any>;\n private _annotation: Annotation;\n private _node: ElementRef;\n\n constructor(\n private scaleService: ScaleService,\n private cdr: ChangeDetectorRef,\n private chartService: ChartService) {\n this.x = this.scaleService.scales.pipe(map((_) => _.x.get(this.annotation.xAxisIndex ?? 0)?.scale));\n this.y = this.scaleService.scales.pipe(map((_) => _.y.get(this.annotation.yAxisIndex ?? 0)?.scale));\n this.drag = d3.drag();\n }\n\n @HostListener('click', ['$event']) click(event: MouseEvent) {\n this.chartService.emitAnnotation({\n event,\n target: this.annotation\n });\n }\n\n @HostListener('contextmenu', ['$event']) contextMenu(event: MouseEvent) {\n this.chartService.emitAnnotation({\n event,\n target: this.annotation\n });\n }\n\n\n ngOnDestroy() {\n this.drag.on('drag end', null);\n }\n\n private init() {\n\n d3.select(this.node.nativeElement).datum(this.annotation);\n\n if (this.annotation.draggable) {\n this.drag.on('drag end', (event, d: Annotation) => {\n d.dx += event.dx;\n d.dy += event.dy;\n this.cdr.detectChanges();\n this.chartService.emitMoveAnnotation({\n event,\n target: d\n });\n });\n d3.select(this.node.nativeElement).call(this.drag);\n }\n }\n}\n","<ng-container *ngIf=\"{\n x: x | async,\n y: y | async\n } as data\">\n <ng-container *ngIf=\"data.x && data.y\">\n\n\n <svg:circle\n [attr.r]=\"annotation.style?.radius ?? 5\"\n [attr.cx]=\"data.x(annotation.point.x)\"\n [attr.fill]=\"annotation?.style?.fill ?? 'var(--color-text-90)'\"\n [attr.cy]=\"data.y(annotation.point.y)\">\n </svg:circle>\n <svg:line\n [attr.x1]=\"data.x(annotation.point.x)\"\n [attr.y1]=\"data.y(annotation.point.y)\"\n [attr.x2]=\"data.x(annotation.point.x) + (annotation.dx ?? 0)\"\n [attr.y2]=\"data.y(annotation.point.y) + (annotation.dy ?? 0)\"\n [attr.stroke]=\"annotation.style?.stroke ?? 'var(--color-text-90)'\"\n [attr.stroke-width]=\"annotation.style?.strokeWidth ?? 1\"\n [attr.stroke-dasharray]=\"annotation.style?.strokeDasharray ?? null\"\n >\n </svg:line>\n <svg:foreignObject\n class=\"position-absolute\"\n [attr.width]=\"node?.nativeElement.offsetWidth ?? 0\"\n [attr.height]=\"node?.nativeElement.offsetHeight ?? 0\"\n [attr.x]=\"data.x(annotation.point.x) + (annotation.dx ?? 0) - 10\"\n [attr.y]=\"data.y(annotation.point.y) + (annotation.dy ?? 0) - 10\">\n <div\n #annotationNode\n [style.background-color]=\"annotation.style?.fill ?? 'var(--color-text-90)'\"\n [style.cursor]=\"annotation?.draggable ? 'move' : 'default'\"\n [className]=\"'padding-h-2 ' + annotation.className ?? ''\"\n style=\"border-radius: 2px; display: inline-block;\">\n <ng-container *ngIf=\"annotation.template;else default\">\n <ng-container *ngTemplateOutlet=\"annotation.template;context: {$implicit: annotation}\"></ng-container>\n </ng-container>\n </div>\n </svg:foreignObject>\n </ng-container>\n</ng-container>\n<ng-template #default>\n {{ annotation.note?.label}}\n</ng-template>\n","import {ChangeDetectorRef, Component, Input, OnInit} from '@angular/core';\nimport {ScaleService} from \"../../service/scale.service\";\nimport {map, Observable, tap} from \"rxjs\";\nimport {ChartService} from \"../../service/chart.service\";\n\n@Component({\n selector: '[teta-crosshair]',\n templateUrl: './crosshair.component.html',\n styleUrls: ['./crosshair.component.scss']\n})\nexport class CrosshairComponent implements OnInit {\n\n @Input() size: DOMRect;\n transform: Observable<any>;\n\n constructor(private scaleService: ScaleService, private chartService: ChartService, private cdr: ChangeDetectorRef) {\n }\n\n ngOnInit(): void {\n this.transform = this.chartService.pointerMove.pipe(\n map((event: PointerEvent) => {\n const composedPath = event.composedPath() as HTMLElement[];\n const classes = composedPath.map((_) => _.classList?.contains('crosshair')).filter((_) => _)\n console.log(classes)\n\n\n return {\n x: event.type === 'mouseleave' ? -9999 : event.offsetX,\n y: event.type === 'mouseleave' ? -9999 : event.offsetY\n }\n }),\n tap(() => {\n setTimeout(() => {\n this.cdr.detectChanges();\n })\n\n })\n )\n\n }\n\n}\n","<ng-container *ngIf=\"transform | async as t\">\n <svg:line [attr.x1]=\"t.x\" y1=\"0\" [attr.x2]=\"t.x\" [attr.y2]=\"size.height\" stroke=\"var(--color-text-90)\" stroke-width=\"0.5\"></svg:line>\n <svg:line x1=\"0\" [attr.y1]=\"t.y\" [attr.x2]=\"size.width\" [attr.y2]=\"t.y\" stroke=\"var(--color-text-90)\" stroke-width=\"0.5\"></svg:line>\n</ng-container>\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n NgZone,\n OnDestroy,\n OnInit,\n} from '@angular/core';\nimport {IChartConfig} from '../model/i-chart-config';\nimport {ChartService} from '../service/chart.service';\nimport {\n animationFrameScheduler,\n combineLatestWith,\n map,\n Observable, observeOn,\n shareReplay,\n withLatestFrom,\n} from 'rxjs';\nimport {Axis} from '../core/axis/axis';\nimport {AxisOrientation} from '../model/enum/axis-orientation';\nimport {ScaleService} from '../service/scale.service';\nimport {ZoomService} from '../service/zoom.service';\nimport {BrushType} from '../model/enum/brush-type';\nimport {ZoomType} from '../model/enum/zoom-type';\nimport {tetaZoneFull} from '@tetacom/ng-components';\nimport {IScalesMap} from '../model/i-scales-map';\nimport {Series} from \"../model/series\";\nimport {BasePoint} from \"../model/base-point\";\n\ntype Opposite = boolean;\n\n@Component({\n selector: 'teta-chart-container',\n templateUrl: './chart-container.component.html',\n styleUrls: ['./chart-container.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ChartContainerComponent implements OnInit, OnDestroy {\n config: Observable<IChartConfig>;\n scales: Observable<IScalesMap>;\n size: Observable<DOMRect>;\n visibleRect: Observable<any>;\n brushScale: Observable<any>;\n zoomType = ZoomType;\n\n private _observer: ResizeObserver;\n private filterPositionMap = new Map<Opposite,\n (axis: Axis) => (_: Axis) => boolean>()\n .set(\n true,\n (axis) => (_: Axis) =>\n _.options.opposite && _.options.visible && axis.index <= _.index\n )\n .set(\n false,\n (axis) => (_: Axis) =>\n _.options.opposite !== true &&\n _.options.visible &&\n _.index <= axis.index\n );\n\n constructor(\n private _svc: ChartService,\n private _cdr: ChangeDetectorRef,\n private _scaleService: ScaleService,\n private _zoomService: ZoomService,\n private _elementRef: ElementRef,\n private _zone: NgZone\n ) {\n this.config = this._svc.config;\n this.size = this._svc.size;\n\n this.scales = this._scaleService.scales.pipe(\n observeOn(animationFrameScheduler),\n tetaZoneFull(this._zone),\n shareReplay({\n bufferSize: 1,\n refCount: true,\n })\n );\n\n this.brushScale = this._scaleService.scales.pipe(\n withLatestFrom(this.config),\n map((data: [IScalesMap, IChartConfig]) => {\n const [{x, y}, config] = data;\n\n return config.brush?.type === BrushType.x || config?.zoom?.type === ZoomType.x ? x.get(0)?.scale : y.get(0)?.scale;\n }),\n shareReplay({\n bufferSize: 1,\n refCount: true,\n })\n );\n\n this.visibleRect = this.size.pipe(\n combineLatestWith(this.scales)\n ).pipe(\n withLatestFrom(this.config),\n map(\n (\n data: [[DOMRect, IScalesMap], IChartConfig]\n ) => {\n const [[size, {x, y}], config] = data;\n const yAxesArray = Array.from(y.values());\n const xAxesArray = Array.from(x.values());\n const left = yAxesArray\n .filter((_) => _.options.opposite !== true && _.options.visible)\n .reduce(this.sumSize, 0);\n\n const right = yAxesArray\n .filter((_) => _.options.opposite && _.options.visible)\n .reduce(this.sumSize, 0);\n\n const bottom = xAxesArray\n .filter((_) => _.options.opposite !== true && _.options.visible)\n .reduce(this.sumSize, 0);\n\n const top = xAxesArray\n .filter((_) => _.options.opposite && _.options.visible)\n .reduce(this.sumSize, 0);\n return {\n x: left + config.bounds?.left,\n y: top + config.bounds?.top,\n width:\n size.width -\n left -\n right -\n config.bounds?.left -\n config.bounds?.right,\n height:\n size.height -\n top -\n bottom -\n config.bounds?.top -\n config.bounds?.bottom,\n };\n }\n ),\n tetaZoneFull(this._zone),\n shareReplay({\n bufferSize: 1,\n refCount: true,\n })\n );\n }\n\n ngOnInit() {\n }\n\n\n ngAfterViewInit(): void {\n this._observer = new ResizeObserver((entries: ResizeObserverEntry[]) => {\n requestAnimationFrame(() => {\n if (\n !Array.isArray(entries) ||\n !entries.length ||\n entries[0].contentRect.width <= 0 ||\n entries[0].contentRect.height <= 0\n ) {\n return;\n }\n this._svc.setSize(entries[0].contentRect);\n });\n });\n this._observer.observe(this._elementRef.nativeElement);\n }\n\n ngOnDestroy() {\n this._observer.disconnect();\n }\n\n private sumSize = (acc, curr) => acc + curr.selfSize;\n\n getTranslate(axis?: Axis, size?: DOMRect): Observable<string> {\n return this.scales.pipe(\n withLatestFrom(this.config),\n map((data: [IScalesMap, IChartConfig]) => {\n const [{x, y}, config] = data;\n const xAxesArray = Array.from(x.values());\n const yAxesArray = Array.from(y.values());\n\n const oppositeFilter = this.filterPositionMap.get(true);\n const nonOppositeFilter = this.filterPositionMap.get(false);\n\n const oppositeOffsetY = yAxesArray.filter(oppositeFilter(axis));\n const nonOppositeOffsetY = yAxesArray.filter(nonOppositeFilter(axis));\n\n const oppositeOffsetX = xAxesArray.filter(oppositeFilter(axis));\n const nonOppositeOffsetX = xAxesArray.filter(nonOppositeFilter(axis));\n\n const oppositeTranslateY = oppositeOffsetY.reduce(\n (acc, curr) => acc + curr.selfSize,\n config.bounds?.right\n );\n const nonOppisteTranslateY = nonOppositeOffsetY.reduce(\n (acc, curr) => acc + curr.selfSize,\n config.bounds?.left\n );\n\n const oppositeTranslateX = oppositeOffsetX.reduce(\n (acc, curr) => acc + curr.selfSize,\n config.bounds?.top\n );\n\n const nonOppisteTranslateX = nonOppositeOffsetX.reduce(\n (acc, curr) => acc + curr.selfSize,\n config.bounds?.bottom\n );\n\n const left = yAxesArray\n .filter((_) => _.options.visible && _.options.opposite !== true)\n .reduce((acc, curr) => acc + curr.selfSize, config.bounds?.left);\n\n const top = xAxesArray\n .filter((_) => _.options.visible && _.options.opposite === true)\n .reduce((acc, curr) => acc + curr.selfSize, config.bounds?.top);\n\n if (axis.orientation === AxisOrientation.x) {\n return `translate(${left}, ${\n axis.options.opposite\n ? oppositeTranslateX\n : size.height - nonOppisteTranslateX\n })`;\n }\n\n if (axis.orientation === AxisOrientation.y) {\n return `translate(${\n axis.options.opposite\n ? size.width - oppositeTranslateY\n : nonOppisteTranslateY\n }, ${top})`;\n }\n\n return 'translate(0, 0)';\n })\n );\n }\n\n identify(index, item) {\n return item.value.index;\n }\n\n click(\n event: PointerEvent,\n xScales: Map<number, Axis>,\n yScales: Map<number, Axis>\n ) {\n const x = xScales.get(0)?.scale;\n const y = yScales.get(0)?.scale;\n this._svc.emitChartClick({\n event: event,\n target: {\n x: x.invert(event.offsetX),\n y: y.invert(event.offsetY),\n },\n });\n }\n\n contextMenu(\n event: MouseEvent,\n xScales: Map<number, Axis>,\n yScales: Map<number, Axis>\n ) {\n const x = xScales.get(0)?.scale;\n const y = yScales.get(0)?.scale;\n this._svc.emitChartContextMenu({\n event: event,\n target: {\n x: x.invert(event.offsetX),\n y: y.invert(event.offsetY),\n },\n });\n }\n\n mouseMove(event) {\n this._svc.setPointerMove(event);\n }\n\n mouseLeave(event) {\n this._svc.setPointerMove(event);\n }\n\n trackSerie(index, item: Series<BasePoint>) {\n return item.name?.length ? item.name : index\n }\n}\n","<ng-container *ngIf=\"{\n size: size | async,\n config: config | async,\n scales: scales | async,\n visibleRect: visibleRect | async,\n brushScale: brushScale | async\n} as data\" xmlns:svg=\"http://www.w3.org/1999/html\">\n <teta-tooltip *ngIf=\"data.config?.tooltip?.enable\"\n [size]=\"data.size\"\n [config]=\"data.config\"></teta-tooltip>\n <ng-container *ngIf=\"data.visibleRect?.width > 0 && data.visibleRect?.height > 0 && data.scales.x.size > 0 && data.scales.y.size > 0\">\n <svg height=\"100%\" width=\"100%\" class=\"position-absolute\">\n <g class=\"y-axis-container\">\n <ng-container *ngFor=\"let item of data.scales.y | keyvalue; trackBy: identify\">\n <ng-container *ngIf=\"item.value.options.visible\">\n <g\n teta-y-axis\n [axis]=\"item.value\"\n [size]=\"data.visibleRect\"\n [attr.transform]=\"getTranslate(item.value, data.size) | async\"></g>\n <rect\n tetaZoomable\n fill-opacity=\"0\"\n [brushScale]=\"data.brushScale\"\n [scale]=\"data.scales.y.get(item.key).scale\"\n [axis]=\"item.value\"\n [config]=\"data.config\"\n [size]=\"data.visibleRect\"\n [attr.x]=\"item.value.options.opposite ? 0 : -item.value.selfSize\"\n [attr.y]=\"0\"\n [attr.height]=\"data.visibleRect.height\"\n [attr.width]=\"item.value.selfSize\"\n [attr.transform]=\"getTranslate(item.value, data.size) | async\"></rect>\n </ng-container>\n\n </ng-container>\n </g>\n <g class=\"x-axis-container\">\n <ng-container *ngFor=\"let item of data.scales.x | keyvalue; trackBy: identify\">\n <ng-container *ngIf=\"item.value.options.visible && data.scales.x.size > 0 && data.scales.y.size > 0\">\n <g\n teta-x-axis\n [axis]=\"item.value\"\n [size]=\"data.visibleRect\"\n [attr.transform]=\"getTranslate(item.value, data.size) | async\"></g>\n <rect\n tetaZoomable\n fill-opacity=\"0\"\n [brushScale]=\"data.brushScale\"\n [scale]=\"data.scales.x.get(item.key).scale\"\n [axis]=\"item.value\"\n [config]=\"data.config\"\n [size]=\"data.visibleRect\"\n [attr.x]=\"0\"\n [attr.y]=\"item.value.options.opposite ? -item.value.selfSize : 0\"\n [attr.width]=\"data.visibleRect.width\"\n [attr.height]=\"item.value.selfSize\"\n [attr.transform]=\"getTranslate(item.value, data.size) | async\"></rect>\n </ng-container>\n </ng-container>\n </g>\n </svg>\n </ng-container>\n <ng-container *ngIf=\"data.visibleRect?.width > 0 && data.visibleRect?.height > 0 && data.scales.x.size > 0 && data.scales.y.size > 0\">\n <svg\n tetaBrushable\n tetaZoomable\n class=\"position-absolute\"\n [size]=\"data.visibleRect\"\n [brushScale]=\"data.brushScale\"\n [scale]=\"data.brushScale\"\n [config]=\"data.config\"\n [axis]=\"data.config?.zoom?.type === zoomType.x ? data.scales.x.get(0) : data.scales.y.get(0)\"\n [attr.width]=\"data.visibleRect.width\"\n [attr.height]=\"data.visibleRect.height\"\n [attr.viewBox]=\"'0 0 ' + data.visibleRect.width + ' ' + data.visibleRect.height\"\n [style.transform]=\"'translate('+ data.visibleRect.x +'px, '+ data.visibleRect.y +'px)'\"\n (contextmenu)=\"contextMenu($event, data.scales.x, data.scales.y)\"\n (click)=\"click($event, data.scales.x, data.scales.y)\"\n (mouseleave)=\"mouseLeave($event)\"\n (mousemove)=\"mouseMove($event)\">\n\n <g class=\"gridlines\"\n teta-gridlines\n *ngIf=\"data.config.gridLines?.enable !== false\"\n [size]=\"data.size\"></g>\n\n <g class=\"x-axis-plotband-container\">\n <ng-container *ngFor=\"let axis of data.config.xAxis; let i = index\">\n <g teta-plot-band *ngFor=\"let plotBand of axis.plotBands\"\n [plotBand]=\"plotBand\"\n [scale]=\"data.scales.x.get(i).scale\"\n [size]=\"data.size\"\n [axis]=\"data.scales.x.get(i)\"></g>\n </ng-container>\n </g>\n <g class=\"y-axis-plotband-container\">\n <ng-container *ngFor=\"let axis of data.config.yAxis; let i = index\">\n <g teta-plot-band *ngFor=\"let plotBand of axis.plotBands\"\n [plotBand]=\"plotBand\"\n [scale]=\"data.scales.y.get(i).scale\"\n [size]=\"data.size\"\n [axis]=\"data.scales.y.get(i)\"></g>\n </ng-container>\n </g>\n <g class=\"x-axis-plotline-container\">\n <ng-container *ngFor=\"let axis of data.config.xAxis; let i = index\">\n <g teta-plot-line *ngFor=\"let plotLine of axis.plotLines\"\n [plotLine]=\"plotLine\"\n [scale]=\"data.scales.x.get(i).scale\"\n [size]=\"data.size\"\n [axis]=\"data.scales.x.get(i)\"></g>\n </ng-container>\n </g>\n <g class=\"y-axis-plotline-container\">\n <ng-container *ngFor=\"let axis of data.config.yAxis; let i = index\">\n <g teta-plot-line *ngFor=\"let plotLine of axis.plotLines\"\n [plotLine]=\"plotLine\"\n [scale]=\"data.scales.y.get(i).scale\"\n [size]=\"data.size\"\n [axis]=\"data.scales.x.get(i)\"></g>\n </ng-container>\n </g>\n <g class=\"series-container\">\n <ng-container *ngFor=\"let series of data.config.series; trackBy: trackSerie\">\n <g teta-series-host\n *ngIf=\"series.visible\"\n [config]=\"data.config\"\n [series]=\"series\"></g>\n </ng-container>\n </g>\n <g class=\"annotations\">\n <g teta-annotation\n *ngFor=\"let annotation of data.config.annotations\"\n [annotation]=\"annotation\"></g>\n </g>\n <g class=\"crosshair\" *ngIf=\"data.config.tooltip?.showCrosshair\">\n <g teta-crosshair [size]=\"data.visibleRect\"></g>\n </g>\n </svg>\n\n </ng-container>\n</ng-container>\n","import {\n ChangeDetectionStrategy,\n Component,\n HostBinding,\n Input,\n} from '@angular/core';\nimport { Series } from '../model/series';\nimport { BasePoint } from '../model/base-point';\nimport { SeriesType } from '../model/enum/series-type';\nimport {ChartService} from \"../service/chart.service\";\n\n@Component({\n selector: 'teta-legend',\n templateUrl: './legend.component.html',\n styleUrls: ['./legend.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class LegendComponent {\n private sizeMapping = new Map<SeriesType, number>()\n .set(SeriesType.line, 2)\n .set(SeriesType.scatter, 12)\n .set(SeriesType.bar, 12)\n .set(SeriesType.area, 2)\n .set(SeriesType.block, 12)\n .set(SeriesType.blockArea, 2);\n\n @Input() series: Array<Series<BasePoint>>;\n @HostBinding('class.padding-bottom-4') classLegend = true;\n\n constructor(private chartService: ChartService) {}\n\n getHeight(serie: Series<BasePoint>) {\n return this.sizeMapping.get(serie.type ?? SeriesType.line);\n }\n\n click(serie: Series<BasePoint>) {\n this.chartService.toggleVisibilitySeries([serie.id]);\n }\n}\n","<ng-container *ngFor=\"let serie of series\" class=\"padding-bottom-4\">\n <div *ngIf=\"serie?.showInLegend !== false\">\n <div class=\"legend-item cursor-pointer\" (click)=\"click(serie)\">\n <div class=\"legend-icon-form\"\n [style.height.px]=\"getHeight(serie)\"\n [style.border-top-color]=\"serie.visible ? serie.color : 'var(--color-text-30)'\"\n [style.border-top-style]=\"serie.style?.strokeDasharray ? 'dashed' : 'solid'\"\n [style.border-width.px]=\"serie.style?.strokeDasharray ? 1 : 2\"></div>\n <div class=\"legend-label\" style=\"user-select: none\" [style.text-decoration]=\"serie.visible ? 'none' : 'line-through'\">{{ serie.name }}</div>\n </div>\n </div>\n</ng-container>\n","import {\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n Input,\n OnChanges,\n OnDestroy,\n OnInit,\n Output,\n SimpleChanges,\n} from '@angular/core';\nimport {ChartService} from '../service/chart.service';\nimport {IChartConfig} from '../model/i-chart-config';\nimport {BasePoint} from '../model/base-point';\nimport {ZoomService} from '../service/zoom.service';\nimport {ScaleService} from '../service/scale.service';\nimport {BrushService} from '../service/brush.service';\nimport {IChartEvent} from '../model/i-chart-event';\nimport {PlotLine} from '../model/plot-line';\nimport {PlotBand} from '../model/plot-band';\nimport {IPointMove} from '../model/i-point-move';\nimport {map, Observable, takeWhile, withLatestFrom} from 'rxjs';\nimport {Annotation} from '../model/annotation';\nimport {TooltipTracking} from '../model/enum/tooltip-tracking';\nimport {IScalesMap} from \"../model/i-scales-map\";\n\n@Component({\n selector: 'teta-svg-chart',\n templateUrl: './chart.component.html',\n styleUrls: ['./chart.component.scss'],\n providers: [ChartService, ZoomService, ScaleService, BrushService],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ChartComponent implements OnInit, OnChanges, OnDestroy {\n hasSeriesData: Observable<boolean>;\n svcConfig: Observable<IChartConfig>;\n @Output()\n pointerMove: EventEmitter<IChartEvent<Map<number, number>>> = new EventEmitter<IChartEvent<Map<number, number>>>();\n\n @Output()\n plotBandsMove: EventEmitter<IChartEvent<PlotBand>> = new EventEmitter<IChartEvent<PlotBand>>();\n\n @Output()\n plotBandClick: EventEmitter<IChartEvent<PlotBand>> = new EventEmitter<IChartEvent<PlotBand>>();\n\n @Output()\n plotBandContextMenu: EventEmitter<IChartEvent<PlotBand>> = new EventEmitter<IChartEvent<PlotBand>>();\n\n @Output()\n plotLinesMove: EventEmitter<IChartEvent<PlotLine>> = new EventEmitter<IChartEvent<PlotLine>>();\n\n @Output()\n pointMove: EventEmitter<IChartEvent<IPointMove>> = new EventEmitter<IChartEvent<IPointMove>>();\n\n @Output()\n chartClick: EventEmitter<IChartEvent<BasePoint>> = new EventEmitter<IChartEvent<BasePoint>>();\n\n @Output()\n chartContextMenu: EventEmitter<IChartEvent<BasePoint>> = new EventEmitter<IChartEvent<BasePoint>>();\n\n @Output()\n annotationContextMenu: EventEmitter<IChartEvent<Annotation>> = new EventEmitter<IChartEvent<Annotation>>();\n\n @Output()\n annotationClick: EventEmitter<IChartEvent<Annotation>> = new EventEmitter<IChartEvent<Annotation>>();\n\n @Output()\n annotationMove: EventEmitter<IChartEvent<Annotation>> = new EventEmitter<IChartEvent<Annotation>>();\n\n @Output()\n zoomServiceInstance: EventEmitter<ZoomService> = new EventEmitter<ZoomService>();\n\n\n @Input() set config(config: IChartConfig) {\n this.chartService.setConfig(config);\n }\n\n private _alive = true;\n\n constructor(public chartService: ChartService,\n public zoomService: ZoomService,\n public scaleService: ScaleService) {\n\n this.svcConfig = this.chartService.config;\n this.hasSeriesData = this.svcConfig.pipe(\n map(\n (_) => _.series?.length > 0 && _.series?.some((_) => _.data?.length > 0)\n )\n );\n }\n\n ngOnChanges(changes: SimpleChanges) {\n }\n\n ngOnInit(): void {\n this.chartService.pointerMove\n .pipe(\n takeWhile(() => this._alive),\n withLatestFrom(this.scaleService.scales, this.chartService.config)\n )\n .subscribe((data: [PointerEvent, IScalesMap, IChartConfig]) => {\n const [event, {x, y}, config] = data;\n const tooltipTracking = config?.tooltip?.tracking;\n if (tooltipTracking === TooltipTracking.y) {\n const result = new Map<number, number>();\n y.forEach((value, key) => {\n result.set(key, value.scale.invert(event.offsetY));\n });\n this.pointerMove.emit({\n event: event,\n target: result\n });\n } else {\n const result = new Map<number, number>();\n x.forEach((value, key) => {\n result.set(key, value.scale.invert(event.offsetX));\n });\n this.pointerMove.emit({\n event: event,\n target: result\n });\n }\n });\n\n this.chartService.plotBandEvent\n .pipe(takeWhile(() => this._alive))\n .subscribe((_) => {\n this.plotBandsMove.emit(_);\n });\n\n this.chartService.plotLineMove.pipe(takeWhile(() => this._alive)).subscribe((_) => {\n this.plotLinesMove.emit(_);\n });\n\n this.chartService.pointMove.pipe(takeWhile(() => this._alive)).subscribe((_) => {\n this.pointMove.emit(_);\n });\n\n this.chartService.chartClick\n .pipe(\n takeWhile(() => this._alive)\n ).subscribe((_) => {\n this.chartClick.emit(_);\n });\n\n this.chartService.chartContextMenu\n .pipe(\n takeWhile(() => this._alive)\n ).subscribe((_) => {\n this.chartContextMenu.emit(_);\n });\n\n this.chartService.plotBandClick\n .pipe(\n takeWhile(() => this._alive))\n .subscribe((_) => {\n this.plotBandClick.emit(_);\n });\n\n this.chartService.plotBandContextMenu\n .pipe(\n takeWhile(() => this._alive))\n .subscribe((_) => {\n this.plotBandContextMenu.emit(_);\n });\n\n this.chartService.annotationContextMenu\n .pipe(\n takeWhile(() => this._alive))\n .subscribe((_) => {\n this.annotationContextMenu.emit(_);\n });\n\n this.chartService.annotationClick\n .pipe(\n takeWhile(() => this._alive))\n .subscribe((_) => {\n this.annotationClick.emit(_);\n });\n\n this.chartService.annotationMove\n .pipe(\n takeWhile(() => this._alive))\n .subscribe((_) => {\n this.annotationMove.emit(_);\n });\n\n this.chartService.zoomInstance\n .pipe(\n takeWhile(() => this._alive))\n .subscribe((_) => {\n this.zoomServiceInstance.emit(_);\n });\n\n }\n\n ngAfterViewInit() {\n }\n\n ngOnDestroy() {\n this._alive = false;\n this.zoomService.broadcastSubscription?.forEach((sub) => {\n sub.unsubscribe();\n });\n }\n}\n","<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 position-relative\"></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 justify-content-center\">\n <span class=\"font-body-3 color-text-40\" style=\"overflow: hidden; text-overflow: ellipsis; text-align: center; white-space: nowrap\">Данные отсутствуют</span>\n </div>\n</ng-template>\n","import {NgModule} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {ChartComponent} from './chart/chart.component';\nimport {SeriesHostComponent} from './chart-container/series-host/series-host.component';\nimport {ChartContainerComponent} from './chart-container/chart-container.component';\nimport {LegendComponent} from './legend/legend.component';\nimport {SeriesBaseComponent} from './base/series-base.component';\nimport {LineSeriesComponent} from './chart-container/series/line/line-series.component';\nimport {GridlinesComponent} from './chart-container/gridlines/gridlines.component';\nimport {XAxisComponent} from './chart-container/x-axis/x-axis.component';\nimport {YAxisComponent} from './chart-container/y-axis/y-axis.component';\nimport {PlotlineComponent} from './chart-container/plotline/plotline.component';\nimport {PlotBandComponent} from './chart-container/plotband/plot-band.component';\nimport {BarSeriesComponent} from './chart-container/series/bar/bar-series.component';\nimport {TooltipComponent} from './chart-container/tooltip/tooltip.component';\nimport {ZoomableDirective} from './directives/zoomable.directive';\nimport {BrushableDirective} from './directives/brushable.directive';\nimport {ScatterSeriesComponent} from './chart-container/series/scatter-series/scatter-series.component';\nimport {BlockSeriesComponent} from './chart-container/series/block-series/block-series.component';\nimport {BlockAreaSeriesComponent} from './chart-container/series/block-area-series/block-area-series.component';\nimport {AreaSeriesComponent} from './chart-container/series/area-series/area-series.component';\nimport {AnnotationComponent} from './chart-container/annotation/annotation.component';\nimport {LinearSeriesBase} from './chart-container/series/linear-series-base';\nimport { CrosshairComponent } from './chart-container/crosshair/crosshair.component';\nimport {LetModule} from '@tetacom/ng-components';\n\n@NgModule({\n declarations: [\n ChartComponent,\n SeriesHostComponent,\n ChartContainerComponent,\n LegendComponent,\n SeriesBaseComponent,\n LinearSeriesBase,\n LineSeriesComponent,\n GridlinesComponent,\n XAxisComponent,\n YAxisComponent,\n PlotlineComponent,\n PlotBandComponent,\n BarSeriesComponent,\n TooltipComponent,\n ZoomableDirective,\n BrushableDirective,\n AreaSeriesComponent,\n ScatterSeriesComponent,\n BlockSeriesComponent,\n BlockAreaSeriesComponent,\n AnnotationComponent,\n CrosshairComponent,\n ],\n exports: [\n ChartComponent,\n LegendComponent,\n SeriesBaseComponent,\n LineSeriesComponent,\n BarSeriesComponent,\n ScatterSeriesComponent,\n AreaSeriesComponent,\n BlockSeriesComponent,\n BlockAreaSeriesComponent,\n ],\n imports: [CommonModule, LetModule],\n})\nexport class ChartModule {\n}\n","import { SvgAttributes } from './svg-attributes';\n\nexport class PlotBand {\n id?: number | string;\n name?: string;\n from: number;\n to: number;\n label?: string;\n showGrabbers?: boolean;\n draggable?: boolean;\n resizable?: boolean;\n min?: number;\n max?: number;\n style?: {\n plotBand?: SvgAttributes;\n grabbers?: SvgAttributes;\n };\n\n constructor(options?: {\n id?: number | string;\n name?: string;\n from: number;\n to: number;\n label?: string;\n showGrabbers?: boolean;\n draggable?: boolean;\n resizable?: boolean;\n min?: number;\n max?: number;\n style?: {\n plotBand?: SvgAttributes;\n grabbers?: SvgAttributes;\n };\n }) {\n this.id = options?.id;\n this.name = options?.name;\n this.from = options?.from;\n this.to = options?.to;\n this.label = options?.label;\n this.showGrabbers =\n options?.showGrabbers != null ? options.showGrabbers : true;\n this.draggable = options?.draggable != null ? options?.draggable : false;\n this.resizable = options?.resizable != null ? options?.resizable : true;\n this.min = options?.min;\n this.max = options?.max;\n this.style = options?.style;\n }\n}\n","import {SvgAttributes} from './svg-attributes';\n\nexport class PlotLine {\n id?: number | string;\n name?: string;\n value: number;\n label?: string;\n min?: number;\n max?: number;\n draggable?: boolean;\n style?: SvgAttributes;\n\n constructor(options?: {\n id?: number | string;\n name?: string;\n value: number;\n label?: string;\n min?: number;\n max?: number;\n draggable?: boolean;\n style?: SvgAttributes;\n }) {\n this.id = options?.id;\n this.name = options?.name;\n this.value = options?.value;\n this.label = options?.label;\n this.min = options?.min;\n this.max = options?.max;\n this.draggable = options?.draggable;\n this.style = options?.style;\n }\n}\n","/*\n * Public API Surface of chart\n */\n\nexport * from './chart/chart.module';\nexport * from './chart/service/public-api';\nexport * from './chart/base/series-base.component';\nexport * from './chart/chart/chart.component';\nexport * from './chart/legend/legend.component';\nexport * from './chart/model/public-api';\nexport * from './chart/chart-container/series/public-api';\nexport * from './chart/core/axis/axis';\nexport * from './chart/core/utils/public-api'\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.ChartService","i2.ZoomService","i1.BroadcastService","i2.ScaleService","i3.ZoomService","i1.ScaleService","i2.ChartService","i3","i2","i1.ZoomService","i3.ChartService","tap","i2.BroadcastService","i1.BrushService","i5.SeriesHostComponent","i6.GridlinesComponent","i7.XAxisComponent","i8.YAxisComponent","i9.PlotlineComponent","i10.PlotBandComponent","i11.TooltipComponent","i12.ZoomableDirective","i13.BrushableDirective","i14.AnnotationComponent","i15.CrosshairComponent","i3.ScaleService","i5.ChartContainerComponent","i6.LegendComponent"],"mappings":"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"}
|