LinYeFangHuo/src/packages/index.d.ts

243 lines
5.6 KiB
TypeScript

import {
BaseEvent,
EventLife,
InteractEvents,
InteractEventOn,
InteractActionsType,
} from '@/enums/eventEnum';
import type { GlobalThemeJsonType } from '@/settings/chartThemes/index';
import type { RequestConfigType } from '@/store/modules/chartEditStore/chartEditStore.d';
export enum ChartFrameEnum {
// 支持 dataset 的 echarts 框架
ECHARTS = 'echarts',
// VChart 框架
VCHART = 'VChart',
// UI 组件框架
NAIVE_UI = 'naiveUI',
// 自定义带数据组件
COMMON = 'common',
// 无数据变更
STATIC = 'static',
}
// 组件配置
export type ConfigType = {
// 组件 key
key: string;
// 画布组件 key
chartKey: string;
// 右侧设置面板组件 key
conKey: string;
// 标题
title: string;
// 分类
category: string;
// 分类名称
categoryName: string;
// 所属包
package: string;
// 归类
chartFrame?: ChartFrameEnum;
// 预览图
image: string;
// 从指定路径创建创建该组件
redirectComponent?: string;
// 组件预设的 dataset 值(图片/图标)
dataset?: any;
// 禁用 拖拽或双击生成组件
disabled?: boolean;
// 图标
icon?: string;
// 事件
configEvents?: { [T: string]: Function };
};
// 数据请求
interface requestConfig {
request: RequestConfigType;
}
// Echarts 数据类型
interface EchartsDataType {
dimensions: string[];
source: any[];
}
// 组件状态
export interface StatusType {
lock: boolean;
hide: boolean;
}
// 滤镜/变换枚举
export enum FilterEnum {
// 是否启用
FILTERS_SHOW = 'filterShow',
// 透明度
OPACITY = 'opacity',
// 饱和度
SATURATE = 'saturate',
// 对比度
CONTRAST = 'contrast',
// 色相
HUE_ROTATE = 'hueRotate',
// 亮度
BRIGHTNESS = 'brightness',
// 旋转
ROTATE_Z = 'rotateZ',
ROTATE_X = 'rotateX',
ROTATE_Y = 'rotateY',
// 倾斜
SKEW_X = 'skewX',
SKEW_Y = 'skewY',
// 混合模式
BLEND_MODE = 'blendMode',
}
export const BlendModeEnumList = [
{ label: '正常', value: 'normal' },
{ label: '正片叠底', value: 'multiply' },
{ label: '叠加', value: 'overlay' },
{ label: '滤色', value: 'screen' },
{ label: '变暗', value: 'darken' },
{ label: '变亮', value: 'lighten' },
{ label: '颜色减淡', value: 'color-dodge' },
{ label: '颜色加深', value: 'color-burn;' },
{ label: '强光', value: 'hard-light' },
{ label: '柔光', value: 'soft-light' },
{ label: '差值', value: 'difference' },
{ label: '排除', value: 'exclusion' },
{ label: '色相', value: 'hue' },
{ label: '饱和度', value: 'saturation' },
{ label: '颜色', value: 'color' },
{ label: '亮度', value: 'luminosity' },
];
// 组件实例类
export interface PublicConfigType {
id: string;
isGroup: boolean;
attr: {
x: number;
y: number;
w: number;
h: number;
zIndex: number;
offsetX: number;
offsetY: number;
};
styles: {
[FilterEnum.FILTERS_SHOW]: boolean;
[FilterEnum.OPACITY]: number;
[FilterEnum.SATURATE]: number;
[FilterEnum.CONTRAST]: number;
[FilterEnum.HUE_ROTATE]: number;
[FilterEnum.BRIGHTNESS]: number;
[FilterEnum.ROTATE_Z]: number;
[FilterEnum.ROTATE_X]: number;
[FilterEnum.ROTATE_Y]: number;
[FilterEnum.SKEW_X]: number;
[FilterEnum.SKEW_Y]: number;
[FilterEnum.BLEND_MODE]: string;
// 动画
animations: string[];
};
preview?: {
// 预览超出隐藏
overFlowHidden?: boolean;
};
filter?: string;
status: StatusType;
interactActions?: InteractActionsType[];
events: {
baseEvent: {
[K in BaseEvent]?: string;
};
advancedEvents: {
[K in EventLife]?: string;
};
interactEvents: {
[InteractEvents.INTERACT_ON]: InteractEventOn | undefined;
[InteractEvents.INTERACT_COMPONENT_ID]: string | undefined;
[InteractEvents.INTERACT_FN]: { [name: string]: string };
}[];
interactConfigEvents: {}[];
};
}
export interface CreateComponentType extends PublicConfigType, requestConfig {
key: string;
chartConfig: ConfigType;
option: GlobalThemeJsonType;
groupList?: Array<CreateComponentType>;
}
// 组件成组实例类
export interface CreateComponentGroupType extends CreateComponentType {
groupList: Array<CreateComponentType>;
}
// 获取组件实例类中某个key对应value类型的方法
export type PickCreateComponentType<T extends keyof CreateComponentType> = Pick<
CreateComponentType,
T
>[T];
// 包分类枚举
export enum PackagesCategoryEnum {
CHARTS = 'Charts',
VCHART = 'VChart',
TABLES = 'Tables',
INFORMATIONS = 'Informations',
PHOTOS = 'Photos',
ICONS = 'Icons',
DECORATES = 'Decorates',
CUSTOM = 'Custom',
DIY = 'Diy',
UNITS = 'Units',
ZHIGAN = 'Zhigan',
}
// 包分类名称
export enum PackagesCategoryName {
CHARTS = '图表',
VCHART = 'VChart',
TABLES = '列表',
INFORMATIONS = '信息',
PHOTOS = '图片',
ICONS = '图标',
DECORATES = '小组件',
CUSTOM = '预警信息',
DIY = 'DIY',
UNITS = '组件',
ZHIGAN = '智感',
}
// 获取组件
export enum FetchComFlagType {
VIEW,
CONFIG,
}
// 图表包类型
export type PackagesType = {
[PackagesCategoryEnum.CHARTS]: ConfigType[];
[PackagesCategoryEnum.VCHART]: ConfigType[];
[PackagesCategoryEnum.INFORMATIONS]: ConfigType[];
[PackagesCategoryEnum.TABLES]: ConfigType[];
[PackagesCategoryEnum.PHOTOS]: ConfigType[];
[PackagesCategoryEnum.ICONS]: ConfigType[];
[PackagesCategoryEnum.DECORATES]: ConfigType[];
[PackagesCategoryEnum.CUSTOM]: ConfigType[];
[PackagesCategoryEnum.DIY]: ConfigType[];
[PackagesCategoryEnum.UNITS]: ConfigType[];
[PackagesCategoryEnum.ZHIGAN]: ConfigType[];
};