@visactor/vchart 1.1.0-beta.3 → 1.1.0-beta.5
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/index.js +489 -389
- package/build/index.min.js +2 -2
- package/cjs/chart/base-chart.d.ts +3 -1
- package/cjs/chart/base-chart.js +34 -1
- package/cjs/chart/base-chart.js.map +1 -1
- package/cjs/chart/box-plot/box-plot.js +3 -8
- package/cjs/chart/box-plot/box-plot.js.map +1 -1
- package/cjs/chart/interface/chart.d.ts +10 -1
- package/cjs/chart/interface/chart.js.map +1 -1
- package/cjs/component/axis/base-axis.js +1 -14
- package/cjs/component/axis/base-axis.js.map +1 -1
- package/cjs/component/axis/interface.d.ts +1 -0
- package/cjs/component/axis/interface.js.map +1 -1
- package/cjs/component/axis/mixin/band-axis-mixin.d.ts +16 -0
- package/cjs/component/axis/mixin/band-axis-mixin.js +15 -1
- package/cjs/component/axis/mixin/band-axis-mixin.js.map +1 -1
- package/cjs/component/crosshair/cartesian.d.ts +2 -0
- package/cjs/component/crosshair/cartesian.js +11 -2
- package/cjs/component/crosshair/cartesian.js.map +1 -1
- package/cjs/component/crosshair/interface/spec.d.ts +6 -1
- package/cjs/component/crosshair/interface/spec.js.map +1 -1
- package/cjs/component/tooltip/handler/base.js.map +1 -1
- package/cjs/component/tooltip/handler/constants.d.ts +1 -1
- package/cjs/component/tooltip/handler/constants.js +2 -2
- package/cjs/component/tooltip/handler/constants.js.map +1 -1
- package/cjs/component/tooltip/handler/dom/dom-tooltip-handler.js +8 -8
- package/cjs/component/tooltip/handler/dom/dom-tooltip-handler.js.map +1 -1
- package/cjs/component/tooltip/handler/dom/interface.d.ts +3 -0
- package/cjs/component/tooltip/handler/dom/interface.js.map +1 -1
- package/cjs/component/tooltip/handler/dom/model/base-tooltip-model.d.ts +0 -1
- package/cjs/component/tooltip/handler/dom/model/base-tooltip-model.js +4 -2
- package/cjs/component/tooltip/handler/dom/model/base-tooltip-model.js.map +1 -1
- package/cjs/component/tooltip/handler/dom/model/content-column-model.d.ts +3 -0
- package/cjs/component/tooltip/handler/dom/model/content-column-model.js +34 -33
- package/cjs/component/tooltip/handler/dom/model/content-column-model.js.map +1 -1
- package/cjs/component/tooltip/handler/dom/model/interface.d.ts +2 -0
- package/cjs/component/tooltip/handler/dom/model/interface.js.map +1 -1
- package/cjs/component/tooltip/handler/dom/model/shape-model.d.ts +1 -0
- package/cjs/component/tooltip/handler/dom/model/shape-model.js +3 -3
- package/cjs/component/tooltip/handler/dom/model/shape-model.js.map +1 -1
- package/cjs/component/tooltip/handler/dom/model/text-model.d.ts +1 -1
- package/cjs/component/tooltip/handler/dom/model/text-model.js +3 -2
- package/cjs/component/tooltip/handler/dom/model/text-model.js.map +1 -1
- package/cjs/component/tooltip/handler/dom/model/title-model.js +3 -3
- package/cjs/component/tooltip/handler/dom/model/title-model.js.map +1 -1
- package/cjs/component/tooltip/handler/dom/util.d.ts +1 -0
- package/cjs/component/tooltip/handler/dom/util.js +28 -27
- package/cjs/component/tooltip/handler/dom/util.js.map +1 -1
- package/cjs/component/tooltip/handler/interface/style.d.ts +10 -7
- package/cjs/component/tooltip/handler/interface/style.js.map +1 -1
- package/cjs/component/tooltip/handler/utils/attribute.d.ts +9 -2
- package/cjs/component/tooltip/handler/utils/attribute.js +58 -9
- package/cjs/component/tooltip/handler/utils/attribute.js.map +1 -1
- package/cjs/component/tooltip/handler/utils/common.js.map +1 -1
- package/cjs/component/tooltip/handler/utils/style.d.ts +2 -2
- package/cjs/component/tooltip/handler/utils/style.js +5 -2
- package/cjs/component/tooltip/handler/utils/style.js.map +1 -1
- package/cjs/component/tooltip/interface/common.d.ts +6 -0
- package/cjs/component/tooltip/interface/common.js.map +1 -1
- package/cjs/component/tooltip/interface/theme.d.ts +4 -0
- package/cjs/component/tooltip/interface/theme.js.map +1 -1
- package/cjs/component/tooltip/tooltip.d.ts +3 -2
- package/cjs/component/tooltip/tooltip.js +8 -4
- package/cjs/component/tooltip/tooltip.js.map +1 -1
- package/cjs/component/tooltip/utils/show-tooltip.js +9 -4
- package/cjs/component/tooltip/utils/show-tooltip.js.map +1 -1
- package/cjs/constant/scatter.js +1 -2
- package/cjs/core/factory.js +2 -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/core/instance-manager.d.ts +2 -1
- package/cjs/core/instance-manager.js +7 -2
- package/cjs/core/instance-manager.js.map +1 -1
- package/cjs/core/interface.d.ts +3 -0
- package/cjs/core/interface.js.map +1 -1
- package/cjs/core/vchart.d.ts +5 -3
- package/cjs/core/vchart.js +9 -3
- package/cjs/core/vchart.js.map +1 -1
- package/cjs/data/transforms/legend-data/discrete/discrete.js +3 -3
- package/cjs/data/transforms/legend-data/discrete/discrete.js.map +1 -1
- package/cjs/event/event.d.ts +5 -1
- package/cjs/event/event.js +3 -0
- package/cjs/event/event.js.map +1 -1
- package/cjs/event/events/dimension/base.d.ts +4 -0
- package/cjs/event/events/dimension/base.js +16 -1
- package/cjs/event/events/dimension/base.js.map +1 -1
- package/cjs/event/events/dimension/util/cartesian.d.ts +4 -0
- package/cjs/event/events/dimension/util/cartesian.js +37 -46
- package/cjs/event/events/dimension/util/cartesian.js.map +1 -1
- package/cjs/event/interface.d.ts +5 -0
- package/cjs/event/interface.js.map +1 -1
- package/cjs/interaction/dimension-trigger.js +3 -3
- package/cjs/interaction/dimension-trigger.js.map +1 -1
- package/cjs/util/env.d.ts +1 -0
- package/cjs/util/env.js +3 -2
- package/cjs/util/env.js.map +1 -1
- package/cjs/util/text.d.ts +4 -0
- package/cjs/util/text.js +9 -1
- package/cjs/util/text.js.map +1 -1
- package/esm/chart/base-chart.d.ts +3 -1
- package/esm/chart/base-chart.js +35 -0
- package/esm/chart/base-chart.js.map +1 -1
- package/esm/chart/box-plot/box-plot.js +2 -9
- package/esm/chart/box-plot/box-plot.js.map +1 -1
- package/esm/chart/interface/chart.d.ts +10 -1
- package/esm/chart/interface/chart.js.map +1 -1
- package/esm/component/axis/base-axis.js +1 -14
- package/esm/component/axis/base-axis.js.map +1 -1
- package/esm/component/axis/interface.d.ts +1 -0
- package/esm/component/axis/interface.js.map +1 -1
- package/esm/component/axis/mixin/band-axis-mixin.d.ts +16 -0
- package/esm/component/axis/mixin/band-axis-mixin.js +16 -0
- package/esm/component/axis/mixin/band-axis-mixin.js.map +1 -1
- package/esm/component/crosshair/cartesian.d.ts +2 -0
- package/esm/component/crosshair/cartesian.js +12 -1
- package/esm/component/crosshair/cartesian.js.map +1 -1
- package/esm/component/crosshair/interface/spec.d.ts +6 -1
- package/esm/component/crosshair/interface/spec.js.map +1 -1
- package/esm/component/tooltip/handler/base.js.map +1 -1
- package/esm/component/tooltip/handler/constants.d.ts +1 -1
- package/esm/component/tooltip/handler/constants.js +1 -1
- package/esm/component/tooltip/handler/constants.js.map +1 -1
- package/esm/component/tooltip/handler/dom/dom-tooltip-handler.js +5 -5
- package/esm/component/tooltip/handler/dom/dom-tooltip-handler.js.map +1 -1
- package/esm/component/tooltip/handler/dom/interface.d.ts +3 -0
- package/esm/component/tooltip/handler/dom/interface.js.map +1 -1
- package/esm/component/tooltip/handler/dom/model/base-tooltip-model.d.ts +0 -1
- package/esm/component/tooltip/handler/dom/model/base-tooltip-model.js +1 -1
- package/esm/component/tooltip/handler/dom/model/base-tooltip-model.js.map +1 -1
- package/esm/component/tooltip/handler/dom/model/content-column-model.d.ts +3 -0
- package/esm/component/tooltip/handler/dom/model/content-column-model.js +33 -31
- package/esm/component/tooltip/handler/dom/model/content-column-model.js.map +1 -1
- package/esm/component/tooltip/handler/dom/model/interface.d.ts +2 -0
- package/esm/component/tooltip/handler/dom/model/interface.js.map +1 -1
- package/esm/component/tooltip/handler/dom/model/shape-model.d.ts +1 -0
- package/esm/component/tooltip/handler/dom/model/shape-model.js +3 -3
- package/esm/component/tooltip/handler/dom/model/shape-model.js.map +1 -1
- package/esm/component/tooltip/handler/dom/model/text-model.d.ts +1 -1
- package/esm/component/tooltip/handler/dom/model/text-model.js +3 -2
- package/esm/component/tooltip/handler/dom/model/text-model.js.map +1 -1
- package/esm/component/tooltip/handler/dom/model/title-model.js +3 -3
- package/esm/component/tooltip/handler/dom/model/title-model.js.map +1 -1
- package/esm/component/tooltip/handler/dom/util.d.ts +1 -0
- package/esm/component/tooltip/handler/dom/util.js +8 -5
- package/esm/component/tooltip/handler/dom/util.js.map +1 -1
- package/esm/component/tooltip/handler/interface/style.d.ts +10 -7
- package/esm/component/tooltip/handler/interface/style.js.map +1 -1
- package/esm/component/tooltip/handler/utils/attribute.d.ts +9 -2
- package/esm/component/tooltip/handler/utils/attribute.js +56 -8
- package/esm/component/tooltip/handler/utils/attribute.js.map +1 -1
- package/esm/component/tooltip/handler/utils/common.js.map +1 -1
- package/esm/component/tooltip/handler/utils/style.d.ts +2 -2
- package/esm/component/tooltip/handler/utils/style.js +5 -2
- package/esm/component/tooltip/handler/utils/style.js.map +1 -1
- package/esm/component/tooltip/interface/common.d.ts +6 -0
- package/esm/component/tooltip/interface/common.js.map +1 -1
- package/esm/component/tooltip/interface/theme.d.ts +4 -0
- package/esm/component/tooltip/interface/theme.js.map +1 -1
- package/esm/component/tooltip/tooltip.d.ts +3 -2
- package/esm/component/tooltip/tooltip.js +10 -4
- package/esm/component/tooltip/tooltip.js.map +1 -1
- package/esm/component/tooltip/utils/show-tooltip.js +9 -4
- package/esm/component/tooltip/utils/show-tooltip.js.map +1 -1
- package/esm/constant/scatter.js +1 -2
- package/esm/core/factory.js +2 -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/core/instance-manager.d.ts +2 -1
- package/esm/core/instance-manager.js +7 -2
- package/esm/core/instance-manager.js.map +1 -1
- package/esm/core/interface.d.ts +3 -0
- package/esm/core/interface.js.map +1 -1
- package/esm/core/vchart.d.ts +5 -3
- package/esm/core/vchart.js +9 -3
- package/esm/core/vchart.js.map +1 -1
- package/esm/data/transforms/legend-data/discrete/discrete.js +3 -3
- package/esm/data/transforms/legend-data/discrete/discrete.js.map +1 -1
- package/esm/event/event.d.ts +5 -1
- package/esm/event/event.js +3 -0
- package/esm/event/event.js.map +1 -1
- package/esm/event/events/dimension/base.d.ts +4 -0
- package/esm/event/events/dimension/base.js +18 -1
- package/esm/event/events/dimension/base.js.map +1 -1
- package/esm/event/events/dimension/util/cartesian.d.ts +4 -0
- package/esm/event/events/dimension/util/cartesian.js +32 -44
- package/esm/event/events/dimension/util/cartesian.js.map +1 -1
- package/esm/event/interface.d.ts +5 -0
- package/esm/event/interface.js.map +1 -1
- package/esm/interaction/dimension-trigger.js +2 -4
- package/esm/interaction/dimension-trigger.js.map +1 -1
- package/esm/util/env.d.ts +1 -0
- package/esm/util/env.js +2 -0
- package/esm/util/env.js.map +1 -1
- package/esm/util/text.d.ts +4 -0
- package/esm/util/text.js +7 -1
- package/esm/util/text.js.map +1 -1
- package/package.json +7 -7
|
@@ -1,6 +1,8 @@
|
|
|
1
|
+
import type { IModel } from './../../../model/interface';
|
|
1
2
|
import type { DimensionEventParams } from '../../../event/events/dimension/interface';
|
|
2
3
|
import type { BaseEventParams } from '../../../event/interface';
|
|
3
4
|
import type { DimensionTooltipInfo, MarkTooltipInfo } from '../processor/interface';
|
|
5
|
+
import type { Datum, IShowTooltipOption } from '../../../typings';
|
|
4
6
|
export type TooltipHandlerParams = (BaseEventParams | DimensionEventParams) & {
|
|
5
7
|
changePositionOnly?: boolean;
|
|
6
8
|
};
|
|
@@ -16,3 +18,7 @@ export declare enum TooltipResult {
|
|
|
16
18
|
success = 0,
|
|
17
19
|
failed = 1
|
|
18
20
|
}
|
|
21
|
+
export interface ITooltip extends IModel {
|
|
22
|
+
getVisible: () => boolean;
|
|
23
|
+
showTooltip: (datum: Datum, options: IShowTooltipOption) => void;
|
|
24
|
+
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/component/tooltip/interface/common.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"sources":["../src/component/tooltip/interface/common.ts"],"names":[],"mappings":";;;AAoBA,IAAY,aAKX;AALD,WAAY,aAAa;IAEvB,uDAAW,CAAA;IAEX,qDAAU,CAAA;AACZ,CAAC,EALW,aAAa,GAAb,qBAAa,KAAb,qBAAa,QAKxB","file":"common.js","sourcesContent":["import type { IModel } from './../../../model/interface';\nimport type { DimensionEventParams } from '../../../event/events/dimension/interface';\nimport type { BaseEventParams } from '../../../event/interface';\nimport type { DimensionTooltipInfo, MarkTooltipInfo } from '../processor/interface';\nimport type { Datum, IShowTooltipOption } from '../../../typings';\n\nexport type TooltipHandlerParams = (BaseEventParams | DimensionEventParams) & {\n changePositionOnly?: boolean;\n};\n\nexport interface ITooltipActiveTypeAsKeys<T, K> {\n mark: T;\n dimension: K;\n}\n\nexport type TotalMouseEventData = {\n tooltipInfo: Partial<ITooltipActiveTypeAsKeys<MarkTooltipInfo, DimensionTooltipInfo>>;\n ignore: Partial<ITooltipActiveTypeAsKeys<boolean, boolean>>;\n};\n\nexport enum TooltipResult {\n /** tooltip 显示成功 */\n success = 0,\n /** tooltip 未成功显示 */\n failed = 1\n}\n\nexport interface ITooltip extends IModel {\n getVisible: () => boolean;\n showTooltip: (datum: Datum, options: IShowTooltipOption) => void;\n}\n"]}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { RichTextWordBreak } from '@visactor/vrender';
|
|
1
2
|
import type { IPadding, StringOrNumber, TextAlign, TextBaseLine } from '../../../typings';
|
|
2
3
|
export interface ITooltipTextTheme {
|
|
3
4
|
fontFamily?: string;
|
|
@@ -8,6 +9,9 @@ export interface ITooltipTextTheme {
|
|
|
8
9
|
textBaseline?: TextBaseLine;
|
|
9
10
|
lineHeight?: number;
|
|
10
11
|
spacing?: number;
|
|
12
|
+
multiLine?: boolean;
|
|
13
|
+
maxWidth?: number;
|
|
14
|
+
wordBreak?: RichTextWordBreak;
|
|
11
15
|
}
|
|
12
16
|
export interface ITooltipTheme {
|
|
13
17
|
panel?: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/component/tooltip/interface/theme.ts"],"names":[],"mappings":"","file":"theme.js","sourcesContent":["import type { IPadding, StringOrNumber, TextAlign, TextBaseLine } from '../../../typings';\n\nexport interface ITooltipTextTheme {\n /** 字体 */\n fontFamily?: string;\n /** 字体大小 */\n fontSize?: number;\n /** 字体颜色 */\n fontColor?: string;\n /** 字重 */\n fontWeight?: StringOrNumber;\n /** 对齐方式 */\n textAlign?: TextAlign;\n /** 字体基线 */\n textBaseline?: TextBaseLine;\n /** 行高 */\n lineHeight?: number;\n /** 与相邻元素的水平间距 */\n spacing?: number;\n}\n\nexport interface ITooltipTheme {\n /** 容器样式配置 */\n panel?: {\n /** tooltip 容器内边距 */\n padding?: IPadding;\n /** 背景色 */\n backgroundColor?: string;\n /** tooltip边框 */\n border?: {\n color?: string;\n width?: number;\n /** 圆角 */\n radius?: number;\n };\n /** tooltip阴影 */\n shadow?: {\n x: number;\n y: number;\n blur: number;\n spread: number;\n color: string;\n };\n };\n shape?: {\n /** 标记大小 */\n size?: number;\n /** shape 与相邻元素的水平间距 */\n spacing?: number;\n };\n /** tooltip标题 */\n titleLabel?: ITooltipTextTheme;\n /** tooltip内容,key字段 */\n keyLabel?: ITooltipTextTheme;\n /** tooltip内容,value字段 */\n valueLabel?: ITooltipTextTheme;\n /** 内容项行间距 */\n spaceRow?: number;\n /** 最大宽度 */\n maxWidth?: number;\n /** 最小宽度 */\n minWidth?: number;\n /** 偏移量 */\n offset?: {\n x?: number;\n y?: number;\n };\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/component/tooltip/interface/theme.ts"],"names":[],"mappings":"","file":"theme.js","sourcesContent":["import type { RichTextWordBreak } from '@visactor/vrender';\nimport type { IPadding, StringOrNumber, TextAlign, TextBaseLine } from '../../../typings';\n\nexport interface ITooltipTextTheme {\n /** 字体 */\n fontFamily?: string;\n /** 字体大小 */\n fontSize?: number;\n /** 字体颜色 */\n fontColor?: string;\n /** 字重 */\n fontWeight?: StringOrNumber;\n /** 对齐方式 */\n textAlign?: TextAlign;\n /** 字体基线 */\n textBaseline?: TextBaseLine;\n /** 行高 */\n lineHeight?: number;\n /** 与相邻元素的水平间距 */\n spacing?: number;\n /** 是否支持换行 */\n multiLine?: boolean;\n /** 最大宽度 */\n maxWidth?: number;\n /** 换行模式,默认为'break-word' */\n wordBreak?: RichTextWordBreak;\n}\n\nexport interface ITooltipTheme {\n /** 容器样式配置 */\n panel?: {\n /** tooltip 容器内边距 */\n padding?: IPadding;\n /** 背景色 */\n backgroundColor?: string;\n /** tooltip边框 */\n border?: {\n color?: string;\n width?: number;\n /** 圆角 */\n radius?: number;\n };\n /** tooltip阴影 */\n shadow?: {\n x: number;\n y: number;\n blur: number;\n spread: number;\n color: string;\n };\n };\n shape?: {\n /** 标记大小 */\n size?: number;\n /** shape 与相邻元素的水平间距 */\n spacing?: number;\n };\n /** tooltip标题 */\n titleLabel?: ITooltipTextTheme;\n /** tooltip内容,key字段 */\n keyLabel?: ITooltipTextTheme;\n /** tooltip内容,value字段 */\n valueLabel?: ITooltipTextTheme;\n /** 内容项行间距 */\n spaceRow?: number;\n /** 最大宽度 */\n maxWidth?: number;\n /** 最小宽度 */\n minWidth?: number;\n /** 偏移量 */\n offset?: {\n x?: number;\n y?: number;\n };\n}\n"]}
|
|
@@ -6,13 +6,13 @@ import { BaseComponent } from '../base';
|
|
|
6
6
|
import type { BaseEventParams, EventCallback, EventQuery, EventType } from '../../event/interface';
|
|
7
7
|
import type { ITooltipHandler, IToolTipLineActual, TooltipActiveType } from '../../typings/tooltip';
|
|
8
8
|
import type { Datum, IShowTooltipOption } from '../../typings';
|
|
9
|
-
import type { ITooltipActiveTypeAsKeys, ITooltipSpec, ITooltipTheme, TooltipHandlerParams, TotalMouseEventData } from './interface';
|
|
9
|
+
import type { ITooltip, ITooltipActiveTypeAsKeys, ITooltipSpec, ITooltipTheme, TooltipHandlerParams, TotalMouseEventData } from './interface';
|
|
10
10
|
import { MarkTooltipProcessor, DimensionTooltipProcessor } from './processor';
|
|
11
11
|
export type TooltipContent = {
|
|
12
12
|
title?: IToolTipLineActual;
|
|
13
13
|
content?: IToolTipLineActual[];
|
|
14
14
|
};
|
|
15
|
-
export declare class Tooltip extends BaseComponent {
|
|
15
|
+
export declare class Tooltip extends BaseComponent implements ITooltip {
|
|
16
16
|
static type: ComponentTypeEnum;
|
|
17
17
|
type: ComponentTypeEnum;
|
|
18
18
|
name: string;
|
|
@@ -51,4 +51,5 @@ export declare class Tooltip extends BaseComponent {
|
|
|
51
51
|
private _isSameAsCacheInfo;
|
|
52
52
|
private _isPointerInChart;
|
|
53
53
|
private _isPointerOnTooltip;
|
|
54
|
+
getVisible(): boolean;
|
|
54
55
|
}
|
|
@@ -4,7 +4,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: !0
|
|
5
5
|
}), exports.Tooltip = void 0;
|
|
6
6
|
|
|
7
|
-
const interface_1 = require("../interface"), base_1 = require("../base"), handler_1 = require("./handler"), util_1 = require("../../util"), constants_1 = require("./handler/constants"), utils_1 = require("./utils"), util_2 = require("../../event/events/dimension/util"), constant_1 = require("../../constant"), processor_1 = require("./processor"), vutils_1 = require("@visactor/vutils");
|
|
7
|
+
const interface_1 = require("../interface"), base_1 = require("../base"), handler_1 = require("./handler"), util_1 = require("../../util"), constants_1 = require("./handler/constants"), utils_1 = require("./utils"), util_2 = require("../../event/events/dimension/util"), constant_1 = require("../../constant"), processor_1 = require("./processor"), vutils_1 = require("@visactor/vutils"), vchart_1 = require("../../core/vchart");
|
|
8
8
|
|
|
9
9
|
class Tooltip extends base_1.BaseComponent {
|
|
10
10
|
constructor() {
|
|
@@ -47,7 +47,9 @@ class Tooltip extends base_1.BaseComponent {
|
|
|
47
47
|
const tooltipInfo = mouseEventData.tooltipInfo[activeType], isSameAsCache = this._isSameAsCacheInfo(tooltipInfo);
|
|
48
48
|
success = !processor.showTooltip(tooltipInfo, params, isSameAsCache), success && (this._cacheInfo = tooltipInfo);
|
|
49
49
|
}
|
|
50
|
-
|
|
50
|
+
const vchart = this._option.globalInstance;
|
|
51
|
+
return success && vchart_1.VChart.globalConfig.uniqueTooltip && vchart_1.VChart.hideTooltip(vchart.id),
|
|
52
|
+
success;
|
|
51
53
|
}, this._getMouseEventData = params => {
|
|
52
54
|
const result = {
|
|
53
55
|
tooltipInfo: {},
|
|
@@ -131,7 +133,6 @@ class Tooltip extends base_1.BaseComponent {
|
|
|
131
133
|
super.reInit(theme), null === (_b = null === (_a = this.tooltipHandler) || void 0 === _a ? void 0 : _a.reInit) || void 0 === _b || _b.call(_a);
|
|
132
134
|
}
|
|
133
135
|
setAttrFromSpec() {
|
|
134
|
-
var _a;
|
|
135
136
|
super.setAttrFromSpec();
|
|
136
137
|
const userSpec = this._spec;
|
|
137
138
|
this._spec = Object.assign(Object.assign({}, userSpec), {
|
|
@@ -152,7 +153,7 @@ class Tooltip extends base_1.BaseComponent {
|
|
|
152
153
|
util_1.cloneDeep)(userSpec.dimension)), {
|
|
153
154
|
activeType: "dimension"
|
|
154
155
|
})), (0, util_1.isValid)(userSpec.parentElement) ? this._spec.parentElement = userSpec.parentElement : (0,
|
|
155
|
-
util_1.isTrueBrowser)(this._option.mode) && (this._spec.parentElement = null ===
|
|
156
|
+
util_1.isTrueBrowser)(this._option.mode) && (this._spec.parentElement = null === util_1.domDocument || void 0 === util_1.domDocument ? void 0 : util_1.domDocument.body),
|
|
156
157
|
(0, util_1.isValid)(userSpec.confine) ? this._spec.confine = userSpec.confine : this._spec.confine = "canvas" === this._spec.renderMode;
|
|
157
158
|
}
|
|
158
159
|
showTooltip(datum, options) {
|
|
@@ -206,6 +207,9 @@ class Tooltip extends base_1.BaseComponent {
|
|
|
206
207
|
}
|
|
207
208
|
return !1;
|
|
208
209
|
}
|
|
210
|
+
getVisible() {
|
|
211
|
+
return !0 === this._spec.visible;
|
|
212
|
+
}
|
|
209
213
|
}
|
|
210
214
|
|
|
211
215
|
exports.Tooltip = Tooltip, Tooltip.type = interface_1.ComponentTypeEnum.tooltip;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/component/tooltip/tooltip.ts"],"names":[],"mappings":"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","file":"tooltip.js","sourcesContent":["import type { IComponentOption } from '../interface';\n// eslint-disable-next-line no-duplicate-imports\nimport { ComponentTypeEnum } from '../interface';\nimport type { IModelLayoutOption, IModelRenderOption, ILayoutItem } from '../../model/interface';\nimport type { IRegion } from '../../region/interface';\nimport { BaseComponent } from '../base';\nimport type { BaseEventParams, EventCallback, EventQuery, EventType } from '../../event/interface';\nimport type { ITooltipHandler, IToolTipLineActual, TooltipActiveType } from '../../typings/tooltip';\nimport { DomTooltipHandler, CanvasTooltipHandler } from './handler';\nimport type { Datum, IPoint, IShowTooltipOption } from '../../typings';\nimport {\n cloneDeep,\n isArray,\n isValid,\n merge,\n isMobileLikeMode,\n isTrueBrowser,\n isNil,\n isMiniAppLikeMode\n} from '../../util';\nimport type {\n ITooltipActiveTypeAsKeys,\n ITooltipSpec,\n ITooltipTheme,\n TooltipHandlerParams,\n TotalMouseEventData\n} from './interface';\nimport { TOOLTIP_EL_CLASS_NAME } from './handler/constants';\n// eslint-disable-next-line no-duplicate-imports\nimport { getTooltipActualActiveType, showTooltip, isEmptyPos } from './utils';\nimport { isSameDimensionInfo } from '../../event/events/dimension/util';\nimport { Event_Bubble_Level, Event_Source_Type } from '../../constant';\nimport type { DimensionTooltipInfo, MarkTooltipInfo, TooltipInfo } from './processor';\n// eslint-disable-next-line no-duplicate-imports\nimport { isDimensionInfo, isMarkInfo, MarkTooltipProcessor, DimensionTooltipProcessor } from './processor';\nimport { getElementAbsolutePosition, getElementAbsoluteScrollOffset, hasParentElement } from '@visactor/vutils';\n\nexport type TooltipContent = {\n title?: IToolTipLineActual;\n content?: IToolTipLineActual[];\n};\n\ntype EventHandlerList = {\n eventType: EventType;\n handler: any;\n}[];\n\nexport class Tooltip extends BaseComponent {\n static type = ComponentTypeEnum.tooltip;\n type = ComponentTypeEnum.tooltip;\n name: string = ComponentTypeEnum.tooltip;\n\n layoutType: ILayoutItem['layoutType'] = 'absolute';\n\n static createComponent(spec: any, options: IComponentOption) {\n const tooltipSpec = spec.tooltip;\n if (!tooltipSpec) {\n return null;\n }\n if (!isArray(tooltipSpec)) {\n return new Tooltip(tooltipSpec, { ...options, specKey: 'tooltip' });\n }\n const tooltips: Tooltip[] = [];\n tooltipSpec.forEach((s: any, i: number) => {\n tooltips.push(new Tooltip(s, { ...options, specIndex: i, specKey: 'tooltip' }));\n });\n return tooltips;\n }\n\n tooltipHandler?: ITooltipHandler;\n\n private _alwaysShow: boolean = false;\n\n private _cacheInfo: TooltipInfo | undefined;\n\n private _eventList: EventHandlerList = [];\n\n protected declare _spec: ITooltipSpec;\n\n protected declare _theme: ITooltipTheme;\n\n protected _processor: ITooltipActiveTypeAsKeys<MarkTooltipProcessor, DimensionTooltipProcessor>;\n\n changeRegions(regions: IRegion[]) {\n /* do nothing */\n }\n protected _registerEvent() {\n /* do nothing */\n }\n protected _releaseEvent() {\n /* do nothing */\n }\n onLayout(ctx: IModelLayoutOption) {\n /* do nothing */\n }\n onLayoutEnd(ctx: IModelLayoutOption) {\n /* do nothing */\n }\n onRender(ctx: IModelRenderOption) {\n /* do nothing */\n }\n\n created() {\n super.created();\n this._regions = this._option.getAllRegions();\n // handler\n this._initHandler();\n // processor\n this._initProcessor();\n // event\n this._initEvent();\n }\n\n release() {\n super.release();\n\n this._eventList.forEach(({ eventType, handler }) => {\n this.event.off(eventType, handler);\n });\n this._eventList = [];\n this.tooltipHandler?.release?.();\n }\n\n protected _initHandler() {\n const renderMode = this._spec.renderMode ?? 'html';\n\n const userTooltipHandler = this._option.globalInstance.getTooltipHandlerByUser();\n if (userTooltipHandler) {\n this.tooltipHandler = userTooltipHandler;\n } else {\n // 构造内部默认 handler\n const Handler = renderMode === 'canvas' ? CanvasTooltipHandler : DomTooltipHandler;\n const id = `${this._spec.className}-${this._option.globalInstance.id ?? 0}-${this._option.specIndex ?? 0}`;\n this.tooltipHandler = new Handler(id, this);\n }\n }\n\n protected _initProcessor() {\n // 初始化 tooltip 类型\n this._processor = {\n mark: new MarkTooltipProcessor(this),\n dimension: new DimensionTooltipProcessor(this)\n };\n }\n\n protected _initEvent() {\n const trigger = this._spec.trigger ?? 'hover';\n // TODO: triggerOff完整支持\n // const triggerOff = this._spec.triggerOff ?? trigger;\n const mode = this._option.mode;\n\n if (trigger === 'hover') {\n this._mountEvent('pointermove', { level: Event_Bubble_Level.chart }, this._handleMouseMove);\n // 移动端的点按 + 滑动触发\n if (isMobileLikeMode(mode) || isMiniAppLikeMode(mode)) {\n this._mountEvent('pointerdown', { level: Event_Bubble_Level.chart }, this._handleMouseMove);\n this._mountEvent('pointerup', { source: 'window' }, this._handleMouseOut);\n }\n this._mountEvent('pointermove', { source: 'window' }, this._handleMouseOut);\n } else if (trigger === 'click') {\n this._mountEvent('pointertap', { level: Event_Bubble_Level.chart }, this._handleMouseMove);\n this._mountEvent('pointerup', { source: 'window' }, this._handleMouseOut);\n }\n }\n\n protected _mountEvent = (eType: EventType, query: EventQuery, callback: EventCallback<any>) => {\n this.event.on(eType, query, callback);\n this._eventList.push({\n eventType: eType,\n handler: callback\n });\n };\n\n protected _handleMouseOut = (params: BaseEventParams) => {\n if (this._alwaysShow) {\n return;\n }\n\n // 当 enterable 为 true,同时鼠标移入 tooltip 时 pointerleave 事件也会触发,所以这里做一个判断\n const { clientX, clientY } = params.event as MouseEvent;\n if (\n isTrueBrowser(this._option.mode) &&\n (this._isPointerInChart({ x: clientX, y: clientY }) || this._isPointerOnTooltip(params))\n ) {\n return;\n }\n\n this._handleChartMouseOut(params);\n };\n\n protected _handleChartMouseOut = (params: BaseEventParams) => {\n if (this._alwaysShow) {\n return;\n }\n\n if (this._spec.triggerOff !== 'none') {\n this._hideTooltipByHandler({\n ...params\n });\n this._cacheInfo = undefined;\n }\n };\n\n protected _handleMouseMove = (params: BaseEventParams) => {\n if (this._alwaysShow) {\n return;\n }\n if (this._isPointerOnTooltip(params)) {\n return;\n }\n\n /* 获取 tooltip 原始数据 */\n const mouseEventData = this._getMouseEventData(params);\n const {\n tooltipInfo: { dimension: dimensionInfo },\n ignore: { mark: ignoreMark, dimension: ignoreDimension }\n } = mouseEventData;\n\n let markTooltipSuccess: boolean = false;\n let dimensionTooltipSuccess: boolean = false;\n\n /* 显示常规tooltip */\n markTooltipSuccess = this._showTooltipByMouseEvent('mark', mouseEventData, params);\n if (!markTooltipSuccess) {\n dimensionTooltipSuccess = this._showTooltipByMouseEvent('dimension', mouseEventData, params);\n }\n\n /* 如果不是常规情况,进行一些特殊情况tooltip处理 */\n if (!markTooltipSuccess && !dimensionTooltipSuccess && !isEmptyPos(params)) {\n // 用户手动配置ignore,则继续显示缓存tooltip\n if (ignoreMark && isMarkInfo(this._cacheInfo)) {\n markTooltipSuccess = this._showTooltipByMouseEvent('mark', mouseEventData, params, true);\n } else if (ignoreDimension && isDimensionInfo(this._cacheInfo)) {\n dimensionTooltipSuccess = this._showTooltipByMouseEvent('dimension', mouseEventData, params, true);\n } else if (isValid(dimensionInfo)) {\n // 用户没有手动配置ignore的话,默认显示dimension tooltip\n dimensionTooltipSuccess = this._showTooltipByMouseEvent('dimension', mouseEventData, params);\n }\n }\n\n /* 如果还是不应该显示tooltip,则隐藏上一次tooltip */\n if (!markTooltipSuccess && (!dimensionTooltipSuccess || isNil(dimensionInfo))) {\n this._handleChartMouseOut(params);\n }\n };\n\n /**\n * 通过鼠标事件触发 tooltip,返回是否成功\n * @param activeType tooltip 类型\n * @param mouseEventData tooltip 相关数据\n * @param params 事件参数\n * @param useCache 是否直接显示缓存 tooltip\n * @returns 是否成功执行\n */\n protected _showTooltipByMouseEvent = (\n activeType: TooltipActiveType,\n mouseEventData: TotalMouseEventData,\n params: BaseEventParams,\n useCache?: boolean\n ): boolean => {\n const processor = this._processor[activeType];\n // 判断是否应该触发 tooltip\n if (\n !processor.shouldHandleTooltip(params, {\n tooltipInfo: mouseEventData.tooltipInfo[activeType],\n ignore: mouseEventData.ignore[activeType]\n })\n ) {\n return false;\n }\n\n let success: boolean;\n if (useCache) {\n // 直接显示缓存 tooltip\n success = !processor.showTooltip(this._cacheInfo as any, params, true);\n } else {\n const tooltipInfo = mouseEventData.tooltipInfo[activeType];\n const isSameAsCache = this._isSameAsCacheInfo(tooltipInfo);\n success = !processor.showTooltip(tooltipInfo as any, params, isSameAsCache);\n if (success) {\n // 成功显示 tooltip,则更新缓存\n this._cacheInfo = tooltipInfo;\n }\n }\n return success;\n };\n\n protected _getMouseEventData = (params: BaseEventParams): TotalMouseEventData => {\n const result: TotalMouseEventData = {\n tooltipInfo: {},\n ignore: {}\n };\n Object.keys(this._processor).forEach(activeType => {\n const { tooltipInfo, ignore } = this._processor[activeType].getMouseEventData(params);\n result.tooltipInfo[activeType] = tooltipInfo;\n result.ignore[activeType] = ignore;\n });\n return result;\n };\n\n protected _hideTooltipByHandler = (params: TooltipHandlerParams) => {\n if (this.tooltipHandler?.hideTooltip) {\n this.tooltipHandler.hideTooltip(params);\n }\n };\n\n protected _initTheme(theme?: any) {\n super._initTheme(theme);\n this._spec.style = merge({}, this._theme, this._originalSpec.style);\n }\n\n reInit(theme?: any) {\n super.reInit(theme);\n this.tooltipHandler?.reInit?.();\n }\n\n setAttrFromSpec() {\n super.setAttrFromSpec();\n const userSpec = this._spec as ITooltipSpec;\n this._spec = {\n ...userSpec,\n visible: isValid(userSpec.visible) ? userSpec.visible : true,\n activeType: getTooltipActualActiveType(userSpec),\n renderMode: 'html',\n trigger: isValid(userSpec.trigger) ? userSpec.trigger : 'hover',\n className: isValid(userSpec.className) ? userSpec.className : TOOLTIP_EL_CLASS_NAME,\n enterable: isValid(userSpec.enterable) ? userSpec.enterable : false,\n transitionDuration: isValid(userSpec.transitionDuration) ? userSpec.transitionDuration : 150\n } as ITooltipSpec;\n this._spec.triggerOff = isValid(userSpec.triggerOff) ? userSpec.triggerOff : this._spec.trigger;\n\n if (isValid(userSpec.renderMode)) {\n this._spec.renderMode = userSpec.renderMode;\n } else if (isMiniAppLikeMode(this._option.mode)) {\n // 小程序环境下,默认使用canvas渲染\n this._spec.renderMode = 'canvas';\n }\n\n if (isValid(userSpec.mark)) {\n this._spec.mark = {\n ...cloneDeep(userSpec.mark),\n activeType: 'mark'\n };\n }\n if (isValid(userSpec.dimension)) {\n this._spec.dimension = {\n ...cloneDeep(userSpec.dimension),\n activeType: 'dimension'\n };\n }\n\n if (isValid(userSpec.parentElement)) {\n this._spec.parentElement = userSpec.parentElement;\n } else if (isTrueBrowser(this._option.mode)) {\n this._spec.parentElement = globalThis.document?.body;\n }\n\n if (isValid(userSpec.confine)) {\n this._spec.confine = userSpec.confine;\n } else {\n this._spec.confine = this._spec.renderMode === 'canvas';\n }\n }\n\n showTooltip(datum: Datum, options: IShowTooltipOption) {\n if (!this.tooltipHandler?.showTooltip) {\n return false;\n }\n const result = showTooltip(datum, options, this.tooltipHandler, this._option);\n if (result !== 'none') {\n this._alwaysShow = !!options?.alwaysShow;\n }\n return result;\n }\n\n hideTooltip() {\n if (!this.tooltipHandler?.hideTooltip) {\n return false;\n }\n this._alwaysShow = false;\n this.tooltipHandler.hideTooltip({\n changePositionOnly: false,\n item: undefined,\n datum: undefined,\n source: Event_Source_Type.chart\n } as any);\n return true;\n }\n\n private _isSameAsCacheInfo(nextInfo?: TooltipInfo): boolean {\n if (nextInfo === this._cacheInfo) {\n return true;\n }\n if (isNil(this._cacheInfo) || isNil(nextInfo)) {\n return false;\n }\n\n if (isDimensionInfo(nextInfo)) {\n if (isMarkInfo(this._cacheInfo)) {\n return false;\n }\n\n const prevInfo = this._cacheInfo as DimensionTooltipInfo;\n return prevInfo.length === nextInfo.length && nextInfo.every((info, i) => isSameDimensionInfo(info, prevInfo[i]));\n }\n if (isDimensionInfo(this._cacheInfo)) {\n return false;\n }\n\n const prevInfo = this._cacheInfo as MarkTooltipInfo;\n return (\n nextInfo?.datum === prevInfo.datum && nextInfo?.mark === prevInfo.mark && nextInfo?.series === prevInfo.series\n );\n }\n\n private _isPointerInChart(point: IPoint): boolean {\n const globalInstance = this._option.globalInstance;\n const chart = globalInstance.getChart();\n if (!chart) {\n return false;\n }\n const { x, y } = point;\n const container = globalInstance.getContainer();\n const { x: chartX, y: chartY } = getElementAbsolutePosition(container);\n const { x: scrollOffsetX, y: scrollOffsetY } = getElementAbsoluteScrollOffset(container);\n const canvasRect = chart.getCanvasRect();\n const chartWidth = canvasRect?.width;\n const chartHeight = canvasRect?.height;\n // 鼠标仍在图表范围内,则不处理\n if (\n x >= chartX - scrollOffsetX &&\n x <= chartX + chartWidth - scrollOffsetX &&\n y >= chartY - scrollOffsetY &&\n y <= chartY + chartHeight - scrollOffsetY\n ) {\n return true;\n }\n\n return false;\n }\n\n private _isPointerOnTooltip(params: BaseEventParams): boolean {\n // TODO:后续支持 renderMode === 'canvas' 场景\n if (this._spec.enterable && this._spec.renderMode === 'html') {\n const { event } = params;\n let target: any;\n if (isValid(event.nativeEvent)) {\n // get native event object\n const nativeEvent = event.nativeEvent as Event;\n target = nativeEvent.target;\n // if in shadow DOM use composedPath to access target\n if (nativeEvent.composedPath && nativeEvent.composedPath().length > 0) {\n target = nativeEvent.composedPath()[0];\n }\n } else {\n target = event.target;\n }\n\n const container = this.tooltipHandler?.getTooltipContainer?.();\n if (isValid(container) && isValid(target) && hasParentElement(target, container)) {\n return true;\n }\n }\n return false;\n }\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/component/tooltip/tooltip.ts"],"names":[],"mappings":"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","file":"tooltip.js","sourcesContent":["import type { IComponentOption } from '../interface';\n// eslint-disable-next-line no-duplicate-imports\nimport { ComponentTypeEnum } from '../interface';\nimport type { IModelLayoutOption, IModelRenderOption, ILayoutItem } from '../../model/interface';\nimport type { IRegion } from '../../region/interface';\nimport { BaseComponent } from '../base';\nimport type { BaseEventParams, EventCallback, EventQuery, EventType } from '../../event/interface';\nimport type { ITooltipHandler, IToolTipLineActual, TooltipActiveType } from '../../typings/tooltip';\nimport { DomTooltipHandler, CanvasTooltipHandler } from './handler';\nimport type { Datum, IPoint, IShowTooltipOption } from '../../typings';\nimport {\n cloneDeep,\n isArray,\n isValid,\n merge,\n isMobileLikeMode,\n isTrueBrowser,\n isNil,\n isMiniAppLikeMode,\n domDocument\n} from '../../util';\nimport type {\n ITooltip,\n ITooltipActiveTypeAsKeys,\n ITooltipSpec,\n ITooltipTheme,\n TooltipHandlerParams,\n TotalMouseEventData\n} from './interface';\nimport { TOOLTIP_EL_CLASS_NAME } from './handler/constants';\n// eslint-disable-next-line no-duplicate-imports\nimport { getTooltipActualActiveType, showTooltip, isEmptyPos } from './utils';\nimport { isSameDimensionInfo } from '../../event/events/dimension/util';\nimport { Event_Bubble_Level, Event_Source_Type } from '../../constant';\nimport type { DimensionTooltipInfo, MarkTooltipInfo, TooltipInfo } from './processor';\n// eslint-disable-next-line no-duplicate-imports\nimport { isDimensionInfo, isMarkInfo, MarkTooltipProcessor, DimensionTooltipProcessor } from './processor';\nimport { getElementAbsolutePosition, getElementAbsoluteScrollOffset, hasParentElement } from '@visactor/vutils';\nimport { VChart } from '../../core/vchart';\n\nexport type TooltipContent = {\n title?: IToolTipLineActual;\n content?: IToolTipLineActual[];\n};\n\ntype EventHandlerList = {\n eventType: EventType;\n handler: any;\n}[];\n\nexport class Tooltip extends BaseComponent implements ITooltip {\n static type = ComponentTypeEnum.tooltip;\n type = ComponentTypeEnum.tooltip;\n name: string = ComponentTypeEnum.tooltip;\n\n layoutType: ILayoutItem['layoutType'] = 'absolute';\n\n static createComponent(spec: any, options: IComponentOption) {\n const tooltipSpec = spec.tooltip;\n if (!tooltipSpec) {\n return null;\n }\n if (!isArray(tooltipSpec)) {\n return new Tooltip(tooltipSpec, { ...options, specKey: 'tooltip' });\n }\n const tooltips: Tooltip[] = [];\n tooltipSpec.forEach((s: any, i: number) => {\n tooltips.push(new Tooltip(s, { ...options, specIndex: i, specKey: 'tooltip' }));\n });\n return tooltips;\n }\n\n tooltipHandler?: ITooltipHandler;\n\n private _alwaysShow: boolean = false;\n\n private _cacheInfo: TooltipInfo | undefined;\n\n private _eventList: EventHandlerList = [];\n\n protected declare _spec: ITooltipSpec;\n\n protected declare _theme: ITooltipTheme;\n\n protected _processor: ITooltipActiveTypeAsKeys<MarkTooltipProcessor, DimensionTooltipProcessor>;\n\n changeRegions(regions: IRegion[]) {\n /* do nothing */\n }\n protected _registerEvent() {\n /* do nothing */\n }\n protected _releaseEvent() {\n /* do nothing */\n }\n onLayout(ctx: IModelLayoutOption) {\n /* do nothing */\n }\n onLayoutEnd(ctx: IModelLayoutOption) {\n /* do nothing */\n }\n onRender(ctx: IModelRenderOption) {\n /* do nothing */\n }\n\n created() {\n super.created();\n this._regions = this._option.getAllRegions();\n // handler\n this._initHandler();\n // processor\n this._initProcessor();\n // event\n this._initEvent();\n }\n\n release() {\n super.release();\n\n this._eventList.forEach(({ eventType, handler }) => {\n this.event.off(eventType, handler);\n });\n this._eventList = [];\n this.tooltipHandler?.release?.();\n }\n\n protected _initHandler() {\n const renderMode = this._spec.renderMode ?? 'html';\n\n const userTooltipHandler = this._option.globalInstance.getTooltipHandlerByUser();\n if (userTooltipHandler) {\n this.tooltipHandler = userTooltipHandler;\n } else {\n // 构造内部默认 handler\n const Handler = renderMode === 'canvas' ? CanvasTooltipHandler : DomTooltipHandler;\n const id = `${this._spec.className}-${this._option.globalInstance.id ?? 0}-${this._option.specIndex ?? 0}`;\n this.tooltipHandler = new Handler(id, this);\n }\n }\n\n protected _initProcessor() {\n // 初始化 tooltip 类型\n this._processor = {\n mark: new MarkTooltipProcessor(this),\n dimension: new DimensionTooltipProcessor(this)\n };\n }\n\n protected _initEvent() {\n const trigger = this._spec.trigger ?? 'hover';\n // TODO: triggerOff完整支持\n // const triggerOff = this._spec.triggerOff ?? trigger;\n const mode = this._option.mode;\n\n if (trigger === 'hover') {\n this._mountEvent('pointermove', { level: Event_Bubble_Level.chart }, this._handleMouseMove);\n // 移动端的点按 + 滑动触发\n if (isMobileLikeMode(mode) || isMiniAppLikeMode(mode)) {\n this._mountEvent('pointerdown', { level: Event_Bubble_Level.chart }, this._handleMouseMove);\n this._mountEvent('pointerup', { source: 'window' }, this._handleMouseOut);\n }\n this._mountEvent('pointermove', { source: 'window' }, this._handleMouseOut);\n } else if (trigger === 'click') {\n this._mountEvent('pointertap', { level: Event_Bubble_Level.chart }, this._handleMouseMove);\n this._mountEvent('pointerup', { source: 'window' }, this._handleMouseOut);\n }\n }\n\n protected _mountEvent = (eType: EventType, query: EventQuery, callback: EventCallback<any>) => {\n this.event.on(eType, query, callback);\n this._eventList.push({\n eventType: eType,\n handler: callback\n });\n };\n\n protected _handleMouseOut = (params: BaseEventParams) => {\n if (this._alwaysShow) {\n return;\n }\n\n // 当 enterable 为 true,同时鼠标移入 tooltip 时 pointerleave 事件也会触发,所以这里做一个判断\n const { clientX, clientY } = params.event as MouseEvent;\n if (\n isTrueBrowser(this._option.mode) &&\n (this._isPointerInChart({ x: clientX, y: clientY }) || this._isPointerOnTooltip(params))\n ) {\n return;\n }\n\n this._handleChartMouseOut(params);\n };\n\n protected _handleChartMouseOut = (params: BaseEventParams) => {\n if (this._alwaysShow) {\n return;\n }\n\n if (this._spec.triggerOff !== 'none') {\n this._hideTooltipByHandler({\n ...params\n });\n this._cacheInfo = undefined;\n }\n };\n\n protected _handleMouseMove = (params: BaseEventParams) => {\n if (this._alwaysShow) {\n return;\n }\n if (this._isPointerOnTooltip(params)) {\n return;\n }\n\n /* 获取 tooltip 原始数据 */\n const mouseEventData = this._getMouseEventData(params);\n const {\n tooltipInfo: { dimension: dimensionInfo },\n ignore: { mark: ignoreMark, dimension: ignoreDimension }\n } = mouseEventData;\n\n let markTooltipSuccess: boolean = false;\n let dimensionTooltipSuccess: boolean = false;\n\n /* 显示常规tooltip */\n markTooltipSuccess = this._showTooltipByMouseEvent('mark', mouseEventData, params);\n if (!markTooltipSuccess) {\n dimensionTooltipSuccess = this._showTooltipByMouseEvent('dimension', mouseEventData, params);\n }\n\n /* 如果不是常规情况,进行一些特殊情况tooltip处理 */\n if (!markTooltipSuccess && !dimensionTooltipSuccess && !isEmptyPos(params)) {\n // 用户手动配置ignore,则继续显示缓存tooltip\n if (ignoreMark && isMarkInfo(this._cacheInfo)) {\n markTooltipSuccess = this._showTooltipByMouseEvent('mark', mouseEventData, params, true);\n } else if (ignoreDimension && isDimensionInfo(this._cacheInfo)) {\n dimensionTooltipSuccess = this._showTooltipByMouseEvent('dimension', mouseEventData, params, true);\n } else if (isValid(dimensionInfo)) {\n // 用户没有手动配置ignore的话,默认显示dimension tooltip\n dimensionTooltipSuccess = this._showTooltipByMouseEvent('dimension', mouseEventData, params);\n }\n }\n\n /* 如果还是不应该显示tooltip,则隐藏上一次tooltip */\n if (!markTooltipSuccess && (!dimensionTooltipSuccess || isNil(dimensionInfo))) {\n this._handleChartMouseOut(params);\n }\n };\n\n /**\n * 通过鼠标事件触发 tooltip,返回是否成功\n * @param activeType tooltip 类型\n * @param mouseEventData tooltip 相关数据\n * @param params 事件参数\n * @param useCache 是否直接显示缓存 tooltip\n * @returns 是否成功执行\n */\n protected _showTooltipByMouseEvent = (\n activeType: TooltipActiveType,\n mouseEventData: TotalMouseEventData,\n params: BaseEventParams,\n useCache?: boolean\n ): boolean => {\n const processor = this._processor[activeType];\n // 判断是否应该触发 tooltip\n if (\n !processor.shouldHandleTooltip(params, {\n tooltipInfo: mouseEventData.tooltipInfo[activeType],\n ignore: mouseEventData.ignore[activeType]\n })\n ) {\n return false;\n }\n\n let success: boolean;\n if (useCache) {\n // 直接显示缓存 tooltip\n success = !processor.showTooltip(this._cacheInfo as any, params, true);\n } else {\n const tooltipInfo = mouseEventData.tooltipInfo[activeType];\n const isSameAsCache = this._isSameAsCacheInfo(tooltipInfo);\n success = !processor.showTooltip(tooltipInfo as any, params, isSameAsCache);\n if (success) {\n // 成功显示 tooltip,则更新缓存\n this._cacheInfo = tooltipInfo;\n }\n }\n // 全局唯一 tooltip\n const vchart = this._option.globalInstance;\n if (success && VChart.globalConfig.uniqueTooltip) {\n VChart.hideTooltip(vchart.id);\n }\n return success;\n };\n\n protected _getMouseEventData = (params: BaseEventParams): TotalMouseEventData => {\n const result: TotalMouseEventData = {\n tooltipInfo: {},\n ignore: {}\n };\n Object.keys(this._processor).forEach(activeType => {\n const { tooltipInfo, ignore } = this._processor[activeType].getMouseEventData(params);\n result.tooltipInfo[activeType] = tooltipInfo;\n result.ignore[activeType] = ignore;\n });\n return result;\n };\n\n protected _hideTooltipByHandler = (params: TooltipHandlerParams) => {\n if (this.tooltipHandler?.hideTooltip) {\n this.tooltipHandler.hideTooltip(params);\n }\n };\n\n protected _initTheme(theme?: any) {\n super._initTheme(theme);\n this._spec.style = merge({}, this._theme, this._originalSpec.style);\n }\n\n reInit(theme?: any) {\n super.reInit(theme);\n this.tooltipHandler?.reInit?.();\n }\n\n setAttrFromSpec() {\n super.setAttrFromSpec();\n const userSpec = this._spec as ITooltipSpec;\n this._spec = {\n ...userSpec,\n visible: isValid(userSpec.visible) ? userSpec.visible : true,\n activeType: getTooltipActualActiveType(userSpec),\n renderMode: 'html',\n trigger: isValid(userSpec.trigger) ? userSpec.trigger : 'hover',\n className: isValid(userSpec.className) ? userSpec.className : TOOLTIP_EL_CLASS_NAME,\n enterable: isValid(userSpec.enterable) ? userSpec.enterable : false,\n transitionDuration: isValid(userSpec.transitionDuration) ? userSpec.transitionDuration : 150\n } as ITooltipSpec;\n this._spec.triggerOff = isValid(userSpec.triggerOff) ? userSpec.triggerOff : this._spec.trigger;\n\n if (isValid(userSpec.renderMode)) {\n this._spec.renderMode = userSpec.renderMode;\n } else if (isMiniAppLikeMode(this._option.mode)) {\n // 小程序环境下,默认使用canvas渲染\n this._spec.renderMode = 'canvas';\n }\n\n if (isValid(userSpec.mark)) {\n this._spec.mark = {\n ...cloneDeep(userSpec.mark),\n activeType: 'mark'\n };\n }\n if (isValid(userSpec.dimension)) {\n this._spec.dimension = {\n ...cloneDeep(userSpec.dimension),\n activeType: 'dimension'\n };\n }\n\n if (isValid(userSpec.parentElement)) {\n this._spec.parentElement = userSpec.parentElement;\n } else if (isTrueBrowser(this._option.mode)) {\n this._spec.parentElement = domDocument?.body;\n }\n\n if (isValid(userSpec.confine)) {\n this._spec.confine = userSpec.confine;\n } else {\n this._spec.confine = this._spec.renderMode === 'canvas';\n }\n }\n\n showTooltip(datum: Datum, options: IShowTooltipOption) {\n if (!this.tooltipHandler?.showTooltip) {\n return false;\n }\n const result = showTooltip(datum, options, this.tooltipHandler, this._option);\n if (result !== 'none') {\n this._alwaysShow = !!options?.alwaysShow;\n }\n return result;\n }\n\n hideTooltip() {\n if (!this.tooltipHandler?.hideTooltip) {\n return false;\n }\n this._alwaysShow = false;\n this.tooltipHandler.hideTooltip({\n changePositionOnly: false,\n item: undefined,\n datum: undefined,\n source: Event_Source_Type.chart\n } as any);\n return true;\n }\n\n private _isSameAsCacheInfo(nextInfo?: TooltipInfo): boolean {\n if (nextInfo === this._cacheInfo) {\n return true;\n }\n if (isNil(this._cacheInfo) || isNil(nextInfo)) {\n return false;\n }\n\n if (isDimensionInfo(nextInfo)) {\n if (isMarkInfo(this._cacheInfo)) {\n return false;\n }\n\n const prevInfo = this._cacheInfo as DimensionTooltipInfo;\n return prevInfo.length === nextInfo.length && nextInfo.every((info, i) => isSameDimensionInfo(info, prevInfo[i]));\n }\n if (isDimensionInfo(this._cacheInfo)) {\n return false;\n }\n\n const prevInfo = this._cacheInfo as MarkTooltipInfo;\n return (\n nextInfo?.datum === prevInfo.datum && nextInfo?.mark === prevInfo.mark && nextInfo?.series === prevInfo.series\n );\n }\n\n private _isPointerInChart(point: IPoint): boolean {\n const globalInstance = this._option.globalInstance;\n const chart = globalInstance.getChart();\n if (!chart) {\n return false;\n }\n const { x, y } = point;\n const container = globalInstance.getContainer();\n const { x: chartX, y: chartY } = getElementAbsolutePosition(container);\n const { x: scrollOffsetX, y: scrollOffsetY } = getElementAbsoluteScrollOffset(container);\n const canvasRect = chart.getCanvasRect();\n const chartWidth = canvasRect?.width;\n const chartHeight = canvasRect?.height;\n // 鼠标仍在图表范围内,则不处理\n if (\n x >= chartX - scrollOffsetX &&\n x <= chartX + chartWidth - scrollOffsetX &&\n y >= chartY - scrollOffsetY &&\n y <= chartY + chartHeight - scrollOffsetY\n ) {\n return true;\n }\n\n return false;\n }\n\n private _isPointerOnTooltip(params: BaseEventParams): boolean {\n // TODO:后续支持 renderMode === 'canvas' 场景\n if (this._spec.enterable && this._spec.renderMode === 'html') {\n const { event } = params;\n let target: any;\n if (isValid(event.nativeEvent)) {\n // get native event object\n const nativeEvent = event.nativeEvent as Event;\n target = nativeEvent.target;\n // if in shadow DOM use composedPath to access target\n if (nativeEvent.composedPath && nativeEvent.composedPath().length > 0) {\n target = nativeEvent.composedPath()[0];\n }\n } else {\n target = event.target;\n }\n\n const container = this.tooltipHandler?.getTooltipContainer?.();\n if (isValid(container) && isValid(target) && hasParentElement(target, container)) {\n return true;\n }\n }\n return false;\n }\n\n getVisible() {\n return this._spec.visible === true;\n }\n}\n"]}
|
|
@@ -4,7 +4,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: !0
|
|
5
5
|
}), exports.showTooltip = void 0;
|
|
6
6
|
|
|
7
|
-
const util_1 = require("../../../util"), type_1 = require("../../../series/interface/type"), constant_1 = require("../../../constant"), vutils_1 = require("@visactor/vutils"), getDataArrayFromFieldArray = (fields, datum) => (0,
|
|
7
|
+
const util_1 = require("../../../util"), type_1 = require("../../../series/interface/type"), constant_1 = require("../../../constant"), vutils_1 = require("@visactor/vutils"), vchart_1 = require("../../../core/vchart"), getDataArrayFromFieldArray = (fields, datum) => (0,
|
|
8
8
|
util_1.isValid)(datum) ? fields.map((f => datum[f])) : void 0, datumContainsArray = (fields, data) => datum => fields.every(((key, i) => datum[key] === (null == data ? void 0 : data[i]))), hasData = data => !(0,
|
|
9
9
|
util_1.isNil)(data) && ((0, util_1.isArray)(data) ? data.length > 0 && data.every(util_1.isValid) : Object.keys(data).length > 0);
|
|
10
10
|
|
|
@@ -212,7 +212,9 @@ function showTooltip(datum, options, tooltipHandler, componentOptions) {
|
|
|
212
212
|
item: void 0,
|
|
213
213
|
itemMap: new Map
|
|
214
214
|
};
|
|
215
|
-
|
|
215
|
+
null === (_c = null == tooltipHandler ? void 0 : tooltipHandler.showTooltip) || void 0 === _c || _c.call(tooltipHandler, activeType, mockDimensionInfo, mockParams);
|
|
216
|
+
const vchart = componentOptions.globalInstance;
|
|
217
|
+
return vchart_1.VChart.globalConfig.uniqueTooltip && vchart_1.VChart.hideTooltip(vchart.id),
|
|
216
218
|
activeType;
|
|
217
219
|
}
|
|
218
220
|
if ("mark" === activeType) {
|
|
@@ -228,10 +230,13 @@ function showTooltip(datum, options, tooltipHandler, componentOptions) {
|
|
|
228
230
|
item: void 0,
|
|
229
231
|
itemMap: new Map
|
|
230
232
|
};
|
|
231
|
-
|
|
233
|
+
null === (_e = null == tooltipHandler ? void 0 : tooltipHandler.showTooltip) || void 0 === _e || _e.call(tooltipHandler, activeType, [ {
|
|
232
234
|
datum: [ mockDatum ],
|
|
233
235
|
series: info.series
|
|
234
|
-
} ], mockParams)
|
|
236
|
+
} ], mockParams);
|
|
237
|
+
const vchart = componentOptions.globalInstance;
|
|
238
|
+
return vchart_1.VChart.globalConfig.uniqueTooltip && vchart_1.VChart.hideTooltip(vchart.id),
|
|
239
|
+
activeType;
|
|
235
240
|
}
|
|
236
241
|
return "none";
|
|
237
242
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/component/tooltip/utils/show-tooltip.ts"],"names":[],"mappings":"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","file":"show-tooltip.js","sourcesContent":["import type { Datum, IPoint, IShowTooltipOption, ITooltipHandler, TooltipActiveType } from '../../../typings';\nimport type { IComponentOption } from '../../interface';\nimport { isArray, isValid, isNil } from '../../../util';\nimport type { ISeries } from '../../../series/interface';\nimport { SeriesTypeEnum } from '../../../series/interface/type';\nimport type { CartesianSeries } from '../../../series/cartesian/cartesian';\nimport type { PolarSeries } from '../../../series/polar/polar';\nimport type { GeoSeries } from '../../../series/geo/geo';\nimport type { PieSeries } from '../../../series/pie/pie';\nimport type { TooltipHandlerParams } from '../interface';\nimport { Event_Source_Type } from '../../../constant';\nimport { getElementAbsolutePosition } from '@visactor/vutils';\nimport type { IDimensionInfo } from '../../../event/events/dimension/interface';\n\nconst getDataArrayFromFieldArray = (fields: string[], datum?: Datum) =>\n isValid(datum) ? fields.map(f => datum[f]) : undefined;\n\nconst datumContainsArray = (fields: string[], data?: Datum[]) => (datum: Datum) =>\n fields.every((key, i) => datum[key] === data?.[i]);\n\nconst hasData = (data?: any[] | Datum) => {\n if (isNil(data)) {\n return false;\n }\n if (isArray(data)) {\n return data.length > 0 && data.every(isValid);\n }\n return Object.keys(data).length > 0;\n};\n\ntype MarkInfo = {\n pos: IPoint;\n data: {\n dimensionFields: string[];\n measureFields: string[];\n dimensionData?: any[];\n measureData?: any[];\n hasMeasureData?: boolean;\n groupField?: string;\n groupData?: any;\n };\n series: ISeries;\n};\n\nexport function showTooltip(\n datum: Datum,\n options: IShowTooltipOption,\n tooltipHandler: ITooltipHandler,\n componentOptions: IComponentOption\n): TooltipActiveType | 'none' {\n const opt: IShowTooltipOption = {\n regionIndex: 0,\n ...options\n };\n // 确认region\n const region = componentOptions.getRegionsInUserIdOrIndex(\n isValid(opt.regionId) ? [opt.regionId] : undefined,\n isValid(opt.regionIndex) ? [opt.regionIndex] : undefined\n )[0];\n if (!region) {\n return 'none';\n }\n // 查询图元信息\n const seriesList = region.getSeries();\n const markInfoList: MarkInfo[] = [];\n seriesList.forEach(series => {\n /** 维度field */\n const dimensionFields = series.getDimensionField();\n /** 指标原始field(用于显示tooltip) */\n const measureFields = series.getMeasureField();\n\n const groupField = series.getSeriesField();\n const groupData = isValid(groupField) ? datum[groupField] : undefined;\n const groupDomain = isValid(groupField)\n ? series.getViewDataStatistics?.()?.latestData[groupField]?.values ?? []\n : [];\n\n const dimensionData = getDataArrayFromFieldArray(dimensionFields, datum);\n let measureData = getDataArrayFromFieldArray(measureFields, datum);\n const hasMeasureData = hasData(measureData);\n\n const isMultiGroups = !hasMeasureData && isValid(groupField) && isNil(groupData) && groupDomain.length > 0; // 是否需要考虑多个数据组\n\n if (series.coordinate === 'cartesian') {\n const cartesianSeries = series as CartesianSeries;\n\n // 补全维度轴数据\n const invalidDimensionFields = dimensionFields\n .map((field, i) => [field, i] as [string, number])\n .filter(([, i]) => isNil(dimensionData?.[i]));\n let dimensionDataList: any[][] = [dimensionData ?? []];\n if (invalidDimensionFields.length > 0) {\n invalidDimensionFields.forEach(([field, i]) => {\n const domain = series.getViewDataStatistics?.()?.latestData[field]?.values ?? [];\n const nextList: any[][] = [];\n dimensionDataList.forEach(dimensionData => {\n domain.forEach((value: any) => {\n const newData = [...(dimensionData ?? [])];\n newData[i] = value;\n nextList.push(newData);\n });\n });\n dimensionDataList = nextList;\n });\n }\n dimensionDataList.forEach(dimensionData => {\n if (isMultiGroups) {\n const measureDataList = cartesianSeries\n .getViewData()\n ?.latestData.filter(datumContainsArray(dimensionFields, dimensionData));\n groupDomain.forEach((groupData: any) => {\n const originDatum = measureDataList.find((d: Datum) => d[groupField] === groupData);\n // 补全指标轴数据\n measureData = getDataArrayFromFieldArray(measureFields, originDatum);\n if (!hasData(measureData)) {\n return;\n }\n\n const pos = cartesianSeries.dataToPosition(originDatum);\n if (isNil(pos) || isNaN(pos.x) || isNaN(pos.y)) {\n return;\n }\n\n markInfoList.push({\n pos,\n data: {\n dimensionFields,\n dimensionData,\n measureFields,\n measureData,\n hasMeasureData,\n groupField,\n groupData\n },\n series\n });\n });\n } else {\n const originDatum = cartesianSeries\n .getViewData()\n ?.latestData.find(datumContainsArray(dimensionFields, dimensionData));\n if (!hasMeasureData) {\n // 如果只有单个数据组且用户没有给y轴数据,则补全y轴数据\n measureData = getDataArrayFromFieldArray(measureFields, originDatum);\n if (!hasData(measureData)) {\n return;\n }\n }\n\n const pos = cartesianSeries.dataToPosition(originDatum);\n if (isNil(pos) || isNaN(pos.x) || isNaN(pos.y)) {\n return;\n }\n\n markInfoList.push({\n pos,\n data: {\n dimensionFields,\n dimensionData,\n measureFields,\n measureData,\n hasMeasureData,\n groupField,\n groupData\n },\n series\n });\n }\n });\n } else if (series.coordinate === 'polar') {\n if (series.type === SeriesTypeEnum.pie) {\n // 处理饼图\n const pieSeries = series as PieSeries;\n\n const originDatum = pieSeries\n .getViewData()\n ?.latestData.find(datumContainsArray(dimensionFields, dimensionData));\n if (!hasMeasureData) {\n // 如果只有单个数据组且用户没有给y轴数据,则补全y轴数据\n measureData = getDataArrayFromFieldArray(measureFields, originDatum);\n if (!hasData(measureData)) {\n return;\n }\n }\n\n const pos = pieSeries.dataToCentralPosition(originDatum);\n if (isNil(pos) || isNaN(pos.x) || isNaN(pos.y)) {\n return;\n }\n\n markInfoList.push({\n pos,\n data: {\n dimensionFields,\n dimensionData,\n measureFields,\n measureData,\n hasMeasureData,\n groupField,\n groupData\n },\n series\n });\n } else {\n // 处理玫瑰图、雷达图\n const polarSeries = series as PolarSeries;\n\n if (isMultiGroups) {\n const measureDataList = polarSeries\n .getViewData()\n ?.latestData.filter(datumContainsArray(dimensionFields, dimensionData));\n const originDatum = measureDataList.find((d: Datum) => d[groupField] === groupData);\n groupDomain.forEach((groupData: any) => {\n // 补全指标轴数据\n measureData = getDataArrayFromFieldArray(measureFields, originDatum);\n if (!hasData(measureData)) {\n return;\n }\n\n const pos = polarSeries.dataToPosition(originDatum);\n if (isNil(pos) || isNaN(pos.x) || isNaN(pos.y)) {\n return;\n }\n\n markInfoList.push({\n pos,\n data: {\n dimensionFields,\n dimensionData,\n measureFields,\n measureData,\n hasMeasureData,\n groupField,\n groupData\n },\n series\n });\n });\n } else {\n const originDatum = polarSeries\n .getViewData()\n ?.latestData.find(datumContainsArray(dimensionFields, dimensionData));\n if (!hasMeasureData) {\n // 如果只有单个数据组且用户没有给y轴数据,则补全y轴数据\n measureData = getDataArrayFromFieldArray(measureFields, originDatum);\n if (!hasData(measureData)) {\n return;\n }\n }\n\n const pos = polarSeries.dataToPosition(originDatum);\n if (isNil(pos) || isNaN(pos.x) || isNaN(pos.y)) {\n return;\n }\n\n markInfoList.push({\n pos,\n data: {\n dimensionFields,\n dimensionData,\n measureFields,\n measureData,\n hasMeasureData,\n groupField,\n groupData\n },\n series\n });\n }\n }\n } else if (series.coordinate === 'geo') {\n const gs = series as GeoSeries;\n\n const originDatum = gs.getViewData()?.latestData.find(datumContainsArray(dimensionFields, dimensionData));\n if (!hasMeasureData) {\n // 如果只有单个数据组且用户没有给y轴数据,则补全y轴数据\n measureData = getDataArrayFromFieldArray(measureFields, originDatum);\n if (!hasData(measureData)) {\n return;\n }\n }\n\n const pos = gs.dataToPosition(originDatum);\n if (isNil(pos) || isNaN(pos.x) || isNaN(pos.y)) {\n return;\n }\n\n markInfoList.push({\n pos,\n data: {\n dimensionFields,\n dimensionData,\n measureFields,\n measureData,\n hasMeasureData,\n groupField,\n groupData\n },\n series\n });\n }\n });\n\n // 组织数据\n const activeType = opt.activeType ?? (markInfoList.length > 1 ? 'dimension' : 'mark');\n const regionPos = region.getLayoutStartPoint();\n const regionRect = region.getLayoutRect();\n const container = componentOptions.globalInstance.getContainer();\n const containerPos = {\n x: 0,\n y: 0,\n ...(container ? getElementAbsolutePosition(container) : {})\n };\n const bound = (pos: IPoint): IPoint => ({\n x: Math.min(Math.max(pos.x, 0), regionRect.width),\n y: Math.min(Math.max(pos.y, 0), regionRect.height)\n });\n const getOriginDatum = (info: MarkInfo) => {\n const { dimensionFields, dimensionData, measureFields, measureData, groupField, groupData } = info.data;\n const originDatum = info.series.getViewData()?.latestData.find((datum: any) => {\n return (\n datumContainsArray(dimensionFields, dimensionData)(datum) &&\n datumContainsArray(measureFields, measureData)(datum) &&\n (isNil(groupField) || datumContainsArray([groupField], [groupData])(datum))\n );\n });\n return originDatum;\n };\n const getMockEvent = (originPos: IPoint): any => {\n const pos = bound(originPos);\n const canvasX = opt.x ?? regionPos.x + pos.x;\n const canvasY = opt.y ?? regionPos.y + pos.y;\n return {\n canvasX,\n canvasY,\n clientX: containerPos.x + canvasX,\n clientY: containerPos.y + canvasY\n };\n };\n\n // 显示tooltip\n if (activeType === 'dimension') {\n const firstInfo = markInfoList[0];\n if (!firstInfo) {\n return 'none';\n }\n\n // 将markInfoList按系列分组\n const markInfoSeriesMap = new Map<ISeries, MarkInfo[]>();\n markInfoList.forEach(info => {\n if (!markInfoSeriesMap.has(info.series)) {\n markInfoSeriesMap.set(info.series, []);\n }\n markInfoSeriesMap.get(info.series)?.push(info);\n });\n const mockDimensionInfo: IDimensionInfo[] = [\n {\n value: datum[firstInfo.data.dimensionFields[0]],\n data: [...markInfoSeriesMap.keys()].map(series => {\n return {\n series,\n datum: markInfoSeriesMap.get(series)?.map(info => getOriginDatum(info)) ?? []\n };\n })\n }\n ];\n const mockParams: TooltipHandlerParams = {\n changePositionOnly: false,\n dimensionInfo: mockDimensionInfo,\n chart: componentOptions.globalInstance.getChart() ?? undefined,\n datum: undefined,\n model: undefined,\n source: Event_Source_Type.chart,\n event: getMockEvent({\n x: markInfoList.reduce((sum, info) => sum + info.pos.x, 0) / markInfoList.length,\n y: markInfoList.reduce((sum, info) => sum + info.pos.y, 0) / markInfoList.length // 位置求平均\n }),\n item: undefined,\n itemMap: new Map<string, any>()\n };\n tooltipHandler?.showTooltip?.(activeType, mockDimensionInfo, mockParams);\n return activeType;\n } else if (activeType === 'mark') {\n const info = markInfoList[0];\n if (!info) {\n return 'none';\n }\n const mockDatum = {\n ...getOriginDatum(info),\n ...datum\n };\n const mockParams: TooltipHandlerParams = {\n changePositionOnly: false,\n chart: componentOptions.globalInstance.getChart() ?? undefined,\n datum: mockDatum,\n model: info.series,\n source: Event_Source_Type.chart,\n event: getMockEvent(info.pos),\n item: undefined,\n itemMap: new Map<string, any>()\n };\n tooltipHandler?.showTooltip?.(\n activeType,\n [\n {\n datum: [mockDatum],\n series: info.series\n }\n ],\n mockParams\n );\n return activeType;\n }\n return 'none';\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/component/tooltip/utils/show-tooltip.ts"],"names":[],"mappings":"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","file":"show-tooltip.js","sourcesContent":["import type { Datum, IPoint, IShowTooltipOption, ITooltipHandler, TooltipActiveType } from '../../../typings';\nimport type { IComponentOption } from '../../interface';\nimport { isArray, isValid, isNil } from '../../../util';\nimport type { ISeries } from '../../../series/interface';\nimport { SeriesTypeEnum } from '../../../series/interface/type';\nimport type { CartesianSeries } from '../../../series/cartesian/cartesian';\nimport type { PolarSeries } from '../../../series/polar/polar';\nimport type { GeoSeries } from '../../../series/geo/geo';\nimport type { PieSeries } from '../../../series/pie/pie';\nimport type { TooltipHandlerParams } from '../interface';\nimport { Event_Source_Type } from '../../../constant';\nimport { getElementAbsolutePosition } from '@visactor/vutils';\nimport type { IDimensionInfo } from '../../../event/events/dimension/interface';\nimport { VChart } from '../../../core/vchart';\n\nconst getDataArrayFromFieldArray = (fields: string[], datum?: Datum) =>\n isValid(datum) ? fields.map(f => datum[f]) : undefined;\n\nconst datumContainsArray = (fields: string[], data?: Datum[]) => (datum: Datum) =>\n fields.every((key, i) => datum[key] === data?.[i]);\n\nconst hasData = (data?: any[] | Datum) => {\n if (isNil(data)) {\n return false;\n }\n if (isArray(data)) {\n return data.length > 0 && data.every(isValid);\n }\n return Object.keys(data).length > 0;\n};\n\ntype MarkInfo = {\n pos: IPoint;\n data: {\n dimensionFields: string[];\n measureFields: string[];\n dimensionData?: any[];\n measureData?: any[];\n hasMeasureData?: boolean;\n groupField?: string;\n groupData?: any;\n };\n series: ISeries;\n};\n\nexport function showTooltip(\n datum: Datum,\n options: IShowTooltipOption,\n tooltipHandler: ITooltipHandler,\n componentOptions: IComponentOption\n): TooltipActiveType | 'none' {\n const opt: IShowTooltipOption = {\n regionIndex: 0,\n ...options\n };\n // 确认region\n const region = componentOptions.getRegionsInUserIdOrIndex(\n isValid(opt.regionId) ? [opt.regionId] : undefined,\n isValid(opt.regionIndex) ? [opt.regionIndex] : undefined\n )[0];\n if (!region) {\n return 'none';\n }\n // 查询图元信息\n const seriesList = region.getSeries();\n const markInfoList: MarkInfo[] = [];\n seriesList.forEach(series => {\n /** 维度field */\n const dimensionFields = series.getDimensionField();\n /** 指标原始field(用于显示tooltip) */\n const measureFields = series.getMeasureField();\n\n const groupField = series.getSeriesField();\n const groupData = isValid(groupField) ? datum[groupField] : undefined;\n const groupDomain = isValid(groupField)\n ? series.getViewDataStatistics?.()?.latestData[groupField]?.values ?? []\n : [];\n\n const dimensionData = getDataArrayFromFieldArray(dimensionFields, datum);\n let measureData = getDataArrayFromFieldArray(measureFields, datum);\n const hasMeasureData = hasData(measureData);\n\n const isMultiGroups = !hasMeasureData && isValid(groupField) && isNil(groupData) && groupDomain.length > 0; // 是否需要考虑多个数据组\n\n if (series.coordinate === 'cartesian') {\n const cartesianSeries = series as CartesianSeries;\n\n // 补全维度轴数据\n const invalidDimensionFields = dimensionFields\n .map((field, i) => [field, i] as [string, number])\n .filter(([, i]) => isNil(dimensionData?.[i]));\n let dimensionDataList: any[][] = [dimensionData ?? []];\n if (invalidDimensionFields.length > 0) {\n invalidDimensionFields.forEach(([field, i]) => {\n const domain = series.getViewDataStatistics?.()?.latestData[field]?.values ?? [];\n const nextList: any[][] = [];\n dimensionDataList.forEach(dimensionData => {\n domain.forEach((value: any) => {\n const newData = [...(dimensionData ?? [])];\n newData[i] = value;\n nextList.push(newData);\n });\n });\n dimensionDataList = nextList;\n });\n }\n dimensionDataList.forEach(dimensionData => {\n if (isMultiGroups) {\n const measureDataList = cartesianSeries\n .getViewData()\n ?.latestData.filter(datumContainsArray(dimensionFields, dimensionData));\n groupDomain.forEach((groupData: any) => {\n const originDatum = measureDataList.find((d: Datum) => d[groupField] === groupData);\n // 补全指标轴数据\n measureData = getDataArrayFromFieldArray(measureFields, originDatum);\n if (!hasData(measureData)) {\n return;\n }\n\n const pos = cartesianSeries.dataToPosition(originDatum);\n if (isNil(pos) || isNaN(pos.x) || isNaN(pos.y)) {\n return;\n }\n\n markInfoList.push({\n pos,\n data: {\n dimensionFields,\n dimensionData,\n measureFields,\n measureData,\n hasMeasureData,\n groupField,\n groupData\n },\n series\n });\n });\n } else {\n const originDatum = cartesianSeries\n .getViewData()\n ?.latestData.find(datumContainsArray(dimensionFields, dimensionData));\n if (!hasMeasureData) {\n // 如果只有单个数据组且用户没有给y轴数据,则补全y轴数据\n measureData = getDataArrayFromFieldArray(measureFields, originDatum);\n if (!hasData(measureData)) {\n return;\n }\n }\n\n const pos = cartesianSeries.dataToPosition(originDatum);\n if (isNil(pos) || isNaN(pos.x) || isNaN(pos.y)) {\n return;\n }\n\n markInfoList.push({\n pos,\n data: {\n dimensionFields,\n dimensionData,\n measureFields,\n measureData,\n hasMeasureData,\n groupField,\n groupData\n },\n series\n });\n }\n });\n } else if (series.coordinate === 'polar') {\n if (series.type === SeriesTypeEnum.pie) {\n // 处理饼图\n const pieSeries = series as PieSeries;\n\n const originDatum = pieSeries\n .getViewData()\n ?.latestData.find(datumContainsArray(dimensionFields, dimensionData));\n if (!hasMeasureData) {\n // 如果只有单个数据组且用户没有给y轴数据,则补全y轴数据\n measureData = getDataArrayFromFieldArray(measureFields, originDatum);\n if (!hasData(measureData)) {\n return;\n }\n }\n\n const pos = pieSeries.dataToCentralPosition(originDatum);\n if (isNil(pos) || isNaN(pos.x) || isNaN(pos.y)) {\n return;\n }\n\n markInfoList.push({\n pos,\n data: {\n dimensionFields,\n dimensionData,\n measureFields,\n measureData,\n hasMeasureData,\n groupField,\n groupData\n },\n series\n });\n } else {\n // 处理玫瑰图、雷达图\n const polarSeries = series as PolarSeries;\n\n if (isMultiGroups) {\n const measureDataList = polarSeries\n .getViewData()\n ?.latestData.filter(datumContainsArray(dimensionFields, dimensionData));\n const originDatum = measureDataList.find((d: Datum) => d[groupField] === groupData);\n groupDomain.forEach((groupData: any) => {\n // 补全指标轴数据\n measureData = getDataArrayFromFieldArray(measureFields, originDatum);\n if (!hasData(measureData)) {\n return;\n }\n\n const pos = polarSeries.dataToPosition(originDatum);\n if (isNil(pos) || isNaN(pos.x) || isNaN(pos.y)) {\n return;\n }\n\n markInfoList.push({\n pos,\n data: {\n dimensionFields,\n dimensionData,\n measureFields,\n measureData,\n hasMeasureData,\n groupField,\n groupData\n },\n series\n });\n });\n } else {\n const originDatum = polarSeries\n .getViewData()\n ?.latestData.find(datumContainsArray(dimensionFields, dimensionData));\n if (!hasMeasureData) {\n // 如果只有单个数据组且用户没有给y轴数据,则补全y轴数据\n measureData = getDataArrayFromFieldArray(measureFields, originDatum);\n if (!hasData(measureData)) {\n return;\n }\n }\n\n const pos = polarSeries.dataToPosition(originDatum);\n if (isNil(pos) || isNaN(pos.x) || isNaN(pos.y)) {\n return;\n }\n\n markInfoList.push({\n pos,\n data: {\n dimensionFields,\n dimensionData,\n measureFields,\n measureData,\n hasMeasureData,\n groupField,\n groupData\n },\n series\n });\n }\n }\n } else if (series.coordinate === 'geo') {\n const gs = series as GeoSeries;\n\n const originDatum = gs.getViewData()?.latestData.find(datumContainsArray(dimensionFields, dimensionData));\n if (!hasMeasureData) {\n // 如果只有单个数据组且用户没有给y轴数据,则补全y轴数据\n measureData = getDataArrayFromFieldArray(measureFields, originDatum);\n if (!hasData(measureData)) {\n return;\n }\n }\n\n const pos = gs.dataToPosition(originDatum);\n if (isNil(pos) || isNaN(pos.x) || isNaN(pos.y)) {\n return;\n }\n\n markInfoList.push({\n pos,\n data: {\n dimensionFields,\n dimensionData,\n measureFields,\n measureData,\n hasMeasureData,\n groupField,\n groupData\n },\n series\n });\n }\n });\n\n // 组织数据\n const activeType = opt.activeType ?? (markInfoList.length > 1 ? 'dimension' : 'mark');\n const regionPos = region.getLayoutStartPoint();\n const regionRect = region.getLayoutRect();\n const container = componentOptions.globalInstance.getContainer();\n const containerPos = {\n x: 0,\n y: 0,\n ...(container ? getElementAbsolutePosition(container) : {})\n };\n const bound = (pos: IPoint): IPoint => ({\n x: Math.min(Math.max(pos.x, 0), regionRect.width),\n y: Math.min(Math.max(pos.y, 0), regionRect.height)\n });\n const getOriginDatum = (info: MarkInfo) => {\n const { dimensionFields, dimensionData, measureFields, measureData, groupField, groupData } = info.data;\n const originDatum = info.series.getViewData()?.latestData.find((datum: any) => {\n return (\n datumContainsArray(dimensionFields, dimensionData)(datum) &&\n datumContainsArray(measureFields, measureData)(datum) &&\n (isNil(groupField) || datumContainsArray([groupField], [groupData])(datum))\n );\n });\n return originDatum;\n };\n const getMockEvent = (originPos: IPoint): any => {\n const pos = bound(originPos);\n const canvasX = opt.x ?? regionPos.x + pos.x;\n const canvasY = opt.y ?? regionPos.y + pos.y;\n return {\n canvasX,\n canvasY,\n clientX: containerPos.x + canvasX,\n clientY: containerPos.y + canvasY\n };\n };\n\n // 显示tooltip\n if (activeType === 'dimension') {\n const firstInfo = markInfoList[0];\n if (!firstInfo) {\n return 'none';\n }\n\n // 将markInfoList按系列分组\n const markInfoSeriesMap = new Map<ISeries, MarkInfo[]>();\n markInfoList.forEach(info => {\n if (!markInfoSeriesMap.has(info.series)) {\n markInfoSeriesMap.set(info.series, []);\n }\n markInfoSeriesMap.get(info.series)?.push(info);\n });\n const mockDimensionInfo: IDimensionInfo[] = [\n {\n value: datum[firstInfo.data.dimensionFields[0]],\n data: [...markInfoSeriesMap.keys()].map(series => {\n return {\n series,\n datum: markInfoSeriesMap.get(series)?.map(info => getOriginDatum(info)) ?? []\n };\n })\n }\n ];\n const mockParams: TooltipHandlerParams = {\n changePositionOnly: false,\n dimensionInfo: mockDimensionInfo,\n chart: componentOptions.globalInstance.getChart() ?? undefined,\n datum: undefined,\n model: undefined,\n source: Event_Source_Type.chart,\n event: getMockEvent({\n x: markInfoList.reduce((sum, info) => sum + info.pos.x, 0) / markInfoList.length,\n y: markInfoList.reduce((sum, info) => sum + info.pos.y, 0) / markInfoList.length // 位置求平均\n }),\n item: undefined,\n itemMap: new Map<string, any>()\n };\n tooltipHandler?.showTooltip?.(activeType, mockDimensionInfo, mockParams);\n // 全局唯一 tooltip\n const vchart = componentOptions.globalInstance;\n if (VChart.globalConfig.uniqueTooltip) {\n VChart.hideTooltip(vchart.id);\n }\n return activeType;\n } else if (activeType === 'mark') {\n const info = markInfoList[0];\n if (!info) {\n return 'none';\n }\n const mockDatum = {\n ...getOriginDatum(info),\n ...datum\n };\n const mockParams: TooltipHandlerParams = {\n changePositionOnly: false,\n chart: componentOptions.globalInstance.getChart() ?? undefined,\n datum: mockDatum,\n model: info.series,\n source: Event_Source_Type.chart,\n event: getMockEvent(info.pos),\n item: undefined,\n itemMap: new Map<string, any>()\n };\n tooltipHandler?.showTooltip?.(\n activeType,\n [\n {\n datum: [mockDatum],\n series: info.series\n }\n ],\n mockParams\n );\n // 全局唯一 tooltip\n const vchart = componentOptions.globalInstance;\n if (VChart.globalConfig.uniqueTooltip) {\n VChart.hideTooltip(vchart.id);\n }\n return activeType;\n }\n return 'none';\n}\n"]}
|
package/cjs/constant/scatter.js
CHANGED
|
@@ -8,5 +8,4 @@ const vscale_1 = require("@visactor/vscale");
|
|
|
8
8
|
|
|
9
9
|
exports.SCATTER_DEFAULT_SIZE = 10, exports.SCATTER_DEFAULT_RANGE_SIZE = [ 10, 20 ],
|
|
10
10
|
exports.SCATTER_DEFAULT_SIZE_SCALE_TYPE = vscale_1.ScaleEnum.Linear, exports.SCATTER_DEFAULT_SHAPE = "circle",
|
|
11
|
-
exports.SCATTER_DEFAULT_SHAPE_SCALE_TYPE = vscale_1.ScaleEnum.Ordinal, exports.SCATTER_DEFAULT_RANGE_SHAPE = [ "circle", "square", "triangle", "diamond", "star" ];
|
|
12
|
-
//# sourceMappingURL=scatter.js.map
|
|
11
|
+
exports.SCATTER_DEFAULT_SHAPE_SCALE_TYPE = vscale_1.ScaleEnum.Ordinal, exports.SCATTER_DEFAULT_RANGE_SHAPE = [ "circle", "square", "triangle", "diamond", "star" ];
|
package/cjs/core/factory.js
CHANGED
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.1.0-beta.
|
|
4
|
+
export declare const version = "1.1.0-beta.5";
|
|
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
|
@@ -40,7 +40,7 @@ Object.defineProperty(exports, "Factory", {
|
|
|
40
40
|
const region_1 = require("../region/region"), base_layout_1 = require("../layout/base-layout"), group_1 = require("../mark/group"), component_1 = require("../mark/component");
|
|
41
41
|
|
|
42
42
|
vchart_1.VChart.useMark([ component_1.ComponentMark, group_1.GroupMark ]), factory_1.Factory.registerRegion("region", region_1.Region),
|
|
43
|
-
factory_1.Factory.registerLayout("base", base_layout_1.Layout), exports.version = "1.1.0-beta.
|
|
43
|
+
factory_1.Factory.registerLayout("base", base_layout_1.Layout), exports.version = "1.1.0-beta.5",
|
|
44
44
|
__exportStar(require("../event/interface"), exports), __exportStar(require("../typings/spec/common"), exports),
|
|
45
45
|
__exportStar(require("../theme/interface"), exports);
|
|
46
46
|
//# 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;AAgBzB,uFAhBA,eAAM,OAgBA;AAff,uCAAoC;AAenB,wFAfR,iBAAO,OAeQ;AAdxB,6CAA0C;AAC1C,uDAA+C;AAC/C,yCAA0C;AAC1C,iDAAkD;AAGlD,eAAM,CAAC,OAAO,CAAC,CAAC,yBAAa,EAAE,iBAAS,CAAC,CAAC,CAAC;AAG3C,iBAAO,CAAC,cAAc,CAAC,QAAQ,EAAE,eAAa,CAAC,CAAC;AAGhD,iBAAO,CAAC,cAAc,CAAC,MAAM,EAAE,oBAAa,CAAC,CAAC;AAKjC,QAAA,OAAO,GAAG,cAAc,CAAC;AAKtC,qDAAmC;AACnC,yDAAuC;AAEvC,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';\nimport { Region } from '../region/region';\nimport { Layout } from '../layout/base-layout';\nimport { GroupMark } from '../mark/group';\nimport { ComponentMark } from '../mark/component';\n\n// register groupMark and componentMark\nVChart.useMark([ComponentMark, GroupMark]);\n\n// install region module\nFactory.registerRegion('region', Region as any);\n\n// install layout module\nFactory.registerLayout('base', Layout as any);\n\nexport { VChart, Factory };\n\n// export the version\nexport const version = \"1.1.0-beta.
|
|
1
|
+
{"version":3,"sources":["../src/core/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAIA,qCAAkC;AAgBzB,uFAhBA,eAAM,OAgBA;AAff,uCAAoC;AAenB,wFAfR,iBAAO,OAeQ;AAdxB,6CAA0C;AAC1C,uDAA+C;AAC/C,yCAA0C;AAC1C,iDAAkD;AAGlD,eAAM,CAAC,OAAO,CAAC,CAAC,yBAAa,EAAE,iBAAS,CAAC,CAAC,CAAC;AAG3C,iBAAO,CAAC,cAAc,CAAC,QAAQ,EAAE,eAAa,CAAC,CAAC;AAGhD,iBAAO,CAAC,cAAc,CAAC,MAAM,EAAE,oBAAa,CAAC,CAAC;AAKjC,QAAA,OAAO,GAAG,cAAc,CAAC;AAKtC,qDAAmC;AACnC,yDAAuC;AAEvC,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';\nimport { Region } from '../region/region';\nimport { Layout } from '../layout/base-layout';\nimport { GroupMark } from '../mark/group';\nimport { ComponentMark } from '../mark/component';\n\n// register groupMark and componentMark\nVChart.useMark([ComponentMark, GroupMark]);\n\n// install region module\nFactory.registerRegion('region', Region as any);\n\n// install layout module\nFactory.registerLayout('base', Layout as any);\n\nexport { VChart, Factory };\n\n// export the version\nexport const version = \"1.1.0-beta.5\";\n\n// export necessary types\nexport type { IVChart } from './interface';\n// the event types\nexport * from '../event/interface';\nexport * from '../typings/spec/common';\nexport type { IStateSpec, StateValueType } from '../compile/mark';\nexport * from '../theme/interface';\n"]}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { MaybeArray } from '../typings';
|
|
1
2
|
import type { IVChart } from './interface';
|
|
2
3
|
export declare class InstanceManager {
|
|
3
4
|
static readonly instances: Map<number, IVChart>;
|
|
@@ -5,5 +6,5 @@ export declare class InstanceManager {
|
|
|
5
6
|
static unregisterInstance(instance: IVChart): void;
|
|
6
7
|
static getInstance(id: number): IVChart | undefined;
|
|
7
8
|
static instanceExist(id: number): boolean;
|
|
8
|
-
static forEach(callbackfn: (instance: IVChart, id: number, map: Map<number, IVChart>) => void, thisArg?: any): void;
|
|
9
|
+
static forEach(callbackfn: (instance: IVChart, id: number, map: Map<number, IVChart>) => void, excludeId?: MaybeArray<number>, thisArg?: any): void;
|
|
9
10
|
}
|
|
@@ -4,6 +4,8 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: !0
|
|
5
5
|
}), exports.InstanceManager = void 0;
|
|
6
6
|
|
|
7
|
+
const vutils_1 = require("@visactor/vutils");
|
|
8
|
+
|
|
7
9
|
class InstanceManager {
|
|
8
10
|
static registerInstance(instance) {
|
|
9
11
|
InstanceManager.instances.set(instance.id, instance);
|
|
@@ -17,8 +19,11 @@ class InstanceManager {
|
|
|
17
19
|
static instanceExist(id) {
|
|
18
20
|
return InstanceManager.instances.has(id);
|
|
19
21
|
}
|
|
20
|
-
static forEach(callbackfn, thisArg) {
|
|
21
|
-
|
|
22
|
+
static forEach(callbackfn, excludeId = [], thisArg) {
|
|
23
|
+
const excludeIdList = (0, vutils_1.array)(excludeId);
|
|
24
|
+
return InstanceManager.instances.forEach(((instance, id, map) => {
|
|
25
|
+
excludeIdList.includes(id) || callbackfn(instance, id, map);
|
|
26
|
+
}), thisArg);
|
|
22
27
|
}
|
|
23
28
|
}
|
|
24
29
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/core/instance-manager.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"sources":["../src/core/instance-manager.ts"],"names":[],"mappings":";;;AAAA,6CAAyC;AAKzC,MAAa,eAAe;IAI1B,MAAM,CAAC,gBAAgB,CAAC,QAAiB;QACvC,eAAe,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAC;IACvD,CAAC;IAED,MAAM,CAAC,kBAAkB,CAAC,QAAiB;QACzC,eAAe,CAAC,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;IAChD,CAAC;IAMD,MAAM,CAAC,WAAW,CAAC,EAAU;QAC3B,OAAO,eAAe,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAC3C,CAAC;IAMD,MAAM,CAAC,aAAa,CAAC,EAAU;QAC7B,OAAO,eAAe,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAC3C,CAAC;IAED,MAAM,CAAC,OAAO,CACZ,UAA8E,EAC9E,YAAgC,EAAE,EAClC,OAAa;QAEb,MAAM,aAAa,GAAG,IAAA,cAAK,EAAC,SAAS,CAAC,CAAC;QACvC,OAAO,eAAe,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,QAAiB,EAAE,EAAU,EAAE,GAAyB,EAAE,EAAE;YACpG,IAAI,aAAa,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE;gBAC9B,OAAO;aACR;YACD,UAAU,CAAC,QAAQ,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC;QAChC,CAAC,EAAE,OAAO,CAAC,CAAC;IACd,CAAC;;AAxCH,0CAyCC;AAvCiB,yBAAS,GAAyB,IAAI,GAAG,EAAE,CAAC","file":"instance-manager.js","sourcesContent":["import { array } from '@visactor/vutils';\nimport type { MaybeArray } from '../typings';\nimport type { IVChart } from './interface';\n\n/** vchart 全局实例管理类,为了防止与 ThemeManager 循环依赖,单独从 VChart 类抽出 */\nexport class InstanceManager {\n /** 全局实例 map */\n static readonly instances: Map<number, IVChart> = new Map();\n /** 注册实例 */\n static registerInstance(instance: IVChart) {\n InstanceManager.instances.set(instance.id, instance);\n }\n /** 注销实例 */\n static unregisterInstance(instance: IVChart) {\n InstanceManager.instances.delete(instance.id);\n }\n /**\n * 根据 vChart 实例的 id 获取 vChart 实例\n * @param id VChart 实例的 id,通过 vChart.id 获取\n * @returns\n */\n static getInstance(id: number): IVChart | undefined {\n return InstanceManager.instances.get(id);\n }\n /**\n * 根据图表 id 判断实例是否存在\n * @param id VChart 实例的 id,通过 vChart.id 获取\n * @returns\n */\n static instanceExist(id: number): boolean {\n return InstanceManager.instances.has(id);\n }\n\n static forEach(\n callbackfn: (instance: IVChart, id: number, map: Map<number, IVChart>) => void,\n excludeId: MaybeArray<number> = [],\n thisArg?: any\n ) {\n const excludeIdList = array(excludeId);\n return InstanceManager.instances.forEach((instance: IVChart, id: number, map: Map<number, IVChart>) => {\n if (excludeIdList.includes(id)) {\n return;\n }\n callbackfn(instance, id, map);\n }, thisArg);\n }\n}\n"]}
|
package/cjs/core/interface.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/core/interface.ts"],"names":[],"mappings":"","file":"interface.js","sourcesContent":["import type { DataSet, DataView } from '@visactor/vdataset';\n\nimport type { IParserOptions } from '@visactor/vdataset/es/parser';\nimport type {\n Datum,\n IMarkStateSpec,\n IRegionQuerier,\n IShowTooltipOption,\n ISpec,\n ITooltipHandler,\n Maybe,\n MaybeArray,\n StringOrNumber\n} from '../typings';\nimport type { IMorphConfig } from '../animation/spec';\nimport type { IBoundsLike } from '@visactor/vutils';\nimport type { EventCallback, EventParams, EventQuery, EventType } from '../event/interface';\nimport type { IMark } from '../mark/interface';\nimport type { ISeries } from '../series/interface/series';\nimport type { ITheme } from '../theme';\nimport type { IComponent } from '../component/interface';\nimport type { LayoutCallBack } from '../layout/interface';\nimport type { Compiler } from '../compile/compiler';\nimport type { IChart } from '../chart/interface';\nimport type { Stage } from '@visactor/vrender';\n\nexport interface IVChart {\n readonly id: number;\n\n /**\n * **同步**渲染图表。\n * @param morphConfig 图表 morph 动画配置,可选\n * @returns VChart 实例\n */\n renderSync: (morphConfig?: IMorphConfig) => IVChart;\n\n /**\n * **异步**渲染图表。\n * @async\n * @param morphConfig 图表 morph 动画配置,可选\n * @returns VChart 实例\n */\n renderAsync: (morphConfig?: IMorphConfig) => Promise<IVChart>;\n\n /**\n * **异步**更新数据。\n * @param id 数据 id\n * @param data 数据值\n * @param options 数据参数\n * @returns VChart 实例\n */\n updateData: (id: StringOrNumber, data: DataView | Datum[] | string, options?: IParserOptions) => Promise<IVChart>;\n\n /**\n * **异步**批量更新数据。\n * @param list 待更新的数据列表\n * @returns VChart 实例\n */\n updateDataInBatches: (list: { id: string; data: DataView | Datum[]; options?: IParserOptions }[]) => Promise<IVChart>;\n\n /**\n * **同步**更新数据。\n * @param id 数据 id\n * @param data 数据值\n * @param options 数据参数\n * @returns VChart 实例\n */\n updateDataSync: (id: StringOrNumber, data: DataView | Datum[], options?: IParserOptions) => IVChart;\n\n /**\n * **异步**spec 更新。\n * @param spec\n * @param forceMerge\n * @returns\n */\n updateSpec: (spec: ISpec, forceMerge?: boolean, morphConfig?: IMorphConfig) => Promise<IVChart>;\n\n /**\n * 更新绘制区域。\n * @param viewBox 绘制区域\n * @param reRender 是否重新渲染,默认为 true\n * @returns\n */\n updateViewBox: (viewBox: IBoundsLike, reRender?: boolean) => IVChart;\n\n /**\n * **异步方法**,图表尺寸更新方法。\n * @param width 宽度\n * @param height 高度\n * @returns VChart 当前实例\n */\n resize: (width: number, height: number) => Promise<IVChart>;\n\n /**\n * 销毁图表。\n */\n release: () => void;\n\n /**\n * 事件监听\n */\n on: ((eType: EventType, handler: EventCallback<EventParams>) => void) &\n ((eType: EventType, query: EventQuery, handler: EventCallback<EventParams>) => void);\n off: (eType: EventType, handler?: EventCallback<EventParams>) => void;\n\n /**\n * 更新或设置图元状态。\n * @param state 状态筛选器\n * @param filter 筛选器\n */\n updateState: (\n state: Record<string, Omit<IMarkStateSpec<unknown>, 'style'>>,\n filter?: (series: ISeries, mark: IMark, stateKey: string) => boolean //series + mark 筛选\n ) => void;\n\n /**\n * 更新图元选中状态。\n * @param datum hover 图元数据\n * @param filter 筛选器 用来筛选系列与mark\n * @param region region 筛选器\n */\n setSelected: (\n datum: MaybeArray<any> | null,\n filter?: (series: ISeries, mark: IMark) => boolean,\n region?: IRegionQuerier\n ) => void;\n\n /**\n * 更新图元 hover 状态\n * @param datum hover 图元数据\n * @param filter 筛选器 用来筛选系列与mark\n * @param region region 筛选器\n */\n setHovered: (\n datum: MaybeArray<Datum> | null,\n filter?: (series: ISeries, mark: IMark) => boolean,\n region?: IRegionQuerier\n ) => void;\n\n /**\n * 获取当前主题,会返回完整的主题配置\n * */\n getCurrentTheme: () => ITheme;\n\n /**\n * 获取当前主题名称(只能获取用户通过`setCurrentTheme`方法设置过的主题,默认值为`ThemeManager`统一设置的主题)\n */\n getCurrentThemeName: () => string;\n\n /**\n * **异步方法**, 设置当前主题。\n * @param name 主题名称\n * @returns\n */\n setCurrentTheme: (name: string) => Promise<IVChart>;\n\n /**\n * 自定义 TooltipHandler。\n * @param tooltipHandler\n */\n setTooltipHandler: (tooltipHandler: ITooltipHandler) => void;\n\n /**\n * 获取用户定义的 TooltipHandler\n * @returns ITooltipHandler\n */\n getTooltipHandlerByUser: () => ITooltipHandler | undefined;\n\n /**\n * 获取 TooltipHandler\n * @returns\n */\n getTooltipHandler: () => ITooltipHandler | undefined;\n\n /**\n * 手动调用展示 tooltip\n * @param datum 原始数据\n * @param options\n * @returns\n */\n showTooltip: (datum: Datum, options: IShowTooltipOption) => boolean;\n\n /**\n * 手动调用,关闭 tooltip\n * @returns\n */\n hideTooltip: () => boolean;\n\n // 图例相关 api\n /**\n * 根据图例组件 id 获取图例数据\n * @param id 组件 id\n * @returns\n */\n getLegendDataById: (id: string) => StringOrNumber[];\n\n /**\n * 根据图例组件索引获取图例数据\n * @param index 图例索引,默认为 0\n * @returns\n */\n getLegendDataByIndex: (index?: number) => StringOrNumber[];\n\n /**\n * 根据图例组件 id 获取当前图例的选中项\n * @param id 组件 id\n * @returns\n */\n getLegendSelectedDataById: (id: string) => StringOrNumber[];\n\n /**\n * 根据图例组件索引获取当前图例的选中项\n * @param index 图例索引,默认为 0\n * @returns\n */\n getLegendSelectedDataByIndex: (index?: number) => StringOrNumber[];\n\n /**\n * 根据图例组件 id 更新图例选中数据\n * @param id\n * @returns\n */\n setLegendSelectedDataById: (id: string, selectedData: StringOrNumber[]) => void;\n\n /**\n * 根据图例组件索引更新图例选中数据\n * @param index 图例索引,默认为 0\n * @returns\n */\n setLegendSelectedDataByIndex: (index: number, selectedData: StringOrNumber[]) => void;\n\n /**\n * **异步方法**返回一个包含图片展示的 data URI。\n * @returns data URI\n */\n getDataURL: () => Promise<any>;\n\n /**\n * **异步方法** 导出图表图片,只支持浏览器端。\n * @param name 保存的图片名称\n * @returns\n */\n exportImg: (name?: string) => Promise<void>;\n\n /**\n * 目前仅支持 node 环境,用于 node 端的图片导出\n * @returns\n */\n getImageBuffer: () => void;\n /**\n * 设置自定义布局\n */\n setLayout: (layout: LayoutCallBack) => void;\n /**\n * 强制重新布局\n */\n reLayout: () => void;\n\n /**\n * 获取编译器实例\n * @returns\n */\n getCompiler: () => Compiler;\n\n /**\n * Get the chart instance\n * 获取 Chart 图表实例。\n * @returns Chart 实例\n */\n getChart: () => Maybe<IChart>;\n\n /**\n * Get the renderer instance.\n * 获取渲染引擎实例。\n * @returns the instance of VRender Stage\n */\n getStage: () => Stage;\n\n /**\n * 获取 canvas dom\n * @returns HTMLCanvasElement | undefined\n */\n getCanvas: () => HTMLCanvasElement | undefined;\n\n /**\n * 获取图表的 dom 容器\n * @returns\n */\n getContainer: () => Maybe<HTMLElement>;\n\n /**\n * 获取图表所有的组件实例\n * @returns 组件实例\n */\n getComponents: () => IComponent[];\n\n /**\n * 获取图表的 DataSet 实例\n * @returns DataSet 实例\n */\n getDataSet: () => Maybe<DataSet>;\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/core/interface.ts"],"names":[],"mappings":"","file":"interface.js","sourcesContent":["import type { DataSet, DataView } from '@visactor/vdataset';\n\nimport type { IParserOptions } from '@visactor/vdataset/es/parser';\nimport type {\n Datum,\n IMarkStateSpec,\n IRegionQuerier,\n IShowTooltipOption,\n ISpec,\n ITooltipHandler,\n Maybe,\n MaybeArray,\n StringOrNumber\n} from '../typings';\nimport type { IMorphConfig } from '../animation/spec';\nimport type { IBoundsLike } from '@visactor/vutils';\nimport type { EventCallback, EventParams, EventQuery, EventType } from '../event/interface';\nimport type { IMark } from '../mark/interface';\nimport type { ISeries } from '../series/interface/series';\nimport type { ITheme } from '../theme';\nimport type { IComponent } from '../component/interface';\nimport type { LayoutCallBack } from '../layout/interface';\nimport type { Compiler } from '../compile/compiler';\nimport type { IChart } from '../chart/interface';\nimport type { Stage } from '@visactor/vrender';\n\nexport interface IVChart {\n readonly id: number;\n\n /**\n * **同步**渲染图表。\n * @param morphConfig 图表 morph 动画配置,可选\n * @returns VChart 实例\n */\n renderSync: (morphConfig?: IMorphConfig) => IVChart;\n\n /**\n * **异步**渲染图表。\n * @async\n * @param morphConfig 图表 morph 动画配置,可选\n * @returns VChart 实例\n */\n renderAsync: (morphConfig?: IMorphConfig) => Promise<IVChart>;\n\n /**\n * **异步**更新数据。\n * @param id 数据 id\n * @param data 数据值\n * @param options 数据参数\n * @returns VChart 实例\n */\n updateData: (id: StringOrNumber, data: DataView | Datum[] | string, options?: IParserOptions) => Promise<IVChart>;\n\n /**\n * **异步**批量更新数据。\n * @param list 待更新的数据列表\n * @returns VChart 实例\n */\n updateDataInBatches: (list: { id: string; data: DataView | Datum[]; options?: IParserOptions }[]) => Promise<IVChart>;\n\n /**\n * **同步**更新数据。\n * @param id 数据 id\n * @param data 数据值\n * @param options 数据参数\n * @returns VChart 实例\n */\n updateDataSync: (id: StringOrNumber, data: DataView | Datum[], options?: IParserOptions) => IVChart;\n\n /**\n * **异步**spec 更新。\n * @param spec\n * @param forceMerge\n * @returns\n */\n updateSpec: (spec: ISpec, forceMerge?: boolean, morphConfig?: IMorphConfig) => Promise<IVChart>;\n\n /**\n * 更新绘制区域。\n * @param viewBox 绘制区域\n * @param reRender 是否重新渲染,默认为 true\n * @returns\n */\n updateViewBox: (viewBox: IBoundsLike, reRender?: boolean) => IVChart;\n\n /**\n * **异步方法**,图表尺寸更新方法。\n * @param width 宽度\n * @param height 高度\n * @returns VChart 当前实例\n */\n resize: (width: number, height: number) => Promise<IVChart>;\n\n /**\n * 销毁图表。\n */\n release: () => void;\n\n /**\n * 事件监听\n */\n on: ((eType: EventType, handler: EventCallback<EventParams>) => void) &\n ((eType: EventType, query: EventQuery, handler: EventCallback<EventParams>) => void);\n off: (eType: EventType, handler?: EventCallback<EventParams>) => void;\n\n /**\n * 更新或设置图元状态。\n * @param state 状态筛选器\n * @param filter 筛选器\n */\n updateState: (\n state: Record<string, Omit<IMarkStateSpec<unknown>, 'style'>>,\n filter?: (series: ISeries, mark: IMark, stateKey: string) => boolean //series + mark 筛选\n ) => void;\n\n /**\n * 更新图元选中状态。\n * @param datum hover 图元数据\n * @param filter 筛选器 用来筛选系列与mark\n * @param region region 筛选器\n */\n setSelected: (\n datum: MaybeArray<any> | null,\n filter?: (series: ISeries, mark: IMark) => boolean,\n region?: IRegionQuerier\n ) => void;\n\n /**\n * 更新图元 hover 状态\n * @param datum hover 图元数据\n * @param filter 筛选器 用来筛选系列与mark\n * @param region region 筛选器\n */\n setHovered: (\n datum: MaybeArray<Datum> | null,\n filter?: (series: ISeries, mark: IMark) => boolean,\n region?: IRegionQuerier\n ) => void;\n\n /**\n * 获取当前主题,会返回完整的主题配置\n * */\n getCurrentTheme: () => ITheme;\n\n /**\n * 获取当前主题名称(只能获取用户通过`setCurrentTheme`方法设置过的主题,默认值为`ThemeManager`统一设置的主题)\n */\n getCurrentThemeName: () => string;\n\n /**\n * **异步方法**, 设置当前主题。\n * @param name 主题名称\n * @returns\n */\n setCurrentTheme: (name: string) => Promise<IVChart>;\n\n /**\n * 自定义 TooltipHandler。\n * @param tooltipHandler\n */\n setTooltipHandler: (tooltipHandler: ITooltipHandler) => void;\n\n /**\n * 获取用户定义的 TooltipHandler\n * @returns ITooltipHandler\n */\n getTooltipHandlerByUser: () => ITooltipHandler | undefined;\n\n /**\n * 获取 TooltipHandler\n * @returns\n */\n getTooltipHandler: () => ITooltipHandler | undefined;\n\n /**\n * 手动调用展示 tooltip\n * @param datum 原始数据\n * @param options\n * @returns\n */\n showTooltip: (datum: Datum, options: IShowTooltipOption) => boolean;\n\n /**\n * 手动调用,关闭 tooltip\n * @returns\n */\n hideTooltip: () => boolean;\n\n // 图例相关 api\n /**\n * 根据图例组件 id 获取图例数据\n * @param id 组件 id\n * @returns\n */\n getLegendDataById: (id: string) => StringOrNumber[];\n\n /**\n * 根据图例组件索引获取图例数据\n * @param index 图例索引,默认为 0\n * @returns\n */\n getLegendDataByIndex: (index?: number) => StringOrNumber[];\n\n /**\n * 根据图例组件 id 获取当前图例的选中项\n * @param id 组件 id\n * @returns\n */\n getLegendSelectedDataById: (id: string) => StringOrNumber[];\n\n /**\n * 根据图例组件索引获取当前图例的选中项\n * @param index 图例索引,默认为 0\n * @returns\n */\n getLegendSelectedDataByIndex: (index?: number) => StringOrNumber[];\n\n /**\n * 根据图例组件 id 更新图例选中数据\n * @param id\n * @returns\n */\n setLegendSelectedDataById: (id: string, selectedData: StringOrNumber[]) => void;\n\n /**\n * 根据图例组件索引更新图例选中数据\n * @param index 图例索引,默认为 0\n * @returns\n */\n setLegendSelectedDataByIndex: (index: number, selectedData: StringOrNumber[]) => void;\n\n /**\n * **异步方法**返回一个包含图片展示的 data URI。\n * @returns data URI\n */\n getDataURL: () => Promise<any>;\n\n /**\n * **异步方法** 导出图表图片,只支持浏览器端。\n * @param name 保存的图片名称\n * @returns\n */\n exportImg: (name?: string) => Promise<void>;\n\n /**\n * 目前仅支持 node 环境,用于 node 端的图片导出\n * @returns\n */\n getImageBuffer: () => void;\n /**\n * 设置自定义布局\n */\n setLayout: (layout: LayoutCallBack) => void;\n /**\n * 强制重新布局\n */\n reLayout: () => void;\n\n /**\n * 获取编译器实例\n * @returns\n */\n getCompiler: () => Compiler;\n\n /**\n * Get the chart instance\n * 获取 Chart 图表实例。\n * @returns Chart 实例\n */\n getChart: () => Maybe<IChart>;\n\n /**\n * Get the renderer instance.\n * 获取渲染引擎实例。\n * @returns the instance of VRender Stage\n */\n getStage: () => Stage;\n\n /**\n * 获取 canvas dom\n * @returns HTMLCanvasElement | undefined\n */\n getCanvas: () => HTMLCanvasElement | undefined;\n\n /**\n * 获取图表的 dom 容器\n * @returns\n */\n getContainer: () => Maybe<HTMLElement>;\n\n /**\n * 获取图表所有的组件实例\n * @returns 组件实例\n */\n getComponents: () => IComponent[];\n\n /**\n * 获取图表的 DataSet 实例\n * @returns DataSet 实例\n */\n getDataSet: () => Maybe<DataSet>;\n}\n\nexport interface IGlobalConfig {\n /** 是否全局显示唯一 tooltip */\n uniqueTooltip?: boolean;\n /** 是否监测图表 dom 变化自动 release */\n // TODO\n // autoRelease?: boolean;\n}\n"]}
|