@visactor/vchart
Version:
charts lib based @visactor/VGrammar
27 lines (26 loc) • 1.57 kB
JavaScript
export class VerticalBarSplitStrategy {
constructor() {
this.name = "verticalBarSplit";
}
shouldApply(mark, graphic) {
var _a, _b;
const isRectMark = "rect" === mark.type, isVertical = "vertical" === (null === (_a = mark.model) || void 0 === _a ? void 0 : _a.direction), diffAttrs = (null === (_b = graphic.context) || void 0 === _b ? void 0 : _b.diffAttrs) || {};
return isRectMark && isVertical && ("x" in diffAttrs || "width" in diffAttrs || "x1" in diffAttrs) && ("y" in diffAttrs || "height" in diffAttrs || "y1" in diffAttrs);
}
split(mark, graphic) {
var _a;
const diffAttrs = (null === (_a = graphic.context) || void 0 === _a ? void 0 : _a.diffAttrs) || {}, dimensionAttrs = {}, valueAttrs = {};
Object.entries(diffAttrs).forEach((([key, value]) => {
"x" === key || "width" === key || "x1" === key ? dimensionAttrs[key] = value : "y" === key || "height" === key || "y1" === key ? valueAttrs[key] = value : dimensionAttrs[key] = value;
}));
const context = graphic.context, fieldX = context.fieldX, originalFieldX = context.originalFieldX, isGrouped = Array.isArray(fieldX) && fieldX.length > 1, stack2group = (originalFieldX ? !(Array.isArray(originalFieldX) && originalFieldX.length > 1) : !isGrouped) && isGrouped;
return [ {
attrs: dimensionAttrs,
order: stack2group ? 1 : 2
}, {
attrs: valueAttrs,
order: stack2group ? 2 : 1
} ];
}
}
//# sourceMappingURL=vertical-bar-split.js.map