index.d.ts 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163
  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 | (() => Promise<typeof import('*.png')>)
  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. BLENDMODE = '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. // 组件实例类
  82. export interface PublicConfigType {
  83. id: string
  84. isGroup: boolean
  85. attr: { x: number; y: number; w: number; h: number; zIndex: number; offsetX: number; offsetY: number }
  86. styles: {
  87. [FilterEnum.FILTERS_SHOW]: boolean
  88. [FilterEnum.OPACITY]: number
  89. [FilterEnum.SATURATE]: number
  90. [FilterEnum.CONTRAST]: number
  91. [FilterEnum.HUE_ROTATE]: number
  92. [FilterEnum.BRIGHTNESS]: number
  93. [FilterEnum.ROTATE_Z]: number
  94. [FilterEnum.ROTATE_X]: number
  95. [FilterEnum.ROTATE_Y]: number
  96. [FilterEnum.SKEW_X]: number
  97. [FilterEnum.SKEW_Y]: number
  98. [FilterEnum.BLENDMODE]: string
  99. // 动画
  100. animations: string[]
  101. }
  102. filter?: string
  103. status: StatusType
  104. setPosition: Function
  105. }
  106. export interface CreateComponentType extends PublicConfigType, requestConfig {
  107. key: string
  108. chartConfig: ConfigType
  109. option: GlobalThemeJsonType
  110. }
  111. // 组件成组实例类
  112. export interface CreateComponentGroupType extends CreateComponentType {
  113. groupList: Array<CreateComponentType>
  114. }
  115. // 获取组件实例类中某个key对应value类型的方法
  116. export type PickCreateComponentType<T extends keyof CreateComponentType> = Pick<CreateComponentType, T>[T]
  117. // 包分类枚举
  118. export enum PackagesCategoryEnum {
  119. CHARTS = 'Charts',
  120. TABLES = 'Tables',
  121. INFORMATIONS = 'Informations',
  122. DECORATES = 'Decorates'
  123. }
  124. // 包分类名称
  125. export enum PackagesCategoryName {
  126. CHARTS = '图表',
  127. TABLES = '列表',
  128. INFORMATIONS = '信息',
  129. DECORATES = '小组件'
  130. }
  131. // 获取组件
  132. export enum FetchComFlagType {
  133. VIEW,
  134. CONFIG
  135. }
  136. // 图表包类型
  137. export type PackagesType = {
  138. [PackagesCategoryEnum.CHARTS]: ConfigType[]
  139. [PackagesCategoryEnum.INFORMATIONS]: ConfigType[]
  140. [PackagesCategoryEnum.TABLES]: ConfigType[]
  141. [PackagesCategoryEnum.DECORATES]: ConfigType[]
  142. }