code-relation-analyzer
Version:
A TypeScript project dependency analysis tool that generates function-level dependency graphs
326 lines • 7.92 kB
TypeScript
/**
* 可视化相关类型定义
*/
export interface VisualizationOptions {
/** 图表类型 */
type: VisualizationType;
/** 画布尺寸 */
dimensions: Dimensions;
/** 布局算法 */
layout: LayoutAlgorithm;
/** 主题配置 */
theme: ThemeConfig;
/** 交互配置 */
interaction: InteractionConfig;
/** 动画配置 */
animation: AnimationConfig;
/** 导出配置 */
export: ExportConfig;
}
export type VisualizationType = 'force-directed' | 'hierarchical' | 'circular' | 'tree' | 'sankey' | 'chord' | 'matrix';
export interface Dimensions {
/** 宽度 */
width: number;
/** 高度 */
height: number;
/** 边距 */
margin: {
top: number;
right: number;
bottom: number;
left: number;
};
}
export interface LayoutAlgorithm {
/** 算法类型 */
type: LayoutType;
/** 算法参数 */
parameters: Record<string, any>;
}
export type LayoutType = 'force' | 'hierarchical' | 'circular' | 'grid' | 'radial' | 'layered';
export interface ThemeConfig {
/** 主题名称 */
name: string;
/** 颜色配置 */
colors: ColorScheme;
/** 字体配置 */
fonts: FontConfig;
/** 样式配置 */
styles: StyleConfig;
}
export interface ColorScheme {
/** 主色调 */
primary: string;
/** 次要色调 */
secondary: string;
/** 背景色 */
background: string;
/** 文本色 */
text: string;
/** 节点颜色映射 */
nodeColors: Record<string, string>;
/** 边颜色映射 */
edgeColors: Record<string, string>;
/** 高亮色 */
highlight: string;
/** 选中色 */
selected: string;
}
export interface FontConfig {
/** 主字体 */
primary: string;
/** 代码字体 */
monospace: string;
/** 字体大小 */
sizes: {
small: number;
medium: number;
large: number;
xlarge: number;
};
}
export interface StyleConfig {
/** 节点样式 */
node: NodeStyleConfig;
/** 边样式 */
edge: EdgeStyleConfig;
/** 标签样式 */
label: LabelStyleConfig;
}
export interface NodeStyleConfig {
/** 默认半径 */
defaultRadius: number;
/** 最小半径 */
minRadius: number;
/** 最大半径 */
maxRadius: number;
/** 边框宽度 */
strokeWidth: number;
/** 透明度 */
opacity: number;
}
export interface EdgeStyleConfig {
/** 默认宽度 */
defaultWidth: number;
/** 最小宽度 */
minWidth: number;
/** 最大宽度 */
maxWidth: number;
/** 透明度 */
opacity: number;
/** 箭头大小 */
arrowSize: number;
}
export interface LabelStyleConfig {
/** 字体大小 */
fontSize: number;
/** 字体颜色 */
color: string;
/** 背景色 */
backgroundColor?: string;
/** 内边距 */
padding: number;
/** 是否显示 */
visible: boolean;
}
export interface InteractionConfig {
/** 是否启用缩放 */
zoom: boolean;
/** 是否启用拖拽 */
drag: boolean;
/** 是否启用悬停 */
hover: boolean;
/** 是否启用点击 */
click: boolean;
/** 是否启用选择 */
selection: boolean;
/** 是否启用过滤 */
filter: boolean;
/** 是否启用搜索 */
search: boolean;
}
export interface AnimationConfig {
/** 是否启用动画 */
enabled: boolean;
/** 动画持续时间 */
duration: number;
/** 缓动函数 */
easing: EasingFunction;
/** 延迟时间 */
delay: number;
}
export type EasingFunction = 'linear' | 'ease' | 'ease-in' | 'ease-out' | 'ease-in-out' | 'bounce' | 'elastic';
export interface ExportConfig {
/** 支持的格式 */
formats: ExportFormat[];
/** 默认格式 */
defaultFormat: ExportFormat;
/** 质量设置 */
quality: number;
/** 是否包含数据 */
includeData: boolean;
}
export type ExportFormat = 'png' | 'svg' | 'pdf' | 'json' | 'html';
export interface RenderContext {
/** SVG容器 */
svg: any;
/** 画布尺寸 */
dimensions: Dimensions;
/** 缩放行为 */
zoom: any;
/** 仿真 */
simulation?: any;
/** 数据 */
data: GraphData;
/** 配置 */
options: VisualizationOptions;
}
export interface GraphData {
/** 节点数据 */
nodes: GraphNodeData[];
/** 边数据 */
edges: GraphEdgeData[];
/** 元数据 */
metadata: GraphMetadata;
}
export interface GraphNodeData {
/** 节点ID */
id: string;
/** 显示标签 */
label: string;
/** 节点类型 */
type: string;
/** 分组 */
group?: string;
/** 大小 */
size: number;
/** 颜色 */
color: string;
/** 位置 */
x?: number;
/** 位置 */
y?: number;
/** 固定位置 */
fx?: number;
/** 固定位置 */
fy?: number;
/** 自定义属性 */
properties: Record<string, any>;
}
export interface GraphEdgeData {
/** 边ID */
id: string;
/** 源节点ID */
source: string | GraphNodeData;
/** 目标节点ID */
target: string | GraphNodeData;
/** 边类型 */
type: string;
/** 权重 */
weight: number;
/** 颜色 */
color: string;
/** 宽度 */
width: number;
/** 自定义属性 */
properties: Record<string, any>;
}
export interface GraphMetadata {
/** 标题 */
title: string;
/** 描述 */
description?: string;
/** 创建时间 */
createdAt: Date;
/** 节点数量 */
nodeCount: number;
/** 边数量 */
edgeCount: number;
/** 统计信息 */
statistics: Record<string, number>;
}
export interface FilterOptions {
/** 节点过滤器 */
nodeFilter?: NodeFilter;
/** 边过滤器 */
edgeFilter?: EdgeFilter;
/** 文本搜索 */
searchText?: string;
/** 类型过滤 */
typeFilter?: string[];
/** 大小范围 */
sizeRange?: [number, number];
/** 权重范围 */
weightRange?: [number, number];
}
export interface NodeFilter {
/** 包含的节点类型 */
includeTypes?: string[];
/** 排除的节点类型 */
excludeTypes?: string[];
/** 最小大小 */
minSize?: number;
/** 最大大小 */
maxSize?: number;
/** 自定义过滤函数 */
customFilter?: (node: GraphNodeData) => boolean;
}
export interface EdgeFilter {
/** 包含的边类型 */
includeTypes?: string[];
/** 排除的边类型 */
excludeTypes?: string[];
/** 最小权重 */
minWeight?: number;
/** 最大权重 */
maxWeight?: number;
/** 自定义过滤函数 */
customFilter?: (edge: GraphEdgeData) => boolean;
}
export interface LegendConfig {
/** 是否显示图例 */
visible: boolean;
/** 图例位置 */
position: LegendPosition;
/** 图例项 */
items: LegendItem[];
}
export type LegendPosition = 'top-left' | 'top-right' | 'bottom-left' | 'bottom-right' | 'left' | 'right';
export interface LegendItem {
/** 标签 */
label: string;
/** 颜色 */
color: string;
/** 形状 */
shape: LegendShape;
/** 描述 */
description?: string;
}
export type LegendShape = 'circle' | 'square' | 'triangle' | 'diamond' | 'line';
export interface TooltipConfig {
/** 是否启用工具提示 */
enabled: boolean;
/** 工具提示模板 */
template: string;
/** 延迟显示时间 */
delay: number;
/** 样式配置 */
style: TooltipStyle;
}
export interface TooltipStyle {
/** 背景色 */
backgroundColor: string;
/** 文本色 */
color: string;
/** 边框色 */
borderColor: string;
/** 字体大小 */
fontSize: number;
/** 内边距 */
padding: number;
/** 圆角半径 */
borderRadius: number;
/** 最大宽度 */
maxWidth: number;
}
//# sourceMappingURL=visualization.d.ts.map