1 |
- {"version":3,"file":"js/chunk-vendors-69403744.135b0fce.js","mappings":"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","sources":["webpack://app/./node_modules/echarts/lib/layout/barGrid.js","webpack://app/./node_modules/echarts/lib/layout/barPolar.js","webpack://app/./node_modules/echarts/lib/layout/points.js","webpack://app/./node_modules/echarts/lib/loading/default.js","webpack://app/./node_modules/echarts/lib/model/Component.js","webpack://app/./node_modules/echarts/lib/model/Global.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 zrUtil = require(\"zrender/lib/core/util\");\n\nvar _number = require(\"../util/number\");\n\nvar parsePercent = _number.parsePercent;\n\nvar _dataStackHelper = require(\"../data/helper/dataStackHelper\");\n\nvar isDimensionStacked = _dataStackHelper.isDimensionStacked;\n\nvar createRenderPlanner = require(\"../chart/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*/\n\n/* global Float32Array */\nvar STACK_PREFIX = '__ec_stack_';\nvar LARGE_BAR_MIN_WIDTH = 0.5;\nvar LargeArr = typeof Float32Array !== 'undefined' ? Float32Array : Array;\n\nfunction getSeriesStackId(seriesModel) {\n return seriesModel.get('stack') || STACK_PREFIX + seriesModel.seriesIndex;\n}\n\nfunction getAxisKey(axis) {\n return axis.dim + axis.index;\n}\n/**\n * @param {Object} opt\n * @param {module:echarts/coord/Axis} opt.axis Only support category axis currently.\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} If axis.type is not 'category', return undefined.\n */\n\n\nfunction getLayoutOnAxis(opt) {\n var params = [];\n var baseAxis = opt.axis;\n var axisKey = 'axis0';\n\n if (baseAxis.type !== 'category') {\n return;\n }\n\n var bandWidth = baseAxis.getBandWidth();\n\n for (var i = 0; i < opt.count || 0; i++) {\n params.push(zrUtil.defaults({\n bandWidth: bandWidth,\n axisKey: axisKey,\n stackId: STACK_PREFIX + i\n }, opt));\n }\n\n var widthAndOffsets = doCalBarWidthAndOffset(params);\n var result = [];\n\n for (var i = 0; i < opt.count; i++) {\n var item = widthAndOffsets[axisKey][STACK_PREFIX + i];\n item.offsetCenter = item.offset + item.width / 2;\n result.push(item);\n }\n\n return result;\n}\n\nfunction prepareLayoutBarSeries(seriesType, ecModel) {\n var seriesModels = [];\n ecModel.eachSeriesByType(seriesType, function (seriesModel) {\n // Check series coordinate, do layout for cartesian2d only\n if (isOnCartesian(seriesModel) && !isInLargeMode(seriesModel)) {\n seriesModels.push(seriesModel);\n }\n });\n return seriesModels;\n}\n/**\n * Map from (baseAxis.dim + '_' + baseAxis.index) to min gap of two adjacent\n * values.\n * This works for time axes, value axes, and log axes.\n * For a single time axis, return value is in the form like\n * {'x_0': [1000000]}.\n * The value of 1000000 is in milliseconds.\n */\n\n\nfunction getValueAxesMinGaps(barSeries) {\n /**\n * Map from axis.index to values.\n * For a single time axis, axisValues is in the form like\n * {'x_0': [1495555200000, 1495641600000, 1495728000000]}.\n * Items in axisValues[x], e.g. 1495555200000, are time values of all\n * series.\n */\n var axisValues = {};\n zrUtil.each(barSeries, function (seriesModel) {\n var cartesian = seriesModel.coordinateSystem;\n var baseAxis = cartesian.getBaseAxis();\n\n if (baseAxis.type !== 'time' && baseAxis.type !== 'value') {\n return;\n }\n\n var data = seriesModel.getData();\n var key = baseAxis.dim + '_' + baseAxis.index;\n var dim = data.mapDimension(baseAxis.dim);\n\n for (var i = 0, cnt = data.count(); i < cnt; ++i) {\n var value = data.get(dim, i);\n\n if (!axisValues[key]) {\n // No previous data for the axis\n axisValues[key] = [value];\n } else {\n // No value in previous series\n axisValues[key].push(value);\n } // Ignore duplicated time values in the same axis\n\n }\n });\n var axisMinGaps = [];\n\n for (var key in axisValues) {\n if (axisValues.hasOwnProperty(key)) {\n var valuesInAxis = axisValues[key];\n\n if (valuesInAxis) {\n // Sort axis values into ascending order to calculate gaps\n valuesInAxis.sort(function (a, b) {\n return a - b;\n });\n var min = null;\n\n for (var j = 1; j < valuesInAxis.length; ++j) {\n var delta = valuesInAxis[j] - valuesInAxis[j - 1];\n\n if (delta > 0) {\n // Ignore 0 delta because they are of the same axis value\n min = min === null ? delta : Math.min(min, delta);\n }\n } // Set to null if only have one data\n\n\n axisMinGaps[key] = min;\n }\n }\n }\n\n return axisMinGaps;\n}\n\nfunction makeColumnLayout(barSeries) {\n var axisMinGaps = getValueAxesMinGaps(barSeries);\n var seriesInfoList = [];\n zrUtil.each(barSeries, function (seriesModel) {\n var cartesian = seriesModel.coordinateSystem;\n var baseAxis = cartesian.getBaseAxis();\n var axisExtent = baseAxis.getExtent();\n var bandWidth;\n\n if (baseAxis.type === 'category') {\n bandWidth = baseAxis.getBandWidth();\n } else if (baseAxis.type === 'value' || baseAxis.type === 'time') {\n var key = baseAxis.dim + '_' + baseAxis.index;\n var minGap = axisMinGaps[key];\n var extentSpan = Math.abs(axisExtent[1] - axisExtent[0]);\n var scale = baseAxis.scale.getExtent();\n var scaleSpan = Math.abs(scale[1] - scale[0]);\n bandWidth = minGap ? extentSpan / scaleSpan * minGap : extentSpan; // When there is only one data value\n } else {\n var data = seriesModel.getData();\n bandWidth = Math.abs(axisExtent[1] - axisExtent[0]) / data.count();\n }\n\n var barWidth = parsePercent(seriesModel.get('barWidth'), bandWidth);\n var barMaxWidth = parsePercent(seriesModel.get('barMaxWidth'), bandWidth);\n var barMinWidth = parsePercent( // barMinWidth by default is 1 in cartesian. Because in value axis,\n // the auto-calculated bar width might be less than 1.\n seriesModel.get('barMinWidth') || 1, bandWidth);\n var barGap = seriesModel.get('barGap');\n var barCategoryGap = seriesModel.get('barCategoryGap');\n seriesInfoList.push({\n bandWidth: bandWidth,\n barWidth: barWidth,\n barMaxWidth: barMaxWidth,\n barMinWidth: barMinWidth,\n barGap: barGap,\n barCategoryGap: barCategoryGap,\n axisKey: getAxisKey(baseAxis),\n stackId: getSeriesStackId(seriesModel)\n });\n });\n return doCalBarWidthAndOffset(seriesInfoList);\n}\n\nfunction doCalBarWidthAndOffset(seriesInfoList) {\n // Columns info on each category axis. Key is cartesian name\n var columnsMap = {};\n zrUtil.each(seriesInfoList, function (seriesInfo, idx) {\n var axisKey = seriesInfo.axisKey;\n var bandWidth = seriesInfo.bandWidth;\n var columnsOnAxis = columnsMap[axisKey] || {\n bandWidth: bandWidth,\n remainedWidth: bandWidth,\n autoWidthCount: 0,\n categoryGap: '20%',\n gap: '30%',\n stacks: {}\n };\n var stacks = columnsOnAxis.stacks;\n columnsMap[axisKey] = columnsOnAxis;\n var stackId = seriesInfo.stackId;\n\n if (!stacks[stackId]) {\n columnsOnAxis.autoWidthCount++;\n }\n\n stacks[stackId] = stacks[stackId] || {\n width: 0,\n maxWidth: 0\n }; // Caution: In a single coordinate system, these barGrid attributes\n // will be shared by series. Consider that they have default values,\n // only the attributes set on the last series will work.\n // Do not change this fact unless there will be a break change.\n\n var barWidth = seriesInfo.barWidth;\n\n if (barWidth && !stacks[stackId].width) {\n // See #6312, do not restrict width.\n stacks[stackId].width = barWidth;\n barWidth = Math.min(columnsOnAxis.remainedWidth, barWidth);\n columnsOnAxis.remainedWidth -= barWidth;\n }\n\n var barMaxWidth = seriesInfo.barMaxWidth;\n barMaxWidth && (stacks[stackId].maxWidth = barMaxWidth);\n var barMinWidth = seriesInfo.barMinWidth;\n barMinWidth && (stacks[stackId].minWidth = barMinWidth);\n var barGap = seriesInfo.barGap;\n barGap != null && (columnsOnAxis.gap = barGap);\n var barCategoryGap = seriesInfo.barCategoryGap;\n barCategoryGap != null && (columnsOnAxis.categoryGap = barCategoryGap);\n });\n var result = {};\n zrUtil.each(columnsMap, function (columnsOnAxis, coordSysName) {\n result[coordSysName] = {};\n var stacks = columnsOnAxis.stacks;\n var bandWidth = columnsOnAxis.bandWidth;\n var categoryGap = parsePercent(columnsOnAxis.categoryGap, bandWidth);\n var barGapPercent = parsePercent(columnsOnAxis.gap, 1);\n var remainedWidth = columnsOnAxis.remainedWidth;\n var autoWidthCount = columnsOnAxis.autoWidthCount;\n var autoWidth = (remainedWidth - categoryGap) / (autoWidthCount + (autoWidthCount - 1) * barGapPercent);\n autoWidth = Math.max(autoWidth, 0); // Find if any auto calculated bar exceeded maxBarWidth\n\n zrUtil.each(stacks, function (column) {\n var maxWidth = column.maxWidth;\n var minWidth = column.minWidth;\n\n if (!column.width) {\n var finalWidth = autoWidth;\n\n if (maxWidth && maxWidth < finalWidth) {\n finalWidth = Math.min(maxWidth, remainedWidth);\n } // `minWidth` has higher priority. `minWidth` decide that wheter the\n // bar is able to be visible. So `minWidth` should not be restricted\n // by `maxWidth` or `remainedWidth` (which is from `bandWidth`). In\n // the extreme cases for `value` axis, bars are allowed to overlap\n // with each other if `minWidth` specified.\n\n\n if (minWidth && minWidth > finalWidth) {\n finalWidth = minWidth;\n }\n\n if (finalWidth !== autoWidth) {\n column.width = finalWidth;\n remainedWidth -= finalWidth + barGapPercent * finalWidth;\n autoWidthCount--;\n }\n } else {\n // `barMinWidth/barMaxWidth` has higher priority than `barWidth`, as\n // CSS does. Becuase barWidth can be a percent value, where\n // `barMaxWidth` can be used to restrict the final width.\n var finalWidth = column.width;\n\n if (maxWidth) {\n finalWidth = Math.min(finalWidth, maxWidth);\n } // `minWidth` has higher priority, as described above\n\n\n if (minWidth) {\n finalWidth = Math.max(finalWidth, minWidth);\n }\n\n column.width = finalWidth;\n remainedWidth -= finalWidth + barGapPercent * finalWidth;\n autoWidthCount--;\n }\n }); // Recalculate width again\n\n autoWidth = (remainedWidth - categoryGap) / (autoWidthCount + (autoWidthCount - 1) * barGapPercent);\n autoWidth = Math.max(autoWidth, 0);\n var widthSum = 0;\n var lastColumn;\n zrUtil.each(stacks, function (column, idx) {\n if (!column.width) {\n column.width = autoWidth;\n }\n\n lastColumn = column;\n widthSum += column.width * (1 + barGapPercent);\n });\n\n if (lastColumn) {\n widthSum -= lastColumn.width * barGapPercent;\n }\n\n var offset = -widthSum / 2;\n zrUtil.each(stacks, function (column, stackId) {\n result[coordSysName][stackId] = result[coordSysName][stackId] || {\n bandWidth: bandWidth,\n offset: offset,\n width: column.width\n };\n offset += column.width * (1 + barGapPercent);\n });\n });\n return result;\n}\n/**\n * @param {Object} barWidthAndOffset The result of makeColumnLayout\n * @param {module:echarts/coord/Axis} axis\n * @param {module:echarts/model/Series} [seriesModel] If not provided, return all.\n * @return {Object} {stackId: {offset, width}} or {offset, width} if seriesModel provided.\n */\n\n\nfunction retrieveColumnLayout(barWidthAndOffset, axis, seriesModel) {\n if (barWidthAndOffset && axis) {\n var result = barWidthAndOffset[getAxisKey(axis)];\n\n if (result != null && seriesModel != null) {\n result = result[getSeriesStackId(seriesModel)];\n }\n\n return result;\n }\n}\n/**\n * @param {string} seriesType\n * @param {module:echarts/model/Global} ecModel\n */\n\n\nfunction layout(seriesType, ecModel) {\n var seriesModels = prepareLayoutBarSeries(seriesType, ecModel);\n var barWidthAndOffset = makeColumnLayout(seriesModels);\n var lastStackCoords = {};\n var lastStackCoordsOrigin = {};\n zrUtil.each(seriesModels, function (seriesModel) {\n var data = seriesModel.getData();\n var cartesian = seriesModel.coordinateSystem;\n var baseAxis = cartesian.getBaseAxis();\n var stackId = getSeriesStackId(seriesModel);\n var columnLayoutInfo = barWidthAndOffset[getAxisKey(baseAxis)][stackId];\n var columnOffset = columnLayoutInfo.offset;\n var columnWidth = columnLayoutInfo.width;\n var valueAxis = cartesian.getOtherAxis(baseAxis);\n var barMinHeight = seriesModel.get('barMinHeight') || 0;\n lastStackCoords[stackId] = lastStackCoords[stackId] || [];\n lastStackCoordsOrigin[stackId] = lastStackCoordsOrigin[stackId] || []; // Fix #4243\n\n data.setLayout({\n bandWidth: columnLayoutInfo.bandWidth,\n offset: columnOffset,\n size: columnWidth\n });\n var valueDim = data.mapDimension(valueAxis.dim);\n var baseDim = data.mapDimension(baseAxis.dim);\n var stacked = isDimensionStacked(data, valueDim\n /*, baseDim*/\n );\n var isValueAxisH = valueAxis.isHorizontal();\n var valueAxisStart = getValueAxisStart(baseAxis, valueAxis, stacked);\n\n for (var idx = 0, len = data.count(); idx < len; idx++) {\n var value = data.get(valueDim, idx);\n var baseValue = data.get(baseDim, idx);\n var sign = value >= 0 ? 'p' : 'n';\n var baseCoord = valueAxisStart; // Because of the barMinHeight, we can not use the value in\n // stackResultDimension directly.\n\n if (stacked) {\n // Only ordinal axis can be stacked.\n if (!lastStackCoords[stackId][baseValue]) {\n lastStackCoords[stackId][baseValue] = {\n p: valueAxisStart,\n // Positive stack\n n: valueAxisStart // Negative stack\n\n };\n } // Should also consider #4243\n\n\n baseCoord = lastStackCoords[stackId][baseValue][sign];\n }\n\n var x;\n var y;\n var width;\n var height;\n\n if (isValueAxisH) {\n var coord = cartesian.dataToPoint([value, baseValue]);\n x = baseCoord;\n y = coord[1] + columnOffset;\n width = coord[0] - valueAxisStart;\n height = columnWidth;\n\n if (Math.abs(width) < barMinHeight) {\n width = (width < 0 ? -1 : 1) * barMinHeight;\n } // Ignore stack from NaN value\n\n\n if (!isNaN(width)) {\n stacked && (lastStackCoords[stackId][baseValue][sign] += width);\n }\n } else {\n var coord = cartesian.dataToPoint([baseValue, value]);\n x = coord[0] + columnOffset;\n y = baseCoord;\n width = columnWidth;\n height = coord[1] - valueAxisStart;\n\n if (Math.abs(height) < barMinHeight) {\n // Include zero to has a positive bar\n height = (height <= 0 ? -1 : 1) * barMinHeight;\n } // Ignore stack from NaN value\n\n\n if (!isNaN(height)) {\n stacked && (lastStackCoords[stackId][baseValue][sign] += height);\n }\n }\n\n data.setItemLayout(idx, {\n x: x,\n y: y,\n width: width,\n height: height\n });\n }\n }, this);\n} // TODO: Do not support stack in large mode yet.\n\n\nvar largeLayout = {\n seriesType: 'bar',\n plan: createRenderPlanner(),\n reset: function (seriesModel) {\n if (!isOnCartesian(seriesModel) || !isInLargeMode(seriesModel)) {\n return;\n }\n\n var data = seriesModel.getData();\n var cartesian = seriesModel.coordinateSystem;\n var coordLayout = cartesian.grid.getRect();\n var baseAxis = cartesian.getBaseAxis();\n var valueAxis = cartesian.getOtherAxis(baseAxis);\n var valueDim = data.mapDimension(valueAxis.dim);\n var baseDim = data.mapDimension(baseAxis.dim);\n var valueAxisHorizontal = valueAxis.isHorizontal();\n var valueDimIdx = valueAxisHorizontal ? 0 : 1;\n var barWidth = retrieveColumnLayout(makeColumnLayout([seriesModel]), baseAxis, seriesModel).width;\n\n if (!(barWidth > LARGE_BAR_MIN_WIDTH)) {\n // jshint ignore:line\n barWidth = LARGE_BAR_MIN_WIDTH;\n }\n\n return {\n progress: progress\n };\n\n function progress(params, data) {\n var count = params.count;\n var largePoints = new LargeArr(count * 2);\n var largeBackgroundPoints = new LargeArr(count * 2);\n var largeDataIndices = new LargeArr(count);\n var dataIndex;\n var coord = [];\n var valuePair = [];\n var pointsOffset = 0;\n var idxOffset = 0;\n\n while ((dataIndex = params.next()) != null) {\n valuePair[valueDimIdx] = data.get(valueDim, dataIndex);\n valuePair[1 - valueDimIdx] = data.get(baseDim, dataIndex);\n coord = cartesian.dataToPoint(valuePair, null, coord); // Data index might not be in order, depends on `progressiveChunkMode`.\n\n largeBackgroundPoints[pointsOffset] = valueAxisHorizontal ? coordLayout.x + coordLayout.width : coord[0];\n largePoints[pointsOffset++] = coord[0];\n largeBackgroundPoints[pointsOffset] = valueAxisHorizontal ? coord[1] : coordLayout.y + coordLayout.height;\n largePoints[pointsOffset++] = coord[1];\n largeDataIndices[idxOffset++] = dataIndex;\n }\n\n data.setLayout({\n largePoints: largePoints,\n largeDataIndices: largeDataIndices,\n largeBackgroundPoints: largeBackgroundPoints,\n barWidth: barWidth,\n valueAxisStart: getValueAxisStart(baseAxis, valueAxis, false),\n backgroundStart: valueAxisHorizontal ? coordLayout.x : coordLayout.y,\n valueAxisHorizontal: valueAxisHorizontal\n });\n }\n }\n};\n\nfunction isOnCartesian(seriesModel) {\n return seriesModel.coordinateSystem && seriesModel.coordinateSystem.type === 'cartesian2d';\n}\n\nfunction isInLargeMode(seriesModel) {\n return seriesModel.pipelineContext && seriesModel.pipelineContext.large;\n} // See cases in `test/bar-start.html` and `#7412`, `#8747`.\n\n\nfunction getValueAxisStart(baseAxis, valueAxis, stacked) {\n return valueAxis.toGlobalCoord(valueAxis.dataToCoord(valueAxis.type === 'log' ? 1 : 0));\n}\n\nexports.getLayoutOnAxis = getLayoutOnAxis;\nexports.prepareLayoutBarSeries = prepareLayoutBarSeries;\nexports.makeColumnLayout = makeColumnLayout;\nexports.retrieveColumnLayout = retrieveColumnLayout;\nexports.layout = layout;\nexports.largeLayout = largeLayout;","\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\nvar _dataStackHelper = require(\"../data/helper/dataStackHelper\");\n\nvar isDimensionStacked = _dataStackHelper.isDimensionStacked;\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 getSeriesStackId(seriesModel) {\n return seriesModel.get('stack') || '__ec_stack_' + seriesModel.seriesIndex;\n}\n\nfunction getAxisKey(polar, axis) {\n return axis.dim + polar.model.componentIndex;\n}\n/**\n * @param {string} seriesType\n * @param {module:echarts/model/Global} ecModel\n * @param {module:echarts/ExtensionAPI} api\n */\n\n\nfunction barLayoutPolar(seriesType, ecModel, api) {\n var lastStackCoords = {};\n var barWidthAndOffset = calRadialBar(zrUtil.filter(ecModel.getSeriesByType(seriesType), function (seriesModel) {\n return !ecModel.isSeriesFiltered(seriesModel) && seriesModel.coordinateSystem && seriesModel.coordinateSystem.type === 'polar';\n }));\n ecModel.eachSeriesByType(seriesType, function (seriesModel) {\n // Check series coordinate, do layout for polar only\n if (seriesModel.coordinateSystem.type !== 'polar') {\n return;\n }\n\n var data = seriesModel.getData();\n var polar = seriesModel.coordinateSystem;\n var baseAxis = polar.getBaseAxis();\n var axisKey = getAxisKey(polar, baseAxis);\n var stackId = getSeriesStackId(seriesModel);\n var columnLayoutInfo = barWidthAndOffset[axisKey][stackId];\n var columnOffset = columnLayoutInfo.offset;\n var columnWidth = columnLayoutInfo.width;\n var valueAxis = polar.getOtherAxis(baseAxis);\n var cx = seriesModel.coordinateSystem.cx;\n var cy = seriesModel.coordinateSystem.cy;\n var barMinHeight = seriesModel.get('barMinHeight') || 0;\n var barMinAngle = seriesModel.get('barMinAngle') || 0;\n lastStackCoords[stackId] = lastStackCoords[stackId] || [];\n var valueDim = data.mapDimension(valueAxis.dim);\n var baseDim = data.mapDimension(baseAxis.dim);\n var stacked = isDimensionStacked(data, valueDim\n /*, baseDim*/\n );\n var clampLayout = baseAxis.dim !== 'radius' || !seriesModel.get('roundCap', true);\n var valueAxisStart = valueAxis.getExtent()[0];\n\n for (var idx = 0, len = data.count(); idx < len; idx++) {\n var value = data.get(valueDim, idx);\n var baseValue = data.get(baseDim, idx);\n var sign = value >= 0 ? 'p' : 'n';\n var baseCoord = valueAxisStart; // Because of the barMinHeight, we can not use the value in\n // stackResultDimension directly.\n // Only ordinal axis can be stacked.\n\n if (stacked) {\n if (!lastStackCoords[stackId][baseValue]) {\n lastStackCoords[stackId][baseValue] = {\n p: valueAxisStart,\n // Positive stack\n n: valueAxisStart // Negative stack\n\n };\n } // Should also consider #4243\n\n\n baseCoord = lastStackCoords[stackId][baseValue][sign];\n }\n\n var r0;\n var r;\n var startAngle;\n var endAngle; // radial sector\n\n if (valueAxis.dim === 'radius') {\n var radiusSpan = valueAxis.dataToRadius(value) - valueAxisStart;\n var angle = baseAxis.dataToAngle(baseValue);\n\n if (Math.abs(radiusSpan) < barMinHeight) {\n radiusSpan = (radiusSpan < 0 ? -1 : 1) * barMinHeight;\n }\n\n r0 = baseCoord;\n r = baseCoord + radiusSpan;\n startAngle = angle - columnOffset;\n endAngle = startAngle - columnWidth;\n stacked && (lastStackCoords[stackId][baseValue][sign] = r);\n } // tangential sector\n else {\n var angleSpan = valueAxis.dataToAngle(value, clampLayout) - valueAxisStart;\n var radius = baseAxis.dataToRadius(baseValue);\n\n if (Math.abs(angleSpan) < barMinAngle) {\n angleSpan = (angleSpan < 0 ? -1 : 1) * barMinAngle;\n }\n\n r0 = radius + columnOffset;\n r = r0 + columnWidth;\n startAngle = baseCoord;\n endAngle = baseCoord + angleSpan; // if the previous stack is at the end of the ring,\n // add a round to differentiate it from origin\n // var extent = angleAxis.getExtent();\n // var stackCoord = angle;\n // if (stackCoord === extent[0] && value > 0) {\n // stackCoord = extent[1];\n // }\n // else if (stackCoord === extent[1] && value < 0) {\n // stackCoord = extent[0];\n // }\n\n stacked && (lastStackCoords[stackId][baseValue][sign] = endAngle);\n }\n\n data.setItemLayout(idx, {\n cx: cx,\n cy: cy,\n r0: r0,\n r: r,\n // Consider that positive angle is anti-clockwise,\n // while positive radian of sector is clockwise\n startAngle: -startAngle * Math.PI / 180,\n endAngle: -endAngle * Math.PI / 180\n });\n }\n }, this);\n}\n/**\n * Calculate bar width and offset for radial bar charts\n */\n\n\nfunction calRadialBar(barSeries, api) {\n // Columns info on each category axis. Key is polar name\n var columnsMap = {};\n zrUtil.each(barSeries, function (seriesModel, idx) {\n var data = seriesModel.getData();\n var polar = seriesModel.coordinateSystem;\n var baseAxis = polar.getBaseAxis();\n var axisKey = getAxisKey(polar, baseAxis);\n var axisExtent = baseAxis.getExtent();\n var bandWidth = baseAxis.type === 'category' ? baseAxis.getBandWidth() : Math.abs(axisExtent[1] - axisExtent[0]) / data.count();\n var columnsOnAxis = columnsMap[axisKey] || {\n bandWidth: bandWidth,\n remainedWidth: bandWidth,\n autoWidthCount: 0,\n categoryGap: '20%',\n gap: '30%',\n stacks: {}\n };\n var stacks = columnsOnAxis.stacks;\n columnsMap[axisKey] = columnsOnAxis;\n var stackId = getSeriesStackId(seriesModel);\n\n if (!stacks[stackId]) {\n columnsOnAxis.autoWidthCount++;\n }\n\n stacks[stackId] = stacks[stackId] || {\n width: 0,\n maxWidth: 0\n };\n var barWidth = parsePercent(seriesModel.get('barWidth'), bandWidth);\n var barMaxWidth = parsePercent(seriesModel.get('barMaxWidth'), bandWidth);\n var barGap = seriesModel.get('barGap');\n var barCategoryGap = seriesModel.get('barCategoryGap');\n\n if (barWidth && !stacks[stackId].width) {\n barWidth = Math.min(columnsOnAxis.remainedWidth, barWidth);\n stacks[stackId].width = barWidth;\n columnsOnAxis.remainedWidth -= barWidth;\n }\n\n barMaxWidth && (stacks[stackId].maxWidth = barMaxWidth);\n barGap != null && (columnsOnAxis.gap = barGap);\n barCategoryGap != null && (columnsOnAxis.categoryGap = barCategoryGap);\n });\n var result = {};\n zrUtil.each(columnsMap, function (columnsOnAxis, coordSysName) {\n result[coordSysName] = {};\n var stacks = columnsOnAxis.stacks;\n var bandWidth = columnsOnAxis.bandWidth;\n var categoryGap = parsePercent(columnsOnAxis.categoryGap, bandWidth);\n var barGapPercent = parsePercent(columnsOnAxis.gap, 1);\n var remainedWidth = columnsOnAxis.remainedWidth;\n var autoWidthCount = columnsOnAxis.autoWidthCount;\n var autoWidth = (remainedWidth - categoryGap) / (autoWidthCount + (autoWidthCount - 1) * barGapPercent);\n autoWidth = Math.max(autoWidth, 0); // Find if any auto calculated bar exceeded maxBarWidth\n\n zrUtil.each(stacks, function (column, stack) {\n var maxWidth = column.maxWidth;\n\n if (maxWidth && maxWidth < autoWidth) {\n maxWidth = Math.min(maxWidth, remainedWidth);\n\n if (column.width) {\n maxWidth = Math.min(maxWidth, column.width);\n }\n\n remainedWidth -= maxWidth;\n column.width = maxWidth;\n autoWidthCount--;\n }\n }); // Recalculate width again\n\n autoWidth = (remainedWidth - categoryGap) / (autoWidthCount + (autoWidthCount - 1) * barGapPercent);\n autoWidth = Math.max(autoWidth, 0);\n var widthSum = 0;\n var lastColumn;\n zrUtil.each(stacks, function (column, idx) {\n if (!column.width) {\n column.width = autoWidth;\n }\n\n lastColumn = column;\n widthSum += column.width * (1 + barGapPercent);\n });\n\n if (lastColumn) {\n widthSum -= lastColumn.width * barGapPercent;\n }\n\n var offset = -widthSum / 2;\n zrUtil.each(stacks, function (column, stackId) {\n result[coordSysName][stackId] = result[coordSysName][stackId] || {\n offset: offset,\n width: column.width\n };\n offset += column.width * (1 + barGapPercent);\n });\n });\n return result;\n}\n\nvar _default = barLayoutPolar;\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 _util = require(\"zrender/lib/core/util\");\n\nvar map = _util.map;\n\nvar createRenderPlanner = require(\"../chart/helper/createRenderPlanner\");\n\nvar _dataStackHelper = require(\"../data/helper/dataStackHelper\");\n\nvar isDimensionStacked = _dataStackHelper.isDimensionStacked;\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 */\nfunction _default(seriesType) {\n return {\n seriesType: seriesType,\n plan: createRenderPlanner(),\n reset: function (seriesModel) {\n var data = seriesModel.getData();\n var coordSys = seriesModel.coordinateSystem;\n var pipelineContext = seriesModel.pipelineContext;\n var isLargeRender = pipelineContext.large;\n\n if (!coordSys) {\n return;\n }\n\n var dims = map(coordSys.dimensions, function (dim) {\n return data.mapDimension(dim);\n }).slice(0, 2);\n var dimLen = dims.length;\n var stackResultDim = data.getCalculationInfo('stackResultDimension');\n\n if (isDimensionStacked(data, dims[0]\n /*, dims[1]*/\n )) {\n dims[0] = stackResultDim;\n }\n\n if (isDimensionStacked(data, dims[1]\n /*, dims[0]*/\n )) {\n dims[1] = stackResultDim;\n }\n\n function progress(params, data) {\n var segCount = params.end - params.start;\n var points = isLargeRender && new Float32Array(segCount * dimLen);\n\n for (var i = params.start, offset = 0, tmpIn = [], tmpOut = []; i < params.end; i++) {\n var point;\n\n if (dimLen === 1) {\n var x = data.get(dims[0], i);\n point = !isNaN(x) && coordSys.dataToPoint(x, null, tmpOut);\n } else {\n var x = tmpIn[0] = data.get(dims[0], i);\n var y = tmpIn[1] = data.get(dims[1], i); // Also {Array.<number>}, not undefined to avoid if...else... statement\n\n point = !isNaN(x) && !isNaN(y) && coordSys.dataToPoint(tmpIn, null, tmpOut);\n }\n\n if (isLargeRender) {\n points[offset++] = point ? point[0] : NaN;\n points[offset++] = point ? point[1] : NaN;\n } else {\n data.setItemLayout(i, point && point.slice() || [NaN, NaN]);\n }\n }\n\n isLargeRender && data.setLayout('symbolPoints', points);\n }\n\n return dimLen && {\n progress: progress\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 zrUtil = require(\"zrender/lib/core/util\");\n\nvar graphic = require(\"../util/graphic\");\n\nvar textContain = require(\"zrender/lib/contain/text\");\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 PI = Math.PI;\n/**\n * @param {module:echarts/ExtensionAPI} api\n * @param {Object} [opts]\n * @param {string} [opts.text]\n * @param {string} [opts.color]\n * @param {string} [opts.textColor]\n * @return {module:zrender/Element}\n */\n\nfunction _default(api, opts) {\n opts = opts || {};\n zrUtil.defaults(opts, {\n text: 'loading',\n textColor: '#000',\n fontSize: '12px',\n maskColor: 'rgba(255, 255, 255, 0.8)',\n showSpinner: true,\n color: '#c23531',\n spinnerRadius: 10,\n lineWidth: 5,\n zlevel: 0\n });\n var group = new graphic.Group();\n var mask = new graphic.Rect({\n style: {\n fill: opts.maskColor\n },\n zlevel: opts.zlevel,\n z: 10000\n });\n group.add(mask);\n var font = opts.fontSize + ' sans-serif';\n var labelRect = new graphic.Rect({\n style: {\n fill: 'none',\n text: opts.text,\n font: font,\n textPosition: 'right',\n textDistance: 10,\n textFill: opts.textColor\n },\n zlevel: opts.zlevel,\n z: 10001\n });\n group.add(labelRect);\n\n if (opts.showSpinner) {\n var arc = new graphic.Arc({\n shape: {\n startAngle: -PI / 2,\n endAngle: -PI / 2 + 0.1,\n r: opts.spinnerRadius\n },\n style: {\n stroke: opts.color,\n lineCap: 'round',\n lineWidth: opts.lineWidth\n },\n zlevel: opts.zlevel,\n z: 10001\n });\n arc.animateShape(true).when(1000, {\n endAngle: PI * 3 / 2\n }).start('circularInOut');\n arc.animateShape(true).when(1000, {\n startAngle: PI * 3 / 2\n }).delay(300).start('circularInOut');\n group.add(arc);\n } // Inject resize\n\n\n group.resize = function () {\n var textWidth = textContain.getWidth(opts.text, font);\n var r = opts.showSpinner ? opts.spinnerRadius : 0; // cx = (containerWidth - arcDiameter - textDistance - textWidth) / 2\n // textDistance needs to be calculated when both animation and text exist\n\n var cx = (api.getWidth() - r * 2 - (opts.showSpinner && textWidth ? 10 : 0) - textWidth) / 2 // only show the text\n - (opts.showSpinner ? 0 : textWidth / 2);\n var cy = api.getHeight() / 2;\n opts.showSpinner && arc.setShape({\n cx: cx,\n cy: cy\n });\n labelRect.setShape({\n x: cx - r,\n y: cy - r,\n width: r * 2,\n height: r * 2\n });\n mask.setShape({\n x: 0,\n y: 0,\n width: api.getWidth(),\n height: api.getHeight()\n });\n };\n\n group.resize();\n return group;\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\nvar Model = require(\"./Model\");\n\nvar componentUtil = require(\"../util/component\");\n\nvar _clazz = require(\"../util/clazz\");\n\nvar enableClassManagement = _clazz.enableClassManagement;\nvar parseClassType = _clazz.parseClassType;\n\nvar _model = require(\"../util/model\");\n\nvar makeInner = _model.makeInner;\n\nvar layout = require(\"../util/layout\");\n\nvar boxLayoutMixin = require(\"./mixin/boxLayout\");\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/**\n * Component model\n *\n * @module echarts/model/Component\n */\nvar inner = makeInner();\n/**\n * @alias module:echarts/model/Component\n * @constructor\n * @param {Object} option\n * @param {module:echarts/model/Model} parentModel\n * @param {module:echarts/model/Model} ecModel\n */\n\nvar ComponentModel = Model.extend({\n type: 'component',\n\n /**\n * @readOnly\n * @type {string}\n */\n id: '',\n\n /**\n * Because simplified concept is probably better, series.name (or component.name)\n * has been having too many resposibilities:\n * (1) Generating id (which requires name in option should not be modified).\n * (2) As an index to mapping series when merging option or calling API (a name\n * can refer to more then one components, which is convinient is some case).\n * (3) Display.\n * @readOnly\n */\n name: '',\n\n /**\n * @readOnly\n * @type {string}\n */\n mainType: '',\n\n /**\n * @readOnly\n * @type {string}\n */\n subType: '',\n\n /**\n * @readOnly\n * @type {number}\n */\n componentIndex: 0,\n\n /**\n * @type {Object}\n * @protected\n */\n defaultOption: null,\n\n /**\n * @type {module:echarts/model/Global}\n * @readOnly\n */\n ecModel: null,\n\n /**\n * key: componentType\n * value: Component model list, can not be null.\n * @type {Object.<string, Array.<module:echarts/model/Model>>}\n * @readOnly\n */\n dependentModels: [],\n\n /**\n * @type {string}\n * @readOnly\n */\n uid: null,\n\n /**\n * Support merge layout params.\n * Only support 'box' now (left/right/top/bottom/width/height).\n * @type {string|Object} Object can be {ignoreSize: true}\n * @readOnly\n */\n layoutMode: null,\n $constructor: function (option, parentModel, ecModel, extraOpt) {\n Model.call(this, option, parentModel, ecModel, extraOpt);\n this.uid = componentUtil.getUID('ec_cpt_model');\n },\n init: function (option, parentModel, ecModel, extraOpt) {\n this.mergeDefaultAndTheme(option, ecModel);\n },\n mergeDefaultAndTheme: function (option, ecModel) {\n var layoutMode = this.layoutMode;\n var inputPositionParams = layoutMode ? layout.getLayoutParams(option) : {};\n var themeModel = ecModel.getTheme();\n zrUtil.merge(option, themeModel.get(this.mainType));\n zrUtil.merge(option, this.getDefaultOption());\n\n if (layoutMode) {\n layout.mergeLayoutParam(option, inputPositionParams, layoutMode);\n }\n },\n mergeOption: function (option, extraOpt) {\n zrUtil.merge(this.option, option, true);\n var layoutMode = this.layoutMode;\n\n if (layoutMode) {\n layout.mergeLayoutParam(this.option, option, layoutMode);\n }\n },\n // Hooker after init or mergeOption\n optionUpdated: function (newCptOption, isInit) {},\n getDefaultOption: function () {\n var fields = inner(this);\n\n if (!fields.defaultOption) {\n var optList = [];\n var Class = this.constructor;\n\n while (Class) {\n var opt = Class.prototype.defaultOption;\n opt && optList.push(opt);\n Class = Class.superClass;\n }\n\n var defaultOption = {};\n\n for (var i = optList.length - 1; i >= 0; i--) {\n defaultOption = zrUtil.merge(defaultOption, optList[i], true);\n }\n\n fields.defaultOption = defaultOption;\n }\n\n return fields.defaultOption;\n },\n getReferringComponents: function (mainType) {\n return this.ecModel.queryComponents({\n mainType: mainType,\n index: this.get(mainType + 'Index', true),\n id: this.get(mainType + 'Id', true)\n });\n }\n}); // Reset ComponentModel.extend, add preConstruct.\n// clazzUtil.enableClassExtend(\n// ComponentModel,\n// function (option, parentModel, ecModel, extraOpt) {\n// // Set dependentModels, componentIndex, name, id, mainType, subType.\n// zrUtil.extend(this, extraOpt);\n// this.uid = componentUtil.getUID('componentModel');\n// // this.setReadOnly([\n// // 'type', 'id', 'uid', 'name', 'mainType', 'subType',\n// // 'dependentModels', 'componentIndex'\n// // ]);\n// }\n// );\n// Add capability of registerClass, getClass, hasClass, registerSubTypeDefaulter and so on.\n\nenableClassManagement(ComponentModel, {\n registerWhenExtend: true\n});\ncomponentUtil.enableSubTypeDefaulter(ComponentModel); // Add capability of ComponentModel.topologicalTravel.\n\ncomponentUtil.enableTopologicalTravel(ComponentModel, getDependencies);\n\nfunction getDependencies(componentType) {\n var deps = [];\n zrUtil.each(ComponentModel.getClassesByMainType(componentType), function (Clazz) {\n deps = deps.concat(Clazz.prototype.dependencies || []);\n }); // Ensure main type.\n\n deps = zrUtil.map(deps, function (type) {\n return parseClassType(type).main;\n }); // Hack dataset for convenience.\n\n if (componentType !== 'dataset' && zrUtil.indexOf(deps, 'dataset') <= 0) {\n deps.unshift('dataset');\n }\n\n return deps;\n}\n\nzrUtil.mixin(ComponentModel, boxLayoutMixin);\nvar _default = ComponentModel;\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 _util = require(\"zrender/lib/core/util\");\n\nvar each = _util.each;\nvar filter = _util.filter;\nvar map = _util.map;\nvar isArray = _util.isArray;\nvar indexOf = _util.indexOf;\nvar isObject = _util.isObject;\nvar isString = _util.isString;\nvar createHashMap = _util.createHashMap;\nvar assert = _util.assert;\nvar clone = _util.clone;\nvar merge = _util.merge;\nvar extend = _util.extend;\nvar mixin = _util.mixin;\n\nvar modelUtil = require(\"../util/model\");\n\nvar Model = require(\"./Model\");\n\nvar ComponentModel = require(\"./Component\");\n\nvar globalDefault = require(\"./globalDefault\");\n\nvar colorPaletteMixin = require(\"./mixin/colorPalette\");\n\nvar _sourceHelper = require(\"../data/helper/sourceHelper\");\n\nvar resetSourceDefaulter = _sourceHelper.resetSourceDefaulter;\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/**\n * ECharts global model\n *\n * @module {echarts/model/Global}\n */\n\n/**\n * Caution: If the mechanism should be changed some day, these cases\n * should be considered:\n *\n * (1) In `merge option` mode, if using the same option to call `setOption`\n * many times, the result should be the same (try our best to ensure that).\n * (2) In `merge option` mode, if a component has no id/name specified, it\n * will be merged by index, and the result sequence of the components is\n * consistent to the original sequence.\n * (3) `reset` feature (in toolbox). Find detailed info in comments about\n * `mergeOption` in module:echarts/model/OptionManager.\n */\nvar OPTION_INNER_KEY = '\\0_ec_inner';\n/**\n * @alias module:echarts/model/Global\n *\n * @param {Object} option\n * @param {module:echarts/model/Model} parentModel\n * @param {Object} theme\n */\n\nvar GlobalModel = Model.extend({\n init: function (option, parentModel, theme, optionManager) {\n theme = theme || {};\n this.option = null; // Mark as not initialized.\n\n /**\n * @type {module:echarts/model/Model}\n * @private\n */\n\n this._theme = new Model(theme);\n /**\n * @type {module:echarts/model/OptionManager}\n */\n\n this._optionManager = optionManager;\n },\n setOption: function (option, optionPreprocessorFuncs) {\n assert(!(OPTION_INNER_KEY in option), 'please use chart.getOption()');\n\n this._optionManager.setOption(option, optionPreprocessorFuncs);\n\n this.resetOption(null);\n },\n\n /**\n * @param {string} type null/undefined: reset all.\n * 'recreate': force recreate all.\n * 'timeline': only reset timeline option\n * 'media': only reset media query option\n * @return {boolean} Whether option changed.\n */\n resetOption: function (type) {\n var optionChanged = false;\n var optionManager = this._optionManager;\n\n if (!type || type === 'recreate') {\n var baseOption = optionManager.mountOption(type === 'recreate');\n\n if (!this.option || type === 'recreate') {\n initBase.call(this, baseOption);\n } else {\n this.restoreData();\n this.mergeOption(baseOption);\n }\n\n optionChanged = true;\n }\n\n if (type === 'timeline' || type === 'media') {\n this.restoreData();\n }\n\n if (!type || type === 'recreate' || type === 'timeline') {\n var timelineOption = optionManager.getTimelineOption(this);\n timelineOption && (this.mergeOption(timelineOption), optionChanged = true);\n }\n\n if (!type || type === 'recreate' || type === 'media') {\n var mediaOptions = optionManager.getMediaOption(this, this._api);\n\n if (mediaOptions.length) {\n each(mediaOptions, function (mediaOption) {\n this.mergeOption(mediaOption, optionChanged = true);\n }, this);\n }\n }\n\n return optionChanged;\n },\n\n /**\n * @protected\n */\n mergeOption: function (newOption) {\n var option = this.option;\n var componentsMap = this._componentsMap;\n var newCptTypes = [];\n resetSourceDefaulter(this); // If no component class, merge directly.\n // For example: color, animaiton options, etc.\n\n each(newOption, function (componentOption, mainType) {\n if (componentOption == null) {\n return;\n }\n\n if (!ComponentModel.hasClass(mainType)) {\n // globalSettingTask.dirty();\n option[mainType] = option[mainType] == null ? clone(componentOption) : merge(option[mainType], componentOption, true);\n } else if (mainType) {\n newCptTypes.push(mainType);\n }\n });\n ComponentModel.topologicalTravel(newCptTypes, ComponentModel.getAllClassMainTypes(), visitComponent, this);\n\n function visitComponent(mainType, dependencies) {\n var newCptOptionList = modelUtil.normalizeToArray(newOption[mainType]);\n var mapResult = modelUtil.mappingToExists(componentsMap.get(mainType), newCptOptionList);\n modelUtil.makeIdAndName(mapResult); // Set mainType and complete subType.\n\n each(mapResult, function (item, index) {\n var opt = item.option;\n\n if (isObject(opt)) {\n item.keyInfo.mainType = mainType;\n item.keyInfo.subType = determineSubType(mainType, opt, item.exist);\n }\n });\n var dependentModels = getComponentsByTypes(componentsMap, dependencies);\n option[mainType] = [];\n componentsMap.set(mainType, []);\n each(mapResult, function (resultItem, index) {\n var componentModel = resultItem.exist;\n var newCptOption = resultItem.option;\n assert(isObject(newCptOption) || componentModel, 'Empty component definition'); // Consider where is no new option and should be merged using {},\n // see removeEdgeAndAdd in topologicalTravel and\n // ComponentModel.getAllClassMainTypes.\n\n if (!newCptOption) {\n componentModel.mergeOption({}, this);\n componentModel.optionUpdated({}, false);\n } else {\n var ComponentModelClass = ComponentModel.getClass(mainType, resultItem.keyInfo.subType, true);\n\n if (componentModel && componentModel.constructor === ComponentModelClass) {\n componentModel.name = resultItem.keyInfo.name; // componentModel.settingTask && componentModel.settingTask.dirty();\n\n componentModel.mergeOption(newCptOption, this);\n componentModel.optionUpdated(newCptOption, false);\n } else {\n // PENDING Global as parent ?\n var extraOpt = extend({\n dependentModels: dependentModels,\n componentIndex: index\n }, resultItem.keyInfo);\n componentModel = new ComponentModelClass(newCptOption, this, this, extraOpt);\n extend(componentModel, extraOpt);\n componentModel.init(newCptOption, this, this, extraOpt); // Call optionUpdated after init.\n // newCptOption has been used as componentModel.option\n // and may be merged with theme and default, so pass null\n // to avoid confusion.\n\n componentModel.optionUpdated(null, true);\n }\n }\n\n componentsMap.get(mainType)[index] = componentModel;\n option[mainType][index] = componentModel.option;\n }, this); // Backup series for filtering.\n\n if (mainType === 'series') {\n createSeriesIndices(this, componentsMap.get('series'));\n }\n }\n\n this._seriesIndicesMap = createHashMap(this._seriesIndices = this._seriesIndices || []);\n },\n\n /**\n * Get option for output (cloned option and inner info removed)\n * @public\n * @return {Object}\n */\n getOption: function () {\n var option = clone(this.option);\n each(option, function (opts, mainType) {\n if (ComponentModel.hasClass(mainType)) {\n var opts = modelUtil.normalizeToArray(opts);\n\n for (var i = opts.length - 1; i >= 0; i--) {\n // Remove options with inner id.\n if (modelUtil.isIdInner(opts[i])) {\n opts.splice(i, 1);\n }\n }\n\n option[mainType] = opts;\n }\n });\n delete option[OPTION_INNER_KEY];\n return option;\n },\n\n /**\n * @return {module:echarts/model/Model}\n */\n getTheme: function () {\n return this._theme;\n },\n\n /**\n * @param {string} mainType\n * @param {number} [idx=0]\n * @return {module:echarts/model/Component}\n */\n getComponent: function (mainType, idx) {\n var list = this._componentsMap.get(mainType);\n\n if (list) {\n return list[idx || 0];\n }\n },\n\n /**\n * If none of index and id and name used, return all components with mainType.\n * @param {Object} condition\n * @param {string} condition.mainType\n * @param {string} [condition.subType] If ignore, only query by mainType\n * @param {number|Array.<number>} [condition.index] Either input index or id or name.\n * @param {string|Array.<string>} [condition.id] Either input index or id or name.\n * @param {string|Array.<string>} [condition.name] Either input index or id or name.\n * @return {Array.<module:echarts/model/Component>}\n */\n queryComponents: function (condition) {\n var mainType = condition.mainType;\n\n if (!mainType) {\n return [];\n }\n\n var index = condition.index;\n var id = condition.id;\n var name = condition.name;\n\n var cpts = this._componentsMap.get(mainType);\n\n if (!cpts || !cpts.length) {\n return [];\n }\n\n var result;\n\n if (index != null) {\n if (!isArray(index)) {\n index = [index];\n }\n\n result = filter(map(index, function (idx) {\n return cpts[idx];\n }), function (val) {\n return !!val;\n });\n } else if (id != null) {\n var isIdArray = isArray(id);\n result = filter(cpts, function (cpt) {\n return isIdArray && indexOf(id, cpt.id) >= 0 || !isIdArray && cpt.id === id;\n });\n } else if (name != null) {\n var isNameArray = isArray(name);\n result = filter(cpts, function (cpt) {\n return isNameArray && indexOf(name, cpt.name) >= 0 || !isNameArray && cpt.name === name;\n });\n } else {\n // Return all components with mainType\n result = cpts.slice();\n }\n\n return filterBySubType(result, condition);\n },\n\n /**\n * The interface is different from queryComponents,\n * which is convenient for inner usage.\n *\n * @usage\n * var result = findComponents(\n * {mainType: 'dataZoom', query: {dataZoomId: 'abc'}}\n * );\n * var result = findComponents(\n * {mainType: 'series', subType: 'pie', query: {seriesName: 'uio'}}\n * );\n * var result = findComponents(\n * {mainType: 'series',\n * filter: function (model, index) {...}}\n * );\n * // result like [component0, componnet1, ...]\n *\n * @param {Object} condition\n * @param {string} condition.mainType Mandatory.\n * @param {string} [condition.subType] Optional.\n * @param {Object} [condition.query] like {xxxIndex, xxxId, xxxName},\n * where xxx is mainType.\n * If query attribute is null/undefined or has no index/id/name,\n * do not filtering by query conditions, which is convenient for\n * no-payload situations or when target of action is global.\n * @param {Function} [condition.filter] parameter: component, return boolean.\n * @return {Array.<module:echarts/model/Component>}\n */\n findComponents: function (condition) {\n var query = condition.query;\n var mainType = condition.mainType;\n var queryCond = getQueryCond(query);\n var result = queryCond ? this.queryComponents(queryCond) : this._componentsMap.get(mainType);\n return doFilter(filterBySubType(result, condition));\n\n function getQueryCond(q) {\n var indexAttr = mainType + 'Index';\n var idAttr = mainType + 'Id';\n var nameAttr = mainType + 'Name';\n return q && (q[indexAttr] != null || q[idAttr] != null || q[nameAttr] != null) ? {\n mainType: mainType,\n // subType will be filtered finally.\n index: q[indexAttr],\n id: q[idAttr],\n name: q[nameAttr]\n } : null;\n }\n\n function doFilter(res) {\n return condition.filter ? filter(res, condition.filter) : res;\n }\n },\n\n /**\n * @usage\n * eachComponent('legend', function (legendModel, index) {\n * ...\n * });\n * eachComponent(function (componentType, model, index) {\n * // componentType does not include subType\n * // (componentType is 'xxx' but not 'xxx.aa')\n * });\n * eachComponent(\n * {mainType: 'dataZoom', query: {dataZoomId: 'abc'}},\n * function (model, index) {...}\n * );\n * eachComponent(\n * {mainType: 'series', subType: 'pie', query: {seriesName: 'uio'}},\n * function (model, index) {...}\n * );\n *\n * @param {string|Object=} mainType When mainType is object, the definition\n * is the same as the method 'findComponents'.\n * @param {Function} cb\n * @param {*} context\n */\n eachComponent: function (mainType, cb, context) {\n var componentsMap = this._componentsMap;\n\n if (typeof mainType === 'function') {\n context = cb;\n cb = mainType;\n componentsMap.each(function (components, componentType) {\n each(components, function (component, index) {\n cb.call(context, componentType, component, index);\n });\n });\n } else if (isString(mainType)) {\n each(componentsMap.get(mainType), cb, context);\n } else if (isObject(mainType)) {\n var queryResult = this.findComponents(mainType);\n each(queryResult, cb, context);\n }\n },\n\n /**\n * @param {string} name\n * @return {Array.<module:echarts/model/Series>}\n */\n getSeriesByName: function (name) {\n var series = this._componentsMap.get('series');\n\n return filter(series, function (oneSeries) {\n return oneSeries.name === name;\n });\n },\n\n /**\n * @param {number} seriesIndex\n * @return {module:echarts/model/Series}\n */\n getSeriesByIndex: function (seriesIndex) {\n return this._componentsMap.get('series')[seriesIndex];\n },\n\n /**\n * Get series list before filtered by type.\n * FIXME: rename to getRawSeriesByType?\n *\n * @param {string} subType\n * @return {Array.<module:echarts/model/Series>}\n */\n getSeriesByType: function (subType) {\n var series = this._componentsMap.get('series');\n\n return filter(series, function (oneSeries) {\n return oneSeries.subType === subType;\n });\n },\n\n /**\n * @return {Array.<module:echarts/model/Series>}\n */\n getSeries: function () {\n return this._componentsMap.get('series').slice();\n },\n\n /**\n * @return {number}\n */\n getSeriesCount: function () {\n return this._componentsMap.get('series').length;\n },\n\n /**\n * After filtering, series may be different\n * frome raw series.\n *\n * @param {Function} cb\n * @param {*} context\n */\n eachSeries: function (cb, context) {\n assertSeriesInitialized(this);\n each(this._seriesIndices, function (rawSeriesIndex) {\n var series = this._componentsMap.get('series')[rawSeriesIndex];\n\n cb.call(context, series, rawSeriesIndex);\n }, this);\n },\n\n /**\n * Iterate raw series before filtered.\n *\n * @param {Function} cb\n * @param {*} context\n */\n eachRawSeries: function (cb, context) {\n each(this._componentsMap.get('series'), cb, context);\n },\n\n /**\n * After filtering, series may be different.\n * frome raw series.\n *\n * @param {string} subType.\n * @param {Function} cb\n * @param {*} context\n */\n eachSeriesByType: function (subType, cb, context) {\n assertSeriesInitialized(this);\n each(this._seriesIndices, function (rawSeriesIndex) {\n var series = this._componentsMap.get('series')[rawSeriesIndex];\n\n if (series.subType === subType) {\n cb.call(context, series, rawSeriesIndex);\n }\n }, this);\n },\n\n /**\n * Iterate raw series before filtered of given type.\n *\n * @parma {string} subType\n * @param {Function} cb\n * @param {*} context\n */\n eachRawSeriesByType: function (subType, cb, context) {\n return each(this.getSeriesByType(subType), cb, context);\n },\n\n /**\n * @param {module:echarts/model/Series} seriesModel\n */\n isSeriesFiltered: function (seriesModel) {\n assertSeriesInitialized(this);\n return this._seriesIndicesMap.get(seriesModel.componentIndex) == null;\n },\n\n /**\n * @return {Array.<number>}\n */\n getCurrentSeriesIndices: function () {\n return (this._seriesIndices || []).slice();\n },\n\n /**\n * @param {Function} cb\n * @param {*} context\n */\n filterSeries: function (cb, context) {\n assertSeriesInitialized(this);\n var filteredSeries = filter(this._componentsMap.get('series'), cb, context);\n createSeriesIndices(this, filteredSeries);\n },\n restoreData: function (payload) {\n var componentsMap = this._componentsMap;\n createSeriesIndices(this, componentsMap.get('series'));\n var componentTypes = [];\n componentsMap.each(function (components, componentType) {\n componentTypes.push(componentType);\n });\n ComponentModel.topologicalTravel(componentTypes, ComponentModel.getAllClassMainTypes(), function (componentType, dependencies) {\n each(componentsMap.get(componentType), function (component) {\n (componentType !== 'series' || !isNotTargetSeries(component, payload)) && component.restoreData();\n });\n });\n }\n});\n\nfunction isNotTargetSeries(seriesModel, payload) {\n if (payload) {\n var index = payload.seiresIndex;\n var id = payload.seriesId;\n var name = payload.seriesName;\n return index != null && seriesModel.componentIndex !== index || id != null && seriesModel.id !== id || name != null && seriesModel.name !== name;\n }\n}\n/**\n * @inner\n */\n\n\nfunction mergeTheme(option, theme) {\n // PENDING\n // NOT use `colorLayer` in theme if option has `color`\n var notMergeColorLayer = option.color && !option.colorLayer;\n each(theme, function (themeItem, name) {\n if (name === 'colorLayer' && notMergeColorLayer) {\n return;\n } // 如果有 component model 则把具体的 merge 逻辑交给该 model 处理\n\n\n if (!ComponentModel.hasClass(name)) {\n if (typeof themeItem === 'object') {\n option[name] = !option[name] ? clone(themeItem) : merge(option[name], themeItem, false);\n } else {\n if (option[name] == null) {\n option[name] = themeItem;\n }\n }\n }\n });\n}\n\nfunction initBase(baseOption) {\n baseOption = baseOption; // Using OPTION_INNER_KEY to mark that this option can not be used outside,\n // i.e. `chart.setOption(chart.getModel().option);` is forbiden.\n\n this.option = {};\n this.option[OPTION_INNER_KEY] = 1;\n /**\n * Init with series: [], in case of calling findSeries method\n * before series initialized.\n * @type {Object.<string, Array.<module:echarts/model/Model>>}\n * @private\n */\n\n this._componentsMap = createHashMap({\n series: []\n });\n /**\n * Mapping between filtered series list and raw series list.\n * key: filtered series indices, value: raw series indices.\n * @type {Array.<nubmer>}\n * @private\n */\n\n this._seriesIndices;\n this._seriesIndicesMap;\n mergeTheme(baseOption, this._theme.option); // TODO Needs clone when merging to the unexisted property\n\n merge(baseOption, globalDefault, false);\n this.mergeOption(baseOption);\n}\n/**\n * @inner\n * @param {Array.<string>|string} types model types\n * @return {Object} key: {string} type, value: {Array.<Object>} models\n */\n\n\nfunction getComponentsByTypes(componentsMap, types) {\n if (!isArray(types)) {\n types = types ? [types] : [];\n }\n\n var ret = {};\n each(types, function (type) {\n ret[type] = (componentsMap.get(type) || []).slice();\n });\n return ret;\n}\n/**\n * @inner\n */\n\n\nfunction determineSubType(mainType, newCptOption, existComponent) {\n var subType = newCptOption.type ? newCptOption.type : existComponent ? existComponent.subType // Use determineSubType only when there is no existComponent.\n : ComponentModel.determineSubType(mainType, newCptOption); // tooltip, markline, markpoint may always has no subType\n\n return subType;\n}\n/**\n * @inner\n */\n\n\nfunction createSeriesIndices(ecModel, seriesModels) {\n ecModel._seriesIndicesMap = createHashMap(ecModel._seriesIndices = map(seriesModels, function (series) {\n return series.componentIndex;\n }) || []);\n}\n/**\n * @inner\n */\n\n\nfunction filterBySubType(components, condition) {\n // Using hasOwnProperty for restrict. Consider\n // subType is undefined in user payload.\n return condition.hasOwnProperty('subType') ? filter(components, function (cpt) {\n return cpt.subType === condition.subType;\n }) : components;\n}\n/**\n * @inner\n */\n\n\nfunction assertSeriesInitialized(ecModel) {}\n\nmixin(GlobalModel, colorPaletteMixin);\nvar _default = GlobalModel;\nmodule.exports = _default;"],"names":["zrUtil","_number","parsePercent","_dataStackHelper","isDimensionStacked","createRenderPlanner","STACK_PREFIX","LARGE_BAR_MIN_WIDTH","LargeArr","Float32Array","Array","getSeriesStackId","seriesModel","get","seriesIndex","getAxisKey","axis","dim","index","getLayoutOnAxis","opt","params","baseAxis","axisKey","type","bandWidth","getBandWidth","i","count","push","defaults","stackId","widthAndOffsets","doCalBarWidthAndOffset","result","item","offsetCenter","offset","width","prepareLayoutBarSeries","seriesType","ecModel","seriesModels","eachSeriesByType","isOnCartesian","isInLargeMode","getValueAxesMinGaps","barSeries","axisValues","each","cartesian","coordinateSystem","getBaseAxis","data","getData","key","mapDimension","cnt","value","axisMinGaps","hasOwnProperty","valuesInAxis","sort","a","b","min","j","length","delta","Math","makeColumnLayout","seriesInfoList","axisExtent","getExtent","minGap","extentSpan","abs","scale","scaleSpan","barWidth","barMaxWidth","barMinWidth","barGap","barCategoryGap","columnsMap","seriesInfo","idx","columnsOnAxis","remainedWidth","autoWidthCount","categoryGap","gap","stacks","maxWidth","minWidth","coordSysName","barGapPercent","autoWidth","max","column","finalWidth","lastColumn","widthSum","retrieveColumnLayout","barWidthAndOffset","layout","lastStackCoords","lastStackCoordsOrigin","columnLayoutInfo","columnOffset","columnWidth","valueAxis","getOtherAxis","barMinHeight","setLayout","size","valueDim","baseDim","stacked","isValueAxisH","isHorizontal","valueAxisStart","getValueAxisStart","len","x","y","height","baseValue","sign","baseCoord","p","n","coord","dataToPoint","isNaN","setItemLayout","this","largeLayout","plan","reset","coordLayout","grid","getRect","valueAxisHorizontal","valueDimIdx","progress","dataIndex","largePoints","largeBackgroundPoints","largeDataIndices","valuePair","pointsOffset","idxOffset","next","backgroundStart","pipelineContext","large","toGlobalCoord","dataToCoord","exports","polar","model","componentIndex","barLayoutPolar","api","calRadialBar","filter","getSeriesByType","isSeriesFiltered","cx","cy","barMinAngle","clampLayout","r0","r","startAngle","endAngle","radiusSpan","dataToRadius","angle","dataToAngle","angleSpan","radius","PI","stack","_default","module","_util","map","coordSys","isLargeRender","dims","dimensions","slice","dimLen","stackResultDim","getCalculationInfo","segCount","end","start","points","tmpIn","tmpOut","point","NaN","graphic","textContain","opts","text","textColor","fontSize","maskColor","showSpinner","color","spinnerRadius","lineWidth","zlevel","group","Group","mask","Rect","style","fill","z","add","font","labelRect","textPosition","textDistance","textFill","arc","Arc","shape","stroke","lineCap","animateShape","when","delay","resize","textWidth","getWidth","getHeight","setShape","Model","componentUtil","_clazz","enableClassManagement","parseClassType","_model","makeInner","boxLayoutMixin","inner","ComponentModel","extend","id","name","mainType","subType","defaultOption","dependentModels","uid","layoutMode","$constructor","option","parentModel","extraOpt","call","getUID","init","mergeDefaultAndTheme","inputPositionParams","getLayoutParams","themeModel","getTheme","merge","getDefaultOption","mergeLayoutParam","mergeOption","optionUpdated","newCptOption","isInit","fields","optList","Class","constructor","prototype","superClass","getReferringComponents","queryComponents","getDependencies","componentType","deps","getClassesByMainType","Clazz","concat","dependencies","main","indexOf","unshift","registerWhenExtend","enableSubTypeDefaulter","enableTopologicalTravel","mixin","_config","__DEV__","isArray","isObject","isString","createHashMap","assert","clone","modelUtil","globalDefault","colorPaletteMixin","_sourceHelper","resetSourceDefaulter","OPTION_INNER_KEY","GlobalModel","theme","optionManager","_theme","_optionManager","setOption","optionPreprocessorFuncs","resetOption","optionChanged","baseOption","mountOption","restoreData","initBase","timelineOption","getTimelineOption","mediaOptions","getMediaOption","_api","mediaOption","newOption","componentsMap","_componentsMap","newCptTypes","visitComponent","newCptOptionList","normalizeToArray","mapResult","mappingToExists","makeIdAndName","keyInfo","determineSubType","exist","getComponentsByTypes","set","resultItem","componentModel","ComponentModelClass","getClass","createSeriesIndices","componentOption","hasClass","topologicalTravel","getAllClassMainTypes","_seriesIndicesMap","_seriesIndices","getOption","isIdInner","splice","getComponent","list","condition","cpts","val","isIdArray","cpt","isNameArray","filterBySubType","findComponents","query","queryCond","getQueryCond","doFilter","q","indexAttr","idAttr","nameAttr","res","eachComponent","cb","context","components","component","queryResult","getSeriesByName","series","oneSeries","getSeriesByIndex","getSeries","getSeriesCount","eachSeries","assertSeriesInitialized","rawSeriesIndex","eachRawSeries","eachRawSeriesByType","getCurrentSeriesIndices","filterSeries","filteredSeries","payload","componentTypes","isNotTargetSeries","seiresIndex","seriesId","seriesName","mergeTheme","notMergeColorLayer","colorLayer","themeItem","types","ret","existComponent"],"sourceRoot":""}
|