@visactor/vchart 1.13.5 → 1.13.6
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/build/es5/index.js +1 -1
- package/build/index.es.js +7349 -6221
- package/build/index.js +7368 -6220
- package/build/index.min.js +1 -1
- package/build/tsconfig.tsbuildinfo +1 -1
- package/cjs/animation/utils.js +1 -2
- package/cjs/chart/base/base-chart.js +2 -1
- package/cjs/chart/base/base-chart.js.map +1 -1
- package/cjs/chart/funnel/funnel-transformer.js +1 -1
- package/cjs/chart/funnel/funnel-transformer.js.map +1 -1
- package/cjs/chart/index.js +2 -1
- package/cjs/component/custom-mark/custom-mark.d.ts +1 -0
- package/cjs/component/custom-mark/custom-mark.js +14 -0
- package/cjs/component/custom-mark/custom-mark.js.map +1 -1
- package/cjs/component/label/util.js +5 -2
- package/cjs/component/label/util.js.map +1 -1
- package/cjs/constant/funnel.js +1 -2
- package/cjs/constant/gradient.js +2 -1
- package/cjs/core/index.d.ts +1 -1
- package/cjs/core/index.js +2 -3
- package/cjs/core/index.js.map +1 -1
- package/cjs/core/instance-manager.js +2 -1
- package/cjs/event/event-dispatcher.js +1 -1
- package/cjs/index.d.ts +1 -0
- package/cjs/index.js +2 -1
- package/cjs/index.js.map +1 -1
- package/cjs/interaction/zoom/zoomable.js +1 -1
- package/cjs/interaction/zoom/zoomable.js.map +1 -1
- package/cjs/scale/global-scale.js +2 -1
- package/cjs/scale/global-scale.js.map +1 -1
- package/cjs/series/funnel/interface.d.ts +1 -0
- package/cjs/series/funnel/interface.js.map +1 -1
- package/cjs/series/funnel/tooltip-helper.d.ts +3 -1
- package/cjs/series/funnel/tooltip-helper.js +6 -5
- package/cjs/series/funnel/tooltip-helper.js.map +1 -1
- package/cjs/series/mixin/line-mixin.js +4 -1
- package/cjs/series/mixin/line-mixin.js.map +1 -1
- package/cjs/series/waterfall/waterfall.d.ts +1 -0
- package/cjs/series/waterfall/waterfall.js +5 -2
- package/cjs/series/waterfall/waterfall.js.map +1 -1
- package/cjs/typings/visual.d.ts +1 -0
- package/cjs/typings/visual.js.map +1 -1
- package/cjs/util/scale.d.ts +1 -0
- package/cjs/util/scale.js +10 -3
- package/cjs/util/scale.js.map +1 -1
- package/cjs/vrender-tools.d.ts +1 -0
- package/cjs/vrender-tools.js +110 -0
- package/cjs/vrender-tools.js.map +1 -0
- package/esm/animation/utils.js +1 -2
- package/esm/chart/base/base-chart.js +2 -1
- package/esm/chart/base/base-chart.js.map +1 -1
- package/esm/chart/funnel/funnel-transformer.js +1 -1
- package/esm/chart/funnel/funnel-transformer.js.map +1 -1
- package/esm/chart/index.js +2 -1
- package/esm/component/custom-mark/custom-mark.d.ts +1 -0
- package/esm/component/custom-mark/custom-mark.js +14 -0
- package/esm/component/custom-mark/custom-mark.js.map +1 -1
- package/esm/component/label/util.js +6 -1
- package/esm/component/label/util.js.map +1 -1
- package/esm/constant/funnel.js +1 -2
- package/esm/constant/gradient.js +2 -1
- package/esm/core/index.d.ts +1 -1
- package/esm/core/index.js +2 -3
- package/esm/core/index.js.map +1 -1
- package/esm/core/instance-manager.js +2 -1
- package/esm/event/event-dispatcher.js +1 -1
- package/esm/index.d.ts +1 -0
- package/esm/index.js +2 -0
- package/esm/index.js.map +1 -1
- package/esm/interaction/zoom/zoomable.js +1 -1
- package/esm/interaction/zoom/zoomable.js.map +1 -1
- package/esm/scale/global-scale.js +2 -1
- package/esm/scale/global-scale.js.map +1 -1
- package/esm/series/funnel/interface.d.ts +1 -0
- package/esm/series/funnel/interface.js.map +1 -1
- package/esm/series/funnel/tooltip-helper.d.ts +3 -1
- package/esm/series/funnel/tooltip-helper.js +6 -5
- package/esm/series/funnel/tooltip-helper.js.map +1 -1
- package/esm/series/mixin/line-mixin.js +4 -1
- package/esm/series/mixin/line-mixin.js.map +1 -1
- package/esm/series/waterfall/waterfall.d.ts +1 -0
- package/esm/series/waterfall/waterfall.js +6 -3
- package/esm/series/waterfall/waterfall.js.map +1 -1
- package/esm/typings/visual.d.ts +1 -0
- package/esm/typings/visual.js.map +1 -1
- package/esm/util/scale.d.ts +1 -0
- package/esm/util/scale.js +7 -1
- package/esm/util/scale.js.map +1 -1
- package/esm/vrender-tools.d.ts +1 -0
- package/esm/vrender-tools.js +2 -0
- package/esm/vrender-tools.js.map +1 -0
- package/package.json +15 -15
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/scale/global-scale.ts"],"names":[],"mappings":"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","file":"global-scale.js","sourcesContent":["import type { IGlobalScale } from './interface';\nimport { isArray, isEmpty, isEqual, isNil } from '@visactor/vutils';\nimport type { IBaseScale, OrdinalScale } from '@visactor/vscale';\nimport { isContinuous } from '@visactor/vscale';\nimport type { IChart } from '../chart/interface';\nimport type { IChartSpec } from '../typings/spec';\nimport { createScale } from '../util/scale';\nimport { isDataDomainSpec } from '../util/type';\nimport { mergeFields } from '../util/data';\nimport type { IVisualScale, IVisualSpecScale } from '../typings';\nimport type { StatisticOperations } from '../data/transforms/interface';\nimport type { ISeries } from '../series';\n\nexport class GlobalScale implements IGlobalScale {\n private _scaleSpecMap: Map<string, IVisualSpecScale<unknown, unknown>> = new Map();\n private _scaleMap: Map<string, IBaseScale> = new Map();\n private _modelScaleSpecMap: Map<string, IVisualSpecScale<unknown, unknown>> = new Map();\n private _markAttributeScaleMap: Map<string, (IVisualScale & { seriesId: number; markScale: IBaseScale })[]> =\n new Map();\n private _spec: IChartSpec['scales'] = null;\n private readonly _chart: IChart = null;\n constructor(spec: IChartSpec['scales'], chart: IChart) {\n this._spec = spec;\n this._chart = chart;\n this._setAttrFromSpec();\n }\n\n private _createFromSpec(s: IVisualSpecScale<unknown, unknown>): IBaseScale {\n if (!s.id) {\n return null;\n }\n let scale = this._scaleMap.get(s.id);\n if (!scale) {\n if (s.type === 'ordinal' && s.id === 'color') {\n scale = createScale('colorOrdinal'); // 全局颜色色板的特殊逻辑\n } else {\n scale = createScale(s.type);\n }\n }\n if (!scale) {\n return null;\n }\n if (isArray(s.range)) {\n scale.range(s.range);\n }\n if (isArray(s.domain)) {\n if (!isDataDomainSpec(s.domain)) {\n scale.domain(s.domain);\n }\n }\n if (s.specified && (<OrdinalScale>scale).specified) {\n (<OrdinalScale>scale).specified(s.specified);\n }\n return scale;\n }\n\n private _setAttrFromSpec() {\n if (!this._spec?.length) {\n return;\n }\n const newScaleMap: Map<string, IBaseScale> = new Map();\n const newScaleSpecMap: Map<string, IVisualSpecScale<unknown, unknown>> = new Map();\n this._spec.forEach(s => {\n const scale = this._createFromSpec(s);\n if (!scale) {\n return;\n }\n newScaleMap.set(s.id, scale);\n newScaleSpecMap.set(s.id, s);\n });\n this._modelScaleSpecMap.forEach(s => {\n const scale = this._createFromSpec(s);\n if (!scale) {\n return;\n }\n newScaleMap.set(s.id, scale);\n newScaleSpecMap.set(s.id, s);\n });\n\n this._scaleSpecMap = newScaleSpecMap;\n this._scaleMap = newScaleMap;\n }\n\n updateSpec(spec: IChartSpec['scales']) {\n const result = {\n change: false,\n reMake: false,\n reRender: false,\n reSize: false,\n reCompile: false\n };\n if (isEqual(spec, this._spec)) {\n return result;\n }\n result.change = true;\n for (let i = 0; i < spec.length; i++) {\n const s = spec[i];\n const scale = this._scaleMap.get(s.id);\n if (!scale) {\n // new global scale need remake chart\n result.reMake = true;\n return result;\n }\n const lastSpec = this._spec.find(_s => _s.id === s.id);\n if (!lastSpec.id) {\n // new global scale need remake chart\n result.reMake = true;\n return result;\n }\n if (lastSpec.type !== s.type) {\n // scale cannot change type, need remake chart\n result.reMake = true;\n return result;\n }\n if (!isEqual(lastSpec.specified, s.specified)) {\n result.reMake = true;\n return result;\n }\n if (s.range && !isEqual(s.range, scale.range())) {\n scale.range(s.range);\n result.reRender = true;\n }\n if (isDataDomainSpec(s.domain)) {\n result.reRender = true;\n } else if (!isEqual(s.domain, scale.domain())) {\n scale.domain(s.domain);\n result.reRender = true;\n }\n // replace specMap, this use for data domain\n this._scaleSpecMap.set(s.id, s);\n }\n this._spec = spec;\n return result;\n }\n\n registerModelScale(spec: IVisualSpecScale<unknown, unknown>) {\n const scale = this._createFromSpec(spec);\n if (!scale) {\n return;\n }\n this._modelScaleSpecMap.set(spec.id, spec);\n this._scaleSpecMap.set(spec.id, spec);\n this._scaleMap.set(spec.id, scale);\n }\n\n removeModelScale(filter: (spec: IVisualSpecScale<unknown, unknown>) => boolean) {\n this._modelScaleSpecMap.forEach(spec => {\n if (filter(spec)) {\n this._modelScaleSpecMap.delete(spec.id);\n this._scaleSpecMap.delete(spec.id);\n this._scaleMap.delete(spec.id);\n }\n });\n }\n\n getScale(user_id: string): IBaseScale | null {\n return this._scaleMap.get(user_id);\n }\n\n getScaleSpec(user_id: string): IVisualSpecScale<unknown, unknown> | null {\n return this._scaleSpecMap.get(user_id);\n }\n\n getStatisticalFields = (\n dataId: string\n ): {\n key: string;\n operations: StatisticOperations;\n }[] => {\n const result: {\n key: string;\n operations: StatisticOperations;\n }[] = [];\n this._scaleSpecMap.forEach((v, k) => {\n if (!isDataDomainSpec(v.domain)) {\n return;\n }\n v.domain.forEach(spec => {\n if (spec.dataId === dataId) {\n spec.fields.forEach(key => {\n mergeFields(result, [\n {\n key,\n operations: isContinuous(v.type) ? ['max', 'min'] : ['values']\n }\n ]);\n });\n }\n });\n });\n this._markAttributeScaleMap.forEach((specList, scaleName) => {\n const scale = this.getScale(scaleName);\n specList.forEach(spec => {\n const series = this._getSeriesBySeriesId(spec.seriesId);\n\n if (series.getRawData().name === dataId && spec.field) {\n mergeFields(result, [\n {\n key: spec.field,\n operations: isContinuous(scale.type) ? ['max', 'min'] : ['values']\n }\n ]);\n }\n });\n });\n return result;\n };\n\n private _getSeriesByRawDataId(id: string): ISeries {\n const series = this._chart.getAllSeries();\n\n for (let i = 0; i < series.length; i++) {\n const s = series[i];\n if (s.getRawData().name === id) {\n return s;\n }\n }\n return null;\n }\n\n private _getSeriesBySeriesId(id: number): ISeries {\n const series = this._chart.getAllSeries();\n\n for (let i = 0; i < series.length; i++) {\n const s = series[i];\n if (s.id === id) {\n return s;\n }\n }\n return null;\n }\n\n updateScaleDomain(defaultDomain: unknown[]) {\n this._scaleSpecMap.forEach((scaleSpec, id) => {\n const scale = this._scaleMap.get(id);\n if (!scale) {\n return;\n }\n if (!isDataDomainSpec(scaleSpec.domain)) {\n if (!scaleSpec.domain || scaleSpec.domain.length === 0) {\n scale.domain(defaultDomain);\n }\n this._updateMarkScale(id, scale, scale.domain().slice());\n return;\n }\n let domain: unknown[] | Set<string>;\n if (isContinuous(scaleSpec.type)) {\n domain = [null, null];\n } else {\n domain = new Set();\n }\n scaleSpec.domain.forEach(spec => {\n const series = this._getSeriesByRawDataId(spec.dataId);\n\n if (!series) {\n return;\n }\n\n const isContinuousField = isContinuous(scaleSpec.type);\n spec.fields.forEach(key => {\n const statistics = series.getRawDataStatisticsByField(key, isContinuousField);\n if (!statistics) {\n return;\n }\n if (isContinuousField) {\n if (isNil(domain[0])) {\n domain[0] = statistics.min;\n } else {\n domain[0] = Math.min(statistics.min, domain[0]);\n }\n if (isNil(domain[1])) {\n domain[1] = statistics.max;\n } else {\n domain[1] = Math.max(statistics.max, domain[1]);\n }\n } else {\n statistics.values.forEach((value: string) => {\n (domain as Set<string>).add(value);\n });\n }\n });\n });\n\n const scaleDomain = domain;\n if (!isContinuous(scaleSpec.type)) {\n domain = Array.from(domain);\n }\n scale.domain(domain as unknown[]);\n this._updateMarkScale(id, scale, scaleDomain);\n });\n }\n\n private _updateMarkScale(id: string, scale: IBaseScale, domain: unknown[] | Set<string>) {\n const list = this._markAttributeScaleMap.get(id);\n if (!list || list.length === 0) {\n return;\n }\n list.forEach(info => {\n if (!info.field || !info.markScale || info.markScale === scale) {\n return;\n }\n if (isNil(info.changeDomain) || info.changeDomain === 'none' || isNil(info.seriesId)) {\n isContinuous(scale.type) ? info.markScale.domain(domain as unknown[]) : scale.domain(Array.from(domain));\n return;\n }\n\n const series = this._getSeriesBySeriesId(info.seriesId);\n const isContinuousScale = isContinuous(scale.type);\n const statistics = series.getRawDataStatisticsByField(info.field, isContinuousScale);\n\n if (isEmpty(statistics)) {\n isContinuous(scale.type) ? info.markScale.domain(domain as unknown[]) : scale.domain(Array.from(domain));\n return;\n }\n\n if (info.changeDomain === 'expand') {\n if (isContinuousScale) {\n domain[0] = Math.min(domain[0], statistics.min);\n domain[1] = Math.max(domain[1], statistics.max);\n } else {\n statistics.values.forEach((value: string) => {\n (domain as Set<string>).add(value);\n });\n domain = Array.from(domain);\n }\n info.markScale.domain(domain as any[]);\n return;\n }\n if (info.changeDomain === 'replace') {\n if (isContinuousScale) {\n info.markScale.domain([statistics.min, statistics.max]);\n } else {\n info.markScale.domain(statistics.values);\n }\n return;\n }\n });\n }\n\n registerMarkAttributeScale(spec: IVisualScale, seriesId: number): IBaseScale {\n const scale = this._scaleMap.get(spec.scale);\n let list = this._markAttributeScaleMap.get(spec.scale);\n if (!list) {\n list = [];\n this._markAttributeScaleMap.set(spec.scale, list);\n }\n let markScale = scale;\n if (isNil(spec.field) || (!isNil(spec.changeDomain) && spec.changeDomain !== 'none' && !isNil(seriesId))) {\n markScale = scale.clone();\n }\n list.push({\n ...spec,\n seriesId,\n markScale\n });\n return markScale;\n }\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/scale/global-scale.ts"],"names":[],"mappings":"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","file":"global-scale.js","sourcesContent":["import type { IGlobalScale } from './interface';\nimport { isArray, isEmpty, isEqual, isNil } from '@visactor/vutils';\nimport type { IBaseScale, LinearScale, OrdinalScale } from '@visactor/vscale';\nimport { isContinuous } from '@visactor/vscale';\nimport type { IChart } from '../chart/interface';\nimport type { IChartSpec } from '../typings/spec';\nimport { createScale } from '../util/scale';\nimport { isDataDomainSpec } from '../util/type';\nimport { mergeFields } from '../util/data';\nimport type { IVisualScale, IVisualSpecScale } from '../typings';\nimport type { StatisticOperations } from '../data/transforms/interface';\nimport type { ISeries } from '../series';\n\nexport class GlobalScale implements IGlobalScale {\n private _scaleSpecMap: Map<string, IVisualSpecScale<unknown, unknown>> = new Map();\n private _scaleMap: Map<string, IBaseScale> = new Map();\n private _modelScaleSpecMap: Map<string, IVisualSpecScale<unknown, unknown>> = new Map();\n private _markAttributeScaleMap: Map<string, (IVisualScale & { seriesId: number; markScale: IBaseScale })[]> =\n new Map();\n private _spec: IChartSpec['scales'] = null;\n private readonly _chart: IChart = null;\n constructor(spec: IChartSpec['scales'], chart: IChart) {\n this._spec = spec;\n this._chart = chart;\n this._setAttrFromSpec();\n }\n\n private _createFromSpec(s: IVisualSpecScale<unknown, unknown>): IBaseScale {\n if (!s.id) {\n return null;\n }\n let scale = this._scaleMap.get(s.id);\n if (!scale) {\n if (s.type === 'ordinal' && s.id === 'color') {\n scale = createScale('colorOrdinal'); // 全局颜色色板的特殊逻辑\n } else {\n scale = createScale(s.type);\n }\n }\n if (!scale) {\n return null;\n }\n if (isArray(s.range)) {\n scale.range(s.range);\n }\n if (isArray(s.domain)) {\n if (!isDataDomainSpec(s.domain)) {\n scale.domain(s.domain);\n }\n }\n if (s.specified && (<OrdinalScale>scale).specified) {\n (<OrdinalScale>scale).specified(s.specified);\n }\n\n if (s.clamp && (<LinearScale>scale).clamp) {\n (<LinearScale>scale).clamp(s.clamp);\n }\n\n return scale;\n }\n\n private _setAttrFromSpec() {\n if (!this._spec?.length) {\n return;\n }\n const newScaleMap: Map<string, IBaseScale> = new Map();\n const newScaleSpecMap: Map<string, IVisualSpecScale<unknown, unknown>> = new Map();\n this._spec.forEach(s => {\n const scale = this._createFromSpec(s);\n if (!scale) {\n return;\n }\n newScaleMap.set(s.id, scale);\n newScaleSpecMap.set(s.id, s);\n });\n this._modelScaleSpecMap.forEach(s => {\n const scale = this._createFromSpec(s);\n if (!scale) {\n return;\n }\n newScaleMap.set(s.id, scale);\n newScaleSpecMap.set(s.id, s);\n });\n\n this._scaleSpecMap = newScaleSpecMap;\n this._scaleMap = newScaleMap;\n }\n\n updateSpec(spec: IChartSpec['scales']) {\n const result = {\n change: false,\n reMake: false,\n reRender: false,\n reSize: false,\n reCompile: false\n };\n if (isEqual(spec, this._spec)) {\n return result;\n }\n result.change = true;\n for (let i = 0; i < spec.length; i++) {\n const s = spec[i];\n const scale = this._scaleMap.get(s.id);\n if (!scale) {\n // new global scale need remake chart\n result.reMake = true;\n return result;\n }\n const lastSpec = this._spec.find(_s => _s.id === s.id);\n if (!lastSpec.id) {\n // new global scale need remake chart\n result.reMake = true;\n return result;\n }\n if (lastSpec.type !== s.type) {\n // scale cannot change type, need remake chart\n result.reMake = true;\n return result;\n }\n if (!isEqual(lastSpec.specified, s.specified)) {\n result.reMake = true;\n return result;\n }\n if (s.range && !isEqual(s.range, scale.range())) {\n scale.range(s.range);\n result.reRender = true;\n }\n if (isDataDomainSpec(s.domain)) {\n result.reRender = true;\n } else if (!isEqual(s.domain, scale.domain())) {\n scale.domain(s.domain);\n result.reRender = true;\n }\n // replace specMap, this use for data domain\n this._scaleSpecMap.set(s.id, s);\n }\n this._spec = spec;\n return result;\n }\n\n registerModelScale(spec: IVisualSpecScale<unknown, unknown>) {\n const scale = this._createFromSpec(spec);\n if (!scale) {\n return;\n }\n this._modelScaleSpecMap.set(spec.id, spec);\n this._scaleSpecMap.set(spec.id, spec);\n this._scaleMap.set(spec.id, scale);\n }\n\n removeModelScale(filter: (spec: IVisualSpecScale<unknown, unknown>) => boolean) {\n this._modelScaleSpecMap.forEach(spec => {\n if (filter(spec)) {\n this._modelScaleSpecMap.delete(spec.id);\n this._scaleSpecMap.delete(spec.id);\n this._scaleMap.delete(spec.id);\n }\n });\n }\n\n getScale(user_id: string): IBaseScale | null {\n return this._scaleMap.get(user_id);\n }\n\n getScaleSpec(user_id: string): IVisualSpecScale<unknown, unknown> | null {\n return this._scaleSpecMap.get(user_id);\n }\n\n getStatisticalFields = (\n dataId: string\n ): {\n key: string;\n operations: StatisticOperations;\n }[] => {\n const result: {\n key: string;\n operations: StatisticOperations;\n }[] = [];\n this._scaleSpecMap.forEach((v, k) => {\n if (!isDataDomainSpec(v.domain)) {\n return;\n }\n v.domain.forEach(spec => {\n if (spec.dataId === dataId) {\n spec.fields.forEach(key => {\n mergeFields(result, [\n {\n key,\n operations: isContinuous(v.type) ? ['max', 'min'] : ['values']\n }\n ]);\n });\n }\n });\n });\n this._markAttributeScaleMap.forEach((specList, scaleName) => {\n const scale = this.getScale(scaleName);\n specList.forEach(spec => {\n const series = this._getSeriesBySeriesId(spec.seriesId);\n\n if (series.getRawData().name === dataId && spec.field) {\n mergeFields(result, [\n {\n key: spec.field,\n operations: isContinuous(scale.type) ? ['max', 'min'] : ['values']\n }\n ]);\n }\n });\n });\n return result;\n };\n\n private _getSeriesByRawDataId(id: string): ISeries {\n const series = this._chart.getAllSeries();\n\n for (let i = 0; i < series.length; i++) {\n const s = series[i];\n if (s.getRawData().name === id) {\n return s;\n }\n }\n return null;\n }\n\n private _getSeriesBySeriesId(id: number): ISeries {\n const series = this._chart.getAllSeries();\n\n for (let i = 0; i < series.length; i++) {\n const s = series[i];\n if (s.id === id) {\n return s;\n }\n }\n return null;\n }\n\n updateScaleDomain(defaultDomain: unknown[]) {\n this._scaleSpecMap.forEach((scaleSpec, id) => {\n const scale = this._scaleMap.get(id);\n if (!scale) {\n return;\n }\n if (!isDataDomainSpec(scaleSpec.domain)) {\n if (!scaleSpec.domain || scaleSpec.domain.length === 0) {\n scale.domain(defaultDomain);\n }\n this._updateMarkScale(id, scale, scale.domain().slice());\n return;\n }\n let domain: unknown[] | Set<string>;\n if (isContinuous(scaleSpec.type)) {\n domain = [null, null];\n } else {\n domain = new Set();\n }\n scaleSpec.domain.forEach(spec => {\n const series = this._getSeriesByRawDataId(spec.dataId);\n\n if (!series) {\n return;\n }\n\n const isContinuousField = isContinuous(scaleSpec.type);\n spec.fields.forEach(key => {\n const statistics = series.getRawDataStatisticsByField(key, isContinuousField);\n if (!statistics) {\n return;\n }\n if (isContinuousField) {\n if (isNil(domain[0])) {\n domain[0] = statistics.min;\n } else {\n domain[0] = Math.min(statistics.min, domain[0]);\n }\n if (isNil(domain[1])) {\n domain[1] = statistics.max;\n } else {\n domain[1] = Math.max(statistics.max, domain[1]);\n }\n } else {\n statistics.values.forEach((value: string) => {\n (domain as Set<string>).add(value);\n });\n }\n });\n });\n\n const scaleDomain = domain;\n if (!isContinuous(scaleSpec.type)) {\n domain = Array.from(domain);\n }\n scale.domain(domain as unknown[]);\n this._updateMarkScale(id, scale, scaleDomain);\n });\n }\n\n private _updateMarkScale(id: string, scale: IBaseScale, domain: unknown[] | Set<string>) {\n const list = this._markAttributeScaleMap.get(id);\n if (!list || list.length === 0) {\n return;\n }\n list.forEach(info => {\n if (!info.field || !info.markScale || info.markScale === scale) {\n return;\n }\n if (isNil(info.changeDomain) || info.changeDomain === 'none' || isNil(info.seriesId)) {\n isContinuous(scale.type) ? info.markScale.domain(domain as unknown[]) : scale.domain(Array.from(domain));\n return;\n }\n\n const series = this._getSeriesBySeriesId(info.seriesId);\n const isContinuousScale = isContinuous(scale.type);\n const statistics = series.getRawDataStatisticsByField(info.field, isContinuousScale);\n\n if (isEmpty(statistics)) {\n isContinuous(scale.type) ? info.markScale.domain(domain as unknown[]) : scale.domain(Array.from(domain));\n return;\n }\n\n if (info.changeDomain === 'expand') {\n if (isContinuousScale) {\n domain[0] = Math.min(domain[0], statistics.min);\n domain[1] = Math.max(domain[1], statistics.max);\n } else {\n statistics.values.forEach((value: string) => {\n (domain as Set<string>).add(value);\n });\n domain = Array.from(domain);\n }\n info.markScale.domain(domain as any[]);\n return;\n }\n if (info.changeDomain === 'replace') {\n if (isContinuousScale) {\n info.markScale.domain([statistics.min, statistics.max]);\n } else {\n info.markScale.domain(statistics.values);\n }\n return;\n }\n });\n }\n\n registerMarkAttributeScale(spec: IVisualScale, seriesId: number): IBaseScale {\n const scale = this._scaleMap.get(spec.scale);\n let list = this._markAttributeScaleMap.get(spec.scale);\n if (!list) {\n list = [];\n this._markAttributeScaleMap.set(spec.scale, list);\n }\n let markScale = scale;\n if (isNil(spec.field) || (!isNil(spec.changeDomain) && spec.changeDomain !== 'none' && !isNil(seriesId))) {\n markScale = scale.clone();\n }\n list.push({\n ...spec,\n seriesId,\n markScale\n });\n return markScale;\n }\n}\n"]}
|
|
@@ -21,6 +21,7 @@ export interface IFunnelSeriesSpec extends ISeriesSpec, IAnimationSpec<FunnelMar
|
|
|
21
21
|
maxSize?: number | IPercent;
|
|
22
22
|
minSize?: number | IPercent;
|
|
23
23
|
heightRatio?: number;
|
|
24
|
+
transformRatioText?: string;
|
|
24
25
|
[SeriesMarkNameEnum.funnel]?: IMarkSpec<IPathMarkSpec>;
|
|
25
26
|
[SeriesMarkNameEnum.transform]?: IMarkSpec<IPathMarkSpec>;
|
|
26
27
|
[SeriesMarkNameEnum.label]?: IFunnelLabelSpec;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/series/funnel/interface.ts"],"names":[],"mappings":"","file":"interface.js","sourcesContent":["import type {\n Datum,\n IMarkSpec,\n IMarkTheme,\n ISeriesSpec,\n IOrientType,\n IPathMarkSpec,\n IPolygonMarkSpec,\n IRuleMarkSpec,\n ITextMarkSpec,\n IPyramid3dMarkSpec,\n IPercent,\n IComposedTextMarkSpec,\n IFormatMethod\n} from '../../typings';\nimport type { IAnimationSpec } from '../../animation/spec';\nimport type { SeriesMarkNameEnum } from '../interface/type';\nimport type { ILabelSpec } from '../../component/label/interface';\n\ntype FunnelMarks = 'funnel';\n\nexport type FunnelAppearPreset = 'clipIn' | 'fadeIn';\nexport interface IFunnelSeriesSpec extends ISeriesSpec, IAnimationSpec<FunnelMarks, FunnelAppearPreset> {\n type: 'funnel';\n /**\n * 分类字段\n */\n categoryField: string;\n /**\n * 数值字段\n */\n valueField: string;\n /**\n * 漏斗图朝向。\n * @default 'top'\n */\n funnelOrient?: IOrientType;\n /**\n * 图元形状。转化漏斗图仅支持 'rect'\n * @default 'trapezoid'\n */\n shape?: 'rect' | 'trapezoid';\n /**\n * 是否是转化漏斗图\n * @default false\n */\n isTransform?: boolean;\n /**\n * 漏斗图最下层是否尖角。shape为`rect`时不生效\n * @default true\n */\n isCone?: boolean;\n /**\n * 漏斗图对齐方式。转化漏斗图仅支持'center'\n * @default 'center'\n */\n funnelAlign?: 'left' | 'center' | 'right';\n /**\n * 漏斗层之间的像素间隔。转化漏斗图不支持gap配置。\n * @default 0\n */\n gap?: number;\n /**\n * 指定数据项的最大值和最小值\n */\n range?: {\n min?: number;\n max?: number;\n };\n /**\n * 漏斗图最大宽度,支持配置像素值和百分比字符串。\n * @default '80%'\n */\n maxSize?: number | IPercent;\n /**\n * 漏斗图最小宽度,支持配置像素值和百分比字符串。\n * @default 0\n */\n minSize?: number | IPercent;\n /**\n * 漏斗层与转化层的图形高度比例\n * The height ratio between the funnel graphic and the transform graphic\n * @default 0.5\n * @since 1.10.1\n */\n heightRatio?: number;\n /**\n * 漏斗层样式\n */\n [SeriesMarkNameEnum.funnel]?: IMarkSpec<IPathMarkSpec>;\n /**\n * 转化层样式\n */\n [SeriesMarkNameEnum.transform]?: IMarkSpec<IPathMarkSpec>;\n /**\n * 漏斗层标签配置\n */\n [SeriesMarkNameEnum.label]?: IFunnelLabelSpec;\n /**\n * 漏斗层外部标签配置\n */\n [SeriesMarkNameEnum.outerLabel]?: IFunnelOuterLabelSpec;\n /**\n * 转化层标签配置\n */\n [SeriesMarkNameEnum.transformLabel]?: IFunnelLabelSpec;\n}\n\ninterface IFunnelLabelSpec extends Omit<ILabelSpec, 'position' | 'offset'> {\n /**\n * 标签文字样式\n */\n limit?: 'shapeSize' | number;\n}\n\nexport interface IFunnelOuterLabelSpec extends IMarkSpec<IComposedTextMarkSpec> {\n formatMethod?: IFormatMethod<[text: string | string[], datum?: Datum]>;\n /**\n * 标签布局方式\n * @default 'left' | 'bottom'\n */\n position?: 'left' | 'right' | 'top' | 'bottom';\n /**\n * 文字与引导线间隔宽度\n * @default 5\n */\n spaceWidth?: number;\n /**\n * 文字是否对齐\n * @default true\n */\n alignLabel?: boolean;\n /**\n * 文字样式\n */\n style?: ITextMarkSpec;\n /**\n * 标签引导线样式\n */\n line?: {\n /**\n * 标签引导线最小长度\n * @default 20\n * @since 1.12.7\n */\n minLength?: number;\n } & IMarkSpec<IRuleMarkSpec>;\n}\n\nexport interface IFunnelSeriesTheme {\n [SeriesMarkNameEnum.funnel]?: Partial<IMarkTheme<IPolygonMarkSpec>>;\n [SeriesMarkNameEnum.transform]?: Partial<IMarkTheme<IPolygonMarkSpec>>;\n [SeriesMarkNameEnum.label]?: Partial<IMarkTheme<ITextMarkSpec>>;\n [SeriesMarkNameEnum.outerLabel]?: Partial<IMarkTheme<ITextMarkSpec>> & {\n line?: Partial<IMarkTheme<IRuleMarkSpec>>;\n };\n [SeriesMarkNameEnum.transformLabel]?: Partial<IMarkTheme<ITextMarkSpec>>;\n}\n\nexport type IFunnel3dSeriesSpec = {\n type: 'funnel3d';\n} & Omit<IFunnelSeriesSpec, 'type'>;\n\nexport interface IFunnel3dSeriesTheme {\n [SeriesMarkNameEnum.funnel3d]?: Partial<IMarkTheme<IPyramid3dMarkSpec>>;\n [SeriesMarkNameEnum.transform3d]?: Partial<IMarkTheme<IPyramid3dMarkSpec>>;\n [SeriesMarkNameEnum.label]?: Partial<IMarkTheme<ITextMarkSpec>>;\n [SeriesMarkNameEnum.outerLabel]?: Partial<IMarkTheme<ITextMarkSpec>> & {\n line?: Partial<IMarkTheme<IRuleMarkSpec>>;\n };\n [SeriesMarkNameEnum.transformLabel]?: Partial<IMarkTheme<ITextMarkSpec>>;\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/series/funnel/interface.ts"],"names":[],"mappings":"","file":"interface.js","sourcesContent":["import type {\n Datum,\n IMarkSpec,\n IMarkTheme,\n ISeriesSpec,\n IOrientType,\n IPathMarkSpec,\n IPolygonMarkSpec,\n IRuleMarkSpec,\n ITextMarkSpec,\n IPyramid3dMarkSpec,\n IPercent,\n IComposedTextMarkSpec,\n IFormatMethod\n} from '../../typings';\nimport type { IAnimationSpec } from '../../animation/spec';\nimport type { SeriesMarkNameEnum } from '../interface/type';\nimport type { ILabelSpec } from '../../component/label/interface';\n\ntype FunnelMarks = 'funnel';\n\nexport type FunnelAppearPreset = 'clipIn' | 'fadeIn';\nexport interface IFunnelSeriesSpec extends ISeriesSpec, IAnimationSpec<FunnelMarks, FunnelAppearPreset> {\n type: 'funnel';\n /**\n * 分类字段\n */\n categoryField: string;\n /**\n * 数值字段\n */\n valueField: string;\n /**\n * 漏斗图朝向。\n * @default 'top'\n */\n funnelOrient?: IOrientType;\n /**\n * 图元形状。转化漏斗图仅支持 'rect'\n * @default 'trapezoid'\n */\n shape?: 'rect' | 'trapezoid';\n /**\n * 是否是转化漏斗图\n * @default false\n */\n isTransform?: boolean;\n /**\n * 漏斗图最下层是否尖角。shape为`rect`时不生效\n * @default true\n */\n isCone?: boolean;\n /**\n * 漏斗图对齐方式。转化漏斗图仅支持'center'\n * @default 'center'\n */\n funnelAlign?: 'left' | 'center' | 'right';\n /**\n * 漏斗层之间的像素间隔。转化漏斗图不支持gap配置。\n * @default 0\n */\n gap?: number;\n /**\n * 指定数据项的最大值和最小值\n */\n range?: {\n min?: number;\n max?: number;\n };\n /**\n * 漏斗图最大宽度,支持配置像素值和百分比字符串。\n * @default '80%'\n */\n maxSize?: number | IPercent;\n /**\n * 漏斗图最小宽度,支持配置像素值和百分比字符串。\n * @default 0\n */\n minSize?: number | IPercent;\n /**\n * 漏斗层与转化层的图形高度比例\n * The height ratio between the funnel graphic and the transform graphic\n * @default 0.5\n * @since 1.10.1\n */\n heightRatio?: number;\n /**\n * 漏斗图转化率文案,用于转化层 tooltip key 的显示内容\n * @since 1.13.6\n * @default '转化率'\n * */\n transformRatioText?: string;\n /**\n * 漏斗层样式\n */\n [SeriesMarkNameEnum.funnel]?: IMarkSpec<IPathMarkSpec>;\n /**\n * 转化层样式\n */\n [SeriesMarkNameEnum.transform]?: IMarkSpec<IPathMarkSpec>;\n /**\n * 漏斗层标签配置\n */\n [SeriesMarkNameEnum.label]?: IFunnelLabelSpec;\n /**\n * 漏斗层外部标签配置\n */\n [SeriesMarkNameEnum.outerLabel]?: IFunnelOuterLabelSpec;\n /**\n * 转化层标签配置\n */\n [SeriesMarkNameEnum.transformLabel]?: IFunnelLabelSpec;\n}\n\ninterface IFunnelLabelSpec extends Omit<ILabelSpec, 'position' | 'offset'> {\n /**\n * 标签文字样式\n */\n limit?: 'shapeSize' | number;\n}\n\nexport interface IFunnelOuterLabelSpec extends IMarkSpec<IComposedTextMarkSpec> {\n formatMethod?: IFormatMethod<[text: string | string[], datum?: Datum]>;\n /**\n * 标签布局方式\n * @default 'left' | 'bottom'\n */\n position?: 'left' | 'right' | 'top' | 'bottom';\n /**\n * 文字与引导线间隔宽度\n * @default 5\n */\n spaceWidth?: number;\n /**\n * 文字是否对齐\n * @default true\n */\n alignLabel?: boolean;\n /**\n * 文字样式\n */\n style?: ITextMarkSpec;\n /**\n * 标签引导线样式\n */\n line?: {\n /**\n * 标签引导线最小长度\n * @default 20\n * @since 1.12.7\n */\n minLength?: number;\n } & IMarkSpec<IRuleMarkSpec>;\n}\n\nexport interface IFunnelSeriesTheme {\n [SeriesMarkNameEnum.funnel]?: Partial<IMarkTheme<IPolygonMarkSpec>>;\n [SeriesMarkNameEnum.transform]?: Partial<IMarkTheme<IPolygonMarkSpec>>;\n [SeriesMarkNameEnum.label]?: Partial<IMarkTheme<ITextMarkSpec>>;\n [SeriesMarkNameEnum.outerLabel]?: Partial<IMarkTheme<ITextMarkSpec>> & {\n line?: Partial<IMarkTheme<IRuleMarkSpec>>;\n };\n [SeriesMarkNameEnum.transformLabel]?: Partial<IMarkTheme<ITextMarkSpec>>;\n}\n\nexport type IFunnel3dSeriesSpec = {\n type: 'funnel3d';\n} & Omit<IFunnelSeriesSpec, 'type'>;\n\nexport interface IFunnel3dSeriesTheme {\n [SeriesMarkNameEnum.funnel3d]?: Partial<IMarkTheme<IPyramid3dMarkSpec>>;\n [SeriesMarkNameEnum.transform3d]?: Partial<IMarkTheme<IPyramid3dMarkSpec>>;\n [SeriesMarkNameEnum.label]?: Partial<IMarkTheme<ITextMarkSpec>>;\n [SeriesMarkNameEnum.outerLabel]?: Partial<IMarkTheme<ITextMarkSpec>> & {\n line?: Partial<IMarkTheme<IRuleMarkSpec>>;\n };\n [SeriesMarkNameEnum.transformLabel]?: Partial<IMarkTheme<ITextMarkSpec>>;\n}\n"]}
|
|
@@ -1,8 +1,10 @@
|
|
|
1
|
-
import type { ISeriesTooltipHelper } from '../interface';
|
|
1
|
+
import type { IFunnelSeries, ISeriesTooltipHelper } from '../interface';
|
|
2
2
|
import { BaseSeriesTooltipHelper } from '../base/tooltip-helper';
|
|
3
3
|
import type { TooltipHandlerParams } from '../../component/tooltip/interface';
|
|
4
4
|
import type { Datum } from '@visactor/vgrammar-core';
|
|
5
5
|
export declare class FunnelSeriesTooltipHelper extends BaseSeriesTooltipHelper implements ISeriesTooltipHelper {
|
|
6
|
+
private _transformRatioText;
|
|
7
|
+
constructor(series: IFunnelSeries);
|
|
6
8
|
dimensionTooltipTitleCallback: (datum: Datum, params?: TooltipHandlerParams) => any;
|
|
7
9
|
markTooltipValueCallback: (datum: Datum, params?: TooltipHandlerParams) => any;
|
|
8
10
|
markTooltipKeyCallback: (datum: Datum, params?: TooltipHandlerParams) => any;
|
|
@@ -5,11 +5,12 @@ import { FUNNEL_REACH_RATIO } from "../../constant/funnel";
|
|
|
5
5
|
import { isValid } from "@visactor/vutils";
|
|
6
6
|
|
|
7
7
|
export class FunnelSeriesTooltipHelper extends BaseSeriesTooltipHelper {
|
|
8
|
-
constructor() {
|
|
9
|
-
|
|
8
|
+
constructor(series) {
|
|
9
|
+
var _a, _b;
|
|
10
|
+
super(series), this.dimensionTooltipTitleCallback = (datum, params) => {
|
|
10
11
|
var _a, _b, _c;
|
|
11
12
|
const series = this.series;
|
|
12
|
-
return "transform" === (null === (_a = null == params ? void 0 : params.mark) || void 0 === _a ? void 0 : _a.name) ?
|
|
13
|
+
return "transform" === (null === (_a = null == params ? void 0 : params.mark) || void 0 === _a ? void 0 : _a.name) ? this._transformRatioText : null !== (_b = this._getDimensionData(datum)) && void 0 !== _b ? _b : null === (_c = datum.properties) || void 0 === _c ? void 0 : _c[`${series.getCategoryField()}`];
|
|
13
14
|
}, this.markTooltipValueCallback = (datum, params) => {
|
|
14
15
|
var _a;
|
|
15
16
|
if ("transform" === (null === (_a = null == params ? void 0 : params.mark) || void 0 === _a ? void 0 : _a.name)) {
|
|
@@ -18,10 +19,10 @@ export class FunnelSeriesTooltipHelper extends BaseSeriesTooltipHelper {
|
|
|
18
19
|
return this._getMeasureData(datum);
|
|
19
20
|
}, this.markTooltipKeyCallback = (datum, params) => {
|
|
20
21
|
var _a;
|
|
21
|
-
if ("transform" === (null === (_a = null == params ? void 0 : params.mark) || void 0 === _a ? void 0 : _a.name)) return
|
|
22
|
+
if ("transform" === (null === (_a = null == params ? void 0 : params.mark) || void 0 === _a ? void 0 : _a.name)) return this._transformRatioText;
|
|
22
23
|
const {dimensionFields: dimensionFields, seriesFields: seriesFields} = this._seriesCacheInfo, subDimensionField = dimensionFields[dimensionFields.length - 1];
|
|
23
24
|
return isValid(seriesFields[0]) ? null == datum ? void 0 : datum[seriesFields[0]] : null == datum ? void 0 : datum[subDimensionField];
|
|
24
|
-
};
|
|
25
|
+
}, this._transformRatioText = null !== (_b = null === (_a = series.getSpec()) || void 0 === _a ? void 0 : _a.transformRatioText) && void 0 !== _b ? _b : "转化率";
|
|
25
26
|
}
|
|
26
27
|
}
|
|
27
28
|
//# sourceMappingURL=tooltip-helper.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/series/funnel/tooltip-helper.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AACjE,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAC3D,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAI3C,MAAM,OAAO,yBAA0B,SAAQ,uBAAuB;
|
|
1
|
+
{"version":3,"sources":["../src/series/funnel/tooltip-helper.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AACjE,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAC3D,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAI3C,MAAM,OAAO,yBAA0B,SAAQ,uBAAuB;IAGpE,YAAY,MAAqB;;QAC/B,KAAK,CAAC,MAAM,CAAC,CAAC;QAIhB,kCAA6B,GAAG,CAAC,KAAY,EAAE,MAA6B,EAAE,EAAE;;YAC9E,MAAM,MAAM,GAAG,IAAI,CAAC,MAAuB,CAAC;YAC5C,IAAI,CAAA,MAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,IAAI,0CAAE,IAAI,iBAAiC,EAAE;gBACvD,OAAO,IAAI,CAAC,mBAAmB,CAAC;aACjC;YACD,OAAO,MAAA,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,mCAAI,MAAA,KAAK,CAAC,UAAU,0CAAG,GAAG,MAAM,CAAC,gBAAgB,EAAE,EAAE,CAAC,CAAC;QAC7F,CAAC,CAAC;QAEF,6BAAwB,GAAG,CAAC,KAAY,EAAE,MAA6B,EAAE,EAAE;;YACzE,IAAI,CAAA,MAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,IAAI,0CAAE,IAAI,iBAAiC,EAAE;gBACvD,MAAM,WAAW,GAAG,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAG,kBAAkB,CAAC,CAAC;gBAChD,OAAO,GAAG,CAAC,WAAW,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC;aAC7C;YACD,OAAO,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;QACrC,CAAC,CAAC;QAEF,2BAAsB,GAAG,CAAC,KAAY,EAAE,MAA6B,EAAE,EAAE;;YACvE,IAAI,CAAA,MAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,IAAI,0CAAE,IAAI,iBAAiC,EAAE;gBACvD,OAAO,IAAI,CAAC,mBAAmB,CAAC;aACjC;YACD,MAAM,EAAE,eAAe,EAAE,YAAY,EAAE,GAAG,IAAI,CAAC,gBAAgB,CAAC;YAChE,MAAM,iBAAiB,GAAG,eAAe,CAAC,eAAe,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;YAEtE,IAAI,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,EAAE;gBAC5B,OAAO,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAG,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC;aACjC;YACD,OAAO,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAG,iBAAiB,CAAC,CAAC;QACpC,CAAC,CAAC;QA9BA,IAAI,CAAC,mBAAmB,GAAG,MAAA,MAAA,MAAM,CAAC,OAAO,EAAE,0CAAE,kBAAkB,mCAAI,KAAK,CAAC;IAC3E,CAAC;CA8BF","file":"tooltip-helper.js","sourcesContent":["import type { IFunnelSeries, ISeriesTooltipHelper } from '../interface';\nimport { SeriesMarkNameEnum } from '../interface/type';\nimport { BaseSeriesTooltipHelper } from '../base/tooltip-helper';\nimport { FUNNEL_REACH_RATIO } from '../../constant/funnel';\nimport { isValid } from '@visactor/vutils';\nimport type { TooltipHandlerParams } from '../../component/tooltip/interface';\nimport type { Datum } from '@visactor/vgrammar-core';\n\nexport class FunnelSeriesTooltipHelper extends BaseSeriesTooltipHelper implements ISeriesTooltipHelper {\n private _transformRatioText;\n\n constructor(series: IFunnelSeries) {\n super(series);\n this._transformRatioText = series.getSpec()?.transformRatioText ?? `转化率`;\n }\n\n dimensionTooltipTitleCallback = (datum: Datum, params?: TooltipHandlerParams) => {\n const series = this.series as IFunnelSeries;\n if (params?.mark?.name === SeriesMarkNameEnum.transform) {\n return this._transformRatioText;\n }\n return this._getDimensionData(datum) ?? datum.properties?.[`${series.getCategoryField()}`];\n };\n\n markTooltipValueCallback = (datum: Datum, params?: TooltipHandlerParams) => {\n if (params?.mark?.name === SeriesMarkNameEnum.transform) {\n const measureData = datum?.[FUNNEL_REACH_RATIO];\n return `${(measureData * 100).toFixed(1)}%`;\n }\n return this._getMeasureData(datum);\n };\n\n markTooltipKeyCallback = (datum: Datum, params?: TooltipHandlerParams) => {\n if (params?.mark?.name === SeriesMarkNameEnum.transform) {\n return this._transformRatioText;\n }\n const { dimensionFields, seriesFields } = this._seriesCacheInfo;\n const subDimensionField = dimensionFields[dimensionFields.length - 1];\n\n if (isValid(seriesFields[0])) {\n return datum?.[seriesFields[0]];\n }\n return datum?.[subDimensionField];\n };\n}\n"]}
|
|
@@ -197,7 +197,10 @@ export class LineLikeSeriesMixin {
|
|
|
197
197
|
initLineLabelMarkStyle(labelMark) {
|
|
198
198
|
labelMark && this.setMarkStyle(labelMark, {
|
|
199
199
|
fill: this.getColorAttribute(),
|
|
200
|
-
text: datum =>
|
|
200
|
+
text: datum => {
|
|
201
|
+
var _a;
|
|
202
|
+
return null !== (_a = datum[this.getSeriesField()]) && void 0 !== _a ? _a : this.getSeriesKeys()[0];
|
|
203
|
+
},
|
|
201
204
|
z: this._fieldZ ? this.dataToPositionZ.bind(this) : null
|
|
202
205
|
});
|
|
203
206
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/series/mixin/line-mixin.ts"],"names":[],"mappings":"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","file":"line-mixin.js","sourcesContent":["import { PREFIX } from '../../constant/base';\nimport type { ISeriesOption } from '../interface/common';\nimport { DataView } from '@visactor/vdataset';\nimport { ChartEvent } from '../../constant/event';\nimport type { ISeries } from '../interface/series';\nimport { AttributeLevel } from '../../constant/attribute';\n\nimport type {\n ICompileMarkConfig,\n IMark,\n IMarkProgressiveConfig,\n ILabelMark,\n ILineMark,\n ISymbolMark,\n ITextMark\n} from '../../mark/interface';\n// eslint-disable-next-line no-duplicate-imports\nimport { MarkTypeEnum } from '../../mark/interface/type';\nimport type { DirectionType, IInvalidType, InterpolateType, Maybe, Datum, ILayoutRect } from '../../typings';\nimport { DEFAULT_LINEAR_INTERPOLATE, DEFAULT_SMOOTH_INTERPOLATE } from '../../typings/interpolate';\nimport { Direction } from '../../typings/space';\n// eslint-disable-next-line no-duplicate-imports\nimport { DEFAULT_CLOSE_STROKE_JOIN } from '../../typings/line-stroke';\n// eslint-disable-next-line no-duplicate-imports\nimport type { ISeriesMarkInfo, ISeriesMarkInitOption, ISeriesTooltipHelper } from '../interface';\nimport { shouldMarkDoMorph } from '../../animation/utils';\nimport type { DimensionEventParams } from '../../event/events/dimension';\n// eslint-disable-next-line no-duplicate-imports\nimport { DimensionEventEnum } from '../../event/events/dimension';\nimport type { EventCallback, EventParams } from '../../event/interface';\nimport { STATE_VALUE_ENUM } from '../../compile/mark/interface';\nimport { lineLikeSeriesMark } from './constant';\nimport type { IRegion } from '../../region/interface';\nimport type { SeriesData } from '../base/series-data';\nimport { mergeSpec } from '@visactor/vutils-extension';\nimport type { ILineLikeSeriesTheme } from './interface';\n\nexport interface LineLikeSeriesMixin extends ISeries {\n _spec: any;\n _option: ISeriesOption;\n _seriesField: string;\n _theme: Maybe<ILineLikeSeriesTheme>;\n _tooltipHelper: ISeriesTooltipHelper;\n _invalidType: IInvalidType;\n _region: IRegion;\n _direction: DirectionType;\n _data: SeriesData;\n\n _lineMark: ILineMark;\n _symbolMark: ISymbolMark;\n _symbolActiveMark: ISymbolMark;\n _labelMark: ITextMark;\n _fieldX?: string[];\n _fieldY?: string[];\n _fieldZ?: string[];\n\n _createMark: (markInfo: ISeriesMarkInfo, option?: ISeriesMarkInitOption, config?: ICompileMarkConfig) => IMark;\n _getInvalidDefined: (datum: Datum) => boolean;\n _getInvalidConnectType: () => IInvalidType;\n\n getLayoutRect: () => ILayoutRect;\n}\n\nexport class LineLikeSeriesMixin {\n addSamplingCompile(): void {\n if (this._spec.sampling) {\n const { width, height } = this._region.getLayoutRect();\n const samplingTrans = [];\n const fieldsY = this._fieldY;\n const fieldsX = this._fieldX;\n\n samplingTrans.push({\n type: 'sampling',\n size: this._direction === Direction.horizontal ? height : width,\n factor: this._spec.samplingFactor,\n yfield: this._direction === Direction.horizontal ? fieldsX[0] : fieldsY[0],\n groupBy: this._seriesField,\n mode: this._spec.sampling\n });\n this._data.getProduct().transform(samplingTrans);\n }\n }\n\n addOverlapCompile(): void {\n if (this._spec.markOverlap) {\n const overlapTrans = [];\n overlapTrans.push({\n type: 'markoverlap',\n direction: this._direction === Direction.horizontal && this.coordinate === 'cartesian' ? 2 : 1,\n delta: this._spec.pointDis,\n deltaMul: this._spec.pointDisMul,\n groupBy: this._seriesField\n });\n this._symbolMark?.getProduct().transform(overlapTrans);\n }\n }\n\n reCompileSampling(): void {\n if (this._spec.sampling) {\n this.compile();\n }\n }\n\n initLineMark(progressive?: IMarkProgressiveConfig, isSeriesMark?: boolean) {\n this._lineMark = this._createMark(\n lineLikeSeriesMark.line,\n {\n groupKey: this._seriesField,\n isSeriesMark: isSeriesMark ?? true,\n stateSort: this._spec.line?.stateSort\n },\n {\n ...progressive,\n setCustomizedShape: this._spec.line?.customShape,\n morphElementKey: this.getDimensionField()[0]\n }\n ) as ILineMark;\n return this._lineMark;\n }\n\n initLineMarkStyle(direction?: DirectionType, areaCurveType?: InterpolateType) {\n const lineMark = this._lineMark;\n if (lineMark) {\n this.setMarkStyle(\n lineMark,\n {\n stroke: this.getColorAttribute()\n },\n 'normal',\n AttributeLevel.Series\n );\n if (this._invalidType !== 'zero') {\n this.setMarkStyle(\n lineMark,\n {\n defined: this._getInvalidDefined.bind(this),\n connectedType: this._getInvalidConnectType()\n },\n 'normal',\n AttributeLevel.Series\n );\n }\n this.event.on(ChartEvent.viewDataStatisticsUpdate, { filter: param => param.model === this }, () => {\n this.encodeDefined(lineMark, 'defined');\n });\n if (this.coordinate === 'polar') {\n // 极坐标系下需要关闭\n this.setMarkStyle(\n lineMark,\n {\n lineJoin: DEFAULT_CLOSE_STROKE_JOIN,\n curveType: DEFAULT_LINEAR_INTERPOLATE,\n closePath: true\n },\n 'normal',\n AttributeLevel.Series\n );\n } else {\n const userCurveType = areaCurveType ?? this.getSpec().line?.style?.curveType;\n const curveType =\n userCurveType === DEFAULT_SMOOTH_INTERPOLATE\n ? direction === Direction.horizontal\n ? 'monotoneY'\n : 'monotoneX'\n : userCurveType;\n\n this.setMarkStyle(\n lineMark,\n {\n curveType\n },\n 'normal',\n AttributeLevel.Built_In\n );\n }\n\n this.setMarkStyle(\n lineMark,\n {\n x: this.dataToPositionX.bind(this),\n y: this.dataToPositionY.bind(this),\n z: this._fieldZ ? this.dataToPositionZ.bind(this) : null\n },\n 'normal',\n AttributeLevel.Series\n );\n }\n return lineMark;\n }\n\n protected _getEventElement(params: DimensionEventParams, reverse: boolean = false): Datum[] {\n // items 修改遍历方法从 mark\n let data: Datum[] = [];\n params.dimensionInfo.some(df => {\n df.data.some(dd => {\n if (dd.series === this) {\n data = dd.datum;\n return true;\n }\n return false;\n });\n return !data.length;\n });\n return data;\n }\n\n protected _dimensionTrigger(params: DimensionEventParams) {\n const elements = this._getEventElement(params);\n\n switch (params.action) {\n case 'enter':\n this._symbolActiveMark.getDataView().parse(elements);\n this._symbolActiveMark.getData().updateData(false);\n break;\n case 'leave':\n this._symbolActiveMark.getDataView().parse([]);\n this._symbolActiveMark.getData().updateData(false);\n case 'click':\n case 'move':\n default:\n break;\n }\n }\n\n initSymbolMark(progressive?: IMarkProgressiveConfig, isSeriesMark?: boolean) {\n const pointSpec = this._spec.point || {};\n\n if (pointSpec.visible !== false) {\n this._symbolMark = this._createMark(\n lineLikeSeriesMark.point,\n {\n groupKey: this._seriesField,\n isSeriesMark: !!isSeriesMark,\n stateSort: pointSpec.stateSort\n },\n {\n ...progressive,\n setCustomizedShape: pointSpec.customShape,\n morph: shouldMarkDoMorph(this._spec, lineLikeSeriesMark.point.name),\n morphElementKey: this.getDimensionField()[0]\n }\n ) as ISymbolMark;\n }\n\n if (this._spec.activePoint === true) {\n const activeData = new DataView(this._option.dataSet, { name: `${PREFIX}_series_${this.id}_active_point` });\n activeData.parse([]);\n this._symbolActiveMark = this._createMark(\n { name: `active_point_${this.id}`, type: MarkTypeEnum.symbol },\n {\n groupKey: this._seriesField,\n isSeriesMark: false,\n dataView: activeData,\n parent: this._region.getInteractionMark(),\n stateSort: pointSpec.stateSort\n },\n {\n setCustomizedShape: pointSpec.customShape,\n morph: false\n }\n ) as ISymbolMark;\n this._symbolActiveMark.setVisible(false);\n }\n\n return this._symbolMark;\n }\n\n initSymbolMarkStyle() {\n const symbolMark = this._symbolMark;\n if (!symbolMark) {\n this._initSymbolActiveMarkAlone();\n return symbolMark;\n }\n // 设置基础样式\n this._initSymbolMark(symbolMark);\n\n // setStyle to active point\n if (this._symbolActiveMark && this._symbolMark.stateStyle.dimension_hover) {\n // active point will show\n this._symbolActiveMark.setVisible(true);\n this.event.on(DimensionEventEnum.dimensionHover, this._dimensionTrigger.bind(this) as EventCallback<EventParams>);\n // set style with referer\n for (const state in this._symbolMark.stateStyle) {\n this._symbolActiveMark.stateStyle[state] = {};\n for (const key in this._symbolMark.stateStyle[state]) {\n // symbolActiveMark 的 visible 具有额外逻辑,不要使用原始 symbol 的 visible\n if (key === 'visible') {\n continue;\n }\n this._symbolActiveMark.stateStyle[state][key] = {\n style: null,\n level: AttributeLevel.Series,\n referer: symbolMark\n };\n }\n }\n // make sure activeMark in state\n this._symbolActiveMark.state.changeStateInfo({\n stateValue: STATE_VALUE_ENUM.STATE_DIMENSION_HOVER,\n filter: () => true\n });\n }\n\n return symbolMark;\n }\n\n private _initSymbolMark(symbolMark: ISymbolMark) {\n if (!symbolMark) {\n return;\n }\n this.setMarkStyle(\n symbolMark,\n {\n fill: this.getColorAttribute()\n },\n 'normal',\n AttributeLevel.Series\n );\n\n this.setMarkStyle(\n symbolMark,\n {\n x: (datum: Datum) => {\n // 对于symbol而言,如果undefined 的元素还进行scale机会,Null/undefined 会被当成0,导致交互误显示的问题\n return this._invalidType !== 'zero' && !this._getInvalidDefined(datum)\n ? Number.NaN\n : this.dataToPositionX(datum);\n },\n y: (datum: Datum) => {\n return this._invalidType !== 'zero' && !this._getInvalidDefined(datum)\n ? Number.NaN\n : this.dataToPositionY(datum);\n },\n z: this._fieldZ ? this.dataToPositionZ.bind(this) : null\n },\n 'normal',\n AttributeLevel.Series\n );\n }\n\n private _initSymbolActiveMarkAlone() {\n const symbolMark = this._symbolActiveMark;\n if (!symbolMark) {\n return;\n }\n this._initSymbolMark(symbolMark);\n\n // 这里应该不能讲trigger-mark改为activeMark,activeMark数据会变,并且目前不支持selected等操作改变它的数据\n // this._trigger.registerMark(symbolMark);\n\n // setStyle to active point\n if (symbolMark && this._spec[lineLikeSeriesMark.point.name]?.state?.dimension_hover) {\n // active point will show\n symbolMark.setVisible(true);\n this.event.on(DimensionEventEnum.dimensionHover, this._dimensionTrigger.bind(this) as EventCallback<EventParams>);\n // set style with referer\n this.initMarkStyleWithSpec(\n symbolMark,\n mergeSpec({}, this._spec[lineLikeSeriesMark.point.name], { visible: true })\n );\n // make sure activeMark in state\n this._symbolActiveMark.state.changeStateInfo({\n stateValue: STATE_VALUE_ENUM.STATE_DIMENSION_HOVER,\n filter: () => true\n });\n }\n }\n\n initLabelMarkStyle(labelMark?: ILabelMark) {\n if (!labelMark) {\n return;\n }\n if (labelMark.getTarget()?.type !== 'symbol') {\n labelMark.setRule('line-data');\n }\n this.setMarkStyle(labelMark, {\n fill: this.getColorAttribute(),\n text: (datum: Datum) => {\n return datum[this.getStackValueField()];\n },\n z: this._fieldZ ? this.dataToPositionZ.bind(this) : null\n });\n\n if (this._invalidType !== 'zero') {\n this.setMarkStyle(\n labelMark,\n {\n visible: this._getInvalidDefined.bind(this)\n },\n 'normal',\n AttributeLevel.Series\n );\n }\n\n this.event.on(ChartEvent.viewDataStatisticsUpdate, { filter: param => param.model === this }, () => {\n this.encodeDefined(labelMark, 'visible');\n });\n }\n\n initLineLabelMarkStyle(labelMark?: ILabelMark) {\n if (!labelMark) {\n return;\n }\n\n this.setMarkStyle(labelMark, {\n fill: this.getColorAttribute(),\n text: (datum: Datum) => {\n return datum[this.getSeriesField()];\n },\n z: this._fieldZ ? this.dataToPositionZ.bind(this) : null\n });\n }\n\n encodeDefined(mark: IMark, attr: string) {\n if (!mark) {\n return;\n }\n const allValid = this._isFieldAllValid();\n if (this._invalidType === 'zero' || allValid) {\n if (mark.stateStyle.normal?.[attr]?.style === true) {\n // no change\n return;\n }\n this.setMarkStyle(mark, { [attr]: true }, 'normal', AttributeLevel.Series);\n } else {\n if (mark.stateStyle.normal?.[attr]?.style !== true) {\n // no change\n return;\n }\n this.setMarkStyle(mark, { [attr]: this._getInvalidDefined.bind(this) }, 'normal', AttributeLevel.Series);\n }\n // if has produce, reCompile encode to set attribute to product\n if (mark.getProduct()) {\n mark.compileEncode();\n }\n }\n\n protected _isFieldAllValid() {\n const viewStatistics = this.getViewDataStatistics();\n const field = this.getStackValueField();\n if (viewStatistics && viewStatistics.latestData && field) {\n return viewStatistics.latestData[field] && viewStatistics.latestData[field].allValid;\n }\n return false;\n }\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/series/mixin/line-mixin.ts"],"names":[],"mappings":"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","file":"line-mixin.js","sourcesContent":["import { PREFIX } from '../../constant/base';\nimport type { ISeriesOption } from '../interface/common';\nimport { DataView } from '@visactor/vdataset';\nimport { ChartEvent } from '../../constant/event';\nimport type { ISeries } from '../interface/series';\nimport { AttributeLevel } from '../../constant/attribute';\n\nimport type {\n ICompileMarkConfig,\n IMark,\n IMarkProgressiveConfig,\n ILabelMark,\n ILineMark,\n ISymbolMark,\n ITextMark\n} from '../../mark/interface';\n// eslint-disable-next-line no-duplicate-imports\nimport { MarkTypeEnum } from '../../mark/interface/type';\nimport type { DirectionType, IInvalidType, InterpolateType, Maybe, Datum, ILayoutRect } from '../../typings';\nimport { DEFAULT_LINEAR_INTERPOLATE, DEFAULT_SMOOTH_INTERPOLATE } from '../../typings/interpolate';\nimport { Direction } from '../../typings/space';\n// eslint-disable-next-line no-duplicate-imports\nimport { DEFAULT_CLOSE_STROKE_JOIN } from '../../typings/line-stroke';\n// eslint-disable-next-line no-duplicate-imports\nimport type { ISeriesMarkInfo, ISeriesMarkInitOption, ISeriesTooltipHelper } from '../interface';\nimport { shouldMarkDoMorph } from '../../animation/utils';\nimport type { DimensionEventParams } from '../../event/events/dimension';\n// eslint-disable-next-line no-duplicate-imports\nimport { DimensionEventEnum } from '../../event/events/dimension';\nimport type { EventCallback, EventParams } from '../../event/interface';\nimport { STATE_VALUE_ENUM } from '../../compile/mark/interface';\nimport { lineLikeSeriesMark } from './constant';\nimport type { IRegion } from '../../region/interface';\nimport type { SeriesData } from '../base/series-data';\nimport { mergeSpec } from '@visactor/vutils-extension';\nimport type { ILineLikeSeriesTheme } from './interface';\n\nexport interface LineLikeSeriesMixin extends ISeries {\n _spec: any;\n _option: ISeriesOption;\n _seriesField: string;\n _theme: Maybe<ILineLikeSeriesTheme>;\n _tooltipHelper: ISeriesTooltipHelper;\n _invalidType: IInvalidType;\n _region: IRegion;\n _direction: DirectionType;\n _data: SeriesData;\n\n _lineMark: ILineMark;\n _symbolMark: ISymbolMark;\n _symbolActiveMark: ISymbolMark;\n _labelMark: ITextMark;\n _fieldX?: string[];\n _fieldY?: string[];\n _fieldZ?: string[];\n\n _createMark: (markInfo: ISeriesMarkInfo, option?: ISeriesMarkInitOption, config?: ICompileMarkConfig) => IMark;\n _getInvalidDefined: (datum: Datum) => boolean;\n _getInvalidConnectType: () => IInvalidType;\n\n getLayoutRect: () => ILayoutRect;\n}\n\nexport class LineLikeSeriesMixin {\n addSamplingCompile(): void {\n if (this._spec.sampling) {\n const { width, height } = this._region.getLayoutRect();\n const samplingTrans = [];\n const fieldsY = this._fieldY;\n const fieldsX = this._fieldX;\n\n samplingTrans.push({\n type: 'sampling',\n size: this._direction === Direction.horizontal ? height : width,\n factor: this._spec.samplingFactor,\n yfield: this._direction === Direction.horizontal ? fieldsX[0] : fieldsY[0],\n groupBy: this._seriesField,\n mode: this._spec.sampling\n });\n this._data.getProduct().transform(samplingTrans);\n }\n }\n\n addOverlapCompile(): void {\n if (this._spec.markOverlap) {\n const overlapTrans = [];\n overlapTrans.push({\n type: 'markoverlap',\n direction: this._direction === Direction.horizontal && this.coordinate === 'cartesian' ? 2 : 1,\n delta: this._spec.pointDis,\n deltaMul: this._spec.pointDisMul,\n groupBy: this._seriesField\n });\n this._symbolMark?.getProduct().transform(overlapTrans);\n }\n }\n\n reCompileSampling(): void {\n if (this._spec.sampling) {\n this.compile();\n }\n }\n\n initLineMark(progressive?: IMarkProgressiveConfig, isSeriesMark?: boolean) {\n this._lineMark = this._createMark(\n lineLikeSeriesMark.line,\n {\n groupKey: this._seriesField,\n isSeriesMark: isSeriesMark ?? true,\n stateSort: this._spec.line?.stateSort\n },\n {\n ...progressive,\n setCustomizedShape: this._spec.line?.customShape,\n morphElementKey: this.getDimensionField()[0]\n }\n ) as ILineMark;\n return this._lineMark;\n }\n\n initLineMarkStyle(direction?: DirectionType, areaCurveType?: InterpolateType) {\n const lineMark = this._lineMark;\n if (lineMark) {\n this.setMarkStyle(\n lineMark,\n {\n stroke: this.getColorAttribute()\n },\n 'normal',\n AttributeLevel.Series\n );\n if (this._invalidType !== 'zero') {\n this.setMarkStyle(\n lineMark,\n {\n defined: this._getInvalidDefined.bind(this),\n connectedType: this._getInvalidConnectType()\n },\n 'normal',\n AttributeLevel.Series\n );\n }\n this.event.on(ChartEvent.viewDataStatisticsUpdate, { filter: param => param.model === this }, () => {\n this.encodeDefined(lineMark, 'defined');\n });\n if (this.coordinate === 'polar') {\n // 极坐标系下需要关闭\n this.setMarkStyle(\n lineMark,\n {\n lineJoin: DEFAULT_CLOSE_STROKE_JOIN,\n curveType: DEFAULT_LINEAR_INTERPOLATE,\n closePath: true\n },\n 'normal',\n AttributeLevel.Series\n );\n } else {\n const userCurveType = areaCurveType ?? this.getSpec().line?.style?.curveType;\n const curveType =\n userCurveType === DEFAULT_SMOOTH_INTERPOLATE\n ? direction === Direction.horizontal\n ? 'monotoneY'\n : 'monotoneX'\n : userCurveType;\n\n this.setMarkStyle(\n lineMark,\n {\n curveType\n },\n 'normal',\n AttributeLevel.Built_In\n );\n }\n\n this.setMarkStyle(\n lineMark,\n {\n x: this.dataToPositionX.bind(this),\n y: this.dataToPositionY.bind(this),\n z: this._fieldZ ? this.dataToPositionZ.bind(this) : null\n },\n 'normal',\n AttributeLevel.Series\n );\n }\n return lineMark;\n }\n\n protected _getEventElement(params: DimensionEventParams, reverse: boolean = false): Datum[] {\n // items 修改遍历方法从 mark\n let data: Datum[] = [];\n params.dimensionInfo.some(df => {\n df.data.some(dd => {\n if (dd.series === this) {\n data = dd.datum;\n return true;\n }\n return false;\n });\n return !data.length;\n });\n return data;\n }\n\n protected _dimensionTrigger(params: DimensionEventParams) {\n const elements = this._getEventElement(params);\n\n switch (params.action) {\n case 'enter':\n this._symbolActiveMark.getDataView().parse(elements);\n this._symbolActiveMark.getData().updateData(false);\n break;\n case 'leave':\n this._symbolActiveMark.getDataView().parse([]);\n this._symbolActiveMark.getData().updateData(false);\n case 'click':\n case 'move':\n default:\n break;\n }\n }\n\n initSymbolMark(progressive?: IMarkProgressiveConfig, isSeriesMark?: boolean) {\n const pointSpec = this._spec.point || {};\n\n if (pointSpec.visible !== false) {\n this._symbolMark = this._createMark(\n lineLikeSeriesMark.point,\n {\n groupKey: this._seriesField,\n isSeriesMark: !!isSeriesMark,\n stateSort: pointSpec.stateSort\n },\n {\n ...progressive,\n setCustomizedShape: pointSpec.customShape,\n morph: shouldMarkDoMorph(this._spec, lineLikeSeriesMark.point.name),\n morphElementKey: this.getDimensionField()[0]\n }\n ) as ISymbolMark;\n }\n\n if (this._spec.activePoint === true) {\n const activeData = new DataView(this._option.dataSet, { name: `${PREFIX}_series_${this.id}_active_point` });\n activeData.parse([]);\n this._symbolActiveMark = this._createMark(\n { name: `active_point_${this.id}`, type: MarkTypeEnum.symbol },\n {\n groupKey: this._seriesField,\n isSeriesMark: false,\n dataView: activeData,\n parent: this._region.getInteractionMark(),\n stateSort: pointSpec.stateSort\n },\n {\n setCustomizedShape: pointSpec.customShape,\n morph: false\n }\n ) as ISymbolMark;\n this._symbolActiveMark.setVisible(false);\n }\n\n return this._symbolMark;\n }\n\n initSymbolMarkStyle() {\n const symbolMark = this._symbolMark;\n if (!symbolMark) {\n this._initSymbolActiveMarkAlone();\n return symbolMark;\n }\n // 设置基础样式\n this._initSymbolMark(symbolMark);\n\n // setStyle to active point\n if (this._symbolActiveMark && this._symbolMark.stateStyle.dimension_hover) {\n // active point will show\n this._symbolActiveMark.setVisible(true);\n this.event.on(DimensionEventEnum.dimensionHover, this._dimensionTrigger.bind(this) as EventCallback<EventParams>);\n // set style with referer\n for (const state in this._symbolMark.stateStyle) {\n this._symbolActiveMark.stateStyle[state] = {};\n for (const key in this._symbolMark.stateStyle[state]) {\n // symbolActiveMark 的 visible 具有额外逻辑,不要使用原始 symbol 的 visible\n if (key === 'visible') {\n continue;\n }\n this._symbolActiveMark.stateStyle[state][key] = {\n style: null,\n level: AttributeLevel.Series,\n referer: symbolMark\n };\n }\n }\n // make sure activeMark in state\n this._symbolActiveMark.state.changeStateInfo({\n stateValue: STATE_VALUE_ENUM.STATE_DIMENSION_HOVER,\n filter: () => true\n });\n }\n\n return symbolMark;\n }\n\n private _initSymbolMark(symbolMark: ISymbolMark) {\n if (!symbolMark) {\n return;\n }\n this.setMarkStyle(\n symbolMark,\n {\n fill: this.getColorAttribute()\n },\n 'normal',\n AttributeLevel.Series\n );\n\n this.setMarkStyle(\n symbolMark,\n {\n x: (datum: Datum) => {\n // 对于symbol而言,如果undefined 的元素还进行scale机会,Null/undefined 会被当成0,导致交互误显示的问题\n return this._invalidType !== 'zero' && !this._getInvalidDefined(datum)\n ? Number.NaN\n : this.dataToPositionX(datum);\n },\n y: (datum: Datum) => {\n return this._invalidType !== 'zero' && !this._getInvalidDefined(datum)\n ? Number.NaN\n : this.dataToPositionY(datum);\n },\n z: this._fieldZ ? this.dataToPositionZ.bind(this) : null\n },\n 'normal',\n AttributeLevel.Series\n );\n }\n\n private _initSymbolActiveMarkAlone() {\n const symbolMark = this._symbolActiveMark;\n if (!symbolMark) {\n return;\n }\n this._initSymbolMark(symbolMark);\n\n // 这里应该不能讲trigger-mark改为activeMark,activeMark数据会变,并且目前不支持selected等操作改变它的数据\n // this._trigger.registerMark(symbolMark);\n\n // setStyle to active point\n if (symbolMark && this._spec[lineLikeSeriesMark.point.name]?.state?.dimension_hover) {\n // active point will show\n symbolMark.setVisible(true);\n this.event.on(DimensionEventEnum.dimensionHover, this._dimensionTrigger.bind(this) as EventCallback<EventParams>);\n // set style with referer\n this.initMarkStyleWithSpec(\n symbolMark,\n mergeSpec({}, this._spec[lineLikeSeriesMark.point.name], { visible: true })\n );\n // make sure activeMark in state\n this._symbolActiveMark.state.changeStateInfo({\n stateValue: STATE_VALUE_ENUM.STATE_DIMENSION_HOVER,\n filter: () => true\n });\n }\n }\n\n initLabelMarkStyle(labelMark?: ILabelMark) {\n if (!labelMark) {\n return;\n }\n if (labelMark.getTarget()?.type !== 'symbol') {\n labelMark.setRule('line-data');\n }\n this.setMarkStyle(labelMark, {\n fill: this.getColorAttribute(),\n text: (datum: Datum) => {\n return datum[this.getStackValueField()];\n },\n z: this._fieldZ ? this.dataToPositionZ.bind(this) : null\n });\n\n if (this._invalidType !== 'zero') {\n this.setMarkStyle(\n labelMark,\n {\n visible: this._getInvalidDefined.bind(this)\n },\n 'normal',\n AttributeLevel.Series\n );\n }\n\n this.event.on(ChartEvent.viewDataStatisticsUpdate, { filter: param => param.model === this }, () => {\n this.encodeDefined(labelMark, 'visible');\n });\n }\n\n initLineLabelMarkStyle(labelMark?: ILabelMark) {\n if (!labelMark) {\n return;\n }\n\n this.setMarkStyle(labelMark, {\n fill: this.getColorAttribute(),\n text: (datum: Datum) => {\n return datum[this.getSeriesField()] ?? this.getSeriesKeys()[0];\n },\n z: this._fieldZ ? this.dataToPositionZ.bind(this) : null\n });\n }\n\n encodeDefined(mark: IMark, attr: string) {\n if (!mark) {\n return;\n }\n const allValid = this._isFieldAllValid();\n if (this._invalidType === 'zero' || allValid) {\n if (mark.stateStyle.normal?.[attr]?.style === true) {\n // no change\n return;\n }\n this.setMarkStyle(mark, { [attr]: true }, 'normal', AttributeLevel.Series);\n } else {\n if (mark.stateStyle.normal?.[attr]?.style !== true) {\n // no change\n return;\n }\n this.setMarkStyle(mark, { [attr]: this._getInvalidDefined.bind(this) }, 'normal', AttributeLevel.Series);\n }\n // if has produce, reCompile encode to set attribute to product\n if (mark.getProduct()) {\n mark.compileEncode();\n }\n }\n\n protected _isFieldAllValid() {\n const viewStatistics = this.getViewDataStatistics();\n const field = this.getStackValueField();\n if (viewStatistics && viewStatistics.latestData && field) {\n return viewStatistics.latestData[field] && viewStatistics.latestData[field].allValid;\n }\n return false;\n }\n}\n"]}
|
|
@@ -45,5 +45,6 @@ export declare class WaterfallSeries<T extends IWaterfallSeriesSpec = IWaterfall
|
|
|
45
45
|
totalPositionX(datum: Datum, field: string, pos?: number): number;
|
|
46
46
|
totalPositionY(datum: Datum, field: string, pos?: number): number;
|
|
47
47
|
initMarkStyle(): void;
|
|
48
|
+
protected isVisibleLeaderLine(datum: Datum): boolean;
|
|
48
49
|
}
|
|
49
50
|
export declare const registerWaterfallSeries: () => void;
|
|
@@ -6,7 +6,7 @@ import { waterfall, waterfallFillTotal } from "../../data/transforms/waterfall";
|
|
|
6
6
|
|
|
7
7
|
import { BarSeries } from "../bar/bar";
|
|
8
8
|
|
|
9
|
-
import { valueInScaleRange } from "../../util/scale";
|
|
9
|
+
import { isValueInScaleDomain, valueInScaleRange } from "../../util/scale";
|
|
10
10
|
|
|
11
11
|
import { registerWaterfallAnimation } from "./animation";
|
|
12
12
|
|
|
@@ -189,19 +189,22 @@ export class WaterfallSeries extends BarSeries {
|
|
|
189
189
|
}
|
|
190
190
|
initMarkStyle() {
|
|
191
191
|
super.initMarkStyle(), this._leaderLineMark && ("horizontal" === this._direction ? this.setMarkStyle(this._leaderLineMark, {
|
|
192
|
-
visible: datum =>
|
|
192
|
+
visible: datum => this.isVisibleLeaderLine(datum),
|
|
193
193
|
x: datum => this.totalPositionX(datum, "lastEnd", 0),
|
|
194
194
|
x1: datum => this.totalPositionX(datum, datum.isTotal ? "end" : "start", 0),
|
|
195
195
|
y: datum => datum.lastIndex ? this.totalPositionY(datum, "lastIndex", 1) : 0,
|
|
196
196
|
y1: datum => this.totalPositionY(datum, "index", 0)
|
|
197
197
|
}, "normal", AttributeLevel.Series) : this.setMarkStyle(this._leaderLineMark, {
|
|
198
|
-
visible: datum =>
|
|
198
|
+
visible: datum => this.isVisibleLeaderLine(datum),
|
|
199
199
|
x: datum => datum.lastIndex ? this.totalPositionX(datum, "lastIndex", 1) : 0,
|
|
200
200
|
x1: datum => this.totalPositionX(datum, "index", 0),
|
|
201
201
|
y: datum => this.totalPositionY(datum, "lastEnd", 0),
|
|
202
202
|
y1: datum => this.totalPositionY(datum, datum.isTotal ? "end" : "start", 0)
|
|
203
203
|
}, "normal", AttributeLevel.Series));
|
|
204
204
|
}
|
|
205
|
+
isVisibleLeaderLine(datum) {
|
|
206
|
+
return !isNil(datum.lastIndex) && isValueInScaleDomain([ datum.lastEnd, datum[datum.isTotal ? "end" : "start"] ], "horizontal" === this.direction ? this._xAxisHelper.getScale(0) : this._yAxisHelper.getScale(0));
|
|
207
|
+
}
|
|
205
208
|
}
|
|
206
209
|
|
|
207
210
|
WaterfallSeries.type = SeriesTypeEnum.waterfall, WaterfallSeries.mark = waterfallSeriesMark,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/series/waterfall/waterfall.ts"],"names":[],"mappings":"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","file":"waterfall.js","sourcesContent":["/* eslint-disable no-duplicate-imports */\nimport { isNil, precisionSub } from '@visactor/vutils';\nimport { STACK_FIELD_END, STACK_FIELD_START } from '../../constant/data';\nimport { waterfall, waterfallFillTotal } from '../../data/transforms/waterfall';\nimport { BarSeries } from '../bar/bar';\nimport { valueInScaleRange } from '../../util/scale';\nimport { registerWaterfallAnimation } from './animation';\nimport { animationConfig, userAnimationConfig } from '../../animation/utils';\nimport type { IWaterfallSeriesSpec, WaterfallAppearPreset } from './interface';\nimport type { SeriesMarkMap } from '../interface';\nimport { SeriesMarkNameEnum, SeriesTypeEnum } from '../interface/type';\nimport { registerFadeInOutAnimation } from '../../animation/config';\nimport type { ITransformOptions, DataView } from '@visactor/vdataset';\nimport { registerDataSetInstanceTransform } from '../../data/register';\nimport { SeriesData } from '../base/series-data';\nimport { dataViewFromDataView } from '../../data/initialize';\nimport type { IStateAnimateSpec } from '../../animation/spec';\nimport type { IModelEvaluateOption } from '../../model/interface';\nimport type { Datum } from '../../typings';\nimport { Direction } from '../../typings/space';\nimport { registerRuleMark } from '../../mark/rule';\nimport { waterfallSeriesMark } from './constant';\nimport { Group } from '../base/group';\nimport { Factory } from '../../core/factory';\nimport { registerRectMark } from '../../mark/rect';\nimport { getGroupAnimationParams } from '../util/utils';\nimport { WaterfallSeriesSpecTransformer } from './waterfall-transformer';\nimport { registerCartesianLinearAxis, registerCartesianBandAxis } from '../../component/axis/cartesian';\nimport { stackLabel } from '../../component/label/util';\nimport { WaterfallDefaultSeriesField } from '../../constant/waterfall';\nimport { PREFIX } from '../../constant/base';\nimport { AttributeLevel } from '../../constant/attribute';\nimport type { ILabelMark, IRuleMark, ITextMark } from '../../mark/interface';\nimport type { IBarAnimationParams } from '../bar/interface';\nimport type { ILabelInfo } from '../../component/label/interface';\n\nexport const DefaultBandWidth = 6; // 默认的bandWidth,避免连续轴没有bandWidth\n\nexport class WaterfallSeries<T extends IWaterfallSeriesSpec = IWaterfallSeriesSpec> extends BarSeries<any> {\n static readonly type: string = SeriesTypeEnum.waterfall;\n type = SeriesTypeEnum.waterfall;\n\n static readonly mark: SeriesMarkMap = waterfallSeriesMark;\n static readonly transformerConstructor = WaterfallSeriesSpecTransformer as any;\n readonly transformerConstructor = WaterfallSeriesSpecTransformer as any;\n\n protected _totalData?: SeriesData;\n getTotalData() {\n return this._totalData?.getLatestData();\n }\n\n protected declare _spec: T;\n\n protected _leaderLineMark: IRuleMark = null;\n protected _stackLabelMark: ITextMark = null;\n protected _labelMark: ITextMark = null;\n\n protected initGroups() {\n const groupFields = this.getGroupFields();\n if (groupFields && groupFields.length) {\n this._groups = new Group(groupFields);\n this._data && this._groups.initData(this._data.getDataView(), this._dataSet);\n }\n }\n\n setAttrFromSpec() {\n super.setAttrFromSpec();\n // waterfall data stack data\n this.setValueFieldToStack();\n // 不支持多维度;\n this._fieldX = [this._fieldX[0]];\n this._fieldY = [this._fieldY[0]];\n if (isNil(this._seriesField)) {\n this._seriesField = WaterfallDefaultSeriesField;\n }\n }\n\n getSeriesKeys(): string[] {\n if (this._seriesField === WaterfallDefaultSeriesField) {\n return [\n this._theme.seriesFieldName.increase,\n this._theme.seriesFieldName.decrease,\n this._theme.seriesFieldName.total\n ];\n }\n return super.getSeriesKeys();\n }\n\n protected initData(): void {\n super.initData();\n registerDataSetInstanceTransform(this._dataSet, 'waterfallFillTotal', waterfallFillTotal);\n registerDataSetInstanceTransform(this._dataSet, 'waterfall', waterfall);\n // 如果要在最后添加总计\n if (isNil(this._spec.total) || this._spec.total.type === 'end') {\n this._rawData?.transform(\n {\n type: 'waterfallFillTotal',\n options: {\n indexField: this.getGroupFields()[0],\n valueField: this.getStackValueField(),\n seriesField: this.getSeriesField(),\n seriesFieldName: this._theme.seriesFieldName,\n total: this._spec.total,\n stackInverse: this.getRegion().getStackInverse()\n }\n },\n false\n );\n }\n // 总计数据\n const totalData = dataViewFromDataView(this.getViewData(), this._dataSet, {\n name: `${PREFIX}_series_${this.id}_totalData`\n });\n this.getViewData().target.removeListener('change', totalData.reRunAllTransform);\n this._totalData = new SeriesData(this._option, totalData);\n totalData.transform(\n {\n type: 'waterfall',\n options: {\n indexField: this.getGroupFields()[0],\n valueField: this.getStackValueField(),\n seriesField: this.getSeriesField(),\n seriesFieldName: this._theme.seriesFieldName,\n startAs: STACK_FIELD_START,\n endAs: STACK_FIELD_END,\n total: this._spec.total,\n groupData: () => this.getGroups().groupData,\n stackInverse: this.getRegion().getStackInverse()\n }\n },\n false\n );\n }\n\n compileData() {\n super.compileData();\n this._totalData?.compile();\n }\n\n initAnimation() {\n // 这个数据在这个时候拿不到,因为组件还没创建结束,统计和筛选也还没添加。\n // 而且这个值理论上是动态的,建议 监听 viewDataStatisticsUpdate 消息动态更新\n const waterfallAnimationParams: IBarAnimationParams = {\n yField: this.direction === 'horizontal' ? this._fieldY[0] : this.getStackValueField(),\n xField: this.direction === 'horizontal' ? this.getStackValueField() : this._fieldX[0],\n direction: this.direction,\n growFrom: () =>\n this.direction === 'horizontal'\n ? this._xAxisHelper?.getScale(0).scale(0)\n : this._yAxisHelper?.getScale(0).scale(0)\n };\n const appearPreset = (this._spec?.animationAppear as IStateAnimateSpec<WaterfallAppearPreset>)?.preset;\n const animationParams = getGroupAnimationParams(this);\n\n this._barMark.setAnimationConfig(\n animationConfig(\n Factory.getAnimationInKey('waterfall')?.(waterfallAnimationParams, appearPreset),\n userAnimationConfig(SeriesMarkNameEnum.bar, this._spec, this._markAttributeContext),\n animationParams\n )\n );\n\n if (this._leaderLineMark) {\n this._leaderLineMark.setAnimationConfig(\n animationConfig(\n Factory.getAnimationInKey('fadeInOut')?.(),\n userAnimationConfig(SeriesMarkNameEnum.leaderLine, this._spec, this._markAttributeContext)\n )\n );\n }\n }\n\n viewDataUpdate(d: DataView): void {\n this._totalData.getDataView().reRunAllTransform();\n this._totalData.updateData();\n super.viewDataUpdate(d);\n }\n /**\n * data\n */\n // waterfall 不支持任何的 data filter\n addViewDataFilter(_option: ITransformOptions) {\n // do nothing\n }\n reFilterViewData() {\n // do nothing\n }\n\n onEvaluateEnd(ctx: IModelEvaluateOption): void {\n super.onEvaluateEnd(ctx);\n this._totalData.updateData();\n }\n\n initMark(): void {\n super.initMark();\n const leaderLine = this._createMark(\n WaterfallSeries.mark.leaderLine,\n {\n key: 'index',\n stateSort: this._spec.leaderLine?.stateSort\n },\n {\n setCustomizedShape: this._spec.leaderLine?.customShape\n }\n ) as IRuleMark;\n if (leaderLine) {\n this._leaderLineMark = leaderLine;\n leaderLine.setDataView(this._totalData.getDataView(), this._totalData.getProductId());\n }\n }\n\n initLabelMarkStyle(labelMark: ILabelMark): void {\n if (!labelMark) {\n return;\n }\n\n if (!this._labelMark && this._spec.label?.visible) {\n super.initLabelMarkStyle(labelMark);\n this._labelMark = labelMark;\n return;\n }\n }\n\n initStackLabelMarkStyle(labelMark: ILabelMark): void {\n if (!labelMark) {\n return;\n }\n this._stackLabelMark = labelMark;\n // 瀑布图标签 encode 在自定义布局中计算\n labelMark.skipEncode = true;\n labelMark.setRule('stackLabel');\n labelMark.setDataView(this._totalData.getDataView(), this._totalData.getProductId());\n\n this.setMarkStyle(labelMark, {\n text: (datum: Datum) => {\n return this._spec.stackLabel?.valueType === 'absolute' ? datum.end : precisionSub(datum.end, datum.start);\n }\n });\n }\n\n // 样式设置在这里的原因是执行顺序的问题\n // 首先执行这里的 mark.style\n // 然后执行用户的 formatMethod\n // 最后执行下方的 getTotalLabelComponentStyle 。如果在下方实现值函数,就会导致用户format无法生效\n initTotalLabelMarkStyle(labelMark: ILabelMark) {\n this.setMarkStyle(labelMark, {\n text: (datum: Datum) => {\n if (!('end' in datum)) {\n return this.direction === Direction.horizontal ? datum[this._fieldX[0]] : datum[this._fieldY[0]];\n }\n return this._spec.totalLabel?.valueType === 'absolute' ? datum.end : precisionSub(datum.end, datum.start);\n }\n });\n }\n\n getTotalLabelComponentStyle(info: Pick<ILabelInfo, 'baseMark' | 'labelMark'>) {\n return stackLabel(\n {\n ...info,\n series: this,\n // @ts-ignore\n labelSpec: this._spec.totalLabel\n },\n d => {\n const index = this.direction === Direction.vertical ? d[this._fieldX[0]] : d[this._fieldY[0]];\n return this._totalData.getLatestData().find((_d: Datum) => _d.index === index);\n }\n );\n }\n\n totalPositionX(datum: Datum, field: string, pos: number = 0.5) {\n const { dataToPosition, getBandwidth } = this._xAxisHelper;\n if (this._direction === Direction.horizontal) {\n return valueInScaleRange(\n dataToPosition([datum[field]], {\n bandPosition: this._bandPosition\n })\n );\n }\n return (\n dataToPosition([datum[field]], {\n bandPosition: this._bandPosition\n }) +\n getBandwidth(0) * 0.5 -\n (this._barMark.getAttribute('width', datum) as number) * (0.5 - pos)\n );\n }\n\n totalPositionY(datum: Datum, field: string, pos: number = 0.5) {\n const { dataToPosition, getBandwidth } = this._yAxisHelper;\n if (this._direction === Direction.horizontal) {\n return (\n dataToPosition([datum[field]], {\n bandPosition: this._bandPosition\n }) +\n getBandwidth(0) * 0.5 -\n (this._barMark.getAttribute('height', datum) as number) * (0.5 - pos)\n );\n }\n return valueInScaleRange(\n dataToPosition([datum[field]], {\n bandPosition: this._bandPosition\n })\n );\n }\n\n initMarkStyle(): void {\n super.initMarkStyle();\n if (this._leaderLineMark) {\n if (this._direction === Direction.horizontal) {\n this.setMarkStyle(\n this._leaderLineMark,\n {\n visible: (datum: Datum) => !isNil(datum.lastIndex),\n x: (datum: Datum) => this.totalPositionX(datum, 'lastEnd', 0),\n x1: (datum: Datum) => this.totalPositionX(datum, datum.isTotal ? 'end' : 'start', 0),\n y: (datum: Datum) => {\n if (!datum.lastIndex) {\n return 0;\n }\n return this.totalPositionY(datum, 'lastIndex', 1);\n },\n y1: (datum: Datum) => this.totalPositionY(datum, 'index', 0)\n },\n 'normal',\n AttributeLevel.Series\n );\n } else {\n this.setMarkStyle(\n this._leaderLineMark,\n {\n visible: (datum: Datum) => !isNil(datum.lastIndex),\n x: (datum: Datum) => {\n if (!datum.lastIndex) {\n return 0;\n }\n return this.totalPositionX(datum, 'lastIndex', 1);\n },\n x1: (datum: Datum) => this.totalPositionX(datum, 'index', 0),\n y: (datum: Datum) => this.totalPositionY(datum, 'lastEnd', 0),\n y1: (datum: Datum) => this.totalPositionY(datum, datum.isTotal ? 'end' : 'start', 0)\n },\n 'normal',\n AttributeLevel.Series\n );\n }\n }\n }\n}\n\nexport const registerWaterfallSeries = () => {\n registerRuleMark();\n registerRectMark();\n registerWaterfallAnimation();\n registerFadeInOutAnimation();\n registerCartesianBandAxis();\n registerCartesianLinearAxis();\n Factory.registerSeries(WaterfallSeries.type, WaterfallSeries);\n};\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/series/waterfall/waterfall.ts"],"names":[],"mappings":"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","file":"waterfall.js","sourcesContent":["/* eslint-disable no-duplicate-imports */\nimport { isNil, precisionSub } from '@visactor/vutils';\nimport { STACK_FIELD_END, STACK_FIELD_START } from '../../constant/data';\nimport { waterfall, waterfallFillTotal } from '../../data/transforms/waterfall';\nimport { BarSeries } from '../bar/bar';\nimport { isValueInScaleDomain, valueInScaleRange } from '../../util/scale';\nimport { registerWaterfallAnimation } from './animation';\nimport { animationConfig, userAnimationConfig } from '../../animation/utils';\nimport type { IWaterfallSeriesSpec, WaterfallAppearPreset } from './interface';\nimport type { SeriesMarkMap } from '../interface';\nimport { SeriesMarkNameEnum, SeriesTypeEnum } from '../interface/type';\nimport { registerFadeInOutAnimation } from '../../animation/config';\nimport type { ITransformOptions, DataView } from '@visactor/vdataset';\nimport { registerDataSetInstanceTransform } from '../../data/register';\nimport { SeriesData } from '../base/series-data';\nimport { dataViewFromDataView } from '../../data/initialize';\nimport type { IStateAnimateSpec } from '../../animation/spec';\nimport type { IModelEvaluateOption } from '../../model/interface';\nimport type { Datum } from '../../typings';\nimport { Direction } from '../../typings/space';\nimport { registerRuleMark } from '../../mark/rule';\nimport { waterfallSeriesMark } from './constant';\nimport { Group } from '../base/group';\nimport { Factory } from '../../core/factory';\nimport { registerRectMark } from '../../mark/rect';\nimport { getGroupAnimationParams } from '../util/utils';\nimport { WaterfallSeriesSpecTransformer } from './waterfall-transformer';\nimport { registerCartesianLinearAxis, registerCartesianBandAxis } from '../../component/axis/cartesian';\nimport { stackLabel } from '../../component/label/util';\nimport { WaterfallDefaultSeriesField } from '../../constant/waterfall';\nimport { PREFIX } from '../../constant/base';\nimport { AttributeLevel } from '../../constant/attribute';\nimport type { ILabelMark, IRuleMark, ITextMark } from '../../mark/interface';\nimport type { IBarAnimationParams } from '../bar/interface';\nimport type { ILabelInfo } from '../../component/label/interface';\n\nexport const DefaultBandWidth = 6; // 默认的bandWidth,避免连续轴没有bandWidth\n\nexport class WaterfallSeries<T extends IWaterfallSeriesSpec = IWaterfallSeriesSpec> extends BarSeries<any> {\n static readonly type: string = SeriesTypeEnum.waterfall;\n type = SeriesTypeEnum.waterfall;\n\n static readonly mark: SeriesMarkMap = waterfallSeriesMark;\n static readonly transformerConstructor = WaterfallSeriesSpecTransformer as any;\n readonly transformerConstructor = WaterfallSeriesSpecTransformer as any;\n\n protected _totalData?: SeriesData;\n getTotalData() {\n return this._totalData?.getLatestData();\n }\n\n protected declare _spec: T;\n\n protected _leaderLineMark: IRuleMark = null;\n protected _stackLabelMark: ITextMark = null;\n protected _labelMark: ITextMark = null;\n\n protected initGroups() {\n const groupFields = this.getGroupFields();\n if (groupFields && groupFields.length) {\n this._groups = new Group(groupFields);\n this._data && this._groups.initData(this._data.getDataView(), this._dataSet);\n }\n }\n\n setAttrFromSpec() {\n super.setAttrFromSpec();\n // waterfall data stack data\n this.setValueFieldToStack();\n // 不支持多维度;\n this._fieldX = [this._fieldX[0]];\n this._fieldY = [this._fieldY[0]];\n if (isNil(this._seriesField)) {\n this._seriesField = WaterfallDefaultSeriesField;\n }\n }\n\n getSeriesKeys(): string[] {\n if (this._seriesField === WaterfallDefaultSeriesField) {\n return [\n this._theme.seriesFieldName.increase,\n this._theme.seriesFieldName.decrease,\n this._theme.seriesFieldName.total\n ];\n }\n return super.getSeriesKeys();\n }\n\n protected initData(): void {\n super.initData();\n registerDataSetInstanceTransform(this._dataSet, 'waterfallFillTotal', waterfallFillTotal);\n registerDataSetInstanceTransform(this._dataSet, 'waterfall', waterfall);\n // 如果要在最后添加总计\n if (isNil(this._spec.total) || this._spec.total.type === 'end') {\n this._rawData?.transform(\n {\n type: 'waterfallFillTotal',\n options: {\n indexField: this.getGroupFields()[0],\n valueField: this.getStackValueField(),\n seriesField: this.getSeriesField(),\n seriesFieldName: this._theme.seriesFieldName,\n total: this._spec.total,\n stackInverse: this.getRegion().getStackInverse()\n }\n },\n false\n );\n }\n // 总计数据\n const totalData = dataViewFromDataView(this.getViewData(), this._dataSet, {\n name: `${PREFIX}_series_${this.id}_totalData`\n });\n this.getViewData().target.removeListener('change', totalData.reRunAllTransform);\n this._totalData = new SeriesData(this._option, totalData);\n totalData.transform(\n {\n type: 'waterfall',\n options: {\n indexField: this.getGroupFields()[0],\n valueField: this.getStackValueField(),\n seriesField: this.getSeriesField(),\n seriesFieldName: this._theme.seriesFieldName,\n startAs: STACK_FIELD_START,\n endAs: STACK_FIELD_END,\n total: this._spec.total,\n groupData: () => this.getGroups().groupData,\n stackInverse: this.getRegion().getStackInverse()\n }\n },\n false\n );\n }\n\n compileData() {\n super.compileData();\n this._totalData?.compile();\n }\n\n initAnimation() {\n // 这个数据在这个时候拿不到,因为组件还没创建结束,统计和筛选也还没添加。\n // 而且这个值理论上是动态的,建议 监听 viewDataStatisticsUpdate 消息动态更新\n const waterfallAnimationParams: IBarAnimationParams = {\n yField: this.direction === 'horizontal' ? this._fieldY[0] : this.getStackValueField(),\n xField: this.direction === 'horizontal' ? this.getStackValueField() : this._fieldX[0],\n direction: this.direction,\n growFrom: () =>\n this.direction === 'horizontal'\n ? this._xAxisHelper?.getScale(0).scale(0)\n : this._yAxisHelper?.getScale(0).scale(0)\n };\n const appearPreset = (this._spec?.animationAppear as IStateAnimateSpec<WaterfallAppearPreset>)?.preset;\n const animationParams = getGroupAnimationParams(this);\n\n this._barMark.setAnimationConfig(\n animationConfig(\n Factory.getAnimationInKey('waterfall')?.(waterfallAnimationParams, appearPreset),\n userAnimationConfig(SeriesMarkNameEnum.bar, this._spec, this._markAttributeContext),\n animationParams\n )\n );\n\n if (this._leaderLineMark) {\n this._leaderLineMark.setAnimationConfig(\n animationConfig(\n Factory.getAnimationInKey('fadeInOut')?.(),\n userAnimationConfig(SeriesMarkNameEnum.leaderLine, this._spec, this._markAttributeContext)\n )\n );\n }\n }\n\n viewDataUpdate(d: DataView): void {\n this._totalData.getDataView().reRunAllTransform();\n this._totalData.updateData();\n super.viewDataUpdate(d);\n }\n /**\n * data\n */\n // waterfall 不支持任何的 data filter\n addViewDataFilter(_option: ITransformOptions) {\n // do nothing\n }\n reFilterViewData() {\n // do nothing\n }\n\n onEvaluateEnd(ctx: IModelEvaluateOption): void {\n super.onEvaluateEnd(ctx);\n this._totalData.updateData();\n }\n\n initMark(): void {\n super.initMark();\n const leaderLine = this._createMark(\n WaterfallSeries.mark.leaderLine,\n {\n key: 'index',\n stateSort: this._spec.leaderLine?.stateSort\n },\n {\n setCustomizedShape: this._spec.leaderLine?.customShape\n }\n ) as IRuleMark;\n if (leaderLine) {\n this._leaderLineMark = leaderLine;\n leaderLine.setDataView(this._totalData.getDataView(), this._totalData.getProductId());\n }\n }\n\n initLabelMarkStyle(labelMark: ILabelMark): void {\n if (!labelMark) {\n return;\n }\n\n if (!this._labelMark && this._spec.label?.visible) {\n super.initLabelMarkStyle(labelMark);\n this._labelMark = labelMark;\n return;\n }\n }\n\n initStackLabelMarkStyle(labelMark: ILabelMark): void {\n if (!labelMark) {\n return;\n }\n this._stackLabelMark = labelMark;\n // 瀑布图标签 encode 在自定义布局中计算\n labelMark.skipEncode = true;\n labelMark.setRule('stackLabel');\n labelMark.setDataView(this._totalData.getDataView(), this._totalData.getProductId());\n\n this.setMarkStyle(labelMark, {\n text: (datum: Datum) => {\n return this._spec.stackLabel?.valueType === 'absolute' ? datum.end : precisionSub(datum.end, datum.start);\n }\n });\n }\n\n // 样式设置在这里的原因是执行顺序的问题\n // 首先执行这里的 mark.style\n // 然后执行用户的 formatMethod\n // 最后执行下方的 getTotalLabelComponentStyle 。如果在下方实现值函数,就会导致用户format无法生效\n initTotalLabelMarkStyle(labelMark: ILabelMark) {\n this.setMarkStyle(labelMark, {\n text: (datum: Datum) => {\n if (!('end' in datum)) {\n return this.direction === Direction.horizontal ? datum[this._fieldX[0]] : datum[this._fieldY[0]];\n }\n return this._spec.totalLabel?.valueType === 'absolute' ? datum.end : precisionSub(datum.end, datum.start);\n }\n });\n }\n\n getTotalLabelComponentStyle(info: Pick<ILabelInfo, 'baseMark' | 'labelMark'>) {\n return stackLabel(\n {\n ...info,\n series: this,\n // @ts-ignore\n labelSpec: this._spec.totalLabel\n },\n d => {\n const index = this.direction === Direction.vertical ? d[this._fieldX[0]] : d[this._fieldY[0]];\n return this._totalData.getLatestData().find((_d: Datum) => _d.index === index);\n }\n );\n }\n\n totalPositionX(datum: Datum, field: string, pos: number = 0.5) {\n const { dataToPosition, getBandwidth } = this._xAxisHelper;\n if (this._direction === Direction.horizontal) {\n return valueInScaleRange(\n dataToPosition([datum[field]], {\n bandPosition: this._bandPosition\n })\n );\n }\n return (\n dataToPosition([datum[field]], {\n bandPosition: this._bandPosition\n }) +\n getBandwidth(0) * 0.5 -\n (this._barMark.getAttribute('width', datum) as number) * (0.5 - pos)\n );\n }\n\n totalPositionY(datum: Datum, field: string, pos: number = 0.5) {\n const { dataToPosition, getBandwidth } = this._yAxisHelper;\n if (this._direction === Direction.horizontal) {\n return (\n dataToPosition([datum[field]], {\n bandPosition: this._bandPosition\n }) +\n getBandwidth(0) * 0.5 -\n (this._barMark.getAttribute('height', datum) as number) * (0.5 - pos)\n );\n }\n return valueInScaleRange(\n dataToPosition([datum[field]], {\n bandPosition: this._bandPosition\n })\n );\n }\n\n initMarkStyle(): void {\n super.initMarkStyle();\n if (this._leaderLineMark) {\n if (this._direction === Direction.horizontal) {\n this.setMarkStyle(\n this._leaderLineMark,\n {\n visible: (datum: Datum) => this.isVisibleLeaderLine(datum),\n x: (datum: Datum) => this.totalPositionX(datum, 'lastEnd', 0),\n x1: (datum: Datum) => this.totalPositionX(datum, datum.isTotal ? 'end' : 'start', 0),\n y: (datum: Datum) => {\n if (!datum.lastIndex) {\n return 0;\n }\n return this.totalPositionY(datum, 'lastIndex', 1);\n },\n y1: (datum: Datum) => this.totalPositionY(datum, 'index', 0)\n },\n 'normal',\n AttributeLevel.Series\n );\n } else {\n this.setMarkStyle(\n this._leaderLineMark,\n {\n visible: (datum: Datum) => this.isVisibleLeaderLine(datum),\n x: (datum: Datum) => {\n if (!datum.lastIndex) {\n return 0;\n }\n return this.totalPositionX(datum, 'lastIndex', 1);\n },\n x1: (datum: Datum) => this.totalPositionX(datum, 'index', 0),\n y: (datum: Datum) => this.totalPositionY(datum, 'lastEnd', 0),\n y1: (datum: Datum) => this.totalPositionY(datum, datum.isTotal ? 'end' : 'start', 0)\n },\n 'normal',\n AttributeLevel.Series\n );\n }\n }\n }\n\n protected isVisibleLeaderLine(datum: Datum): boolean {\n if (isNil(datum.lastIndex)) {\n return false;\n }\n return isValueInScaleDomain(\n [datum.lastEnd, datum[datum.isTotal ? 'end' : 'start']],\n this.direction === Direction.horizontal ? this._xAxisHelper.getScale(0) : this._yAxisHelper.getScale(0)\n );\n }\n}\n\nexport const registerWaterfallSeries = () => {\n registerRuleMark();\n registerRectMark();\n registerWaterfallAnimation();\n registerFadeInOutAnimation();\n registerCartesianBandAxis();\n registerCartesianLinearAxis();\n Factory.registerSeries(WaterfallSeries.type, WaterfallSeries);\n};\n"]}
|