| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194 | 
							
- /*
 
- * 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.
 
- */
 
- /**
 
-  * AUTO-GENERATED FILE. DO NOT MODIFY.
 
-  */
 
- /*
 
- * 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.
 
- */
 
- import * as numberUtil from '../../util/number.js';
 
- import { isDimensionStacked } from '../../data/helper/dataStackHelper.js';
 
- import { indexOf, curry, clone, isArray } from 'zrender/lib/core/util.js';
 
- import { parseDataValue } from '../../data/helper/dataValueHelper.js';
 
- function hasXOrY(item) {
 
-   return !(isNaN(parseFloat(item.x)) && isNaN(parseFloat(item.y)));
 
- }
 
- function hasXAndY(item) {
 
-   return !isNaN(parseFloat(item.x)) && !isNaN(parseFloat(item.y));
 
- }
 
- function markerTypeCalculatorWithExtent(markerType, data, otherDataDim, targetDataDim, otherCoordIndex, targetCoordIndex) {
 
-   var coordArr = [];
 
-   var stacked = isDimensionStacked(data, targetDataDim
 
-   /*, otherDataDim*/
 
-   );
 
-   var calcDataDim = stacked ? data.getCalculationInfo('stackResultDimension') : targetDataDim;
 
-   var value = numCalculate(data, calcDataDim, markerType);
 
-   var dataIndex = data.indicesOfNearest(calcDataDim, value)[0];
 
-   coordArr[otherCoordIndex] = data.get(otherDataDim, dataIndex);
 
-   coordArr[targetCoordIndex] = data.get(calcDataDim, dataIndex);
 
-   var coordArrValue = data.get(targetDataDim, dataIndex); // Make it simple, do not visit all stacked value to count precision.
 
-   var precision = numberUtil.getPrecision(data.get(targetDataDim, dataIndex));
 
-   precision = Math.min(precision, 20);
 
-   if (precision >= 0) {
 
-     coordArr[targetCoordIndex] = +coordArr[targetCoordIndex].toFixed(precision);
 
-   }
 
-   return [coordArr, coordArrValue];
 
- } // TODO Specified percent
 
- var markerTypeCalculator = {
 
-   min: curry(markerTypeCalculatorWithExtent, 'min'),
 
-   max: curry(markerTypeCalculatorWithExtent, 'max'),
 
-   average: curry(markerTypeCalculatorWithExtent, 'average'),
 
-   median: curry(markerTypeCalculatorWithExtent, 'median')
 
- };
 
- /**
 
-  * Transform markPoint data item to format used in List by do the following
 
-  * 1. Calculate statistic like `max`, `min`, `average`
 
-  * 2. Convert `item.xAxis`, `item.yAxis` to `item.coord` array
 
-  */
 
- export function dataTransform(seriesModel, item) {
 
-   var data = seriesModel.getData();
 
-   var coordSys = seriesModel.coordinateSystem; // 1. If not specify the position with pixel directly
 
-   // 2. If `coord` is not a data array. Which uses `xAxis`,
 
-   // `yAxis` to specify the coord on each dimension
 
-   // parseFloat first because item.x and item.y can be percent string like '20%'
 
-   if (item && !hasXAndY(item) && !isArray(item.coord) && coordSys) {
 
-     var dims = coordSys.dimensions;
 
-     var axisInfo = getAxisInfo(item, data, coordSys, seriesModel); // Clone the option
 
-     // Transform the properties xAxis, yAxis, radiusAxis, angleAxis, geoCoord to value
 
-     item = clone(item);
 
-     if (item.type && markerTypeCalculator[item.type] && axisInfo.baseAxis && axisInfo.valueAxis) {
 
-       var otherCoordIndex = indexOf(dims, axisInfo.baseAxis.dim);
 
-       var targetCoordIndex = indexOf(dims, axisInfo.valueAxis.dim);
 
-       var coordInfo = markerTypeCalculator[item.type](data, axisInfo.baseDataDim, axisInfo.valueDataDim, otherCoordIndex, targetCoordIndex);
 
-       item.coord = coordInfo[0]; // Force to use the value of calculated value.
 
-       // let item use the value without stack.
 
-       item.value = coordInfo[1];
 
-     } else {
 
-       // FIXME Only has one of xAxis and yAxis.
 
-       var coord = [item.xAxis != null ? item.xAxis : item.radiusAxis, item.yAxis != null ? item.yAxis : item.angleAxis]; // Each coord support max, min, average
 
-       for (var i = 0; i < 2; i++) {
 
-         if (markerTypeCalculator[coord[i]]) {
 
-           coord[i] = numCalculate(data, data.mapDimension(dims[i]), coord[i]);
 
-         }
 
-       }
 
-       item.coord = coord;
 
-     }
 
-   }
 
-   return item;
 
- }
 
- export function getAxisInfo(item, data, coordSys, seriesModel) {
 
-   var ret = {};
 
-   if (item.valueIndex != null || item.valueDim != null) {
 
-     ret.valueDataDim = item.valueIndex != null ? data.getDimension(item.valueIndex) : item.valueDim;
 
-     ret.valueAxis = coordSys.getAxis(dataDimToCoordDim(seriesModel, ret.valueDataDim));
 
-     ret.baseAxis = coordSys.getOtherAxis(ret.valueAxis);
 
-     ret.baseDataDim = data.mapDimension(ret.baseAxis.dim);
 
-   } else {
 
-     ret.baseAxis = seriesModel.getBaseAxis();
 
-     ret.valueAxis = coordSys.getOtherAxis(ret.baseAxis);
 
-     ret.baseDataDim = data.mapDimension(ret.baseAxis.dim);
 
-     ret.valueDataDim = data.mapDimension(ret.valueAxis.dim);
 
-   }
 
-   return ret;
 
- }
 
- function dataDimToCoordDim(seriesModel, dataDim) {
 
-   var dimItem = seriesModel.getData().getDimensionInfo(dataDim);
 
-   return dimItem && dimItem.coordDim;
 
- }
 
- /**
 
-  * Filter data which is out of coordinateSystem range
 
-  * [dataFilter description]
 
-  */
 
- export function dataFilter( // Currently only polar and cartesian has containData.
 
- coordSys, item) {
 
-   // Always return true if there is no coordSys
 
-   return coordSys && coordSys.containData && item.coord && !hasXOrY(item) ? coordSys.containData(item.coord) : true;
 
- }
 
- export function zoneFilter( // Currently only polar and cartesian has containData.
 
- coordSys, item1, item2) {
 
-   // Always return true if there is no coordSys
 
-   return coordSys && coordSys.containZone && item1.coord && item2.coord && !hasXOrY(item1) && !hasXOrY(item2) ? coordSys.containZone(item1.coord, item2.coord) : true;
 
- }
 
- export function createMarkerDimValueGetter(inCoordSys, dims) {
 
-   return inCoordSys ? function (item, dimName, dataIndex, dimIndex) {
 
-     var rawVal = dimIndex < 2 // x, y, radius, angle
 
-     ? item.coord && item.coord[dimIndex] : item.value;
 
-     return parseDataValue(rawVal, dims[dimIndex]);
 
-   } : function (item, dimName, dataIndex, dimIndex) {
 
-     return parseDataValue(item.value, dims[dimIndex]);
 
-   };
 
- }
 
- export function numCalculate(data, valueDataDim, type) {
 
-   if (type === 'average') {
 
-     var sum_1 = 0;
 
-     var count_1 = 0;
 
-     data.each(valueDataDim, function (val, idx) {
 
-       if (!isNaN(val)) {
 
-         sum_1 += val;
 
-         count_1++;
 
-       }
 
-     });
 
-     return sum_1 / count_1;
 
-   } else if (type === 'median') {
 
-     return data.getMedian(valueDataDim);
 
-   } else {
 
-     // max & min
 
-     return data.getDataExtent(valueDataDim)[type === 'max' ? 1 : 0];
 
-   }
 
- }
 
 
  |