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.
		
		
		
		
		
			
		
			
				
					
					
						
							147 lines
						
					
					
						
							5.2 KiB
						
					
					
				
			
		
		
	
	
							147 lines
						
					
					
						
							5.2 KiB
						
					
					
				
 | 
						|
/* | 
						|
* 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 graphic = require("../../util/graphic"); | 
						|
 | 
						|
var BaseAxisPointer = require("./BaseAxisPointer"); | 
						|
 | 
						|
var viewHelper = require("./viewHelper"); | 
						|
 | 
						|
var singleAxisHelper = require("../../coord/single/singleAxisHelper"); | 
						|
 | 
						|
var AxisView = require("../axis/AxisView"); | 
						|
 | 
						|
/* | 
						|
* 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 XY = ['x', 'y']; | 
						|
var WH = ['width', 'height']; | 
						|
var SingleAxisPointer = BaseAxisPointer.extend({ | 
						|
  /** | 
						|
   * @override | 
						|
   */ | 
						|
  makeElOption: function (elOption, value, axisModel, axisPointerModel, api) { | 
						|
    var axis = axisModel.axis; | 
						|
    var coordSys = axis.coordinateSystem; | 
						|
    var otherExtent = getGlobalExtent(coordSys, 1 - getPointDimIndex(axis)); | 
						|
    var pixelValue = coordSys.dataToPoint(value)[0]; | 
						|
    var axisPointerType = axisPointerModel.get('type'); | 
						|
 | 
						|
    if (axisPointerType && axisPointerType !== 'none') { | 
						|
      var elStyle = viewHelper.buildElStyle(axisPointerModel); | 
						|
      var pointerOption = pointerShapeBuilder[axisPointerType](axis, pixelValue, otherExtent, elStyle); | 
						|
      pointerOption.style = elStyle; | 
						|
      elOption.graphicKey = pointerOption.type; | 
						|
      elOption.pointer = pointerOption; | 
						|
    } | 
						|
 | 
						|
    var layoutInfo = singleAxisHelper.layout(axisModel); | 
						|
    viewHelper.buildCartesianSingleLabelElOption(value, elOption, layoutInfo, axisModel, axisPointerModel, api); | 
						|
  }, | 
						|
 | 
						|
  /** | 
						|
   * @override | 
						|
   */ | 
						|
  getHandleTransform: function (value, axisModel, axisPointerModel) { | 
						|
    var layoutInfo = singleAxisHelper.layout(axisModel, { | 
						|
      labelInside: false | 
						|
    }); | 
						|
    layoutInfo.labelMargin = axisPointerModel.get('handle.margin'); | 
						|
    return { | 
						|
      position: viewHelper.getTransformedPosition(axisModel.axis, value, layoutInfo), | 
						|
      rotation: layoutInfo.rotation + (layoutInfo.labelDirection < 0 ? Math.PI : 0) | 
						|
    }; | 
						|
  }, | 
						|
 | 
						|
  /** | 
						|
   * @override | 
						|
   */ | 
						|
  updateHandleTransform: function (transform, delta, axisModel, axisPointerModel) { | 
						|
    var axis = axisModel.axis; | 
						|
    var coordSys = axis.coordinateSystem; | 
						|
    var dimIndex = getPointDimIndex(axis); | 
						|
    var axisExtent = getGlobalExtent(coordSys, dimIndex); | 
						|
    var currPosition = transform.position; | 
						|
    currPosition[dimIndex] += delta[dimIndex]; | 
						|
    currPosition[dimIndex] = Math.min(axisExtent[1], currPosition[dimIndex]); | 
						|
    currPosition[dimIndex] = Math.max(axisExtent[0], currPosition[dimIndex]); | 
						|
    var otherExtent = getGlobalExtent(coordSys, 1 - dimIndex); | 
						|
    var cursorOtherValue = (otherExtent[1] + otherExtent[0]) / 2; | 
						|
    var cursorPoint = [cursorOtherValue, cursorOtherValue]; | 
						|
    cursorPoint[dimIndex] = currPosition[dimIndex]; | 
						|
    return { | 
						|
      position: currPosition, | 
						|
      rotation: transform.rotation, | 
						|
      cursorPoint: cursorPoint, | 
						|
      tooltipOption: { | 
						|
        verticalAlign: 'middle' | 
						|
      } | 
						|
    }; | 
						|
  } | 
						|
}); | 
						|
var pointerShapeBuilder = { | 
						|
  line: function (axis, pixelValue, otherExtent, elStyle) { | 
						|
    var targetShape = viewHelper.makeLineShape([pixelValue, otherExtent[0]], [pixelValue, otherExtent[1]], getPointDimIndex(axis)); | 
						|
    graphic.subPixelOptimizeLine({ | 
						|
      shape: targetShape, | 
						|
      style: elStyle | 
						|
    }); | 
						|
    return { | 
						|
      type: 'Line', | 
						|
      shape: targetShape | 
						|
    }; | 
						|
  }, | 
						|
  shadow: function (axis, pixelValue, otherExtent, elStyle) { | 
						|
    var bandWidth = axis.getBandWidth(); | 
						|
    var span = otherExtent[1] - otherExtent[0]; | 
						|
    return { | 
						|
      type: 'Rect', | 
						|
      shape: viewHelper.makeRectShape([pixelValue - bandWidth / 2, otherExtent[0]], [bandWidth, span], getPointDimIndex(axis)) | 
						|
    }; | 
						|
  } | 
						|
}; | 
						|
 | 
						|
function getPointDimIndex(axis) { | 
						|
  return axis.isHorizontal() ? 0 : 1; | 
						|
} | 
						|
 | 
						|
function getGlobalExtent(coordSys, dimIndex) { | 
						|
  var rect = coordSys.getRect(); | 
						|
  return [rect[XY[dimIndex]], rect[XY[dimIndex]] + rect[WH[dimIndex]]]; | 
						|
} | 
						|
 | 
						|
AxisView.registerAxisPointerClass('SingleAxisPointer', SingleAxisPointer); | 
						|
var _default = SingleAxisPointer; | 
						|
module.exports = _default; |