{"version":3,"file":"js/chunk-vendors-06b9cdb9-legacy.42192394.js","mappings":"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","sources":["webpack://i4proportal/./node_modules/echarts/lib/chart/line.js","webpack://i4proportal/./node_modules/echarts/lib/chart/line/LineSeries.js","webpack://i4proportal/./node_modules/echarts/lib/chart/line/LineView.js","webpack://i4proportal/./node_modules/echarts/lib/chart/line/helper.js","webpack://i4proportal/./node_modules/echarts/lib/chart/line/lineAnimationDiff.js","webpack://i4proportal/./node_modules/echarts/lib/chart/line/poly.js","webpack://i4proportal/./node_modules/echarts/lib/chart/lines.js","webpack://i4proportal/./node_modules/echarts/lib/chart/lines/LinesSeries.js","webpack://i4proportal/./node_modules/echarts/lib/chart/lines/LinesView.js","webpack://i4proportal/./node_modules/echarts/lib/chart/lines/linesLayout.js","webpack://i4proportal/./node_modules/echarts/lib/chart/lines/linesVisual.js","webpack://i4proportal/./node_modules/echarts/lib/chart/map.js","webpack://i4proportal/./node_modules/echarts/lib/chart/map/MapSeries.js","webpack://i4proportal/./node_modules/echarts/lib/chart/map/MapView.js","webpack://i4proportal/./node_modules/echarts/lib/chart/map/backwardCompat.js","webpack://i4proportal/./node_modules/echarts/lib/chart/map/mapDataStatistic.js","webpack://i4proportal/./node_modules/echarts/lib/chart/map/mapSymbolLayout.js","webpack://i4proportal/./node_modules/echarts/lib/chart/map/mapVisual.js","webpack://i4proportal/./node_modules/echarts/lib/chart/parallel.js","webpack://i4proportal/./node_modules/echarts/lib/chart/parallel/ParallelSeries.js","webpack://i4proportal/./node_modules/echarts/lib/chart/parallel/ParallelView.js","webpack://i4proportal/./node_modules/echarts/lib/chart/parallel/parallelVisual.js","webpack://i4proportal/./node_modules/echarts/lib/chart/pictorialBar.js","webpack://i4proportal/./node_modules/echarts/lib/chart/pie/PieSeries.js","webpack://i4proportal/./node_modules/echarts/lib/chart/pie/PieView.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\nrequire(\"./line/LineSeries\");\n\nrequire(\"./line/LineView\");\n\nvar visualSymbol = require(\"../visual/symbol\");\n\nvar layoutPoints = require(\"../layout/points\");\n\nvar dataSample = require(\"../processor/dataSample\");\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.registerVisual(visualSymbol('line', 'circle', 'line'));\necharts.registerLayout(layoutPoints('line')); // Down sample after filter\n\necharts.registerProcessor(echarts.PRIORITY.PROCESSOR.STATISTIC, dataSample('line'));","\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 createListFromArray = require(\"../helper/createListFromArray\");\n\nvar SeriesModel = require(\"../../model/Series\");\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.line',\n dependencies: ['grid', 'polar'],\n getInitialData: function (option, ecModel) {\n return createListFromArray(this.getSource(), this, {\n useEncodeDefaulter: true\n });\n },\n defaultOption: {\n zlevel: 0,\n z: 2,\n coordinateSystem: 'cartesian2d',\n legendHoverLink: true,\n hoverAnimation: true,\n // stack: null\n // xAxisIndex: 0,\n // yAxisIndex: 0,\n // polarIndex: 0,\n // If clip the overflow value\n clip: true,\n // cursor: null,\n label: {\n position: 'top'\n },\n // itemStyle: {\n // },\n lineStyle: {\n width: 2,\n type: 'solid'\n },\n // areaStyle: {\n // origin of areaStyle. Valid values:\n // `'auto'/null/undefined`: from axisLine to data\n // `'start'`: from min to data\n // `'end'`: from data to max\n // origin: 'auto'\n // },\n // false, 'start', 'end', 'middle'\n step: false,\n // Disabled if step is true\n smooth: false,\n smoothMonotone: null,\n symbol: 'emptyCircle',\n symbolSize: 4,\n symbolRotate: null,\n showSymbol: true,\n // `false`: follow the label interval strategy.\n // `true`: show all symbols.\n // `'auto'`: If possible, show all symbols, otherwise\n // follow the label interval strategy.\n showAllSymbol: 'auto',\n // Whether to connect break point.\n connectNulls: false,\n // Sampling for large data. Can be: 'average', 'max', 'min', 'sum'.\n sampling: 'none',\n animationEasing: 'linear',\n // Disable progressive\n progressive: 0,\n hoverLayerThreshold: Infinity\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 _bbox = require(\"zrender/lib/core/bbox\");\n\nvar fromPoints = _bbox.fromPoints;\n\nvar SymbolDraw = require(\"../helper/SymbolDraw\");\n\nvar SymbolClz = require(\"../helper/Symbol\");\n\nvar lineAnimationDiff = require(\"./lineAnimationDiff\");\n\nvar graphic = require(\"../../util/graphic\");\n\nvar modelUtil = require(\"../../util/model\");\n\nvar _poly = require(\"./poly\");\n\nvar Polyline = _poly.Polyline;\nvar Polygon = _poly.Polygon;\n\nvar ChartView = require(\"../../view/Chart\");\n\nvar _helper = require(\"./helper\");\n\nvar prepareDataCoordInfo = _helper.prepareDataCoordInfo;\nvar getStackedOnPoint = _helper.getStackedOnPoint;\n\nvar _createClipPathFromCoordSys = require(\"../helper/createClipPathFromCoordSys\");\n\nvar createGridClipPath = _createClipPathFromCoordSys.createGridClipPath;\nvar createPolarClipPath = _createClipPathFromCoordSys.createPolarClipPath;\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// FIXME step not support polar\nfunction isPointsSame(points1, points2) {\n if (points1.length !== points2.length) {\n return;\n }\n\n for (var i = 0; i < points1.length; i++) {\n var p1 = points1[i];\n var p2 = points2[i];\n\n if (p1[0] !== p2[0] || p1[1] !== p2[1]) {\n return;\n }\n }\n\n return true;\n}\n\nfunction getBoundingDiff(points1, points2) {\n var min1 = [];\n var max1 = [];\n var min2 = [];\n var max2 = [];\n fromPoints(points1, min1, max1);\n fromPoints(points2, min2, max2); // Get a max value from each corner of two boundings.\n\n return Math.max(Math.abs(min1[0] - min2[0]), Math.abs(min1[1] - min2[1]), Math.abs(max1[0] - max2[0]), Math.abs(max1[1] - max2[1]));\n}\n\nfunction getSmooth(smooth) {\n return typeof smooth === 'number' ? smooth : smooth ? 0.5 : 0;\n}\n/**\n * @param {module:echarts/coord/cartesian/Cartesian2D|module:echarts/coord/polar/Polar} coordSys\n * @param {module:echarts/data/List} data\n * @param {Object} dataCoordInfo\n * @param {Array.>} points\n */\n\n\nfunction getStackedOnPoints(coordSys, data, dataCoordInfo) {\n if (!dataCoordInfo.valueDim) {\n return [];\n }\n\n var points = [];\n\n for (var idx = 0, len = data.count(); idx < len; idx++) {\n points.push(getStackedOnPoint(dataCoordInfo, coordSys, data, idx));\n }\n\n return points;\n}\n\nfunction turnPointsIntoStep(points, coordSys, stepTurnAt) {\n var baseAxis = coordSys.getBaseAxis();\n var baseIndex = baseAxis.dim === 'x' || baseAxis.dim === 'radius' ? 0 : 1;\n var stepPoints = [];\n\n for (var i = 0; i < points.length - 1; i++) {\n var nextPt = points[i + 1];\n var pt = points[i];\n stepPoints.push(pt);\n var stepPt = [];\n\n switch (stepTurnAt) {\n case 'end':\n stepPt[baseIndex] = nextPt[baseIndex];\n stepPt[1 - baseIndex] = pt[1 - baseIndex]; // default is start\n\n stepPoints.push(stepPt);\n break;\n\n case 'middle':\n // default is start\n var middle = (pt[baseIndex] + nextPt[baseIndex]) / 2;\n var stepPt2 = [];\n stepPt[baseIndex] = stepPt2[baseIndex] = middle;\n stepPt[1 - baseIndex] = pt[1 - baseIndex];\n stepPt2[1 - baseIndex] = nextPt[1 - baseIndex];\n stepPoints.push(stepPt);\n stepPoints.push(stepPt2);\n break;\n\n default:\n stepPt[baseIndex] = pt[baseIndex];\n stepPt[1 - baseIndex] = nextPt[1 - baseIndex]; // default is start\n\n stepPoints.push(stepPt);\n }\n } // Last points\n\n\n points[i] && stepPoints.push(points[i]);\n return stepPoints;\n}\n\nfunction getVisualGradient(data, coordSys) {\n var visualMetaList = data.getVisual('visualMeta');\n\n if (!visualMetaList || !visualMetaList.length || !data.count()) {\n // When data.count() is 0, gradient range can not be calculated.\n return;\n }\n\n if (coordSys.type !== 'cartesian2d') {\n return;\n }\n\n var coordDim;\n var visualMeta;\n\n for (var i = visualMetaList.length - 1; i >= 0; i--) {\n var dimIndex = visualMetaList[i].dimension;\n var dimName = data.dimensions[dimIndex];\n var dimInfo = data.getDimensionInfo(dimName);\n coordDim = dimInfo && dimInfo.coordDim; // Can only be x or y\n\n if (coordDim === 'x' || coordDim === 'y') {\n visualMeta = visualMetaList[i];\n break;\n }\n }\n\n if (!visualMeta) {\n return;\n } // If the area to be rendered is bigger than area defined by LinearGradient,\n // the canvas spec prescribes that the color of the first stop and the last\n // stop should be used. But if two stops are added at offset 0, in effect\n // browsers use the color of the second stop to render area outside\n // LinearGradient. So we can only infinitesimally extend area defined in\n // LinearGradient to render `outerColors`.\n\n\n var axis = coordSys.getAxis(coordDim); // dataToCoor mapping may not be linear, but must be monotonic.\n\n var colorStops = zrUtil.map(visualMeta.stops, function (stop) {\n return {\n coord: axis.toGlobalCoord(axis.dataToCoord(stop.value)),\n color: stop.color\n };\n });\n var stopLen = colorStops.length;\n var outerColors = visualMeta.outerColors.slice();\n\n if (stopLen && colorStops[0].coord > colorStops[stopLen - 1].coord) {\n colorStops.reverse();\n outerColors.reverse();\n }\n\n var tinyExtent = 10; // Arbitrary value: 10px\n\n var minCoord = colorStops[0].coord - tinyExtent;\n var maxCoord = colorStops[stopLen - 1].coord + tinyExtent;\n var coordSpan = maxCoord - minCoord;\n\n if (coordSpan < 1e-3) {\n return 'transparent';\n }\n\n zrUtil.each(colorStops, function (stop) {\n stop.offset = (stop.coord - minCoord) / coordSpan;\n });\n colorStops.push({\n offset: stopLen ? colorStops[stopLen - 1].offset : 0.5,\n color: outerColors[1] || 'transparent'\n });\n colorStops.unshift({\n // notice colorStops.length have been changed.\n offset: stopLen ? colorStops[0].offset : 0.5,\n color: outerColors[0] || 'transparent'\n }); // zrUtil.each(colorStops, function (colorStop) {\n // // Make sure each offset has rounded px to avoid not sharp edge\n // colorStop.offset = (Math.round(colorStop.offset * (end - start) + start) - start) / (end - start);\n // });\n\n var gradient = new graphic.LinearGradient(0, 0, 0, 0, colorStops, true);\n gradient[coordDim] = minCoord;\n gradient[coordDim + '2'] = maxCoord;\n return gradient;\n}\n\nfunction getIsIgnoreFunc(seriesModel, data, coordSys) {\n var showAllSymbol = seriesModel.get('showAllSymbol');\n var isAuto = showAllSymbol === 'auto';\n\n if (showAllSymbol && !isAuto) {\n return;\n }\n\n var categoryAxis = coordSys.getAxesByScale('ordinal')[0];\n\n if (!categoryAxis) {\n return;\n } // Note that category label interval strategy might bring some weird effect\n // in some scenario: users may wonder why some of the symbols are not\n // displayed. So we show all symbols as possible as we can.\n\n\n if (isAuto // Simplify the logic, do not determine label overlap here.\n && canShowAllSymbolForCategory(categoryAxis, data)) {\n return;\n } // Otherwise follow the label interval strategy on category axis.\n\n\n var categoryDataDim = data.mapDimension(categoryAxis.dim);\n var labelMap = {};\n zrUtil.each(categoryAxis.getViewLabels(), function (labelItem) {\n labelMap[labelItem.tickValue] = 1;\n });\n return function (dataIndex) {\n return !labelMap.hasOwnProperty(data.get(categoryDataDim, dataIndex));\n };\n}\n\nfunction canShowAllSymbolForCategory(categoryAxis, data) {\n // In mose cases, line is monotonous on category axis, and the label size\n // is close with each other. So we check the symbol size and some of the\n // label size alone with the category axis to estimate whether all symbol\n // can be shown without overlap.\n var axisExtent = categoryAxis.getExtent();\n var availSize = Math.abs(axisExtent[1] - axisExtent[0]) / categoryAxis.scale.count();\n isNaN(availSize) && (availSize = 0); // 0/0 is NaN.\n // Sampling some points, max 5.\n\n var dataLen = data.count();\n var step = Math.max(1, Math.round(dataLen / 5));\n\n for (var dataIndex = 0; dataIndex < dataLen; dataIndex += step) {\n if (SymbolClz.getSymbolSize(data, dataIndex // Only for cartesian, where `isHorizontal` exists.\n )[categoryAxis.isHorizontal() ? 1 : 0] // Empirical number\n * 1.5 > availSize) {\n return false;\n }\n }\n\n return true;\n}\n\nfunction createLineClipPath(coordSys, hasAnimation, seriesModel) {\n if (coordSys.type === 'cartesian2d') {\n var isHorizontal = coordSys.getBaseAxis().isHorizontal();\n var clipPath = createGridClipPath(coordSys, hasAnimation, seriesModel); // Expand clip shape to avoid clipping when line value exceeds axis\n\n if (!seriesModel.get('clip', true)) {\n var rectShape = clipPath.shape;\n var expandSize = Math.max(rectShape.width, rectShape.height);\n\n if (isHorizontal) {\n rectShape.y -= expandSize;\n rectShape.height += expandSize * 2;\n } else {\n rectShape.x -= expandSize;\n rectShape.width += expandSize * 2;\n }\n }\n\n return clipPath;\n } else {\n return createPolarClipPath(coordSys, hasAnimation, seriesModel);\n }\n}\n\nvar _default = ChartView.extend({\n type: 'line',\n init: function () {\n var lineGroup = new graphic.Group();\n var symbolDraw = new SymbolDraw();\n this.group.add(symbolDraw.group);\n this._symbolDraw = symbolDraw;\n this._lineGroup = lineGroup;\n },\n render: function (seriesModel, ecModel, api) {\n var coordSys = seriesModel.coordinateSystem;\n var group = this.group;\n var data = seriesModel.getData();\n var lineStyleModel = seriesModel.getModel('lineStyle');\n var areaStyleModel = seriesModel.getModel('areaStyle');\n var points = data.mapArray(data.getItemLayout);\n var isCoordSysPolar = coordSys.type === 'polar';\n var prevCoordSys = this._coordSys;\n var symbolDraw = this._symbolDraw;\n var polyline = this._polyline;\n var polygon = this._polygon;\n var lineGroup = this._lineGroup;\n var hasAnimation = seriesModel.get('animation');\n var isAreaChart = !areaStyleModel.isEmpty();\n var valueOrigin = areaStyleModel.get('origin');\n var dataCoordInfo = prepareDataCoordInfo(coordSys, data, valueOrigin);\n var stackedOnPoints = getStackedOnPoints(coordSys, data, dataCoordInfo);\n var showSymbol = seriesModel.get('showSymbol');\n var isIgnoreFunc = showSymbol && !isCoordSysPolar && getIsIgnoreFunc(seriesModel, data, coordSys); // Remove temporary symbols\n\n var oldData = this._data;\n oldData && oldData.eachItemGraphicEl(function (el, idx) {\n if (el.__temp) {\n group.remove(el);\n oldData.setItemGraphicEl(idx, null);\n }\n }); // Remove previous created symbols if showSymbol changed to false\n\n if (!showSymbol) {\n symbolDraw.remove();\n }\n\n group.add(lineGroup); // FIXME step not support polar\n\n var step = !isCoordSysPolar && seriesModel.get('step');\n var clipShapeForSymbol;\n\n if (coordSys && coordSys.getArea && seriesModel.get('clip', true)) {\n clipShapeForSymbol = coordSys.getArea(); // Avoid float number rounding error for symbol on the edge of axis extent.\n // See #7913 and `test/dataZoom-clip.html`.\n\n if (clipShapeForSymbol.width != null) {\n clipShapeForSymbol.x -= 0.1;\n clipShapeForSymbol.y -= 0.1;\n clipShapeForSymbol.width += 0.2;\n clipShapeForSymbol.height += 0.2;\n } else if (clipShapeForSymbol.r0) {\n clipShapeForSymbol.r0 -= 0.5;\n clipShapeForSymbol.r1 += 0.5;\n }\n }\n\n this._clipShapeForSymbol = clipShapeForSymbol; // Initialization animation or coordinate system changed\n\n if (!(polyline && prevCoordSys.type === coordSys.type && step === this._step)) {\n showSymbol && symbolDraw.updateData(data, {\n isIgnore: isIgnoreFunc,\n clipShape: clipShapeForSymbol\n });\n\n if (step) {\n // TODO If stacked series is not step\n points = turnPointsIntoStep(points, coordSys, step);\n stackedOnPoints = turnPointsIntoStep(stackedOnPoints, coordSys, step);\n }\n\n polyline = this._newPolyline(points, coordSys, hasAnimation);\n\n if (isAreaChart) {\n polygon = this._newPolygon(points, stackedOnPoints, coordSys, hasAnimation);\n }\n\n lineGroup.setClipPath(createLineClipPath(coordSys, true, seriesModel));\n } else {\n if (isAreaChart && !polygon) {\n // If areaStyle is added\n polygon = this._newPolygon(points, stackedOnPoints, coordSys, hasAnimation);\n } else if (polygon && !isAreaChart) {\n // If areaStyle is removed\n lineGroup.remove(polygon);\n polygon = this._polygon = null;\n } // Update clipPath\n\n\n lineGroup.setClipPath(createLineClipPath(coordSys, false, seriesModel)); // Always update, or it is wrong in the case turning on legend\n // because points are not changed\n\n showSymbol && symbolDraw.updateData(data, {\n isIgnore: isIgnoreFunc,\n clipShape: clipShapeForSymbol\n }); // Stop symbol animation and sync with line points\n // FIXME performance?\n\n data.eachItemGraphicEl(function (el) {\n el.stopAnimation(true);\n }); // In the case data zoom triggerred refreshing frequently\n // Data may not change if line has a category axis. So it should animate nothing\n\n if (!isPointsSame(this._stackedOnPoints, stackedOnPoints) || !isPointsSame(this._points, points)) {\n if (hasAnimation) {\n this._updateAnimation(data, stackedOnPoints, coordSys, api, step, valueOrigin);\n } else {\n // Not do it in update with animation\n if (step) {\n // TODO If stacked series is not step\n points = turnPointsIntoStep(points, coordSys, step);\n stackedOnPoints = turnPointsIntoStep(stackedOnPoints, coordSys, step);\n }\n\n polyline.setShape({\n points: points\n });\n polygon && polygon.setShape({\n points: points,\n stackedOnPoints: stackedOnPoints\n });\n }\n }\n }\n\n var visualColor = getVisualGradient(data, coordSys) || data.getVisual('color');\n polyline.useStyle(zrUtil.defaults( // Use color in lineStyle first\n lineStyleModel.getLineStyle(), {\n fill: 'none',\n stroke: visualColor,\n lineJoin: 'bevel'\n }));\n var smooth = seriesModel.get('smooth');\n smooth = getSmooth(seriesModel.get('smooth'));\n polyline.setShape({\n smooth: smooth,\n smoothMonotone: seriesModel.get('smoothMonotone'),\n connectNulls: seriesModel.get('connectNulls')\n });\n\n if (polygon) {\n var stackedOnSeries = data.getCalculationInfo('stackedOnSeries');\n var stackedOnSmooth = 0;\n polygon.useStyle(zrUtil.defaults(areaStyleModel.getAreaStyle(), {\n fill: visualColor,\n opacity: 0.7,\n lineJoin: 'bevel'\n }));\n\n if (stackedOnSeries) {\n stackedOnSmooth = getSmooth(stackedOnSeries.get('smooth'));\n }\n\n polygon.setShape({\n smooth: smooth,\n stackedOnSmooth: stackedOnSmooth,\n smoothMonotone: seriesModel.get('smoothMonotone'),\n connectNulls: seriesModel.get('connectNulls')\n });\n }\n\n this._data = data; // Save the coordinate system for transition animation when data changed\n\n this._coordSys = coordSys;\n this._stackedOnPoints = stackedOnPoints;\n this._points = points;\n this._step = step;\n this._valueOrigin = valueOrigin;\n },\n dispose: function () {},\n highlight: function (seriesModel, ecModel, api, payload) {\n var data = seriesModel.getData();\n var dataIndex = modelUtil.queryDataIndex(data, payload);\n\n if (!(dataIndex instanceof Array) && dataIndex != null && dataIndex >= 0) {\n var symbol = data.getItemGraphicEl(dataIndex);\n\n if (!symbol) {\n // Create a temporary symbol if it is not exists\n var pt = data.getItemLayout(dataIndex);\n\n if (!pt) {\n // Null data\n return;\n } // fix #11360: should't draw symbol outside clipShapeForSymbol\n\n\n if (this._clipShapeForSymbol && !this._clipShapeForSymbol.contain(pt[0], pt[1])) {\n return;\n }\n\n symbol = new SymbolClz(data, dataIndex);\n symbol.position = pt;\n symbol.setZ(seriesModel.get('zlevel'), seriesModel.get('z'));\n symbol.ignore = isNaN(pt[0]) || isNaN(pt[1]);\n symbol.__temp = true;\n data.setItemGraphicEl(dataIndex, symbol); // Stop scale animation\n\n symbol.stopSymbolAnimation(true);\n this.group.add(symbol);\n }\n\n symbol.highlight();\n } else {\n // Highlight whole series\n ChartView.prototype.highlight.call(this, seriesModel, ecModel, api, payload);\n }\n },\n downplay: function (seriesModel, ecModel, api, payload) {\n var data = seriesModel.getData();\n var dataIndex = modelUtil.queryDataIndex(data, payload);\n\n if (dataIndex != null && dataIndex >= 0) {\n var symbol = data.getItemGraphicEl(dataIndex);\n\n if (symbol) {\n if (symbol.__temp) {\n data.setItemGraphicEl(dataIndex, null);\n this.group.remove(symbol);\n } else {\n symbol.downplay();\n }\n }\n } else {\n // FIXME\n // can not downplay completely.\n // Downplay whole series\n ChartView.prototype.downplay.call(this, seriesModel, ecModel, api, payload);\n }\n },\n\n /**\n * @param {module:zrender/container/Group} group\n * @param {Array.>} points\n * @private\n */\n _newPolyline: function (points) {\n var polyline = this._polyline; // Remove previous created polyline\n\n if (polyline) {\n this._lineGroup.remove(polyline);\n }\n\n polyline = new Polyline({\n shape: {\n points: points\n },\n silent: true,\n z2: 10\n });\n\n this._lineGroup.add(polyline);\n\n this._polyline = polyline;\n return polyline;\n },\n\n /**\n * @param {module:zrender/container/Group} group\n * @param {Array.>} stackedOnPoints\n * @param {Array.>} points\n * @private\n */\n _newPolygon: function (points, stackedOnPoints) {\n var polygon = this._polygon; // Remove previous created polygon\n\n if (polygon) {\n this._lineGroup.remove(polygon);\n }\n\n polygon = new Polygon({\n shape: {\n points: points,\n stackedOnPoints: stackedOnPoints\n },\n silent: true\n });\n\n this._lineGroup.add(polygon);\n\n this._polygon = polygon;\n return polygon;\n },\n\n /**\n * @private\n */\n // FIXME Two value axis\n _updateAnimation: function (data, stackedOnPoints, coordSys, api, step, valueOrigin) {\n var polyline = this._polyline;\n var polygon = this._polygon;\n var seriesModel = data.hostModel;\n var diff = lineAnimationDiff(this._data, data, this._stackedOnPoints, stackedOnPoints, this._coordSys, coordSys, this._valueOrigin, valueOrigin);\n var current = diff.current;\n var stackedOnCurrent = diff.stackedOnCurrent;\n var next = diff.next;\n var stackedOnNext = diff.stackedOnNext;\n\n if (step) {\n // TODO If stacked series is not step\n current = turnPointsIntoStep(diff.current, coordSys, step);\n stackedOnCurrent = turnPointsIntoStep(diff.stackedOnCurrent, coordSys, step);\n next = turnPointsIntoStep(diff.next, coordSys, step);\n stackedOnNext = turnPointsIntoStep(diff.stackedOnNext, coordSys, step);\n } // Don't apply animation if diff is large.\n // For better result and avoid memory explosion problems like\n // https://github.com/apache/incubator-echarts/issues/12229\n\n\n if (getBoundingDiff(current, next) > 3000 || polygon && getBoundingDiff(stackedOnCurrent, stackedOnNext) > 3000) {\n polyline.setShape({\n points: next\n });\n\n if (polygon) {\n polygon.setShape({\n points: next,\n stackedOnPoints: stackedOnNext\n });\n }\n\n return;\n } // `diff.current` is subset of `current` (which should be ensured by\n // turnPointsIntoStep), so points in `__points` can be updated when\n // points in `current` are update during animation.\n\n\n polyline.shape.__points = diff.current;\n polyline.shape.points = current;\n graphic.updateProps(polyline, {\n shape: {\n points: next\n }\n }, seriesModel);\n\n if (polygon) {\n polygon.setShape({\n points: current,\n stackedOnPoints: stackedOnCurrent\n });\n graphic.updateProps(polygon, {\n shape: {\n points: next,\n stackedOnPoints: stackedOnNext\n }\n }, seriesModel);\n }\n\n var updatedDataInfo = [];\n var diffStatus = diff.status;\n\n for (var i = 0; i < diffStatus.length; i++) {\n var cmd = diffStatus[i].cmd;\n\n if (cmd === '=') {\n var el = data.getItemGraphicEl(diffStatus[i].idx1);\n\n if (el) {\n updatedDataInfo.push({\n el: el,\n ptIdx: i // Index of points\n\n });\n }\n }\n }\n\n if (polyline.animators && polyline.animators.length) {\n polyline.animators[0].during(function () {\n for (var i = 0; i < updatedDataInfo.length; i++) {\n var el = updatedDataInfo[i].el;\n el.attr('position', polyline.shape.__points[updatedDataInfo[i].ptIdx]);\n }\n });\n }\n },\n remove: function (ecModel) {\n var group = this.group;\n var oldData = this._data;\n\n this._lineGroup.removeAll();\n\n this._symbolDraw.remove(true); // Remove temporary created elements when highlighting\n\n\n oldData && oldData.eachItemGraphicEl(function (el, idx) {\n if (el.__temp) {\n group.remove(el);\n oldData.setItemGraphicEl(idx, null);\n }\n });\n this._polyline = this._polygon = this._coordSys = this._points = this._stackedOnPoints = this._data = null;\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 _dataStackHelper = require(\"../../data/helper/dataStackHelper\");\n\nvar isDimensionStacked = _dataStackHelper.isDimensionStacked;\n\nvar _util = require(\"zrender/lib/core/util\");\n\nvar map = _util.map;\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 * @param {Object} coordSys\n * @param {module:echarts/data/List} data\n * @param {string} valueOrigin lineSeries.option.areaStyle.origin\n */\nfunction prepareDataCoordInfo(coordSys, data, valueOrigin) {\n var baseAxis = coordSys.getBaseAxis();\n var valueAxis = coordSys.getOtherAxis(baseAxis);\n var valueStart = getValueStart(valueAxis, valueOrigin);\n var baseAxisDim = baseAxis.dim;\n var valueAxisDim = valueAxis.dim;\n var valueDim = data.mapDimension(valueAxisDim);\n var baseDim = data.mapDimension(baseAxisDim);\n var baseDataOffset = valueAxisDim === 'x' || valueAxisDim === 'radius' ? 1 : 0;\n var dims = map(coordSys.dimensions, function (coordDim) {\n return data.mapDimension(coordDim);\n });\n var stacked;\n var stackResultDim = data.getCalculationInfo('stackResultDimension');\n\n if (stacked |= isDimensionStacked(data, dims[0]\n /*, dims[1]*/\n )) {\n // jshint ignore:line\n dims[0] = stackResultDim;\n }\n\n if (stacked |= isDimensionStacked(data, dims[1]\n /*, dims[0]*/\n )) {\n // jshint ignore:line\n dims[1] = stackResultDim;\n }\n\n return {\n dataDimsForPoint: dims,\n valueStart: valueStart,\n valueAxisDim: valueAxisDim,\n baseAxisDim: baseAxisDim,\n stacked: !!stacked,\n valueDim: valueDim,\n baseDim: baseDim,\n baseDataOffset: baseDataOffset,\n stackedOverDimension: data.getCalculationInfo('stackedOverDimension')\n };\n}\n\nfunction getValueStart(valueAxis, valueOrigin) {\n var valueStart = 0;\n var extent = valueAxis.scale.getExtent();\n\n if (valueOrigin === 'start') {\n valueStart = extent[0];\n } else if (valueOrigin === 'end') {\n valueStart = extent[1];\n } // auto\n else {\n // Both positive\n if (extent[0] > 0) {\n valueStart = extent[0];\n } // Both negative\n else if (extent[1] < 0) {\n valueStart = extent[1];\n } // If is one positive, and one negative, onZero shall be true\n\n }\n\n return valueStart;\n}\n\nfunction getStackedOnPoint(dataCoordInfo, coordSys, data, idx) {\n var value = NaN;\n\n if (dataCoordInfo.stacked) {\n value = data.get(data.getCalculationInfo('stackedOverDimension'), idx);\n }\n\n if (isNaN(value)) {\n value = dataCoordInfo.valueStart;\n }\n\n var baseDataOffset = dataCoordInfo.baseDataOffset;\n var stackedData = [];\n stackedData[baseDataOffset] = data.get(dataCoordInfo.baseDim, idx);\n stackedData[1 - baseDataOffset] = value;\n return coordSys.dataToPoint(stackedData);\n}\n\nexports.prepareDataCoordInfo = prepareDataCoordInfo;\nexports.getStackedOnPoint = getStackedOnPoint;","\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 _helper = require(\"./helper\");\n\nvar prepareDataCoordInfo = _helper.prepareDataCoordInfo;\nvar getStackedOnPoint = _helper.getStackedOnPoint;\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// var arrayDiff = require('zrender/src/core/arrayDiff');\n// 'zrender/src/core/arrayDiff' has been used before, but it did\n// not do well in performance when roam with fixed dataZoom window.\n// function convertToIntId(newIdList, oldIdList) {\n// // Generate int id instead of string id.\n// // Compare string maybe slow in score function of arrDiff\n// // Assume id in idList are all unique\n// var idIndicesMap = {};\n// var idx = 0;\n// for (var i = 0; i < newIdList.length; i++) {\n// idIndicesMap[newIdList[i]] = idx;\n// newIdList[i] = idx++;\n// }\n// for (var i = 0; i < oldIdList.length; i++) {\n// var oldId = oldIdList[i];\n// // Same with newIdList\n// if (idIndicesMap[oldId]) {\n// oldIdList[i] = idIndicesMap[oldId];\n// }\n// else {\n// oldIdList[i] = idx++;\n// }\n// }\n// }\nfunction diffData(oldData, newData) {\n var diffResult = [];\n newData.diff(oldData).add(function (idx) {\n diffResult.push({\n cmd: '+',\n idx: idx\n });\n }).update(function (newIdx, oldIdx) {\n diffResult.push({\n cmd: '=',\n idx: oldIdx,\n idx1: newIdx\n });\n }).remove(function (idx) {\n diffResult.push({\n cmd: '-',\n idx: idx\n });\n }).execute();\n return diffResult;\n}\n\nfunction _default(oldData, newData, oldStackedOnPoints, newStackedOnPoints, oldCoordSys, newCoordSys, oldValueOrigin, newValueOrigin) {\n var diff = diffData(oldData, newData); // var newIdList = newData.mapArray(newData.getId);\n // var oldIdList = oldData.mapArray(oldData.getId);\n // convertToIntId(newIdList, oldIdList);\n // // FIXME One data ?\n // diff = arrayDiff(oldIdList, newIdList);\n\n var currPoints = [];\n var nextPoints = []; // Points for stacking base line\n\n var currStackedPoints = [];\n var nextStackedPoints = [];\n var status = [];\n var sortedIndices = [];\n var rawIndices = [];\n var newDataOldCoordInfo = prepareDataCoordInfo(oldCoordSys, newData, oldValueOrigin);\n var oldDataNewCoordInfo = prepareDataCoordInfo(newCoordSys, oldData, newValueOrigin);\n\n for (var i = 0; i < diff.length; i++) {\n var diffItem = diff[i];\n var pointAdded = true; // FIXME, animation is not so perfect when dataZoom window moves fast\n // Which is in case remvoing or add more than one data in the tail or head\n\n switch (diffItem.cmd) {\n case '=':\n var currentPt = oldData.getItemLayout(diffItem.idx);\n var nextPt = newData.getItemLayout(diffItem.idx1); // If previous data is NaN, use next point directly\n\n if (isNaN(currentPt[0]) || isNaN(currentPt[1])) {\n currentPt = nextPt.slice();\n }\n\n currPoints.push(currentPt);\n nextPoints.push(nextPt);\n currStackedPoints.push(oldStackedOnPoints[diffItem.idx]);\n nextStackedPoints.push(newStackedOnPoints[diffItem.idx1]);\n rawIndices.push(newData.getRawIndex(diffItem.idx1));\n break;\n\n case '+':\n var idx = diffItem.idx;\n currPoints.push(oldCoordSys.dataToPoint([newData.get(newDataOldCoordInfo.dataDimsForPoint[0], idx), newData.get(newDataOldCoordInfo.dataDimsForPoint[1], idx)]));\n nextPoints.push(newData.getItemLayout(idx).slice());\n currStackedPoints.push(getStackedOnPoint(newDataOldCoordInfo, oldCoordSys, newData, idx));\n nextStackedPoints.push(newStackedOnPoints[idx]);\n rawIndices.push(newData.getRawIndex(idx));\n break;\n\n case '-':\n var idx = diffItem.idx;\n var rawIndex = oldData.getRawIndex(idx); // Data is replaced. In the case of dynamic data queue\n // FIXME FIXME FIXME\n\n if (rawIndex !== idx) {\n currPoints.push(oldData.getItemLayout(idx));\n nextPoints.push(newCoordSys.dataToPoint([oldData.get(oldDataNewCoordInfo.dataDimsForPoint[0], idx), oldData.get(oldDataNewCoordInfo.dataDimsForPoint[1], idx)]));\n currStackedPoints.push(oldStackedOnPoints[idx]);\n nextStackedPoints.push(getStackedOnPoint(oldDataNewCoordInfo, newCoordSys, oldData, idx));\n rawIndices.push(rawIndex);\n } else {\n pointAdded = false;\n }\n\n } // Original indices\n\n\n if (pointAdded) {\n status.push(diffItem);\n sortedIndices.push(sortedIndices.length);\n }\n } // Diff result may be crossed if all items are changed\n // Sort by data index\n\n\n sortedIndices.sort(function (a, b) {\n return rawIndices[a] - rawIndices[b];\n });\n var sortedCurrPoints = [];\n var sortedNextPoints = [];\n var sortedCurrStackedPoints = [];\n var sortedNextStackedPoints = [];\n var sortedStatus = [];\n\n for (var i = 0; i < sortedIndices.length; i++) {\n var idx = sortedIndices[i];\n sortedCurrPoints[i] = currPoints[idx];\n sortedNextPoints[i] = nextPoints[idx];\n sortedCurrStackedPoints[i] = currStackedPoints[idx];\n sortedNextStackedPoints[i] = nextStackedPoints[idx];\n sortedStatus[i] = status[idx];\n }\n\n return {\n current: sortedCurrPoints,\n next: sortedNextPoints,\n stackedOnCurrent: sortedCurrStackedPoints,\n stackedOnNext: sortedNextStackedPoints,\n status: sortedStatus\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 Path = require(\"zrender/lib/graphic/Path\");\n\nvar vec2 = require(\"zrender/lib/core/vector\");\n\nvar fixClipWithShadow = require(\"zrender/lib/graphic/helper/fixClipWithShadow\");\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// Poly path support NaN point\nvar vec2Min = vec2.min;\nvar vec2Max = vec2.max;\nvar scaleAndAdd = vec2.scaleAndAdd;\nvar v2Copy = vec2.copy; // Temporary variable\n\nvar v = [];\nvar cp0 = [];\nvar cp1 = [];\n\nfunction isPointNull(p) {\n return isNaN(p[0]) || isNaN(p[1]);\n}\n\nfunction drawSegment(ctx, points, start, segLen, allLen, dir, smoothMin, smoothMax, smooth, smoothMonotone, connectNulls) {\n // if (smoothMonotone == null) {\n // if (isMono(points, 'x')) {\n // return drawMono(ctx, points, start, segLen, allLen,\n // dir, smoothMin, smoothMax, smooth, 'x', connectNulls);\n // }\n // else if (isMono(points, 'y')) {\n // return drawMono(ctx, points, start, segLen, allLen,\n // dir, smoothMin, smoothMax, smooth, 'y', connectNulls);\n // }\n // else {\n // return drawNonMono.apply(this, arguments);\n // }\n // }\n // else if (smoothMonotone !== 'none' && isMono(points, smoothMonotone)) {\n // return drawMono.apply(this, arguments);\n // }\n // else {\n // return drawNonMono.apply(this, arguments);\n // }\n if (smoothMonotone === 'none' || !smoothMonotone) {\n return drawNonMono.apply(this, arguments);\n } else {\n return drawMono.apply(this, arguments);\n }\n}\n/**\n * Check if points is in monotone.\n *\n * @param {number[][]} points Array of points which is in [x, y] form\n * @param {string} smoothMonotone 'x', 'y', or 'none', stating for which\n * dimension that is checking.\n * If is 'none', `drawNonMono` should be\n * called.\n * If is undefined, either being monotone\n * in 'x' or 'y' will call `drawMono`.\n */\n// function isMono(points, smoothMonotone) {\n// if (points.length <= 1) {\n// return true;\n// }\n// var dim = smoothMonotone === 'x' ? 0 : 1;\n// var last = points[0][dim];\n// var lastDiff = 0;\n// for (var i = 1; i < points.length; ++i) {\n// var diff = points[i][dim] - last;\n// if (!isNaN(diff) && !isNaN(lastDiff)\n// && diff !== 0 && lastDiff !== 0\n// && ((diff >= 0) !== (lastDiff >= 0))\n// ) {\n// return false;\n// }\n// if (!isNaN(diff) && diff !== 0) {\n// lastDiff = diff;\n// last = points[i][dim];\n// }\n// }\n// return true;\n// }\n\n/**\n * Draw smoothed line in monotone, in which only vertical or horizontal bezier\n * control points will be used. This should be used when points are monotone\n * either in x or y dimension.\n */\n\n\nfunction drawMono(ctx, points, start, segLen, allLen, dir, smoothMin, smoothMax, smooth, smoothMonotone, connectNulls) {\n var prevIdx = 0;\n var idx = start;\n\n for (var k = 0; k < segLen; k++) {\n var p = points[idx];\n\n if (idx >= allLen || idx < 0) {\n break;\n }\n\n if (isPointNull(p)) {\n if (connectNulls) {\n idx += dir;\n continue;\n }\n\n break;\n }\n\n if (idx === start) {\n ctx[dir > 0 ? 'moveTo' : 'lineTo'](p[0], p[1]);\n } else {\n if (smooth > 0) {\n var prevP = points[prevIdx];\n var dim = smoothMonotone === 'y' ? 1 : 0; // Length of control point to p, either in x or y, but not both\n\n var ctrlLen = (p[dim] - prevP[dim]) * smooth;\n v2Copy(cp0, prevP);\n cp0[dim] = prevP[dim] + ctrlLen;\n v2Copy(cp1, p);\n cp1[dim] = p[dim] - ctrlLen;\n ctx.bezierCurveTo(cp0[0], cp0[1], cp1[0], cp1[1], p[0], p[1]);\n } else {\n ctx.lineTo(p[0], p[1]);\n }\n }\n\n prevIdx = idx;\n idx += dir;\n }\n\n return k;\n}\n/**\n * Draw smoothed line in non-monotone, in may cause undesired curve in extreme\n * situations. This should be used when points are non-monotone neither in x or\n * y dimension.\n */\n\n\nfunction drawNonMono(ctx, points, start, segLen, allLen, dir, smoothMin, smoothMax, smooth, smoothMonotone, connectNulls) {\n var prevIdx = 0;\n var idx = start;\n\n for (var k = 0; k < segLen; k++) {\n var p = points[idx];\n\n if (idx >= allLen || idx < 0) {\n break;\n }\n\n if (isPointNull(p)) {\n if (connectNulls) {\n idx += dir;\n continue;\n }\n\n break;\n }\n\n if (idx === start) {\n ctx[dir > 0 ? 'moveTo' : 'lineTo'](p[0], p[1]);\n v2Copy(cp0, p);\n } else {\n if (smooth > 0) {\n var nextIdx = idx + dir;\n var nextP = points[nextIdx];\n\n if (connectNulls) {\n // Find next point not null\n while (nextP && isPointNull(points[nextIdx])) {\n nextIdx += dir;\n nextP = points[nextIdx];\n }\n }\n\n var ratioNextSeg = 0.5;\n var prevP = points[prevIdx];\n var nextP = points[nextIdx]; // Last point\n\n if (!nextP || isPointNull(nextP)) {\n v2Copy(cp1, p);\n } else {\n // If next data is null in not connect case\n if (isPointNull(nextP) && !connectNulls) {\n nextP = p;\n }\n\n vec2.sub(v, nextP, prevP);\n var lenPrevSeg;\n var lenNextSeg;\n\n if (smoothMonotone === 'x' || smoothMonotone === 'y') {\n var dim = smoothMonotone === 'x' ? 0 : 1;\n lenPrevSeg = Math.abs(p[dim] - prevP[dim]);\n lenNextSeg = Math.abs(p[dim] - nextP[dim]);\n } else {\n lenPrevSeg = vec2.dist(p, prevP);\n lenNextSeg = vec2.dist(p, nextP);\n } // Use ratio of seg length\n\n\n ratioNextSeg = lenNextSeg / (lenNextSeg + lenPrevSeg);\n scaleAndAdd(cp1, p, v, -smooth * (1 - ratioNextSeg));\n } // Smooth constraint\n\n\n vec2Min(cp0, cp0, smoothMax);\n vec2Max(cp0, cp0, smoothMin);\n vec2Min(cp1, cp1, smoothMax);\n vec2Max(cp1, cp1, smoothMin);\n ctx.bezierCurveTo(cp0[0], cp0[1], cp1[0], cp1[1], p[0], p[1]); // cp0 of next segment\n\n scaleAndAdd(cp0, p, v, smooth * ratioNextSeg);\n } else {\n ctx.lineTo(p[0], p[1]);\n }\n }\n\n prevIdx = idx;\n idx += dir;\n }\n\n return k;\n}\n\nfunction getBoundingBox(points, smoothConstraint) {\n var ptMin = [Infinity, Infinity];\n var ptMax = [-Infinity, -Infinity];\n\n if (smoothConstraint) {\n for (var i = 0; i < points.length; i++) {\n var pt = points[i];\n\n if (pt[0] < ptMin[0]) {\n ptMin[0] = pt[0];\n }\n\n if (pt[1] < ptMin[1]) {\n ptMin[1] = pt[1];\n }\n\n if (pt[0] > ptMax[0]) {\n ptMax[0] = pt[0];\n }\n\n if (pt[1] > ptMax[1]) {\n ptMax[1] = pt[1];\n }\n }\n }\n\n return {\n min: smoothConstraint ? ptMin : ptMax,\n max: smoothConstraint ? ptMax : ptMin\n };\n}\n\nvar Polyline = Path.extend({\n type: 'ec-polyline',\n shape: {\n points: [],\n smooth: 0,\n smoothConstraint: true,\n smoothMonotone: null,\n connectNulls: false\n },\n style: {\n fill: null,\n stroke: '#000'\n },\n brush: fixClipWithShadow(Path.prototype.brush),\n buildPath: function (ctx, shape) {\n var points = shape.points;\n var i = 0;\n var len = points.length;\n var result = getBoundingBox(points, shape.smoothConstraint);\n\n if (shape.connectNulls) {\n // Must remove first and last null values avoid draw error in polygon\n for (; len > 0; len--) {\n if (!isPointNull(points[len - 1])) {\n break;\n }\n }\n\n for (; i < len; i++) {\n if (!isPointNull(points[i])) {\n break;\n }\n }\n }\n\n while (i < len) {\n i += drawSegment(ctx, points, i, len, len, 1, result.min, result.max, shape.smooth, shape.smoothMonotone, shape.connectNulls) + 1;\n }\n }\n});\nvar Polygon = Path.extend({\n type: 'ec-polygon',\n shape: {\n points: [],\n // Offset between stacked base points and points\n stackedOnPoints: [],\n smooth: 0,\n stackedOnSmooth: 0,\n smoothConstraint: true,\n smoothMonotone: null,\n connectNulls: false\n },\n brush: fixClipWithShadow(Path.prototype.brush),\n buildPath: function (ctx, shape) {\n var points = shape.points;\n var stackedOnPoints = shape.stackedOnPoints;\n var i = 0;\n var len = points.length;\n var smoothMonotone = shape.smoothMonotone;\n var bbox = getBoundingBox(points, shape.smoothConstraint);\n var stackedOnBBox = getBoundingBox(stackedOnPoints, shape.smoothConstraint);\n\n if (shape.connectNulls) {\n // Must remove first and last null values avoid draw error in polygon\n for (; len > 0; len--) {\n if (!isPointNull(points[len - 1])) {\n break;\n }\n }\n\n for (; i < len; i++) {\n if (!isPointNull(points[i])) {\n break;\n }\n }\n }\n\n while (i < len) {\n var k = drawSegment(ctx, points, i, len, len, 1, bbox.min, bbox.max, shape.smooth, smoothMonotone, shape.connectNulls);\n drawSegment(ctx, stackedOnPoints, i + k - 1, k, len, -1, stackedOnBBox.min, stackedOnBBox.max, shape.stackedOnSmooth, smoothMonotone, shape.connectNulls);\n i += k + 1;\n ctx.closePath();\n }\n }\n});\nexports.Polyline = Polyline;\nexports.Polygon = Polygon;","\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(\"./lines/LinesSeries\");\n\nrequire(\"./lines/LinesView\");\n\nvar linesLayout = require(\"./lines/linesLayout\");\n\nvar linesVisual = require(\"./lines/linesVisual\");\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.registerLayout(linesLayout);\necharts.registerVisual(linesVisual);","\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 SeriesModel = require(\"../../model/Series\");\n\nvar List = require(\"../../data/List\");\n\nvar _util = require(\"zrender/lib/core/util\");\n\nvar concatArray = _util.concatArray;\nvar mergeAll = _util.mergeAll;\nvar map = _util.map;\n\nvar _format = require(\"../../util/format\");\n\nvar encodeHTML = _format.encodeHTML;\n\nvar CoordinateSystem = require(\"../../CoordinateSystem\");\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 Uint32Array, Float64Array, Float32Array */\nvar Uint32Arr = typeof Uint32Array === 'undefined' ? Array : Uint32Array;\nvar Float64Arr = typeof Float64Array === 'undefined' ? Array : Float64Array;\n\nfunction compatEc2(seriesOpt) {\n var data = seriesOpt.data;\n\n if (data && data[0] && data[0][0] && data[0][0].coord) {\n seriesOpt.data = map(data, function (itemOpt) {\n var coords = [itemOpt[0].coord, itemOpt[1].coord];\n var target = {\n coords: coords\n };\n\n if (itemOpt[0].name) {\n target.fromName = itemOpt[0].name;\n }\n\n if (itemOpt[1].name) {\n target.toName = itemOpt[1].name;\n }\n\n return mergeAll([target, itemOpt[0], itemOpt[1]]);\n });\n }\n}\n\nvar LinesSeries = SeriesModel.extend({\n type: 'series.lines',\n dependencies: ['grid', 'polar'],\n visualColorAccessPath: 'lineStyle.color',\n init: function (option) {\n // The input data may be null/undefined.\n option.data = option.data || []; // Not using preprocessor because mergeOption may not have series.type\n\n compatEc2(option);\n\n var result = this._processFlatCoordsArray(option.data);\n\n this._flatCoords = result.flatCoords;\n this._flatCoordsOffset = result.flatCoordsOffset;\n\n if (result.flatCoords) {\n option.data = new Float32Array(result.count);\n }\n\n LinesSeries.superApply(this, 'init', arguments);\n },\n mergeOption: function (option) {\n compatEc2(option);\n\n if (option.data) {\n // Only update when have option data to merge.\n var result = this._processFlatCoordsArray(option.data);\n\n this._flatCoords = result.flatCoords;\n this._flatCoordsOffset = result.flatCoordsOffset;\n\n if (result.flatCoords) {\n option.data = new Float32Array(result.count);\n }\n }\n\n LinesSeries.superApply(this, 'mergeOption', arguments);\n },\n appendData: function (params) {\n var result = this._processFlatCoordsArray(params.data);\n\n if (result.flatCoords) {\n if (!this._flatCoords) {\n this._flatCoords = result.flatCoords;\n this._flatCoordsOffset = result.flatCoordsOffset;\n } else {\n this._flatCoords = concatArray(this._flatCoords, result.flatCoords);\n this._flatCoordsOffset = concatArray(this._flatCoordsOffset, result.flatCoordsOffset);\n }\n\n params.data = new Float32Array(result.count);\n }\n\n this.getRawData().appendData(params.data);\n },\n _getCoordsFromItemModel: function (idx) {\n var itemModel = this.getData().getItemModel(idx);\n var coords = itemModel.option instanceof Array ? itemModel.option : itemModel.getShallow('coords');\n return coords;\n },\n getLineCoordsCount: function (idx) {\n if (this._flatCoordsOffset) {\n return this._flatCoordsOffset[idx * 2 + 1];\n } else {\n return this._getCoordsFromItemModel(idx).length;\n }\n },\n getLineCoords: function (idx, out) {\n if (this._flatCoordsOffset) {\n var offset = this._flatCoordsOffset[idx * 2];\n var len = this._flatCoordsOffset[idx * 2 + 1];\n\n for (var i = 0; i < len; i++) {\n out[i] = out[i] || [];\n out[i][0] = this._flatCoords[offset + i * 2];\n out[i][1] = this._flatCoords[offset + i * 2 + 1];\n }\n\n return len;\n } else {\n var coords = this._getCoordsFromItemModel(idx);\n\n for (var i = 0; i < coords.length; i++) {\n out[i] = out[i] || [];\n out[i][0] = coords[i][0];\n out[i][1] = coords[i][1];\n }\n\n return coords.length;\n }\n },\n _processFlatCoordsArray: function (data) {\n var startOffset = 0;\n\n if (this._flatCoords) {\n startOffset = this._flatCoords.length;\n } // Stored as a typed array. In format\n // Points Count(2) | x | y | x | y | Points Count(3) | x | y | x | y | x | y |\n\n\n if (typeof data[0] === 'number') {\n var len = data.length; // Store offset and len of each segment\n\n var coordsOffsetAndLenStorage = new Uint32Arr(len);\n var coordsStorage = new Float64Arr(len);\n var coordsCursor = 0;\n var offsetCursor = 0;\n var dataCount = 0;\n\n for (var i = 0; i < len;) {\n dataCount++;\n var count = data[i++]; // Offset\n\n coordsOffsetAndLenStorage[offsetCursor++] = coordsCursor + startOffset; // Len\n\n coordsOffsetAndLenStorage[offsetCursor++] = count;\n\n for (var k = 0; k < count; k++) {\n var x = data[i++];\n var y = data[i++];\n coordsStorage[coordsCursor++] = x;\n coordsStorage[coordsCursor++] = y;\n\n if (i > len) {}\n }\n }\n\n return {\n flatCoordsOffset: new Uint32Array(coordsOffsetAndLenStorage.buffer, 0, offsetCursor),\n flatCoords: coordsStorage,\n count: dataCount\n };\n }\n\n return {\n flatCoordsOffset: null,\n flatCoords: null,\n count: data.length\n };\n },\n getInitialData: function (option, ecModel) {\n var lineData = new List(['value'], this);\n lineData.hasItemOption = false;\n lineData.initData(option.data, [], function (dataItem, dimName, dataIndex, dimIndex) {\n // dataItem is simply coords\n if (dataItem instanceof Array) {\n return NaN;\n } else {\n lineData.hasItemOption = true;\n var value = dataItem.value;\n\n if (value != null) {\n return value instanceof Array ? value[dimIndex] : value;\n }\n }\n });\n return lineData;\n },\n formatTooltip: function (dataIndex) {\n var data = this.getData();\n var itemModel = data.getItemModel(dataIndex);\n var name = itemModel.get('name');\n\n if (name) {\n return name;\n }\n\n var fromName = itemModel.get('fromName');\n var toName = itemModel.get('toName');\n var html = [];\n fromName != null && html.push(fromName);\n toName != null && html.push(toName);\n return encodeHTML(html.join(' > '));\n },\n preventIncremental: function () {\n return !!this.get('effect.show');\n },\n getProgressive: function () {\n var progressive = this.option.progressive;\n\n if (progressive == null) {\n return this.option.large ? 1e4 : this.get('progressive');\n }\n\n return progressive;\n },\n getProgressiveThreshold: function () {\n var progressiveThreshold = this.option.progressiveThreshold;\n\n if (progressiveThreshold == null) {\n return this.option.large ? 2e4 : this.get('progressiveThreshold');\n }\n\n return progressiveThreshold;\n },\n defaultOption: {\n coordinateSystem: 'geo',\n zlevel: 0,\n z: 2,\n legendHoverLink: true,\n hoverAnimation: true,\n // Cartesian coordinate system\n xAxisIndex: 0,\n yAxisIndex: 0,\n symbol: ['none', 'none'],\n symbolSize: [10, 10],\n // Geo coordinate system\n geoIndex: 0,\n effect: {\n show: false,\n period: 4,\n // Animation delay. support callback\n // delay: 0,\n // If move with constant speed px/sec\n // period will be ignored if this property is > 0,\n constantSpeed: 0,\n symbol: 'circle',\n symbolSize: 3,\n loop: true,\n // Length of trail, 0 - 1\n trailLength: 0.2 // Same with lineStyle.color\n // color\n\n },\n large: false,\n // Available when large is true\n largeThreshold: 2000,\n // If lines are polyline\n // polyline not support curveness, label, animation\n polyline: false,\n // If clip the overflow.\n // Available when coordinateSystem is cartesian or polar.\n clip: true,\n label: {\n show: false,\n position: 'end' // distance: 5,\n // formatter: 标签文本格式器,同Tooltip.formatter,不支持异步回调\n\n },\n lineStyle: {\n opacity: 0.5\n }\n }\n});\nvar _default = LinesSeries;\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 LineDraw = require(\"../helper/LineDraw\");\n\nvar EffectLine = require(\"../helper/EffectLine\");\n\nvar Line = require(\"../helper/Line\");\n\nvar Polyline = require(\"../helper/Polyline\");\n\nvar EffectPolyline = require(\"../helper/EffectPolyline\");\n\nvar LargeLineDraw = require(\"../helper/LargeLineDraw\");\n\nvar linesLayout = require(\"./linesLayout\");\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 _default = echarts.extendChartView({\n type: 'lines',\n init: function () {},\n render: function (seriesModel, ecModel, api) {\n var data = seriesModel.getData();\n\n var lineDraw = this._updateLineDraw(data, seriesModel);\n\n var zlevel = seriesModel.get('zlevel');\n var trailLength = seriesModel.get('effect.trailLength');\n var zr = api.getZr(); // Avoid the drag cause ghost shadow\n // FIXME Better way ?\n // SVG doesn't support\n\n var isSvg = zr.painter.getType() === 'svg';\n\n if (!isSvg) {\n zr.painter.getLayer(zlevel).clear(true);\n } // Config layer with motion blur\n\n\n if (this._lastZlevel != null && !isSvg) {\n zr.configLayer(this._lastZlevel, {\n motionBlur: false\n });\n }\n\n if (this._showEffect(seriesModel) && trailLength) {\n if (!isSvg) {\n zr.configLayer(zlevel, {\n motionBlur: true,\n lastFrameAlpha: Math.max(Math.min(trailLength / 10 + 0.9, 1), 0)\n });\n }\n }\n\n lineDraw.updateData(data);\n var clipPath = seriesModel.get('clip', true) && createClipPath(seriesModel.coordinateSystem, false, seriesModel);\n\n if (clipPath) {\n this.group.setClipPath(clipPath);\n } else {\n this.group.removeClipPath();\n }\n\n this._lastZlevel = zlevel;\n this._finished = true;\n },\n incrementalPrepareRender: function (seriesModel, ecModel, api) {\n var data = seriesModel.getData();\n\n var lineDraw = this._updateLineDraw(data, seriesModel);\n\n lineDraw.incrementalPrepareUpdate(data);\n\n this._clearLayer(api);\n\n this._finished = false;\n },\n incrementalRender: function (taskParams, seriesModel, ecModel) {\n this._lineDraw.incrementalUpdate(taskParams, seriesModel.getData());\n\n this._finished = taskParams.end === seriesModel.getData().count();\n },\n updateTransform: function (seriesModel, ecModel, api) {\n var data = seriesModel.getData();\n var pipelineContext = seriesModel.pipelineContext;\n\n if (!this._finished || pipelineContext.large || pipelineContext.progressiveRender) {\n // TODO Don't have to do update in large mode. Only do it when there are millions of data.\n return {\n update: true\n };\n } else {\n // TODO Use same logic with ScatterView.\n // Manually update layout\n var res = linesLayout.reset(seriesModel);\n\n if (res.progress) {\n res.progress({\n start: 0,\n end: data.count()\n }, data);\n }\n\n this._lineDraw.updateLayout();\n\n this._clearLayer(api);\n }\n },\n _updateLineDraw: function (data, seriesModel) {\n var lineDraw = this._lineDraw;\n\n var hasEffect = this._showEffect(seriesModel);\n\n var isPolyline = !!seriesModel.get('polyline');\n var pipelineContext = seriesModel.pipelineContext;\n var isLargeDraw = pipelineContext.large;\n\n if (!lineDraw || hasEffect !== this._hasEffet || isPolyline !== this._isPolyline || isLargeDraw !== this._isLargeDraw) {\n if (lineDraw) {\n lineDraw.remove();\n }\n\n lineDraw = this._lineDraw = isLargeDraw ? new LargeLineDraw() : new LineDraw(isPolyline ? hasEffect ? EffectPolyline : Polyline : hasEffect ? EffectLine : Line);\n this._hasEffet = hasEffect;\n this._isPolyline = isPolyline;\n this._isLargeDraw = isLargeDraw;\n this.group.removeAll();\n }\n\n this.group.add(lineDraw.group);\n return lineDraw;\n },\n _showEffect: function (seriesModel) {\n return !!seriesModel.get('effect.show');\n },\n _clearLayer: function (api) {\n // Not use motion when dragging or zooming\n var zr = api.getZr();\n var isSvg = zr.painter.getType() === 'svg';\n\n if (!isSvg && this._lastZlevel != null) {\n zr.painter.getLayer(this._lastZlevel).clear(true);\n }\n },\n remove: function (ecModel, api) {\n this._lineDraw && this._lineDraw.remove();\n this._lineDraw = null; // Clear motion when lineDraw is removed\n\n this._clearLayer(api);\n },\n dispose: function () {}\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*/\n\n/* global Float32Array */\nvar _default = {\n seriesType: 'lines',\n plan: createRenderPlanner(),\n reset: function (seriesModel) {\n var coordSys = seriesModel.coordinateSystem;\n var isPolyline = seriesModel.get('polyline');\n var isLarge = seriesModel.pipelineContext.large;\n\n function progress(params, lineData) {\n var lineCoords = [];\n\n if (isLarge) {\n var points;\n var segCount = params.end - params.start;\n\n if (isPolyline) {\n var totalCoordsCount = 0;\n\n for (var i = params.start; i < params.end; i++) {\n totalCoordsCount += seriesModel.getLineCoordsCount(i);\n }\n\n points = new Float32Array(segCount + totalCoordsCount * 2);\n } else {\n points = new Float32Array(segCount * 4);\n }\n\n var offset = 0;\n var pt = [];\n\n for (var i = params.start; i < params.end; i++) {\n var len = seriesModel.getLineCoords(i, lineCoords);\n\n if (isPolyline) {\n points[offset++] = len;\n }\n\n for (var k = 0; k < len; k++) {\n pt = coordSys.dataToPoint(lineCoords[k], false, pt);\n points[offset++] = pt[0];\n points[offset++] = pt[1];\n }\n }\n\n lineData.setLayout('linesPoints', points);\n } else {\n for (var i = params.start; i < params.end; i++) {\n var itemModel = lineData.getItemModel(i);\n var len = seriesModel.getLineCoords(i, lineCoords);\n var pts = [];\n\n if (isPolyline) {\n for (var j = 0; j < len; j++) {\n pts.push(coordSys.dataToPoint(lineCoords[j]));\n }\n } else {\n pts[0] = coordSys.dataToPoint(lineCoords[0]);\n pts[1] = coordSys.dataToPoint(lineCoords[1]);\n var curveness = itemModel.get('lineStyle.curveness');\n\n if (+curveness) {\n pts[2] = [(pts[0][0] + pts[1][0]) / 2 - (pts[0][1] - pts[1][1]) * curveness, (pts[0][1] + pts[1][1]) / 2 - (pts[1][0] - pts[0][0]) * curveness];\n }\n }\n\n lineData.setItemLayout(i, pts);\n }\n }\n }\n\n return {\n progress: progress\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*/\nfunction normalize(a) {\n if (!(a instanceof Array)) {\n a = [a, a];\n }\n\n return a;\n}\n\nvar opacityQuery = 'lineStyle.opacity'.split('.');\nvar _default = {\n seriesType: 'lines',\n reset: function (seriesModel, ecModel, api) {\n var symbolType = normalize(seriesModel.get('symbol'));\n var symbolSize = normalize(seriesModel.get('symbolSize'));\n var data = seriesModel.getData();\n data.setVisual('fromSymbol', symbolType && symbolType[0]);\n data.setVisual('toSymbol', symbolType && symbolType[1]);\n data.setVisual('fromSymbolSize', symbolSize && symbolSize[0]);\n data.setVisual('toSymbolSize', symbolSize && symbolSize[1]);\n data.setVisual('opacity', seriesModel.get(opacityQuery));\n\n function dataEach(data, idx) {\n var itemModel = data.getItemModel(idx);\n var symbolType = normalize(itemModel.getShallow('symbol', true));\n var symbolSize = normalize(itemModel.getShallow('symbolSize', true));\n var opacity = itemModel.get(opacityQuery);\n symbolType[0] && data.setItemVisual(idx, 'fromSymbol', symbolType[0]);\n symbolType[1] && data.setItemVisual(idx, 'toSymbol', symbolType[1]);\n symbolSize[0] && data.setItemVisual(idx, 'fromSymbolSize', symbolSize[0]);\n symbolSize[1] && data.setItemVisual(idx, 'toSymbolSize', symbolSize[1]);\n data.setItemVisual(idx, 'opacity', opacity);\n }\n\n return {\n dataEach: data.hasItemOption ? dataEach : null\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(\"./map/MapSeries\");\n\nrequire(\"./map/MapView\");\n\nrequire(\"../action/geoRoam\");\n\nrequire(\"../coord/geo/geoCreator\");\n\nvar mapSymbolLayout = require(\"./map/mapSymbolLayout\");\n\nvar mapVisual = require(\"./map/mapVisual\");\n\nvar mapDataStatistic = require(\"./map/mapDataStatistic\");\n\nvar backwardCompat = require(\"./map/backwardCompat\");\n\nvar createDataSelectAction = require(\"../action/createDataSelectAction\");\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.registerLayout(mapSymbolLayout);\necharts.registerVisual(mapVisual);\necharts.registerProcessor(echarts.PRIORITY.PROCESSOR.STATISTIC, mapDataStatistic);\necharts.registerPreprocessor(backwardCompat);\ncreateDataSelectAction('map', [{\n type: 'mapToggleSelect',\n event: 'mapselectchanged',\n method: 'toggleSelected'\n}, {\n type: 'mapSelect',\n event: 'mapselected',\n method: 'select'\n}, {\n type: 'mapUnSelect',\n event: 'mapunselected',\n method: 'unSelect'\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 zrUtil = require(\"zrender/lib/core/util\");\n\nvar createListSimply = require(\"../helper/createListSimply\");\n\nvar SeriesModel = require(\"../../model/Series\");\n\nvar _format = require(\"../../util/format\");\n\nvar encodeHTML = _format.encodeHTML;\nvar addCommas = _format.addCommas;\n\nvar dataSelectableMixin = require(\"../../component/helper/selectableMixin\");\n\nvar _dataProvider = require(\"../../data/helper/dataProvider\");\n\nvar retrieveRawAttr = _dataProvider.retrieveRawAttr;\n\nvar geoSourceManager = require(\"../../coord/geo/geoSourceManager\");\n\nvar _sourceHelper = require(\"../../data/helper/sourceHelper\");\n\nvar makeSeriesEncodeForNameBased = _sourceHelper.makeSeriesEncodeForNameBased;\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 MapSeries = SeriesModel.extend({\n type: 'series.map',\n dependencies: ['geo'],\n layoutMode: 'box',\n\n /**\n * Only first map series of same mapType will drawMap\n * @type {boolean}\n */\n needsDrawMap: false,\n\n /**\n * Group of all map series with same mapType\n * @type {boolean}\n */\n seriesGroup: [],\n getInitialData: function (option) {\n var data = createListSimply(this, {\n coordDimensions: ['value'],\n encodeDefaulter: zrUtil.curry(makeSeriesEncodeForNameBased, this)\n });\n var valueDim = data.mapDimension('value');\n var dataNameMap = zrUtil.createHashMap();\n var selectTargetList = [];\n var toAppendNames = [];\n\n for (var i = 0, len = data.count(); i < len; i++) {\n var name = data.getName(i);\n dataNameMap.set(name, true);\n selectTargetList.push({\n name: name,\n value: data.get(valueDim, i),\n selected: retrieveRawAttr(data, i, 'selected')\n });\n }\n\n var geoSource = geoSourceManager.load(this.getMapType(), this.option.nameMap, this.option.nameProperty);\n zrUtil.each(geoSource.regions, function (region) {\n var name = region.name;\n\n if (!dataNameMap.get(name)) {\n selectTargetList.push({\n name: name\n });\n toAppendNames.push(name);\n }\n });\n this.updateSelectedMap(selectTargetList); // Complete data with missing regions. The consequent processes (like visual\n // map and render) can not be performed without a \"full data\". For example,\n // find `dataIndex` by name.\n\n data.appendValues([], toAppendNames);\n return data;\n },\n\n /**\n * If no host geo model, return null, which means using a\n * inner exclusive geo model.\n */\n getHostGeoModel: function () {\n var geoIndex = this.option.geoIndex;\n return geoIndex != null ? this.dependentModels.geo[geoIndex] : null;\n },\n getMapType: function () {\n return (this.getHostGeoModel() || this).option.map;\n },\n // _fillOption: function (option, mapName) {\n // Shallow clone\n // option = zrUtil.extend({}, option);\n // option.data = geoCreator.getFilledRegions(option.data, mapName, option.nameMap);\n // return option;\n // },\n getRawValue: function (dataIndex) {\n // Use value stored in data instead because it is calculated from multiple series\n // FIXME Provide all value of multiple series ?\n var data = this.getData();\n return data.get(data.mapDimension('value'), dataIndex);\n },\n\n /**\n * Get model of region\n * @param {string} name\n * @return {module:echarts/model/Model}\n */\n getRegionModel: function (regionName) {\n var data = this.getData();\n return data.getItemModel(data.indexOfName(regionName));\n },\n\n /**\n * Map tooltip formatter\n *\n * @param {number} dataIndex\n */\n formatTooltip: function (dataIndex, multipleSeries, dataType, renderMode) {\n // FIXME orignalData and data is a bit confusing\n var data = this.getData();\n var formattedValue = addCommas(this.getRawValue(dataIndex));\n var name = data.getName(dataIndex);\n var seriesGroup = this.seriesGroup;\n var seriesNames = [];\n\n for (var i = 0; i < seriesGroup.length; i++) {\n var otherIndex = seriesGroup[i].originalData.indexOfName(name);\n var valueDim = data.mapDimension('value');\n\n if (!isNaN(seriesGroup[i].originalData.get(valueDim, otherIndex))) {\n seriesNames.push(encodeHTML(seriesGroup[i].name));\n }\n }\n\n var newLine = renderMode === 'html' ? '
' : '\\n';\n return seriesNames.join(', ') + newLine + encodeHTML(name + ' : ' + formattedValue);\n },\n\n /**\n * @implement\n */\n getTooltipPosition: function (dataIndex) {\n if (dataIndex != null) {\n var name = this.getData().getName(dataIndex);\n var geo = this.coordinateSystem;\n var region = geo.getRegion(name);\n return region && geo.dataToPoint(region.center);\n }\n },\n setZoom: function (zoom) {\n this.option.zoom = zoom;\n },\n setCenter: function (center) {\n this.option.center = center;\n },\n defaultOption: {\n // 一级层叠\n zlevel: 0,\n // 二级层叠\n z: 2,\n coordinateSystem: 'geo',\n // map should be explicitly specified since ec3.\n map: '',\n // If `geoIndex` is not specified, a exclusive geo will be\n // created. Otherwise use the specified geo component, and\n // `map` and `mapType` are ignored.\n // geoIndex: 0,\n // 'center' | 'left' | 'right' | 'x%' | {number}\n left: 'center',\n // 'center' | 'top' | 'bottom' | 'x%' | {number}\n top: 'center',\n // right\n // bottom\n // width:\n // height\n // Aspect is width / height. Inited to be geoJson bbox aspect\n // This parameter is used for scale this aspect\n aspectScale: 0.75,\n ///// Layout with center and size\n // If you wan't to put map in a fixed size box with right aspect ratio\n // This two properties may more conveninet\n // layoutCenter: [50%, 50%]\n // layoutSize: 100\n // 数值合并方式,默认加和,可选为:\n // 'sum' | 'average' | 'max' | 'min'\n // mapValueCalculation: 'sum',\n // 地图数值计算结果小数精度\n // mapValuePrecision: 0,\n // 显示图例颜色标识(系列标识的小圆点),图例开启时有效\n showLegendSymbol: true,\n // 选择模式,默认关闭,可选single,multiple\n // selectedMode: false,\n dataRangeHoverLink: true,\n // 是否开启缩放及漫游模式\n // roam: false,\n // Define left-top, right-bottom coords to control view\n // For example, [ [180, 90], [-180, -90] ],\n // higher priority than center and zoom\n boundingCoords: null,\n // Default on center of map\n center: null,\n zoom: 1,\n scaleLimit: null,\n label: {\n show: false,\n color: '#000'\n },\n // scaleLimit: null,\n itemStyle: {\n borderWidth: 0.5,\n borderColor: '#444',\n areaColor: '#eee'\n },\n emphasis: {\n label: {\n show: true,\n color: 'rgb(100,0,0)'\n },\n itemStyle: {\n areaColor: 'rgba(255,215,0,0.8)'\n }\n },\n nameProperty: 'name'\n }\n});\nzrUtil.mixin(MapSeries, dataSelectableMixin);\nvar _default = MapSeries;\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 MapDraw = require(\"../../component/helper/MapDraw\");\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 HIGH_DOWN_PROP = '__seriesMapHighDown';\nvar RECORD_VERSION_PROP = '__seriesMapCallKey';\n\nvar _default = echarts.extendChartView({\n type: 'map',\n render: function (mapModel, ecModel, api, payload) {\n // Not render if it is an toggleSelect action from self\n if (payload && payload.type === 'mapToggleSelect' && payload.from === this.uid) {\n return;\n }\n\n var group = this.group;\n group.removeAll();\n\n if (mapModel.getHostGeoModel()) {\n return;\n } // Not update map if it is an roam action from self\n\n\n if (!(payload && payload.type === 'geoRoam' && payload.componentType === 'series' && payload.seriesId === mapModel.id)) {\n if (mapModel.needsDrawMap) {\n var mapDraw = this._mapDraw || new MapDraw(api, true);\n group.add(mapDraw.group);\n mapDraw.draw(mapModel, ecModel, api, this, payload);\n this._mapDraw = mapDraw;\n } else {\n // Remove drawed map\n this._mapDraw && this._mapDraw.remove();\n this._mapDraw = null;\n }\n } else {\n var mapDraw = this._mapDraw;\n mapDraw && group.add(mapDraw.group);\n }\n\n mapModel.get('showLegendSymbol') && ecModel.getComponent('legend') && this._renderSymbols(mapModel, ecModel, api);\n },\n remove: function () {\n this._mapDraw && this._mapDraw.remove();\n this._mapDraw = null;\n this.group.removeAll();\n },\n dispose: function () {\n this._mapDraw && this._mapDraw.remove();\n this._mapDraw = null;\n },\n _renderSymbols: function (mapModel, ecModel, api) {\n var originalData = mapModel.originalData;\n var group = this.group;\n originalData.each(originalData.mapDimension('value'), function (value, originalDataIndex) {\n if (isNaN(value)) {\n return;\n }\n\n var layout = originalData.getItemLayout(originalDataIndex);\n\n if (!layout || !layout.point) {\n // Not exists in map\n return;\n }\n\n var point = layout.point;\n var offset = layout.offset;\n var circle = new graphic.Circle({\n style: {\n // Because the special of map draw.\n // Which needs statistic of multiple series and draw on one map.\n // And each series also need a symbol with legend color\n //\n // Layout and visual are put one the different data\n fill: mapModel.getData().getVisual('color')\n },\n shape: {\n cx: point[0] + offset * 9,\n cy: point[1],\n r: 3\n },\n silent: true,\n // Do not overlap the first series, on which labels are displayed.\n z2: 8 + (!offset ? graphic.Z2_EMPHASIS_LIFT + 1 : 0)\n }); // Only the series that has the first value on the same region is in charge of rendering the label.\n // But consider the case:\n // series: [\n // {id: 'X', type: 'map', map: 'm', {data: [{name: 'A', value: 11}, {name: 'B', {value: 22}]},\n // {id: 'Y', type: 'map', map: 'm', {data: [{name: 'A', value: 21}, {name: 'C', {value: 33}]}\n // ]\n // The offset `0` of item `A` is at series `X`, but of item `C` is at series `Y`.\n // For backward compatibility, we follow the rule that render label `A` by the\n // settings on series `X` but render label `C` by the settings on series `Y`.\n\n if (!offset) {\n var fullData = mapModel.mainSeries.getData();\n var name = originalData.getName(originalDataIndex);\n var fullIndex = fullData.indexOfName(name);\n var itemModel = originalData.getItemModel(originalDataIndex);\n var labelModel = itemModel.getModel('label');\n var hoverLabelModel = itemModel.getModel('emphasis.label');\n var regionGroup = fullData.getItemGraphicEl(fullIndex); // `getFormattedLabel` needs to use `getData` inside. Here\n // `mapModel.getData()` is shallow cloned from `mainSeries.getData()`.\n // FIXME\n // If this is not the `mainSeries`, the item model (like label formatter)\n // set on original data item will never get. But it has been working\n // like that from the begining, and this scenario is rarely encountered.\n // So it won't be fixed until have to.\n\n var normalText = zrUtil.retrieve2(mapModel.getFormattedLabel(fullIndex, 'normal'), name);\n var emphasisText = zrUtil.retrieve2(mapModel.getFormattedLabel(fullIndex, 'emphasis'), normalText);\n var highDownRecord = regionGroup[HIGH_DOWN_PROP];\n var recordVersion = Math.random(); // Prevent from register listeners duplicatedly when roaming.\n\n if (!highDownRecord) {\n highDownRecord = regionGroup[HIGH_DOWN_PROP] = {};\n var onEmphasis = zrUtil.curry(onRegionHighDown, true);\n var onNormal = zrUtil.curry(onRegionHighDown, false);\n regionGroup.on('mouseover', onEmphasis).on('mouseout', onNormal).on('emphasis', onEmphasis).on('normal', onNormal);\n } // Prevent removed regions effect current grapics.\n\n\n regionGroup[RECORD_VERSION_PROP] = recordVersion;\n zrUtil.extend(highDownRecord, {\n recordVersion: recordVersion,\n circle: circle,\n labelModel: labelModel,\n hoverLabelModel: hoverLabelModel,\n emphasisText: emphasisText,\n normalText: normalText\n }); // FIXME\n // Consider set option when emphasis.\n\n enterRegionHighDown(highDownRecord, false);\n }\n\n group.add(circle);\n });\n }\n});\n\nfunction onRegionHighDown(toHighOrDown) {\n var highDownRecord = this[HIGH_DOWN_PROP];\n\n if (highDownRecord && highDownRecord.recordVersion === this[RECORD_VERSION_PROP]) {\n enterRegionHighDown(highDownRecord, toHighOrDown);\n }\n}\n\nfunction enterRegionHighDown(highDownRecord, toHighOrDown) {\n var circle = highDownRecord.circle;\n var labelModel = highDownRecord.labelModel;\n var hoverLabelModel = highDownRecord.hoverLabelModel;\n var emphasisText = highDownRecord.emphasisText;\n var normalText = highDownRecord.normalText;\n\n if (toHighOrDown) {\n circle.style.extendFrom(graphic.setTextStyle({}, hoverLabelModel, {\n text: hoverLabelModel.get('show') ? emphasisText : null\n }, {\n isRectText: true,\n useInsideStyle: false\n }, true)); // Make label upper than others if overlaps.\n\n circle.__mapOriginalZ2 = circle.z2;\n circle.z2 += graphic.Z2_EMPHASIS_LIFT;\n } else {\n graphic.setTextStyle(circle.style, labelModel, {\n text: labelModel.get('show') ? normalText : null,\n textPosition: labelModel.getShallow('position') || 'bottom'\n }, {\n isRectText: true,\n useInsideStyle: false\n }); // Trigger normalize style like padding.\n\n circle.dirty(false);\n\n if (circle.__mapOriginalZ2 != null) {\n circle.z2 = circle.__mapOriginalZ2;\n circle.__mapOriginalZ2 = null;\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\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 // Save geoCoord\n var mapSeries = [];\n zrUtil.each(option.series, function (seriesOpt) {\n if (seriesOpt && seriesOpt.type === 'map') {\n mapSeries.push(seriesOpt);\n seriesOpt.map = seriesOpt.map || seriesOpt.mapType; // Put x, y, width, height, x2, y2 in the top level\n\n zrUtil.defaults(seriesOpt, seriesOpt.mapLocation);\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\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// FIXME 公用?\n\n/**\n * @param {Array.} datas\n * @param {string} statisticType 'average' 'sum'\n * @inner\n */\nfunction dataStatistics(datas, statisticType) {\n var dataNameMap = {};\n zrUtil.each(datas, function (data) {\n data.each(data.mapDimension('value'), function (value, idx) {\n // Add prefix to avoid conflict with Object.prototype.\n var mapKey = 'ec-' + data.getName(idx);\n dataNameMap[mapKey] = dataNameMap[mapKey] || [];\n\n if (!isNaN(value)) {\n dataNameMap[mapKey].push(value);\n }\n });\n });\n return datas[0].map(datas[0].mapDimension('value'), function (value, idx) {\n var mapKey = 'ec-' + datas[0].getName(idx);\n var sum = 0;\n var min = Infinity;\n var max = -Infinity;\n var len = dataNameMap[mapKey].length;\n\n for (var i = 0; i < len; i++) {\n min = Math.min(min, dataNameMap[mapKey][i]);\n max = Math.max(max, dataNameMap[mapKey][i]);\n sum += dataNameMap[mapKey][i];\n }\n\n var result;\n\n if (statisticType === 'min') {\n result = min;\n } else if (statisticType === 'max') {\n result = max;\n } else if (statisticType === 'average') {\n result = sum / len;\n } else {\n result = sum;\n }\n\n return len === 0 ? NaN : result;\n });\n}\n\nfunction _default(ecModel) {\n var seriesGroups = {};\n ecModel.eachSeriesByType('map', function (seriesModel) {\n var hostGeoModel = seriesModel.getHostGeoModel();\n var key = hostGeoModel ? 'o' + hostGeoModel.id : 'i' + seriesModel.getMapType();\n (seriesGroups[key] = seriesGroups[key] || []).push(seriesModel);\n });\n zrUtil.each(seriesGroups, function (seriesList, key) {\n var data = dataStatistics(zrUtil.map(seriesList, function (seriesModel) {\n return seriesModel.getData();\n }), seriesList[0].get('mapValueCalculation'));\n\n for (var i = 0; i < seriesList.length; i++) {\n seriesList[i].originalData = seriesList[i].getData();\n } // FIXME Put where?\n\n\n for (var i = 0; i < seriesList.length; i++) {\n seriesList[i].seriesGroup = seriesList;\n seriesList[i].needsDrawMap = i === 0 && !seriesList[i].getHostGeoModel();\n seriesList[i].setData(data.cloneShallow());\n seriesList[i].mainSeries = seriesList[0];\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\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(ecModel) {\n var processedMapType = {};\n ecModel.eachSeriesByType('map', function (mapSeries) {\n var mapType = mapSeries.getMapType();\n\n if (mapSeries.getHostGeoModel() || processedMapType[mapType]) {\n return;\n }\n\n var mapSymbolOffsets = {};\n zrUtil.each(mapSeries.seriesGroup, function (subMapSeries) {\n var geo = subMapSeries.coordinateSystem;\n var data = subMapSeries.originalData;\n\n if (subMapSeries.get('showLegendSymbol') && ecModel.getComponent('legend')) {\n data.each(data.mapDimension('value'), function (value, idx) {\n var name = data.getName(idx);\n var region = geo.getRegion(name); // If input series.data is [11, 22, '-'/null/undefined, 44],\n // it will be filled with NaN: [11, 22, NaN, 44] and NaN will\n // not be drawn. So here must validate if value is NaN.\n\n if (!region || isNaN(value)) {\n return;\n }\n\n var offset = mapSymbolOffsets[name] || 0;\n var point = geo.dataToPoint(region.center);\n mapSymbolOffsets[name] = offset + 1;\n data.setItemLayout(idx, {\n point: point,\n offset: offset\n });\n });\n }\n }); // Show label of those region not has legendSymbol(which is offset 0)\n\n var data = mapSeries.getData();\n data.each(function (idx) {\n var name = data.getName(idx);\n var layout = data.getItemLayout(idx) || {};\n layout.showLabel = !mapSymbolOffsets[name];\n data.setItemLayout(idx, layout);\n });\n processedMapType[mapType] = true;\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*/\nfunction _default(ecModel) {\n ecModel.eachSeriesByType('map', function (seriesModel) {\n var colorList = seriesModel.get('color');\n var itemStyleModel = seriesModel.getModel('itemStyle');\n var areaColor = itemStyleModel.get('areaColor');\n var color = itemStyleModel.get('color') || colorList[seriesModel.seriesIndex % colorList.length];\n seriesModel.getData().setVisual({\n 'areaColor': areaColor,\n 'color': color\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(\"../component/parallel\");\n\nrequire(\"./parallel/ParallelSeries\");\n\nrequire(\"./parallel/ParallelView\");\n\nvar parallelVisual = require(\"./parallel/parallelVisual\");\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(parallelVisual);","\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 each = _util.each;\nvar createHashMap = _util.createHashMap;\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.parallel',\n dependencies: ['parallel'],\n visualColorAccessPath: 'lineStyle.color',\n getInitialData: function (option, ecModel) {\n var source = this.getSource();\n setEncodeAndDimensions(source, this);\n return createListFromArray(source, this);\n },\n\n /**\n * User can get data raw indices on 'axisAreaSelected' event received.\n *\n * @public\n * @param {string} activeState 'active' or 'inactive' or 'normal'\n * @return {Array.} Raw indices\n */\n getRawIndicesByActiveState: function (activeState) {\n var coordSys = this.coordinateSystem;\n var data = this.getData();\n var indices = [];\n coordSys.eachActiveState(data, function (theActiveState, dataIndex) {\n if (activeState === theActiveState) {\n indices.push(data.getRawIndex(dataIndex));\n }\n });\n return indices;\n },\n defaultOption: {\n zlevel: 0,\n // 一级层叠\n z: 2,\n // 二级层叠\n coordinateSystem: 'parallel',\n parallelIndex: 0,\n label: {\n show: false\n },\n inactiveOpacity: 0.05,\n activeOpacity: 1,\n lineStyle: {\n width: 1,\n opacity: 0.45,\n type: 'solid'\n },\n emphasis: {\n label: {\n show: false\n }\n },\n progressive: 500,\n smooth: false,\n // true | false | number\n animationEasing: 'linear'\n }\n});\n\nfunction setEncodeAndDimensions(source, seriesModel) {\n // The mapping of parallelAxis dimension to data dimension can\n // be specified in parallelAxis.option.dim. For example, if\n // parallelAxis.option.dim is 'dim3', it mapping to the third\n // dimension of data. But `data.encode` has higher priority.\n // Moreover, parallelModel.dimension should not be regarded as data\n // dimensions. Consider dimensions = ['dim4', 'dim2', 'dim6'];\n if (source.encodeDefine) {\n return;\n }\n\n var parallelModel = seriesModel.ecModel.getComponent('parallel', seriesModel.get('parallelIndex'));\n\n if (!parallelModel) {\n return;\n }\n\n var encodeDefine = source.encodeDefine = createHashMap();\n each(parallelModel.dimensions, function (axisDim) {\n var dataDimIndex = convertDimNameToNumber(axisDim);\n encodeDefine.set(axisDim, dataDimIndex);\n });\n}\n\nfunction convertDimNameToNumber(dimName) {\n return +dimName.replace('dim', '');\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 ChartView = require(\"../../view/Chart\");\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_SMOOTH = 0.3;\nvar ParallelView = ChartView.extend({\n type: 'parallel',\n init: function () {\n /**\n * @type {module:zrender/container/Group}\n * @private\n */\n this._dataGroup = new graphic.Group();\n this.group.add(this._dataGroup);\n /**\n * @type {module:echarts/data/List}\n */\n\n this._data;\n /**\n * @type {boolean}\n */\n\n this._initialized;\n },\n\n /**\n * @override\n */\n render: function (seriesModel, ecModel, api, payload) {\n var dataGroup = this._dataGroup;\n var data = seriesModel.getData();\n var oldData = this._data;\n var coordSys = seriesModel.coordinateSystem;\n var dimensions = coordSys.dimensions;\n var seriesScope = makeSeriesScope(seriesModel);\n data.diff(oldData).add(add).update(update).remove(remove).execute();\n\n function add(newDataIndex) {\n var line = addEl(data, dataGroup, newDataIndex, dimensions, coordSys);\n updateElCommon(line, data, newDataIndex, seriesScope);\n }\n\n function update(newDataIndex, oldDataIndex) {\n var line = oldData.getItemGraphicEl(oldDataIndex);\n var points = createLinePoints(data, newDataIndex, dimensions, coordSys);\n data.setItemGraphicEl(newDataIndex, line);\n var animationModel = payload && payload.animation === false ? null : seriesModel;\n graphic.updateProps(line, {\n shape: {\n points: points\n }\n }, animationModel, newDataIndex);\n updateElCommon(line, data, newDataIndex, seriesScope);\n }\n\n function remove(oldDataIndex) {\n var line = oldData.getItemGraphicEl(oldDataIndex);\n dataGroup.remove(line);\n } // First create\n\n\n if (!this._initialized) {\n this._initialized = true;\n var clipPath = createGridClipShape(coordSys, seriesModel, function () {\n // Callback will be invoked immediately if there is no animation\n setTimeout(function () {\n dataGroup.removeClipPath();\n });\n });\n dataGroup.setClipPath(clipPath);\n }\n\n this._data = data;\n },\n incrementalPrepareRender: function (seriesModel, ecModel, api) {\n this._initialized = true;\n this._data = null;\n\n this._dataGroup.removeAll();\n },\n incrementalRender: function (taskParams, seriesModel, ecModel) {\n var data = seriesModel.getData();\n var coordSys = seriesModel.coordinateSystem;\n var dimensions = coordSys.dimensions;\n var seriesScope = makeSeriesScope(seriesModel);\n\n for (var dataIndex = taskParams.start; dataIndex < taskParams.end; dataIndex++) {\n var line = addEl(data, this._dataGroup, dataIndex, dimensions, coordSys);\n line.incremental = true;\n updateElCommon(line, data, dataIndex, seriesScope);\n }\n },\n dispose: function () {},\n // _renderForProgressive: function (seriesModel) {\n // var dataGroup = this._dataGroup;\n // var data = seriesModel.getData();\n // var oldData = this._data;\n // var coordSys = seriesModel.coordinateSystem;\n // var dimensions = coordSys.dimensions;\n // var option = seriesModel.option;\n // var progressive = option.progressive;\n // var smooth = option.smooth ? SMOOTH : null;\n // // In progressive animation is disabled, so use simple data diff,\n // // which effects performance less.\n // // (Typically performance for data with length 7000+ like:\n // // simpleDiff: 60ms, addEl: 184ms,\n // // in RMBP 2.4GHz intel i7, OSX 10.9 chrome 50.0.2661.102 (64-bit))\n // if (simpleDiff(oldData, data, dimensions)) {\n // dataGroup.removeAll();\n // data.each(function (dataIndex) {\n // addEl(data, dataGroup, dataIndex, dimensions, coordSys);\n // });\n // }\n // updateElCommon(data, progressive, smooth);\n // // Consider switch between progressive and not.\n // data.__plProgressive = true;\n // this._data = data;\n // },\n\n /**\n * @override\n */\n remove: function () {\n this._dataGroup && this._dataGroup.removeAll();\n this._data = null;\n }\n});\n\nfunction createGridClipShape(coordSys, seriesModel, cb) {\n var parallelModel = coordSys.model;\n var rect = coordSys.getRect();\n var rectEl = new graphic.Rect({\n shape: {\n x: rect.x,\n y: rect.y,\n width: rect.width,\n height: rect.height\n }\n });\n var dim = parallelModel.get('layout') === 'horizontal' ? 'width' : 'height';\n rectEl.setShape(dim, 0);\n graphic.initProps(rectEl, {\n shape: {\n width: rect.width,\n height: rect.height\n }\n }, seriesModel, cb);\n return rectEl;\n}\n\nfunction createLinePoints(data, dataIndex, dimensions, coordSys) {\n var points = [];\n\n for (var i = 0; i < dimensions.length; i++) {\n var dimName = dimensions[i];\n var value = data.get(data.mapDimension(dimName), dataIndex);\n\n if (!isEmptyValue(value, coordSys.getAxis(dimName).type)) {\n points.push(coordSys.dataToPoint(value, dimName));\n }\n }\n\n return points;\n}\n\nfunction addEl(data, dataGroup, dataIndex, dimensions, coordSys) {\n var points = createLinePoints(data, dataIndex, dimensions, coordSys);\n var line = new graphic.Polyline({\n shape: {\n points: points\n },\n silent: true,\n z2: 10\n });\n dataGroup.add(line);\n data.setItemGraphicEl(dataIndex, line);\n return line;\n}\n\nfunction makeSeriesScope(seriesModel) {\n var smooth = seriesModel.get('smooth', true);\n smooth === true && (smooth = DEFAULT_SMOOTH);\n return {\n lineStyle: seriesModel.getModel('lineStyle').getLineStyle(),\n smooth: smooth != null ? smooth : DEFAULT_SMOOTH\n };\n}\n\nfunction updateElCommon(el, data, dataIndex, seriesScope) {\n var lineStyle = seriesScope.lineStyle;\n\n if (data.hasItemOption) {\n var lineStyleModel = data.getItemModel(dataIndex).getModel('lineStyle');\n lineStyle = lineStyleModel.getLineStyle();\n }\n\n el.useStyle(lineStyle);\n var elStyle = el.style;\n elStyle.fill = null; // lineStyle.color have been set to itemVisual in module:echarts/visual/seriesColor.\n\n elStyle.stroke = data.getItemVisual(dataIndex, 'color'); // lineStyle.opacity have been set to itemVisual in parallelVisual.\n\n elStyle.opacity = data.getItemVisual(dataIndex, 'opacity');\n seriesScope.smooth && (el.shape.smooth = seriesScope.smooth);\n} // function simpleDiff(oldData, newData, dimensions) {\n// var oldLen;\n// if (!oldData\n// || !oldData.__plProgressive\n// || (oldLen = oldData.count()) !== newData.count()\n// ) {\n// return true;\n// }\n// var dimLen = dimensions.length;\n// for (var i = 0; i < oldLen; i++) {\n// for (var j = 0; j < dimLen; j++) {\n// if (oldData.get(dimensions[j], i) !== newData.get(dimensions[j], i)) {\n// return true;\n// }\n// }\n// }\n// return false;\n// }\n// FIXME\n// 公用方法?\n\n\nfunction isEmptyValue(val, axisType) {\n return axisType === 'category' ? val == null : val == null || isNaN(val); // axisType === 'value'\n}\n\nvar _default = ParallelView;\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 opacityAccessPath = ['lineStyle', 'normal', 'opacity'];\nvar _default = {\n seriesType: 'parallel',\n reset: function (seriesModel, ecModel, api) {\n var itemStyleModel = seriesModel.getModel('itemStyle');\n var lineStyleModel = seriesModel.getModel('lineStyle');\n var globalColors = ecModel.get('color');\n var color = lineStyleModel.get('color') || itemStyleModel.get('color') || globalColors[seriesModel.seriesIndex % globalColors.length];\n var inactiveOpacity = seriesModel.get('inactiveOpacity');\n var activeOpacity = seriesModel.get('activeOpacity');\n var lineStyle = seriesModel.getModel('lineStyle').getLineStyle();\n var coordSys = seriesModel.coordinateSystem;\n var data = seriesModel.getData();\n var opacityMap = {\n normal: lineStyle.opacity,\n active: activeOpacity,\n inactive: inactiveOpacity\n };\n data.setVisual('color', color);\n\n function progress(params, data) {\n coordSys.eachActiveState(data, function (activeState, dataIndex) {\n var opacity = opacityMap[activeState];\n\n if (activeState === 'normal' && data.hasItemOption) {\n var itemOpacity = data.getItemModel(dataIndex).get(opacityAccessPath, true);\n itemOpacity != null && (opacity = itemOpacity);\n }\n\n data.setItemVisual(dataIndex, 'opacity', opacity);\n }, params.start, params.end);\n }\n\n return {\n progress: progress\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\nvar zrUtil = require(\"zrender/lib/core/util\");\n\nrequire(\"../coord/cartesian/Grid\");\n\nrequire(\"./bar/PictorialBarSeries\");\n\nrequire(\"./bar/PictorialBarView\");\n\nvar _barGrid = require(\"../layout/barGrid\");\n\nvar layout = _barGrid.layout;\n\nvar visualSymbol = require(\"../visual/symbol\");\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(zrUtil.curry(layout, 'pictorialBar'));\necharts.registerVisual(visualSymbol('pictorialBar', 'roundRect'));","\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 createListSimply = require(\"../helper/createListSimply\");\n\nvar zrUtil = require(\"zrender/lib/core/util\");\n\nvar modelUtil = require(\"../../util/model\");\n\nvar _number = require(\"../../util/number\");\n\nvar getPercentWithPrecision = _number.getPercentWithPrecision;\n\nvar dataSelectableMixin = require(\"../../component/helper/selectableMixin\");\n\nvar _dataProvider = require(\"../../data/helper/dataProvider\");\n\nvar retrieveRawAttr = _dataProvider.retrieveRawAttr;\n\nvar _sourceHelper = require(\"../../data/helper/sourceHelper\");\n\nvar makeSeriesEncodeForNameBased = _sourceHelper.makeSeriesEncodeForNameBased;\n\nvar LegendVisualProvider = require(\"../../visual/LegendVisualProvider\");\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 PieSeries = echarts.extendSeriesModel({\n type: 'series.pie',\n // Overwrite\n init: function (option) {\n PieSeries.superApply(this, 'init', arguments); // Enable legend selection for each data item\n // Use a function instead of direct access because data reference may changed\n\n this.legendVisualProvider = new LegendVisualProvider(zrUtil.bind(this.getData, this), zrUtil.bind(this.getRawData, this));\n this.updateSelectedMap(this._createSelectableList());\n\n this._defaultLabelLine(option);\n },\n // Overwrite\n mergeOption: function (newOption) {\n PieSeries.superCall(this, 'mergeOption', newOption);\n this.updateSelectedMap(this._createSelectableList());\n },\n getInitialData: function (option, ecModel) {\n return createListSimply(this, {\n coordDimensions: ['value'],\n encodeDefaulter: zrUtil.curry(makeSeriesEncodeForNameBased, this)\n });\n },\n _createSelectableList: function () {\n var data = this.getRawData();\n var valueDim = data.mapDimension('value');\n var targetList = [];\n\n for (var i = 0, len = data.count(); i < len; i++) {\n targetList.push({\n name: data.getName(i),\n value: data.get(valueDim, i),\n selected: retrieveRawAttr(data, i, 'selected')\n });\n }\n\n return targetList;\n },\n // Overwrite\n getDataParams: function (dataIndex) {\n var data = this.getData();\n var params = PieSeries.superCall(this, 'getDataParams', dataIndex); // FIXME toFixed?\n\n var valueList = [];\n data.each(data.mapDimension('value'), function (value) {\n valueList.push(value);\n });\n params.percent = getPercentWithPrecision(valueList, dataIndex, data.hostModel.get('percentPrecision'));\n params.$vars.push('percent');\n return params;\n },\n _defaultLabelLine: function (option) {\n // Extend labelLine emphasis\n modelUtil.defaultEmphasis(option, 'labelLine', ['show']);\n var labelLineNormalOpt = option.labelLine;\n var labelLineEmphasisOpt = option.emphasis.labelLine; // Not show label line if `label.normal.show = false`\n\n labelLineNormalOpt.show = labelLineNormalOpt.show && option.label.show;\n labelLineEmphasisOpt.show = labelLineEmphasisOpt.show && option.emphasis.label.show;\n },\n defaultOption: {\n zlevel: 0,\n z: 2,\n legendHoverLink: true,\n hoverAnimation: true,\n // 默认全局居中\n center: ['50%', '50%'],\n radius: [0, '75%'],\n // 默认顺时针\n clockwise: true,\n startAngle: 90,\n // 最小角度改为0\n minAngle: 0,\n // If the angle of a sector less than `minShowLabelAngle`,\n // the label will not be displayed.\n minShowLabelAngle: 0,\n // 选中时扇区偏移量\n selectedOffset: 10,\n // 高亮扇区偏移量\n hoverOffset: 10,\n // If use strategy to avoid label overlapping\n avoidLabelOverlap: true,\n // 选择模式,默认关闭,可选single,multiple\n // selectedMode: false,\n // 南丁格尔玫瑰图模式,'radius'(半径) | 'area'(面积)\n // roseType: null,\n percentPrecision: 2,\n // If still show when all data zero.\n stillShowZeroSum: true,\n // cursor: null,\n left: 0,\n top: 0,\n right: 0,\n bottom: 0,\n width: null,\n height: null,\n label: {\n // If rotate around circle\n rotate: false,\n show: true,\n // 'outer', 'inside', 'center'\n position: 'outer',\n // 'none', 'labelLine', 'edge'. Works only when position is 'outer'\n alignTo: 'none',\n // Closest distance between label and chart edge.\n // Works only position is 'outer' and alignTo is 'edge'.\n margin: '25%',\n // Works only position is 'outer' and alignTo is not 'edge'.\n bleedMargin: 10,\n // Distance between text and label line.\n distanceToLabelLine: 5 // formatter: 标签文本格式器,同Tooltip.formatter,不支持异步回调\n // 默认使用全局文本样式,详见TEXTSTYLE\n // distance: 当position为inner时有效,为label位置到圆心的距离与圆半径(环状图为内外半径和)的比例系数\n\n },\n // Enabled when label.normal.position is 'outer'\n labelLine: {\n show: true,\n // 引导线两段中的第一段长度\n length: 15,\n // 引导线两段中的第二段长度\n length2: 15,\n smooth: false,\n lineStyle: {\n // color: 各异,\n width: 1,\n type: 'solid'\n }\n },\n itemStyle: {\n borderWidth: 1\n },\n // Animation type. Valid values: expansion, scale\n animationType: 'expansion',\n // Animation type when update. Valid values: transition, expansion\n animationTypeUpdate: 'transition',\n animationEasing: 'cubicOut'\n }\n});\nzrUtil.mixin(PieSeries, dataSelectableMixin);\nvar _default = PieSeries;\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 ChartView = require(\"../../view/Chart\");\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 * @param {module:echarts/model/Series} seriesModel\n * @param {boolean} hasAnimation\n * @inner\n */\nfunction updateDataSelected(uid, seriesModel, hasAnimation, api) {\n var data = seriesModel.getData();\n var dataIndex = this.dataIndex;\n var name = data.getName(dataIndex);\n var selectedOffset = seriesModel.get('selectedOffset');\n api.dispatchAction({\n type: 'pieToggleSelect',\n from: uid,\n name: name,\n seriesId: seriesModel.id\n });\n data.each(function (idx) {\n toggleItemSelected(data.getItemGraphicEl(idx), data.getItemLayout(idx), seriesModel.isSelected(data.getName(idx)), selectedOffset, hasAnimation);\n });\n}\n/**\n * @param {module:zrender/graphic/Sector} el\n * @param {Object} layout\n * @param {boolean} isSelected\n * @param {number} selectedOffset\n * @param {boolean} hasAnimation\n * @inner\n */\n\n\nfunction toggleItemSelected(el, layout, isSelected, selectedOffset, hasAnimation) {\n var midAngle = (layout.startAngle + layout.endAngle) / 2;\n var dx = Math.cos(midAngle);\n var dy = Math.sin(midAngle);\n var offset = isSelected ? selectedOffset : 0;\n var position = [dx * offset, dy * offset];\n hasAnimation // animateTo will stop revious animation like update transition\n ? el.animate().when(200, {\n position: position\n }).start('bounceOut') : el.attr('position', position);\n}\n/**\n * Piece of pie including Sector, Label, LabelLine\n * @constructor\n * @extends {module:zrender/graphic/Group}\n */\n\n\nfunction PiePiece(data, idx) {\n graphic.Group.call(this);\n var sector = new graphic.Sector({\n z2: 2\n });\n var polyline = new graphic.Polyline();\n var text = new graphic.Text();\n this.add(sector);\n this.add(polyline);\n this.add(text);\n this.updateData(data, idx, true);\n}\n\nvar piePieceProto = PiePiece.prototype;\n\npiePieceProto.updateData = function (data, idx, firstCreate) {\n var sector = this.childAt(0);\n var labelLine = this.childAt(1);\n var labelText = this.childAt(2);\n var seriesModel = data.hostModel;\n var itemModel = data.getItemModel(idx);\n var layout = data.getItemLayout(idx);\n var sectorShape = zrUtil.extend({}, layout);\n sectorShape.label = null;\n var animationTypeUpdate = seriesModel.getShallow('animationTypeUpdate');\n\n if (firstCreate) {\n sector.setShape(sectorShape);\n var animationType = seriesModel.getShallow('animationType');\n\n if (animationType === 'scale') {\n sector.shape.r = layout.r0;\n graphic.initProps(sector, {\n shape: {\n r: layout.r\n }\n }, seriesModel, idx);\n } // Expansion\n else {\n sector.shape.endAngle = layout.startAngle;\n graphic.updateProps(sector, {\n shape: {\n endAngle: layout.endAngle\n }\n }, seriesModel, idx);\n }\n } else {\n if (animationTypeUpdate === 'expansion') {\n // Sectors are set to be target shape and an overlaying clipPath is used for animation\n sector.setShape(sectorShape);\n } else {\n // Transition animation from the old shape\n graphic.updateProps(sector, {\n shape: sectorShape\n }, seriesModel, idx);\n }\n } // Update common style\n\n\n var visualColor = data.getItemVisual(idx, 'color');\n sector.useStyle(zrUtil.defaults({\n lineJoin: 'bevel',\n fill: visualColor\n }, itemModel.getModel('itemStyle').getItemStyle()));\n sector.hoverStyle = itemModel.getModel('emphasis.itemStyle').getItemStyle();\n var cursorStyle = itemModel.getShallow('cursor');\n cursorStyle && sector.attr('cursor', cursorStyle); // Toggle selected\n\n toggleItemSelected(this, data.getItemLayout(idx), seriesModel.isSelected(data.getName(idx)), seriesModel.get('selectedOffset'), seriesModel.get('animation')); // Label and text animation should be applied only for transition type animation when update\n\n var withAnimation = !firstCreate && animationTypeUpdate === 'transition';\n\n this._updateLabel(data, idx, withAnimation);\n\n this.highDownOnUpdate = !seriesModel.get('silent') ? function (fromState, toState) {\n var hasAnimation = seriesModel.isAnimationEnabled() && itemModel.get('hoverAnimation');\n\n if (toState === 'emphasis') {\n labelLine.ignore = labelLine.hoverIgnore;\n labelText.ignore = labelText.hoverIgnore; // Sector may has animation of updating data. Force to move to the last frame\n // Or it may stopped on the wrong shape\n\n if (hasAnimation) {\n sector.stopAnimation(true);\n sector.animateTo({\n shape: {\n r: layout.r + seriesModel.get('hoverOffset')\n }\n }, 300, 'elasticOut');\n }\n } else {\n labelLine.ignore = labelLine.normalIgnore;\n labelText.ignore = labelText.normalIgnore;\n\n if (hasAnimation) {\n sector.stopAnimation(true);\n sector.animateTo({\n shape: {\n r: layout.r\n }\n }, 300, 'elasticOut');\n }\n }\n } : null;\n graphic.setHoverStyle(this);\n};\n\npiePieceProto._updateLabel = function (data, idx, withAnimation) {\n var labelLine = this.childAt(1);\n var labelText = this.childAt(2);\n var seriesModel = data.hostModel;\n var itemModel = data.getItemModel(idx);\n var layout = data.getItemLayout(idx);\n var labelLayout = layout.label;\n var visualColor = data.getItemVisual(idx, 'color');\n\n if (!labelLayout || isNaN(labelLayout.x) || isNaN(labelLayout.y)) {\n labelText.ignore = labelText.normalIgnore = labelText.hoverIgnore = labelLine.ignore = labelLine.normalIgnore = labelLine.hoverIgnore = true;\n return;\n }\n\n var targetLineShape = {\n points: labelLayout.linePoints || [[labelLayout.x, labelLayout.y], [labelLayout.x, labelLayout.y], [labelLayout.x, labelLayout.y]]\n };\n var targetTextStyle = {\n x: labelLayout.x,\n y: labelLayout.y\n };\n\n if (withAnimation) {\n graphic.updateProps(labelLine, {\n shape: targetLineShape\n }, seriesModel, idx);\n graphic.updateProps(labelText, {\n style: targetTextStyle\n }, seriesModel, idx);\n } else {\n labelLine.attr({\n shape: targetLineShape\n });\n labelText.attr({\n style: targetTextStyle\n });\n }\n\n labelText.attr({\n rotation: labelLayout.rotation,\n origin: [labelLayout.x, labelLayout.y],\n z2: 10\n });\n var labelModel = itemModel.getModel('label');\n var labelHoverModel = itemModel.getModel('emphasis.label');\n var labelLineModel = itemModel.getModel('labelLine');\n var labelLineHoverModel = itemModel.getModel('emphasis.labelLine');\n var visualColor = data.getItemVisual(idx, 'color');\n graphic.setLabelStyle(labelText.style, labelText.hoverStyle = {}, labelModel, labelHoverModel, {\n labelFetcher: data.hostModel,\n labelDataIndex: idx,\n defaultText: labelLayout.text,\n autoColor: visualColor,\n useInsideStyle: !!labelLayout.inside\n }, {\n textAlign: labelLayout.textAlign,\n textVerticalAlign: labelLayout.verticalAlign,\n opacity: data.getItemVisual(idx, 'opacity')\n });\n labelText.ignore = labelText.normalIgnore = !labelModel.get('show');\n labelText.hoverIgnore = !labelHoverModel.get('show');\n labelLine.ignore = labelLine.normalIgnore = !labelLineModel.get('show');\n labelLine.hoverIgnore = !labelLineHoverModel.get('show'); // Default use item visual color\n\n labelLine.setStyle({\n stroke: visualColor,\n opacity: data.getItemVisual(idx, 'opacity')\n });\n labelLine.setStyle(labelLineModel.getModel('lineStyle').getLineStyle());\n labelLine.hoverStyle = labelLineHoverModel.getModel('lineStyle').getLineStyle();\n var smooth = labelLineModel.get('smooth');\n\n if (smooth && smooth === true) {\n smooth = 0.4;\n }\n\n labelLine.setShape({\n smooth: smooth\n });\n};\n\nzrUtil.inherits(PiePiece, graphic.Group); // Pie view\n\nvar PieView = ChartView.extend({\n type: 'pie',\n init: function () {\n var sectorGroup = new graphic.Group();\n this._sectorGroup = sectorGroup;\n },\n render: function (seriesModel, ecModel, api, payload) {\n if (payload && payload.from === this.uid) {\n return;\n }\n\n var data = seriesModel.getData();\n var oldData = this._data;\n var group = this.group;\n var hasAnimation = ecModel.get('animation');\n var isFirstRender = !oldData;\n var animationType = seriesModel.get('animationType');\n var animationTypeUpdate = seriesModel.get('animationTypeUpdate');\n var onSectorClick = zrUtil.curry(updateDataSelected, this.uid, seriesModel, hasAnimation, api);\n var selectedMode = seriesModel.get('selectedMode');\n data.diff(oldData).add(function (idx) {\n var piePiece = new PiePiece(data, idx); // Default expansion animation\n\n if (isFirstRender && animationType !== 'scale') {\n piePiece.eachChild(function (child) {\n child.stopAnimation(true);\n });\n }\n\n selectedMode && piePiece.on('click', onSectorClick);\n data.setItemGraphicEl(idx, piePiece);\n group.add(piePiece);\n }).update(function (newIdx, oldIdx) {\n var piePiece = oldData.getItemGraphicEl(oldIdx);\n\n if (!isFirstRender && animationTypeUpdate !== 'transition') {\n piePiece.eachChild(function (child) {\n child.stopAnimation(true);\n });\n }\n\n piePiece.updateData(data, newIdx);\n piePiece.off('click');\n selectedMode && piePiece.on('click', onSectorClick);\n group.add(piePiece);\n data.setItemGraphicEl(newIdx, piePiece);\n }).remove(function (idx) {\n var piePiece = oldData.getItemGraphicEl(idx);\n group.remove(piePiece);\n }).execute();\n\n if (hasAnimation && data.count() > 0 && (isFirstRender ? animationType !== 'scale' : animationTypeUpdate !== 'transition')) {\n var shape = data.getItemLayout(0);\n\n for (var s = 1; isNaN(shape.startAngle) && s < data.count(); ++s) {\n shape = data.getItemLayout(s);\n }\n\n var r = Math.max(api.getWidth(), api.getHeight()) / 2;\n var removeClipPath = zrUtil.bind(group.removeClipPath, group);\n group.setClipPath(this._createClipPath(shape.cx, shape.cy, r, shape.startAngle, shape.clockwise, removeClipPath, seriesModel, isFirstRender));\n } else {\n // clipPath is used in first-time animation, so remove it when otherwise. See: #8994\n group.removeClipPath();\n }\n\n this._data = data;\n },\n dispose: function () {},\n _createClipPath: function (cx, cy, r, startAngle, clockwise, cb, seriesModel, isFirstRender) {\n var clipPath = new graphic.Sector({\n shape: {\n cx: cx,\n cy: cy,\n r0: 0,\n r: r,\n startAngle: startAngle,\n endAngle: startAngle,\n clockwise: clockwise\n }\n });\n var initOrUpdate = isFirstRender ? graphic.initProps : graphic.updateProps;\n initOrUpdate(clipPath, {\n shape: {\n endAngle: startAngle + (clockwise ? 1 : -1) * Math.PI * 2\n }\n }, seriesModel, cb);\n return clipPath;\n },\n\n /**\n * @implement\n */\n containPoint: function (point, seriesModel) {\n var data = seriesModel.getData();\n var itemLayout = data.getItemLayout(0);\n\n if (itemLayout) {\n var dx = point[0] - itemLayout.cx;\n var dy = point[1] - itemLayout.cy;\n var radius = Math.sqrt(dx * dx + dy * dy);\n return radius <= itemLayout.r && radius >= itemLayout.r0;\n }\n }\n});\nvar _default = PieView;\nmodule.exports = _default;"],"names":["echarts","visualSymbol","layoutPoints","dataSample","registerVisual","registerLayout","registerProcessor","PRIORITY","PROCESSOR","STATISTIC","_config","createListFromArray","__DEV__","SeriesModel","_default","extend","type","dependencies","getInitialData","option","ecModel","this","getSource","useEncodeDefaulter","defaultOption","zlevel","z","coordinateSystem","legendHoverLink","hoverAnimation","clip","label","position","lineStyle","width","step","smooth","smoothMonotone","symbol","symbolSize","symbolRotate","showSymbol","showAllSymbol","connectNulls","sampling","animationEasing","progressive","hoverLayerThreshold","Infinity","module","exports","zrUtil","_bbox","fromPoints","SymbolDraw","SymbolClz","lineAnimationDiff","graphic","modelUtil","_poly","Polyline","Polygon","ChartView","_helper","prepareDataCoordInfo","getStackedOnPoint","_createClipPathFromCoordSys","createGridClipPath","createPolarClipPath","isPointsSame","points1","points2","length","i","p1","p2","getBoundingDiff","min1","max1","min2","max2","Math","max","abs","getSmooth","getStackedOnPoints","coordSys","data","dataCoordInfo","valueDim","points","idx","len","count","push","turnPointsIntoStep","stepTurnAt","baseAxis","getBaseAxis","baseIndex","dim","stepPoints","nextPt","pt","stepPt","middle","stepPt2","getVisualGradient","visualMetaList","getVisual","coordDim","visualMeta","dimIndex","dimension","dimName","dimensions","dimInfo","getDimensionInfo","axis","getAxis","colorStops","map","stops","stop","coord","toGlobalCoord","dataToCoord","value","color","stopLen","outerColors","slice","reverse","tinyExtent","minCoord","maxCoord","coordSpan","each","offset","unshift","gradient","LinearGradient","getIsIgnoreFunc","seriesModel","get","isAuto","categoryAxis","getAxesByScale","canShowAllSymbolForCategory","categoryDataDim","mapDimension","labelMap","getViewLabels","labelItem","tickValue","dataIndex","hasOwnProperty","axisExtent","getExtent","availSize","scale","isNaN","dataLen","round","getSymbolSize","isHorizontal","createLineClipPath","hasAnimation","clipPath","rectShape","shape","expandSize","height","y","x","init","lineGroup","Group","symbolDraw","group","add","_symbolDraw","_lineGroup","render","api","getData","lineStyleModel","getModel","areaStyleModel","mapArray","getItemLayout","isCoordSysPolar","prevCoordSys","_coordSys","polyline","_polyline","polygon","_polygon","isAreaChart","isEmpty","valueOrigin","stackedOnPoints","isIgnoreFunc","oldData","_data","eachItemGraphicEl","el","__temp","remove","setItemGraphicEl","clipShapeForSymbol","getArea","r0","r1","_clipShapeForSymbol","_step","_newPolygon","setClipPath","updateData","isIgnore","clipShape","stopAnimation","_stackedOnPoints","_points","_updateAnimation","setShape","_newPolyline","visualColor","useStyle","defaults","getLineStyle","fill","stroke","lineJoin","stackedOnSeries","getCalculationInfo","stackedOnSmooth","getAreaStyle","opacity","_valueOrigin","dispose","highlight","payload","queryDataIndex","Array","getItemGraphicEl","contain","setZ","ignore","stopSymbolAnimation","prototype","call","downplay","silent","z2","hostModel","diff","current","stackedOnCurrent","next","stackedOnNext","__points","updateProps","updatedDataInfo","diffStatus","status","cmd","idx1","ptIdx","animators","during","attr","removeAll","_dataStackHelper","isDimensionStacked","_util","stacked","valueAxis","getOtherAxis","valueStart","getValueStart","baseAxisDim","valueAxisDim","baseDim","baseDataOffset","dims","stackResultDim","dataDimsForPoint","stackedOverDimension","extent","NaN","stackedData","dataToPoint","diffData","newData","diffResult","update","newIdx","oldIdx","execute","oldStackedOnPoints","newStackedOnPoints","oldCoordSys","newCoordSys","oldValueOrigin","newValueOrigin","currPoints","nextPoints","currStackedPoints","nextStackedPoints","sortedIndices","rawIndices","newDataOldCoordInfo","oldDataNewCoordInfo","diffItem","pointAdded","currentPt","getRawIndex","rawIndex","sort","a","b","sortedCurrPoints","sortedNextPoints","sortedCurrStackedPoints","sortedNextStackedPoints","sortedStatus","Path","vec2","fixClipWithShadow","vec2Min","min","vec2Max","scaleAndAdd","v2Copy","copy","v","cp0","cp1","isPointNull","p","drawSegment","ctx","start","segLen","allLen","dir","smoothMin","smoothMax","drawMono","apply","arguments","drawNonMono","prevIdx","k","prevP","ctrlLen","bezierCurveTo","lineTo","nextIdx","nextP","ratioNextSeg","lenPrevSeg","lenNextSeg","sub","dist","getBoundingBox","smoothConstraint","ptMin","ptMax","style","brush","buildPath","result","bbox","stackedOnBBox","closePath","linesLayout","linesVisual","List","concatArray","mergeAll","_format","encodeHTML","Uint32Arr","Uint32Array","Float64Arr","Float64Array","compatEc2","seriesOpt","itemOpt","coords","target","name","fromName","toName","LinesSeries","visualColorAccessPath","_processFlatCoordsArray","_flatCoords","flatCoords","_flatCoordsOffset","flatCoordsOffset","Float32Array","superApply","mergeOption","appendData","params","getRawData","_getCoordsFromItemModel","itemModel","getItemModel","getShallow","getLineCoordsCount","getLineCoords","out","startOffset","coordsOffsetAndLenStorage","coordsStorage","coordsCursor","offsetCursor","dataCount","buffer","lineData","hasItemOption","initData","dataItem","formatTooltip","html","join","preventIncremental","getProgressive","large","getProgressiveThreshold","progressiveThreshold","xAxisIndex","yAxisIndex","geoIndex","effect","show","period","constantSpeed","loop","trailLength","largeThreshold","LineDraw","EffectLine","Line","EffectPolyline","LargeLineDraw","createClipPath","extendChartView","lineDraw","_updateLineDraw","zr","getZr","isSvg","painter","getType","getLayer","clear","_lastZlevel","configLayer","motionBlur","_showEffect","lastFrameAlpha","removeClipPath","_finished","incrementalPrepareRender","incrementalPrepareUpdate","_clearLayer","incrementalRender","taskParams","_lineDraw","incrementalUpdate","end","updateTransform","pipelineContext","progressiveRender","res","reset","progress","updateLayout","hasEffect","isPolyline","isLargeDraw","_hasEffet","_isPolyline","_isLargeDraw","createRenderPlanner","seriesType","plan","isLarge","lineCoords","segCount","totalCoordsCount","setLayout","pts","j","curveness","setItemLayout","normalize","opacityQuery","split","symbolType","dataEach","setItemVisual","setVisual","mapSymbolLayout","mapVisual","mapDataStatistic","backwardCompat","createDataSelectAction","registerPreprocessor","event","method","createListSimply","addCommas","dataSelectableMixin","_dataProvider","retrieveRawAttr","geoSourceManager","_sourceHelper","makeSeriesEncodeForNameBased","MapSeries","layoutMode","needsDrawMap","seriesGroup","coordDimensions","encodeDefaulter","curry","dataNameMap","createHashMap","selectTargetList","toAppendNames","getName","set","selected","geoSource","load","getMapType","nameMap","nameProperty","regions","region","updateSelectedMap","appendValues","getHostGeoModel","dependentModels","geo","getRawValue","getRegionModel","regionName","indexOfName","multipleSeries","dataType","renderMode","formattedValue","seriesNames","otherIndex","originalData","newLine","getTooltipPosition","getRegion","center","setZoom","zoom","setCenter","left","top","aspectScale","showLegendSymbol","dataRangeHoverLink","boundingCoords","scaleLimit","itemStyle","borderWidth","borderColor","areaColor","emphasis","mixin","MapDraw","HIGH_DOWN_PROP","RECORD_VERSION_PROP","mapModel","from","uid","componentType","seriesId","id","mapDraw","_mapDraw","draw","getComponent","_renderSymbols","originalDataIndex","layout","point","circle","Circle","cx","cy","r","Z2_EMPHASIS_LIFT","fullData","mainSeries","fullIndex","labelModel","hoverLabelModel","regionGroup","normalText","retrieve2","getFormattedLabel","emphasisText","highDownRecord","recordVersion","random","onEmphasis","onRegionHighDown","onNormal","on","enterRegionHighDown","toHighOrDown","extendFrom","setTextStyle","text","isRectText","useInsideStyle","__mapOriginalZ2","textPosition","dirty","mapSeries","series","mapType","mapLocation","dataStatistics","datas","statisticType","mapKey","sum","seriesGroups","eachSeriesByType","hostGeoModel","key","seriesList","setData","cloneShallow","processedMapType","mapSymbolOffsets","subMapSeries","showLabel","colorList","itemStyleModel","seriesIndex","parallelVisual","source","setEncodeAndDimensions","getRawIndicesByActiveState","activeState","indices","eachActiveState","theActiveState","parallelIndex","inactiveOpacity","activeOpacity","encodeDefine","parallelModel","axisDim","dataDimIndex","convertDimNameToNumber","replace","DEFAULT_SMOOTH","ParallelView","_dataGroup","_initialized","dataGroup","seriesScope","makeSeriesScope","newDataIndex","line","addEl","updateElCommon","oldDataIndex","createLinePoints","animationModel","animation","createGridClipShape","setTimeout","incremental","cb","model","rect","getRect","rectEl","Rect","initProps","isEmptyValue","elStyle","getItemVisual","val","axisType","opacityAccessPath","globalColors","opacityMap","normal","active","inactive","itemOpacity","_barGrid","_number","getPercentWithPrecision","LegendVisualProvider","PieSeries","extendSeriesModel","legendVisualProvider","bind","_createSelectableList","_defaultLabelLine","newOption","superCall","targetList","getDataParams","valueList","percent","$vars","defaultEmphasis","labelLineNormalOpt","labelLine","labelLineEmphasisOpt","radius","clockwise","startAngle","minAngle","minShowLabelAngle","selectedOffset","hoverOffset","avoidLabelOverlap","percentPrecision","stillShowZeroSum","right","bottom","rotate","alignTo","margin","bleedMargin","distanceToLabelLine","length2","animationType","animationTypeUpdate","updateDataSelected","dispatchAction","toggleItemSelected","isSelected","midAngle","endAngle","dx","cos","dy","sin","animate","when","PiePiece","sector","Sector","Text","piePieceProto","firstCreate","childAt","labelText","sectorShape","getItemStyle","hoverStyle","cursorStyle","withAnimation","_updateLabel","highDownOnUpdate","fromState","toState","isAnimationEnabled","hoverIgnore","animateTo","normalIgnore","setHoverStyle","labelLayout","targetLineShape","linePoints","targetTextStyle","rotation","origin","labelHoverModel","labelLineModel","labelLineHoverModel","setLabelStyle","labelFetcher","labelDataIndex","defaultText","autoColor","inside","textAlign","textVerticalAlign","verticalAlign","setStyle","inherits","PieView","sectorGroup","_sectorGroup","isFirstRender","onSectorClick","selectedMode","piePiece","eachChild","child","off","s","getWidth","getHeight","_createClipPath","initOrUpdate","PI","containPoint","itemLayout","sqrt"],"sourceRoot":""}