update at 2026-01-22 18:43:01
This commit is contained in:
169
src/types.ts
169
src/types.ts
@@ -19,6 +19,167 @@ export interface Example {
|
||||
radii: number[];
|
||||
}
|
||||
|
||||
/**
|
||||
* JSON 配置根对象
|
||||
*/
|
||||
export interface LuopanConfig {
|
||||
name: string;
|
||||
description?: string;
|
||||
background: string;
|
||||
outerRadius?: number;
|
||||
theme: ThemeConfig;
|
||||
layers: LayerConfig[];
|
||||
}
|
||||
|
||||
/**
|
||||
* 主题配置
|
||||
*/
|
||||
export interface ThemeConfig {
|
||||
name?: string;
|
||||
colorPalettes: Record<string, string>;
|
||||
}
|
||||
|
||||
/**
|
||||
* 中心图标配置
|
||||
*/
|
||||
export interface CenterIconConfig {
|
||||
rIcon: number;
|
||||
opacity: number;
|
||||
name: string;
|
||||
rotation?: number;
|
||||
}
|
||||
|
||||
/**
|
||||
* 刻度环配置
|
||||
*/
|
||||
export interface DegreeRingConfig {
|
||||
rInner: number;
|
||||
rOuter: number;
|
||||
showDegree: 0 | 1;
|
||||
mode: 'inner' | 'outer' | 'both';
|
||||
opacity: number;
|
||||
tickLength: number;
|
||||
tickLengthStep?: number;
|
||||
majorTick: number;
|
||||
minorTick: number;
|
||||
microTick: number;
|
||||
tickColor: string;
|
||||
ringColor: string;
|
||||
}
|
||||
|
||||
/**
|
||||
* 层配置(扇区层/中心图标层/刻度环层)
|
||||
*/
|
||||
export type LayerConfig =
|
||||
| SectorLayerConfig
|
||||
| CenterIconLayerConfig
|
||||
| DegreeRingLayerConfig;
|
||||
|
||||
/**
|
||||
* 普通扇区层配置
|
||||
*/
|
||||
export interface SectorLayerConfig {
|
||||
type?: 'sectors';
|
||||
divisions: number;
|
||||
rInner: number;
|
||||
rOuter: number;
|
||||
startAngle?: number;
|
||||
colorRef?: string;
|
||||
innerFill?: 0 | 1;
|
||||
num?: number;
|
||||
interval?: number;
|
||||
groupSplit?: boolean;
|
||||
sectors?: SectorConfig[];
|
||||
}
|
||||
|
||||
/**
|
||||
* 中心图标层配置
|
||||
*/
|
||||
export interface CenterIconLayerConfig {
|
||||
type: 'centerIcon';
|
||||
centerIcon: CenterIconConfig;
|
||||
}
|
||||
|
||||
/**
|
||||
* 刻度环层配置
|
||||
*/
|
||||
export interface DegreeRingLayerConfig {
|
||||
type: 'degreeRing';
|
||||
degreeRing: DegreeRingConfig;
|
||||
}
|
||||
|
||||
/**
|
||||
* 扇区配置
|
||||
*/
|
||||
export interface SectorConfig {
|
||||
content?: string;
|
||||
colorRef?: string;
|
||||
innerFill?: 0 | 1;
|
||||
}
|
||||
|
||||
/**
|
||||
* 文本单元
|
||||
*/
|
||||
export interface TextUnit {
|
||||
content: string;
|
||||
aStart: number;
|
||||
aEnd: number;
|
||||
isSvg: boolean;
|
||||
textPathId?: string;
|
||||
textPath?: string;
|
||||
svgPath?: string;
|
||||
fontSize?: number;
|
||||
isVertical?: boolean;
|
||||
}
|
||||
|
||||
/**
|
||||
* 刻度线数据
|
||||
*/
|
||||
export interface TickMark {
|
||||
angle: number;
|
||||
type: 'major' | 'minor' | 'micro';
|
||||
length: number;
|
||||
startR: number;
|
||||
endR: number;
|
||||
label?: string;
|
||||
x1: number;
|
||||
y1: number;
|
||||
x2: number;
|
||||
y2: number;
|
||||
}
|
||||
|
||||
/**
|
||||
* 刻度标签数据
|
||||
*/
|
||||
export interface DegreeLabel {
|
||||
angle: number;
|
||||
text: string;
|
||||
r: number;
|
||||
fontSize: number;
|
||||
textPathId: string;
|
||||
textPath: string;
|
||||
}
|
||||
|
||||
/**
|
||||
* 刻度环渲染数据
|
||||
*/
|
||||
export interface DegreeRingData {
|
||||
ticks: TickMark[];
|
||||
tickColor: string;
|
||||
ring: { rInner: number; rOuter: number; color: string; opacity: number };
|
||||
labels?: DegreeLabel[];
|
||||
}
|
||||
|
||||
/**
|
||||
* 中心图标渲染数据
|
||||
*/
|
||||
export interface CenterIconData {
|
||||
rIcon: number;
|
||||
opacity: number;
|
||||
svgPath: string;
|
||||
rotation: number;
|
||||
}
|
||||
|
||||
/**
|
||||
* 扇区配置
|
||||
*/
|
||||
@@ -65,6 +226,14 @@ export interface Sector {
|
||||
fontSize: number;
|
||||
/** 是否竖排文字 */
|
||||
isVertical: boolean;
|
||||
/** 多文本单元 */
|
||||
textUnits?: TextUnit[];
|
||||
/** 是否显示与下一个扇区的分割线 */
|
||||
groupSplitVisible?: boolean;
|
||||
/** 内容是否为 SVG */
|
||||
isSvgContent?: boolean;
|
||||
/** SVG 文件路径 */
|
||||
svgPath?: string;
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
Reference in New Issue
Block a user