| 
/* 
 | 
* 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. 
 | 
*/ 
 | 
/** 
 | 
 * Helper for model references. 
 | 
 * There are many manners to refer axis/coordSys. 
 | 
 */ 
 | 
// TODO 
 | 
// merge relevant logic to this file? 
 | 
// check: "modelHelper" of tooltip and "BrushTargetManager". 
 | 
import { createHashMap, retrieve, each } from 'zrender/lib/core/util.js'; 
 | 
import { SINGLE_REFERRING } from '../util/model.js'; 
 | 
/** 
 | 
 * @class 
 | 
 * For example: 
 | 
 * { 
 | 
 *     coordSysName: 'cartesian2d', 
 | 
 *     coordSysDims: ['x', 'y', ...], 
 | 
 *     axisMap: HashMap({ 
 | 
 *         x: xAxisModel, 
 | 
 *         y: yAxisModel 
 | 
 *     }), 
 | 
 *     categoryAxisMap: HashMap({ 
 | 
 *         x: xAxisModel, 
 | 
 *         y: undefined 
 | 
 *     }), 
 | 
 *     // The index of the first category axis in `coordSysDims`. 
 | 
 *     // `null/undefined` means no category axis exists. 
 | 
 *     firstCategoryDimIndex: 1, 
 | 
 *     // To replace user specified encode. 
 | 
 * } 
 | 
 */ 
 | 
var CoordSysInfo = /** @class */function () { 
 | 
  function CoordSysInfo(coordSysName) { 
 | 
    this.coordSysDims = []; 
 | 
    this.axisMap = createHashMap(); 
 | 
    this.categoryAxisMap = createHashMap(); 
 | 
    this.coordSysName = coordSysName; 
 | 
  } 
 | 
  return CoordSysInfo; 
 | 
}(); 
 | 
export function getCoordSysInfoBySeries(seriesModel) { 
 | 
  var coordSysName = seriesModel.get('coordinateSystem'); 
 | 
  var result = new CoordSysInfo(coordSysName); 
 | 
  var fetch = fetchers[coordSysName]; 
 | 
  if (fetch) { 
 | 
    fetch(seriesModel, result, result.axisMap, result.categoryAxisMap); 
 | 
    return result; 
 | 
  } 
 | 
} 
 | 
var fetchers = { 
 | 
  cartesian2d: function (seriesModel, result, axisMap, categoryAxisMap) { 
 | 
    var xAxisModel = seriesModel.getReferringComponents('xAxis', SINGLE_REFERRING).models[0]; 
 | 
    var yAxisModel = seriesModel.getReferringComponents('yAxis', SINGLE_REFERRING).models[0]; 
 | 
    if (process.env.NODE_ENV !== 'production') { 
 | 
      if (!xAxisModel) { 
 | 
        throw new Error('xAxis "' + retrieve(seriesModel.get('xAxisIndex'), seriesModel.get('xAxisId'), 0) + '" not found'); 
 | 
      } 
 | 
      if (!yAxisModel) { 
 | 
        throw new Error('yAxis "' + retrieve(seriesModel.get('xAxisIndex'), seriesModel.get('yAxisId'), 0) + '" not found'); 
 | 
      } 
 | 
    } 
 | 
    result.coordSysDims = ['x', 'y']; 
 | 
    axisMap.set('x', xAxisModel); 
 | 
    axisMap.set('y', yAxisModel); 
 | 
    if (isCategory(xAxisModel)) { 
 | 
      categoryAxisMap.set('x', xAxisModel); 
 | 
      result.firstCategoryDimIndex = 0; 
 | 
    } 
 | 
    if (isCategory(yAxisModel)) { 
 | 
      categoryAxisMap.set('y', yAxisModel); 
 | 
      result.firstCategoryDimIndex == null && (result.firstCategoryDimIndex = 1); 
 | 
    } 
 | 
  }, 
 | 
  singleAxis: function (seriesModel, result, axisMap, categoryAxisMap) { 
 | 
    var singleAxisModel = seriesModel.getReferringComponents('singleAxis', SINGLE_REFERRING).models[0]; 
 | 
    if (process.env.NODE_ENV !== 'production') { 
 | 
      if (!singleAxisModel) { 
 | 
        throw new Error('singleAxis should be specified.'); 
 | 
      } 
 | 
    } 
 | 
    result.coordSysDims = ['single']; 
 | 
    axisMap.set('single', singleAxisModel); 
 | 
    if (isCategory(singleAxisModel)) { 
 | 
      categoryAxisMap.set('single', singleAxisModel); 
 | 
      result.firstCategoryDimIndex = 0; 
 | 
    } 
 | 
  }, 
 | 
  polar: function (seriesModel, result, axisMap, categoryAxisMap) { 
 | 
    var polarModel = seriesModel.getReferringComponents('polar', SINGLE_REFERRING).models[0]; 
 | 
    var radiusAxisModel = polarModel.findAxisModel('radiusAxis'); 
 | 
    var angleAxisModel = polarModel.findAxisModel('angleAxis'); 
 | 
    if (process.env.NODE_ENV !== 'production') { 
 | 
      if (!angleAxisModel) { 
 | 
        throw new Error('angleAxis option not found'); 
 | 
      } 
 | 
      if (!radiusAxisModel) { 
 | 
        throw new Error('radiusAxis option not found'); 
 | 
      } 
 | 
    } 
 | 
    result.coordSysDims = ['radius', 'angle']; 
 | 
    axisMap.set('radius', radiusAxisModel); 
 | 
    axisMap.set('angle', angleAxisModel); 
 | 
    if (isCategory(radiusAxisModel)) { 
 | 
      categoryAxisMap.set('radius', radiusAxisModel); 
 | 
      result.firstCategoryDimIndex = 0; 
 | 
    } 
 | 
    if (isCategory(angleAxisModel)) { 
 | 
      categoryAxisMap.set('angle', angleAxisModel); 
 | 
      result.firstCategoryDimIndex == null && (result.firstCategoryDimIndex = 1); 
 | 
    } 
 | 
  }, 
 | 
  geo: function (seriesModel, result, axisMap, categoryAxisMap) { 
 | 
    result.coordSysDims = ['lng', 'lat']; 
 | 
  }, 
 | 
  parallel: function (seriesModel, result, axisMap, categoryAxisMap) { 
 | 
    var ecModel = seriesModel.ecModel; 
 | 
    var parallelModel = ecModel.getComponent('parallel', seriesModel.get('parallelIndex')); 
 | 
    var coordSysDims = result.coordSysDims = parallelModel.dimensions.slice(); 
 | 
    each(parallelModel.parallelAxisIndex, function (axisIndex, index) { 
 | 
      var axisModel = ecModel.getComponent('parallelAxis', axisIndex); 
 | 
      var axisDim = coordSysDims[index]; 
 | 
      axisMap.set(axisDim, axisModel); 
 | 
      if (isCategory(axisModel)) { 
 | 
        categoryAxisMap.set(axisDim, axisModel); 
 | 
        if (result.firstCategoryDimIndex == null) { 
 | 
          result.firstCategoryDimIndex = index; 
 | 
        } 
 | 
      } 
 | 
    }); 
 | 
  } 
 | 
}; 
 | 
function isCategory(axisModel) { 
 | 
  return axisModel.get('type') === 'category'; 
 | 
} 
 |