117 lines
3.5 KiB
Java
117 lines
3.5 KiB
Java
import { get, map } from '@antv/util';
|
|
/**
|
|
* @ignore
|
|
* get the grid theme by type
|
|
* @param theme
|
|
* @param direction
|
|
* @returns theme object
|
|
*/
|
|
export function getGridThemeCfg(theme, direction) {
|
|
return get(theme, ['components', 'axis', direction, 'grid'], {});
|
|
}
|
|
/**
|
|
* @ignore
|
|
* get axis grid items
|
|
* @param coordinate
|
|
* @param scale
|
|
* @param dim
|
|
* @return items
|
|
*/
|
|
export function getLineGridItems(coordinate, scale, dim, alignTick) {
|
|
var items = [];
|
|
var ticks = scale.getTicks();
|
|
if (coordinate.isPolar) {
|
|
// 补全 ticks
|
|
ticks.push({
|
|
value: 1,
|
|
text: '',
|
|
tickValue: '',
|
|
});
|
|
}
|
|
ticks.reduce(function (preTick, currentTick, currentIndex) {
|
|
var currentValue = currentTick.value;
|
|
if (alignTick) {
|
|
items.push({
|
|
points: [
|
|
coordinate.convert(dim === 'y' ? { x: 0, y: currentValue } : { x: currentValue, y: 0 }),
|
|
coordinate.convert(dim === 'y' ? { x: 1, y: currentValue } : { x: currentValue, y: 1 }),
|
|
],
|
|
});
|
|
}
|
|
else {
|
|
if (currentIndex) {
|
|
var preValue = preTick.value;
|
|
var middleValue = (preValue + currentValue) / 2;
|
|
items.push({
|
|
points: [
|
|
coordinate.convert(dim === 'y' ? { x: 0, y: middleValue } : { x: middleValue, y: 0 }),
|
|
coordinate.convert(dim === 'y' ? { x: 1, y: middleValue } : { x: middleValue, y: 1 }),
|
|
],
|
|
});
|
|
}
|
|
}
|
|
return currentTick;
|
|
}, ticks[0]);
|
|
return items;
|
|
}
|
|
/**
|
|
* @ignore
|
|
* get
|
|
* @param coordinate
|
|
* @param xScale
|
|
* @param yScale
|
|
* @param dim
|
|
* @returns items
|
|
*/
|
|
export function getCircleGridItems(coordinate, xScale, yScale, alignTick, dim) {
|
|
var count = xScale.values.length;
|
|
var items = [];
|
|
var ticks = yScale.getTicks();
|
|
ticks.reduce(function (preTick, currentTick) {
|
|
var preValue = preTick ? preTick.value : currentTick.value; // 只有一项数据时取当前值
|
|
var currentValue = currentTick.value;
|
|
var middleValue = (preValue + currentValue) / 2;
|
|
if (dim === 'x') {
|
|
// 如果是 x 轴作为半径轴,那么只需要取圆弧收尾两个即可
|
|
items.push({
|
|
points: [
|
|
coordinate.convert({
|
|
x: alignTick ? currentValue : middleValue,
|
|
y: 0,
|
|
}),
|
|
coordinate.convert({
|
|
x: alignTick ? currentValue : middleValue,
|
|
y: 1,
|
|
}),
|
|
]
|
|
});
|
|
}
|
|
else {
|
|
items.push({
|
|
points: map(Array(count + 1), function (__, idx) {
|
|
return coordinate.convert({
|
|
x: idx / count,
|
|
y: alignTick ? currentValue : middleValue,
|
|
});
|
|
}),
|
|
});
|
|
}
|
|
return currentTick;
|
|
}, ticks[0]);
|
|
return items;
|
|
}
|
|
/**
|
|
* @ignore
|
|
* show grid or not
|
|
* @param axisTheme
|
|
* @param axisOption
|
|
*/
|
|
export function showGrid(axisTheme, axisOption) {
|
|
var userGrid = get(axisOption, 'grid');
|
|
if (userGrid === null) {
|
|
return false;
|
|
}
|
|
var themeGrid = get(axisTheme, 'grid');
|
|
return !(userGrid === undefined && themeGrid === null);
|
|
}
|
|
//# sourceMappingURL=grid.js.map |