1 |
- {"version":3,"file":"js/chunk-vendors-b8e726d7.d6fcbbd9.js","mappings":"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","sources":["webpack://app/./node_modules/echarts/lib/data/DataDiffer.js","webpack://app/./node_modules/echarts/lib/data/DataDimensionInfo.js","webpack://app/./node_modules/echarts/lib/data/Graph.js","webpack://app/./node_modules/echarts/lib/data/List.js","webpack://app/./node_modules/echarts/lib/data/OrdinalMeta.js","webpack://app/./node_modules/echarts/lib/data/Source.js","webpack://app/./node_modules/echarts/lib/data/Tree.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\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 defaultKeyGetter(item) {\n return item;\n}\n/**\n * @param {Array} oldArr\n * @param {Array} newArr\n * @param {Function} oldKeyGetter\n * @param {Function} newKeyGetter\n * @param {Object} [context] Can be visited by this.context in callback.\n */\n\n\nfunction DataDiffer(oldArr, newArr, oldKeyGetter, newKeyGetter, context) {\n this._old = oldArr;\n this._new = newArr;\n this._oldKeyGetter = oldKeyGetter || defaultKeyGetter;\n this._newKeyGetter = newKeyGetter || defaultKeyGetter;\n this.context = context;\n}\n\nDataDiffer.prototype = {\n constructor: DataDiffer,\n\n /**\n * Callback function when add a data\n */\n add: function (func) {\n this._add = func;\n return this;\n },\n\n /**\n * Callback function when update a data\n */\n update: function (func) {\n this._update = func;\n return this;\n },\n\n /**\n * Callback function when remove a data\n */\n remove: function (func) {\n this._remove = func;\n return this;\n },\n execute: function () {\n var oldArr = this._old;\n var newArr = this._new;\n var oldDataIndexMap = {};\n var newDataIndexMap = {};\n var oldDataKeyArr = [];\n var newDataKeyArr = [];\n var i;\n initIndexMap(oldArr, oldDataIndexMap, oldDataKeyArr, '_oldKeyGetter', this);\n initIndexMap(newArr, newDataIndexMap, newDataKeyArr, '_newKeyGetter', this);\n\n for (i = 0; i < oldArr.length; i++) {\n var key = oldDataKeyArr[i];\n var idx = newDataIndexMap[key]; // idx can never be empty array here. see 'set null' logic below.\n\n if (idx != null) {\n // Consider there is duplicate key (for example, use dataItem.name as key).\n // We should make sure every item in newArr and oldArr can be visited.\n var len = idx.length;\n\n if (len) {\n len === 1 && (newDataIndexMap[key] = null);\n idx = idx.shift();\n } else {\n newDataIndexMap[key] = null;\n }\n\n this._update && this._update(idx, i);\n } else {\n this._remove && this._remove(i);\n }\n }\n\n for (var i = 0; i < newDataKeyArr.length; i++) {\n var key = newDataKeyArr[i];\n\n if (newDataIndexMap.hasOwnProperty(key)) {\n var idx = newDataIndexMap[key];\n\n if (idx == null) {\n continue;\n } // idx can never be empty array here. see 'set null' logic above.\n\n\n if (!idx.length) {\n this._add && this._add(idx);\n } else {\n for (var j = 0, len = idx.length; j < len; j++) {\n this._add && this._add(idx[j]);\n }\n }\n }\n }\n }\n};\n\nfunction initIndexMap(arr, map, keyArr, keyGetterName, dataDiffer) {\n for (var i = 0; i < arr.length; i++) {\n // Add prefix to avoid conflict with Object.prototype.\n var key = '_ec_' + dataDiffer[keyGetterName](arr[i], i);\n var existence = map[key];\n\n if (existence == null) {\n keyArr.push(key);\n map[key] = i;\n } else {\n if (!existence.length) {\n map[key] = existence = [existence];\n }\n\n existence.push(i);\n }\n }\n}\n\nvar _default = DataDiffer;\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\n/**\n * @class\n * @param {Object|DataDimensionInfo} [opt] All of the fields will be shallow copied.\n */\nfunction DataDimensionInfo(opt) {\n if (opt != null) {\n zrUtil.extend(this, opt);\n }\n /**\n * Dimension name.\n * Mandatory.\n * @type {string}\n */\n // this.name;\n\n /**\n * The origin name in dimsDef, see source helper.\n * If displayName given, the tooltip will displayed vertically.\n * Optional.\n * @type {string}\n */\n // this.displayName;\n\n /**\n * Which coordSys dimension this dimension mapped to.\n * A `coordDim` can be a \"coordSysDim\" that the coordSys required\n * (for example, an item in `coordSysDims` of `model/referHelper#CoordSysInfo`),\n * or an generated \"extra coord name\" if does not mapped to any \"coordSysDim\"\n * (That is determined by whether `isExtraCoord` is `true`).\n * Mandatory.\n * @type {string}\n */\n // this.coordDim;\n\n /**\n * The index of this dimension in `series.encode[coordDim]`.\n * Mandatory.\n * @type {number}\n */\n // this.coordDimIndex;\n\n /**\n * Dimension type. The enumerable values are the key of\n * `dataCtors` of `data/List`.\n * Optional.\n * @type {string}\n */\n // this.type;\n\n /**\n * This index of this dimension info in `data/List#_dimensionInfos`.\n * Mandatory after added to `data/List`.\n * @type {number}\n */\n // this.index;\n\n /**\n * The format of `otherDims` is:\n * ```js\n * {\n * tooltip: number optional,\n * label: number optional,\n * itemName: number optional,\n * seriesName: number optional,\n * }\n * ```\n *\n * A `series.encode` can specified these fields:\n * ```js\n * encode: {\n * // \"3, 1, 5\" is the index of data dimension.\n * tooltip: [3, 1, 5],\n * label: [0, 3],\n * ...\n * }\n * ```\n * `otherDims` is the parse result of the `series.encode` above, like:\n * ```js\n * // Suppose the index of this data dimension is `3`.\n * this.otherDims = {\n * // `3` is at the index `0` of the `encode.tooltip`\n * tooltip: 0,\n * // `3` is at the index `1` of the `encode.tooltip`\n * label: 1\n * };\n * ```\n *\n * This prop should never be `null`/`undefined` after initialized.\n * @type {Object}\n */\n\n\n this.otherDims = {};\n /**\n * Be `true` if this dimension is not mapped to any \"coordSysDim\" that the\n * \"coordSys\" required.\n * Mandatory.\n * @type {boolean}\n */\n // this.isExtraCoord;\n\n /**\n * @type {module:data/OrdinalMeta}\n */\n // this.ordinalMeta;\n\n /**\n * Whether to create inverted indices.\n * @type {boolean}\n */\n // this.createInvertedIndices;\n}\n\n;\nvar _default = DataDimensionInfo;\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 _clazz = require(\"../util/clazz\");\n\nvar enableClassCheck = _clazz.enableClassCheck;\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// id may be function name of Object, add a prefix to avoid this problem.\nfunction generateNodeKey(id) {\n return '_EC_' + id;\n}\n/**\n * @alias module:echarts/data/Graph\n * @constructor\n * @param {boolean} directed\n */\n\n\nvar Graph = function (directed) {\n /**\n * 是否是有向图\n * @type {boolean}\n * @private\n */\n this._directed = directed || false;\n /**\n * @type {Array.<module:echarts/data/Graph.Node>}\n * @readOnly\n */\n\n this.nodes = [];\n /**\n * @type {Array.<module:echarts/data/Graph.Edge>}\n * @readOnly\n */\n\n this.edges = [];\n /**\n * @type {Object.<string, module:echarts/data/Graph.Node>}\n * @private\n */\n\n this._nodesMap = {};\n /**\n * @type {Object.<string, module:echarts/data/Graph.Edge>}\n * @private\n */\n\n this._edgesMap = {};\n /**\n * @type {module:echarts/data/List}\n * @readOnly\n */\n\n this.data;\n /**\n * @type {module:echarts/data/List}\n * @readOnly\n */\n\n this.edgeData;\n};\n\nvar graphProto = Graph.prototype;\n/**\n * @type {string}\n */\n\ngraphProto.type = 'graph';\n/**\n * If is directed graph\n * @return {boolean}\n */\n\ngraphProto.isDirected = function () {\n return this._directed;\n};\n/**\n * Add a new node\n * @param {string} id\n * @param {number} [dataIndex]\n */\n\n\ngraphProto.addNode = function (id, dataIndex) {\n id = id == null ? '' + dataIndex : '' + id;\n var nodesMap = this._nodesMap;\n\n if (nodesMap[generateNodeKey(id)]) {\n return;\n }\n\n var node = new Node(id, dataIndex);\n node.hostGraph = this;\n this.nodes.push(node);\n nodesMap[generateNodeKey(id)] = node;\n return node;\n};\n/**\n * Get node by data index\n * @param {number} dataIndex\n * @return {module:echarts/data/Graph~Node}\n */\n\n\ngraphProto.getNodeByIndex = function (dataIndex) {\n var rawIdx = this.data.getRawIndex(dataIndex);\n return this.nodes[rawIdx];\n};\n/**\n * Get node by id\n * @param {string} id\n * @return {module:echarts/data/Graph.Node}\n */\n\n\ngraphProto.getNodeById = function (id) {\n return this._nodesMap[generateNodeKey(id)];\n};\n/**\n * Add a new edge\n * @param {number|string|module:echarts/data/Graph.Node} n1\n * @param {number|string|module:echarts/data/Graph.Node} n2\n * @param {number} [dataIndex=-1]\n * @return {module:echarts/data/Graph.Edge}\n */\n\n\ngraphProto.addEdge = function (n1, n2, dataIndex) {\n var nodesMap = this._nodesMap;\n var edgesMap = this._edgesMap; // PNEDING\n\n if (typeof n1 === 'number') {\n n1 = this.nodes[n1];\n }\n\n if (typeof n2 === 'number') {\n n2 = this.nodes[n2];\n }\n\n if (!Node.isInstance(n1)) {\n n1 = nodesMap[generateNodeKey(n1)];\n }\n\n if (!Node.isInstance(n2)) {\n n2 = nodesMap[generateNodeKey(n2)];\n }\n\n if (!n1 || !n2) {\n return;\n }\n\n var key = n1.id + '-' + n2.id; // PENDING\n\n if (edgesMap[key]) {\n return;\n }\n\n var edge = new Edge(n1, n2, dataIndex);\n edge.hostGraph = this;\n\n if (this._directed) {\n n1.outEdges.push(edge);\n n2.inEdges.push(edge);\n }\n\n n1.edges.push(edge);\n\n if (n1 !== n2) {\n n2.edges.push(edge);\n }\n\n this.edges.push(edge);\n edgesMap[key] = edge;\n return edge;\n};\n/**\n * Get edge by data index\n * @param {number} dataIndex\n * @return {module:echarts/data/Graph~Node}\n */\n\n\ngraphProto.getEdgeByIndex = function (dataIndex) {\n var rawIdx = this.edgeData.getRawIndex(dataIndex);\n return this.edges[rawIdx];\n};\n/**\n * Get edge by two linked nodes\n * @param {module:echarts/data/Graph.Node|string} n1\n * @param {module:echarts/data/Graph.Node|string} n2\n * @return {module:echarts/data/Graph.Edge}\n */\n\n\ngraphProto.getEdge = function (n1, n2) {\n if (Node.isInstance(n1)) {\n n1 = n1.id;\n }\n\n if (Node.isInstance(n2)) {\n n2 = n2.id;\n }\n\n var edgesMap = this._edgesMap;\n\n if (this._directed) {\n return edgesMap[n1 + '-' + n2];\n } else {\n return edgesMap[n1 + '-' + n2] || edgesMap[n2 + '-' + n1];\n }\n};\n/**\n * Iterate all nodes\n * @param {Function} cb\n * @param {*} [context]\n */\n\n\ngraphProto.eachNode = function (cb, context) {\n var nodes = this.nodes;\n var len = nodes.length;\n\n for (var i = 0; i < len; i++) {\n if (nodes[i].dataIndex >= 0) {\n cb.call(context, nodes[i], i);\n }\n }\n};\n/**\n * Iterate all edges\n * @param {Function} cb\n * @param {*} [context]\n */\n\n\ngraphProto.eachEdge = function (cb, context) {\n var edges = this.edges;\n var len = edges.length;\n\n for (var i = 0; i < len; i++) {\n if (edges[i].dataIndex >= 0 && edges[i].node1.dataIndex >= 0 && edges[i].node2.dataIndex >= 0) {\n cb.call(context, edges[i], i);\n }\n }\n};\n/**\n * Breadth first traverse\n * @param {Function} cb\n * @param {module:echarts/data/Graph.Node} startNode\n * @param {string} [direction='none'] 'none'|'in'|'out'\n * @param {*} [context]\n */\n\n\ngraphProto.breadthFirstTraverse = function (cb, startNode, direction, context) {\n if (!Node.isInstance(startNode)) {\n startNode = this._nodesMap[generateNodeKey(startNode)];\n }\n\n if (!startNode) {\n return;\n }\n\n var edgeType = direction === 'out' ? 'outEdges' : direction === 'in' ? 'inEdges' : 'edges';\n\n for (var i = 0; i < this.nodes.length; i++) {\n this.nodes[i].__visited = false;\n }\n\n if (cb.call(context, startNode, null)) {\n return;\n }\n\n var queue = [startNode];\n\n while (queue.length) {\n var currentNode = queue.shift();\n var edges = currentNode[edgeType];\n\n for (var i = 0; i < edges.length; i++) {\n var e = edges[i];\n var otherNode = e.node1 === currentNode ? e.node2 : e.node1;\n\n if (!otherNode.__visited) {\n if (cb.call(context, otherNode, currentNode)) {\n // Stop traversing\n return;\n }\n\n queue.push(otherNode);\n otherNode.__visited = true;\n }\n }\n }\n}; // TODO\n// graphProto.depthFirstTraverse = function (\n// cb, startNode, direction, context\n// ) {\n// };\n// Filter update\n\n\ngraphProto.update = function () {\n var data = this.data;\n var edgeData = this.edgeData;\n var nodes = this.nodes;\n var edges = this.edges;\n\n for (var i = 0, len = nodes.length; i < len; i++) {\n nodes[i].dataIndex = -1;\n }\n\n for (var i = 0, len = data.count(); i < len; i++) {\n nodes[data.getRawIndex(i)].dataIndex = i;\n }\n\n edgeData.filterSelf(function (idx) {\n var edge = edges[edgeData.getRawIndex(idx)];\n return edge.node1.dataIndex >= 0 && edge.node2.dataIndex >= 0;\n }); // Update edge\n\n for (var i = 0, len = edges.length; i < len; i++) {\n edges[i].dataIndex = -1;\n }\n\n for (var i = 0, len = edgeData.count(); i < len; i++) {\n edges[edgeData.getRawIndex(i)].dataIndex = i;\n }\n};\n/**\n * @return {module:echarts/data/Graph}\n */\n\n\ngraphProto.clone = function () {\n var graph = new Graph(this._directed);\n var nodes = this.nodes;\n var edges = this.edges;\n\n for (var i = 0; i < nodes.length; i++) {\n graph.addNode(nodes[i].id, nodes[i].dataIndex);\n }\n\n for (var i = 0; i < edges.length; i++) {\n var e = edges[i];\n graph.addEdge(e.node1.id, e.node2.id, e.dataIndex);\n }\n\n return graph;\n};\n/**\n * @alias module:echarts/data/Graph.Node\n */\n\n\nfunction Node(id, dataIndex) {\n /**\n * @type {string}\n */\n this.id = id == null ? '' : id;\n /**\n * @type {Array.<module:echarts/data/Graph.Edge>}\n */\n\n this.inEdges = [];\n /**\n * @type {Array.<module:echarts/data/Graph.Edge>}\n */\n\n this.outEdges = [];\n /**\n * @type {Array.<module:echarts/data/Graph.Edge>}\n */\n\n this.edges = [];\n /**\n * @type {module:echarts/data/Graph}\n */\n\n this.hostGraph;\n /**\n * @type {number}\n */\n\n this.dataIndex = dataIndex == null ? -1 : dataIndex;\n}\n\nNode.prototype = {\n constructor: Node,\n\n /**\n * @return {number}\n */\n degree: function () {\n return this.edges.length;\n },\n\n /**\n * @return {number}\n */\n inDegree: function () {\n return this.inEdges.length;\n },\n\n /**\n * @return {number}\n */\n outDegree: function () {\n return this.outEdges.length;\n },\n\n /**\n * @param {string} [path]\n * @return {module:echarts/model/Model}\n */\n getModel: function (path) {\n if (this.dataIndex < 0) {\n return;\n }\n\n var graph = this.hostGraph;\n var itemModel = graph.data.getItemModel(this.dataIndex);\n return itemModel.getModel(path);\n }\n};\n/**\n * 图边\n * @alias module:echarts/data/Graph.Edge\n * @param {module:echarts/data/Graph.Node} n1\n * @param {module:echarts/data/Graph.Node} n2\n * @param {number} [dataIndex=-1]\n */\n\nfunction Edge(n1, n2, dataIndex) {\n /**\n * 节点1,如果是有向图则为源节点\n * @type {module:echarts/data/Graph.Node}\n */\n this.node1 = n1;\n /**\n * 节点2,如果是有向图则为目标节点\n * @type {module:echarts/data/Graph.Node}\n */\n\n this.node2 = n2;\n this.dataIndex = dataIndex == null ? -1 : dataIndex;\n}\n/**\n * @param {string} [path]\n * @return {module:echarts/model/Model}\n */\n\n\nEdge.prototype.getModel = function (path) {\n if (this.dataIndex < 0) {\n return;\n }\n\n var graph = this.hostGraph;\n var itemModel = graph.edgeData.getItemModel(this.dataIndex);\n return itemModel.getModel(path);\n};\n\nvar createGraphDataProxyMixin = function (hostName, dataName) {\n return {\n /**\n * @param {string=} [dimension='value'] Default 'value'. can be 'a', 'b', 'c', 'd', 'e'.\n * @return {number}\n */\n getValue: function (dimension) {\n var data = this[hostName][dataName];\n return data.get(data.getDimension(dimension || 'value'), this.dataIndex);\n },\n\n /**\n * @param {Object|string} key\n * @param {*} [value]\n */\n setVisual: function (key, value) {\n this.dataIndex >= 0 && this[hostName][dataName].setItemVisual(this.dataIndex, key, value);\n },\n\n /**\n * @param {string} key\n * @return {boolean}\n */\n getVisual: function (key, ignoreParent) {\n return this[hostName][dataName].getItemVisual(this.dataIndex, key, ignoreParent);\n },\n\n /**\n * @param {Object} layout\n * @return {boolean} [merge=false]\n */\n setLayout: function (layout, merge) {\n this.dataIndex >= 0 && this[hostName][dataName].setItemLayout(this.dataIndex, layout, merge);\n },\n\n /**\n * @return {Object}\n */\n getLayout: function () {\n return this[hostName][dataName].getItemLayout(this.dataIndex);\n },\n\n /**\n * @return {module:zrender/Element}\n */\n getGraphicEl: function () {\n return this[hostName][dataName].getItemGraphicEl(this.dataIndex);\n },\n\n /**\n * @return {number}\n */\n getRawIndex: function () {\n return this[hostName][dataName].getRawIndex(this.dataIndex);\n }\n };\n};\n\nzrUtil.mixin(Node, createGraphDataProxyMixin('hostGraph', 'data'));\nzrUtil.mixin(Edge, createGraphDataProxyMixin('hostGraph', 'edgeData'));\nGraph.Node = Node;\nGraph.Edge = Edge;\nenableClassCheck(Node);\nenableClassCheck(Edge);\nvar _default = Graph;\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 Model = require(\"../model/Model\");\n\nvar DataDiffer = require(\"./DataDiffer\");\n\nvar Source = require(\"./Source\");\n\nvar _dataProvider = require(\"./helper/dataProvider\");\n\nvar defaultDimValueGetters = _dataProvider.defaultDimValueGetters;\nvar DefaultDataProvider = _dataProvider.DefaultDataProvider;\n\nvar _dimensionHelper = require(\"./helper/dimensionHelper\");\n\nvar summarizeDimensions = _dimensionHelper.summarizeDimensions;\n\nvar DataDimensionInfo = require(\"./DataDimensionInfo\");\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 Float64Array, Int32Array, Uint32Array, Uint16Array */\n\n/**\n * List for data storage\n * @module echarts/data/List\n */\nvar isObject = zrUtil.isObject;\nvar UNDEFINED = 'undefined';\nvar INDEX_NOT_FOUND = -1; // Use prefix to avoid index to be the same as otherIdList[idx],\n// which will cause weird udpate animation.\n\nvar ID_PREFIX = 'e\\0\\0';\nvar dataCtors = {\n 'float': typeof Float64Array === UNDEFINED ? Array : Float64Array,\n 'int': typeof Int32Array === UNDEFINED ? Array : Int32Array,\n // Ordinal data type can be string or int\n 'ordinal': Array,\n 'number': Array,\n 'time': Array\n}; // Caution: MUST not use `new CtorUint32Array(arr, 0, len)`, because the Ctor of array is\n// different from the Ctor of typed array.\n\nvar CtorUint32Array = typeof Uint32Array === UNDEFINED ? Array : Uint32Array;\nvar CtorInt32Array = typeof Int32Array === UNDEFINED ? Array : Int32Array;\nvar CtorUint16Array = typeof Uint16Array === UNDEFINED ? Array : Uint16Array;\n\nfunction getIndicesCtor(list) {\n // The possible max value in this._indicies is always this._rawCount despite of filtering.\n return list._rawCount > 65535 ? CtorUint32Array : CtorUint16Array;\n}\n\nfunction cloneChunk(originalChunk) {\n var Ctor = originalChunk.constructor; // Only shallow clone is enough when Array.\n\n return Ctor === Array ? originalChunk.slice() : new Ctor(originalChunk);\n}\n\nvar TRANSFERABLE_PROPERTIES = ['hasItemOption', '_nameList', '_idList', '_invertedIndicesMap', '_rawData', '_chunkSize', '_chunkCount', '_dimValueGetter', '_count', '_rawCount', '_nameDimIdx', '_idDimIdx'];\nvar CLONE_PROPERTIES = ['_extent', '_approximateExtent', '_rawExtent'];\n\nfunction transferProperties(target, source) {\n zrUtil.each(TRANSFERABLE_PROPERTIES.concat(source.__wrappedMethods || []), function (propName) {\n if (source.hasOwnProperty(propName)) {\n target[propName] = source[propName];\n }\n });\n target.__wrappedMethods = source.__wrappedMethods;\n zrUtil.each(CLONE_PROPERTIES, function (propName) {\n target[propName] = zrUtil.clone(source[propName]);\n });\n target._calculationInfo = zrUtil.extend(source._calculationInfo);\n}\n/**\n * @constructor\n * @alias module:echarts/data/List\n *\n * @param {Array.<string|Object|module:data/DataDimensionInfo>} dimensions\n * For example, ['someDimName', {name: 'someDimName', type: 'someDimType'}, ...].\n * Dimensions should be concrete names like x, y, z, lng, lat, angle, radius\n * @param {module:echarts/model/Model} hostModel\n */\n\n\nvar List = function (dimensions, hostModel) {\n dimensions = dimensions || ['x', 'y'];\n var dimensionInfos = {};\n var dimensionNames = [];\n var invertedIndicesMap = {};\n\n for (var i = 0; i < dimensions.length; i++) {\n // Use the original dimensions[i], where other flag props may exists.\n var dimensionInfo = dimensions[i];\n\n if (zrUtil.isString(dimensionInfo)) {\n dimensionInfo = new DataDimensionInfo({\n name: dimensionInfo\n });\n } else if (!(dimensionInfo instanceof DataDimensionInfo)) {\n dimensionInfo = new DataDimensionInfo(dimensionInfo);\n }\n\n var dimensionName = dimensionInfo.name;\n dimensionInfo.type = dimensionInfo.type || 'float';\n\n if (!dimensionInfo.coordDim) {\n dimensionInfo.coordDim = dimensionName;\n dimensionInfo.coordDimIndex = 0;\n }\n\n dimensionInfo.otherDims = dimensionInfo.otherDims || {};\n dimensionNames.push(dimensionName);\n dimensionInfos[dimensionName] = dimensionInfo;\n dimensionInfo.index = i;\n\n if (dimensionInfo.createInvertedIndices) {\n invertedIndicesMap[dimensionName] = [];\n }\n }\n /**\n * @readOnly\n * @type {Array.<string>}\n */\n\n\n this.dimensions = dimensionNames;\n /**\n * Infomation of each data dimension, like data type.\n * @type {Object}\n */\n\n this._dimensionInfos = dimensionInfos;\n /**\n * @type {module:echarts/model/Model}\n */\n\n this.hostModel = hostModel;\n /**\n * @type {module:echarts/model/Model}\n */\n\n this.dataType;\n /**\n * Indices stores the indices of data subset after filtered.\n * This data subset will be used in chart.\n * @type {Array.<number>}\n * @readOnly\n */\n\n this._indices = null;\n this._count = 0;\n this._rawCount = 0;\n /**\n * Data storage\n * @type {Object.<key, Array.<TypedArray|Array>>}\n * @private\n */\n\n this._storage = {};\n /**\n * @type {Array.<string>}\n */\n\n this._nameList = [];\n /**\n * @type {Array.<string>}\n */\n\n this._idList = [];\n /**\n * Models of data option is stored sparse for optimizing memory cost\n * @type {Array.<module:echarts/model/Model>}\n * @private\n */\n\n this._optionModels = [];\n /**\n * Global visual properties after visual coding\n * @type {Object}\n * @private\n */\n\n this._visual = {};\n /**\n * Globel layout properties.\n * @type {Object}\n * @private\n */\n\n this._layout = {};\n /**\n * Item visual properties after visual coding\n * @type {Array.<Object>}\n * @private\n */\n\n this._itemVisuals = [];\n /**\n * Key: visual type, Value: boolean\n * @type {Object}\n * @readOnly\n */\n\n this.hasItemVisual = {};\n /**\n * Item layout properties after layout\n * @type {Array.<Object>}\n * @private\n */\n\n this._itemLayouts = [];\n /**\n * Graphic elemnents\n * @type {Array.<module:zrender/Element>}\n * @private\n */\n\n this._graphicEls = [];\n /**\n * Max size of each chunk.\n * @type {number}\n * @private\n */\n\n this._chunkSize = 1e5;\n /**\n * @type {number}\n * @private\n */\n\n this._chunkCount = 0;\n /**\n * @type {Array.<Array|Object>}\n * @private\n */\n\n this._rawData;\n /**\n * Raw extent will not be cloned, but only transfered.\n * It will not be calculated util needed.\n * key: dim,\n * value: {end: number, extent: Array.<number>}\n * @type {Object}\n * @private\n */\n\n this._rawExtent = {};\n /**\n * @type {Object}\n * @private\n */\n\n this._extent = {};\n /**\n * key: dim\n * value: extent\n * @type {Object}\n * @private\n */\n\n this._approximateExtent = {};\n /**\n * Cache summary info for fast visit. See \"dimensionHelper\".\n * @type {Object}\n * @private\n */\n\n this._dimensionsSummary = summarizeDimensions(this);\n /**\n * @type {Object.<Array|TypedArray>}\n * @private\n */\n\n this._invertedIndicesMap = invertedIndicesMap;\n /**\n * @type {Object}\n * @private\n */\n\n this._calculationInfo = {};\n /**\n * User output info of this data.\n * DO NOT use it in other places!\n *\n * When preparing user params for user callbacks, we have\n * to clone these inner data structures to prevent users\n * from modifying them to effect built-in logic. And for\n * performance consideration we make this `userOutput` to\n * avoid clone them too many times.\n *\n * @type {Object}\n * @readOnly\n */\n\n this.userOutput = this._dimensionsSummary.userOutput;\n};\n\nvar listProto = List.prototype;\nlistProto.type = 'list';\n/**\n * If each data item has it's own option\n * @type {boolean}\n */\n\nlistProto.hasItemOption = true;\n/**\n * The meanings of the input parameter `dim`:\n *\n * + If dim is a number (e.g., `1`), it means the index of the dimension.\n * For example, `getDimension(0)` will return 'x' or 'lng' or 'radius'.\n * + If dim is a number-like string (e.g., `\"1\"`):\n * + If there is the same concrete dim name defined in `this.dimensions`, it means that concrete name.\n * + If not, it will be converted to a number, which means the index of the dimension.\n * (why? because of the backward compatbility. We have been tolerating number-like string in\n * dimension setting, although now it seems that it is not a good idea.)\n * For example, `visualMap[i].dimension: \"1\"` is the same meaning as `visualMap[i].dimension: 1`,\n * if no dimension name is defined as `\"1\"`.\n * + If dim is a not-number-like string, it means the concrete dim name.\n * For example, it can be be default name `\"x\"`, `\"y\"`, `\"z\"`, `\"lng\"`, `\"lat\"`, `\"angle\"`, `\"radius\"`,\n * or customized in `dimensions` property of option like `\"age\"`.\n *\n * Get dimension name\n * @param {string|number} dim See above.\n * @return {string} Concrete dim name.\n */\n\nlistProto.getDimension = function (dim) {\n if (typeof dim === 'number' // If being a number-like string but not being defined a dimension name.\n || !isNaN(dim) && !this._dimensionInfos.hasOwnProperty(dim)) {\n dim = this.dimensions[dim];\n }\n\n return dim;\n};\n/**\n * Get type and calculation info of particular dimension\n * @param {string|number} dim\n * Dimension can be concrete names like x, y, z, lng, lat, angle, radius\n * Or a ordinal number. For example getDimensionInfo(0) will return 'x' or 'lng' or 'radius'\n */\n\n\nlistProto.getDimensionInfo = function (dim) {\n // Do not clone, because there may be categories in dimInfo.\n return this._dimensionInfos[this.getDimension(dim)];\n};\n/**\n * @return {Array.<string>} concrete dimension name list on coord.\n */\n\n\nlistProto.getDimensionsOnCoord = function () {\n return this._dimensionsSummary.dataDimsOnCoord.slice();\n};\n/**\n * @param {string} coordDim\n * @param {number} [idx] A coordDim may map to more than one data dim.\n * If idx is `true`, return a array of all mapped dims.\n * If idx is not specified, return the first dim not extra.\n * @return {string|Array.<string>} concrete data dim.\n * If idx is number, and not found, return null/undefined.\n * If idx is `true`, and not found, return empty array (always return array).\n */\n\n\nlistProto.mapDimension = function (coordDim, idx) {\n var dimensionsSummary = this._dimensionsSummary;\n\n if (idx == null) {\n return dimensionsSummary.encodeFirstDimNotExtra[coordDim];\n }\n\n var dims = dimensionsSummary.encode[coordDim];\n return idx === true // always return array if idx is `true`\n ? (dims || []).slice() : dims && dims[idx];\n};\n/**\n * Initialize from data\n * @param {Array.<Object|number|Array>} data source or data or data provider.\n * @param {Array.<string>} [nameLIst] The name of a datum is used on data diff and\n * defualt label/tooltip.\n * A name can be specified in encode.itemName,\n * or dataItem.name (only for series option data),\n * or provided in nameList from outside.\n * @param {Function} [dimValueGetter] (dataItem, dimName, dataIndex, dimIndex) => number\n */\n\n\nlistProto.initData = function (data, nameList, dimValueGetter) {\n var notProvider = Source.isInstance(data) || zrUtil.isArrayLike(data);\n\n if (notProvider) {\n data = new DefaultDataProvider(data, this.dimensions.length);\n }\n\n this._rawData = data; // Clear\n\n this._storage = {};\n this._indices = null;\n this._nameList = nameList || [];\n this._idList = [];\n this._nameRepeatCount = {};\n\n if (!dimValueGetter) {\n this.hasItemOption = false;\n }\n /**\n * @readOnly\n */\n\n\n this.defaultDimValueGetter = defaultDimValueGetters[this._rawData.getSource().sourceFormat]; // Default dim value getter\n\n this._dimValueGetter = dimValueGetter = dimValueGetter || this.defaultDimValueGetter;\n this._dimValueGetterArrayRows = defaultDimValueGetters.arrayRows; // Reset raw extent.\n\n this._rawExtent = {};\n\n this._initDataFromProvider(0, data.count()); // If data has no item option.\n\n\n if (data.pure) {\n this.hasItemOption = false;\n }\n};\n\nlistProto.getProvider = function () {\n return this._rawData;\n};\n/**\n * Caution: Can be only called on raw data (before `this._indices` created).\n */\n\n\nlistProto.appendData = function (data) {\n var rawData = this._rawData;\n var start = this.count();\n rawData.appendData(data);\n var end = rawData.count();\n\n if (!rawData.persistent) {\n end += start;\n }\n\n this._initDataFromProvider(start, end);\n};\n/**\n * Caution: Can be only called on raw data (before `this._indices` created).\n * This method does not modify `rawData` (`dataProvider`), but only\n * add values to storage.\n *\n * The final count will be increased by `Math.max(values.length, names.length)`.\n *\n * @param {Array.<Array.<*>>} values That is the SourceType: 'arrayRows', like\n * [\n * [12, 33, 44],\n * [NaN, 43, 1],\n * ['-', 'asdf', 0]\n * ]\n * Each item is exaclty cooresponding to a dimension.\n * @param {Array.<string>} [names]\n */\n\n\nlistProto.appendValues = function (values, names) {\n var chunkSize = this._chunkSize;\n var storage = this._storage;\n var dimensions = this.dimensions;\n var dimLen = dimensions.length;\n var rawExtent = this._rawExtent;\n var start = this.count();\n var end = start + Math.max(values.length, names ? names.length : 0);\n var originalChunkCount = this._chunkCount;\n\n for (var i = 0; i < dimLen; i++) {\n var dim = dimensions[i];\n\n if (!rawExtent[dim]) {\n rawExtent[dim] = getInitialExtent();\n }\n\n if (!storage[dim]) {\n storage[dim] = [];\n }\n\n prepareChunks(storage, this._dimensionInfos[dim], chunkSize, originalChunkCount, end);\n this._chunkCount = storage[dim].length;\n }\n\n var emptyDataItem = new Array(dimLen);\n\n for (var idx = start; idx < end; idx++) {\n var sourceIdx = idx - start;\n var chunkIndex = Math.floor(idx / chunkSize);\n var chunkOffset = idx % chunkSize; // Store the data by dimensions\n\n for (var k = 0; k < dimLen; k++) {\n var dim = dimensions[k];\n\n var val = this._dimValueGetterArrayRows(values[sourceIdx] || emptyDataItem, dim, sourceIdx, k);\n\n storage[dim][chunkIndex][chunkOffset] = val;\n var dimRawExtent = rawExtent[dim];\n val < dimRawExtent[0] && (dimRawExtent[0] = val);\n val > dimRawExtent[1] && (dimRawExtent[1] = val);\n }\n\n if (names) {\n this._nameList[idx] = names[sourceIdx];\n }\n }\n\n this._rawCount = this._count = end; // Reset data extent\n\n this._extent = {};\n prepareInvertedIndex(this);\n};\n\nlistProto._initDataFromProvider = function (start, end) {\n // Optimize.\n if (start >= end) {\n return;\n }\n\n var chunkSize = this._chunkSize;\n var rawData = this._rawData;\n var storage = this._storage;\n var dimensions = this.dimensions;\n var dimLen = dimensions.length;\n var dimensionInfoMap = this._dimensionInfos;\n var nameList = this._nameList;\n var idList = this._idList;\n var rawExtent = this._rawExtent;\n var nameRepeatCount = this._nameRepeatCount = {};\n var nameDimIdx;\n var originalChunkCount = this._chunkCount;\n\n for (var i = 0; i < dimLen; i++) {\n var dim = dimensions[i];\n\n if (!rawExtent[dim]) {\n rawExtent[dim] = getInitialExtent();\n }\n\n var dimInfo = dimensionInfoMap[dim];\n\n if (dimInfo.otherDims.itemName === 0) {\n nameDimIdx = this._nameDimIdx = i;\n }\n\n if (dimInfo.otherDims.itemId === 0) {\n this._idDimIdx = i;\n }\n\n if (!storage[dim]) {\n storage[dim] = [];\n }\n\n prepareChunks(storage, dimInfo, chunkSize, originalChunkCount, end);\n this._chunkCount = storage[dim].length;\n }\n\n var dataItem = new Array(dimLen);\n\n for (var idx = start; idx < end; idx++) {\n // NOTICE: Try not to write things into dataItem\n dataItem = rawData.getItem(idx, dataItem); // Each data item is value\n // [1, 2]\n // 2\n // Bar chart, line chart which uses category axis\n // only gives the 'y' value. 'x' value is the indices of category\n // Use a tempValue to normalize the value to be a (x, y) value\n\n var chunkIndex = Math.floor(idx / chunkSize);\n var chunkOffset = idx % chunkSize; // Store the data by dimensions\n\n for (var k = 0; k < dimLen; k++) {\n var dim = dimensions[k];\n var dimStorage = storage[dim][chunkIndex]; // PENDING NULL is empty or zero\n\n var val = this._dimValueGetter(dataItem, dim, idx, k);\n\n dimStorage[chunkOffset] = val;\n var dimRawExtent = rawExtent[dim];\n val < dimRawExtent[0] && (dimRawExtent[0] = val);\n val > dimRawExtent[1] && (dimRawExtent[1] = val);\n } // ??? FIXME not check by pure but sourceFormat?\n // TODO refactor these logic.\n\n\n if (!rawData.pure) {\n var name = nameList[idx];\n\n if (dataItem && name == null) {\n // If dataItem is {name: ...}, it has highest priority.\n // That is appropriate for many common cases.\n if (dataItem.name != null) {\n // There is no other place to persistent dataItem.name,\n // so save it to nameList.\n nameList[idx] = name = dataItem.name;\n } else if (nameDimIdx != null) {\n var nameDim = dimensions[nameDimIdx];\n var nameDimChunk = storage[nameDim][chunkIndex];\n\n if (nameDimChunk) {\n name = nameDimChunk[chunkOffset];\n var ordinalMeta = dimensionInfoMap[nameDim].ordinalMeta;\n\n if (ordinalMeta && ordinalMeta.categories.length) {\n name = ordinalMeta.categories[name];\n }\n }\n }\n } // Try using the id in option\n // id or name is used on dynamical data, mapping old and new items.\n\n\n var id = dataItem == null ? null : dataItem.id;\n\n if (id == null && name != null) {\n // Use name as id and add counter to avoid same name\n nameRepeatCount[name] = nameRepeatCount[name] || 0;\n id = name;\n\n if (nameRepeatCount[name] > 0) {\n id += '__ec__' + nameRepeatCount[name];\n }\n\n nameRepeatCount[name]++;\n }\n\n id != null && (idList[idx] = id);\n }\n }\n\n if (!rawData.persistent && rawData.clean) {\n // Clean unused data if data source is typed array.\n rawData.clean();\n }\n\n this._rawCount = this._count = end; // Reset data extent\n\n this._extent = {};\n prepareInvertedIndex(this);\n};\n\nfunction prepareChunks(storage, dimInfo, chunkSize, chunkCount, end) {\n var DataCtor = dataCtors[dimInfo.type];\n var lastChunkIndex = chunkCount - 1;\n var dim = dimInfo.name;\n var resizeChunkArray = storage[dim][lastChunkIndex];\n\n if (resizeChunkArray && resizeChunkArray.length < chunkSize) {\n var newStore = new DataCtor(Math.min(end - lastChunkIndex * chunkSize, chunkSize)); // The cost of the copy is probably inconsiderable\n // within the initial chunkSize.\n\n for (var j = 0; j < resizeChunkArray.length; j++) {\n newStore[j] = resizeChunkArray[j];\n }\n\n storage[dim][lastChunkIndex] = newStore;\n } // Create new chunks.\n\n\n for (var k = chunkCount * chunkSize; k < end; k += chunkSize) {\n storage[dim].push(new DataCtor(Math.min(end - k, chunkSize)));\n }\n}\n\nfunction prepareInvertedIndex(list) {\n var invertedIndicesMap = list._invertedIndicesMap;\n zrUtil.each(invertedIndicesMap, function (invertedIndices, dim) {\n var dimInfo = list._dimensionInfos[dim]; // Currently, only dimensions that has ordinalMeta can create inverted indices.\n\n var ordinalMeta = dimInfo.ordinalMeta;\n\n if (ordinalMeta) {\n invertedIndices = invertedIndicesMap[dim] = new CtorInt32Array(ordinalMeta.categories.length); // The default value of TypedArray is 0. To avoid miss\n // mapping to 0, we should set it as INDEX_NOT_FOUND.\n\n for (var i = 0; i < invertedIndices.length; i++) {\n invertedIndices[i] = INDEX_NOT_FOUND;\n }\n\n for (var i = 0; i < list._count; i++) {\n // Only support the case that all values are distinct.\n invertedIndices[list.get(dim, i)] = i;\n }\n }\n });\n}\n\nfunction getRawValueFromStore(list, dimIndex, rawIndex) {\n var val;\n\n if (dimIndex != null) {\n var chunkSize = list._chunkSize;\n var chunkIndex = Math.floor(rawIndex / chunkSize);\n var chunkOffset = rawIndex % chunkSize;\n var dim = list.dimensions[dimIndex];\n var chunk = list._storage[dim][chunkIndex];\n\n if (chunk) {\n val = chunk[chunkOffset];\n var ordinalMeta = list._dimensionInfos[dim].ordinalMeta;\n\n if (ordinalMeta && ordinalMeta.categories.length) {\n val = ordinalMeta.categories[val];\n }\n }\n }\n\n return val;\n}\n/**\n * @return {number}\n */\n\n\nlistProto.count = function () {\n return this._count;\n};\n\nlistProto.getIndices = function () {\n var newIndices;\n var indices = this._indices;\n\n if (indices) {\n var Ctor = indices.constructor;\n var thisCount = this._count; // `new Array(a, b, c)` is different from `new Uint32Array(a, b, c)`.\n\n if (Ctor === Array) {\n newIndices = new Ctor(thisCount);\n\n for (var i = 0; i < thisCount; i++) {\n newIndices[i] = indices[i];\n }\n } else {\n newIndices = new Ctor(indices.buffer, 0, thisCount);\n }\n } else {\n var Ctor = getIndicesCtor(this);\n var newIndices = new Ctor(this.count());\n\n for (var i = 0; i < newIndices.length; i++) {\n newIndices[i] = i;\n }\n }\n\n return newIndices;\n};\n/**\n * Get value. Return NaN if idx is out of range.\n * @param {string} dim Dim must be concrete name.\n * @param {number} idx\n * @param {boolean} stack\n * @return {number}\n */\n\n\nlistProto.get = function (dim, idx\n/*, stack */\n) {\n if (!(idx >= 0 && idx < this._count)) {\n return NaN;\n }\n\n var storage = this._storage;\n\n if (!storage[dim]) {\n // TODO Warn ?\n return NaN;\n }\n\n idx = this.getRawIndex(idx);\n var chunkIndex = Math.floor(idx / this._chunkSize);\n var chunkOffset = idx % this._chunkSize;\n var chunkStore = storage[dim][chunkIndex];\n var value = chunkStore[chunkOffset]; // FIXME ordinal data type is not stackable\n // if (stack) {\n // var dimensionInfo = this._dimensionInfos[dim];\n // if (dimensionInfo && dimensionInfo.stackable) {\n // var stackedOn = this.stackedOn;\n // while (stackedOn) {\n // // Get no stacked data of stacked on\n // var stackedValue = stackedOn.get(dim, idx);\n // // Considering positive stack, negative stack and empty data\n // if ((value >= 0 && stackedValue > 0) // Positive stack\n // || (value <= 0 && stackedValue < 0) // Negative stack\n // ) {\n // value += stackedValue;\n // }\n // stackedOn = stackedOn.stackedOn;\n // }\n // }\n // }\n\n return value;\n};\n/**\n * @param {string} dim concrete dim\n * @param {number} rawIndex\n * @return {number|string}\n */\n\n\nlistProto.getByRawIndex = function (dim, rawIdx) {\n if (!(rawIdx >= 0 && rawIdx < this._rawCount)) {\n return NaN;\n }\n\n var dimStore = this._storage[dim];\n\n if (!dimStore) {\n // TODO Warn ?\n return NaN;\n }\n\n var chunkIndex = Math.floor(rawIdx / this._chunkSize);\n var chunkOffset = rawIdx % this._chunkSize;\n var chunkStore = dimStore[chunkIndex];\n return chunkStore[chunkOffset];\n};\n/**\n * FIXME Use `get` on chrome maybe slow(in filterSelf and selectRange).\n * Hack a much simpler _getFast\n * @private\n */\n\n\nlistProto._getFast = function (dim, rawIdx) {\n var chunkIndex = Math.floor(rawIdx / this._chunkSize);\n var chunkOffset = rawIdx % this._chunkSize;\n var chunkStore = this._storage[dim][chunkIndex];\n return chunkStore[chunkOffset];\n};\n/**\n * Get value for multi dimensions.\n * @param {Array.<string>} [dimensions] If ignored, using all dimensions.\n * @param {number} idx\n * @return {number}\n */\n\n\nlistProto.getValues = function (dimensions, idx\n/*, stack */\n) {\n var values = [];\n\n if (!zrUtil.isArray(dimensions)) {\n // stack = idx;\n idx = dimensions;\n dimensions = this.dimensions;\n }\n\n for (var i = 0, len = dimensions.length; i < len; i++) {\n values.push(this.get(dimensions[i], idx\n /*, stack */\n ));\n }\n\n return values;\n};\n/**\n * If value is NaN. Inlcuding '-'\n * Only check the coord dimensions.\n * @param {string} dim\n * @param {number} idx\n * @return {number}\n */\n\n\nlistProto.hasValue = function (idx) {\n var dataDimsOnCoord = this._dimensionsSummary.dataDimsOnCoord;\n\n for (var i = 0, len = dataDimsOnCoord.length; i < len; i++) {\n // Ordinal type originally can be string or number.\n // But when an ordinal type is used on coord, it can\n // not be string but only number. So we can also use isNaN.\n if (isNaN(this.get(dataDimsOnCoord[i], idx))) {\n return false;\n }\n }\n\n return true;\n};\n/**\n * Get extent of data in one dimension\n * @param {string} dim\n * @param {boolean} stack\n */\n\n\nlistProto.getDataExtent = function (dim\n/*, stack */\n) {\n // Make sure use concrete dim as cache name.\n dim = this.getDimension(dim);\n var dimData = this._storage[dim];\n var initialExtent = getInitialExtent(); // stack = !!((stack || false) && this.getCalculationInfo(dim));\n\n if (!dimData) {\n return initialExtent;\n } // Make more strict checkings to ensure hitting cache.\n\n\n var currEnd = this.count(); // var cacheName = [dim, !!stack].join('_');\n // var cacheName = dim;\n // Consider the most cases when using data zoom, `getDataExtent`\n // happened before filtering. We cache raw extent, which is not\n // necessary to be cleared and recalculated when restore data.\n\n var useRaw = !this._indices; // && !stack;\n\n var dimExtent;\n\n if (useRaw) {\n return this._rawExtent[dim].slice();\n }\n\n dimExtent = this._extent[dim];\n\n if (dimExtent) {\n return dimExtent.slice();\n }\n\n dimExtent = initialExtent;\n var min = dimExtent[0];\n var max = dimExtent[1];\n\n for (var i = 0; i < currEnd; i++) {\n // var value = stack ? this.get(dim, i, true) : this._getFast(dim, this.getRawIndex(i));\n var value = this._getFast(dim, this.getRawIndex(i));\n\n value < min && (min = value);\n value > max && (max = value);\n }\n\n dimExtent = [min, max];\n this._extent[dim] = dimExtent;\n return dimExtent;\n};\n/**\n * Optimize for the scenario that data is filtered by a given extent.\n * Consider that if data amount is more than hundreds of thousand,\n * extent calculation will cost more than 10ms and the cache will\n * be erased because of the filtering.\n */\n\n\nlistProto.getApproximateExtent = function (dim\n/*, stack */\n) {\n dim = this.getDimension(dim);\n return this._approximateExtent[dim] || this.getDataExtent(dim\n /*, stack */\n );\n};\n\nlistProto.setApproximateExtent = function (extent, dim\n/*, stack */\n) {\n dim = this.getDimension(dim);\n this._approximateExtent[dim] = extent.slice();\n};\n/**\n * @param {string} key\n * @return {*}\n */\n\n\nlistProto.getCalculationInfo = function (key) {\n return this._calculationInfo[key];\n};\n/**\n * @param {string|Object} key or k-v object\n * @param {*} [value]\n */\n\n\nlistProto.setCalculationInfo = function (key, value) {\n isObject(key) ? zrUtil.extend(this._calculationInfo, key) : this._calculationInfo[key] = value;\n};\n/**\n * Get sum of data in one dimension\n * @param {string} dim\n */\n\n\nlistProto.getSum = function (dim\n/*, stack */\n) {\n var dimData = this._storage[dim];\n var sum = 0;\n\n if (dimData) {\n for (var i = 0, len = this.count(); i < len; i++) {\n var value = this.get(dim, i\n /*, stack */\n );\n\n if (!isNaN(value)) {\n sum += value;\n }\n }\n }\n\n return sum;\n};\n/**\n * Get median of data in one dimension\n * @param {string} dim\n */\n\n\nlistProto.getMedian = function (dim\n/*, stack */\n) {\n var dimDataArray = []; // map all data of one dimension\n\n this.each(dim, function (val, idx) {\n if (!isNaN(val)) {\n dimDataArray.push(val);\n }\n }); // TODO\n // Use quick select?\n // immutability & sort\n\n var sortedDimDataArray = [].concat(dimDataArray).sort(function (a, b) {\n return a - b;\n });\n var len = this.count(); // calculate median\n\n return len === 0 ? 0 : len % 2 === 1 ? sortedDimDataArray[(len - 1) / 2] : (sortedDimDataArray[len / 2] + sortedDimDataArray[len / 2 - 1]) / 2;\n}; // /**\n// * Retreive the index with given value\n// * @param {string} dim Concrete dimension.\n// * @param {number} value\n// * @return {number}\n// */\n// Currently incorrect: should return dataIndex but not rawIndex.\n// Do not fix it until this method is to be used somewhere.\n// FIXME Precision of float value\n// listProto.indexOf = function (dim, value) {\n// var storage = this._storage;\n// var dimData = storage[dim];\n// var chunkSize = this._chunkSize;\n// if (dimData) {\n// for (var i = 0, len = this.count(); i < len; i++) {\n// var chunkIndex = Math.floor(i / chunkSize);\n// var chunkOffset = i % chunkSize;\n// if (dimData[chunkIndex][chunkOffset] === value) {\n// return i;\n// }\n// }\n// }\n// return -1;\n// };\n\n/**\n * Only support the dimension which inverted index created.\n * Do not support other cases until required.\n * @param {string} concrete dim\n * @param {number|string} value\n * @return {number} rawIndex\n */\n\n\nlistProto.rawIndexOf = function (dim, value) {\n var invertedIndices = dim && this._invertedIndicesMap[dim];\n var rawIndex = invertedIndices[value];\n\n if (rawIndex == null || isNaN(rawIndex)) {\n return INDEX_NOT_FOUND;\n }\n\n return rawIndex;\n};\n/**\n * Retreive the index with given name\n * @param {number} idx\n * @param {number} name\n * @return {number}\n */\n\n\nlistProto.indexOfName = function (name) {\n for (var i = 0, len = this.count(); i < len; i++) {\n if (this.getName(i) === name) {\n return i;\n }\n }\n\n return -1;\n};\n/**\n * Retreive the index with given raw data index\n * @param {number} idx\n * @param {number} name\n * @return {number}\n */\n\n\nlistProto.indexOfRawIndex = function (rawIndex) {\n if (rawIndex >= this._rawCount || rawIndex < 0) {\n return -1;\n }\n\n if (!this._indices) {\n return rawIndex;\n } // Indices are ascending\n\n\n var indices = this._indices; // If rawIndex === dataIndex\n\n var rawDataIndex = indices[rawIndex];\n\n if (rawDataIndex != null && rawDataIndex < this._count && rawDataIndex === rawIndex) {\n return rawIndex;\n }\n\n var left = 0;\n var right = this._count - 1;\n\n while (left <= right) {\n var mid = (left + right) / 2 | 0;\n\n if (indices[mid] < rawIndex) {\n left = mid + 1;\n } else if (indices[mid] > rawIndex) {\n right = mid - 1;\n } else {\n return mid;\n }\n }\n\n return -1;\n};\n/**\n * Retreive the index of nearest value\n * @param {string} dim\n * @param {number} value\n * @param {number} [maxDistance=Infinity]\n * @return {Array.<number>} If and only if multiple indices has\n * the same value, they are put to the result.\n */\n\n\nlistProto.indicesOfNearest = function (dim, value, maxDistance) {\n var storage = this._storage;\n var dimData = storage[dim];\n var nearestIndices = [];\n\n if (!dimData) {\n return nearestIndices;\n }\n\n if (maxDistance == null) {\n maxDistance = Infinity;\n }\n\n var minDist = Infinity;\n var minDiff = -1;\n var nearestIndicesLen = 0; // Check the test case of `test/ut/spec/data/List.js`.\n\n for (var i = 0, len = this.count(); i < len; i++) {\n var diff = value - this.get(dim, i);\n var dist = Math.abs(diff);\n\n if (dist <= maxDistance) {\n // When the `value` is at the middle of `this.get(dim, i)` and `this.get(dim, i+1)`,\n // we'd better not push both of them to `nearestIndices`, otherwise it is easy to\n // get more than one item in `nearestIndices` (more specifically, in `tooltip`).\n // So we chose the one that `diff >= 0` in this csae.\n // But if `this.get(dim, i)` and `this.get(dim, j)` get the same value, both of them\n // should be push to `nearestIndices`.\n if (dist < minDist || dist === minDist && diff >= 0 && minDiff < 0) {\n minDist = dist;\n minDiff = diff;\n nearestIndicesLen = 0;\n }\n\n if (diff === minDiff) {\n nearestIndices[nearestIndicesLen++] = i;\n }\n }\n }\n\n nearestIndices.length = nearestIndicesLen;\n return nearestIndices;\n};\n/**\n * Get raw data index\n * @param {number} idx\n * @return {number}\n */\n\n\nlistProto.getRawIndex = getRawIndexWithoutIndices;\n\nfunction getRawIndexWithoutIndices(idx) {\n return idx;\n}\n\nfunction getRawIndexWithIndices(idx) {\n if (idx < this._count && idx >= 0) {\n return this._indices[idx];\n }\n\n return -1;\n}\n/**\n * Get raw data item\n * @param {number} idx\n * @return {number}\n */\n\n\nlistProto.getRawDataItem = function (idx) {\n if (!this._rawData.persistent) {\n var val = [];\n\n for (var i = 0; i < this.dimensions.length; i++) {\n var dim = this.dimensions[i];\n val.push(this.get(dim, idx));\n }\n\n return val;\n } else {\n return this._rawData.getItem(this.getRawIndex(idx));\n }\n};\n/**\n * @param {number} idx\n * @param {boolean} [notDefaultIdx=false]\n * @return {string}\n */\n\n\nlistProto.getName = function (idx) {\n var rawIndex = this.getRawIndex(idx);\n return this._nameList[rawIndex] || getRawValueFromStore(this, this._nameDimIdx, rawIndex) || '';\n};\n/**\n * @param {number} idx\n * @param {boolean} [notDefaultIdx=false]\n * @return {string}\n */\n\n\nlistProto.getId = function (idx) {\n return getId(this, this.getRawIndex(idx));\n};\n\nfunction getId(list, rawIndex) {\n var id = list._idList[rawIndex];\n\n if (id == null) {\n id = getRawValueFromStore(list, list._idDimIdx, rawIndex);\n }\n\n if (id == null) {\n // FIXME Check the usage in graph, should not use prefix.\n id = ID_PREFIX + rawIndex;\n }\n\n return id;\n}\n\nfunction normalizeDimensions(dimensions) {\n if (!zrUtil.isArray(dimensions)) {\n dimensions = [dimensions];\n }\n\n return dimensions;\n}\n\nfunction validateDimensions(list, dims) {\n for (var i = 0; i < dims.length; i++) {\n // stroage may be empty when no data, so use\n // dimensionInfos to check.\n if (!list._dimensionInfos[dims[i]]) {\n console.error('Unkown dimension ' + dims[i]);\n }\n }\n}\n/**\n * Data iteration\n * @param {string|Array.<string>}\n * @param {Function} cb\n * @param {*} [context=this]\n *\n * @example\n * list.each('x', function (x, idx) {});\n * list.each(['x', 'y'], function (x, y, idx) {});\n * list.each(function (idx) {})\n */\n\n\nlistProto.each = function (dims, cb, context, contextCompat) {\n 'use strict';\n\n if (!this._count) {\n return;\n }\n\n if (typeof dims === 'function') {\n contextCompat = context;\n context = cb;\n cb = dims;\n dims = [];\n } // contextCompat just for compat echarts3\n\n\n context = context || contextCompat || this;\n dims = zrUtil.map(normalizeDimensions(dims), this.getDimension, this);\n var dimSize = dims.length;\n\n for (var i = 0; i < this.count(); i++) {\n // Simple optimization\n switch (dimSize) {\n case 0:\n cb.call(context, i);\n break;\n\n case 1:\n cb.call(context, this.get(dims[0], i), i);\n break;\n\n case 2:\n cb.call(context, this.get(dims[0], i), this.get(dims[1], i), i);\n break;\n\n default:\n var k = 0;\n var value = [];\n\n for (; k < dimSize; k++) {\n value[k] = this.get(dims[k], i);\n } // Index\n\n\n value[k] = i;\n cb.apply(context, value);\n }\n }\n};\n/**\n * Data filter\n * @param {string|Array.<string>}\n * @param {Function} cb\n * @param {*} [context=this]\n */\n\n\nlistProto.filterSelf = function (dimensions, cb, context, contextCompat) {\n 'use strict';\n\n if (!this._count) {\n return;\n }\n\n if (typeof dimensions === 'function') {\n contextCompat = context;\n context = cb;\n cb = dimensions;\n dimensions = [];\n } // contextCompat just for compat echarts3\n\n\n context = context || contextCompat || this;\n dimensions = zrUtil.map(normalizeDimensions(dimensions), this.getDimension, this);\n var count = this.count();\n var Ctor = getIndicesCtor(this);\n var newIndices = new Ctor(count);\n var value = [];\n var dimSize = dimensions.length;\n var offset = 0;\n var dim0 = dimensions[0];\n\n for (var i = 0; i < count; i++) {\n var keep;\n var rawIdx = this.getRawIndex(i); // Simple optimization\n\n if (dimSize === 0) {\n keep = cb.call(context, i);\n } else if (dimSize === 1) {\n var val = this._getFast(dim0, rawIdx);\n\n keep = cb.call(context, val, i);\n } else {\n for (var k = 0; k < dimSize; k++) {\n value[k] = this._getFast(dim0, rawIdx);\n }\n\n value[k] = i;\n keep = cb.apply(context, value);\n }\n\n if (keep) {\n newIndices[offset++] = rawIdx;\n }\n } // Set indices after filtered.\n\n\n if (offset < count) {\n this._indices = newIndices;\n }\n\n this._count = offset; // Reset data extent\n\n this._extent = {};\n this.getRawIndex = this._indices ? getRawIndexWithIndices : getRawIndexWithoutIndices;\n return this;\n};\n/**\n * Select data in range. (For optimization of filter)\n * (Manually inline code, support 5 million data filtering in data zoom.)\n */\n\n\nlistProto.selectRange = function (range) {\n 'use strict';\n\n if (!this._count) {\n return;\n }\n\n var dimensions = [];\n\n for (var dim in range) {\n if (range.hasOwnProperty(dim)) {\n dimensions.push(dim);\n }\n }\n\n var dimSize = dimensions.length;\n\n if (!dimSize) {\n return;\n }\n\n var originalCount = this.count();\n var Ctor = getIndicesCtor(this);\n var newIndices = new Ctor(originalCount);\n var offset = 0;\n var dim0 = dimensions[0];\n var min = range[dim0][0];\n var max = range[dim0][1];\n var quickFinished = false;\n\n if (!this._indices) {\n // Extreme optimization for common case. About 2x faster in chrome.\n var idx = 0;\n\n if (dimSize === 1) {\n var dimStorage = this._storage[dimensions[0]];\n\n for (var k = 0; k < this._chunkCount; k++) {\n var chunkStorage = dimStorage[k];\n var len = Math.min(this._count - k * this._chunkSize, this._chunkSize);\n\n for (var i = 0; i < len; i++) {\n var val = chunkStorage[i]; // NaN will not be filtered. Consider the case, in line chart, empty\n // value indicates the line should be broken. But for the case like\n // scatter plot, a data item with empty value will not be rendered,\n // but the axis extent may be effected if some other dim of the data\n // item has value. Fortunately it is not a significant negative effect.\n\n if (val >= min && val <= max || isNaN(val)) {\n newIndices[offset++] = idx;\n }\n\n idx++;\n }\n }\n\n quickFinished = true;\n } else if (dimSize === 2) {\n var dimStorage = this._storage[dim0];\n var dimStorage2 = this._storage[dimensions[1]];\n var min2 = range[dimensions[1]][0];\n var max2 = range[dimensions[1]][1];\n\n for (var k = 0; k < this._chunkCount; k++) {\n var chunkStorage = dimStorage[k];\n var chunkStorage2 = dimStorage2[k];\n var len = Math.min(this._count - k * this._chunkSize, this._chunkSize);\n\n for (var i = 0; i < len; i++) {\n var val = chunkStorage[i];\n var val2 = chunkStorage2[i]; // Do not filter NaN, see comment above.\n\n if ((val >= min && val <= max || isNaN(val)) && (val2 >= min2 && val2 <= max2 || isNaN(val2))) {\n newIndices[offset++] = idx;\n }\n\n idx++;\n }\n }\n\n quickFinished = true;\n }\n }\n\n if (!quickFinished) {\n if (dimSize === 1) {\n for (var i = 0; i < originalCount; i++) {\n var rawIndex = this.getRawIndex(i);\n\n var val = this._getFast(dim0, rawIndex); // Do not filter NaN, see comment above.\n\n\n if (val >= min && val <= max || isNaN(val)) {\n newIndices[offset++] = rawIndex;\n }\n }\n } else {\n for (var i = 0; i < originalCount; i++) {\n var keep = true;\n var rawIndex = this.getRawIndex(i);\n\n for (var k = 0; k < dimSize; k++) {\n var dimk = dimensions[k];\n\n var val = this._getFast(dim, rawIndex); // Do not filter NaN, see comment above.\n\n\n if (val < range[dimk][0] || val > range[dimk][1]) {\n keep = false;\n }\n }\n\n if (keep) {\n newIndices[offset++] = this.getRawIndex(i);\n }\n }\n }\n } // Set indices after filtered.\n\n\n if (offset < originalCount) {\n this._indices = newIndices;\n }\n\n this._count = offset; // Reset data extent\n\n this._extent = {};\n this.getRawIndex = this._indices ? getRawIndexWithIndices : getRawIndexWithoutIndices;\n return this;\n};\n/**\n * Data mapping to a plain array\n * @param {string|Array.<string>} [dimensions]\n * @param {Function} cb\n * @param {*} [context=this]\n * @return {Array}\n */\n\n\nlistProto.mapArray = function (dimensions, cb, context, contextCompat) {\n 'use strict';\n\n if (typeof dimensions === 'function') {\n contextCompat = context;\n context = cb;\n cb = dimensions;\n dimensions = [];\n } // contextCompat just for compat echarts3\n\n\n context = context || contextCompat || this;\n var result = [];\n this.each(dimensions, function () {\n result.push(cb && cb.apply(this, arguments));\n }, context);\n return result;\n}; // Data in excludeDimensions is copied, otherwise transfered.\n\n\nfunction cloneListForMapAndSample(original, excludeDimensions) {\n var allDimensions = original.dimensions;\n var list = new List(zrUtil.map(allDimensions, original.getDimensionInfo, original), original.hostModel); // FIXME If needs stackedOn, value may already been stacked\n\n transferProperties(list, original);\n var storage = list._storage = {};\n var originalStorage = original._storage; // Init storage\n\n for (var i = 0; i < allDimensions.length; i++) {\n var dim = allDimensions[i];\n\n if (originalStorage[dim]) {\n // Notice that we do not reset invertedIndicesMap here, becuase\n // there is no scenario of mapping or sampling ordinal dimension.\n if (zrUtil.indexOf(excludeDimensions, dim) >= 0) {\n storage[dim] = cloneDimStore(originalStorage[dim]);\n list._rawExtent[dim] = getInitialExtent();\n list._extent[dim] = null;\n } else {\n // Direct reference for other dimensions\n storage[dim] = originalStorage[dim];\n }\n }\n }\n\n return list;\n}\n\nfunction cloneDimStore(originalDimStore) {\n var newDimStore = new Array(originalDimStore.length);\n\n for (var j = 0; j < originalDimStore.length; j++) {\n newDimStore[j] = cloneChunk(originalDimStore[j]);\n }\n\n return newDimStore;\n}\n\nfunction getInitialExtent() {\n return [Infinity, -Infinity];\n}\n/**\n * Data mapping to a new List with given dimensions\n * @param {string|Array.<string>} dimensions\n * @param {Function} cb\n * @param {*} [context=this]\n * @return {Array}\n */\n\n\nlistProto.map = function (dimensions, cb, context, contextCompat) {\n 'use strict'; // contextCompat just for compat echarts3\n\n context = context || contextCompat || this;\n dimensions = zrUtil.map(normalizeDimensions(dimensions), this.getDimension, this);\n var list = cloneListForMapAndSample(this, dimensions); // Following properties are all immutable.\n // So we can reference to the same value\n\n list._indices = this._indices;\n list.getRawIndex = list._indices ? getRawIndexWithIndices : getRawIndexWithoutIndices;\n var storage = list._storage;\n var tmpRetValue = [];\n var chunkSize = this._chunkSize;\n var dimSize = dimensions.length;\n var dataCount = this.count();\n var values = [];\n var rawExtent = list._rawExtent;\n\n for (var dataIndex = 0; dataIndex < dataCount; dataIndex++) {\n for (var dimIndex = 0; dimIndex < dimSize; dimIndex++) {\n values[dimIndex] = this.get(dimensions[dimIndex], dataIndex\n /*, stack */\n );\n }\n\n values[dimSize] = dataIndex;\n var retValue = cb && cb.apply(context, values);\n\n if (retValue != null) {\n // a number or string (in oridinal dimension)?\n if (typeof retValue !== 'object') {\n tmpRetValue[0] = retValue;\n retValue = tmpRetValue;\n }\n\n var rawIndex = this.getRawIndex(dataIndex);\n var chunkIndex = Math.floor(rawIndex / chunkSize);\n var chunkOffset = rawIndex % chunkSize;\n\n for (var i = 0; i < retValue.length; i++) {\n var dim = dimensions[i];\n var val = retValue[i];\n var rawExtentOnDim = rawExtent[dim];\n var dimStore = storage[dim];\n\n if (dimStore) {\n dimStore[chunkIndex][chunkOffset] = val;\n }\n\n if (val < rawExtentOnDim[0]) {\n rawExtentOnDim[0] = val;\n }\n\n if (val > rawExtentOnDim[1]) {\n rawExtentOnDim[1] = val;\n }\n }\n }\n }\n\n return list;\n};\n/**\n * Large data down sampling on given dimension\n * @param {string} dimension\n * @param {number} rate\n * @param {Function} sampleValue\n * @param {Function} sampleIndex Sample index for name and id\n */\n\n\nlistProto.downSample = function (dimension, rate, sampleValue, sampleIndex) {\n var list = cloneListForMapAndSample(this, [dimension]);\n var targetStorage = list._storage;\n var frameValues = [];\n var frameSize = Math.floor(1 / rate);\n var dimStore = targetStorage[dimension];\n var len = this.count();\n var chunkSize = this._chunkSize;\n var rawExtentOnDim = list._rawExtent[dimension];\n var newIndices = new (getIndicesCtor(this))(len);\n var offset = 0;\n\n for (var i = 0; i < len; i += frameSize) {\n // Last frame\n if (frameSize > len - i) {\n frameSize = len - i;\n frameValues.length = frameSize;\n }\n\n for (var k = 0; k < frameSize; k++) {\n var dataIdx = this.getRawIndex(i + k);\n var originalChunkIndex = Math.floor(dataIdx / chunkSize);\n var originalChunkOffset = dataIdx % chunkSize;\n frameValues[k] = dimStore[originalChunkIndex][originalChunkOffset];\n }\n\n var value = sampleValue(frameValues);\n var sampleFrameIdx = this.getRawIndex(Math.min(i + sampleIndex(frameValues, value) || 0, len - 1));\n var sampleChunkIndex = Math.floor(sampleFrameIdx / chunkSize);\n var sampleChunkOffset = sampleFrameIdx % chunkSize; // Only write value on the filtered data\n\n dimStore[sampleChunkIndex][sampleChunkOffset] = value;\n\n if (value < rawExtentOnDim[0]) {\n rawExtentOnDim[0] = value;\n }\n\n if (value > rawExtentOnDim[1]) {\n rawExtentOnDim[1] = value;\n }\n\n newIndices[offset++] = sampleFrameIdx;\n }\n\n list._count = offset;\n list._indices = newIndices;\n list.getRawIndex = getRawIndexWithIndices;\n return list;\n};\n/**\n * Get model of one data item.\n *\n * @param {number} idx\n */\n// FIXME Model proxy ?\n\n\nlistProto.getItemModel = function (idx) {\n var hostModel = this.hostModel;\n return new Model(this.getRawDataItem(idx), hostModel, hostModel && hostModel.ecModel);\n};\n/**\n * Create a data differ\n * @param {module:echarts/data/List} otherList\n * @return {module:echarts/data/DataDiffer}\n */\n\n\nlistProto.diff = function (otherList) {\n var thisList = this;\n return new DataDiffer(otherList ? otherList.getIndices() : [], this.getIndices(), function (idx) {\n return getId(otherList, idx);\n }, function (idx) {\n return getId(thisList, idx);\n });\n};\n/**\n * Get visual property.\n * @param {string} key\n */\n\n\nlistProto.getVisual = function (key) {\n var visual = this._visual;\n return visual && visual[key];\n};\n/**\n * Set visual property\n * @param {string|Object} key\n * @param {*} [value]\n *\n * @example\n * setVisual('color', color);\n * setVisual({\n * 'color': color\n * });\n */\n\n\nlistProto.setVisual = function (key, val) {\n if (isObject(key)) {\n for (var name in key) {\n if (key.hasOwnProperty(name)) {\n this.setVisual(name, key[name]);\n }\n }\n\n return;\n }\n\n this._visual = this._visual || {};\n this._visual[key] = val;\n};\n/**\n * Set layout property.\n * @param {string|Object} key\n * @param {*} [val]\n */\n\n\nlistProto.setLayout = function (key, val) {\n if (isObject(key)) {\n for (var name in key) {\n if (key.hasOwnProperty(name)) {\n this.setLayout(name, key[name]);\n }\n }\n\n return;\n }\n\n this._layout[key] = val;\n};\n/**\n * Get layout property.\n * @param {string} key.\n * @return {*}\n */\n\n\nlistProto.getLayout = function (key) {\n return this._layout[key];\n};\n/**\n * Get layout of single data item\n * @param {number} idx\n */\n\n\nlistProto.getItemLayout = function (idx) {\n return this._itemLayouts[idx];\n};\n/**\n * Set layout of single data item\n * @param {number} idx\n * @param {Object} layout\n * @param {boolean=} [merge=false]\n */\n\n\nlistProto.setItemLayout = function (idx, layout, merge) {\n this._itemLayouts[idx] = merge ? zrUtil.extend(this._itemLayouts[idx] || {}, layout) : layout;\n};\n/**\n * Clear all layout of single data item\n */\n\n\nlistProto.clearItemLayouts = function () {\n this._itemLayouts.length = 0;\n};\n/**\n * Get visual property of single data item\n * @param {number} idx\n * @param {string} key\n * @param {boolean} [ignoreParent=false]\n */\n\n\nlistProto.getItemVisual = function (idx, key, ignoreParent) {\n var itemVisual = this._itemVisuals[idx];\n var val = itemVisual && itemVisual[key];\n\n if (val == null && !ignoreParent) {\n // Use global visual property\n return this.getVisual(key);\n }\n\n return val;\n};\n/**\n * Set visual property of single data item\n *\n * @param {number} idx\n * @param {string|Object} key\n * @param {*} [value]\n *\n * @example\n * setItemVisual(0, 'color', color);\n * setItemVisual(0, {\n * 'color': color\n * });\n */\n\n\nlistProto.setItemVisual = function (idx, key, value) {\n var itemVisual = this._itemVisuals[idx] || {};\n var hasItemVisual = this.hasItemVisual;\n this._itemVisuals[idx] = itemVisual;\n\n if (isObject(key)) {\n for (var name in key) {\n if (key.hasOwnProperty(name)) {\n itemVisual[name] = key[name];\n hasItemVisual[name] = true;\n }\n }\n\n return;\n }\n\n itemVisual[key] = value;\n hasItemVisual[key] = true;\n};\n/**\n * Clear itemVisuals and list visual.\n */\n\n\nlistProto.clearAllVisual = function () {\n this._visual = {};\n this._itemVisuals = [];\n this.hasItemVisual = {};\n};\n\nvar setItemDataAndSeriesIndex = function (child) {\n child.seriesIndex = this.seriesIndex;\n child.dataIndex = this.dataIndex;\n child.dataType = this.dataType;\n};\n/**\n * Set graphic element relative to data. It can be set as null\n * @param {number} idx\n * @param {module:zrender/Element} [el]\n */\n\n\nlistProto.setItemGraphicEl = function (idx, el) {\n var hostModel = this.hostModel;\n\n if (el) {\n // Add data index and series index for indexing the data by element\n // Useful in tooltip\n el.dataIndex = idx;\n el.dataType = this.dataType;\n el.seriesIndex = hostModel && hostModel.seriesIndex;\n\n if (el.type === 'group') {\n el.traverse(setItemDataAndSeriesIndex, el);\n }\n }\n\n this._graphicEls[idx] = el;\n};\n/**\n * @param {number} idx\n * @return {module:zrender/Element}\n */\n\n\nlistProto.getItemGraphicEl = function (idx) {\n return this._graphicEls[idx];\n};\n/**\n * @param {Function} cb\n * @param {*} context\n */\n\n\nlistProto.eachItemGraphicEl = function (cb, context) {\n zrUtil.each(this._graphicEls, function (el, idx) {\n if (el) {\n cb && cb.call(context, el, idx);\n }\n });\n};\n/**\n * Shallow clone a new list except visual and layout properties, and graph elements.\n * New list only change the indices.\n */\n\n\nlistProto.cloneShallow = function (list) {\n if (!list) {\n var dimensionInfoList = zrUtil.map(this.dimensions, this.getDimensionInfo, this);\n list = new List(dimensionInfoList, this.hostModel);\n } // FIXME\n\n\n list._storage = this._storage;\n transferProperties(list, this); // Clone will not change the data extent and indices\n\n if (this._indices) {\n var Ctor = this._indices.constructor;\n list._indices = new Ctor(this._indices);\n } else {\n list._indices = null;\n }\n\n list.getRawIndex = list._indices ? getRawIndexWithIndices : getRawIndexWithoutIndices;\n return list;\n};\n/**\n * Wrap some method to add more feature\n * @param {string} methodName\n * @param {Function} injectFunction\n */\n\n\nlistProto.wrapMethod = function (methodName, injectFunction) {\n var originalMethod = this[methodName];\n\n if (typeof originalMethod !== 'function') {\n return;\n }\n\n this.__wrappedMethods = this.__wrappedMethods || [];\n\n this.__wrappedMethods.push(methodName);\n\n this[methodName] = function () {\n var res = originalMethod.apply(this, arguments);\n return injectFunction.apply(this, [res].concat(zrUtil.slice(arguments)));\n };\n}; // Methods that create a new list based on this list should be listed here.\n// Notice that those method should `RETURN` the new list.\n\n\nlistProto.TRANSFERABLE_METHODS = ['cloneShallow', 'downSample', 'map']; // Methods that change indices of this list should be listed here.\n\nlistProto.CHANGABLE_METHODS = ['filterSelf', 'selectRange'];\nvar _default = List;\nmodule.exports = _default;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar _util = require(\"zrender/lib/core/util\");\n\nvar createHashMap = _util.createHashMap;\nvar isObject = _util.isObject;\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 * @constructor\n * @param {Object} [opt]\n * @param {Object} [opt.categories=[]]\n * @param {Object} [opt.needCollect=false]\n * @param {Object} [opt.deduplication=false]\n */\nfunction OrdinalMeta(opt) {\n /**\n * @readOnly\n * @type {Array.<string>}\n */\n this.categories = opt.categories || [];\n /**\n * @private\n * @type {boolean}\n */\n\n this._needCollect = opt.needCollect;\n /**\n * @private\n * @type {boolean}\n */\n\n this._deduplication = opt.deduplication;\n /**\n * @private\n * @type {boolean}\n */\n\n this._map;\n}\n/**\n * @param {module:echarts/model/Model} axisModel\n * @return {module:echarts/data/OrdinalMeta}\n */\n\n\nOrdinalMeta.createByAxisModel = function (axisModel) {\n var option = axisModel.option;\n var data = option.data;\n var categories = data && map(data, getName);\n return new OrdinalMeta({\n categories: categories,\n needCollect: !categories,\n // deduplication is default in axis.\n deduplication: option.dedplication !== false\n });\n};\n\nvar proto = OrdinalMeta.prototype;\n/**\n * @param {string} category\n * @return {number} ordinal\n */\n\nproto.getOrdinal = function (category) {\n return getOrCreateMap(this).get(category);\n};\n/**\n * @param {*} category\n * @return {number} The ordinal. If not found, return NaN.\n */\n\n\nproto.parseAndCollect = function (category) {\n var index;\n var needCollect = this._needCollect; // The value of category dim can be the index of the given category set.\n // This feature is only supported when !needCollect, because we should\n // consider a common case: a value is 2017, which is a number but is\n // expected to be tread as a category. This case usually happen in dataset,\n // where it happent to be no need of the index feature.\n\n if (typeof category !== 'string' && !needCollect) {\n return category;\n } // Optimize for the scenario:\n // category is ['2012-01-01', '2012-01-02', ...], where the input\n // data has been ensured not duplicate and is large data.\n // Notice, if a dataset dimension provide categroies, usually echarts\n // should remove duplication except user tell echarts dont do that\n // (set axis.deduplication = false), because echarts do not know whether\n // the values in the category dimension has duplication (consider the\n // parallel-aqi example)\n\n\n if (needCollect && !this._deduplication) {\n index = this.categories.length;\n this.categories[index] = category;\n return index;\n }\n\n var map = getOrCreateMap(this);\n index = map.get(category);\n\n if (index == null) {\n if (needCollect) {\n index = this.categories.length;\n this.categories[index] = category;\n map.set(category, index);\n } else {\n index = NaN;\n }\n }\n\n return index;\n}; // Consider big data, do not create map until needed.\n\n\nfunction getOrCreateMap(ordinalMeta) {\n return ordinalMeta._map || (ordinalMeta._map = createHashMap(ordinalMeta.categories));\n}\n\nfunction getName(obj) {\n if (isObject(obj) && obj.value != null) {\n return obj.value;\n } else {\n return obj + '';\n }\n}\n\nvar _default = OrdinalMeta;\nmodule.exports = _default;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar _util = require(\"zrender/lib/core/util\");\n\nvar createHashMap = _util.createHashMap;\nvar isTypedArray = _util.isTypedArray;\n\nvar _clazz = require(\"../util/clazz\");\n\nvar enableClassCheck = _clazz.enableClassCheck;\n\nvar _sourceType = require(\"./helper/sourceType\");\n\nvar SOURCE_FORMAT_ORIGINAL = _sourceType.SOURCE_FORMAT_ORIGINAL;\nvar SERIES_LAYOUT_BY_COLUMN = _sourceType.SERIES_LAYOUT_BY_COLUMN;\nvar SOURCE_FORMAT_UNKNOWN = _sourceType.SOURCE_FORMAT_UNKNOWN;\nvar SOURCE_FORMAT_TYPED_ARRAY = _sourceType.SOURCE_FORMAT_TYPED_ARRAY;\nvar SOURCE_FORMAT_KEYED_COLUMNS = _sourceType.SOURCE_FORMAT_KEYED_COLUMNS;\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 * [sourceFormat]\n *\n * + \"original\":\n * This format is only used in series.data, where\n * itemStyle can be specified in data item.\n *\n * + \"arrayRows\":\n * [\n * ['product', 'score', 'amount'],\n * ['Matcha Latte', 89.3, 95.8],\n * ['Milk Tea', 92.1, 89.4],\n * ['Cheese Cocoa', 94.4, 91.2],\n * ['Walnut Brownie', 85.4, 76.9]\n * ]\n *\n * + \"objectRows\":\n * [\n * {product: 'Matcha Latte', score: 89.3, amount: 95.8},\n * {product: 'Milk Tea', score: 92.1, amount: 89.4},\n * {product: 'Cheese Cocoa', score: 94.4, amount: 91.2},\n * {product: 'Walnut Brownie', score: 85.4, amount: 76.9}\n * ]\n *\n * + \"keyedColumns\":\n * {\n * 'product': ['Matcha Latte', 'Milk Tea', 'Cheese Cocoa', 'Walnut Brownie'],\n * 'count': [823, 235, 1042, 988],\n * 'score': [95.8, 81.4, 91.2, 76.9]\n * }\n *\n * + \"typedArray\"\n *\n * + \"unknown\"\n */\n\n/**\n * @constructor\n * @param {Object} fields\n * @param {string} fields.sourceFormat\n * @param {Array|Object} fields.fromDataset\n * @param {Array|Object} [fields.data]\n * @param {string} [seriesLayoutBy='column']\n * @param {Array.<Object|string>} [dimensionsDefine]\n * @param {Objet|HashMap} [encodeDefine]\n * @param {number} [startIndex=0]\n * @param {number} [dimensionsDetectCount]\n */\nfunction Source(fields) {\n /**\n * @type {boolean}\n */\n this.fromDataset = fields.fromDataset;\n /**\n * Not null/undefined.\n * @type {Array|Object}\n */\n\n this.data = fields.data || (fields.sourceFormat === SOURCE_FORMAT_KEYED_COLUMNS ? {} : []);\n /**\n * See also \"detectSourceFormat\".\n * Not null/undefined.\n * @type {string}\n */\n\n this.sourceFormat = fields.sourceFormat || SOURCE_FORMAT_UNKNOWN;\n /**\n * 'row' or 'column'\n * Not null/undefined.\n * @type {string} seriesLayoutBy\n */\n\n this.seriesLayoutBy = fields.seriesLayoutBy || SERIES_LAYOUT_BY_COLUMN;\n /**\n * dimensions definition in option.\n * can be null/undefined.\n * @type {Array.<Object|string>}\n */\n\n this.dimensionsDefine = fields.dimensionsDefine;\n /**\n * encode definition in option.\n * can be null/undefined.\n * @type {Objet|HashMap}\n */\n\n this.encodeDefine = fields.encodeDefine && createHashMap(fields.encodeDefine);\n /**\n * Not null/undefined, uint.\n * @type {number}\n */\n\n this.startIndex = fields.startIndex || 0;\n /**\n * Can be null/undefined (when unknown), uint.\n * @type {number}\n */\n\n this.dimensionsDetectCount = fields.dimensionsDetectCount;\n}\n/**\n * Wrap original series data for some compatibility cases.\n */\n\n\nSource.seriesDataToSource = function (data) {\n return new Source({\n data: data,\n sourceFormat: isTypedArray(data) ? SOURCE_FORMAT_TYPED_ARRAY : SOURCE_FORMAT_ORIGINAL,\n fromDataset: false\n });\n};\n\nenableClassCheck(Source);\nvar _default = Source;\nmodule.exports = _default;","\n/*\n* Licensed to the Apache Software Foundation (ASF) under one\n* or more contributor license agreements. See the NOTICE file\n* distributed with this work for additional information\n* regarding copyright ownership. The ASF licenses this file\n* to you under the Apache License, Version 2.0 (the\n* \"License\"); you may not use this file except in compliance\n* with the License. You may obtain a copy of the License at\n*\n* http://www.apache.org/licenses/LICENSE-2.0\n*\n* Unless required by applicable law or agreed to in writing,\n* software distributed under the License is distributed on an\n* \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n* KIND, either express or implied. See the License for the\n* specific language governing permissions and limitations\n* under the License.\n*/\n\nvar zrUtil = require(\"zrender/lib/core/util\");\n\nvar Model = require(\"../model/Model\");\n\nvar linkList = require(\"./helper/linkList\");\n\nvar List = require(\"./List\");\n\nvar createDimensions = require(\"./helper/createDimensions\");\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 * Tree data structure\n *\n * @module echarts/data/Tree\n */\n\n/**\n * @constructor module:echarts/data/Tree~TreeNode\n * @param {string} name\n * @param {module:echarts/data/Tree} hostTree\n */\nvar TreeNode = function (name, hostTree) {\n /**\n * @type {string}\n */\n this.name = name || '';\n /**\n * Depth of node\n *\n * @type {number}\n * @readOnly\n */\n\n this.depth = 0;\n /**\n * Height of the subtree rooted at this node.\n * @type {number}\n * @readOnly\n */\n\n this.height = 0;\n /**\n * @type {module:echarts/data/Tree~TreeNode}\n * @readOnly\n */\n\n this.parentNode = null;\n /**\n * Reference to list item.\n * Do not persistent dataIndex outside,\n * besause it may be changed by list.\n * If dataIndex -1,\n * this node is logical deleted (filtered) in list.\n *\n * @type {Object}\n * @readOnly\n */\n\n this.dataIndex = -1;\n /**\n * @type {Array.<module:echarts/data/Tree~TreeNode>}\n * @readOnly\n */\n\n this.children = [];\n /**\n * @type {Array.<module:echarts/data/Tree~TreeNode>}\n * @pubilc\n */\n\n this.viewChildren = [];\n /**\n * @type {moduel:echarts/data/Tree}\n * @readOnly\n */\n\n this.hostTree = hostTree;\n};\n\nTreeNode.prototype = {\n constructor: TreeNode,\n\n /**\n * The node is removed.\n * @return {boolean} is removed.\n */\n isRemoved: function () {\n return this.dataIndex < 0;\n },\n\n /**\n * Travel this subtree (include this node).\n * Usage:\n * node.eachNode(function () { ... }); // preorder\n * node.eachNode('preorder', function () { ... }); // preorder\n * node.eachNode('postorder', function () { ... }); // postorder\n * node.eachNode(\n * {order: 'postorder', attr: 'viewChildren'},\n * function () { ... }\n * ); // postorder\n *\n * @param {(Object|string)} options If string, means order.\n * @param {string=} options.order 'preorder' or 'postorder'\n * @param {string=} options.attr 'children' or 'viewChildren'\n * @param {Function} cb If in preorder and return false,\n * its subtree will not be visited.\n * @param {Object} [context]\n */\n eachNode: function (options, cb, context) {\n if (typeof options === 'function') {\n context = cb;\n cb = options;\n options = null;\n }\n\n options = options || {};\n\n if (zrUtil.isString(options)) {\n options = {\n order: options\n };\n }\n\n var order = options.order || 'preorder';\n var children = this[options.attr || 'children'];\n var suppressVisitSub;\n order === 'preorder' && (suppressVisitSub = cb.call(context, this));\n\n for (var i = 0; !suppressVisitSub && i < children.length; i++) {\n children[i].eachNode(options, cb, context);\n }\n\n order === 'postorder' && cb.call(context, this);\n },\n\n /**\n * Update depth and height of this subtree.\n *\n * @param {number} depth\n */\n updateDepthAndHeight: function (depth) {\n var height = 0;\n this.depth = depth;\n\n for (var i = 0; i < this.children.length; i++) {\n var child = this.children[i];\n child.updateDepthAndHeight(depth + 1);\n\n if (child.height > height) {\n height = child.height;\n }\n }\n\n this.height = height + 1;\n },\n\n /**\n * @param {string} id\n * @return {module:echarts/data/Tree~TreeNode}\n */\n getNodeById: function (id) {\n if (this.getId() === id) {\n return this;\n }\n\n for (var i = 0, children = this.children, len = children.length; i < len; i++) {\n var res = children[i].getNodeById(id);\n\n if (res) {\n return res;\n }\n }\n },\n\n /**\n * @param {module:echarts/data/Tree~TreeNode} node\n * @return {boolean}\n */\n contains: function (node) {\n if (node === this) {\n return true;\n }\n\n for (var i = 0, children = this.children, len = children.length; i < len; i++) {\n var res = children[i].contains(node);\n\n if (res) {\n return res;\n }\n }\n },\n\n /**\n * @param {boolean} includeSelf Default false.\n * @return {Array.<module:echarts/data/Tree~TreeNode>} order: [root, child, grandchild, ...]\n */\n getAncestors: function (includeSelf) {\n var ancestors = [];\n var node = includeSelf ? this : this.parentNode;\n\n while (node) {\n ancestors.push(node);\n node = node.parentNode;\n }\n\n ancestors.reverse();\n return ancestors;\n },\n\n /**\n * @param {string|Array=} [dimension='value'] Default 'value'. can be 0, 1, 2, 3\n * @return {number} Value.\n */\n getValue: function (dimension) {\n var data = this.hostTree.data;\n return data.get(data.getDimension(dimension || 'value'), this.dataIndex);\n },\n\n /**\n * @param {Object} layout\n * @param {boolean=} [merge=false]\n */\n setLayout: function (layout, merge) {\n this.dataIndex >= 0 && this.hostTree.data.setItemLayout(this.dataIndex, layout, merge);\n },\n\n /**\n * @return {Object} layout\n */\n getLayout: function () {\n return this.hostTree.data.getItemLayout(this.dataIndex);\n },\n\n /**\n * @param {string} [path]\n * @return {module:echarts/model/Model}\n */\n getModel: function (path) {\n if (this.dataIndex < 0) {\n return;\n }\n\n var hostTree = this.hostTree;\n var itemModel = hostTree.data.getItemModel(this.dataIndex);\n var levelModel = this.getLevelModel(); // FIXME: refactor levelModel to \"beforeLink\", and remove levelModel here.\n\n if (levelModel) {\n return itemModel.getModel(path, levelModel.getModel(path));\n } else {\n return itemModel.getModel(path);\n }\n },\n\n /**\n * @return {module:echarts/model/Model}\n */\n getLevelModel: function () {\n return (this.hostTree.levelModels || [])[this.depth];\n },\n\n /**\n * @example\n * setItemVisual('color', color);\n * setItemVisual({\n * 'color': color\n * });\n */\n setVisual: function (key, value) {\n this.dataIndex >= 0 && this.hostTree.data.setItemVisual(this.dataIndex, key, value);\n },\n\n /**\n * Get item visual\n */\n getVisual: function (key, ignoreParent) {\n return this.hostTree.data.getItemVisual(this.dataIndex, key, ignoreParent);\n },\n\n /**\n * @public\n * @return {number}\n */\n getRawIndex: function () {\n return this.hostTree.data.getRawIndex(this.dataIndex);\n },\n\n /**\n * @public\n * @return {string}\n */\n getId: function () {\n return this.hostTree.data.getId(this.dataIndex);\n },\n\n /**\n * if this is an ancestor of another node\n *\n * @public\n * @param {TreeNode} node another node\n * @return {boolean} if is ancestor\n */\n isAncestorOf: function (node) {\n var parent = node.parentNode;\n\n while (parent) {\n if (parent === this) {\n return true;\n }\n\n parent = parent.parentNode;\n }\n\n return false;\n },\n\n /**\n * if this is an descendant of another node\n *\n * @public\n * @param {TreeNode} node another node\n * @return {boolean} if is descendant\n */\n isDescendantOf: function (node) {\n return node !== this && node.isAncestorOf(this);\n }\n};\n/**\n * @constructor\n * @alias module:echarts/data/Tree\n * @param {module:echarts/model/Model} hostModel\n * @param {Array.<Object>} levelOptions\n */\n\nfunction Tree(hostModel, levelOptions) {\n /**\n * @type {module:echarts/data/Tree~TreeNode}\n * @readOnly\n */\n this.root;\n /**\n * @type {module:echarts/data/List}\n * @readOnly\n */\n\n this.data;\n /**\n * Index of each item is the same as the raw index of coresponding list item.\n * @private\n * @type {Array.<module:echarts/data/Tree~TreeNode}\n */\n\n this._nodes = [];\n /**\n * @private\n * @readOnly\n * @type {module:echarts/model/Model}\n */\n\n this.hostModel = hostModel;\n /**\n * @private\n * @readOnly\n * @type {Array.<module:echarts/model/Model}\n */\n\n this.levelModels = zrUtil.map(levelOptions || [], function (levelDefine) {\n return new Model(levelDefine, hostModel, hostModel.ecModel);\n });\n}\n\nTree.prototype = {\n constructor: Tree,\n type: 'tree',\n\n /**\n * Travel this subtree (include this node).\n * Usage:\n * node.eachNode(function () { ... }); // preorder\n * node.eachNode('preorder', function () { ... }); // preorder\n * node.eachNode('postorder', function () { ... }); // postorder\n * node.eachNode(\n * {order: 'postorder', attr: 'viewChildren'},\n * function () { ... }\n * ); // postorder\n *\n * @param {(Object|string)} options If string, means order.\n * @param {string=} options.order 'preorder' or 'postorder'\n * @param {string=} options.attr 'children' or 'viewChildren'\n * @param {Function} cb\n * @param {Object} [context]\n */\n eachNode: function (options, cb, context) {\n this.root.eachNode(options, cb, context);\n },\n\n /**\n * @param {number} dataIndex\n * @return {module:echarts/data/Tree~TreeNode}\n */\n getNodeByDataIndex: function (dataIndex) {\n var rawIndex = this.data.getRawIndex(dataIndex);\n return this._nodes[rawIndex];\n },\n\n /**\n * @param {string} name\n * @return {module:echarts/data/Tree~TreeNode}\n */\n getNodeByName: function (name) {\n return this.root.getNodeByName(name);\n },\n\n /**\n * Update item available by list,\n * when list has been performed options like 'filterSelf' or 'map'.\n */\n update: function () {\n var data = this.data;\n var nodes = this._nodes;\n\n for (var i = 0, len = nodes.length; i < len; i++) {\n nodes[i].dataIndex = -1;\n }\n\n for (var i = 0, len = data.count(); i < len; i++) {\n nodes[data.getRawIndex(i)].dataIndex = i;\n }\n },\n\n /**\n * Clear all layouts\n */\n clearLayouts: function () {\n this.data.clearItemLayouts();\n }\n};\n/**\n * data node format:\n * {\n * name: ...\n * value: ...\n * children: [\n * {\n * name: ...\n * value: ...\n * children: ...\n * },\n * ...\n * ]\n * }\n *\n * @static\n * @param {Object} dataRoot Root node.\n * @param {module:echarts/model/Model} hostModel\n * @param {Object} treeOptions\n * @param {Array.<Object>} treeOptions.levels\n * @return module:echarts/data/Tree\n */\n\nTree.createTree = function (dataRoot, hostModel, treeOptions, beforeLink) {\n var tree = new Tree(hostModel, treeOptions && treeOptions.levels);\n var listData = [];\n var dimMax = 1;\n buildHierarchy(dataRoot);\n\n function buildHierarchy(dataNode, parentNode) {\n var value = dataNode.value;\n dimMax = Math.max(dimMax, zrUtil.isArray(value) ? value.length : 1);\n listData.push(dataNode);\n var node = new TreeNode(dataNode.name, tree);\n parentNode ? addChild(node, parentNode) : tree.root = node;\n\n tree._nodes.push(node);\n\n var children = dataNode.children;\n\n if (children) {\n for (var i = 0; i < children.length; i++) {\n buildHierarchy(children[i], node);\n }\n }\n }\n\n tree.root.updateDepthAndHeight(0);\n var dimensionsInfo = createDimensions(listData, {\n coordDimensions: ['value'],\n dimensionsCount: dimMax\n });\n var list = new List(dimensionsInfo, hostModel);\n list.initData(listData);\n beforeLink && beforeLink(list);\n linkList({\n mainData: list,\n struct: tree,\n structAttr: 'tree'\n });\n tree.update();\n return tree;\n};\n/**\n * It is needed to consider the mess of 'list', 'hostModel' when creating a TreeNote,\n * so this function is not ready and not necessary to be public.\n *\n * @param {(module:echarts/data/Tree~TreeNode|Object)} child\n */\n\n\nfunction addChild(child, node) {\n var children = node.children;\n\n if (child.parentNode === node) {\n return;\n }\n\n children.push(child);\n child.parentNode = node;\n}\n\nvar _default = Tree;\nmodule.exports = _default;"],"names":["defaultKeyGetter","item","DataDiffer","oldArr","newArr","oldKeyGetter","newKeyGetter","context","this","_old","_new","_oldKeyGetter","_newKeyGetter","initIndexMap","arr","map","keyArr","keyGetterName","dataDiffer","i","length","key","existence","push","prototype","constructor","add","func","_add","update","_update","remove","_remove","execute","oldDataIndexMap","newDataIndexMap","oldDataKeyArr","newDataKeyArr","idx","len","shift","hasOwnProperty","j","_default","module","exports","zrUtil","DataDimensionInfo","opt","extend","otherDims","_config","__DEV__","_clazz","enableClassCheck","generateNodeKey","id","Graph","directed","_directed","nodes","edges","_nodesMap","_edgesMap","data","edgeData","graphProto","Node","dataIndex","inEdges","outEdges","hostGraph","Edge","n1","n2","node1","node2","type","isDirected","addNode","nodesMap","node","getNodeByIndex","rawIdx","getRawIndex","getNodeById","addEdge","edgesMap","isInstance","edge","getEdgeByIndex","getEdge","eachNode","cb","call","eachEdge","breadthFirstTraverse","startNode","direction","edgeType","__visited","queue","currentNode","e","otherNode","count","filterSelf","clone","graph","degree","inDegree","outDegree","getModel","path","itemModel","getItemModel","createGraphDataProxyMixin","hostName","dataName","getValue","dimension","get","getDimension","setVisual","value","setItemVisual","getVisual","ignoreParent","getItemVisual","setLayout","layout","merge","setItemLayout","getLayout","getItemLayout","getGraphicEl","getItemGraphicEl","mixin","Model","Source","_dataProvider","defaultDimValueGetters","DefaultDataProvider","_dimensionHelper","summarizeDimensions","isObject","UNDEFINED","INDEX_NOT_FOUND","ID_PREFIX","dataCtors","Float64Array","Array","Int32Array","CtorUint32Array","Uint32Array","CtorInt32Array","CtorUint16Array","Uint16Array","getIndicesCtor","list","_rawCount","cloneChunk","originalChunk","Ctor","slice","TRANSFERABLE_PROPERTIES","CLONE_PROPERTIES","transferProperties","target","source","each","concat","__wrappedMethods","propName","_calculationInfo","List","dimensions","hostModel","dimensionInfos","dimensionNames","invertedIndicesMap","dimensionInfo","isString","name","dimensionName","coordDim","coordDimIndex","index","createInvertedIndices","_dimensionInfos","dataType","_indices","_count","_storage","_nameList","_idList","_optionModels","_visual","_layout","_itemVisuals","hasItemVisual","_itemLayouts","_graphicEls","_chunkSize","_chunkCount","_rawData","_rawExtent","_extent","_approximateExtent","_dimensionsSummary","_invertedIndicesMap","userOutput","listProto","prepareChunks","storage","dimInfo","chunkSize","chunkCount","end","DataCtor","lastChunkIndex","dim","resizeChunkArray","newStore","Math","min","k","prepareInvertedIndex","invertedIndices","ordinalMeta","categories","getRawValueFromStore","dimIndex","rawIndex","val","chunkIndex","floor","chunkOffset","chunk","getRawIndexWithoutIndices","getRawIndexWithIndices","getId","_idDimIdx","normalizeDimensions","isArray","cloneListForMapAndSample","original","excludeDimensions","allDimensions","getDimensionInfo","originalStorage","indexOf","cloneDimStore","getInitialExtent","originalDimStore","newDimStore","Infinity","hasItemOption","isNaN","getDimensionsOnCoord","dataDimsOnCoord","mapDimension","dimensionsSummary","encodeFirstDimNotExtra","dims","encode","initData","nameList","dimValueGetter","notProvider","isArrayLike","_nameRepeatCount","defaultDimValueGetter","getSource","sourceFormat","_dimValueGetter","_dimValueGetterArrayRows","arrayRows","_initDataFromProvider","pure","getProvider","appendData","rawData","start","persistent","appendValues","values","names","dimLen","rawExtent","max","originalChunkCount","emptyDataItem","sourceIdx","dimRawExtent","nameDimIdx","dimensionInfoMap","idList","nameRepeatCount","itemName","_nameDimIdx","itemId","dataItem","getItem","dimStorage","nameDim","nameDimChunk","clean","getIndices","indices","thisCount","newIndices","buffer","NaN","chunkStore","getByRawIndex","dimStore","_getFast","getValues","hasValue","getDataExtent","dimData","initialExtent","dimExtent","currEnd","useRaw","getApproximateExtent","setApproximateExtent","extent","getCalculationInfo","setCalculationInfo","getSum","sum","getMedian","dimDataArray","sortedDimDataArray","sort","a","b","rawIndexOf","indexOfName","getName","indexOfRawIndex","rawDataIndex","left","right","mid","indicesOfNearest","maxDistance","nearestIndices","minDist","minDiff","nearestIndicesLen","diff","dist","abs","getRawDataItem","contextCompat","dimSize","apply","offset","dim0","keep","selectRange","range","originalCount","quickFinished","chunkStorage","dimStorage2","min2","max2","chunkStorage2","val2","dimk","mapArray","result","arguments","tmpRetValue","dataCount","retValue","rawExtentOnDim","downSample","rate","sampleValue","sampleIndex","targetStorage","frameValues","frameSize","dataIdx","originalChunkIndex","originalChunkOffset","sampleFrameIdx","sampleChunkIndex","sampleChunkOffset","ecModel","otherList","thisList","visual","clearItemLayouts","itemVisual","clearAllVisual","setItemDataAndSeriesIndex","child","seriesIndex","setItemGraphicEl","el","traverse","eachItemGraphicEl","cloneShallow","dimensionInfoList","wrapMethod","methodName","injectFunction","originalMethod","res","TRANSFERABLE_METHODS","CHANGABLE_METHODS","_util","createHashMap","OrdinalMeta","_needCollect","needCollect","_deduplication","deduplication","_map","createByAxisModel","axisModel","option","dedplication","proto","getOrCreateMap","obj","getOrdinal","category","parseAndCollect","set","isTypedArray","_sourceType","SOURCE_FORMAT_ORIGINAL","SERIES_LAYOUT_BY_COLUMN","SOURCE_FORMAT_UNKNOWN","SOURCE_FORMAT_TYPED_ARRAY","SOURCE_FORMAT_KEYED_COLUMNS","fields","fromDataset","seriesLayoutBy","dimensionsDefine","encodeDefine","startIndex","dimensionsDetectCount","seriesDataToSource","linkList","createDimensions","TreeNode","hostTree","depth","height","parentNode","children","viewChildren","Tree","levelOptions","root","_nodes","levelModels","levelDefine","addChild","isRemoved","options","order","suppressVisitSub","attr","updateDepthAndHeight","contains","getAncestors","includeSelf","ancestors","reverse","levelModel","getLevelModel","isAncestorOf","parent","isDescendantOf","getNodeByDataIndex","getNodeByName","clearLayouts","createTree","dataRoot","treeOptions","beforeLink","tree","levels","listData","dimMax","buildHierarchy","dataNode","dimensionsInfo","coordDimensions","dimensionsCount","mainData","struct","structAttr"],"sourceRoot":""}
|