{"version":3,"file":"js/chunk-vendors-0ee8b09c-legacy.f6aa5344.js","mappings":"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","sources":["webpack://i4proportal/./node_modules/echarts/lib/chart/bar.js","webpack://i4proportal/./node_modules/echarts/lib/chart/bar/BarSeries.js","webpack://i4proportal/./node_modules/echarts/lib/chart/bar/BarView.js","webpack://i4proportal/./node_modules/echarts/lib/chart/bar/BaseBarSeries.js","webpack://i4proportal/./node_modules/echarts/lib/chart/bar/PictorialBarSeries.js","webpack://i4proportal/./node_modules/echarts/lib/chart/bar/PictorialBarView.js","webpack://i4proportal/./node_modules/echarts/lib/chart/bar/barItemStyle.js","webpack://i4proportal/./node_modules/echarts/lib/chart/bar/helper.js","webpack://i4proportal/./node_modules/echarts/lib/chart/boxplot.js","webpack://i4proportal/./node_modules/echarts/lib/chart/boxplot/BoxplotSeries.js","webpack://i4proportal/./node_modules/echarts/lib/chart/boxplot/BoxplotView.js","webpack://i4proportal/./node_modules/echarts/lib/chart/boxplot/boxplotLayout.js","webpack://i4proportal/./node_modules/echarts/lib/chart/boxplot/boxplotVisual.js","webpack://i4proportal/./node_modules/echarts/lib/chart/candlestick.js","webpack://i4proportal/./node_modules/echarts/lib/chart/candlestick/CandlestickSeries.js","webpack://i4proportal/./node_modules/echarts/lib/chart/candlestick/CandlestickView.js","webpack://i4proportal/./node_modules/echarts/lib/chart/candlestick/candlestickLayout.js","webpack://i4proportal/./node_modules/echarts/lib/chart/candlestick/candlestickVisual.js","webpack://i4proportal/./node_modules/echarts/lib/chart/candlestick/preprocessor.js","webpack://i4proportal/./node_modules/echarts/lib/chart/custom.js"],"sourcesContent":["\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar echarts = require(\"../echarts\");\n\nvar zrUtil = require(\"zrender/lib/core/util\");\n\nvar _barGrid = require(\"../layout/barGrid\");\n\nvar layout = _barGrid.layout;\nvar largeLayout = _barGrid.largeLayout;\n\nrequire(\"../coord/cartesian/Grid\");\n\nrequire(\"./bar/BarSeries\");\n\nrequire(\"./bar/BarView\");\n\nrequire(\"../component/gridSimple\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n// In case developer forget to include grid component\necharts.registerLayout(echarts.PRIORITY.VISUAL.LAYOUT, zrUtil.curry(layout, 'bar')); // Use higher prority to avoid to be blocked by other overall layout, which do not\n// only exist in this module, but probably also exist in other modules, like `barPolar`.\n\necharts.registerLayout(echarts.PRIORITY.VISUAL.PROGRESSIVE_LAYOUT, largeLayout);\necharts.registerVisual({\n seriesType: 'bar',\n reset: function (seriesModel) {\n // Visual coding for legend\n seriesModel.getData().setVisual('legendSymbol', 'roundRect');\n }\n});","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar BaseBarSeries = require(\"./BaseBarSeries\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar _default = BaseBarSeries.extend({\n type: 'series.bar',\n dependencies: ['grid', 'polar'],\n brushSelector: 'rect',\n\n /**\n * @override\n */\n getProgressive: function () {\n // Do not support progressive in normal mode.\n return this.get('large') ? this.get('progressive') : false;\n },\n\n /**\n * @override\n */\n getProgressiveThreshold: function () {\n // Do not support progressive in normal mode.\n var progressiveThreshold = this.get('progressiveThreshold');\n var largeThreshold = this.get('largeThreshold');\n\n if (largeThreshold > progressiveThreshold) {\n progressiveThreshold = largeThreshold;\n }\n\n return progressiveThreshold;\n },\n defaultOption: {\n // If clipped\n // Only available on cartesian2d\n clip: true,\n // If use caps on two sides of bars\n // Only available on tangential polar bar\n roundCap: false,\n showBackground: false,\n backgroundStyle: {\n color: 'rgba(180, 180, 180, 0.2)',\n borderColor: null,\n borderWidth: 0,\n borderType: 'solid',\n borderRadius: 0,\n shadowBlur: 0,\n shadowColor: null,\n shadowOffsetX: 0,\n shadowOffsetY: 0,\n opacity: 1\n }\n }\n});\n\nmodule.exports = _default;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar _config = require(\"../../config\");\n\nvar __DEV__ = _config.__DEV__;\n\nvar echarts = require(\"../../echarts\");\n\nvar zrUtil = require(\"zrender/lib/core/util\");\n\nvar graphic = require(\"../../util/graphic\");\n\nvar _helper = require(\"./helper\");\n\nvar setLabel = _helper.setLabel;\n\nvar Model = require(\"../../model/Model\");\n\nvar barItemStyle = require(\"./barItemStyle\");\n\nvar Path = require(\"zrender/lib/graphic/Path\");\n\nvar Group = require(\"zrender/lib/container/Group\");\n\nvar _throttle = require(\"../../util/throttle\");\n\nvar throttle = _throttle.throttle;\n\nvar _createClipPathFromCoordSys = require(\"../helper/createClipPathFromCoordSys\");\n\nvar createClipPath = _createClipPathFromCoordSys.createClipPath;\n\nvar Sausage = require(\"../../util/shape/sausage\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar BAR_BORDER_WIDTH_QUERY = ['itemStyle', 'barBorderWidth'];\nvar _eventPos = [0, 0]; // FIXME\n// Just for compatible with ec2.\n\nzrUtil.extend(Model.prototype, barItemStyle);\n\nfunction getClipArea(coord, data) {\n var coordSysClipArea = coord.getArea && coord.getArea();\n\n if (coord.type === 'cartesian2d') {\n var baseAxis = coord.getBaseAxis(); // When boundaryGap is false or using time axis. bar may exceed the grid.\n // We should not clip this part.\n // See test/bar2.html\n\n if (baseAxis.type !== 'category' || !baseAxis.onBand) {\n var expandWidth = data.getLayout('bandWidth');\n\n if (baseAxis.isHorizontal()) {\n coordSysClipArea.x -= expandWidth;\n coordSysClipArea.width += expandWidth * 2;\n } else {\n coordSysClipArea.y -= expandWidth;\n coordSysClipArea.height += expandWidth * 2;\n }\n }\n }\n\n return coordSysClipArea;\n}\n\nvar _default = echarts.extendChartView({\n type: 'bar',\n render: function (seriesModel, ecModel, api) {\n this._updateDrawMode(seriesModel);\n\n var coordinateSystemType = seriesModel.get('coordinateSystem');\n\n if (coordinateSystemType === 'cartesian2d' || coordinateSystemType === 'polar') {\n this._isLargeDraw ? this._renderLarge(seriesModel, ecModel, api) : this._renderNormal(seriesModel, ecModel, api);\n } else {}\n\n return this.group;\n },\n incrementalPrepareRender: function (seriesModel, ecModel, api) {\n this._clear();\n\n this._updateDrawMode(seriesModel);\n },\n incrementalRender: function (params, seriesModel, ecModel, api) {\n // Do not support progressive in normal mode.\n this._incrementalRenderLarge(params, seriesModel);\n },\n _updateDrawMode: function (seriesModel) {\n var isLargeDraw = seriesModel.pipelineContext.large;\n\n if (this._isLargeDraw == null || isLargeDraw ^ this._isLargeDraw) {\n this._isLargeDraw = isLargeDraw;\n\n this._clear();\n }\n },\n _renderNormal: function (seriesModel, ecModel, api) {\n var group = this.group;\n var data = seriesModel.getData();\n var oldData = this._data;\n var coord = seriesModel.coordinateSystem;\n var baseAxis = coord.getBaseAxis();\n var isHorizontalOrRadial;\n\n if (coord.type === 'cartesian2d') {\n isHorizontalOrRadial = baseAxis.isHorizontal();\n } else if (coord.type === 'polar') {\n isHorizontalOrRadial = baseAxis.dim === 'angle';\n }\n\n var animationModel = seriesModel.isAnimationEnabled() ? seriesModel : null;\n var needsClip = seriesModel.get('clip', true);\n var coordSysClipArea = getClipArea(coord, data); // If there is clipPath created in large mode. Remove it.\n\n group.removeClipPath(); // We don't use clipPath in normal mode because we needs a perfect animation\n // And don't want the label are clipped.\n\n var roundCap = seriesModel.get('roundCap', true);\n var drawBackground = seriesModel.get('showBackground', true);\n var backgroundModel = seriesModel.getModel('backgroundStyle');\n var barBorderRadius = backgroundModel.get('barBorderRadius') || 0;\n var bgEls = [];\n var oldBgEls = this._backgroundEls || [];\n\n var createBackground = function (dataIndex) {\n var bgLayout = getLayout[coord.type](data, dataIndex);\n var bgEl = createBackgroundEl(coord, isHorizontalOrRadial, bgLayout);\n bgEl.useStyle(backgroundModel.getBarItemStyle()); // Only cartesian2d support borderRadius.\n\n if (coord.type === 'cartesian2d') {\n bgEl.setShape('r', barBorderRadius);\n }\n\n bgEls[dataIndex] = bgEl;\n return bgEl;\n };\n\n data.diff(oldData).add(function (dataIndex) {\n var itemModel = data.getItemModel(dataIndex);\n var layout = getLayout[coord.type](data, dataIndex, itemModel);\n\n if (drawBackground) {\n createBackground(dataIndex);\n } // If dataZoom in filteMode: 'empty', the baseValue can be set as NaN in \"axisProxy\".\n\n\n if (!data.hasValue(dataIndex)) {\n return;\n }\n\n if (needsClip) {\n // Clip will modify the layout params.\n // And return a boolean to determine if the shape are fully clipped.\n var isClipped = clip[coord.type](coordSysClipArea, layout);\n\n if (isClipped) {\n group.remove(el);\n return;\n }\n }\n\n var el = elementCreator[coord.type](dataIndex, layout, isHorizontalOrRadial, animationModel, false, roundCap);\n data.setItemGraphicEl(dataIndex, el);\n group.add(el);\n updateStyle(el, data, dataIndex, itemModel, layout, seriesModel, isHorizontalOrRadial, coord.type === 'polar');\n }).update(function (newIndex, oldIndex) {\n var itemModel = data.getItemModel(newIndex);\n var layout = getLayout[coord.type](data, newIndex, itemModel);\n\n if (drawBackground) {\n var bgEl;\n\n if (oldBgEls.length === 0) {\n bgEl = createBackground(oldIndex);\n } else {\n bgEl = oldBgEls[oldIndex];\n bgEl.useStyle(backgroundModel.getBarItemStyle()); // Only cartesian2d support borderRadius.\n\n if (coord.type === 'cartesian2d') {\n bgEl.setShape('r', barBorderRadius);\n }\n\n bgEls[newIndex] = bgEl;\n }\n\n var bgLayout = getLayout[coord.type](data, newIndex);\n var shape = createBackgroundShape(isHorizontalOrRadial, bgLayout, coord);\n graphic.updateProps(bgEl, {\n shape: shape\n }, animationModel, newIndex);\n }\n\n var el = oldData.getItemGraphicEl(oldIndex);\n\n if (!data.hasValue(newIndex)) {\n group.remove(el);\n return;\n }\n\n if (needsClip) {\n var isClipped = clip[coord.type](coordSysClipArea, layout);\n\n if (isClipped) {\n group.remove(el);\n return;\n }\n }\n\n if (el) {\n graphic.updateProps(el, {\n shape: layout\n }, animationModel, newIndex);\n } else {\n el = elementCreator[coord.type](newIndex, layout, isHorizontalOrRadial, animationModel, true, roundCap);\n }\n\n data.setItemGraphicEl(newIndex, el); // Add back\n\n group.add(el);\n updateStyle(el, data, newIndex, itemModel, layout, seriesModel, isHorizontalOrRadial, coord.type === 'polar');\n }).remove(function (dataIndex) {\n var el = oldData.getItemGraphicEl(dataIndex);\n\n if (coord.type === 'cartesian2d') {\n el && removeRect(dataIndex, animationModel, el);\n } else {\n el && removeSector(dataIndex, animationModel, el);\n }\n }).execute();\n var bgGroup = this._backgroundGroup || (this._backgroundGroup = new Group());\n bgGroup.removeAll();\n\n for (var i = 0; i < bgEls.length; ++i) {\n bgGroup.add(bgEls[i]);\n }\n\n group.add(bgGroup);\n this._backgroundEls = bgEls;\n this._data = data;\n },\n _renderLarge: function (seriesModel, ecModel, api) {\n this._clear();\n\n createLarge(seriesModel, this.group); // Use clipPath in large mode.\n\n var clipPath = seriesModel.get('clip', true) ? createClipPath(seriesModel.coordinateSystem, false, seriesModel) : null;\n\n if (clipPath) {\n this.group.setClipPath(clipPath);\n } else {\n this.group.removeClipPath();\n }\n },\n _incrementalRenderLarge: function (params, seriesModel) {\n this._removeBackground();\n\n createLarge(seriesModel, this.group, true);\n },\n dispose: zrUtil.noop,\n remove: function (ecModel) {\n this._clear(ecModel);\n },\n _clear: function (ecModel) {\n var group = this.group;\n var data = this._data;\n\n if (ecModel && ecModel.get('animation') && data && !this._isLargeDraw) {\n this._removeBackground();\n\n this._backgroundEls = [];\n data.eachItemGraphicEl(function (el) {\n if (el.type === 'sector') {\n removeSector(el.dataIndex, ecModel, el);\n } else {\n removeRect(el.dataIndex, ecModel, el);\n }\n });\n } else {\n group.removeAll();\n }\n\n this._data = null;\n },\n _removeBackground: function () {\n this.group.remove(this._backgroundGroup);\n this._backgroundGroup = null;\n }\n});\n\nvar mathMax = Math.max;\nvar mathMin = Math.min;\nvar clip = {\n cartesian2d: function (coordSysBoundingRect, layout) {\n var signWidth = layout.width < 0 ? -1 : 1;\n var signHeight = layout.height < 0 ? -1 : 1; // Needs positive width and height\n\n if (signWidth < 0) {\n layout.x += layout.width;\n layout.width = -layout.width;\n }\n\n if (signHeight < 0) {\n layout.y += layout.height;\n layout.height = -layout.height;\n }\n\n var x = mathMax(layout.x, coordSysBoundingRect.x);\n var x2 = mathMin(layout.x + layout.width, coordSysBoundingRect.x + coordSysBoundingRect.width);\n var y = mathMax(layout.y, coordSysBoundingRect.y);\n var y2 = mathMin(layout.y + layout.height, coordSysBoundingRect.y + coordSysBoundingRect.height);\n layout.x = x;\n layout.y = y;\n layout.width = x2 - x;\n layout.height = y2 - y;\n var clipped = layout.width < 0 || layout.height < 0; // Reverse back\n\n if (signWidth < 0) {\n layout.x += layout.width;\n layout.width = -layout.width;\n }\n\n if (signHeight < 0) {\n layout.y += layout.height;\n layout.height = -layout.height;\n }\n\n return clipped;\n },\n polar: function (coordSysClipArea, layout) {\n var signR = layout.r0 <= layout.r ? 1 : -1; // Make sure r is larger than r0\n\n if (signR < 0) {\n var r = layout.r;\n layout.r = layout.r0;\n layout.r0 = r;\n }\n\n var r = mathMin(layout.r, coordSysClipArea.r);\n var r0 = mathMax(layout.r0, coordSysClipArea.r0);\n layout.r = r;\n layout.r0 = r0;\n var clipped = r - r0 < 0; // Reverse back\n\n if (signR < 0) {\n var r = layout.r;\n layout.r = layout.r0;\n layout.r0 = r;\n }\n\n return clipped;\n }\n};\nvar elementCreator = {\n cartesian2d: function (dataIndex, layout, isHorizontal, animationModel, isUpdate) {\n var rect = new graphic.Rect({\n shape: zrUtil.extend({}, layout),\n z2: 1\n });\n rect.name = 'item'; // Animation\n\n if (animationModel) {\n var rectShape = rect.shape;\n var animateProperty = isHorizontal ? 'height' : 'width';\n var animateTarget = {};\n rectShape[animateProperty] = 0;\n animateTarget[animateProperty] = layout[animateProperty];\n graphic[isUpdate ? 'updateProps' : 'initProps'](rect, {\n shape: animateTarget\n }, animationModel, dataIndex);\n }\n\n return rect;\n },\n polar: function (dataIndex, layout, isRadial, animationModel, isUpdate, roundCap) {\n // Keep the same logic with bar in catesion: use end value to control\n // direction. Notice that if clockwise is true (by default), the sector\n // will always draw clockwisely, no matter whether endAngle is greater\n // or less than startAngle.\n var clockwise = layout.startAngle < layout.endAngle;\n var ShapeClass = !isRadial && roundCap ? Sausage : graphic.Sector;\n var sector = new ShapeClass({\n shape: zrUtil.defaults({\n clockwise: clockwise\n }, layout),\n z2: 1\n });\n sector.name = 'item'; // Animation\n\n if (animationModel) {\n var sectorShape = sector.shape;\n var animateProperty = isRadial ? 'r' : 'endAngle';\n var animateTarget = {};\n sectorShape[animateProperty] = isRadial ? 0 : layout.startAngle;\n animateTarget[animateProperty] = layout[animateProperty];\n graphic[isUpdate ? 'updateProps' : 'initProps'](sector, {\n shape: animateTarget\n }, animationModel, dataIndex);\n }\n\n return sector;\n }\n};\n\nfunction removeRect(dataIndex, animationModel, el) {\n // Not show text when animating\n el.style.text = null;\n graphic.updateProps(el, {\n shape: {\n width: 0\n }\n }, animationModel, dataIndex, function () {\n el.parent && el.parent.remove(el);\n });\n}\n\nfunction removeSector(dataIndex, animationModel, el) {\n // Not show text when animating\n el.style.text = null;\n graphic.updateProps(el, {\n shape: {\n r: el.shape.r0\n }\n }, animationModel, dataIndex, function () {\n el.parent && el.parent.remove(el);\n });\n}\n\nvar getLayout = {\n // itemModel is only used to get borderWidth, which is not needed\n // when calculating bar background layout.\n cartesian2d: function (data, dataIndex, itemModel) {\n var layout = data.getItemLayout(dataIndex);\n var fixedLineWidth = itemModel ? getLineWidth(itemModel, layout) : 0; // fix layout with lineWidth\n\n var signX = layout.width > 0 ? 1 : -1;\n var signY = layout.height > 0 ? 1 : -1;\n return {\n x: layout.x + signX * fixedLineWidth / 2,\n y: layout.y + signY * fixedLineWidth / 2,\n width: layout.width - signX * fixedLineWidth,\n height: layout.height - signY * fixedLineWidth\n };\n },\n polar: function (data, dataIndex, itemModel) {\n var layout = data.getItemLayout(dataIndex);\n return {\n cx: layout.cx,\n cy: layout.cy,\n r0: layout.r0,\n r: layout.r,\n startAngle: layout.startAngle,\n endAngle: layout.endAngle\n };\n }\n};\n\nfunction isZeroOnPolar(layout) {\n return layout.startAngle != null && layout.endAngle != null && layout.startAngle === layout.endAngle;\n}\n\nfunction updateStyle(el, data, dataIndex, itemModel, layout, seriesModel, isHorizontal, isPolar) {\n var color = data.getItemVisual(dataIndex, 'color');\n var opacity = data.getItemVisual(dataIndex, 'opacity');\n var stroke = data.getVisual('borderColor');\n var itemStyleModel = itemModel.getModel('itemStyle');\n var hoverStyle = itemModel.getModel('emphasis.itemStyle').getBarItemStyle();\n\n if (!isPolar) {\n el.setShape('r', itemStyleModel.get('barBorderRadius') || 0);\n }\n\n el.useStyle(zrUtil.defaults({\n stroke: isZeroOnPolar(layout) ? 'none' : stroke,\n fill: isZeroOnPolar(layout) ? 'none' : color,\n opacity: opacity\n }, itemStyleModel.getBarItemStyle()));\n var cursorStyle = itemModel.getShallow('cursor');\n cursorStyle && el.attr('cursor', cursorStyle);\n var labelPositionOutside = isHorizontal ? layout.height > 0 ? 'bottom' : 'top' : layout.width > 0 ? 'left' : 'right';\n\n if (!isPolar) {\n setLabel(el.style, hoverStyle, itemModel, color, seriesModel, dataIndex, labelPositionOutside);\n }\n\n if (isZeroOnPolar(layout)) {\n hoverStyle.fill = hoverStyle.stroke = 'none';\n }\n\n graphic.setHoverStyle(el, hoverStyle);\n} // In case width or height are too small.\n\n\nfunction getLineWidth(itemModel, rawLayout) {\n var lineWidth = itemModel.get(BAR_BORDER_WIDTH_QUERY) || 0; // width or height may be NaN for empty data\n\n var width = isNaN(rawLayout.width) ? Number.MAX_VALUE : Math.abs(rawLayout.width);\n var height = isNaN(rawLayout.height) ? Number.MAX_VALUE : Math.abs(rawLayout.height);\n return Math.min(lineWidth, width, height);\n}\n\nvar LargePath = Path.extend({\n type: 'largeBar',\n shape: {\n points: []\n },\n buildPath: function (ctx, shape) {\n // Drawing lines is more efficient than drawing\n // a whole line or drawing rects.\n var points = shape.points;\n var startPoint = this.__startPoint;\n var baseDimIdx = this.__baseDimIdx;\n\n for (var i = 0; i < points.length; i += 2) {\n startPoint[baseDimIdx] = points[i + baseDimIdx];\n ctx.moveTo(startPoint[0], startPoint[1]);\n ctx.lineTo(points[i], points[i + 1]);\n }\n }\n});\n\nfunction createLarge(seriesModel, group, incremental) {\n // TODO support polar\n var data = seriesModel.getData();\n var startPoint = [];\n var baseDimIdx = data.getLayout('valueAxisHorizontal') ? 1 : 0;\n startPoint[1 - baseDimIdx] = data.getLayout('valueAxisStart');\n var largeDataIndices = data.getLayout('largeDataIndices');\n var barWidth = data.getLayout('barWidth');\n var backgroundModel = seriesModel.getModel('backgroundStyle');\n var drawBackground = seriesModel.get('showBackground', true);\n\n if (drawBackground) {\n var points = data.getLayout('largeBackgroundPoints');\n var backgroundStartPoint = [];\n backgroundStartPoint[1 - baseDimIdx] = data.getLayout('backgroundStart');\n var bgEl = new LargePath({\n shape: {\n points: points\n },\n incremental: !!incremental,\n __startPoint: backgroundStartPoint,\n __baseDimIdx: baseDimIdx,\n __largeDataIndices: largeDataIndices,\n __barWidth: barWidth,\n silent: true,\n z2: 0\n });\n setLargeBackgroundStyle(bgEl, backgroundModel, data);\n group.add(bgEl);\n }\n\n var el = new LargePath({\n shape: {\n points: data.getLayout('largePoints')\n },\n incremental: !!incremental,\n __startPoint: startPoint,\n __baseDimIdx: baseDimIdx,\n __largeDataIndices: largeDataIndices,\n __barWidth: barWidth\n });\n group.add(el);\n setLargeStyle(el, seriesModel, data); // Enable tooltip and user mouse/touch event handlers.\n\n el.seriesIndex = seriesModel.seriesIndex;\n\n if (!seriesModel.get('silent')) {\n el.on('mousedown', largePathUpdateDataIndex);\n el.on('mousemove', largePathUpdateDataIndex);\n }\n} // Use throttle to avoid frequently traverse to find dataIndex.\n\n\nvar largePathUpdateDataIndex = throttle(function (event) {\n var largePath = this;\n var dataIndex = largePathFindDataIndex(largePath, event.offsetX, event.offsetY);\n largePath.dataIndex = dataIndex >= 0 ? dataIndex : null;\n}, 30, false);\n\nfunction largePathFindDataIndex(largePath, x, y) {\n var baseDimIdx = largePath.__baseDimIdx;\n var valueDimIdx = 1 - baseDimIdx;\n var points = largePath.shape.points;\n var largeDataIndices = largePath.__largeDataIndices;\n var barWidthHalf = Math.abs(largePath.__barWidth / 2);\n var startValueVal = largePath.__startPoint[valueDimIdx];\n _eventPos[0] = x;\n _eventPos[1] = y;\n var pointerBaseVal = _eventPos[baseDimIdx];\n var pointerValueVal = _eventPos[1 - baseDimIdx];\n var baseLowerBound = pointerBaseVal - barWidthHalf;\n var baseUpperBound = pointerBaseVal + barWidthHalf;\n\n for (var i = 0, len = points.length / 2; i < len; i++) {\n var ii = i * 2;\n var barBaseVal = points[ii + baseDimIdx];\n var barValueVal = points[ii + valueDimIdx];\n\n if (barBaseVal >= baseLowerBound && barBaseVal <= baseUpperBound && (startValueVal <= barValueVal ? pointerValueVal >= startValueVal && pointerValueVal <= barValueVal : pointerValueVal >= barValueVal && pointerValueVal <= startValueVal)) {\n return largeDataIndices[i];\n }\n }\n\n return -1;\n}\n\nfunction setLargeStyle(el, seriesModel, data) {\n var borderColor = data.getVisual('borderColor') || data.getVisual('color');\n var itemStyle = seriesModel.getModel('itemStyle').getItemStyle(['color', 'borderColor']);\n el.useStyle(itemStyle);\n el.style.fill = null;\n el.style.stroke = borderColor;\n el.style.lineWidth = data.getLayout('barWidth');\n}\n\nfunction setLargeBackgroundStyle(el, backgroundModel, data) {\n var borderColor = backgroundModel.get('borderColor') || backgroundModel.get('color');\n var itemStyle = backgroundModel.getItemStyle(['color', 'borderColor']);\n el.useStyle(itemStyle);\n el.style.fill = null;\n el.style.stroke = borderColor;\n el.style.lineWidth = data.getLayout('barWidth');\n}\n\nfunction createBackgroundShape(isHorizontalOrRadial, layout, coord) {\n var coordLayout;\n var isPolar = coord.type === 'polar';\n\n if (isPolar) {\n coordLayout = coord.getArea();\n } else {\n coordLayout = coord.grid.getRect();\n }\n\n if (isPolar) {\n return {\n cx: coordLayout.cx,\n cy: coordLayout.cy,\n r0: isHorizontalOrRadial ? coordLayout.r0 : layout.r0,\n r: isHorizontalOrRadial ? coordLayout.r : layout.r,\n startAngle: isHorizontalOrRadial ? layout.startAngle : 0,\n endAngle: isHorizontalOrRadial ? layout.endAngle : Math.PI * 2\n };\n } else {\n return {\n x: isHorizontalOrRadial ? layout.x : coordLayout.x,\n y: isHorizontalOrRadial ? coordLayout.y : layout.y,\n width: isHorizontalOrRadial ? layout.width : coordLayout.width,\n height: isHorizontalOrRadial ? coordLayout.height : layout.height\n };\n }\n}\n\nfunction createBackgroundEl(coord, isHorizontalOrRadial, layout) {\n var ElementClz = coord.type === 'polar' ? graphic.Sector : graphic.Rect;\n return new ElementClz({\n shape: createBackgroundShape(isHorizontalOrRadial, layout, coord),\n silent: true,\n z2: 0\n });\n}\n\nmodule.exports = _default;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar SeriesModel = require(\"../../model/Series\");\n\nvar createListFromArray = require(\"../helper/createListFromArray\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar _default = SeriesModel.extend({\n type: 'series.__base_bar__',\n getInitialData: function (option, ecModel) {\n return createListFromArray(this.getSource(), this, {\n useEncodeDefaulter: true\n });\n },\n getMarkerPosition: function (value) {\n var coordSys = this.coordinateSystem;\n\n if (coordSys) {\n // PENDING if clamp ?\n var pt = coordSys.dataToPoint(coordSys.clampData(value));\n var data = this.getData();\n var offset = data.getLayout('offset');\n var size = data.getLayout('size');\n var offsetIndex = coordSys.getBaseAxis().isHorizontal() ? 0 : 1;\n pt[offsetIndex] += offset + size / 2;\n return pt;\n }\n\n return [NaN, NaN];\n },\n defaultOption: {\n zlevel: 0,\n // 一级层叠\n z: 2,\n // 二级层叠\n coordinateSystem: 'cartesian2d',\n legendHoverLink: true,\n // stack: null\n // Cartesian coordinate system\n // xAxisIndex: 0,\n // yAxisIndex: 0,\n // 最小高度改为0\n barMinHeight: 0,\n // 最小角度为0,仅对极坐标系下的柱状图有效\n barMinAngle: 0,\n // cursor: null,\n large: false,\n largeThreshold: 400,\n progressive: 3e3,\n progressiveChunkMode: 'mod',\n // barMaxWidth: null,\n // In cartesian, the default value is 1. Otherwise null.\n // barMinWidth: null,\n // 默认自适应\n // barWidth: null,\n // 柱间距离,默认为柱形宽度的30%,可设固定值\n // barGap: '30%',\n // 类目间柱形距离,默认为类目间距的20%,可设固定值\n // barCategoryGap: '20%',\n // label: {\n // show: false\n // },\n itemStyle: {},\n emphasis: {}\n }\n});\n\nmodule.exports = _default;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar BaseBarSeries = require(\"./BaseBarSeries\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar PictorialBarSeries = BaseBarSeries.extend({\n type: 'series.pictorialBar',\n dependencies: ['grid'],\n defaultOption: {\n symbol: 'circle',\n // Customized bar shape\n symbolSize: null,\n // Can be ['100%', '100%'], null means auto.\n symbolRotate: null,\n symbolPosition: null,\n // 'start' or 'end' or 'center', null means auto.\n symbolOffset: null,\n symbolMargin: null,\n // start margin and end margin. Can be a number or a percent string.\n // Auto margin by default.\n symbolRepeat: false,\n // false/null/undefined, means no repeat.\n // Can be true, means auto calculate repeat times and cut by data.\n // Can be a number, specifies repeat times, and do not cut by data.\n // Can be 'fixed', means auto calculate repeat times but do not cut by data.\n symbolRepeatDirection: 'end',\n // 'end' means from 'start' to 'end'.\n symbolClip: false,\n symbolBoundingData: null,\n // Can be 60 or -40 or [-40, 60]\n symbolPatternSize: 400,\n // 400 * 400 px\n barGap: '-100%',\n // In most case, overlap is needed.\n // z can be set in data item, which is z2 actually.\n // Disable progressive\n progressive: 0,\n hoverAnimation: false // Open only when needed.\n\n },\n getInitialData: function (option) {\n // Disable stack.\n option.stack = null;\n return PictorialBarSeries.superApply(this, 'getInitialData', arguments);\n }\n});\nvar _default = PictorialBarSeries;\nmodule.exports = _default;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar echarts = require(\"../../echarts\");\n\nvar zrUtil = require(\"zrender/lib/core/util\");\n\nvar graphic = require(\"../../util/graphic\");\n\nvar _symbol = require(\"../../util/symbol\");\n\nvar createSymbol = _symbol.createSymbol;\n\nvar _number = require(\"../../util/number\");\n\nvar parsePercent = _number.parsePercent;\nvar isNumeric = _number.isNumeric;\n\nvar _helper = require(\"./helper\");\n\nvar setLabel = _helper.setLabel;\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar BAR_BORDER_WIDTH_QUERY = ['itemStyle', 'borderWidth']; // index: +isHorizontal\n\nvar LAYOUT_ATTRS = [{\n xy: 'x',\n wh: 'width',\n index: 0,\n posDesc: ['left', 'right']\n}, {\n xy: 'y',\n wh: 'height',\n index: 1,\n posDesc: ['top', 'bottom']\n}];\nvar pathForLineWidth = new graphic.Circle();\nvar BarView = echarts.extendChartView({\n type: 'pictorialBar',\n render: function (seriesModel, ecModel, api) {\n var group = this.group;\n var data = seriesModel.getData();\n var oldData = this._data;\n var cartesian = seriesModel.coordinateSystem;\n var baseAxis = cartesian.getBaseAxis();\n var isHorizontal = !!baseAxis.isHorizontal();\n var coordSysRect = cartesian.grid.getRect();\n var opt = {\n ecSize: {\n width: api.getWidth(),\n height: api.getHeight()\n },\n seriesModel: seriesModel,\n coordSys: cartesian,\n coordSysExtent: [[coordSysRect.x, coordSysRect.x + coordSysRect.width], [coordSysRect.y, coordSysRect.y + coordSysRect.height]],\n isHorizontal: isHorizontal,\n valueDim: LAYOUT_ATTRS[+isHorizontal],\n categoryDim: LAYOUT_ATTRS[1 - isHorizontal]\n };\n data.diff(oldData).add(function (dataIndex) {\n if (!data.hasValue(dataIndex)) {\n return;\n }\n\n var itemModel = getItemModel(data, dataIndex);\n var symbolMeta = getSymbolMeta(data, dataIndex, itemModel, opt);\n var bar = createBar(data, opt, symbolMeta);\n data.setItemGraphicEl(dataIndex, bar);\n group.add(bar);\n updateCommon(bar, opt, symbolMeta);\n }).update(function (newIndex, oldIndex) {\n var bar = oldData.getItemGraphicEl(oldIndex);\n\n if (!data.hasValue(newIndex)) {\n group.remove(bar);\n return;\n }\n\n var itemModel = getItemModel(data, newIndex);\n var symbolMeta = getSymbolMeta(data, newIndex, itemModel, opt);\n var pictorialShapeStr = getShapeStr(data, symbolMeta);\n\n if (bar && pictorialShapeStr !== bar.__pictorialShapeStr) {\n group.remove(bar);\n data.setItemGraphicEl(newIndex, null);\n bar = null;\n }\n\n if (bar) {\n updateBar(bar, opt, symbolMeta);\n } else {\n bar = createBar(data, opt, symbolMeta, true);\n }\n\n data.setItemGraphicEl(newIndex, bar);\n bar.__pictorialSymbolMeta = symbolMeta; // Add back\n\n group.add(bar);\n updateCommon(bar, opt, symbolMeta);\n }).remove(function (dataIndex) {\n var bar = oldData.getItemGraphicEl(dataIndex);\n bar && removeBar(oldData, dataIndex, bar.__pictorialSymbolMeta.animationModel, bar);\n }).execute();\n this._data = data;\n return this.group;\n },\n dispose: zrUtil.noop,\n remove: function (ecModel, api) {\n var group = this.group;\n var data = this._data;\n\n if (ecModel.get('animation')) {\n if (data) {\n data.eachItemGraphicEl(function (bar) {\n removeBar(data, bar.dataIndex, ecModel, bar);\n });\n }\n } else {\n group.removeAll();\n }\n }\n}); // Set or calculate default value about symbol, and calculate layout info.\n\nfunction getSymbolMeta(data, dataIndex, itemModel, opt) {\n var layout = data.getItemLayout(dataIndex);\n var symbolRepeat = itemModel.get('symbolRepeat');\n var symbolClip = itemModel.get('symbolClip');\n var symbolPosition = itemModel.get('symbolPosition') || 'start';\n var symbolRotate = itemModel.get('symbolRotate');\n var rotation = (symbolRotate || 0) * Math.PI / 180 || 0;\n var symbolPatternSize = itemModel.get('symbolPatternSize') || 2;\n var isAnimationEnabled = itemModel.isAnimationEnabled();\n var symbolMeta = {\n dataIndex: dataIndex,\n layout: layout,\n itemModel: itemModel,\n symbolType: data.getItemVisual(dataIndex, 'symbol') || 'circle',\n color: data.getItemVisual(dataIndex, 'color'),\n symbolClip: symbolClip,\n symbolRepeat: symbolRepeat,\n symbolRepeatDirection: itemModel.get('symbolRepeatDirection'),\n symbolPatternSize: symbolPatternSize,\n rotation: rotation,\n animationModel: isAnimationEnabled ? itemModel : null,\n hoverAnimation: isAnimationEnabled && itemModel.get('hoverAnimation'),\n z2: itemModel.getShallow('z', true) || 0\n };\n prepareBarLength(itemModel, symbolRepeat, layout, opt, symbolMeta);\n prepareSymbolSize(data, dataIndex, layout, symbolRepeat, symbolClip, symbolMeta.boundingLength, symbolMeta.pxSign, symbolPatternSize, opt, symbolMeta);\n prepareLineWidth(itemModel, symbolMeta.symbolScale, rotation, opt, symbolMeta);\n var symbolSize = symbolMeta.symbolSize;\n var symbolOffset = itemModel.get('symbolOffset');\n\n if (zrUtil.isArray(symbolOffset)) {\n symbolOffset = [parsePercent(symbolOffset[0], symbolSize[0]), parsePercent(symbolOffset[1], symbolSize[1])];\n }\n\n prepareLayoutInfo(itemModel, symbolSize, layout, symbolRepeat, symbolClip, symbolOffset, symbolPosition, symbolMeta.valueLineWidth, symbolMeta.boundingLength, symbolMeta.repeatCutLength, opt, symbolMeta);\n return symbolMeta;\n} // bar length can be negative.\n\n\nfunction prepareBarLength(itemModel, symbolRepeat, layout, opt, output) {\n var valueDim = opt.valueDim;\n var symbolBoundingData = itemModel.get('symbolBoundingData');\n var valueAxis = opt.coordSys.getOtherAxis(opt.coordSys.getBaseAxis());\n var zeroPx = valueAxis.toGlobalCoord(valueAxis.dataToCoord(0));\n var pxSignIdx = 1 - +(layout[valueDim.wh] <= 0);\n var boundingLength;\n\n if (zrUtil.isArray(symbolBoundingData)) {\n var symbolBoundingExtent = [convertToCoordOnAxis(valueAxis, symbolBoundingData[0]) - zeroPx, convertToCoordOnAxis(valueAxis, symbolBoundingData[1]) - zeroPx];\n symbolBoundingExtent[1] < symbolBoundingExtent[0] && symbolBoundingExtent.reverse();\n boundingLength = symbolBoundingExtent[pxSignIdx];\n } else if (symbolBoundingData != null) {\n boundingLength = convertToCoordOnAxis(valueAxis, symbolBoundingData) - zeroPx;\n } else if (symbolRepeat) {\n boundingLength = opt.coordSysExtent[valueDim.index][pxSignIdx] - zeroPx;\n } else {\n boundingLength = layout[valueDim.wh];\n }\n\n output.boundingLength = boundingLength;\n\n if (symbolRepeat) {\n output.repeatCutLength = layout[valueDim.wh];\n }\n\n output.pxSign = boundingLength > 0 ? 1 : boundingLength < 0 ? -1 : 0;\n}\n\nfunction convertToCoordOnAxis(axis, value) {\n return axis.toGlobalCoord(axis.dataToCoord(axis.scale.parse(value)));\n} // Support ['100%', '100%']\n\n\nfunction prepareSymbolSize(data, dataIndex, layout, symbolRepeat, symbolClip, boundingLength, pxSign, symbolPatternSize, opt, output) {\n var valueDim = opt.valueDim;\n var categoryDim = opt.categoryDim;\n var categorySize = Math.abs(layout[categoryDim.wh]);\n var symbolSize = data.getItemVisual(dataIndex, 'symbolSize');\n\n if (zrUtil.isArray(symbolSize)) {\n symbolSize = symbolSize.slice();\n } else {\n if (symbolSize == null) {\n symbolSize = '100%';\n }\n\n symbolSize = [symbolSize, symbolSize];\n } // Note: percentage symbolSize (like '100%') do not consider lineWidth, because it is\n // to complicated to calculate real percent value if considering scaled lineWidth.\n // So the actual size will bigger than layout size if lineWidth is bigger than zero,\n // which can be tolerated in pictorial chart.\n\n\n symbolSize[categoryDim.index] = parsePercent(symbolSize[categoryDim.index], categorySize);\n symbolSize[valueDim.index] = parsePercent(symbolSize[valueDim.index], symbolRepeat ? categorySize : Math.abs(boundingLength));\n output.symbolSize = symbolSize; // If x or y is less than zero, show reversed shape.\n\n var symbolScale = output.symbolScale = [symbolSize[0] / symbolPatternSize, symbolSize[1] / symbolPatternSize]; // Follow convention, 'right' and 'top' is the normal scale.\n\n symbolScale[valueDim.index] *= (opt.isHorizontal ? -1 : 1) * pxSign;\n}\n\nfunction prepareLineWidth(itemModel, symbolScale, rotation, opt, output) {\n // In symbols are drawn with scale, so do not need to care about the case that width\n // or height are too small. But symbol use strokeNoScale, where acture lineWidth should\n // be calculated.\n var valueLineWidth = itemModel.get(BAR_BORDER_WIDTH_QUERY) || 0;\n\n if (valueLineWidth) {\n pathForLineWidth.attr({\n scale: symbolScale.slice(),\n rotation: rotation\n });\n pathForLineWidth.updateTransform();\n valueLineWidth /= pathForLineWidth.getLineScale();\n valueLineWidth *= symbolScale[opt.valueDim.index];\n }\n\n output.valueLineWidth = valueLineWidth;\n}\n\nfunction prepareLayoutInfo(itemModel, symbolSize, layout, symbolRepeat, symbolClip, symbolOffset, symbolPosition, valueLineWidth, boundingLength, repeatCutLength, opt, output) {\n var categoryDim = opt.categoryDim;\n var valueDim = opt.valueDim;\n var pxSign = output.pxSign;\n var unitLength = Math.max(symbolSize[valueDim.index] + valueLineWidth, 0);\n var pathLen = unitLength; // Note: rotation will not effect the layout of symbols, because user may\n // want symbols to rotate on its center, which should not be translated\n // when rotating.\n\n if (symbolRepeat) {\n var absBoundingLength = Math.abs(boundingLength);\n var symbolMargin = zrUtil.retrieve(itemModel.get('symbolMargin'), '15%') + '';\n var hasEndGap = false;\n\n if (symbolMargin.lastIndexOf('!') === symbolMargin.length - 1) {\n hasEndGap = true;\n symbolMargin = symbolMargin.slice(0, symbolMargin.length - 1);\n }\n\n symbolMargin = parsePercent(symbolMargin, symbolSize[valueDim.index]);\n var uLenWithMargin = Math.max(unitLength + symbolMargin * 2, 0); // When symbol margin is less than 0, margin at both ends will be subtracted\n // to ensure that all of the symbols will not be overflow the given area.\n\n var endFix = hasEndGap ? 0 : symbolMargin * 2; // Both final repeatTimes and final symbolMargin area calculated based on\n // boundingLength.\n\n var repeatSpecified = isNumeric(symbolRepeat);\n var repeatTimes = repeatSpecified ? symbolRepeat : toIntTimes((absBoundingLength + endFix) / uLenWithMargin); // Adjust calculate margin, to ensure each symbol is displayed\n // entirely in the given layout area.\n\n var mDiff = absBoundingLength - repeatTimes * unitLength;\n symbolMargin = mDiff / 2 / (hasEndGap ? repeatTimes : repeatTimes - 1);\n uLenWithMargin = unitLength + symbolMargin * 2;\n endFix = hasEndGap ? 0 : symbolMargin * 2; // Update repeatTimes when not all symbol will be shown.\n\n if (!repeatSpecified && symbolRepeat !== 'fixed') {\n repeatTimes = repeatCutLength ? toIntTimes((Math.abs(repeatCutLength) + endFix) / uLenWithMargin) : 0;\n }\n\n pathLen = repeatTimes * uLenWithMargin - endFix;\n output.repeatTimes = repeatTimes;\n output.symbolMargin = symbolMargin;\n }\n\n var sizeFix = pxSign * (pathLen / 2);\n var pathPosition = output.pathPosition = [];\n pathPosition[categoryDim.index] = layout[categoryDim.wh] / 2;\n pathPosition[valueDim.index] = symbolPosition === 'start' ? sizeFix : symbolPosition === 'end' ? boundingLength - sizeFix : boundingLength / 2; // 'center'\n\n if (symbolOffset) {\n pathPosition[0] += symbolOffset[0];\n pathPosition[1] += symbolOffset[1];\n }\n\n var bundlePosition = output.bundlePosition = [];\n bundlePosition[categoryDim.index] = layout[categoryDim.xy];\n bundlePosition[valueDim.index] = layout[valueDim.xy];\n var barRectShape = output.barRectShape = zrUtil.extend({}, layout);\n barRectShape[valueDim.wh] = pxSign * Math.max(Math.abs(layout[valueDim.wh]), Math.abs(pathPosition[valueDim.index] + sizeFix));\n barRectShape[categoryDim.wh] = layout[categoryDim.wh];\n var clipShape = output.clipShape = {}; // Consider that symbol may be overflow layout rect.\n\n clipShape[categoryDim.xy] = -layout[categoryDim.xy];\n clipShape[categoryDim.wh] = opt.ecSize[categoryDim.wh];\n clipShape[valueDim.xy] = 0;\n clipShape[valueDim.wh] = layout[valueDim.wh];\n}\n\nfunction createPath(symbolMeta) {\n var symbolPatternSize = symbolMeta.symbolPatternSize;\n var path = createSymbol( // Consider texture img, make a big size.\n symbolMeta.symbolType, -symbolPatternSize / 2, -symbolPatternSize / 2, symbolPatternSize, symbolPatternSize, symbolMeta.color);\n path.attr({\n culling: true\n });\n path.type !== 'image' && path.setStyle({\n strokeNoScale: true\n });\n return path;\n}\n\nfunction createOrUpdateRepeatSymbols(bar, opt, symbolMeta, isUpdate) {\n var bundle = bar.__pictorialBundle;\n var symbolSize = symbolMeta.symbolSize;\n var valueLineWidth = symbolMeta.valueLineWidth;\n var pathPosition = symbolMeta.pathPosition;\n var valueDim = opt.valueDim;\n var repeatTimes = symbolMeta.repeatTimes || 0;\n var index = 0;\n var unit = symbolSize[opt.valueDim.index] + valueLineWidth + symbolMeta.symbolMargin * 2;\n eachPath(bar, function (path) {\n path.__pictorialAnimationIndex = index;\n path.__pictorialRepeatTimes = repeatTimes;\n\n if (index < repeatTimes) {\n updateAttr(path, null, makeTarget(index), symbolMeta, isUpdate);\n } else {\n updateAttr(path, null, {\n scale: [0, 0]\n }, symbolMeta, isUpdate, function () {\n bundle.remove(path);\n });\n }\n\n updateHoverAnimation(path, symbolMeta);\n index++;\n });\n\n for (; index < repeatTimes; index++) {\n var path = createPath(symbolMeta);\n path.__pictorialAnimationIndex = index;\n path.__pictorialRepeatTimes = repeatTimes;\n bundle.add(path);\n var target = makeTarget(index);\n updateAttr(path, {\n position: target.position,\n scale: [0, 0]\n }, {\n scale: target.scale,\n rotation: target.rotation\n }, symbolMeta, isUpdate); // FIXME\n // If all emphasis/normal through action.\n\n path.on('mouseover', onMouseOver).on('mouseout', onMouseOut);\n updateHoverAnimation(path, symbolMeta);\n }\n\n function makeTarget(index) {\n var position = pathPosition.slice(); // (start && pxSign > 0) || (end && pxSign < 0): i = repeatTimes - index\n // Otherwise: i = index;\n\n var pxSign = symbolMeta.pxSign;\n var i = index;\n\n if (symbolMeta.symbolRepeatDirection === 'start' ? pxSign > 0 : pxSign < 0) {\n i = repeatTimes - 1 - index;\n }\n\n position[valueDim.index] = unit * (i - repeatTimes / 2 + 0.5) + pathPosition[valueDim.index];\n return {\n position: position,\n scale: symbolMeta.symbolScale.slice(),\n rotation: symbolMeta.rotation\n };\n }\n\n function onMouseOver() {\n eachPath(bar, function (path) {\n path.trigger('emphasis');\n });\n }\n\n function onMouseOut() {\n eachPath(bar, function (path) {\n path.trigger('normal');\n });\n }\n}\n\nfunction createOrUpdateSingleSymbol(bar, opt, symbolMeta, isUpdate) {\n var bundle = bar.__pictorialBundle;\n var mainPath = bar.__pictorialMainPath;\n\n if (!mainPath) {\n mainPath = bar.__pictorialMainPath = createPath(symbolMeta);\n bundle.add(mainPath);\n updateAttr(mainPath, {\n position: symbolMeta.pathPosition.slice(),\n scale: [0, 0],\n rotation: symbolMeta.rotation\n }, {\n scale: symbolMeta.symbolScale.slice()\n }, symbolMeta, isUpdate);\n mainPath.on('mouseover', onMouseOver).on('mouseout', onMouseOut);\n } else {\n updateAttr(mainPath, null, {\n position: symbolMeta.pathPosition.slice(),\n scale: symbolMeta.symbolScale.slice(),\n rotation: symbolMeta.rotation\n }, symbolMeta, isUpdate);\n }\n\n updateHoverAnimation(mainPath, symbolMeta);\n\n function onMouseOver() {\n this.trigger('emphasis');\n }\n\n function onMouseOut() {\n this.trigger('normal');\n }\n} // bar rect is used for label.\n\n\nfunction createOrUpdateBarRect(bar, symbolMeta, isUpdate) {\n var rectShape = zrUtil.extend({}, symbolMeta.barRectShape);\n var barRect = bar.__pictorialBarRect;\n\n if (!barRect) {\n barRect = bar.__pictorialBarRect = new graphic.Rect({\n z2: 2,\n shape: rectShape,\n silent: true,\n style: {\n stroke: 'transparent',\n fill: 'transparent',\n lineWidth: 0\n }\n });\n bar.add(barRect);\n } else {\n updateAttr(barRect, null, {\n shape: rectShape\n }, symbolMeta, isUpdate);\n }\n}\n\nfunction createOrUpdateClip(bar, opt, symbolMeta, isUpdate) {\n // If not clip, symbol will be remove and rebuilt.\n if (symbolMeta.symbolClip) {\n var clipPath = bar.__pictorialClipPath;\n var clipShape = zrUtil.extend({}, symbolMeta.clipShape);\n var valueDim = opt.valueDim;\n var animationModel = symbolMeta.animationModel;\n var dataIndex = symbolMeta.dataIndex;\n\n if (clipPath) {\n graphic.updateProps(clipPath, {\n shape: clipShape\n }, animationModel, dataIndex);\n } else {\n clipShape[valueDim.wh] = 0;\n clipPath = new graphic.Rect({\n shape: clipShape\n });\n\n bar.__pictorialBundle.setClipPath(clipPath);\n\n bar.__pictorialClipPath = clipPath;\n var target = {};\n target[valueDim.wh] = symbolMeta.clipShape[valueDim.wh];\n graphic[isUpdate ? 'updateProps' : 'initProps'](clipPath, {\n shape: target\n }, animationModel, dataIndex);\n }\n }\n}\n\nfunction getItemModel(data, dataIndex) {\n var itemModel = data.getItemModel(dataIndex);\n itemModel.getAnimationDelayParams = getAnimationDelayParams;\n itemModel.isAnimationEnabled = isAnimationEnabled;\n return itemModel;\n}\n\nfunction getAnimationDelayParams(path) {\n // The order is the same as the z-order, see `symbolRepeatDiretion`.\n return {\n index: path.__pictorialAnimationIndex,\n count: path.__pictorialRepeatTimes\n };\n}\n\nfunction isAnimationEnabled() {\n // `animation` prop can be set on itemModel in pictorial bar chart.\n return this.parentModel.isAnimationEnabled() && !!this.getShallow('animation');\n}\n\nfunction updateHoverAnimation(path, symbolMeta) {\n path.off('emphasis').off('normal');\n var scale = symbolMeta.symbolScale.slice();\n symbolMeta.hoverAnimation && path.on('emphasis', function () {\n this.animateTo({\n scale: [scale[0] * 1.1, scale[1] * 1.1]\n }, 400, 'elasticOut');\n }).on('normal', function () {\n this.animateTo({\n scale: scale.slice()\n }, 400, 'elasticOut');\n });\n}\n\nfunction createBar(data, opt, symbolMeta, isUpdate) {\n // bar is the main element for each data.\n var bar = new graphic.Group(); // bundle is used for location and clip.\n\n var bundle = new graphic.Group();\n bar.add(bundle);\n bar.__pictorialBundle = bundle;\n bundle.attr('position', symbolMeta.bundlePosition.slice());\n\n if (symbolMeta.symbolRepeat) {\n createOrUpdateRepeatSymbols(bar, opt, symbolMeta);\n } else {\n createOrUpdateSingleSymbol(bar, opt, symbolMeta);\n }\n\n createOrUpdateBarRect(bar, symbolMeta, isUpdate);\n createOrUpdateClip(bar, opt, symbolMeta, isUpdate);\n bar.__pictorialShapeStr = getShapeStr(data, symbolMeta);\n bar.__pictorialSymbolMeta = symbolMeta;\n return bar;\n}\n\nfunction updateBar(bar, opt, symbolMeta) {\n var animationModel = symbolMeta.animationModel;\n var dataIndex = symbolMeta.dataIndex;\n var bundle = bar.__pictorialBundle;\n graphic.updateProps(bundle, {\n position: symbolMeta.bundlePosition.slice()\n }, animationModel, dataIndex);\n\n if (symbolMeta.symbolRepeat) {\n createOrUpdateRepeatSymbols(bar, opt, symbolMeta, true);\n } else {\n createOrUpdateSingleSymbol(bar, opt, symbolMeta, true);\n }\n\n createOrUpdateBarRect(bar, symbolMeta, true);\n createOrUpdateClip(bar, opt, symbolMeta, true);\n}\n\nfunction removeBar(data, dataIndex, animationModel, bar) {\n // Not show text when animating\n var labelRect = bar.__pictorialBarRect;\n labelRect && (labelRect.style.text = null);\n var pathes = [];\n eachPath(bar, function (path) {\n pathes.push(path);\n });\n bar.__pictorialMainPath && pathes.push(bar.__pictorialMainPath); // I do not find proper remove animation for clip yet.\n\n bar.__pictorialClipPath && (animationModel = null);\n zrUtil.each(pathes, function (path) {\n graphic.updateProps(path, {\n scale: [0, 0]\n }, animationModel, dataIndex, function () {\n bar.parent && bar.parent.remove(bar);\n });\n });\n data.setItemGraphicEl(dataIndex, null);\n}\n\nfunction getShapeStr(data, symbolMeta) {\n return [data.getItemVisual(symbolMeta.dataIndex, 'symbol') || 'none', !!symbolMeta.symbolRepeat, !!symbolMeta.symbolClip].join(':');\n}\n\nfunction eachPath(bar, cb, context) {\n // Do not use Group#eachChild, because it do not support remove.\n zrUtil.each(bar.__pictorialBundle.children(), function (el) {\n el !== bar.__pictorialBarRect && cb.call(context, el);\n });\n}\n\nfunction updateAttr(el, immediateAttrs, animationAttrs, symbolMeta, isUpdate, cb) {\n immediateAttrs && el.attr(immediateAttrs); // when symbolCip used, only clip path has init animation, otherwise it would be weird effect.\n\n if (symbolMeta.symbolClip && !isUpdate) {\n animationAttrs && el.attr(animationAttrs);\n } else {\n animationAttrs && graphic[isUpdate ? 'updateProps' : 'initProps'](el, animationAttrs, symbolMeta.animationModel, symbolMeta.dataIndex, cb);\n }\n}\n\nfunction updateCommon(bar, opt, symbolMeta) {\n var color = symbolMeta.color;\n var dataIndex = symbolMeta.dataIndex;\n var itemModel = symbolMeta.itemModel; // Color must be excluded.\n // Because symbol provide setColor individually to set fill and stroke\n\n var normalStyle = itemModel.getModel('itemStyle').getItemStyle(['color']);\n var hoverStyle = itemModel.getModel('emphasis.itemStyle').getItemStyle();\n var cursorStyle = itemModel.getShallow('cursor');\n eachPath(bar, function (path) {\n // PENDING setColor should be before setStyle!!!\n path.setColor(color);\n path.setStyle(zrUtil.defaults({\n fill: color,\n opacity: symbolMeta.opacity\n }, normalStyle));\n graphic.setHoverStyle(path, hoverStyle);\n cursorStyle && (path.cursor = cursorStyle);\n path.z2 = symbolMeta.z2;\n });\n var barRectHoverStyle = {};\n var barPositionOutside = opt.valueDim.posDesc[+(symbolMeta.boundingLength > 0)];\n var barRect = bar.__pictorialBarRect;\n setLabel(barRect.style, barRectHoverStyle, itemModel, color, opt.seriesModel, dataIndex, barPositionOutside);\n graphic.setHoverStyle(barRect, barRectHoverStyle);\n}\n\nfunction toIntTimes(times) {\n var roundedTimes = Math.round(times); // Escapse accurate error\n\n return Math.abs(times - roundedTimes) < 1e-4 ? roundedTimes : Math.ceil(times);\n}\n\nvar _default = BarView;\nmodule.exports = _default;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar makeStyleMapper = require(\"../../model/mixin/makeStyleMapper\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar getBarItemStyle = makeStyleMapper([['fill', 'color'], ['stroke', 'borderColor'], ['lineWidth', 'borderWidth'], // Compatitable with 2\n['stroke', 'barBorderColor'], ['lineWidth', 'barBorderWidth'], ['opacity'], ['shadowBlur'], ['shadowOffsetX'], ['shadowOffsetY'], ['shadowColor']]);\nvar _default = {\n getBarItemStyle: function (excludes) {\n var style = getBarItemStyle(this, excludes);\n\n if (this.getBorderLineDash) {\n var lineDash = this.getBorderLineDash();\n lineDash && (style.lineDash = lineDash);\n }\n\n return style;\n }\n};\nmodule.exports = _default;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar graphic = require(\"../../util/graphic\");\n\nvar _labelHelper = require(\"../helper/labelHelper\");\n\nvar getDefaultLabel = _labelHelper.getDefaultLabel;\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nfunction setLabel(normalStyle, hoverStyle, itemModel, color, seriesModel, dataIndex, labelPositionOutside) {\n var labelModel = itemModel.getModel('label');\n var hoverLabelModel = itemModel.getModel('emphasis.label');\n graphic.setLabelStyle(normalStyle, hoverStyle, labelModel, hoverLabelModel, {\n labelFetcher: seriesModel,\n labelDataIndex: dataIndex,\n defaultText: getDefaultLabel(seriesModel.getData(), dataIndex),\n isRectText: true,\n autoColor: color\n });\n fixPosition(normalStyle);\n fixPosition(hoverStyle);\n}\n\nfunction fixPosition(style, labelPositionOutside) {\n if (style.textPosition === 'outside') {\n style.textPosition = labelPositionOutside;\n }\n}\n\nexports.setLabel = setLabel;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar echarts = require(\"../echarts\");\n\nrequire(\"./boxplot/BoxplotSeries\");\n\nrequire(\"./boxplot/BoxplotView\");\n\nvar boxplotVisual = require(\"./boxplot/boxplotVisual\");\n\nvar boxplotLayout = require(\"./boxplot/boxplotLayout\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\necharts.registerVisual(boxplotVisual);\necharts.registerLayout(boxplotLayout);","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = require(\"zrender/lib/core/util\");\n\nvar SeriesModel = require(\"../../model/Series\");\n\nvar _whiskerBoxCommon = require(\"../helper/whiskerBoxCommon\");\n\nvar seriesModelMixin = _whiskerBoxCommon.seriesModelMixin;\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar BoxplotSeries = SeriesModel.extend({\n type: 'series.boxplot',\n dependencies: ['xAxis', 'yAxis', 'grid'],\n // TODO\n // box width represents group size, so dimension should have 'size'.\n\n /**\n * @see \n * The meanings of 'min' and 'max' depend on user,\n * and echarts do not need to know it.\n * @readOnly\n */\n defaultValueDimensions: [{\n name: 'min',\n defaultTooltip: true\n }, {\n name: 'Q1',\n defaultTooltip: true\n }, {\n name: 'median',\n defaultTooltip: true\n }, {\n name: 'Q3',\n defaultTooltip: true\n }, {\n name: 'max',\n defaultTooltip: true\n }],\n\n /**\n * @type {Array.}\n * @readOnly\n */\n dimensions: null,\n\n /**\n * @override\n */\n defaultOption: {\n zlevel: 0,\n // 一级层叠\n z: 2,\n // 二级层叠\n coordinateSystem: 'cartesian2d',\n legendHoverLink: true,\n hoverAnimation: true,\n // xAxisIndex: 0,\n // yAxisIndex: 0,\n layout: null,\n // 'horizontal' or 'vertical'\n boxWidth: [7, 50],\n // [min, max] can be percent of band width.\n itemStyle: {\n color: '#fff',\n borderWidth: 1\n },\n emphasis: {\n itemStyle: {\n borderWidth: 2,\n shadowBlur: 5,\n shadowOffsetX: 2,\n shadowOffsetY: 2,\n shadowColor: 'rgba(0,0,0,0.4)'\n }\n },\n animationEasing: 'elasticOut',\n animationDuration: 800\n }\n});\nzrUtil.mixin(BoxplotSeries, seriesModelMixin, true);\nvar _default = BoxplotSeries;\nmodule.exports = _default;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = require(\"zrender/lib/core/util\");\n\nvar ChartView = require(\"../../view/Chart\");\n\nvar graphic = require(\"../../util/graphic\");\n\nvar Path = require(\"zrender/lib/graphic/Path\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n// Update common properties\nvar NORMAL_ITEM_STYLE_PATH = ['itemStyle'];\nvar EMPHASIS_ITEM_STYLE_PATH = ['emphasis', 'itemStyle'];\nvar BoxplotView = ChartView.extend({\n type: 'boxplot',\n render: function (seriesModel, ecModel, api) {\n var data = seriesModel.getData();\n var group = this.group;\n var oldData = this._data; // There is no old data only when first rendering or switching from\n // stream mode to normal mode, where previous elements should be removed.\n\n if (!this._data) {\n group.removeAll();\n }\n\n var constDim = seriesModel.get('layout') === 'horizontal' ? 1 : 0;\n data.diff(oldData).add(function (newIdx) {\n if (data.hasValue(newIdx)) {\n var itemLayout = data.getItemLayout(newIdx);\n var symbolEl = createNormalBox(itemLayout, data, newIdx, constDim, true);\n data.setItemGraphicEl(newIdx, symbolEl);\n group.add(symbolEl);\n }\n }).update(function (newIdx, oldIdx) {\n var symbolEl = oldData.getItemGraphicEl(oldIdx); // Empty data\n\n if (!data.hasValue(newIdx)) {\n group.remove(symbolEl);\n return;\n }\n\n var itemLayout = data.getItemLayout(newIdx);\n\n if (!symbolEl) {\n symbolEl = createNormalBox(itemLayout, data, newIdx, constDim);\n } else {\n updateNormalBoxData(itemLayout, symbolEl, data, newIdx);\n }\n\n group.add(symbolEl);\n data.setItemGraphicEl(newIdx, symbolEl);\n }).remove(function (oldIdx) {\n var el = oldData.getItemGraphicEl(oldIdx);\n el && group.remove(el);\n }).execute();\n this._data = data;\n },\n remove: function (ecModel) {\n var group = this.group;\n var data = this._data;\n this._data = null;\n data && data.eachItemGraphicEl(function (el) {\n el && group.remove(el);\n });\n },\n dispose: zrUtil.noop\n});\nvar BoxPath = Path.extend({\n type: 'boxplotBoxPath',\n shape: {},\n buildPath: function (ctx, shape) {\n var ends = shape.points;\n var i = 0;\n ctx.moveTo(ends[i][0], ends[i][1]);\n i++;\n\n for (; i < 4; i++) {\n ctx.lineTo(ends[i][0], ends[i][1]);\n }\n\n ctx.closePath();\n\n for (; i < ends.length; i++) {\n ctx.moveTo(ends[i][0], ends[i][1]);\n i++;\n ctx.lineTo(ends[i][0], ends[i][1]);\n }\n }\n});\n\nfunction createNormalBox(itemLayout, data, dataIndex, constDim, isInit) {\n var ends = itemLayout.ends;\n var el = new BoxPath({\n shape: {\n points: isInit ? transInit(ends, constDim, itemLayout) : ends\n }\n });\n updateNormalBoxData(itemLayout, el, data, dataIndex, isInit);\n return el;\n}\n\nfunction updateNormalBoxData(itemLayout, el, data, dataIndex, isInit) {\n var seriesModel = data.hostModel;\n var updateMethod = graphic[isInit ? 'initProps' : 'updateProps'];\n updateMethod(el, {\n shape: {\n points: itemLayout.ends\n }\n }, seriesModel, dataIndex);\n var itemModel = data.getItemModel(dataIndex);\n var normalItemStyleModel = itemModel.getModel(NORMAL_ITEM_STYLE_PATH);\n var borderColor = data.getItemVisual(dataIndex, 'color'); // Exclude borderColor.\n\n var itemStyle = normalItemStyleModel.getItemStyle(['borderColor']);\n itemStyle.stroke = borderColor;\n itemStyle.strokeNoScale = true;\n el.useStyle(itemStyle);\n el.z2 = 100;\n var hoverStyle = itemModel.getModel(EMPHASIS_ITEM_STYLE_PATH).getItemStyle();\n graphic.setHoverStyle(el, hoverStyle);\n}\n\nfunction transInit(points, dim, itemLayout) {\n return zrUtil.map(points, function (point) {\n point = point.slice();\n point[dim] = itemLayout.initBaseline;\n return point;\n });\n}\n\nvar _default = BoxplotView;\nmodule.exports = _default;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = require(\"zrender/lib/core/util\");\n\nvar _number = require(\"../../util/number\");\n\nvar parsePercent = _number.parsePercent;\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar each = zrUtil.each;\n\nfunction _default(ecModel) {\n var groupResult = groupSeriesByAxis(ecModel);\n each(groupResult, function (groupItem) {\n var seriesModels = groupItem.seriesModels;\n\n if (!seriesModels.length) {\n return;\n }\n\n calculateBase(groupItem);\n each(seriesModels, function (seriesModel, idx) {\n layoutSingleSeries(seriesModel, groupItem.boxOffsetList[idx], groupItem.boxWidthList[idx]);\n });\n });\n}\n/**\n * Group series by axis.\n */\n\n\nfunction groupSeriesByAxis(ecModel) {\n var result = [];\n var axisList = [];\n ecModel.eachSeriesByType('boxplot', function (seriesModel) {\n var baseAxis = seriesModel.getBaseAxis();\n var idx = zrUtil.indexOf(axisList, baseAxis);\n\n if (idx < 0) {\n idx = axisList.length;\n axisList[idx] = baseAxis;\n result[idx] = {\n axis: baseAxis,\n seriesModels: []\n };\n }\n\n result[idx].seriesModels.push(seriesModel);\n });\n return result;\n}\n/**\n * Calculate offset and box width for each series.\n */\n\n\nfunction calculateBase(groupItem) {\n var extent;\n var baseAxis = groupItem.axis;\n var seriesModels = groupItem.seriesModels;\n var seriesCount = seriesModels.length;\n var boxWidthList = groupItem.boxWidthList = [];\n var boxOffsetList = groupItem.boxOffsetList = [];\n var boundList = [];\n var bandWidth;\n\n if (baseAxis.type === 'category') {\n bandWidth = baseAxis.getBandWidth();\n } else {\n var maxDataCount = 0;\n each(seriesModels, function (seriesModel) {\n maxDataCount = Math.max(maxDataCount, seriesModel.getData().count());\n });\n extent = baseAxis.getExtent(), Math.abs(extent[1] - extent[0]) / maxDataCount;\n }\n\n each(seriesModels, function (seriesModel) {\n var boxWidthBound = seriesModel.get('boxWidth');\n\n if (!zrUtil.isArray(boxWidthBound)) {\n boxWidthBound = [boxWidthBound, boxWidthBound];\n }\n\n boundList.push([parsePercent(boxWidthBound[0], bandWidth) || 0, parsePercent(boxWidthBound[1], bandWidth) || 0]);\n });\n var availableWidth = bandWidth * 0.8 - 2;\n var boxGap = availableWidth / seriesCount * 0.3;\n var boxWidth = (availableWidth - boxGap * (seriesCount - 1)) / seriesCount;\n var base = boxWidth / 2 - availableWidth / 2;\n each(seriesModels, function (seriesModel, idx) {\n boxOffsetList.push(base);\n base += boxGap + boxWidth;\n boxWidthList.push(Math.min(Math.max(boxWidth, boundList[idx][0]), boundList[idx][1]));\n });\n}\n/**\n * Calculate points location for each series.\n */\n\n\nfunction layoutSingleSeries(seriesModel, offset, boxWidth) {\n var coordSys = seriesModel.coordinateSystem;\n var data = seriesModel.getData();\n var halfWidth = boxWidth / 2;\n var cDimIdx = seriesModel.get('layout') === 'horizontal' ? 0 : 1;\n var vDimIdx = 1 - cDimIdx;\n var coordDims = ['x', 'y'];\n var cDim = data.mapDimension(coordDims[cDimIdx]);\n var vDims = data.mapDimension(coordDims[vDimIdx], true);\n\n if (cDim == null || vDims.length < 5) {\n return;\n }\n\n for (var dataIndex = 0; dataIndex < data.count(); dataIndex++) {\n var axisDimVal = data.get(cDim, dataIndex);\n var median = getPoint(axisDimVal, vDims[2], dataIndex);\n var end1 = getPoint(axisDimVal, vDims[0], dataIndex);\n var end2 = getPoint(axisDimVal, vDims[1], dataIndex);\n var end4 = getPoint(axisDimVal, vDims[3], dataIndex);\n var end5 = getPoint(axisDimVal, vDims[4], dataIndex);\n var ends = [];\n addBodyEnd(ends, end2, 0);\n addBodyEnd(ends, end4, 1);\n ends.push(end1, end2, end5, end4);\n layEndLine(ends, end1);\n layEndLine(ends, end5);\n layEndLine(ends, median);\n data.setItemLayout(dataIndex, {\n initBaseline: median[vDimIdx],\n ends: ends\n });\n }\n\n function getPoint(axisDimVal, dimIdx, dataIndex) {\n var val = data.get(dimIdx, dataIndex);\n var p = [];\n p[cDimIdx] = axisDimVal;\n p[vDimIdx] = val;\n var point;\n\n if (isNaN(axisDimVal) || isNaN(val)) {\n point = [NaN, NaN];\n } else {\n point = coordSys.dataToPoint(p);\n point[cDimIdx] += offset;\n }\n\n return point;\n }\n\n function addBodyEnd(ends, point, start) {\n var point1 = point.slice();\n var point2 = point.slice();\n point1[cDimIdx] += halfWidth;\n point2[cDimIdx] -= halfWidth;\n start ? ends.push(point1, point2) : ends.push(point2, point1);\n }\n\n function layEndLine(ends, endCenter) {\n var from = endCenter.slice();\n var to = endCenter.slice();\n from[cDimIdx] -= halfWidth;\n to[cDimIdx] += halfWidth;\n ends.push(from, to);\n }\n}\n\nmodule.exports = _default;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar borderColorQuery = ['itemStyle', 'borderColor'];\n\nfunction _default(ecModel, api) {\n var globalColors = ecModel.get('color');\n ecModel.eachRawSeriesByType('boxplot', function (seriesModel) {\n var defaulColor = globalColors[seriesModel.seriesIndex % globalColors.length];\n var data = seriesModel.getData();\n data.setVisual({\n legendSymbol: 'roundRect',\n // Use name 'color' but not 'borderColor' for legend usage and\n // visual coding from other component like dataRange.\n color: seriesModel.get(borderColorQuery) || defaulColor\n }); // Only visible series has each data be visual encoded\n\n if (!ecModel.isSeriesFiltered(seriesModel)) {\n data.each(function (idx) {\n var itemModel = data.getItemModel(idx);\n data.setItemVisual(idx, {\n color: itemModel.get(borderColorQuery, true)\n });\n });\n }\n });\n}\n\nmodule.exports = _default;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar echarts = require(\"../echarts\");\n\nrequire(\"./candlestick/CandlestickSeries\");\n\nrequire(\"./candlestick/CandlestickView\");\n\nvar preprocessor = require(\"./candlestick/preprocessor\");\n\nvar candlestickVisual = require(\"./candlestick/candlestickVisual\");\n\nvar candlestickLayout = require(\"./candlestick/candlestickLayout\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\necharts.registerPreprocessor(preprocessor);\necharts.registerVisual(candlestickVisual);\necharts.registerLayout(candlestickLayout);","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = require(\"zrender/lib/core/util\");\n\nvar SeriesModel = require(\"../../model/Series\");\n\nvar _whiskerBoxCommon = require(\"../helper/whiskerBoxCommon\");\n\nvar seriesModelMixin = _whiskerBoxCommon.seriesModelMixin;\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar CandlestickSeries = SeriesModel.extend({\n type: 'series.candlestick',\n dependencies: ['xAxis', 'yAxis', 'grid'],\n\n /**\n * @readOnly\n */\n defaultValueDimensions: [{\n name: 'open',\n defaultTooltip: true\n }, {\n name: 'close',\n defaultTooltip: true\n }, {\n name: 'lowest',\n defaultTooltip: true\n }, {\n name: 'highest',\n defaultTooltip: true\n }],\n\n /**\n * @type {Array.}\n * @readOnly\n */\n dimensions: null,\n\n /**\n * @override\n */\n defaultOption: {\n zlevel: 0,\n z: 2,\n coordinateSystem: 'cartesian2d',\n legendHoverLink: true,\n hoverAnimation: true,\n // xAxisIndex: 0,\n // yAxisIndex: 0,\n layout: null,\n // 'horizontal' or 'vertical'\n clip: true,\n itemStyle: {\n color: '#c23531',\n // 阳线 positive\n color0: '#314656',\n // 阴线 negative '#c23531', '#314656'\n borderWidth: 1,\n // FIXME\n // ec2中使用的是lineStyle.color 和 lineStyle.color0\n borderColor: '#c23531',\n borderColor0: '#314656'\n },\n emphasis: {\n itemStyle: {\n borderWidth: 2\n }\n },\n barMaxWidth: null,\n barMinWidth: null,\n barWidth: null,\n large: true,\n largeThreshold: 600,\n progressive: 3e3,\n progressiveThreshold: 1e4,\n progressiveChunkMode: 'mod',\n animationUpdate: false,\n animationEasing: 'linear',\n animationDuration: 300\n },\n\n /**\n * Get dimension for shadow in dataZoom\n * @return {string} dimension name\n */\n getShadowDim: function () {\n return 'open';\n },\n brushSelector: function (dataIndex, data, selectors) {\n var itemLayout = data.getItemLayout(dataIndex);\n return itemLayout && selectors.rect(itemLayout.brushRect);\n }\n});\nzrUtil.mixin(CandlestickSeries, seriesModelMixin, true);\nvar _default = CandlestickSeries;\nmodule.exports = _default;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = require(\"zrender/lib/core/util\");\n\nvar ChartView = require(\"../../view/Chart\");\n\nvar graphic = require(\"../../util/graphic\");\n\nvar Path = require(\"zrender/lib/graphic/Path\");\n\nvar _createClipPathFromCoordSys = require(\"../helper/createClipPathFromCoordSys\");\n\nvar createClipPath = _createClipPathFromCoordSys.createClipPath;\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar NORMAL_ITEM_STYLE_PATH = ['itemStyle'];\nvar EMPHASIS_ITEM_STYLE_PATH = ['emphasis', 'itemStyle'];\nvar SKIP_PROPS = ['color', 'color0', 'borderColor', 'borderColor0'];\nvar CandlestickView = ChartView.extend({\n type: 'candlestick',\n render: function (seriesModel, ecModel, api) {\n // If there is clipPath created in large mode. Remove it.\n this.group.removeClipPath();\n\n this._updateDrawMode(seriesModel);\n\n this._isLargeDraw ? this._renderLarge(seriesModel) : this._renderNormal(seriesModel);\n },\n incrementalPrepareRender: function (seriesModel, ecModel, api) {\n this._clear();\n\n this._updateDrawMode(seriesModel);\n },\n incrementalRender: function (params, seriesModel, ecModel, api) {\n this._isLargeDraw ? this._incrementalRenderLarge(params, seriesModel) : this._incrementalRenderNormal(params, seriesModel);\n },\n _updateDrawMode: function (seriesModel) {\n var isLargeDraw = seriesModel.pipelineContext.large;\n\n if (this._isLargeDraw == null || isLargeDraw ^ this._isLargeDraw) {\n this._isLargeDraw = isLargeDraw;\n\n this._clear();\n }\n },\n _renderNormal: function (seriesModel) {\n var data = seriesModel.getData();\n var oldData = this._data;\n var group = this.group;\n var isSimpleBox = data.getLayout('isSimpleBox');\n var needsClip = seriesModel.get('clip', true);\n var coord = seriesModel.coordinateSystem;\n var clipArea = coord.getArea && coord.getArea(); // There is no old data only when first rendering or switching from\n // stream mode to normal mode, where previous elements should be removed.\n\n if (!this._data) {\n group.removeAll();\n }\n\n data.diff(oldData).add(function (newIdx) {\n if (data.hasValue(newIdx)) {\n var el;\n var itemLayout = data.getItemLayout(newIdx);\n\n if (needsClip && isNormalBoxClipped(clipArea, itemLayout)) {\n return;\n }\n\n el = createNormalBox(itemLayout, newIdx, true);\n graphic.initProps(el, {\n shape: {\n points: itemLayout.ends\n }\n }, seriesModel, newIdx);\n setBoxCommon(el, data, newIdx, isSimpleBox);\n group.add(el);\n data.setItemGraphicEl(newIdx, el);\n }\n }).update(function (newIdx, oldIdx) {\n var el = oldData.getItemGraphicEl(oldIdx); // Empty data\n\n if (!data.hasValue(newIdx)) {\n group.remove(el);\n return;\n }\n\n var itemLayout = data.getItemLayout(newIdx);\n\n if (needsClip && isNormalBoxClipped(clipArea, itemLayout)) {\n group.remove(el);\n return;\n }\n\n if (!el) {\n el = createNormalBox(itemLayout, newIdx);\n } else {\n graphic.updateProps(el, {\n shape: {\n points: itemLayout.ends\n }\n }, seriesModel, newIdx);\n }\n\n setBoxCommon(el, data, newIdx, isSimpleBox);\n group.add(el);\n data.setItemGraphicEl(newIdx, el);\n }).remove(function (oldIdx) {\n var el = oldData.getItemGraphicEl(oldIdx);\n el && group.remove(el);\n }).execute();\n this._data = data;\n },\n _renderLarge: function (seriesModel) {\n this._clear();\n\n createLarge(seriesModel, this.group);\n var clipPath = seriesModel.get('clip', true) ? createClipPath(seriesModel.coordinateSystem, false, seriesModel) : null;\n\n if (clipPath) {\n this.group.setClipPath(clipPath);\n } else {\n this.group.removeClipPath();\n }\n },\n _incrementalRenderNormal: function (params, seriesModel) {\n var data = seriesModel.getData();\n var isSimpleBox = data.getLayout('isSimpleBox');\n var dataIndex;\n\n while ((dataIndex = params.next()) != null) {\n var el;\n var itemLayout = data.getItemLayout(dataIndex);\n el = createNormalBox(itemLayout, dataIndex);\n setBoxCommon(el, data, dataIndex, isSimpleBox);\n el.incremental = true;\n this.group.add(el);\n }\n },\n _incrementalRenderLarge: function (params, seriesModel) {\n createLarge(seriesModel, this.group, true);\n },\n remove: function (ecModel) {\n this._clear();\n },\n _clear: function () {\n this.group.removeAll();\n this._data = null;\n },\n dispose: zrUtil.noop\n});\nvar NormalBoxPath = Path.extend({\n type: 'normalCandlestickBox',\n shape: {},\n buildPath: function (ctx, shape) {\n var ends = shape.points;\n\n if (this.__simpleBox) {\n ctx.moveTo(ends[4][0], ends[4][1]);\n ctx.lineTo(ends[6][0], ends[6][1]);\n } else {\n ctx.moveTo(ends[0][0], ends[0][1]);\n ctx.lineTo(ends[1][0], ends[1][1]);\n ctx.lineTo(ends[2][0], ends[2][1]);\n ctx.lineTo(ends[3][0], ends[3][1]);\n ctx.closePath();\n ctx.moveTo(ends[4][0], ends[4][1]);\n ctx.lineTo(ends[5][0], ends[5][1]);\n ctx.moveTo(ends[6][0], ends[6][1]);\n ctx.lineTo(ends[7][0], ends[7][1]);\n }\n }\n});\n\nfunction createNormalBox(itemLayout, dataIndex, isInit) {\n var ends = itemLayout.ends;\n return new NormalBoxPath({\n shape: {\n points: isInit ? transInit(ends, itemLayout) : ends\n },\n z2: 100\n });\n}\n\nfunction isNormalBoxClipped(clipArea, itemLayout) {\n var clipped = true;\n\n for (var i = 0; i < itemLayout.ends.length; i++) {\n // If any point are in the region.\n if (clipArea.contain(itemLayout.ends[i][0], itemLayout.ends[i][1])) {\n clipped = false;\n break;\n }\n }\n\n return clipped;\n}\n\nfunction setBoxCommon(el, data, dataIndex, isSimpleBox) {\n var itemModel = data.getItemModel(dataIndex);\n var normalItemStyleModel = itemModel.getModel(NORMAL_ITEM_STYLE_PATH);\n var color = data.getItemVisual(dataIndex, 'color');\n var borderColor = data.getItemVisual(dataIndex, 'borderColor') || color; // Color must be excluded.\n // Because symbol provide setColor individually to set fill and stroke\n\n var itemStyle = normalItemStyleModel.getItemStyle(SKIP_PROPS);\n el.useStyle(itemStyle);\n el.style.strokeNoScale = true;\n el.style.fill = color;\n el.style.stroke = borderColor;\n el.__simpleBox = isSimpleBox;\n var hoverStyle = itemModel.getModel(EMPHASIS_ITEM_STYLE_PATH).getItemStyle();\n graphic.setHoverStyle(el, hoverStyle);\n}\n\nfunction transInit(points, itemLayout) {\n return zrUtil.map(points, function (point) {\n point = point.slice();\n point[1] = itemLayout.initBaseline;\n return point;\n });\n}\n\nvar LargeBoxPath = Path.extend({\n type: 'largeCandlestickBox',\n shape: {},\n buildPath: function (ctx, shape) {\n // Drawing lines is more efficient than drawing\n // a whole line or drawing rects.\n var points = shape.points;\n\n for (var i = 0; i < points.length;) {\n if (this.__sign === points[i++]) {\n var x = points[i++];\n ctx.moveTo(x, points[i++]);\n ctx.lineTo(x, points[i++]);\n } else {\n i += 3;\n }\n }\n }\n});\n\nfunction createLarge(seriesModel, group, incremental) {\n var data = seriesModel.getData();\n var largePoints = data.getLayout('largePoints');\n var elP = new LargeBoxPath({\n shape: {\n points: largePoints\n },\n __sign: 1\n });\n group.add(elP);\n var elN = new LargeBoxPath({\n shape: {\n points: largePoints\n },\n __sign: -1\n });\n group.add(elN);\n setLargeStyle(1, elP, seriesModel, data);\n setLargeStyle(-1, elN, seriesModel, data);\n\n if (incremental) {\n elP.incremental = true;\n elN.incremental = true;\n }\n}\n\nfunction setLargeStyle(sign, el, seriesModel, data) {\n var suffix = sign > 0 ? 'P' : 'N';\n var borderColor = data.getVisual('borderColor' + suffix) || data.getVisual('color' + suffix); // Color must be excluded.\n // Because symbol provide setColor individually to set fill and stroke\n\n var itemStyle = seriesModel.getModel(NORMAL_ITEM_STYLE_PATH).getItemStyle(SKIP_PROPS);\n el.useStyle(itemStyle);\n el.style.fill = null;\n el.style.stroke = borderColor; // No different\n // el.style.lineWidth = .5;\n}\n\nvar _default = CandlestickView;\nmodule.exports = _default;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar _graphic = require(\"../../util/graphic\");\n\nvar subPixelOptimize = _graphic.subPixelOptimize;\n\nvar createRenderPlanner = require(\"../helper/createRenderPlanner\");\n\nvar _number = require(\"../../util/number\");\n\nvar parsePercent = _number.parsePercent;\n\nvar _util = require(\"zrender/lib/core/util\");\n\nvar retrieve2 = _util.retrieve2;\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\n/* global Float32Array */\nvar LargeArr = typeof Float32Array !== 'undefined' ? Float32Array : Array;\nvar _default = {\n seriesType: 'candlestick',\n plan: createRenderPlanner(),\n reset: function (seriesModel) {\n var coordSys = seriesModel.coordinateSystem;\n var data = seriesModel.getData();\n var candleWidth = calculateCandleWidth(seriesModel, data);\n var cDimIdx = 0;\n var vDimIdx = 1;\n var coordDims = ['x', 'y'];\n var cDim = data.mapDimension(coordDims[cDimIdx]);\n var vDims = data.mapDimension(coordDims[vDimIdx], true);\n var openDim = vDims[0];\n var closeDim = vDims[1];\n var lowestDim = vDims[2];\n var highestDim = vDims[3];\n data.setLayout({\n candleWidth: candleWidth,\n // The value is experimented visually.\n isSimpleBox: candleWidth <= 1.3\n });\n\n if (cDim == null || vDims.length < 4) {\n return;\n }\n\n return {\n progress: seriesModel.pipelineContext.large ? largeProgress : normalProgress\n };\n\n function normalProgress(params, data) {\n var dataIndex;\n\n while ((dataIndex = params.next()) != null) {\n var axisDimVal = data.get(cDim, dataIndex);\n var openVal = data.get(openDim, dataIndex);\n var closeVal = data.get(closeDim, dataIndex);\n var lowestVal = data.get(lowestDim, dataIndex);\n var highestVal = data.get(highestDim, dataIndex);\n var ocLow = Math.min(openVal, closeVal);\n var ocHigh = Math.max(openVal, closeVal);\n var ocLowPoint = getPoint(ocLow, axisDimVal);\n var ocHighPoint = getPoint(ocHigh, axisDimVal);\n var lowestPoint = getPoint(lowestVal, axisDimVal);\n var highestPoint = getPoint(highestVal, axisDimVal);\n var ends = [];\n addBodyEnd(ends, ocHighPoint, 0);\n addBodyEnd(ends, ocLowPoint, 1);\n ends.push(subPixelOptimizePoint(highestPoint), subPixelOptimizePoint(ocHighPoint), subPixelOptimizePoint(lowestPoint), subPixelOptimizePoint(ocLowPoint));\n data.setItemLayout(dataIndex, {\n sign: getSign(data, dataIndex, openVal, closeVal, closeDim),\n initBaseline: openVal > closeVal ? ocHighPoint[vDimIdx] : ocLowPoint[vDimIdx],\n // open point.\n ends: ends,\n brushRect: makeBrushRect(lowestVal, highestVal, axisDimVal)\n });\n }\n\n function getPoint(val, axisDimVal) {\n var p = [];\n p[cDimIdx] = axisDimVal;\n p[vDimIdx] = val;\n return isNaN(axisDimVal) || isNaN(val) ? [NaN, NaN] : coordSys.dataToPoint(p);\n }\n\n function addBodyEnd(ends, point, start) {\n var point1 = point.slice();\n var point2 = point.slice();\n point1[cDimIdx] = subPixelOptimize(point1[cDimIdx] + candleWidth / 2, 1, false);\n point2[cDimIdx] = subPixelOptimize(point2[cDimIdx] - candleWidth / 2, 1, true);\n start ? ends.push(point1, point2) : ends.push(point2, point1);\n }\n\n function makeBrushRect(lowestVal, highestVal, axisDimVal) {\n var pmin = getPoint(lowestVal, axisDimVal);\n var pmax = getPoint(highestVal, axisDimVal);\n pmin[cDimIdx] -= candleWidth / 2;\n pmax[cDimIdx] -= candleWidth / 2;\n return {\n x: pmin[0],\n y: pmin[1],\n width: vDimIdx ? candleWidth : pmax[0] - pmin[0],\n height: vDimIdx ? pmax[1] - pmin[1] : candleWidth\n };\n }\n\n function subPixelOptimizePoint(point) {\n point[cDimIdx] = subPixelOptimize(point[cDimIdx], 1);\n return point;\n }\n }\n\n function largeProgress(params, data) {\n // Structure: [sign, x, yhigh, ylow, sign, x, yhigh, ylow, ...]\n var points = new LargeArr(params.count * 4);\n var offset = 0;\n var point;\n var tmpIn = [];\n var tmpOut = [];\n var dataIndex;\n\n while ((dataIndex = params.next()) != null) {\n var axisDimVal = data.get(cDim, dataIndex);\n var openVal = data.get(openDim, dataIndex);\n var closeVal = data.get(closeDim, dataIndex);\n var lowestVal = data.get(lowestDim, dataIndex);\n var highestVal = data.get(highestDim, dataIndex);\n\n if (isNaN(axisDimVal) || isNaN(lowestVal) || isNaN(highestVal)) {\n points[offset++] = NaN;\n offset += 3;\n continue;\n }\n\n points[offset++] = getSign(data, dataIndex, openVal, closeVal, closeDim);\n tmpIn[cDimIdx] = axisDimVal;\n tmpIn[vDimIdx] = lowestVal;\n point = coordSys.dataToPoint(tmpIn, null, tmpOut);\n points[offset++] = point ? point[0] : NaN;\n points[offset++] = point ? point[1] : NaN;\n tmpIn[vDimIdx] = highestVal;\n point = coordSys.dataToPoint(tmpIn, null, tmpOut);\n points[offset++] = point ? point[1] : NaN;\n }\n\n data.setLayout('largePoints', points);\n }\n }\n};\n\nfunction getSign(data, dataIndex, openVal, closeVal, closeDim) {\n var sign;\n\n if (openVal > closeVal) {\n sign = -1;\n } else if (openVal < closeVal) {\n sign = 1;\n } else {\n sign = dataIndex > 0 // If close === open, compare with close of last record\n ? data.get(closeDim, dataIndex - 1) <= closeVal ? 1 : -1 : // No record of previous, set to be positive\n 1;\n }\n\n return sign;\n}\n\nfunction calculateCandleWidth(seriesModel, data) {\n var baseAxis = seriesModel.getBaseAxis();\n var extent;\n var bandWidth = baseAxis.type === 'category' ? baseAxis.getBandWidth() : (extent = baseAxis.getExtent(), Math.abs(extent[1] - extent[0]) / data.count());\n var barMaxWidth = parsePercent(retrieve2(seriesModel.get('barMaxWidth'), bandWidth), bandWidth);\n var barMinWidth = parsePercent(retrieve2(seriesModel.get('barMinWidth'), 1), bandWidth);\n var barWidth = seriesModel.get('barWidth');\n return barWidth != null ? parsePercent(barWidth, bandWidth) // Put max outer to ensure bar visible in spite of overlap.\n : Math.max(Math.min(bandWidth / 2, barMaxWidth), barMinWidth);\n}\n\nmodule.exports = _default;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar createRenderPlanner = require(\"../helper/createRenderPlanner\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar positiveBorderColorQuery = ['itemStyle', 'borderColor'];\nvar negativeBorderColorQuery = ['itemStyle', 'borderColor0'];\nvar positiveColorQuery = ['itemStyle', 'color'];\nvar negativeColorQuery = ['itemStyle', 'color0'];\nvar _default = {\n seriesType: 'candlestick',\n plan: createRenderPlanner(),\n // For legend.\n performRawSeries: true,\n reset: function (seriesModel, ecModel) {\n var data = seriesModel.getData();\n data.setVisual({\n legendSymbol: 'roundRect',\n colorP: getColor(1, seriesModel),\n colorN: getColor(-1, seriesModel),\n borderColorP: getBorderColor(1, seriesModel),\n borderColorN: getBorderColor(-1, seriesModel)\n }); // Only visible series has each data be visual encoded\n\n if (ecModel.isSeriesFiltered(seriesModel)) {\n return;\n }\n\n var isLargeRender = seriesModel.pipelineContext.large;\n return !isLargeRender && {\n progress: progress\n };\n\n function progress(params, data) {\n var dataIndex;\n\n while ((dataIndex = params.next()) != null) {\n var itemModel = data.getItemModel(dataIndex);\n var sign = data.getItemLayout(dataIndex).sign;\n data.setItemVisual(dataIndex, {\n color: getColor(sign, itemModel),\n borderColor: getBorderColor(sign, itemModel)\n });\n }\n }\n\n function getColor(sign, model) {\n return model.get(sign > 0 ? positiveColorQuery : negativeColorQuery);\n }\n\n function getBorderColor(sign, model) {\n return model.get(sign > 0 ? positiveBorderColorQuery : negativeBorderColorQuery);\n }\n }\n};\nmodule.exports = _default;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = require(\"zrender/lib/core/util\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nfunction _default(option) {\n if (!option || !zrUtil.isArray(option.series)) {\n return;\n } // Translate 'k' to 'candlestick'.\n\n\n zrUtil.each(option.series, function (seriesItem) {\n if (zrUtil.isObject(seriesItem) && seriesItem.type === 'k') {\n seriesItem.type = 'candlestick';\n }\n });\n}\n\nmodule.exports = _default;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar _config = require(\"../config\");\n\nvar __DEV__ = _config.__DEV__;\n\nvar zrUtil = require(\"zrender/lib/core/util\");\n\nvar graphicUtil = require(\"../util/graphic\");\n\nvar _labelHelper = require(\"./helper/labelHelper\");\n\nvar getDefaultLabel = _labelHelper.getDefaultLabel;\n\nvar createListFromArray = require(\"./helper/createListFromArray\");\n\nvar _barGrid = require(\"../layout/barGrid\");\n\nvar getLayoutOnAxis = _barGrid.getLayoutOnAxis;\n\nvar DataDiffer = require(\"../data/DataDiffer\");\n\nvar SeriesModel = require(\"../model/Series\");\n\nvar Model = require(\"../model/Model\");\n\nvar ChartView = require(\"../view/Chart\");\n\nvar _createClipPathFromCoordSys = require(\"./helper/createClipPathFromCoordSys\");\n\nvar createClipPath = _createClipPathFromCoordSys.createClipPath;\n\nvar prepareCartesian2d = require(\"../coord/cartesian/prepareCustom\");\n\nvar prepareGeo = require(\"../coord/geo/prepareCustom\");\n\nvar prepareSingleAxis = require(\"../coord/single/prepareCustom\");\n\nvar preparePolar = require(\"../coord/polar/prepareCustom\");\n\nvar prepareCalendar = require(\"../coord/calendar/prepareCustom\");\n\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\nvar CACHED_LABEL_STYLE_PROPERTIES = graphicUtil.CACHED_LABEL_STYLE_PROPERTIES;\nvar ITEM_STYLE_NORMAL_PATH = ['itemStyle'];\nvar ITEM_STYLE_EMPHASIS_PATH = ['emphasis', 'itemStyle'];\nvar LABEL_NORMAL = ['label'];\nvar LABEL_EMPHASIS = ['emphasis', 'label']; // Use prefix to avoid index to be the same as el.name,\n// which will cause weird udpate animation.\n\nvar GROUP_DIFF_PREFIX = 'e\\0\\0';\n/**\n * To reduce total package size of each coordinate systems, the modules `prepareCustom`\n * of each coordinate systems are not required by each coordinate systems directly, but\n * required by the module `custom`.\n *\n * prepareInfoForCustomSeries {Function}: optional\n * @return {Object} {coordSys: {...}, api: {\n * coord: function (data, clamp) {}, // return point in global.\n * size: function (dataSize, dataItem) {} // return size of each axis in coordSys.\n * }}\n */\n\nvar prepareCustoms = {\n cartesian2d: prepareCartesian2d,\n geo: prepareGeo,\n singleAxis: prepareSingleAxis,\n polar: preparePolar,\n calendar: prepareCalendar\n}; // ------\n// Model\n// ------\n\nSeriesModel.extend({\n type: 'series.custom',\n dependencies: ['grid', 'polar', 'geo', 'singleAxis', 'calendar'],\n defaultOption: {\n coordinateSystem: 'cartesian2d',\n // Can be set as 'none'\n zlevel: 0,\n z: 2,\n legendHoverLink: true,\n useTransform: true,\n // Custom series will not clip by default.\n // Some case will use custom series to draw label\n // For example https://echarts.apache.org/examples/en/editor.html?c=custom-gantt-flight\n // Only works on polar and cartesian2d coordinate system.\n clip: false // Cartesian coordinate system\n // xAxisIndex: 0,\n // yAxisIndex: 0,\n // Polar coordinate system\n // polarIndex: 0,\n // Geo coordinate system\n // geoIndex: 0,\n // label: {}\n // itemStyle: {}\n\n },\n\n /**\n * @override\n */\n getInitialData: function (option, ecModel) {\n return createListFromArray(this.getSource(), this);\n },\n\n /**\n * @override\n */\n getDataParams: function (dataIndex, dataType, el) {\n var params = SeriesModel.prototype.getDataParams.apply(this, arguments);\n el && (params.info = el.info);\n return params;\n }\n}); // -----\n// View\n// -----\n\nChartView.extend({\n type: 'custom',\n\n /**\n * @private\n * @type {module:echarts/data/List}\n */\n _data: null,\n\n /**\n * @override\n */\n render: function (customSeries, ecModel, api, payload) {\n var oldData = this._data;\n var data = customSeries.getData();\n var group = this.group;\n var renderItem = makeRenderItem(customSeries, data, ecModel, api); // By default, merge mode is applied. In most cases, custom series is\n // used in the scenario that data amount is not large but graphic elements\n // is complicated, where merge mode is probably necessary for optimization.\n // For example, reuse graphic elements and only update the transform when\n // roam or data zoom according to `actionType`.\n\n data.diff(oldData).add(function (newIdx) {\n createOrUpdate(null, newIdx, renderItem(newIdx, payload), customSeries, group, data);\n }).update(function (newIdx, oldIdx) {\n var el = oldData.getItemGraphicEl(oldIdx);\n createOrUpdate(el, newIdx, renderItem(newIdx, payload), customSeries, group, data);\n }).remove(function (oldIdx) {\n var el = oldData.getItemGraphicEl(oldIdx);\n el && group.remove(el);\n }).execute(); // Do clipping\n\n var clipPath = customSeries.get('clip', true) ? createClipPath(customSeries.coordinateSystem, false, customSeries) : null;\n\n if (clipPath) {\n group.setClipPath(clipPath);\n } else {\n group.removeClipPath();\n }\n\n this._data = data;\n },\n incrementalPrepareRender: function (customSeries, ecModel, api) {\n this.group.removeAll();\n this._data = null;\n },\n incrementalRender: function (params, customSeries, ecModel, api, payload) {\n var data = customSeries.getData();\n var renderItem = makeRenderItem(customSeries, data, ecModel, api);\n\n function setIncrementalAndHoverLayer(el) {\n if (!el.isGroup) {\n el.incremental = true;\n el.useHoverLayer = true;\n }\n }\n\n for (var idx = params.start; idx < params.end; idx++) {\n var el = createOrUpdate(null, idx, renderItem(idx, payload), customSeries, this.group, data);\n el.traverse(setIncrementalAndHoverLayer);\n }\n },\n\n /**\n * @override\n */\n dispose: zrUtil.noop,\n\n /**\n * @override\n */\n filterForExposedEvent: function (eventType, query, targetEl, packedEvent) {\n var elementName = query.element;\n\n if (elementName == null || targetEl.name === elementName) {\n return true;\n } // Enable to give a name on a group made by `renderItem`, and listen\n // events that triggerd by its descendents.\n\n\n while ((targetEl = targetEl.parent) && targetEl !== this.group) {\n if (targetEl.name === elementName) {\n return true;\n }\n }\n\n return false;\n }\n});\n\nfunction createEl(elOption) {\n var graphicType = elOption.type;\n var el; // Those graphic elements are not shapes. They should not be\n // overwritten by users, so do them first.\n\n if (graphicType === 'path') {\n var shape = elOption.shape; // Using pathRect brings convenience to users sacle svg path.\n\n var pathRect = shape.width != null && shape.height != null ? {\n x: shape.x || 0,\n y: shape.y || 0,\n width: shape.width,\n height: shape.height\n } : null;\n var pathData = getPathData(shape); // Path is also used for icon, so layout 'center' by default.\n\n el = graphicUtil.makePath(pathData, null, pathRect, shape.layout || 'center');\n el.__customPathData = pathData;\n } else if (graphicType === 'image') {\n el = new graphicUtil.Image({});\n el.__customImagePath = elOption.style.image;\n } else if (graphicType === 'text') {\n el = new graphicUtil.Text({});\n el.__customText = elOption.style.text;\n } else if (graphicType === 'group') {\n el = new graphicUtil.Group();\n } else if (graphicType === 'compoundPath') {\n throw new Error('\"compoundPath\" is not supported yet.');\n } else {\n var Clz = graphicUtil.getShapeClass(graphicType);\n el = new Clz();\n }\n\n el.__customGraphicType = graphicType;\n el.name = elOption.name;\n return el;\n}\n\nfunction updateEl(el, dataIndex, elOption, animatableModel, data, isInit, isRoot) {\n var transitionProps = {};\n var elOptionStyle = elOption.style || {};\n elOption.shape && (transitionProps.shape = zrUtil.clone(elOption.shape));\n elOption.position && (transitionProps.position = elOption.position.slice());\n elOption.scale && (transitionProps.scale = elOption.scale.slice());\n elOption.origin && (transitionProps.origin = elOption.origin.slice());\n elOption.rotation && (transitionProps.rotation = elOption.rotation);\n\n if (el.type === 'image' && elOption.style) {\n var targetStyle = transitionProps.style = {};\n zrUtil.each(['x', 'y', 'width', 'height'], function (prop) {\n prepareStyleTransition(prop, targetStyle, elOptionStyle, el.style, isInit);\n });\n }\n\n if (el.type === 'text' && elOption.style) {\n var targetStyle = transitionProps.style = {};\n zrUtil.each(['x', 'y'], function (prop) {\n prepareStyleTransition(prop, targetStyle, elOptionStyle, el.style, isInit);\n }); // Compatible with previous: both support\n // textFill and fill, textStroke and stroke in 'text' element.\n\n !elOptionStyle.hasOwnProperty('textFill') && elOptionStyle.fill && (elOptionStyle.textFill = elOptionStyle.fill);\n !elOptionStyle.hasOwnProperty('textStroke') && elOptionStyle.stroke && (elOptionStyle.textStroke = elOptionStyle.stroke);\n }\n\n if (el.type !== 'group') {\n el.useStyle(elOptionStyle); // Init animation.\n\n if (isInit) {\n el.style.opacity = 0;\n var targetOpacity = elOptionStyle.opacity;\n targetOpacity == null && (targetOpacity = 1);\n graphicUtil.initProps(el, {\n style: {\n opacity: targetOpacity\n }\n }, animatableModel, dataIndex);\n }\n }\n\n if (isInit) {\n el.attr(transitionProps);\n } else {\n graphicUtil.updateProps(el, transitionProps, animatableModel, dataIndex);\n } // Merge by default.\n // z2 must not be null/undefined, otherwise sort error may occur.\n\n\n elOption.hasOwnProperty('z2') && el.attr('z2', elOption.z2 || 0);\n elOption.hasOwnProperty('silent') && el.attr('silent', elOption.silent);\n elOption.hasOwnProperty('invisible') && el.attr('invisible', elOption.invisible);\n elOption.hasOwnProperty('ignore') && el.attr('ignore', elOption.ignore); // `elOption.info` enables user to mount some info on\n // elements and use them in event handlers.\n // Update them only when user specified, otherwise, remain.\n\n elOption.hasOwnProperty('info') && el.attr('info', elOption.info); // If `elOption.styleEmphasis` is `false`, remove hover style. The\n // logic is ensured by `graphicUtil.setElementHoverStyle`.\n\n var styleEmphasis = elOption.styleEmphasis; // hoverStyle should always be set here, because if the hover style\n // may already be changed, where the inner cache should be reset.\n\n graphicUtil.setElementHoverStyle(el, styleEmphasis);\n\n if (isRoot) {\n graphicUtil.setAsHighDownDispatcher(el, styleEmphasis !== false);\n }\n}\n\nfunction prepareStyleTransition(prop, targetStyle, elOptionStyle, oldElStyle, isInit) {\n if (elOptionStyle[prop] != null && !isInit) {\n targetStyle[prop] = elOptionStyle[prop];\n elOptionStyle[prop] = oldElStyle[prop];\n }\n}\n\nfunction makeRenderItem(customSeries, data, ecModel, api) {\n var renderItem = customSeries.get('renderItem');\n var coordSys = customSeries.coordinateSystem;\n var prepareResult = {};\n\n if (coordSys) {\n prepareResult = coordSys.prepareCustoms ? coordSys.prepareCustoms() : prepareCustoms[coordSys.type](coordSys);\n }\n\n var userAPI = zrUtil.defaults({\n getWidth: api.getWidth,\n getHeight: api.getHeight,\n getZr: api.getZr,\n getDevicePixelRatio: api.getDevicePixelRatio,\n value: value,\n style: style,\n styleEmphasis: styleEmphasis,\n visual: visual,\n barLayout: barLayout,\n currentSeriesIndices: currentSeriesIndices,\n font: font\n }, prepareResult.api || {});\n var userParams = {\n // The life cycle of context: current round of rendering.\n // The global life cycle is probably not necessary, because\n // user can store global status by themselves.\n context: {},\n seriesId: customSeries.id,\n seriesName: customSeries.name,\n seriesIndex: customSeries.seriesIndex,\n coordSys: prepareResult.coordSys,\n dataInsideLength: data.count(),\n encode: wrapEncodeDef(customSeries.getData())\n }; // Do not support call `api` asynchronously without dataIndexInside input.\n\n var currDataIndexInside;\n var currDirty = true;\n var currItemModel;\n var currLabelNormalModel;\n var currLabelEmphasisModel;\n var currVisualColor;\n return function (dataIndexInside, payload) {\n currDataIndexInside = dataIndexInside;\n currDirty = true;\n return renderItem && renderItem(zrUtil.defaults({\n dataIndexInside: dataIndexInside,\n dataIndex: data.getRawIndex(dataIndexInside),\n // Can be used for optimization when zoom or roam.\n actionType: payload ? payload.type : null\n }, userParams), userAPI);\n }; // Do not update cache until api called.\n\n function updateCache(dataIndexInside) {\n dataIndexInside == null && (dataIndexInside = currDataIndexInside);\n\n if (currDirty) {\n currItemModel = data.getItemModel(dataIndexInside);\n currLabelNormalModel = currItemModel.getModel(LABEL_NORMAL);\n currLabelEmphasisModel = currItemModel.getModel(LABEL_EMPHASIS);\n currVisualColor = data.getItemVisual(dataIndexInside, 'color');\n currDirty = false;\n }\n }\n /**\n * @public\n * @param {number|string} dim\n * @param {number} [dataIndexInside=currDataIndexInside]\n * @return {number|string} value\n */\n\n\n function value(dim, dataIndexInside) {\n dataIndexInside == null && (dataIndexInside = currDataIndexInside);\n return data.get(data.getDimension(dim || 0), dataIndexInside);\n }\n /**\n * By default, `visual` is applied to style (to support visualMap).\n * `visual.color` is applied at `fill`. If user want apply visual.color on `stroke`,\n * it can be implemented as:\n * `api.style({stroke: api.visual('color'), fill: null})`;\n * @public\n * @param {Object} [extra]\n * @param {number} [dataIndexInside=currDataIndexInside]\n */\n\n\n function style(extra, dataIndexInside) {\n dataIndexInside == null && (dataIndexInside = currDataIndexInside);\n updateCache(dataIndexInside);\n var itemStyle = currItemModel.getModel(ITEM_STYLE_NORMAL_PATH).getItemStyle();\n currVisualColor != null && (itemStyle.fill = currVisualColor);\n var opacity = data.getItemVisual(dataIndexInside, 'opacity');\n opacity != null && (itemStyle.opacity = opacity);\n var labelModel = extra ? applyExtraBefore(extra, currLabelNormalModel) : currLabelNormalModel;\n graphicUtil.setTextStyle(itemStyle, labelModel, null, {\n autoColor: currVisualColor,\n isRectText: true\n });\n itemStyle.text = labelModel.getShallow('show') ? zrUtil.retrieve2(customSeries.getFormattedLabel(dataIndexInside, 'normal'), getDefaultLabel(data, dataIndexInside)) : null;\n extra && applyExtraAfter(itemStyle, extra);\n return itemStyle;\n }\n /**\n * @public\n * @param {Object} [extra]\n * @param {number} [dataIndexInside=currDataIndexInside]\n */\n\n\n function styleEmphasis(extra, dataIndexInside) {\n dataIndexInside == null && (dataIndexInside = currDataIndexInside);\n updateCache(dataIndexInside);\n var itemStyle = currItemModel.getModel(ITEM_STYLE_EMPHASIS_PATH).getItemStyle();\n var labelModel = extra ? applyExtraBefore(extra, currLabelEmphasisModel) : currLabelEmphasisModel;\n graphicUtil.setTextStyle(itemStyle, labelModel, null, {\n isRectText: true\n }, true);\n itemStyle.text = labelModel.getShallow('show') ? zrUtil.retrieve3(customSeries.getFormattedLabel(dataIndexInside, 'emphasis'), customSeries.getFormattedLabel(dataIndexInside, 'normal'), getDefaultLabel(data, dataIndexInside)) : null;\n extra && applyExtraAfter(itemStyle, extra);\n return itemStyle;\n }\n /**\n * @public\n * @param {string} visualType\n * @param {number} [dataIndexInside=currDataIndexInside]\n */\n\n\n function visual(visualType, dataIndexInside) {\n dataIndexInside == null && (dataIndexInside = currDataIndexInside);\n return data.getItemVisual(dataIndexInside, visualType);\n }\n /**\n * @public\n * @param {number} opt.count Positive interger.\n * @param {number} [opt.barWidth]\n * @param {number} [opt.barMaxWidth]\n * @param {number} [opt.barMinWidth]\n * @param {number} [opt.barGap]\n * @param {number} [opt.barCategoryGap]\n * @return {Object} {width, offset, offsetCenter} is not support, return undefined.\n */\n\n\n function barLayout(opt) {\n if (coordSys.getBaseAxis) {\n var baseAxis = coordSys.getBaseAxis();\n return getLayoutOnAxis(zrUtil.defaults({\n axis: baseAxis\n }, opt), api);\n }\n }\n /**\n * @public\n * @return {Array.}\n */\n\n\n function currentSeriesIndices() {\n return ecModel.getCurrentSeriesIndices();\n }\n /**\n * @public\n * @param {Object} opt\n * @param {string} [opt.fontStyle]\n * @param {number} [opt.fontWeight]\n * @param {number} [opt.fontSize]\n * @param {string} [opt.fontFamily]\n * @return {string} font string\n */\n\n\n function font(opt) {\n return graphicUtil.getFont(opt, ecModel);\n }\n}\n\nfunction wrapEncodeDef(data) {\n var encodeDef = {};\n zrUtil.each(data.dimensions, function (dimName, dataDimIndex) {\n var dimInfo = data.getDimensionInfo(dimName);\n\n if (!dimInfo.isExtraCoord) {\n var coordDim = dimInfo.coordDim;\n var dataDims = encodeDef[coordDim] = encodeDef[coordDim] || [];\n dataDims[dimInfo.coordDimIndex] = dataDimIndex;\n }\n });\n return encodeDef;\n}\n\nfunction createOrUpdate(el, dataIndex, elOption, animatableModel, group, data) {\n el = doCreateOrUpdate(el, dataIndex, elOption, animatableModel, group, data, true);\n el && data.setItemGraphicEl(dataIndex, el);\n return el;\n}\n\nfunction doCreateOrUpdate(el, dataIndex, elOption, animatableModel, group, data, isRoot) {\n // [Rule]\n // By default, follow merge mode.\n // (It probably brings benifit for performance in some cases of large data, where\n // user program can be optimized to that only updated props needed to be re-calculated,\n // or according to `actionType` some calculation can be skipped.)\n // If `renderItem` returns `null`/`undefined`/`false`, remove the previous el if existing.\n // (It seems that violate the \"merge\" principle, but most of users probably intuitively\n // regard \"return;\" as \"show nothing element whatever\", so make a exception to meet the\n // most cases.)\n var simplyRemove = !elOption; // `null`/`undefined`/`false`\n\n elOption = elOption || {};\n var elOptionType = elOption.type;\n var elOptionShape = elOption.shape;\n var elOptionStyle = elOption.style;\n\n if (el && (simplyRemove // || elOption.$merge === false\n // If `elOptionType` is `null`, follow the merge principle.\n || elOptionType != null && elOptionType !== el.__customGraphicType || elOptionType === 'path' && hasOwnPathData(elOptionShape) && getPathData(elOptionShape) !== el.__customPathData || elOptionType === 'image' && hasOwn(elOptionStyle, 'image') && elOptionStyle.image !== el.__customImagePath // FIXME test and remove this restriction?\n || elOptionType === 'text' && hasOwn(elOptionShape, 'text') && elOptionStyle.text !== el.__customText)) {\n group.remove(el);\n el = null;\n } // `elOption.type` is undefined when `renderItem` returns nothing.\n\n\n if (simplyRemove) {\n return;\n }\n\n var isInit = !el;\n !el && (el = createEl(elOption));\n updateEl(el, dataIndex, elOption, animatableModel, data, isInit, isRoot);\n\n if (elOptionType === 'group') {\n mergeChildren(el, dataIndex, elOption, animatableModel, data);\n } // Always add whatever already added to ensure sequence.\n\n\n group.add(el);\n return el;\n} // Usage:\n// (1) By default, `elOption.$mergeChildren` is `'byIndex'`, which indicates that\n// the existing children will not be removed, and enables the feature that\n// update some of the props of some of the children simply by construct\n// the returned children of `renderItem` like:\n// `var children = group.children = []; children[3] = {opacity: 0.5};`\n// (2) If `elOption.$mergeChildren` is `'byName'`, add/update/remove children\n// by child.name. But that might be lower performance.\n// (3) If `elOption.$mergeChildren` is `false`, the existing children will be\n// replaced totally.\n// (4) If `!elOption.children`, following the \"merge\" principle, nothing will happen.\n//\n// For implementation simpleness, do not provide a direct way to remove sinlge\n// child (otherwise the total indicies of the children array have to be modified).\n// User can remove a single child by set its `ignore` as `true` or replace\n// it by another element, where its `$merge` can be set as `true` if necessary.\n\n\nfunction mergeChildren(el, dataIndex, elOption, animatableModel, data) {\n var newChildren = elOption.children;\n var newLen = newChildren ? newChildren.length : 0;\n var mergeChildren = elOption.$mergeChildren; // `diffChildrenByName` has been deprecated.\n\n var byName = mergeChildren === 'byName' || elOption.diffChildrenByName;\n var notMerge = mergeChildren === false; // For better performance on roam update, only enter if necessary.\n\n if (!newLen && !byName && !notMerge) {\n return;\n }\n\n if (byName) {\n diffGroupChildren({\n oldChildren: el.children() || [],\n newChildren: newChildren || [],\n dataIndex: dataIndex,\n animatableModel: animatableModel,\n group: el,\n data: data\n });\n return;\n }\n\n notMerge && el.removeAll(); // Mapping children of a group simply by index, which\n // might be better performance.\n\n var index = 0;\n\n for (; index < newLen; index++) {\n newChildren[index] && doCreateOrUpdate(el.childAt(index), dataIndex, newChildren[index], animatableModel, el, data);\n }\n}\n\nfunction diffGroupChildren(context) {\n new DataDiffer(context.oldChildren, context.newChildren, getKey, getKey, context).add(processAddUpdate).update(processAddUpdate).remove(processRemove).execute();\n}\n\nfunction getKey(item, idx) {\n var name = item && item.name;\n return name != null ? name : GROUP_DIFF_PREFIX + idx;\n}\n\nfunction processAddUpdate(newIndex, oldIndex) {\n var context = this.context;\n var childOption = newIndex != null ? context.newChildren[newIndex] : null;\n var child = oldIndex != null ? context.oldChildren[oldIndex] : null;\n doCreateOrUpdate(child, context.dataIndex, childOption, context.animatableModel, context.group, context.data);\n} // `graphic#applyDefaultTextStyle` will cache\n// textFill, textStroke, textStrokeWidth.\n// We have to do this trick.\n\n\nfunction applyExtraBefore(extra, model) {\n var dummyModel = new Model({}, model);\n zrUtil.each(CACHED_LABEL_STYLE_PROPERTIES, function (stylePropName, modelPropName) {\n if (extra.hasOwnProperty(stylePropName)) {\n dummyModel.option[modelPropName] = extra[stylePropName];\n }\n });\n return dummyModel;\n}\n\nfunction applyExtraAfter(itemStyle, extra) {\n for (var key in extra) {\n if (extra.hasOwnProperty(key) || !CACHED_LABEL_STYLE_PROPERTIES.hasOwnProperty(key)) {\n itemStyle[key] = extra[key];\n }\n }\n}\n\nfunction processRemove(oldIndex) {\n var context = this.context;\n var child = context.oldChildren[oldIndex];\n child && context.group.remove(child);\n}\n\nfunction getPathData(shape) {\n // \"d\" follows the SVG convention.\n return shape && (shape.pathData || shape.d);\n}\n\nfunction hasOwnPathData(shape) {\n return shape && (shape.hasOwnProperty('pathData') || shape.hasOwnProperty('d'));\n}\n\nfunction hasOwn(host, prop) {\n return host && host.hasOwnProperty(prop);\n}"],"names":["echarts","zrUtil","_barGrid","layout","largeLayout","registerLayout","PRIORITY","VISUAL","LAYOUT","curry","PROGRESSIVE_LAYOUT","registerVisual","seriesType","reset","seriesModel","getData","setVisual","BaseBarSeries","_default","extend","type","dependencies","brushSelector","getProgressive","this","get","getProgressiveThreshold","progressiveThreshold","largeThreshold","defaultOption","clip","roundCap","showBackground","backgroundStyle","color","borderColor","borderWidth","borderType","borderRadius","shadowBlur","shadowColor","shadowOffsetX","shadowOffsetY","opacity","module","exports","_config","__DEV__","graphic","_helper","setLabel","Model","barItemStyle","Path","Group","_throttle","throttle","_createClipPathFromCoordSys","createClipPath","Sausage","BAR_BORDER_WIDTH_QUERY","_eventPos","getClipArea","coord","data","coordSysClipArea","getArea","baseAxis","getBaseAxis","onBand","expandWidth","getLayout","isHorizontal","x","width","y","height","prototype","extendChartView","render","ecModel","api","_updateDrawMode","coordinateSystemType","_isLargeDraw","_renderLarge","_renderNormal","group","incrementalPrepareRender","_clear","incrementalRender","params","_incrementalRenderLarge","isLargeDraw","pipelineContext","large","isHorizontalOrRadial","oldData","_data","coordinateSystem","dim","animationModel","isAnimationEnabled","needsClip","removeClipPath","drawBackground","backgroundModel","getModel","barBorderRadius","bgEls","oldBgEls","_backgroundEls","createBackground","dataIndex","bgLayout","bgEl","createBackgroundEl","useStyle","getBarItemStyle","setShape","diff","add","itemModel","getItemModel","hasValue","isClipped","remove","el","elementCreator","setItemGraphicEl","updateStyle","update","newIndex","oldIndex","length","shape","createBackgroundShape","updateProps","getItemGraphicEl","removeRect","removeSector","execute","bgGroup","_backgroundGroup","removeAll","i","createLarge","clipPath","setClipPath","_removeBackground","dispose","noop","eachItemGraphicEl","mathMax","Math","max","mathMin","min","cartesian2d","coordSysBoundingRect","signWidth","signHeight","x2","y2","clipped","polar","signR","r0","r","isUpdate","rect","Rect","z2","name","rectShape","animateProperty","animateTarget","isRadial","clockwise","startAngle","endAngle","ShapeClass","Sector","sector","defaults","sectorShape","style","text","parent","getItemLayout","fixedLineWidth","getLineWidth","signX","signY","cx","cy","isZeroOnPolar","isPolar","getItemVisual","stroke","getVisual","itemStyleModel","hoverStyle","fill","cursorStyle","getShallow","attr","labelPositionOutside","setHoverStyle","rawLayout","lineWidth","isNaN","Number","MAX_VALUE","abs","LargePath","points","buildPath","ctx","startPoint","__startPoint","baseDimIdx","__baseDimIdx","moveTo","lineTo","incremental","largeDataIndices","barWidth","backgroundStartPoint","__largeDataIndices","__barWidth","silent","setLargeBackgroundStyle","setLargeStyle","seriesIndex","on","largePathUpdateDataIndex","event","largePath","largePathFindDataIndex","offsetX","offsetY","valueDimIdx","barWidthHalf","startValueVal","pointerBaseVal","pointerValueVal","baseLowerBound","baseUpperBound","len","ii","barBaseVal","barValueVal","itemStyle","getItemStyle","coordLayout","grid","getRect","PI","ElementClz","SeriesModel","createListFromArray","getInitialData","option","getSource","useEncodeDefaulter","getMarkerPosition","value","coordSys","pt","dataToPoint","clampData","offset","size","offsetIndex","NaN","zlevel","z","legendHoverLink","barMinHeight","barMinAngle","progressive","progressiveChunkMode","emphasis","PictorialBarSeries","symbol","symbolSize","symbolRotate","symbolPosition","symbolOffset","symbolMargin","symbolRepeat","symbolRepeatDirection","symbolClip","symbolBoundingData","symbolPatternSize","barGap","hoverAnimation","stack","superApply","arguments","_symbol","createSymbol","_number","parsePercent","isNumeric","LAYOUT_ATTRS","xy","wh","index","posDesc","pathForLineWidth","Circle","BarView","cartesian","coordSysRect","opt","ecSize","getWidth","getHeight","coordSysExtent","valueDim","categoryDim","symbolMeta","getSymbolMeta","bar","createBar","updateCommon","pictorialShapeStr","getShapeStr","__pictorialShapeStr","updateBar","__pictorialSymbolMeta","removeBar","rotation","symbolType","prepareBarLength","prepareSymbolSize","boundingLength","pxSign","prepareLineWidth","symbolScale","isArray","prepareLayoutInfo","valueLineWidth","repeatCutLength","output","valueAxis","getOtherAxis","zeroPx","toGlobalCoord","dataToCoord","pxSignIdx","symbolBoundingExtent","convertToCoordOnAxis","reverse","axis","scale","parse","categorySize","slice","updateTransform","getLineScale","unitLength","pathLen","absBoundingLength","retrieve","hasEndGap","lastIndexOf","uLenWithMargin","endFix","repeatSpecified","repeatTimes","toIntTimes","mDiff","sizeFix","pathPosition","bundlePosition","barRectShape","clipShape","createPath","path","culling","setStyle","strokeNoScale","createOrUpdateRepeatSymbols","bundle","__pictorialBundle","unit","eachPath","__pictorialAnimationIndex","__pictorialRepeatTimes","updateAttr","makeTarget","updateHoverAnimation","target","position","onMouseOver","onMouseOut","trigger","createOrUpdateSingleSymbol","mainPath","__pictorialMainPath","createOrUpdateBarRect","barRect","__pictorialBarRect","createOrUpdateClip","__pictorialClipPath","getAnimationDelayParams","count","parentModel","off","animateTo","labelRect","pathes","push","each","join","cb","context","children","call","immediateAttrs","animationAttrs","normalStyle","setColor","cursor","barRectHoverStyle","barPositionOutside","times","roundedTimes","round","ceil","makeStyleMapper","excludes","getBorderLineDash","lineDash","_labelHelper","getDefaultLabel","labelModel","hoverLabelModel","setLabelStyle","labelFetcher","labelDataIndex","defaultText","isRectText","autoColor","fixPosition","textPosition","boxplotVisual","boxplotLayout","_whiskerBoxCommon","seriesModelMixin","BoxplotSeries","defaultValueDimensions","defaultTooltip","dimensions","boxWidth","animationEasing","animationDuration","mixin","ChartView","NORMAL_ITEM_STYLE_PATH","EMPHASIS_ITEM_STYLE_PATH","BoxplotView","constDim","newIdx","itemLayout","symbolEl","createNormalBox","oldIdx","updateNormalBoxData","BoxPath","ends","closePath","isInit","transInit","hostModel","updateMethod","normalItemStyleModel","map","point","initBaseline","groupResult","groupSeriesByAxis","groupItem","seriesModels","calculateBase","idx","layoutSingleSeries","boxOffsetList","boxWidthList","result","axisList","eachSeriesByType","indexOf","extent","bandWidth","seriesCount","boundList","getBandWidth","maxDataCount","getExtent","boxWidthBound","availableWidth","boxGap","base","halfWidth","cDimIdx","vDimIdx","coordDims","cDim","mapDimension","vDims","axisDimVal","median","getPoint","end1","end2","end4","end5","addBodyEnd","layEndLine","setItemLayout","dimIdx","val","p","start","point1","point2","endCenter","from","to","borderColorQuery","globalColors","eachRawSeriesByType","defaulColor","legendSymbol","isSeriesFiltered","setItemVisual","preprocessor","candlestickVisual","candlestickLayout","registerPreprocessor","CandlestickSeries","color0","borderColor0","barMaxWidth","barMinWidth","animationUpdate","getShadowDim","selectors","brushRect","SKIP_PROPS","CandlestickView","_incrementalRenderNormal","isSimpleBox","clipArea","isNormalBoxClipped","initProps","setBoxCommon","next","NormalBoxPath","__simpleBox","contain","LargeBoxPath","__sign","largePoints","elP","elN","sign","suffix","_graphic","subPixelOptimize","createRenderPlanner","_util","retrieve2","LargeArr","Float32Array","Array","plan","candleWidth","calculateCandleWidth","openDim","closeDim","lowestDim","highestDim","setLayout","progress","largeProgress","normalProgress","openVal","closeVal","lowestVal","highestVal","ocLow","ocHigh","ocLowPoint","ocHighPoint","lowestPoint","highestPoint","subPixelOptimizePoint","getSign","makeBrushRect","pmin","pmax","tmpIn","tmpOut","positiveBorderColorQuery","negativeBorderColorQuery","positiveColorQuery","negativeColorQuery","performRawSeries","colorP","getColor","colorN","borderColorP","getBorderColor","borderColorN","isLargeRender","model","series","seriesItem","isObject","graphicUtil","getLayoutOnAxis","DataDiffer","prepareCartesian2d","prepareGeo","prepareSingleAxis","preparePolar","prepareCalendar","CACHED_LABEL_STYLE_PROPERTIES","ITEM_STYLE_NORMAL_PATH","ITEM_STYLE_EMPHASIS_PATH","LABEL_NORMAL","LABEL_EMPHASIS","GROUP_DIFF_PREFIX","prepareCustoms","geo","singleAxis","calendar","createEl","elOption","graphicType","pathRect","pathData","getPathData","makePath","__customPathData","Image","__customImagePath","image","Text","__customText","Error","Clz","getShapeClass","__customGraphicType","updateEl","animatableModel","isRoot","transitionProps","elOptionStyle","clone","origin","targetStyle","prop","prepareStyleTransition","hasOwnProperty","textFill","textStroke","targetOpacity","invisible","ignore","info","styleEmphasis","setElementHoverStyle","setAsHighDownDispatcher","oldElStyle","makeRenderItem","customSeries","renderItem","prepareResult","currDataIndexInside","currItemModel","currLabelNormalModel","currLabelEmphasisModel","currVisualColor","userAPI","getZr","getDevicePixelRatio","visual","barLayout","currentSeriesIndices","font","userParams","seriesId","id","seriesName","dataInsideLength","encode","wrapEncodeDef","currDirty","dataIndexInside","payload","getRawIndex","actionType","updateCache","getDimension","extra","applyExtraBefore","setTextStyle","getFormattedLabel","applyExtraAfter","retrieve3","visualType","getCurrentSeriesIndices","getFont","encodeDef","dimName","dataDimIndex","dimInfo","getDimensionInfo","isExtraCoord","coordDim","dataDims","coordDimIndex","createOrUpdate","doCreateOrUpdate","simplyRemove","elOptionType","elOptionShape","hasOwnPathData","hasOwn","mergeChildren","newChildren","newLen","$mergeChildren","byName","diffChildrenByName","notMerge","diffGroupChildren","oldChildren","childAt","getKey","processAddUpdate","processRemove","item","childOption","child","dummyModel","stylePropName","modelPropName","key","d","host","useTransform","getDataParams","dataType","apply","setIncrementalAndHoverLayer","isGroup","useHoverLayer","end","traverse","filterForExposedEvent","eventType","query","targetEl","packedEvent","elementName","element"],"sourceRoot":""}