UNPKG

@visactor/vchart

Version:

charts lib based @visactor/VGrammar

104 lines (92 loc) 4.92 kB
import { getContainerSize, isString } from "@visactor/vutils"; import { array, isMiniAppLikeMode, isTrueBrowser, isValid } from "../util"; import { mergeSpec } from "@visactor/vutils-extension"; import { vglobal } from "../vrender-bridge"; export function setDefaultCrosshairForCartesianChart(spec) { spec.crosshair = array(spec.crosshair || {}).map((crosshairCfg => mergeSpec({ ["horizontal" === spec.direction ? "yField" : "xField"]: { visible: !0, line: { visible: !0, type: "rect" } } }, crosshairCfg))); } export function calculateChartSize(spec, option, defaultSize) { var _a; const {width: userWidth, height: userHeight} = spec; if (isValid(userWidth) && isValid(userHeight)) return { width: userWidth, height: userHeight }; let width = defaultSize.width, height = defaultSize.height; const container = option.container, canvas = option.canvas; if (container) { const {width: containerWidth, height: containerHeight} = getContainerSize(container, defaultSize.width, defaultSize.height); width = containerWidth, height = containerHeight; } else if (canvas && isTrueBrowser(option.mode)) { let canvasNode; canvasNode = isString(canvas) ? vglobal.getElementById(canvas) : canvas; const {width: containerWidth, height: containerHeight} = getContainerSize(canvasNode, defaultSize.width, defaultSize.height); width = containerWidth, height = containerHeight; } else if (isMiniAppLikeMode(option.mode) && (null === (_a = option.modeParams) || void 0 === _a ? void 0 : _a.domref)) { const domRef = option.modeParams.domref; width = domRef.width, height = domRef.height; } return width = null != userWidth ? userWidth : width, height = null != userHeight ? userHeight : height, { width: width, height: height }; } const UPDATE_SPEC_EFFECT_KEYS = [ "remake", "compile", "render", "layout", "data", "scaleDomain", "series", "component", "animation", "localOnly" ]; function mergeUpdateSpecEffects(target, ...sources) { sources.forEach((source => { const sourceEffects = null == source ? void 0 : source.effects; if (!sourceEffects) return; target.effects || (target.effects = {}); const targetEffects = target.effects; UPDATE_SPEC_EFFECT_KEYS.forEach((key => { sourceEffects[key] && (targetEffects[key] = targetEffects[key] || sourceEffects[key]); })); })); } export function normalizeUpdateSpecEffects(result) { var _a; const effects = null !== (_a = result.effects) && void 0 !== _a ? _a : result.effects = {}; return result.reMake && (effects.remake = !0, effects.compile = !0, effects.data = !0, effects.scaleDomain = !0, effects.layout = !0, effects.render = !0), result.reCompile && (effects.compile = !0, effects.layout = !0, effects.render = !0), result.reRender && (effects.render = !0), result.reSize && (effects.layout = !0, effects.render = !0), effects; } export function isUpdateSpecResultLocalOnly(result) { const effects = result.effects; return !(!(null == effects ? void 0 : effects.localOnly) || result.reMake || result.reCompile || result.reRender || result.reSize || effects.remake || effects.compile || effects.render || effects.layout || effects.data || effects.scaleDomain || effects.series || result.reTransformSpec || result.reAnimate || result.changeTheme || result.changeBackground); } export function isUpdateSpecResultComponentOnly(result) { const effects = result.effects; return !(!(null == effects ? void 0 : effects.component) || result.reMake || result.reCompile || result.reSize || effects.remake || effects.compile || effects.data || effects.scaleDomain || effects.series || effects.animation || result.reTransformSpec || result.reAnimate || result.changeTheme || result.changeBackground); } export function mergeUpdateResult(target, ...sources) { const merge = key => sources.reduce(((value, cur) => value || (null == cur ? void 0 : cur[key])), target[key]); return Object.assign(target, { change: merge("change"), reCompile: merge("reCompile"), reMake: merge("reMake"), reRender: merge("reRender"), reSize: merge("reSize"), reTransformSpec: merge("reTransformSpec"), changeTheme: merge("changeTheme"), changeBackground: merge("changeBackground") }), mergeUpdateSpecEffects(target, ...sources), target; } export function getTrimPaddingConfig(chartType, spec) { return "line" === chartType || "area" === chartType || "common" === chartType && spec.series.every((item => "area" === item.type || "line" === item.type)) ? { paddingInner: 1, paddingOuter: 0 } : { paddingOuter: 0 }; } //# sourceMappingURL=util.js.map