UNPKG

@visactor/vchart

Version:

charts lib based @visactor/VGrammar

175 lines (168 loc) 8.54 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: !0 }), exports.registerCirclePackingSeries = exports.CirclePackingSeries = void 0; const vutils_1 = require("@visactor/vutils"), factory_1 = require("../../core/factory"), type_1 = require("../interface/type"), cartesian_1 = require("../cartesian/cartesian"), register_1 = require("../../data/register"), circle_packing_1 = require("../../data/transforms/circle-packing"), interface_1 = require("../../compile/mark/interface"), data_1 = require("../../constant/data"), attribute_1 = require("../../constant/attribute"), hierarchy_1 = require("../../constant/hierarchy"), flatten_1 = require("../../data/transforms/flatten"), tooltip_helper_1 = require("./tooltip-helper"), data_key_1 = require("../../data/transforms/data-key"), add_property_1 = require("../../data/transforms/add-property"), utils_1 = require("../../animation/utils"), config_1 = require("../../animation/config"), animation_1 = require("./animation"), drillable_1 = require("../../interaction/drill/drillable"), arc_1 = require("../../mark/arc"), text_1 = require("../../mark/text"), constant_1 = require("./constant"), hierarchy_2 = require("../util/hierarchy"), circle_packing_2 = require("../../theme/builtin/common/series/circle-packing"); class CirclePackingSeries extends cartesian_1.CartesianSeries { constructor() { super(...arguments), this.type = type_1.SeriesTypeEnum.circlePacking; } setCategoryField(f) { return this._categoryField = f, this._categoryField; } getCategoryField() { return this._categoryField; } setValueField(f) { return this._valueField = f, this._valueField; } getValueField() { return this._valueField; } getDimensionField() { return [ this._categoryField ]; } getMeasureField() { return [ this._valueField ]; } setAttrFromSpec() { var _a; super.setAttrFromSpec(), this.setCategoryField(this._spec.categoryField), this.setValueField(this._spec.valueField), this.setSeriesField(null !== (_a = this._spec.seriesField) && void 0 !== _a ? _a : hierarchy_1.DEFAULT_HIERARCHY_ROOT), this._spec.drill && this.initDrillable({ event: this.event, mode: this._option.mode, drillField: () => { var _a; return null !== (_a = this._spec.drillField) && void 0 !== _a ? _a : data_1.DEFAULT_DATA_KEY; }, getRawData: () => this.getRawData() }), this._circlePacking = this._spec.circlePacking, this._label = this._spec.label, this._layoutPadding = this._spec.layoutPadding; } initData() { super.initData(); const rawData = this.getRawData(); (0, vutils_1.isNil)(rawData) || (this._spec.drill && this.initDrillableData(this._dataSet), (0, register_1.registerDataSetInstanceTransform)(this._dataSet, "circlePackingLayout", circle_packing_1.circlePackingLayout), (0, register_1.registerDataSetInstanceTransform)(this._dataSet, "flatten", flatten_1.flatten), rawData.transform({ type: "circlePackingLayout", options: () => ({ nodeKey: this._categoryField, padding: this._layoutPadding, includeRoot: !1, width: this.getLayoutRect().width || 1, height: this.getLayoutRect().height || 1 }) }), rawData.transform({ type: "flatten", options: { callback: node => { if (node.datum) { const nodeData = node.datum[node.depth]; return Object.assign(Object.assign({}, node), nodeData); } return node; } } })); } _addDataIndexAndKey() { const rawData = this.getRawData(); (0, vutils_1.isNil)(null == rawData ? void 0 : rawData.dataSet) || ((0, register_1.registerDataSetInstanceTransform)(rawData.dataSet, "addVChartProperty", add_property_1.addVChartProperty), rawData.transform({ type: "addVChartProperty", options: { beforeCall: data_key_1.initHierarchyKeyMap.bind(this), call: data_key_1.addHierarchyDataKey } })); } initMark() { this._initCirclePackingMark(), this._initLabelMark(); } initMarkStyle() { this._initCirclePackingMarkStyle(), this._initLabelMarkStyle(); } _initCirclePackingMark() { var _a; if (!1 === (null === (_a = this._circlePacking) || void 0 === _a ? void 0 : _a.visible)) return; const circlePacking = this._createMark(CirclePackingSeries.mark.circlePacking, { isSeriesMark: !0 }); this._circlePackingMark = circlePacking; } _initCirclePackingMarkStyle() { (0, vutils_1.isNil)(this._circlePackingMark) || this.setMarkStyle(this._circlePackingMark, { x: d => d.x, y: d => d.y, outerRadius: d => d.radius, innerRadius: 0, startAngle: 0, endAngle: 2 * Math.PI, fill: this.getColorAttribute(), zIndex: d => d.depth }, interface_1.STATE_VALUE_ENUM.STATE_NORMAL, attribute_1.AttributeLevel.Series); } _initLabelMark() { var _a; if (!1 === (null === (_a = this._label) || void 0 === _a ? void 0 : _a.visible)) return; const labelMark = this._createMark(CirclePackingSeries.mark.label, { isSeriesMark: !1 }); this._labelMark = labelMark; } _initLabelMarkStyle() { (0, vutils_1.isNil)(this._labelMark) || this.setMarkStyle(this._labelMark, { x: d => d.x, y: d => d.y, text: d => d.key, cursor: "pointer" }, interface_1.STATE_VALUE_ENUM.STATE_NORMAL, attribute_1.AttributeLevel.Series); } getStatisticFields() { return (0, hierarchy_2.appendHierarchyFields)(super.getStatisticFields(), this._categoryField, this._valueField); } initTooltip() { this._tooltipHelper = new tooltip_helper_1.CirclePackingTooltipHelper(this), this._circlePackingMark && this._tooltipHelper.activeTriggerSet.mark.add(this._circlePackingMark), this._labelMark && this._tooltipHelper.activeTriggerSet.mark.add(this._labelMark); } initAnimation() { var _a; const appearPreset = null === (_a = this._spec.animationAppear) || void 0 === _a ? void 0 : _a.preset; this.getMarksInType("arc").forEach((mark => { var _a; mark.setAnimationConfig((0, utils_1.animationConfig)(null === (_a = factory_1.Factory.getAnimationInKey("circlePacking")) || void 0 === _a ? void 0 : _a(void 0, appearPreset), (0, utils_1.userAnimationConfig)(mark.name, this._spec, this._markAttributeContext))); })), this.getMarksInType("text").forEach((mark => { var _a; mark.setAnimationConfig((0, utils_1.animationConfig)(null === (_a = factory_1.Factory.getAnimationInKey("scaleInOut")) || void 0 === _a ? void 0 : _a(), (0, utils_1.userAnimationConfig)(mark.name, this._spec, this._markAttributeContext))); })); } initEvent() { super.initEvent(), this._spec.drill && this.bindDrillEvent(); } onLayoutEnd() { super.onLayoutEnd(), this._rawData.reRunAllTransform(); } _noAnimationDataKey(datum, index) {} getActiveMarks() { return [ this._circlePackingMark ]; } getMarkData(datum) { return (null == datum ? void 0 : datum.datum) ? datum.datum[datum.datum.length - 1] : datum; } } exports.CirclePackingSeries = CirclePackingSeries, CirclePackingSeries.type = type_1.SeriesTypeEnum.circlePacking, CirclePackingSeries.mark = constant_1.circlePackingSeriesMark, CirclePackingSeries.builtInTheme = { circlePacking: circle_packing_2.circlePacking }, (0, vutils_1.mixin)(CirclePackingSeries, drillable_1.Drillable); const registerCirclePackingSeries = () => { factory_1.Factory.registerSeries(CirclePackingSeries.type, CirclePackingSeries), (0, arc_1.registerArcMark)(), (0, text_1.registerTextMark)(), (0, config_1.registerScaleInOutAnimation)(), (0, animation_1.registerCirclePackingAnimation)(); }; exports.registerCirclePackingSeries = registerCirclePackingSeries; //# sourceMappingURL=circle-packing.js.map