You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
			
				
					172 lines
				
				4.9 KiB
			
		
		
			
		
	
	
					172 lines
				
				4.9 KiB
			| 
								 
											4 years ago
										 
									 | 
							
								
							 | 
						||
| 
								 | 
							
								/*
							 | 
						||
| 
								 | 
							
								* Licensed to the Apache Software Foundation (ASF) under one
							 | 
						||
| 
								 | 
							
								* or more contributor license agreements.  See the NOTICE file
							 | 
						||
| 
								 | 
							
								* distributed with this work for additional information
							 | 
						||
| 
								 | 
							
								* regarding copyright ownership.  The ASF licenses this file
							 | 
						||
| 
								 | 
							
								* to you under the Apache License, Version 2.0 (the
							 | 
						||
| 
								 | 
							
								* "License"); you may not use this file except in compliance
							 | 
						||
| 
								 | 
							
								* with the License.  You may obtain a copy of the License at
							 | 
						||
| 
								 | 
							
								*
							 | 
						||
| 
								 | 
							
								*   http://www.apache.org/licenses/LICENSE-2.0
							 | 
						||
| 
								 | 
							
								*
							 | 
						||
| 
								 | 
							
								* Unless required by applicable law or agreed to in writing,
							 | 
						||
| 
								 | 
							
								* software distributed under the License is distributed on an
							 | 
						||
| 
								 | 
							
								* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
							 | 
						||
| 
								 | 
							
								* KIND, either express or implied.  See the License for the
							 | 
						||
| 
								 | 
							
								* specific language governing permissions and limitations
							 | 
						||
| 
								 | 
							
								* under the License.
							 | 
						||
| 
								 | 
							
								*/
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								var _util = require("zrender/lib/core/util");
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								var createHashMap = _util.createHashMap;
							 | 
						||
| 
								 | 
							
								var isTypedArray = _util.isTypedArray;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								var _clazz = require("../util/clazz");
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								var enableClassCheck = _clazz.enableClassCheck;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								var _sourceType = require("./helper/sourceType");
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								var SOURCE_FORMAT_ORIGINAL = _sourceType.SOURCE_FORMAT_ORIGINAL;
							 | 
						||
| 
								 | 
							
								var SERIES_LAYOUT_BY_COLUMN = _sourceType.SERIES_LAYOUT_BY_COLUMN;
							 | 
						||
| 
								 | 
							
								var SOURCE_FORMAT_UNKNOWN = _sourceType.SOURCE_FORMAT_UNKNOWN;
							 | 
						||
| 
								 | 
							
								var SOURCE_FORMAT_TYPED_ARRAY = _sourceType.SOURCE_FORMAT_TYPED_ARRAY;
							 | 
						||
| 
								 | 
							
								var SOURCE_FORMAT_KEYED_COLUMNS = _sourceType.SOURCE_FORMAT_KEYED_COLUMNS;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/*
							 | 
						||
| 
								 | 
							
								* Licensed to the Apache Software Foundation (ASF) under one
							 | 
						||
| 
								 | 
							
								* or more contributor license agreements.  See the NOTICE file
							 | 
						||
| 
								 | 
							
								* distributed with this work for additional information
							 | 
						||
| 
								 | 
							
								* regarding copyright ownership.  The ASF licenses this file
							 | 
						||
| 
								 | 
							
								* to you under the Apache License, Version 2.0 (the
							 | 
						||
| 
								 | 
							
								* "License"); you may not use this file except in compliance
							 | 
						||
| 
								 | 
							
								* with the License.  You may obtain a copy of the License at
							 | 
						||
| 
								 | 
							
								*
							 | 
						||
| 
								 | 
							
								*   http://www.apache.org/licenses/LICENSE-2.0
							 | 
						||
| 
								 | 
							
								*
							 | 
						||
| 
								 | 
							
								* Unless required by applicable law or agreed to in writing,
							 | 
						||
| 
								 | 
							
								* software distributed under the License is distributed on an
							 | 
						||
| 
								 | 
							
								* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
							 | 
						||
| 
								 | 
							
								* KIND, either express or implied.  See the License for the
							 | 
						||
| 
								 | 
							
								* specific language governing permissions and limitations
							 | 
						||
| 
								 | 
							
								* under the License.
							 | 
						||
| 
								 | 
							
								*/
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * [sourceFormat]
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * + "original":
							 | 
						||
| 
								 | 
							
								 * This format is only used in series.data, where
							 | 
						||
| 
								 | 
							
								 * itemStyle can be specified in data item.
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * + "arrayRows":
							 | 
						||
| 
								 | 
							
								 * [
							 | 
						||
| 
								 | 
							
								 *     ['product', 'score', 'amount'],
							 | 
						||
| 
								 | 
							
								 *     ['Matcha Latte', 89.3, 95.8],
							 | 
						||
| 
								 | 
							
								 *     ['Milk Tea', 92.1, 89.4],
							 | 
						||
| 
								 | 
							
								 *     ['Cheese Cocoa', 94.4, 91.2],
							 | 
						||
| 
								 | 
							
								 *     ['Walnut Brownie', 85.4, 76.9]
							 | 
						||
| 
								 | 
							
								 * ]
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * + "objectRows":
							 | 
						||
| 
								 | 
							
								 * [
							 | 
						||
| 
								 | 
							
								 *     {product: 'Matcha Latte', score: 89.3, amount: 95.8},
							 | 
						||
| 
								 | 
							
								 *     {product: 'Milk Tea', score: 92.1, amount: 89.4},
							 | 
						||
| 
								 | 
							
								 *     {product: 'Cheese Cocoa', score: 94.4, amount: 91.2},
							 | 
						||
| 
								 | 
							
								 *     {product: 'Walnut Brownie', score: 85.4, amount: 76.9}
							 | 
						||
| 
								 | 
							
								 * ]
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * + "keyedColumns":
							 | 
						||
| 
								 | 
							
								 * {
							 | 
						||
| 
								 | 
							
								 *     'product': ['Matcha Latte', 'Milk Tea', 'Cheese Cocoa', 'Walnut Brownie'],
							 | 
						||
| 
								 | 
							
								 *     'count': [823, 235, 1042, 988],
							 | 
						||
| 
								 | 
							
								 *     'score': [95.8, 81.4, 91.2, 76.9]
							 | 
						||
| 
								 | 
							
								 * }
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * + "typedArray"
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * + "unknown"
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * @constructor
							 | 
						||
| 
								 | 
							
								 * @param {Object} fields
							 | 
						||
| 
								 | 
							
								 * @param {string} fields.sourceFormat
							 | 
						||
| 
								 | 
							
								 * @param {Array|Object} fields.fromDataset
							 | 
						||
| 
								 | 
							
								 * @param {Array|Object} [fields.data]
							 | 
						||
| 
								 | 
							
								 * @param {string} [seriesLayoutBy='column']
							 | 
						||
| 
								 | 
							
								 * @param {Array.<Object|string>} [dimensionsDefine]
							 | 
						||
| 
								 | 
							
								 * @param {Objet|HashMap} [encodeDefine]
							 | 
						||
| 
								 | 
							
								 * @param {number} [startIndex=0]
							 | 
						||
| 
								 | 
							
								 * @param {number} [dimensionsDetectCount]
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								function Source(fields) {
							 | 
						||
| 
								 | 
							
								  /**
							 | 
						||
| 
								 | 
							
								   * @type {boolean}
							 | 
						||
| 
								 | 
							
								   */
							 | 
						||
| 
								 | 
							
								  this.fromDataset = fields.fromDataset;
							 | 
						||
| 
								 | 
							
								  /**
							 | 
						||
| 
								 | 
							
								   * Not null/undefined.
							 | 
						||
| 
								 | 
							
								   * @type {Array|Object}
							 | 
						||
| 
								 | 
							
								   */
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  this.data = fields.data || (fields.sourceFormat === SOURCE_FORMAT_KEYED_COLUMNS ? {} : []);
							 | 
						||
| 
								 | 
							
								  /**
							 | 
						||
| 
								 | 
							
								   * See also "detectSourceFormat".
							 | 
						||
| 
								 | 
							
								   * Not null/undefined.
							 | 
						||
| 
								 | 
							
								   * @type {string}
							 | 
						||
| 
								 | 
							
								   */
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  this.sourceFormat = fields.sourceFormat || SOURCE_FORMAT_UNKNOWN;
							 | 
						||
| 
								 | 
							
								  /**
							 | 
						||
| 
								 | 
							
								   * 'row' or 'column'
							 | 
						||
| 
								 | 
							
								   * Not null/undefined.
							 | 
						||
| 
								 | 
							
								   * @type {string} seriesLayoutBy
							 | 
						||
| 
								 | 
							
								   */
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  this.seriesLayoutBy = fields.seriesLayoutBy || SERIES_LAYOUT_BY_COLUMN;
							 | 
						||
| 
								 | 
							
								  /**
							 | 
						||
| 
								 | 
							
								   * dimensions definition in option.
							 | 
						||
| 
								 | 
							
								   * can be null/undefined.
							 | 
						||
| 
								 | 
							
								   * @type {Array.<Object|string>}
							 | 
						||
| 
								 | 
							
								   */
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  this.dimensionsDefine = fields.dimensionsDefine;
							 | 
						||
| 
								 | 
							
								  /**
							 | 
						||
| 
								 | 
							
								   * encode definition in option.
							 | 
						||
| 
								 | 
							
								   * can be null/undefined.
							 | 
						||
| 
								 | 
							
								   * @type {Objet|HashMap}
							 | 
						||
| 
								 | 
							
								   */
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  this.encodeDefine = fields.encodeDefine && createHashMap(fields.encodeDefine);
							 | 
						||
| 
								 | 
							
								  /**
							 | 
						||
| 
								 | 
							
								   * Not null/undefined, uint.
							 | 
						||
| 
								 | 
							
								   * @type {number}
							 | 
						||
| 
								 | 
							
								   */
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  this.startIndex = fields.startIndex || 0;
							 | 
						||
| 
								 | 
							
								  /**
							 | 
						||
| 
								 | 
							
								   * Can be null/undefined (when unknown), uint.
							 | 
						||
| 
								 | 
							
								   * @type {number}
							 | 
						||
| 
								 | 
							
								   */
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  this.dimensionsDetectCount = fields.dimensionsDetectCount;
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * Wrap original series data for some compatibility cases.
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								Source.seriesDataToSource = function (data) {
							 | 
						||
| 
								 | 
							
								  return new Source({
							 | 
						||
| 
								 | 
							
								    data: data,
							 | 
						||
| 
								 | 
							
								    sourceFormat: isTypedArray(data) ? SOURCE_FORMAT_TYPED_ARRAY : SOURCE_FORMAT_ORIGINAL,
							 | 
						||
| 
								 | 
							
								    fromDataset: false
							 | 
						||
| 
								 | 
							
								  });
							 | 
						||
| 
								 | 
							
								};
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								enableClassCheck(Source);
							 | 
						||
| 
								 | 
							
								var _default = Source;
							 | 
						||
| 
								 | 
							
								module.exports = _default;
							 |