@visactor/vchart 1.5.3-alpha.0 → 1.5.4-alpha.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/es5/index.js +1 -1
- package/build/index.js +373 -248
- package/build/index.min.js +1 -1
- package/build/tsconfig.tsbuildinfo +1 -1
- package/cjs/chart/bar/bar.js +2 -1
- package/cjs/chart/bar/bar.js.map +1 -1
- package/cjs/chart/correlation/correlation.js.map +1 -1
- package/cjs/chart/range-column/range-column.js +2 -1
- package/cjs/chart/range-column/range-column.js.map +1 -1
- package/cjs/component/common/trigger/config.d.ts +19 -49
- package/cjs/component/common/trigger/config.js +9 -37
- package/cjs/component/common/trigger/config.js.map +1 -1
- package/cjs/component/crosshair/base.js +14 -11
- package/cjs/component/crosshair/base.js.map +1 -1
- package/cjs/component/crosshair/config.d.ts +11 -31
- package/cjs/component/crosshair/config.js +9 -26
- package/cjs/component/crosshair/config.js.map +1 -1
- package/cjs/component/tooltip/handler/utils/common.js +14 -31
- package/cjs/component/tooltip/handler/utils/common.js.map +1 -1
- package/cjs/core/index.d.ts +1 -1
- package/cjs/core/index.js +1 -1
- package/cjs/core/index.js.map +1 -1
- package/cjs/data/transforms/funnel.js +2 -2
- package/cjs/data/transforms/funnel.js.map +1 -1
- package/cjs/data/transforms/sankey.d.ts +1 -0
- package/cjs/data/transforms/sankey.js +16 -3
- package/cjs/data/transforms/sankey.js.map +1 -1
- package/cjs/interaction/config.d.ts +17 -52
- package/cjs/interaction/config.js +9 -41
- package/cjs/interaction/config.js.map +1 -1
- package/cjs/interaction/drill/drillable.js +1 -1
- package/cjs/interaction/drill/drillable.js.map +1 -1
- package/cjs/interaction/trigger.js +1 -1
- package/cjs/interaction/trigger.js.map +1 -1
- package/cjs/interaction/zoom/zoomable.js +8 -8
- package/cjs/interaction/zoom/zoomable.js.map +1 -1
- package/cjs/layout/base-layout.js +1 -1
- package/cjs/layout/index.js +1 -1
- package/cjs/layout/interface.js +1 -1
- package/cjs/mark/arc-3d.js +1 -1
- package/cjs/mark/arc.js +1 -1
- package/cjs/mark/area.js +1 -1
- package/cjs/series/bar/bar.d.ts +13 -2
- package/cjs/series/bar/bar.js +99 -13
- package/cjs/series/bar/bar.js.map +1 -1
- package/cjs/series/bar/constant.js +4 -0
- package/cjs/series/bar/constant.js.map +1 -1
- package/cjs/series/bar/interface.d.ts +2 -0
- package/cjs/series/bar/interface.js.map +1 -1
- package/cjs/series/interface/type.d.ts +2 -1
- package/cjs/series/interface/type.js +2 -1
- package/cjs/series/interface/type.js.map +1 -1
- package/cjs/series/range-column/range-column.js +8 -7
- package/cjs/series/range-column/range-column.js.map +1 -1
- package/cjs/series/sankey/sankey.js +6 -1
- package/cjs/series/sankey/sankey.js.map +1 -1
- package/cjs/series/waterfall/waterfall.js +4 -4
- package/cjs/series/waterfall/waterfall.js.map +1 -1
- package/cjs/theme/builtin/common/mark.js +10 -0
- package/cjs/theme/builtin/common/mark.js.map +1 -1
- package/esm/chart/bar/bar.js +2 -1
- package/esm/chart/bar/bar.js.map +1 -1
- package/esm/chart/correlation/correlation.js.map +1 -1
- package/esm/chart/range-column/range-column.js +2 -1
- package/esm/chart/range-column/range-column.js.map +1 -1
- package/esm/component/common/trigger/config.d.ts +19 -49
- package/esm/component/common/trigger/config.js +7 -35
- package/esm/component/common/trigger/config.js.map +1 -1
- package/esm/component/crosshair/base.js +14 -12
- package/esm/component/crosshair/base.js.map +1 -1
- package/esm/component/crosshair/config.d.ts +11 -31
- package/esm/component/crosshair/config.js +8 -25
- package/esm/component/crosshair/config.js.map +1 -1
- package/esm/component/tooltip/handler/utils/common.js +15 -32
- package/esm/component/tooltip/handler/utils/common.js.map +1 -1
- package/esm/core/index.d.ts +1 -1
- package/esm/core/index.js +1 -1
- package/esm/core/index.js.map +1 -1
- package/esm/data/transforms/funnel.js +1 -1
- package/esm/data/transforms/funnel.js.map +1 -1
- package/esm/data/transforms/sankey.d.ts +1 -0
- package/esm/data/transforms/sankey.js +17 -4
- package/esm/data/transforms/sankey.js.map +1 -1
- package/esm/interaction/config.d.ts +17 -52
- package/esm/interaction/config.js +7 -39
- package/esm/interaction/config.js.map +1 -1
- package/esm/interaction/drill/drillable.js +2 -2
- package/esm/interaction/drill/drillable.js.map +1 -1
- package/esm/interaction/trigger.js +2 -2
- package/esm/interaction/trigger.js.map +1 -1
- package/esm/interaction/zoom/zoomable.js +9 -9
- package/esm/interaction/zoom/zoomable.js.map +1 -1
- package/esm/layout/base-layout.js +1 -1
- package/esm/layout/index.js +1 -1
- package/esm/layout/interface.js +1 -1
- package/esm/mark/arc-3d.js +1 -1
- package/esm/mark/arc.js +1 -1
- package/esm/mark/area.js +1 -1
- package/esm/series/bar/bar.d.ts +13 -2
- package/esm/series/bar/bar.js +108 -12
- package/esm/series/bar/bar.js.map +1 -1
- package/esm/series/bar/constant.js +4 -0
- package/esm/series/bar/constant.js.map +1 -1
- package/esm/series/bar/interface.d.ts +2 -0
- package/esm/series/bar/interface.js.map +1 -1
- package/esm/series/interface/type.d.ts +2 -1
- package/esm/series/interface/type.js +2 -1
- package/esm/series/interface/type.js.map +1 -1
- package/esm/series/range-column/range-column.js +8 -7
- package/esm/series/range-column/range-column.js.map +1 -1
- package/esm/series/sankey/sankey.js +6 -1
- package/esm/series/sankey/sankey.js.map +1 -1
- package/esm/series/waterfall/waterfall.js +4 -4
- package/esm/series/waterfall/waterfall.js.map +1 -1
- package/esm/theme/builtin/common/mark.js +10 -0
- package/esm/theme/builtin/common/mark.js.map +1 -1
- package/package.json +7 -7
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/component/tooltip/handler/utils/common.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"sources":["../src/component/tooltip/handler/utils/common.ts"],"names":[],"mappings":"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","file":"common.js","sourcesContent":["import type { Datum } from '@visactor/vgrammar-core';\nimport type { MaybeArray, TooltipContentProperty, TooltipData, TooltipPatternProperty } from '../../../../typings';\nimport { isFunction, isObject, isString, isNil, isArray, isValid, initTextMeasure } from '../../../../util';\nimport type { TooltipHandlerParams } from '../../interface';\nimport type { IDimensionData, IDimensionInfo } from '../../../../event/events/dimension';\nimport type { IRichTextParagraphCharacter } from '@visactor/vrender-core';\n// eslint-disable-next-line no-duplicate-imports\nimport { getRichTextBounds } from '@visactor/vrender-core';\nimport type { ITooltipTextStyle } from '../interface/style';\n\ninterface IGradientColor {\n [key: string]: any;\n stops: {\n offset: number;\n color: string;\n }[];\n}\n\n/**\n * Escape special HTML characters.\n *\n * @param value A value to convert to string and HTML-escape.\n */\nexport function escapeHTML(value: any): string {\n return String(value)\n .replace(/&/g, '&')\n .replace(/</g, '<')\n .replace(/>/g, '>')\n .replace(/\\(/g, '(')\n .replace(/ /g, ' '); // 转义符和真空格夹杂,在转义和正常换行之间取得平衡\n}\n\nexport const getTooltipContentValue = <T>(\n field?: TooltipContentProperty<T>,\n datum?: any,\n params?: TooltipHandlerParams\n): T | undefined => {\n if (isNil(field)) {\n return field;\n }\n if (isFunction(field)) {\n return field(datum, params);\n }\n return field;\n};\n\nexport const getTooltipPatternValue = <T>(\n field?: MaybeArray<TooltipPatternProperty<T>>,\n data?: TooltipData,\n params?: TooltipHandlerParams\n): (typeof field extends Array<TooltipPatternProperty<T>> ? MaybeArray<T> : T) | undefined => {\n if (isNil(field)) {\n return field;\n }\n if (isArray(field)) {\n const result: T[] = [];\n field.forEach(item => {\n if (isFunction(item)) {\n const value = item(data, params);\n if (isValid(value)) {\n result.push(value);\n }\n } else {\n result.push(item);\n }\n });\n return result as any;\n }\n if (isFunction(field)) {\n return field(data, params);\n }\n return field;\n};\n\nexport function getFirstDatumFromTooltipData(data: TooltipData): Datum {\n // 找到第一个可用的datum\n const dimInfoList: IDimensionInfo[] = (data as IDimensionData[])[0]?.series\n ? [{ data: data as IDimensionData[], value: '' }]\n : (data as IDimensionInfo[]);\n for (const { data: dataList } of dimInfoList) {\n for (const { datum: datumList } of dataList) {\n for (const datumItem of datumList ?? []) {\n if (datumItem) {\n return datumItem;\n }\n }\n }\n }\n}\n\nexport function pickFirstValidValue<T>(isValid: (element?: T) => any, ...elements: T[]): T | undefined {\n for (const ele of elements) {\n if (isValid(ele)) {\n return ele;\n }\n }\n return undefined;\n}\n\n// 针对渐变色,受底层渲染引擎影响,不一定都能绘制正确,所以这里取 colorStop 的第一个颜色作为 color\nexport function convertToColorString(color: any, defaultColor: string = '#000') {\n if (!color) {\n return defaultColor;\n }\n if (isString(color)) {\n return color;\n }\n\n if (isObject(color) && (color as IGradientColor).stops && (color as IGradientColor).stops[0]) {\n return (color as IGradientColor).stops[0].color || defaultColor;\n }\n\n return defaultColor;\n}\n\n/** 获取元素的绝对缩放因数(支持外部传入 boundingClientRect 提升性能) */\nexport const getScale = (element: HTMLElement, boundingClientRect?: DOMRect) => {\n if (!element) {\n return 1;\n }\n if (!boundingClientRect) {\n boundingClientRect = element.getBoundingClientRect();\n }\n if (element.offsetWidth > 0) {\n return boundingClientRect.width / element.offsetWidth;\n }\n return boundingClientRect.height / element.offsetHeight;\n};\n\ninterface ITooltipTextInfo {\n width: number;\n height: number;\n text: MaybeArray<number> | MaybeArray<string>;\n}\n\n/** 测量 tooltip 标签文本 */\nexport const measureTooltipText = (text: string, style: ITooltipTextStyle): ITooltipTextInfo => {\n text = (text ?? '').toString();\n let textLines: string[];\n if (style.multiLine) {\n textLines = text.split('\\n');\n textLines.map((line, i) => (i < textLines.length - 1 ? line + '\\n' : line));\n } else {\n textLines = [text];\n }\n\n const bound = getRichTextBounds({\n wordBreak: style.wordBreak ?? 'break-word',\n maxWidth: style.maxWidth ? style.maxWidth : undefined,\n width: 0,\n height: 0,\n textConfig: textLines.map(\n line =>\n ({\n ...style,\n text: line\n } as unknown as IRichTextParagraphCharacter)\n )\n });\n return {\n width: bound.width(),\n height: bound.height(),\n text: textLines\n };\n};\n"]}
|
package/cjs/core/index.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { VChart } from './vchart';
|
|
2
2
|
import { Factory } from './factory';
|
|
3
3
|
export { VChart, Factory };
|
|
4
|
-
export declare const version = "1.5.
|
|
4
|
+
export declare const version = "1.5.4-alpha.0";
|
|
5
5
|
export type { IVChart } from './interface';
|
|
6
6
|
export * from '../event/interface';
|
|
7
7
|
export * from '../typings/spec/common';
|
package/cjs/core/index.js
CHANGED
|
@@ -35,6 +35,6 @@ Object.defineProperty(exports, "Factory", {
|
|
|
35
35
|
get: function() {
|
|
36
36
|
return factory_1.Factory;
|
|
37
37
|
}
|
|
38
|
-
}), exports.version = "1.5.
|
|
38
|
+
}), exports.version = "1.5.4-alpha.0", __exportStar(require("../event/interface"), exports),
|
|
39
39
|
__exportStar(require("../typings/spec/common"), exports), __exportStar(require("../theme/interface"), exports);
|
|
40
40
|
//# sourceMappingURL=index.js.map
|
package/cjs/core/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/core/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAIA,qCAAkC;AAGzB,uFAHA,eAAM,OAGA;AAFf,uCAAoC;AAEnB,wFAFR,iBAAO,OAEQ;AAGX,QAAA,OAAO,GAAG,eAAe,CAAC;AAMvC,qDAAmC;AACnC,yDAAuC;AACvC,qDAAmC","file":"index.js","sourcesContent":["/**\n * @description The core module of VChart, containing the necessary interfaces for using VChart.\n */\n\nimport { VChart } from './vchart';\nimport { Factory } from './factory';\n\nexport { VChart, Factory };\n\n// export the version\nexport const version = \"1.5.
|
|
1
|
+
{"version":3,"sources":["../src/core/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAIA,qCAAkC;AAGzB,uFAHA,eAAM,OAGA;AAFf,uCAAoC;AAEnB,wFAFR,iBAAO,OAEQ;AAGX,QAAA,OAAO,GAAG,eAAe,CAAC;AAMvC,qDAAmC;AACnC,yDAAuC;AACvC,qDAAmC","file":"index.js","sourcesContent":["/**\n * @description The core module of VChart, containing the necessary interfaces for using VChart.\n */\n\nimport { VChart } from './vchart';\nimport { Factory } from './factory';\n\nexport { VChart, Factory };\n\n// export the version\nexport const version = \"1.5.4-alpha.0\";\n\n// export necessary types\nexport type { IVChart } from './interface';\n\n// the event types\nexport * from '../event/interface';\nexport * from '../typings/spec/common';\nexport * from '../theme/interface';\nexport type { IStateSpec, StateValueType } from '../compile/mark';\n"]}
|
|
@@ -12,8 +12,8 @@ const vutils_1 = require("@visactor/vutils"), funnel = (originData, op) => {
|
|
|
12
12
|
return data.forEach(((d, i) => {
|
|
13
13
|
var _a, _b;
|
|
14
14
|
const currentValue = Number.parseFloat(d[valueField]), lastValue = Number.parseFloat(null === (_a = data[i - 1]) || void 0 === _a ? void 0 : _a[valueField]), nextValue = Number.parseFloat(null === (_b = data[i + 1]) || void 0 === _b ? void 0 : _b[valueField]), transformRatio = (0,
|
|
15
|
-
vutils_1.isValidNumber)(nextValue * currentValue) ? nextValue / currentValue :
|
|
16
|
-
vutils_1.isValidNumber)(currentValue *
|
|
15
|
+
vutils_1.isValidNumber)(nextValue * currentValue) && 0 !== currentValue ? nextValue / currentValue : 0, reachRatio = (0,
|
|
16
|
+
vutils_1.isValidNumber)(currentValue * lastValue) && 0 !== lastValue ? currentValue / lastValue : 0;
|
|
17
17
|
asLastValue && (d[asLastValue] = lastValue), asNextValue && (d[asNextValue] = nextValue),
|
|
18
18
|
asTransformRatio && (d[asTransformRatio] = transformRatio), asReachRatio && (d[asReachRatio] = 0 === i ? 1 : reachRatio),
|
|
19
19
|
asHeightRatio && (d[asHeightRatio] = !0 === heightVisual ? transformRatio : 1 / data.length),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/data/transforms/funnel.ts"],"names":[],"mappings":";;;AACA,6CAAiD;AAgC1C,MAAM,MAAM,GAAG,CAAC,UAA2B,EAAE,EAAc,EAAE,EAAE;;IACpE,MAAM,IAAI,GAAG,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,mBAAM,KAAK,EAAG,CAAC,CAAC;IACrD,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE;QAC9B,OAAO,IAAI,CAAC;KACb;IACD,MAAM,EACJ,UAAU,EACV,gBAAgB,EAChB,YAAY,EACZ,aAAa,EACb,YAAY,EACZ,gBAAgB,EAChB,gBAAgB,EAChB,WAAW,EACX,cAAc,EACd,WAAW,EACX,YAAY,GAAG,KAAK,EACpB,MAAM,GAAG,IAAI,EACb,KAAK,EACN,GAAG,EAAE,CAAC;IAEP,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC;IACzG,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,IAAI,QAAQ,CAAC,EAAE,QAAQ,CAAC,CAAC;IACvG,MAAM,QAAQ,GAAG,CAAC,MAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,GAAG,mCAAI,GAAG,EAAE,MAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,GAAG,mCAAI,GAAG,CAAC,CAAC;IAExD,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;;QACpB,MAAM,YAAY,GAAW,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC;QAC9D,MAAM,SAAS,GAAW,MAAM,CAAC,UAAU,CAAC,MAAA,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,0CAAG,UAAU,CAAC,CAAC,CAAC;QACvE,MAAM,SAAS,GAAW,MAAM,CAAC,UAAU,CAAC,MAAA,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,0CAAG,UAAU,CAAC,CAAC,CAAC;QAEvE,MAAM,cAAc,
|
|
1
|
+
{"version":3,"sources":["../src/data/transforms/funnel.ts"],"names":[],"mappings":"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","file":"funnel.js","sourcesContent":["import type { DataView } from '@visactor/vdataset';\nimport { isValidNumber } from '@visactor/vutils';\n\nexport interface IFunnelOpt {\n valueField: string;\n /** 转化率(当前层到下一层的比例) **/\n asTransformRatio: string;\n /** 到达率 (上一层到当前层的比例)*/\n asReachRatio: string;\n /** 高度轴占总量的比例 **/\n asHeightRatio: string;\n /** 当前值大小占比 */\n asValueRatio: string;\n /** 上一层值大小占比 */\n asLastValueRatio: string;\n /** 下一层值大小占比 */\n asNextValueRatio: string;\n /** 当前层的值 */\n asCurrentValue: string;\n /** 上一层的值 **/\n asLastValue: string;\n /** 下一层的值 **/\n asNextValue: string;\n\n /** 最底层漏斗是否为锥形 */\n isCone?: boolean;\n /** 高度是否进行数据映射 **/\n heightVisual?: boolean;\n\n /** 数值范围 */\n range?: { min: number; max: number };\n}\n\nexport const funnel = (originData: Array<DataView>, op: IFunnelOpt) => {\n const data = originData.map(datum => ({ ...datum }));\n if (!data || data.length === 0) {\n return data;\n }\n const {\n valueField,\n asTransformRatio,\n asReachRatio,\n asHeightRatio,\n asValueRatio,\n asNextValueRatio,\n asLastValueRatio,\n asLastValue,\n asCurrentValue,\n asNextValue,\n heightVisual = false,\n isCone = true,\n range\n } = op;\n\n const max = data.reduce((m, d) => Math.max(m, Number.parseFloat(d[valueField]) || -Infinity), -Infinity);\n const min = data.reduce((m, d) => Math.min(m, Number.parseFloat(d[valueField]) || Infinity), Infinity);\n const rangeArr = [range?.min ?? min, range?.max ?? max];\n\n data.forEach((d, i) => {\n const currentValue: number = Number.parseFloat(d[valueField]);\n const lastValue: number = Number.parseFloat(data[i - 1]?.[valueField]);\n const nextValue: number = Number.parseFloat(data[i + 1]?.[valueField]);\n\n const transformRatio =\n !isValidNumber(nextValue * currentValue) || currentValue === 0 ? 0 : nextValue / currentValue;\n const reachRatio = !isValidNumber(currentValue * lastValue) || lastValue === 0 ? 0 : currentValue / lastValue;\n\n asLastValue && (d[asLastValue] = lastValue);\n asNextValue && (d[asNextValue] = nextValue);\n asTransformRatio && (d[asTransformRatio] = transformRatio);\n asReachRatio && (d[asReachRatio] = i === 0 ? 1 : reachRatio);\n asHeightRatio && (d[asHeightRatio] = heightVisual === true ? transformRatio : 1 / data.length);\n asValueRatio && (d[asValueRatio] = currentValue / rangeArr[1]);\n asNextValueRatio &&\n (d[asNextValueRatio] = i === data.length - 1 ? (isCone ? 0 : d[asValueRatio]) : nextValue / rangeArr[1]);\n asLastValueRatio && (d[asLastValueRatio] = i === 0 ? 1 : lastValue / rangeArr[1]);\n asCurrentValue && (d[asCurrentValue] = currentValue);\n });\n\n return data;\n};\n\nexport interface IFunnelTransformOpt {\n asIsTransformLevel: string;\n}\n\nexport const funnelTransform = (originData: Array<DataView>, op: IFunnelTransformOpt) => {\n const data = originData[0]?.latestData?.map((datum: any) => ({ ...datum }));\n if (!data || data.length === 0) {\n return data;\n }\n data.shift();\n data.forEach((d: any) => {\n d[op.asIsTransformLevel] = true;\n });\n return data;\n};\n"]}
|
|
@@ -5,7 +5,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
}), exports.sankey = void 0;
|
|
6
6
|
|
|
7
7
|
const vgrammar_sankey_1 = require("@visactor/vgrammar-sankey"), vutils_1 = require("@visactor/vutils"), sankey = (data, op) => {
|
|
8
|
-
var _a;
|
|
8
|
+
var _a, _b, _c;
|
|
9
9
|
if (!data || !(null == op ? void 0 : op.view) || !(0, vutils_1.isArray)(data)) return data;
|
|
10
10
|
const view = op.view();
|
|
11
11
|
if (view.x1 - view.x0 == 0 || view.y1 - view.y0 == 0 || view.x1 - view.x0 == -1 / 0 || view.x1 - view.x0 == 1 / 0 || view.y1 - view.y0 == -1 / 0 || view.y1 - view.y0 == 1 / 0) return data;
|
|
@@ -18,14 +18,27 @@ const vgrammar_sankey_1 = require("@visactor/vgrammar-sankey"), vutils_1 = requi
|
|
|
18
18
|
"links" !== datum.id && "nodes" !== datum.id || (updateData[datum.id] = datum.values);
|
|
19
19
|
})), data = updateData;
|
|
20
20
|
} else data = (null === (_a = data[0]) || void 0 === _a ? void 0 : _a.latestData) ? data[0].latestData[0] : data[0];
|
|
21
|
-
if ("source" !== op.sourceField || "target" !== op.targetField) for (const key in data) if ("links" === key) {
|
|
21
|
+
if ("source" !== op.sourceField || "target" !== op.targetField || "value" !== op.valueField) for (const key in data) if ("links" === key) {
|
|
22
22
|
const updatedData = [];
|
|
23
23
|
data[key].forEach((datum => {
|
|
24
24
|
const updatedDatum = {};
|
|
25
|
-
for (const key in datum) key === op.sourceField ? updatedDatum.source = datum[op.sourceField] : key === op.targetField ? updatedDatum.target = datum[op.targetField] : updatedDatum[key] = datum[key];
|
|
25
|
+
for (const key in datum) key === op.sourceField ? updatedDatum.source = datum[op.sourceField] : key === op.targetField ? updatedDatum.target = datum[op.targetField] : key === op.valueField ? updatedDatum.value = datum[op.valueField] : updatedDatum[key] = datum[key];
|
|
26
26
|
updatedData.push(updatedDatum);
|
|
27
27
|
})), data[key] = updatedData;
|
|
28
28
|
}
|
|
29
|
+
const convertValuesToNumbers = data => {
|
|
30
|
+
data.forEach((obj => {
|
|
31
|
+
obj.value = (0, vutils_1.isString)(obj.value) ? +obj.value : obj.value, obj.children && obj.children.length > 0 && convertValuesToNumbers(obj.children);
|
|
32
|
+
}));
|
|
33
|
+
};
|
|
34
|
+
for (const key in data) if ("links" === key) {
|
|
35
|
+
const updatedData = [];
|
|
36
|
+
data[key].forEach((datum => {
|
|
37
|
+
const updatedDatum = {};
|
|
38
|
+
for (const key in datum) "value" === key ? updatedDatum.value = (0, vutils_1.isString)(datum.value) ? +datum.value : datum.value : updatedDatum[key] = datum[key];
|
|
39
|
+
updatedData.push(updatedDatum);
|
|
40
|
+
})), data[key] = updatedData;
|
|
41
|
+
} else "nodes" === key && (null === (_c = null === (_b = data.nodes) || void 0 === _b ? void 0 : _b[0]) || void 0 === _c ? void 0 : _c.children) && convertValuesToNumbers(data.nodes);
|
|
29
42
|
const layout = new vgrammar_sankey_1.SankeyLayout(op), result = [];
|
|
30
43
|
return result.push(layout.layout(data, view)), result;
|
|
31
44
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/data/transforms/sankey.ts"],"names":[],"mappings":";;;AACA,+DAAyD;AACzD,
|
|
1
|
+
{"version":3,"sources":["../src/data/transforms/sankey.ts"],"names":[],"mappings":";;;AACA,+DAAyD;AACzD,6CAAqD;AAS9C,MAAM,MAAM,GAAG,CAAC,IAAgB,EAAE,EAAc,EAAE,EAAE;;IACzD,IAAI,CAAC,IAAI,IAAI,CAAC,CAAA,EAAE,aAAF,EAAE,uBAAF,EAAE,CAAE,IAAI,CAAA,IAAI,CAAC,IAAA,gBAAO,EAAC,IAAI,CAAC,EAAE;QACxC,OAAO,IAAI,CAAC;KACb;IAED,MAAM,IAAI,GAAG,EAAE,CAAC,IAAI,EAAE,CAAC;IAEvB,IACE,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,KAAK,CAAC;QACvB,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,KAAK,CAAC;QACvB,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,KAAK,CAAC,QAAQ;QAC/B,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,KAAK,QAAQ;QAC9B,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,KAAK,CAAC,QAAQ;QAC/B,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,KAAK,QAAQ,EAC9B;QACA,OAAO,IAAI,CAAC;KACb;IAED,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE;QAKnB,MAAM,UAAU,GAAe;YAC7B,KAAK,EAAE,EAAE;YACT,KAAK,EAAE,EAAE;SACV,CAAC;QACF,IAAI,CAAC,OAAO,CAAC,CAAC,KAAU,EAAE,EAAE;YAC1B,IAAI,KAAK,CAAC,EAAE,KAAK,OAAO,IAAI,KAAK,CAAC,EAAE,KAAK,OAAO,EAAE;gBAChD,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC;aACrC;QACH,CAAC,CAAC,CAAC;QACH,IAAI,GAAG,UAAU,CAAC;KACnB;SAAM;QAKL,IAAI,MAAA,IAAI,CAAC,CAAC,CAAC,0CAAE,UAAU,EAAE;YACvB,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;SAC9B;aAAM;YACL,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;SAChB;KACF;IAED,IAAI,EAAE,CAAC,WAAW,KAAK,QAAQ,IAAI,EAAE,CAAC,WAAW,KAAK,QAAQ,IAAI,EAAE,CAAC,UAAU,KAAK,OAAO,EAAE;QAC3F,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE;YACtB,IAAI,GAAG,KAAK,OAAO,EAAE;gBACnB,MAAM,WAAW,GAAS,EAAE,CAAC;gBAC7B,IAAI,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,KAAU,EAAE,EAAE;oBAC/B,MAAM,YAAY,GAAQ,EAAE,CAAC;oBAC7B,KAAK,MAAM,GAAG,IAAI,KAAK,EAAE;wBACvB,IAAI,GAAG,KAAK,EAAE,CAAC,WAAW,EAAE;4BAC1B,YAAY,CAAC,MAAM,GAAG,KAAK,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC;yBAC7C;6BAAM,IAAI,GAAG,KAAK,EAAE,CAAC,WAAW,EAAE;4BACjC,YAAY,CAAC,MAAM,GAAG,KAAK,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC;yBAC7C;6BAAM,IAAI,GAAG,KAAK,EAAE,CAAC,UAAU,EAAE;4BAChC,YAAY,CAAC,KAAK,GAAG,KAAK,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC;yBAC3C;6BAAM;4BACL,YAAY,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC;yBAChC;qBACF;oBACD,WAAW,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;gBACjC,CAAC,CAAC,CAAC;gBACH,IAAI,CAAC,GAAG,CAAC,GAAG,WAAW,CAAC;aACzB;SACF;KACF;IAED,MAAM,sBAAsB,GAAG,CAAC,IAAS,EAAE,EAAE;QAC3C,IAAI,CAAC,OAAO,CAAC,CAAC,GAAQ,EAAE,EAAE;YACxB,GAAG,CAAC,KAAK,GAAG,IAAA,iBAAQ,EAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC;YACzD,IAAI,GAAG,CAAC,QAAQ,IAAI,GAAG,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE;gBAC3C,sBAAsB,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;aACtC;QACH,CAAC,CAAC,CAAC;IACL,CAAC,CAAC;IAGF,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE;QAEtB,IAAI,GAAG,KAAK,OAAO,EAAE;YACnB,MAAM,WAAW,GAAS,EAAE,CAAC;YAC7B,IAAI,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,KAAU,EAAE,EAAE;gBAC/B,MAAM,YAAY,GAAQ,EAAE,CAAC;gBAC7B,KAAK,MAAM,GAAG,IAAI,KAAK,EAAE;oBACvB,IAAI,GAAG,KAAK,OAAO,EAAE;wBACnB,YAAY,CAAC,KAAK,GAAG,IAAA,iBAAQ,EAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC;qBACzE;yBAAM;wBACL,YAAY,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC;qBAChC;iBACF;gBACD,WAAW,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;YACjC,CAAC,CAAC,CAAC;YACH,IAAI,CAAC,GAAG,CAAC,GAAG,WAAW,CAAC;SAEzB;aAAM,IAAI,GAAG,KAAK,OAAO,EAAE;YAC1B,IAAI,MAAC,MAAA,IAAI,CAAC,KAAK,0CAAG,CAAC,CAAS,0CAAE,QAAQ,EAAE;gBACtC,sBAAsB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;aACpC;SACF;KACF;IAED,MAAM,MAAM,GAAG,IAAI,8BAAY,CAAC,EAAE,CAAC,CAAC;IAEpC,MAAM,MAAM,GAAG,EAAE,CAAC;IAElB,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;IAEvC,OAAO,MAAM,CAAC;AAChB,CAAC,CAAC;AA9GW,QAAA,MAAM,UA8GjB","file":"sankey.js","sourcesContent":["import type { SankeyOptions, SankeyData } from '@visactor/vgrammar-sankey';\nimport { SankeyLayout } from '@visactor/vgrammar-sankey';\nimport { isArray, isString } from '@visactor/vutils';\n\nexport interface ISankeyOpt extends SankeyOptions {\n targetField: string;\n sourceField: string;\n valueField: string;\n view: () => { x0: number; x1: number; y0: number; y1: number };\n}\n\nexport const sankey = (data: SankeyData, op: ISankeyOpt) => {\n if (!data || !op?.view || !isArray(data)) {\n return data;\n }\n\n const view = op.view();\n\n if (\n view.x1 - view.x0 === 0 ||\n view.y1 - view.y0 === 0 ||\n view.x1 - view.x0 === -Infinity ||\n view.x1 - view.x0 === Infinity ||\n view.y1 - view.y0 === -Infinity ||\n view.y1 - view.y0 === Infinity\n ) {\n return data;\n }\n\n if (data.length > 1) {\n /**\n * data structure for Fengshen:\n * [{id:’nodes’, values:[xxx]},{id:’links’, values:[xxx]}]\n */\n const updateData: SankeyData = {\n links: [],\n nodes: []\n };\n data.forEach((datum: any) => {\n if (datum.id === 'links' || datum.id === 'nodes') {\n updateData[datum.id] = datum.values;\n }\n });\n data = updateData;\n } else {\n /**\n * data structure:\n * [{nodes: [xxx], links: [xxx]}]\n */\n if (data[0]?.latestData) {\n data = data[0].latestData[0];\n } else {\n data = data[0];\n }\n }\n\n if (op.sourceField !== 'source' || op.targetField !== 'target' || op.valueField !== 'value') {\n for (const key in data) {\n if (key === 'links') {\n const updatedData: {}[] = [];\n data[key].forEach((datum: any) => {\n const updatedDatum: any = {};\n for (const key in datum) {\n if (key === op.sourceField) {\n updatedDatum.source = datum[op.sourceField];\n } else if (key === op.targetField) {\n updatedDatum.target = datum[op.targetField];\n } else if (key === op.valueField) {\n updatedDatum.value = datum[op.valueField];\n } else {\n updatedDatum[key] = datum[key];\n }\n }\n updatedData.push(updatedDatum);\n });\n data[key] = updatedData;\n }\n }\n }\n\n const convertValuesToNumbers = (data: any) => {\n data.forEach((obj: any) => {\n obj.value = isString(obj.value) ? +obj.value : obj.value; // 将字符串转换为数值类型\n if (obj.children && obj.children.length > 0) {\n convertValuesToNumbers(obj.children); // 递归处理子节点\n }\n });\n };\n\n //Convert value from string to number\n for (const key in data) {\n //node-link型数据\n if (key === 'links') {\n const updatedData: {}[] = [];\n data[key].forEach((datum: any) => {\n const updatedDatum: any = {};\n for (const key in datum) {\n if (key === 'value') {\n updatedDatum.value = isString(datum.value) ? +datum.value : datum.value; // 将字符串转换为数值类型\n } else {\n updatedDatum[key] = datum[key];\n }\n }\n updatedData.push(updatedDatum);\n });\n data[key] = updatedData;\n //层级型数据\n } else if (key === 'nodes') {\n if ((data.nodes?.[0] as any)?.children) {\n convertValuesToNumbers(data.nodes);\n }\n }\n }\n\n const layout = new SankeyLayout(op);\n\n const result = [];\n\n result.push(layout.layout(data, view));\n\n return result;\n};\n"]}
|
|
@@ -1,57 +1,22 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
};
|
|
8
|
-
select: {
|
|
9
|
-
enable: boolean;
|
|
10
|
-
trigger: string;
|
|
11
|
-
};
|
|
1
|
+
import type { RenderMode } from '../typings/spec/common';
|
|
2
|
+
export declare function getDefaultInteractionConfigByMode(mode: RenderMode): {
|
|
3
|
+
hover: {
|
|
4
|
+
enable: boolean;
|
|
5
|
+
trigger: string;
|
|
6
|
+
triggerOff: string[];
|
|
12
7
|
};
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
trigger: string;
|
|
17
|
-
triggerOff: string[];
|
|
18
|
-
};
|
|
19
|
-
select: {
|
|
20
|
-
enable: boolean;
|
|
21
|
-
trigger: string;
|
|
22
|
-
};
|
|
8
|
+
select: {
|
|
9
|
+
enable: boolean;
|
|
10
|
+
trigger: string;
|
|
23
11
|
};
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
};
|
|
30
|
-
select: {
|
|
31
|
-
enable: boolean;
|
|
32
|
-
trigger: string;
|
|
33
|
-
};
|
|
12
|
+
} | {
|
|
13
|
+
hover: {
|
|
14
|
+
enable: boolean;
|
|
15
|
+
trigger: string;
|
|
16
|
+
triggerOff: string;
|
|
34
17
|
};
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
trigger: string;
|
|
39
|
-
triggerOff: string;
|
|
40
|
-
};
|
|
41
|
-
select: {
|
|
42
|
-
enable: boolean;
|
|
43
|
-
trigger: string;
|
|
44
|
-
};
|
|
45
|
-
};
|
|
46
|
-
lynx: {
|
|
47
|
-
hover: {
|
|
48
|
-
enable: boolean;
|
|
49
|
-
trigger: string;
|
|
50
|
-
triggerOff: string;
|
|
51
|
-
};
|
|
52
|
-
select: {
|
|
53
|
-
enable: boolean;
|
|
54
|
-
trigger: string;
|
|
55
|
-
};
|
|
18
|
+
select: {
|
|
19
|
+
enable: boolean;
|
|
20
|
+
trigger: string;
|
|
56
21
|
};
|
|
57
22
|
};
|
|
@@ -2,12 +2,12 @@
|
|
|
2
2
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: !0
|
|
5
|
-
}), exports.
|
|
5
|
+
}), exports.getDefaultInteractionConfigByMode = void 0;
|
|
6
6
|
|
|
7
|
-
const common_1 = require("../typings/spec/common");
|
|
7
|
+
const common_1 = require("../typings/spec/common"), util_1 = require("../util");
|
|
8
8
|
|
|
9
|
-
|
|
10
|
-
[common_1.RenderModeEnum["desktop-miniApp"]
|
|
9
|
+
function getDefaultInteractionConfigByMode(mode) {
|
|
10
|
+
return mode === common_1.RenderModeEnum["desktop-browser"] || mode === common_1.RenderModeEnum["desktop-miniApp"] ? {
|
|
11
11
|
hover: {
|
|
12
12
|
enable: !0,
|
|
13
13
|
trigger: "pointermove",
|
|
@@ -17,41 +17,7 @@ exports.defaultInteractionConfig = {
|
|
|
17
17
|
enable: !0,
|
|
18
18
|
trigger: "pointertap"
|
|
19
19
|
}
|
|
20
|
-
},
|
|
21
|
-
[common_1.RenderModeEnum["desktop-browser"]]: {
|
|
22
|
-
hover: {
|
|
23
|
-
enable: !0,
|
|
24
|
-
trigger: "pointermove",
|
|
25
|
-
triggerOff: [ "pointermove", "pointerleave" ]
|
|
26
|
-
},
|
|
27
|
-
select: {
|
|
28
|
-
enable: !0,
|
|
29
|
-
trigger: "pointertap"
|
|
30
|
-
}
|
|
31
|
-
},
|
|
32
|
-
[common_1.RenderModeEnum["mobile-browser"]]: {
|
|
33
|
-
hover: {
|
|
34
|
-
enable: !0,
|
|
35
|
-
trigger: "pointerover",
|
|
36
|
-
triggerOff: "pointerout"
|
|
37
|
-
},
|
|
38
|
-
select: {
|
|
39
|
-
enable: !0,
|
|
40
|
-
trigger: "tap"
|
|
41
|
-
}
|
|
42
|
-
},
|
|
43
|
-
[common_1.RenderModeEnum.miniApp]: {
|
|
44
|
-
hover: {
|
|
45
|
-
enable: !0,
|
|
46
|
-
trigger: "pointerover",
|
|
47
|
-
triggerOff: "pointerout"
|
|
48
|
-
},
|
|
49
|
-
select: {
|
|
50
|
-
enable: !0,
|
|
51
|
-
trigger: "tap"
|
|
52
|
-
}
|
|
53
|
-
},
|
|
54
|
-
[common_1.RenderModeEnum.lynx]: {
|
|
20
|
+
} : (0, util_1.isMobileLikeMode)(mode) || (0, util_1.isMiniAppLikeMode)(mode) ? {
|
|
55
21
|
hover: {
|
|
56
22
|
enable: !0,
|
|
57
23
|
trigger: "pointerover",
|
|
@@ -61,5 +27,7 @@ exports.defaultInteractionConfig = {
|
|
|
61
27
|
enable: !0,
|
|
62
28
|
trigger: "tap"
|
|
63
29
|
}
|
|
64
|
-
}
|
|
65
|
-
}
|
|
30
|
+
} : null;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
exports.getDefaultInteractionConfigByMode = getDefaultInteractionConfigByMode;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/interaction/config.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"sources":["../src/interaction/config.ts"],"names":[],"mappings":";;;AACA,mDAAwD;AACxD,kCAA8D;AAE9D,SAAgB,iCAAiC,CAAC,IAAgB;IAChE,IAAI,IAAI,KAAK,uBAAc,CAAC,iBAAiB,CAAC,IAAI,IAAI,KAAK,uBAAc,CAAC,iBAAiB,CAAC,EAAE;QAC5F,OAAO;YACL,KAAK,EAAE;gBACL,MAAM,EAAE,IAAI;gBACZ,OAAO,EAAE,aAAa;gBACtB,UAAU,EAAE,CAAC,aAAa,EAAE,cAAc,CAAC;aAC5C;YACD,MAAM,EAAE;gBACN,MAAM,EAAE,IAAI;gBACZ,OAAO,EAAE,YAAY;aACtB;SACF,CAAC;KACH;IAED,IAAI,IAAA,uBAAgB,EAAC,IAAI,CAAC,IAAI,IAAA,wBAAiB,EAAC,IAAI,CAAC,EAAE;QACrD,OAAO;YACL,KAAK,EAAE;gBACL,MAAM,EAAE,IAAI;gBACZ,OAAO,EAAE,aAAa;gBACtB,UAAU,EAAE,YAAY;aACzB;YACD,MAAM,EAAE;gBACN,MAAM,EAAE,IAAI;gBACZ,OAAO,EAAE,KAAK;aACf;SACF,CAAC;KACH;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AA9BD,8EA8BC","file":"config.js","sourcesContent":["import type { RenderMode } from '../typings/spec/common';\nimport { RenderModeEnum } from '../typings/spec/common';\nimport { isMiniAppLikeMode, isMobileLikeMode } from '../util';\n\nexport function getDefaultInteractionConfigByMode(mode: RenderMode) {\n if (mode === RenderModeEnum['desktop-browser'] || mode === RenderModeEnum['desktop-miniApp']) {\n return {\n hover: {\n enable: true,\n trigger: 'pointermove',\n triggerOff: ['pointermove', 'pointerleave']\n },\n select: {\n enable: true,\n trigger: 'pointertap'\n }\n };\n }\n\n if (isMobileLikeMode(mode) || isMiniAppLikeMode(mode)) {\n return {\n hover: {\n enable: true,\n trigger: 'pointerover',\n triggerOff: 'pointerout'\n },\n select: {\n enable: true,\n trigger: 'tap'\n }\n };\n }\n\n return null;\n}\n"]}
|
|
@@ -10,7 +10,7 @@ class Drillable {
|
|
|
10
10
|
_getTriggerEvent(type) {
|
|
11
11
|
var _a;
|
|
12
12
|
const {mode: mode} = this._drillParams;
|
|
13
|
-
return null === (_a = config_1.
|
|
13
|
+
return null === (_a = (0, config_1.getDefaultTriggerEventByMode)(mode)) || void 0 === _a ? void 0 : _a[type];
|
|
14
14
|
}
|
|
15
15
|
_hideTooltip() {
|
|
16
16
|
const tooltip = this.getChart().getAllComponents().find((c => c.type === interface_1.ComponentTypeEnum.tooltip));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/interaction/drill/drillable.ts"],"names":[],"mappings":";;;AACA,6CAA2D;AAI3D,uDAA0D;AAC1D,uDAAwD;AAGxD,
|
|
1
|
+
{"version":3,"sources":["../src/interaction/drill/drillable.ts"],"names":[],"mappings":"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","file":"drillable.js","sourcesContent":["/* eslint-disable no-duplicate-imports */\nimport { isArray, isEmpty, isNil } from '@visactor/vutils';\nimport type { DataSet, DataView } from '@visactor/vdataset';\n\nimport type { DrillInfo } from '../../data/transforms/drill';\nimport { drillFilter } from '../../data/transforms/drill';\nimport { DrillEnum } from '../../data/transforms/drill';\nimport type { EventType, IEvent } from '../../event/interface';\nimport type { RenderMode } from '../../typings/spec';\nimport { getDefaultTriggerEventByMode } from '../../component/common/trigger/config';\nimport { findHierarchyPath } from '../../util';\nimport { ChartEvent } from '../../constant';\nimport { registerDataSetInstanceTransform } from '../../data/register';\nimport type { IModel } from '../../model/interface';\nimport type { BaseSeries } from '../../series/base/base-series';\nimport { ComponentTypeEnum } from '../../component/interface';\nimport type { Tooltip } from '../../component/tooltip';\n\ninterface DrillParams {\n event: IEvent;\n mode: RenderMode;\n drillField: () => string;\n getRawData: () => DataView;\n}\n\nexport interface IDrillable {\n /**\n * 初始化钻取设置\n */\n initDrillable: (params: DrillParams) => void;\n\n /**\n * 初始化钻取数据\n */\n initDrillableData: (dataSet: DataSet) => void;\n\n /**\n * 绑定钻取事件\n */\n bindDrillEvent: () => void;\n\n /**\n * 上卷\n */\n drillUp: () => void;\n\n /**\n * 下钻\n * @param drillPath 钻取路径\n */\n drillDown: (drillPath: string[]) => string[];\n}\n\nexport class Drillable implements IDrillable {\n private _drillParams: DrillParams;\n private _drillInfo: DrillInfo;\n\n private _getTriggerEvent(type: string): EventType {\n const { mode } = this._drillParams;\n\n return getDefaultTriggerEventByMode(mode)?.[type];\n }\n\n private _hideTooltip() {\n const tooltip = (this as unknown as BaseSeries<null>)\n .getChart()\n .getAllComponents()\n .find(c => c.type === ComponentTypeEnum.tooltip) as Tooltip;\n tooltip && tooltip.hideTooltip();\n }\n\n initDrillable(params: DrillParams) {\n this._drillParams = params;\n }\n\n initDrillableData(dataSet: DataSet) {\n const { getRawData } = this._drillParams;\n // 注册筛选方法\n registerDataSetInstanceTransform(dataSet, 'drillFilter', drillFilter);\n\n // 调用筛选数据, 用于上卷下钻\n getRawData().transform({\n type: 'drillFilter',\n options: {\n info: () => this._drillInfo,\n keyField: () => this._drillParams.drillField()\n }\n });\n }\n\n bindDrillEvent() {\n const { event, getRawData, drillField } = this._drillParams;\n const keyField = drillField();\n if (this._getTriggerEvent('start')) {\n event.on(this._getTriggerEvent('start'), e => {\n if (isNil(e.datum) || isNil(e.datum?.[keyField])) {\n this.drillUp();\n return;\n }\n\n // Drill交互后, 隐藏Tooltip\n this._hideTooltip();\n // 获取数据key\n const dataKey = e.datum[keyField];\n // 已钻取的路径\n const selectPath = this._drillInfo?.path ?? [];\n // 用户点击的路径\n const clickedPath = findHierarchyPath(getRawData().rawData, dataKey, keyField, 'children');\n // 已钻取过, 则一定上卷\n if (selectPath[selectPath.length - 1] === clickedPath[clickedPath.length - 1]) {\n this.drillUp();\n } else {\n this.drillDown(clickedPath);\n }\n });\n }\n }\n\n /**\n * 下钻接口\n * @param drillPath 下钻后的路径\n * @returns 当然路径\n * @description 根据传入的path, 向指定层级下钻.\n */\n drillDown(drillPath: string[] = []): string[] {\n const { getRawData, event } = this._drillParams;\n if (!isArray(drillPath) || isEmpty(drillPath)) {\n return drillPath;\n }\n\n // 根据钻取路径, 获得当前需要展示的层级\n const dataKey = drillPath[drillPath.length - 1];\n\n this._drillInfo = {\n key: dataKey,\n path: drillPath,\n type: DrillEnum.DrillDown\n };\n\n getRawData().reRunAllTransform();\n event.emit(ChartEvent.drill, {\n value: { path: drillPath, type: DrillEnum.DrillDown },\n model: this as unknown as IModel\n });\n return drillPath;\n }\n\n /**\n * 上卷接口\n * @returns 上卷后的路径\n * @description 根据path信息, 向父层级上卷.\n */\n drillUp() {\n const { getRawData, event } = this._drillParams;\n\n const path = this._drillInfo?.path ?? [];\n if (!isArray(path) || isEmpty(path)) {\n return path;\n }\n\n const dataKey = path.pop();\n\n this._drillInfo = {\n key: dataKey,\n path: path,\n type: DrillEnum.DrillUp\n };\n\n getRawData().reRunAllTransform();\n event.emit(ChartEvent.drill, {\n value: { path, type: DrillEnum.DrillUp },\n model: this as unknown as IModel\n });\n return path;\n }\n}\n"]}
|
|
@@ -68,7 +68,7 @@ class Trigger {
|
|
|
68
68
|
this.event.release();
|
|
69
69
|
}
|
|
70
70
|
initConfig(mode) {
|
|
71
|
-
const defaultConfig = config_1.
|
|
71
|
+
const defaultConfig = (0, config_1.getDefaultInteractionConfigByMode)(mode);
|
|
72
72
|
this._hover = Object.assign({}, null == defaultConfig ? void 0 : defaultConfig.hover),
|
|
73
73
|
this._select = Object.assign({}, null == defaultConfig ? void 0 : defaultConfig.select);
|
|
74
74
|
const hoverSpec = this._spec.hover;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/interaction/trigger.ts"],"names":[],"mappings":"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","file":"trigger.js","sourcesContent":["import { Event } from '../event/event';\nimport { defaultInteractionConfig } from './config';\nimport { mergeSpec, isBoolean, isObject, array } from '../util';\n\nimport type { IMark } from '../mark/interface';\nimport type { BaseEventParams, EventCallback, EventParams, IEvent } from '../event/interface';\nimport type { IHoverSpec, IInteraction, ISelectSpec, ITrigger, ITriggerOption, ITriggerSpec } from './interface';\nimport type { RenderMode } from '../typings/spec';\nimport { MarkSet } from '../mark/mark-set';\nimport { STATE_VALUE_ENUM } from '../compile/mark';\nimport { Event_Bubble_Level, Event_Source_Type } from '../constant';\n\nexport class Trigger implements ITrigger {\n // 事件\n readonly event: IEvent;\n\n protected readonly interaction: IInteraction;\n\n protected _spec: ITriggerSpec;\n protected _option: ITriggerOption;\n\n protected _hover: IHoverSpec;\n get hover() {\n return this._hover;\n }\n protected _select: ISelectSpec;\n get select() {\n return this._select;\n }\n\n protected _fields: string[] | null = null;\n protected _marks: MarkSet = new MarkSet();\n protected _markReverse: MarkSet = new MarkSet();\n\n constructor(spec: ITriggerSpec, option: ITriggerOption) {\n this._spec = spec;\n this._option = option;\n this.event = new Event(option.eventDispatcher, option.mode);\n this.interaction = option.interaction;\n this.initConfig(option.mode);\n }\n\n setStateKeys(fields: string[]): void {\n this._fields = [...fields];\n }\n\n registerMark(mark: IMark): void {\n this._marks.addMark(mark);\n if (this._hover.enable) {\n this.interaction.registerMark(STATE_VALUE_ENUM.STATE_HOVER, mark);\n }\n if (this._select.enable) {\n this.interaction.registerMark(STATE_VALUE_ENUM.STATE_SELECTED, mark);\n }\n }\n\n init(): void {\n this.initEvent();\n }\n\n release(): void {\n this.releaseEvent();\n this._marks.clear();\n }\n\n // event\n protected initEvent() {\n const event = this.event;\n const { enable: hoverEnable, trigger: hoverTrigger, triggerOff: hoverTriggerOff } = this._hover;\n const { enable: selectEnable, trigger: selectTrigger, triggerOff: selectTriggerOff } = this._select;\n if (hoverEnable) {\n // 进行 hover 交互相关的事件绑定\n array(hoverTrigger).forEach(trigger => {\n event.on(trigger, { level: Event_Bubble_Level.chart }, this.onHover as EventCallback<EventParams>);\n });\n if (hoverTriggerOff && hoverTriggerOff !== 'none') {\n array(hoverTriggerOff).forEach(trigger => {\n event.on(\n trigger,\n { level: Event_Bubble_Level.vchart, source: Event_Source_Type.chart },\n this.onUnHover as EventCallback<EventParams>\n );\n });\n }\n }\n\n if (selectEnable) {\n // 进行 select 交互相关的事件绑定\n array(selectTrigger).forEach(trigger => {\n event.on(trigger, { level: Event_Bubble_Level.mark }, this.onSelect as EventCallback<EventParams>);\n });\n if (selectTriggerOff && selectTriggerOff !== 'none') {\n array(selectTriggerOff).forEach(trigger => {\n event.on(trigger, { level: Event_Bubble_Level.mark }, this.onUnSelect as EventCallback<EventParams>);\n });\n }\n // default triggerOff: active without mark , unselected\n if (!selectTriggerOff) {\n array(selectTriggerOff ?? selectTrigger).forEach(trigger => {\n event.on(trigger, { level: Event_Bubble_Level.vchart }, this.onUnSelect as EventCallback<EventParams>);\n });\n }\n }\n }\n\n protected releaseEvent(): void {\n this.event.release();\n }\n\n private initConfig(mode: RenderMode): void {\n const defaultConfig = defaultInteractionConfig[mode];\n this._hover = { ...defaultConfig?.hover };\n this._select = { ...defaultConfig?.select };\n\n const hoverSpec = this._spec.hover;\n if (isBoolean(hoverSpec)) {\n this._hover.enable = hoverSpec;\n } else if (isObject(hoverSpec)) {\n this._hover.enable = true;\n this._hover = mergeSpec(this._hover, hoverSpec);\n }\n\n const selectSpec = this._spec.select;\n if (isBoolean(selectSpec)) {\n this._select.enable = selectSpec;\n } else if (isObject(selectSpec)) {\n this._select.enable = true;\n this._select = mergeSpec(this._select, selectSpec);\n }\n }\n\n private onHover = (params: BaseEventParams) => {\n if (this.filterEventMark(params)) {\n this.hoverItem(params);\n }\n };\n\n private onUnHover = (params: BaseEventParams) => {\n if (this.filterEventMark(params) || this.interaction.filterEventMark(params, STATE_VALUE_ENUM.STATE_HOVER)) {\n return;\n }\n if (this.interaction.getEventElement(STATE_VALUE_ENUM.STATE_HOVER)[0]) {\n this.unhoverItem();\n }\n };\n\n private onSelect = (params: BaseEventParams) => {\n this.handleSingleEventSelect(params);\n };\n\n private onUnSelect = (params: BaseEventParams) => {\n if (!this.interaction.filterEventMark(params, STATE_VALUE_ENUM.STATE_SELECTED)) {\n this.clearSelectedItems();\n }\n };\n\n // hover\n protected hoverItem(params: BaseEventParams): void {\n const { datum } = params;\n const lastEl = this.interaction.getEventElement(STATE_VALUE_ENUM.STATE_HOVER)[0];\n if (params.item === lastEl) {\n return;\n }\n this.interaction.exchangeEventElement(STATE_VALUE_ENUM.STATE_HOVER, params.item);\n this.interaction.reverseEventElement(STATE_VALUE_ENUM.STATE_HOVER);\n this.event.emit('hovered', {\n model: this._option.model,\n value: [datum]\n });\n }\n\n protected unhoverItem(): void {\n const lastHoveredDatums = this.interaction.getEventElementData(STATE_VALUE_ENUM.STATE_HOVER);\n this.interaction.clearEventElement(STATE_VALUE_ENUM.STATE_HOVER, true);\n\n this.event.emit('unhovered', {\n model: this._option.model,\n value: lastHoveredDatums\n });\n }\n\n protected handleSingleEventHover(params: BaseEventParams): void {\n if (this.filterEventMark(params)) {\n this.hoverItem(params);\n } else if (\n this.interaction.getEventElement(STATE_VALUE_ENUM.STATE_HOVER)[0] &&\n !this.interaction.filterEventMark(params, STATE_VALUE_ENUM.STATE_HOVER)\n ) {\n this.unhoverItem();\n }\n }\n\n // select\n protected selectItems(datums: any[]): void {\n this.event.emit('selected', {\n model: this._option.model,\n value: datums\n });\n }\n\n protected clearSelectedItems() {\n const lastSelectedItem = this.interaction.getEventElementData(STATE_VALUE_ENUM.STATE_SELECTED);\n this.interaction.clearEventElement(STATE_VALUE_ENUM.STATE_SELECTED, true);\n\n this.event.emit('unselected', {\n model: this._option.model,\n value: lastSelectedItem\n });\n }\n\n protected unselectItems(params: BaseEventParams): void {\n this.interaction.removeEventElement(STATE_VALUE_ENUM.STATE_SELECTED, params.item);\n this.event.emit('unselected', {\n model: this._option.model,\n value: params.item\n });\n }\n\n protected handleSingleEventSelect(params: BaseEventParams): void {\n if (this.filterEventMark(params)) {\n if (params.item.getStates().includes(STATE_VALUE_ENUM.STATE_SELECTED)) {\n this.unselectItems(params);\n } else {\n switch (this._select.mode) {\n case 'multiple':\n this.interaction.addEventElement(STATE_VALUE_ENUM.STATE_SELECTED, params.item);\n break;\n case 'single':\n default:\n this.interaction.exchangeEventElement(STATE_VALUE_ENUM.STATE_SELECTED, params.item);\n }\n this.interaction.reverseEventElement(STATE_VALUE_ENUM.STATE_SELECTED);\n const items = this.interaction.getEventElementData(STATE_VALUE_ENUM.STATE_SELECTED);\n this.selectItems(items);\n }\n } else if (\n // 不做已选内容的判断,因为选中的元素可能由用户 API 控制\n // this._selectedItems.length > 0 &&\n !this.interaction.filterEventMark(params, STATE_VALUE_ENUM.STATE_SELECTED)\n ) {\n this.clearSelectedItems();\n }\n }\n\n // util\n protected filterEventMark(params: BaseEventParams): boolean {\n return !!(params.mark && this._marks.includes(params.mark));\n }\n\n protected isDatumEqual(datumA: any, datumB: any): boolean {\n const fields = this._fields ? this._fields : Object.keys(datumA);\n return fields.every(f => datumA[f] === datumB[f]);\n }\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/interaction/trigger.ts"],"names":[],"mappings":"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","file":"trigger.js","sourcesContent":["import { Event } from '../event/event';\nimport { getDefaultInteractionConfigByMode } from './config';\nimport { mergeSpec, isBoolean, isObject, array } from '../util';\n\nimport type { IMark } from '../mark/interface';\nimport type { BaseEventParams, EventCallback, EventParams, IEvent } from '../event/interface';\nimport type { IHoverSpec, IInteraction, ISelectSpec, ITrigger, ITriggerOption, ITriggerSpec } from './interface';\nimport type { RenderMode } from '../typings/spec';\nimport { MarkSet } from '../mark/mark-set';\nimport { STATE_VALUE_ENUM } from '../compile/mark';\nimport { Event_Bubble_Level, Event_Source_Type } from '../constant';\n\nexport class Trigger implements ITrigger {\n // 事件\n readonly event: IEvent;\n\n protected readonly interaction: IInteraction;\n\n protected _spec: ITriggerSpec;\n protected _option: ITriggerOption;\n\n protected _hover: IHoverSpec;\n get hover() {\n return this._hover;\n }\n protected _select: ISelectSpec;\n get select() {\n return this._select;\n }\n\n protected _fields: string[] | null = null;\n protected _marks: MarkSet = new MarkSet();\n protected _markReverse: MarkSet = new MarkSet();\n\n constructor(spec: ITriggerSpec, option: ITriggerOption) {\n this._spec = spec;\n this._option = option;\n this.event = new Event(option.eventDispatcher, option.mode);\n this.interaction = option.interaction;\n this.initConfig(option.mode);\n }\n\n setStateKeys(fields: string[]): void {\n this._fields = [...fields];\n }\n\n registerMark(mark: IMark): void {\n this._marks.addMark(mark);\n if (this._hover.enable) {\n this.interaction.registerMark(STATE_VALUE_ENUM.STATE_HOVER, mark);\n }\n if (this._select.enable) {\n this.interaction.registerMark(STATE_VALUE_ENUM.STATE_SELECTED, mark);\n }\n }\n\n init(): void {\n this.initEvent();\n }\n\n release(): void {\n this.releaseEvent();\n this._marks.clear();\n }\n\n // event\n protected initEvent() {\n const event = this.event;\n const { enable: hoverEnable, trigger: hoverTrigger, triggerOff: hoverTriggerOff } = this._hover;\n const { enable: selectEnable, trigger: selectTrigger, triggerOff: selectTriggerOff } = this._select;\n if (hoverEnable) {\n // 进行 hover 交互相关的事件绑定\n array(hoverTrigger).forEach(trigger => {\n event.on(trigger, { level: Event_Bubble_Level.chart }, this.onHover as EventCallback<EventParams>);\n });\n if (hoverTriggerOff && hoverTriggerOff !== 'none') {\n array(hoverTriggerOff).forEach(trigger => {\n event.on(\n trigger,\n { level: Event_Bubble_Level.vchart, source: Event_Source_Type.chart },\n this.onUnHover as EventCallback<EventParams>\n );\n });\n }\n }\n\n if (selectEnable) {\n // 进行 select 交互相关的事件绑定\n array(selectTrigger).forEach(trigger => {\n event.on(trigger, { level: Event_Bubble_Level.mark }, this.onSelect as EventCallback<EventParams>);\n });\n if (selectTriggerOff && selectTriggerOff !== 'none') {\n array(selectTriggerOff).forEach(trigger => {\n event.on(trigger, { level: Event_Bubble_Level.mark }, this.onUnSelect as EventCallback<EventParams>);\n });\n }\n // default triggerOff: active without mark , unselected\n if (!selectTriggerOff) {\n array(selectTriggerOff ?? selectTrigger).forEach(trigger => {\n event.on(trigger, { level: Event_Bubble_Level.vchart }, this.onUnSelect as EventCallback<EventParams>);\n });\n }\n }\n }\n\n protected releaseEvent(): void {\n this.event.release();\n }\n\n private initConfig(mode: RenderMode): void {\n const defaultConfig = getDefaultInteractionConfigByMode(mode);\n this._hover = { ...defaultConfig?.hover };\n this._select = { ...defaultConfig?.select };\n\n const hoverSpec = this._spec.hover;\n if (isBoolean(hoverSpec)) {\n this._hover.enable = hoverSpec;\n } else if (isObject(hoverSpec)) {\n this._hover.enable = true;\n this._hover = mergeSpec(this._hover, hoverSpec);\n }\n\n const selectSpec = this._spec.select;\n if (isBoolean(selectSpec)) {\n this._select.enable = selectSpec;\n } else if (isObject(selectSpec)) {\n this._select.enable = true;\n this._select = mergeSpec(this._select, selectSpec);\n }\n }\n\n private onHover = (params: BaseEventParams) => {\n if (this.filterEventMark(params)) {\n this.hoverItem(params);\n }\n };\n\n private onUnHover = (params: BaseEventParams) => {\n if (this.filterEventMark(params) || this.interaction.filterEventMark(params, STATE_VALUE_ENUM.STATE_HOVER)) {\n return;\n }\n if (this.interaction.getEventElement(STATE_VALUE_ENUM.STATE_HOVER)[0]) {\n this.unhoverItem();\n }\n };\n\n private onSelect = (params: BaseEventParams) => {\n this.handleSingleEventSelect(params);\n };\n\n private onUnSelect = (params: BaseEventParams) => {\n if (!this.interaction.filterEventMark(params, STATE_VALUE_ENUM.STATE_SELECTED)) {\n this.clearSelectedItems();\n }\n };\n\n // hover\n protected hoverItem(params: BaseEventParams): void {\n const { datum } = params;\n const lastEl = this.interaction.getEventElement(STATE_VALUE_ENUM.STATE_HOVER)[0];\n if (params.item === lastEl) {\n return;\n }\n this.interaction.exchangeEventElement(STATE_VALUE_ENUM.STATE_HOVER, params.item);\n this.interaction.reverseEventElement(STATE_VALUE_ENUM.STATE_HOVER);\n this.event.emit('hovered', {\n model: this._option.model,\n value: [datum]\n });\n }\n\n protected unhoverItem(): void {\n const lastHoveredDatums = this.interaction.getEventElementData(STATE_VALUE_ENUM.STATE_HOVER);\n this.interaction.clearEventElement(STATE_VALUE_ENUM.STATE_HOVER, true);\n\n this.event.emit('unhovered', {\n model: this._option.model,\n value: lastHoveredDatums\n });\n }\n\n protected handleSingleEventHover(params: BaseEventParams): void {\n if (this.filterEventMark(params)) {\n this.hoverItem(params);\n } else if (\n this.interaction.getEventElement(STATE_VALUE_ENUM.STATE_HOVER)[0] &&\n !this.interaction.filterEventMark(params, STATE_VALUE_ENUM.STATE_HOVER)\n ) {\n this.unhoverItem();\n }\n }\n\n // select\n protected selectItems(datums: any[]): void {\n this.event.emit('selected', {\n model: this._option.model,\n value: datums\n });\n }\n\n protected clearSelectedItems() {\n const lastSelectedItem = this.interaction.getEventElementData(STATE_VALUE_ENUM.STATE_SELECTED);\n this.interaction.clearEventElement(STATE_VALUE_ENUM.STATE_SELECTED, true);\n\n this.event.emit('unselected', {\n model: this._option.model,\n value: lastSelectedItem\n });\n }\n\n protected unselectItems(params: BaseEventParams): void {\n this.interaction.removeEventElement(STATE_VALUE_ENUM.STATE_SELECTED, params.item);\n this.event.emit('unselected', {\n model: this._option.model,\n value: params.item\n });\n }\n\n protected handleSingleEventSelect(params: BaseEventParams): void {\n if (this.filterEventMark(params)) {\n if (params.item.getStates().includes(STATE_VALUE_ENUM.STATE_SELECTED)) {\n this.unselectItems(params);\n } else {\n switch (this._select.mode) {\n case 'multiple':\n this.interaction.addEventElement(STATE_VALUE_ENUM.STATE_SELECTED, params.item);\n break;\n case 'single':\n default:\n this.interaction.exchangeEventElement(STATE_VALUE_ENUM.STATE_SELECTED, params.item);\n }\n this.interaction.reverseEventElement(STATE_VALUE_ENUM.STATE_SELECTED);\n const items = this.interaction.getEventElementData(STATE_VALUE_ENUM.STATE_SELECTED);\n this.selectItems(items);\n }\n } else if (\n // 不做已选内容的判断,因为选中的元素可能由用户 API 控制\n // this._selectedItems.length > 0 &&\n !this.interaction.filterEventMark(params, STATE_VALUE_ENUM.STATE_SELECTED)\n ) {\n this.clearSelectedItems();\n }\n }\n\n // util\n protected filterEventMark(params: BaseEventParams): boolean {\n return !!(params.mark && this._marks.includes(params.mark));\n }\n\n protected isDatumEqual(datumA: any, datumB: any): boolean {\n const fields = this._fields ? this._fields : Object.keys(datumA);\n return fields.every(f => datumA[f] === datumB[f]);\n }\n}\n"]}
|
|
@@ -11,11 +11,11 @@ const vutils_1 = require("@visactor/vutils"), spec_1 = require("../../typings/sp
|
|
|
11
11
|
|
|
12
12
|
class Zoomable {
|
|
13
13
|
initZoomable(evt, mode = spec_1.RenderModeEnum["desktop-browser"]) {
|
|
14
|
-
this._eventObj = evt, this._renderMode = mode, config_1.
|
|
14
|
+
this._eventObj = evt, this._renderMode = mode, (0, config_1.getDefaultTriggerEventByMode)(this._renderMode) && (this._clickEnable = !0,
|
|
15
15
|
this._zoomableTrigger = new (this._getTriggerEvent("trigger")));
|
|
16
16
|
}
|
|
17
17
|
_getTriggerEvent(type) {
|
|
18
|
-
return config_1.
|
|
18
|
+
return (0, config_1.getDefaultTriggerEventByMode)(this._renderMode)[type];
|
|
19
19
|
}
|
|
20
20
|
_zoomEventDispatch(params, regionOrSeries, callback) {
|
|
21
21
|
if (!params.event) return;
|
|
@@ -55,10 +55,10 @@ class Zoomable {
|
|
|
55
55
|
}), delayTime));
|
|
56
56
|
}
|
|
57
57
|
initZoomEventOfSeries(s, callback, option) {
|
|
58
|
-
config_1.
|
|
58
|
+
(0, config_1.getDefaultTriggerEventByMode)(this._renderMode) && this._bindZoomEventAsRegion(s.event, s, callback, option);
|
|
59
59
|
}
|
|
60
60
|
initZoomEventOfRegions(regions, filter, callback, option) {
|
|
61
|
-
config_1.
|
|
61
|
+
(0, config_1.getDefaultTriggerEventByMode)(this._renderMode) && regions.forEach((r => {
|
|
62
62
|
filter ? r.getSeries().forEach((s => {
|
|
63
63
|
filter(s) && this._bindZoomEventAsRegion(s.event, s, callback, option);
|
|
64
64
|
})) : this._bindZoomEventAsRegion(this._eventObj, r, callback, option);
|
|
@@ -98,10 +98,10 @@ class Zoomable {
|
|
|
98
98
|
}), delayTime));
|
|
99
99
|
}
|
|
100
100
|
initScrollEventOfSeries(s, callback, option) {
|
|
101
|
-
config_1.
|
|
101
|
+
(0, config_1.getDefaultTriggerEventByMode)(this._renderMode) && this._bindScrollEventAsRegion(s.event, s, callback, option);
|
|
102
102
|
}
|
|
103
103
|
initScrollEventOfRegions(regions, filter, callback, option) {
|
|
104
|
-
config_1.
|
|
104
|
+
(0, config_1.getDefaultTriggerEventByMode)(this._renderMode) && regions.forEach((r => {
|
|
105
105
|
filter ? r.getSeries().forEach((s => {
|
|
106
106
|
filter(s) && this._bindScrollEventAsRegion(s.event, s, callback, option);
|
|
107
107
|
})) : this._bindScrollEventAsRegion(this._eventObj, r, callback, option);
|
|
@@ -122,7 +122,7 @@ class Zoomable {
|
|
|
122
122
|
}, (() => !this._clickEnable));
|
|
123
123
|
}
|
|
124
124
|
initDragEventOfSeries(s, callback, option) {
|
|
125
|
-
config_1.
|
|
125
|
+
(0, config_1.getDefaultTriggerEventByMode)(this._renderMode) && s.event.on(this._getTriggerEvent("start"), {
|
|
126
126
|
level: constant_1.Event_Bubble_Level.model,
|
|
127
127
|
filter: ({model: model}) => (null == model ? void 0 : model.id) === s.id
|
|
128
128
|
}, (params => {
|
|
@@ -130,7 +130,7 @@ class Zoomable {
|
|
|
130
130
|
}));
|
|
131
131
|
}
|
|
132
132
|
initDragEventOfRegions(regions, filter, callback, option) {
|
|
133
|
-
config_1.
|
|
133
|
+
(0, config_1.getDefaultTriggerEventByMode)(this._renderMode) && regions.forEach((r => {
|
|
134
134
|
filter ? r.getSeries().forEach((s => {
|
|
135
135
|
filter(s) && (s.event.on(this._getTriggerEvent("start"), {
|
|
136
136
|
level: constant_1.Event_Bubble_Level.model,
|