@visactor/vchart
Version:
charts lib based @visactor/VGrammar
112 lines (99 loc) • 5.75 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: !0
}), exports.getTrimPaddingConfig = exports.mergeUpdateResult = exports.isUpdateSpecResultComponentOnly = exports.isUpdateSpecResultLocalOnly = exports.normalizeUpdateSpecEffects = exports.calculateChartSize = exports.setDefaultCrosshairForCartesianChart = void 0;
const vutils_1 = require("@visactor/vutils"), util_1 = require("../util"), vutils_extension_1 = require("@visactor/vutils-extension"), vrender_bridge_1 = require("../vrender-bridge");
function setDefaultCrosshairForCartesianChart(spec) {
spec.crosshair = (0, util_1.array)(spec.crosshair || {}).map((crosshairCfg => (0,
vutils_extension_1.mergeSpec)({
["horizontal" === spec.direction ? "yField" : "xField"]: {
visible: !0,
line: {
visible: !0,
type: "rect"
}
}
}, crosshairCfg)));
}
function calculateChartSize(spec, option, defaultSize) {
var _a;
const {width: userWidth, height: userHeight} = spec;
if ((0, util_1.isValid)(userWidth) && (0, util_1.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} = (0, vutils_1.getContainerSize)(container, defaultSize.width, defaultSize.height);
width = containerWidth, height = containerHeight;
} else if (canvas && (0, util_1.isTrueBrowser)(option.mode)) {
let canvasNode;
canvasNode = (0, vutils_1.isString)(canvas) ? vrender_bridge_1.vglobal.getElementById(canvas) : canvas;
const {width: containerWidth, height: containerHeight} = (0, vutils_1.getContainerSize)(canvasNode, defaultSize.width, defaultSize.height);
width = containerWidth, height = containerHeight;
} else if ((0, util_1.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
};
}
exports.setDefaultCrosshairForCartesianChart = setDefaultCrosshairForCartesianChart,
exports.calculateChartSize = calculateChartSize;
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]);
}));
}));
}
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;
}
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);
}
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);
}
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;
}
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
};
}
exports.normalizeUpdateSpecEffects = normalizeUpdateSpecEffects, exports.isUpdateSpecResultLocalOnly = isUpdateSpecResultLocalOnly,
exports.isUpdateSpecResultComponentOnly = isUpdateSpecResultComponentOnly, exports.mergeUpdateResult = mergeUpdateResult,
exports.getTrimPaddingConfig = getTrimPaddingConfig;
//# sourceMappingURL=util.js.map