index.d.ts 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190
  1. import type { GlobalThemeJsonType } from '@/settings/chartThemes/index'
  2. import type { RequestConfigType } from '@/store/modules/chartEditStore/chartEditStore.d'
  3. export enum ChartFrameEnum {
  4. // 支持 dataset 的 echarts 框架
  5. ECHARTS = 'echarts',
  6. // UI 组件框架
  7. NAIVE_UI = 'naiveUI',
  8. // 自定义带数据组件
  9. COMMON = 'common',
  10. // 无数据变更
  11. STATIC = 'static'
  12. }
  13. // 组件配置
  14. export type ConfigType = {
  15. key: string
  16. chartKey: string
  17. conKey: string
  18. title: string
  19. category: string
  20. categoryName: string
  21. package: string
  22. chartFrame?: ChartFrameEnum
  23. image: string
  24. }
  25. // 数据请求
  26. interface requestConfig {
  27. request: RequestConfigType
  28. }
  29. // Echarts 数据类型
  30. interface EchartsDataType {
  31. dimensions: string[]
  32. source: any[]
  33. }
  34. // 组件状态
  35. export interface StatusType {
  36. lock: boolean
  37. hide: boolean
  38. }
  39. // 滤镜/变换枚举
  40. export enum FilterEnum {
  41. // 是否启用
  42. FILTERS_SHOW = 'filterShow',
  43. // 透明度
  44. OPACITY = 'opacity',
  45. // 饱和度
  46. SATURATE = 'saturate',
  47. // 对比度
  48. CONTRAST = 'contrast',
  49. // 色相
  50. HUE_ROTATE = 'hueRotate',
  51. // 亮度
  52. BRIGHTNESS = 'brightness',
  53. // 旋转
  54. ROTATE_Z = 'rotateZ',
  55. ROTATE_X = 'rotateX',
  56. ROTATE_Y = 'rotateY',
  57. // 倾斜
  58. SKEW_X = 'skewX',
  59. SKEW_Y = 'skewY',
  60. // 混合模式
  61. BLEND_MODE = 'blendMode'
  62. }
  63. export const BlendModeEnumList = [
  64. { label: '正常', value: 'normal' },
  65. { label: '正片叠底', value: 'multiply' },
  66. { label: '叠加', value: 'overlay' },
  67. { label: '滤色', value: 'screen' },
  68. { label: '变暗', value: 'darken' },
  69. { label: '变亮', value: 'lighten' },
  70. { label: '颜色减淡', value: 'color-dodge' },
  71. { label: '颜色加深', value: 'color-burn;' },
  72. { label: '强光', value: 'hard-light' },
  73. { label: '柔光', value: 'soft-light' },
  74. { label: '差值', value: 'difference' },
  75. { label: '排除', value: 'exclusion' },
  76. { label: '色相', value: 'hue' },
  77. { label: '饱和度', value: 'saturation' },
  78. { label: '颜色', value: 'color' },
  79. { label: '亮度', value: 'luminosity' }
  80. ]
  81. // 基础事件类型(vue不加 on)
  82. export enum BaseEvent {
  83. // 点击
  84. ON_CLICK = 'click',
  85. // 双击
  86. ON_DBL_CLICK = 'dblclick',
  87. // 移入
  88. ON_MOUSE_ENTER = 'mouseenter',
  89. // 移出
  90. ON_MOUSE_LEAVE = 'mouseleave',
  91. }
  92. // vue3 生命周期事件
  93. export enum EventLife {
  94. // 渲染之后
  95. VNODE_MOUNTED = 'vnodeMounted',
  96. // 渲染之前
  97. VNODE_BEFORE_MOUNT = 'vnodeBeforeMount',
  98. }
  99. // 组件实例类
  100. export interface PublicConfigType {
  101. id: string
  102. isGroup: boolean
  103. attr: { x: number; y: number; w: number; h: number; zIndex: number; offsetX: number; offsetY: number }
  104. styles: {
  105. [FilterEnum.FILTERS_SHOW]: boolean
  106. [FilterEnum.OPACITY]: number
  107. [FilterEnum.SATURATE]: number
  108. [FilterEnum.CONTRAST]: number
  109. [FilterEnum.HUE_ROTATE]: number
  110. [FilterEnum.BRIGHTNESS]: number
  111. [FilterEnum.ROTATE_Z]: number
  112. [FilterEnum.ROTATE_X]: number
  113. [FilterEnum.ROTATE_Y]: number
  114. [FilterEnum.SKEW_X]: number
  115. [FilterEnum.SKEW_Y]: number
  116. [FilterEnum.BLEND_MODE]: string
  117. // 动画
  118. animations: string[]
  119. }
  120. filter?: string
  121. status: StatusType
  122. events: {
  123. baseEvent: {
  124. [K in BaseEvent]?: string
  125. },
  126. advancedEvents: {
  127. [K in EventLife]?: string
  128. }
  129. }
  130. }
  131. export interface CreateComponentType extends PublicConfigType, requestConfig {
  132. key: string
  133. chartConfig: ConfigType
  134. option: GlobalThemeJsonType,
  135. }
  136. // 组件成组实例类
  137. export interface CreateComponentGroupType extends CreateComponentType {
  138. groupList: Array<CreateComponentType>
  139. }
  140. // 获取组件实例类中某个key对应value类型的方法
  141. export type PickCreateComponentType<T extends keyof CreateComponentType> = Pick<CreateComponentType, T>[T]
  142. // 包分类枚举
  143. export enum PackagesCategoryEnum {
  144. CHARTS = 'Charts',
  145. TABLES = 'Tables',
  146. INFORMATIONS = 'Informations',
  147. DECORATES = 'Decorates'
  148. }
  149. // 包分类名称
  150. export enum PackagesCategoryName {
  151. CHARTS = '图表',
  152. TABLES = '列表',
  153. INFORMATIONS = '信息',
  154. DECORATES = '小组件'
  155. }
  156. // 获取组件
  157. export enum FetchComFlagType {
  158. VIEW,
  159. CONFIG
  160. }
  161. // 图表包类型
  162. export type PackagesType = {
  163. [PackagesCategoryEnum.CHARTS]: ConfigType[]
  164. [PackagesCategoryEnum.INFORMATIONS]: ConfigType[]
  165. [PackagesCategoryEnum.TABLES]: ConfigType[]
  166. [PackagesCategoryEnum.DECORATES]: ConfigType[]
  167. }