| 
/* 
 | 
* 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. 
 | 
*/ 
 | 
/** 
 | 
 * Single coordinates system. 
 | 
 */ 
 | 
import SingleAxis from './SingleAxis.js'; 
 | 
import * as axisHelper from '../axisHelper.js'; 
 | 
import { getLayoutRect } from '../../util/layout.js'; 
 | 
import { each } from 'zrender/lib/core/util.js'; 
 | 
export var singleDimensions = ['single']; 
 | 
/** 
 | 
 * Create a single coordinates system. 
 | 
 */ 
 | 
var Single = /** @class */function () { 
 | 
  function Single(axisModel, ecModel, api) { 
 | 
    this.type = 'single'; 
 | 
    this.dimension = 'single'; 
 | 
    /** 
 | 
     * Add it just for draw tooltip. 
 | 
     */ 
 | 
    this.dimensions = singleDimensions; 
 | 
    this.axisPointerEnabled = true; 
 | 
    this.model = axisModel; 
 | 
    this._init(axisModel, ecModel, api); 
 | 
  } 
 | 
  /** 
 | 
   * Initialize single coordinate system. 
 | 
   */ 
 | 
  Single.prototype._init = function (axisModel, ecModel, api) { 
 | 
    var dim = this.dimension; 
 | 
    var axis = new SingleAxis(dim, axisHelper.createScaleByModel(axisModel), [0, 0], axisModel.get('type'), axisModel.get('position')); 
 | 
    var isCategory = axis.type === 'category'; 
 | 
    axis.onBand = isCategory && axisModel.get('boundaryGap'); 
 | 
    axis.inverse = axisModel.get('inverse'); 
 | 
    axis.orient = axisModel.get('orient'); 
 | 
    axisModel.axis = axis; 
 | 
    axis.model = axisModel; 
 | 
    axis.coordinateSystem = this; 
 | 
    this._axis = axis; 
 | 
  }; 
 | 
  /** 
 | 
   * Update axis scale after data processed 
 | 
   */ 
 | 
  Single.prototype.update = function (ecModel, api) { 
 | 
    ecModel.eachSeries(function (seriesModel) { 
 | 
      if (seriesModel.coordinateSystem === this) { 
 | 
        var data_1 = seriesModel.getData(); 
 | 
        each(data_1.mapDimensionsAll(this.dimension), function (dim) { 
 | 
          this._axis.scale.unionExtentFromData(data_1, dim); 
 | 
        }, this); 
 | 
        axisHelper.niceScaleExtent(this._axis.scale, this._axis.model); 
 | 
      } 
 | 
    }, this); 
 | 
  }; 
 | 
  /** 
 | 
   * Resize the single coordinate system. 
 | 
   */ 
 | 
  Single.prototype.resize = function (axisModel, api) { 
 | 
    this._rect = getLayoutRect({ 
 | 
      left: axisModel.get('left'), 
 | 
      top: axisModel.get('top'), 
 | 
      right: axisModel.get('right'), 
 | 
      bottom: axisModel.get('bottom'), 
 | 
      width: axisModel.get('width'), 
 | 
      height: axisModel.get('height') 
 | 
    }, { 
 | 
      width: api.getWidth(), 
 | 
      height: api.getHeight() 
 | 
    }); 
 | 
    this._adjustAxis(); 
 | 
  }; 
 | 
  Single.prototype.getRect = function () { 
 | 
    return this._rect; 
 | 
  }; 
 | 
  Single.prototype._adjustAxis = function () { 
 | 
    var rect = this._rect; 
 | 
    var axis = this._axis; 
 | 
    var isHorizontal = axis.isHorizontal(); 
 | 
    var extent = isHorizontal ? [0, rect.width] : [0, rect.height]; 
 | 
    var idx = axis.inverse ? 1 : 0; 
 | 
    axis.setExtent(extent[idx], extent[1 - idx]); 
 | 
    this._updateAxisTransform(axis, isHorizontal ? rect.x : rect.y); 
 | 
  }; 
 | 
  Single.prototype._updateAxisTransform = function (axis, coordBase) { 
 | 
    var axisExtent = axis.getExtent(); 
 | 
    var extentSum = axisExtent[0] + axisExtent[1]; 
 | 
    var isHorizontal = axis.isHorizontal(); 
 | 
    axis.toGlobalCoord = isHorizontal ? function (coord) { 
 | 
      return coord + coordBase; 
 | 
    } : function (coord) { 
 | 
      return extentSum - coord + coordBase; 
 | 
    }; 
 | 
    axis.toLocalCoord = isHorizontal ? function (coord) { 
 | 
      return coord - coordBase; 
 | 
    } : function (coord) { 
 | 
      return extentSum - coord + coordBase; 
 | 
    }; 
 | 
  }; 
 | 
  /** 
 | 
   * Get axis. 
 | 
   */ 
 | 
  Single.prototype.getAxis = function () { 
 | 
    return this._axis; 
 | 
  }; 
 | 
  /** 
 | 
   * Get axis, add it just for draw tooltip. 
 | 
   */ 
 | 
  Single.prototype.getBaseAxis = function () { 
 | 
    return this._axis; 
 | 
  }; 
 | 
  Single.prototype.getAxes = function () { 
 | 
    return [this._axis]; 
 | 
  }; 
 | 
  Single.prototype.getTooltipAxes = function () { 
 | 
    return { 
 | 
      baseAxes: [this.getAxis()], 
 | 
      // Empty otherAxes 
 | 
      otherAxes: [] 
 | 
    }; 
 | 
  }; 
 | 
  /** 
 | 
   * If contain point. 
 | 
   */ 
 | 
  Single.prototype.containPoint = function (point) { 
 | 
    var rect = this.getRect(); 
 | 
    var axis = this.getAxis(); 
 | 
    var orient = axis.orient; 
 | 
    if (orient === 'horizontal') { 
 | 
      return axis.contain(axis.toLocalCoord(point[0])) && point[1] >= rect.y && point[1] <= rect.y + rect.height; 
 | 
    } else { 
 | 
      return axis.contain(axis.toLocalCoord(point[1])) && point[0] >= rect.y && point[0] <= rect.y + rect.height; 
 | 
    } 
 | 
  }; 
 | 
  Single.prototype.pointToData = function (point) { 
 | 
    var axis = this.getAxis(); 
 | 
    return [axis.coordToData(axis.toLocalCoord(point[axis.orient === 'horizontal' ? 0 : 1]))]; 
 | 
  }; 
 | 
  /** 
 | 
   * Convert the series data to concrete point. 
 | 
   * Can be [val] | val 
 | 
   */ 
 | 
  Single.prototype.dataToPoint = function (val) { 
 | 
    var axis = this.getAxis(); 
 | 
    var rect = this.getRect(); 
 | 
    var pt = []; 
 | 
    var idx = axis.orient === 'horizontal' ? 0 : 1; 
 | 
    if (val instanceof Array) { 
 | 
      val = val[0]; 
 | 
    } 
 | 
    pt[idx] = axis.toGlobalCoord(axis.dataToCoord(+val)); 
 | 
    pt[1 - idx] = idx === 0 ? rect.y + rect.height / 2 : rect.x + rect.width / 2; 
 | 
    return pt; 
 | 
  }; 
 | 
  Single.prototype.convertToPixel = function (ecModel, finder, value) { 
 | 
    var coordSys = getCoordSys(finder); 
 | 
    return coordSys === this ? this.dataToPoint(value) : null; 
 | 
  }; 
 | 
  Single.prototype.convertFromPixel = function (ecModel, finder, pixel) { 
 | 
    var coordSys = getCoordSys(finder); 
 | 
    return coordSys === this ? this.pointToData(pixel) : null; 
 | 
  }; 
 | 
  return Single; 
 | 
}(); 
 | 
function getCoordSys(finder) { 
 | 
  var seriesModel = finder.seriesModel; 
 | 
  var singleModel = finder.singleAxisModel; 
 | 
  return singleModel && singleModel.coordinateSystem || seriesModel && seriesModel.coordinateSystem; 
 | 
} 
 | 
export default Single; 
 |