@zhouchangju/standard-chart
Version:
标准范式组件
48 lines (47 loc) • 1.95 kB
TypeScript
/**
* * 扩展x轴的标题,使其定位保持和轴标签一致,以解决0轴位于图表中间时,轴标题位置跟随0轴的问题
*
* - 实现方案:让axisName的y方向的定位保持和axisLabel一致
*
* @example
* ```javascript
* {
* xAxis: {
* dvNameLocation: "end",
* }
* }
* ```
*
* TODO:
* 1、双Y轴的情况
* 2、X轴放上方的情况
*/
import { type EChartsExtensionInstallRegisters } from 'echarts/lib/extension';
import { type default as CartesianAxisModel } from 'echarts/lib/coord/cartesian/AxisModel';
import GridModel from 'echarts/lib/coord/cartesian/GridModel';
import { LayoutRect } from 'echarts/types/src/util/layout';
/**
* 参考实现 @see https://github.com/apache/echarts/blob/5.3.3/src/component/axis/AxisBuilder.ts#L367
* 只考虑单X轴的情况,其计算依赖于:
* 1、左侧Y轴的axisLabel.inside
* 2、左侧Y轴的label最大宽度
* 3、Y轴的0刻度是否位于画布中间
* 4、dvPadding(轴两侧的内边距,这个会影响xAxisExtent的范围)
*/
export declare function adjustXAxisNameLocation(axisModel: CartesianAxisModel, gridRectBoundingRect: LayoutRect, yAxisModel: CartesianAxisModel, gridModel: GridModel): void;
/**
* yAxis.name的对齐方式有2种逻辑:
* 1、当X轴存在0刻度时,跟x轴0刻度对齐
* 2、当X轴不存在0刻度时,跟x轴左侧第一个刻度对齐
*
* 其计算依赖于:
* 1、同一侧Y轴的axisLabel.inside
* 2、同一侧Y轴的label最大宽度
* 3、TODO:X轴的0刻度是否位于画布中间
* 4、xAxis.boundaryGap的配置
* @param axisModel
* @param maxYLabelWidth
* @returns
*/
export declare function adjustYAxisNameLocation(axisModel: CartesianAxisModel, xAxisModel: CartesianAxisModel, maxYLabelWidth: number, xAxisContainZero: boolean, xAxisZeroXValue: number, isLeft: boolean): void;
export declare function install(registers: EChartsExtensionInstallRegisters): void;