UNPKG

4.53 kBTypeScriptView Raw
1import { Except } from 'type-fest';
2import { DataRecord, DataField, DataValue } from './Data';
3
4/**
5 * 度量类型。
6 */
7export type ScaleType = 'identity' | 'linear' | 'cat' | 'timeCat' | 'log' | 'pow';
8
9/**
10 * 通用度量属性。
11 *
12 * @see https://f2.antv.vision/zh/docs/api/chart/scale#%E9%80%9A%E7%94%A8%E5%B1%9E%E6%80%A7
13 */
14export interface ScaleCommonProps<
15 TScaleType extends ScaleType,
16 TRecord extends DataRecord,
17 TField extends DataField<TRecord>
18> {
19 /**
20 * 度量类型。
21 */
22 type: TScaleType;
23
24 /**
25 * 回调函数,用于格式化坐标轴刻度点的文本显示,
26 * 会影响数据在坐标轴 axis、图例 legend、提示信息 tooltip 上的显示。
27 */
28 formatter?: (value: DataValue<TRecord, TField>) => string | number;
29
30 /**
31 * 输出数据的范围,数值类型的默认值为 [0, 1],格式为 [min, max],min 和 max 均为 0 至 1 范围的数据。
32 */
33 range?: [number, number];
34
35 /**
36 * 该数据字段的显示别名,一般用于将字段的英文名称转换成中文名。
37 */
38 alias?: string;
39
40 /**
41 * 坐标轴上刻度点的个数,不同的度量类型对应不同的默认值。
42 */
43 tickCount?: number;
44
45 /**
46 * 用于指定坐标轴上刻度点的文本信息,当用户设置了 ticks 就会按照 ticks 的个数和文本来显示。
47 */
48 ticks?: string[] | number[];
49
50 /**
51 * 当图表的数据源已经过排序,可以通过在列定义中设置 `sortable: false` 来提升性能。
52 */
53 sortable?: boolean;
54}
55
56/**
57 * identity 度量属性。
58 */
59export type ScaleIdentityProps<
60 TRecord extends DataRecord,
61 TField extends DataField<TRecord>
62> = ScaleCommonProps<'identity', TRecord, TField>;
63
64/**
65 * linear 度量属性。
66 *
67 * @see https://f2.antv.vision/zh/docs/api/chart/scale#linear
68 */
69export interface ScaleLinearProps<TRecord extends DataRecord, TField extends DataField<TRecord>>
70 extends ScaleCommonProps<'linear', TRecord, TField> {
71 /**
72 * 默认为 true,用于优化数值范围,使绘制的坐标轴刻度线均匀分布。
73 * 例如原始数据的范围为 [3, 97],如果 nice 为 true,那么就会将数值范围调整为 [0, 100]。
74 */
75 nice?: boolean;
76
77 /**
78 * 定义数值范围的最小值。
79 */
80 min?: number;
81
82 /**
83 * 定义数值范围的最大值。
84 */
85 max?: number;
86
87 /**
88 * 用于指定坐标轴各个标度点的间距,是原始数据之间的间距差值,
89 * tickCount 和 tickInterval 不可以同时声明。
90 */
91 tickInterval?: number;
92}
93
94/**
95 * cat 度量属性。
96 *
97 * @see https://f2.antv.vision/zh/docs/api/chart/scale#cat
98 */
99export interface ScaleCatProps<TRecord extends DataRecord, TField extends DataField<TRecord>>
100 extends ScaleCommonProps<'cat', TRecord, TField> {
101 /**
102 * 具体的分类的值,一般用于指定具体的顺序和枚举的对应关系。
103 */
104 values?: string[];
105
106 /**
107 * 默认值为 false, 在计算 ticks 的时候是否允许取整以满足刻度之间的均匀分布,
108 * 取整后可能会和用户设置的 tickCount 不符合。
109 */
110 isRounding?: boolean;
111}
112
113/**
114 * timeCat 度量属性。
115 *
116 * @see https://f2.antv.vision/zh/docs/api/chart/scale#timecat
117 */
118export interface ScaleTimeCatProps<TRecord extends DataRecord, TField extends DataField<TRecord>>
119 extends ScaleCommonProps<'timeCat', TRecord, TField> {
120 /**
121 * 数据的格式化格式,默认:`YYYY-MM-DD`。
122 */
123 mask?: string;
124
125 /**
126 * 具体的分类的值,一般用于指定具体的顺序和枚举的对应关系。
127 */
128 values?: string[];
129}
130
131/**
132 * Log 度量属性。
133 *
134 */
135export interface ScaleLogProps<TRecord extends DataRecord, TField extends DataField<TRecord>>
136 extends ScaleCommonProps<'log', TRecord, TField> {
137 max?: number;
138 min?: number;
139 base?: number;
140}
141
142/**
143 * Pow 度量属性。
144 *
145 */
146export interface ScalePowProps<TRecord extends DataRecord, TField extends DataField<TRecord>>
147 extends ScaleCommonProps<'pow', TRecord, TField> {
148 /**
149 * 指数
150 */
151 exponent?: number;
152}
153
154/**
155 * 度量属性。
156 *
157 * @see https://f2.antv.vision/zh/docs/api/chart/scale
158 */
159export type ScaleProps<TRecord extends DataRecord, TField extends DataField<TRecord>> =
160 | ScaleIdentityProps<TRecord, TField>
161 | ScaleLinearProps<TRecord, TField>
162 // type 可不填,默认为 linear
163 | Except<ScaleLinearProps<TRecord, TField>, 'type'>
164 | ScaleCatProps<TRecord, TField>
165 | ScaleTimeCatProps<TRecord, TField>
166 | ScaleLogProps<TRecord, TField>
167 | ScalePowProps<TRecord, TField>;