help.ts 6.11 KB
import { Component } from 'vue';
import TextComponent from './TextComponent/TextComponent.vue';
import {
  TextComponent1Config,
  TextComponent3Config,
  TextComponent4Config,
  TextComponent5Config,
  TextComponentDefaultConfig,
  transformTextComponentConfig,
} from './TextComponent/config';
import { ComponentInfo, DataComponentRecord, DataSource } from '/@/api/dataBoard/model';
import DashBoardComponent from './InstrumentComponent/DashBoardComponent.vue';
import PictureComponent from './PictureComponent/PictureComponent.vue';
import { transformPictureConfig } from './PictureComponent/pictureComponent.config';
import {
  DashboardComponentLayout,
  Instrument1DefaultConfig,
  Instrument2DefaultConfig,
  instrumentComponent1,
  instrumentComponent2,
  transformDashboardComponentConfig,
} from './InstrumentComponent/dashBoardComponent.config';
import DigitalDashBoard from './InstrumentComponent/DigitalDashBoard.vue';
import { DigitalComponentDefaultConfig } from './InstrumentComponent/digitalDashBoard.config';
import ToggleSwitch from './ControlComponent/ToggleSwitch.vue';
import { transformControlConfig } from './ControlComponent/toggleSwitch.config';

export enum FrontComponentCategory {
  TEXT = 'text',
  PICTURE = 'picture',
  INSTRUMENT = 'instrument',
  CONTROL = 'control',
  MAP = 'map',
}

export const FrontComponentCategoryName = {
  [FrontComponentCategory.TEXT]: '文本组件',
  [FrontComponentCategory.INSTRUMENT]: '仪表组件',
  [FrontComponentCategory.CONTROL]: '控制组件',
  [FrontComponentCategory.PICTURE]: '图片组件',
  [FrontComponentCategory.MAP]: '地图组件',
};

export enum FrontComponent {
  TEXT_COMPONENT_1 = 'text-component-1',
  TEXT_COMPONENT_2 = 'text-component-2',
  TEXT_COMPONENT_3 = 'text-component-3',
  TEXT_COMPONENT_4 = 'text-component-4',
  TEXT_COMPONENT_5 = 'text-component-5',
  INSTRUMENT_COMPONENT_1 = 'instrument-component-1',
  INSTRUMENT_COMPONENT_2 = 'instrument-component-2',
  DIGITAL_DASHBOARD_COMPONENT = 'digital-dashboard-component',
  PICTURE_COMPONENT_1 = 'picture-component-1',
  CONTROL_COMPONENT_TOGGLE_SWITCH = 'control-component-toggle-switch',
}

export interface ComponentConfig {
  Component: Component;
  ComponentKey: FrontComponent;
  ComponentConfig?: Recordable;
  ComponentCategory: FrontComponentCategory;
  transformConfig: (
    componentConfig: Recordable,
    record: DataComponentRecord,
    dataSourceRecord: DataSource
  ) => Recordable;
}

export const frontComponentDefaultConfigMap = new Map<FrontComponent, Partial<ComponentInfo>>();

export const frontComponentMap = new Map<FrontComponent, ComponentConfig>();

frontComponentMap.set(FrontComponent.TEXT_COMPONENT_1, {
  Component: TextComponent,
  ComponentKey: FrontComponent.TEXT_COMPONENT_1,
  ComponentConfig: TextComponent1Config,
  ComponentCategory: FrontComponentCategory.TEXT,
  transformConfig: transformTextComponentConfig,
});

frontComponentMap.set(FrontComponent.TEXT_COMPONENT_3, {
  Component: TextComponent,
  ComponentKey: FrontComponent.TEXT_COMPONENT_3,
  ComponentConfig: TextComponent3Config,
  ComponentCategory: FrontComponentCategory.TEXT,
  transformConfig: transformTextComponentConfig,
});

frontComponentMap.set(FrontComponent.TEXT_COMPONENT_4, {
  Component: TextComponent,
  ComponentKey: FrontComponent.TEXT_COMPONENT_4,
  ComponentConfig: TextComponent4Config,
  ComponentCategory: FrontComponentCategory.TEXT,
  transformConfig: transformTextComponentConfig,
});

frontComponentMap.set(FrontComponent.TEXT_COMPONENT_5, {
  Component: TextComponent,
  ComponentKey: FrontComponent.TEXT_COMPONENT_5,
  ComponentConfig: TextComponent5Config,
  ComponentCategory: FrontComponentCategory.TEXT,
  transformConfig: transformTextComponentConfig,
});

frontComponentMap.set(FrontComponent.INSTRUMENT_COMPONENT_1, {
  Component: DashBoardComponent,
  ComponentKey: FrontComponent.INSTRUMENT_COMPONENT_1,
  ComponentConfig: {
    chartOption: instrumentComponent1(Instrument1DefaultConfig),
    componentType: FrontComponent.INSTRUMENT_COMPONENT_1,
  } as DashboardComponentLayout,
  ComponentCategory: FrontComponentCategory.INSTRUMENT,
  transformConfig: transformDashboardComponentConfig,
});

frontComponentMap.set(FrontComponent.INSTRUMENT_COMPONENT_2, {
  Component: DashBoardComponent,
  ComponentKey: FrontComponent.INSTRUMENT_COMPONENT_2,
  ComponentConfig: {
    chartOption: instrumentComponent2(Instrument2DefaultConfig),
    componentType: FrontComponent.INSTRUMENT_COMPONENT_2,
  } as DashboardComponentLayout,
  ComponentCategory: FrontComponentCategory.INSTRUMENT,
  transformConfig: transformDashboardComponentConfig,
});

frontComponentMap.set(FrontComponent.DIGITAL_DASHBOARD_COMPONENT, {
  Component: DigitalDashBoard,
  ComponentKey: FrontComponent.DIGITAL_DASHBOARD_COMPONENT,
  ComponentCategory: FrontComponentCategory.INSTRUMENT,
  transformConfig: transformDashboardComponentConfig,
});

frontComponentMap.set(FrontComponent.PICTURE_COMPONENT_1, {
  Component: PictureComponent,
  ComponentKey: FrontComponent.PICTURE_COMPONENT_1,
  ComponentCategory: FrontComponentCategory.PICTURE,
  transformConfig: transformPictureConfig,
});

frontComponentMap.set(FrontComponent.CONTROL_COMPONENT_TOGGLE_SWITCH, {
  Component: ToggleSwitch,
  ComponentKey: FrontComponent.CONTROL_COMPONENT_TOGGLE_SWITCH,
  ComponentCategory: FrontComponentCategory.CONTROL,
  transformConfig: transformControlConfig,
});

frontComponentDefaultConfigMap.set(FrontComponent.TEXT_COMPONENT_1, TextComponentDefaultConfig);
frontComponentDefaultConfigMap.set(FrontComponent.TEXT_COMPONENT_3, TextComponentDefaultConfig);
frontComponentDefaultConfigMap.set(FrontComponent.TEXT_COMPONENT_4, TextComponentDefaultConfig);
frontComponentDefaultConfigMap.set(FrontComponent.TEXT_COMPONENT_5, TextComponentDefaultConfig);

frontComponentDefaultConfigMap.set(FrontComponent.INSTRUMENT_COMPONENT_1, Instrument1DefaultConfig);
frontComponentDefaultConfigMap.set(FrontComponent.INSTRUMENT_COMPONENT_2, Instrument2DefaultConfig);

frontComponentDefaultConfigMap.set(
  FrontComponent.DIGITAL_DASHBOARD_COMPONENT,
  DigitalComponentDefaultConfig
);

export const getComponentDefaultConfig = (key: FrontComponent) => {
  return frontComponentDefaultConfigMap.get(key) || {};
};