UNPKG

@zhouchangju/standard-chart

Version:

标准范式组件

48 lines (47 loc) 1.95 kB
/** * * 扩展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;