github.com/e154/smart-home@v0.17.2-0.20240311175135-e530a6e5cd45/static_source/admin/src/views/Dashboard/card_items/index.ts (about) 1 import {Dummy, DummyEditor} from './dummy'; 2 import {Button, ButtonEditor, ItemPayloadButton} from './button'; 3 import {ItemPayloadText, Text, TextEditor} from './text'; 4 import {State, StateEditor, ItemPayloadState} from './state'; 5 import {Image, ImageEditor, ItemPayloadImage} from './image'; 6 import {Logs, LogsEditor, ItemPayloadLogs} from './logs'; 7 import {Progress, ProgressEditor, ItemPayloadProgress} from './progress'; 8 import {Chart, ChartEditor, ItemPayloadChart} from './chart'; 9 import {ChartCustom, ChartCustomEditor, ItemPayloadChartCustom} from './chart_custom'; 10 import {EntityStorage, EntityStorageEditor, ItemPayloadEntityStorage} from './entity_storage'; 11 import {Map, MapEditor, ItemPayloadMap} from './map'; 12 import {Slider, SliderEditor, ItemPayloadSlider} from './slider'; 13 import {ColorPicker, ColorPickerEditor, ItemPayloadColorPicker} from './color_picker'; 14 import {StreamPlayer, StreamPlayerEditor, ItemPayloadVideo} from './video'; 15 import {Joystick, JoystickEditor, ItemPayloadJoystick} from './joystick'; 16 import {Icon, IconEditor, ItemPayloadIcon} from './icon'; 17 import {Grid, GridEditor, ItemPayloadGrid} from './grid'; 18 import {Three, ThreeEditor, ItemPayloadThree} from './three'; 19 import {Modal, ModalEditor, ItemPayloadModal} from './modal'; 20 import {ItemPayloadJsonViewer, JsonViewer, JsonViewerEditor} from './json_viewer'; 21 import {useI18n} from "@/hooks/web/useI18n"; 22 23 export const CardItemName = (name: string): any => { 24 switch (name) { 25 case 'button': 26 return Button; 27 case 'text': 28 return Text; 29 case 'state': 30 return State; 31 case 'image': 32 return Image; 33 case 'logs': 34 return Logs; 35 case 'progress': 36 return Progress; 37 case 'chart': 38 return Chart; 39 case 'chart_custom': 40 case 'chartCustom': 41 return ChartCustom; 42 case 'entityStorage': 43 return EntityStorage; 44 case 'map': 45 return Map; 46 case 'slider': 47 return Slider; 48 case 'colorPicker': 49 return ColorPicker; 50 case 'streamPlayer': 51 return StreamPlayer; 52 case 'joystick': 53 return Joystick; 54 case 'icon': 55 return Icon; 56 case 'grid': 57 return Grid; 58 case 'three': 59 return Three; 60 case 'jsonViewer': 61 return JsonViewer; 62 case 'modal': 63 return Modal; 64 default: 65 // console.error(`unknown card name "${name}"`); 66 return Dummy; 67 } 68 }; 69 70 export const CardEditorName = (name: string): any => { 71 switch (name) { 72 case 'button': 73 return ButtonEditor; 74 case 'text': 75 return TextEditor; 76 case 'state': 77 return StateEditor; 78 case 'image': 79 return ImageEditor; 80 case 'logs': 81 return LogsEditor; 82 case 'progress': 83 return ProgressEditor; 84 case 'chart': 85 return ChartEditor; 86 case 'chart_custom': 87 case 'chartCustom': 88 return ChartCustomEditor; 89 case 'entityStorage': 90 return EntityStorageEditor; 91 case 'map': 92 return MapEditor; 93 case 'slider': 94 return SliderEditor; 95 case 'colorPicker': 96 return ColorPickerEditor; 97 case 'streamPlayer': 98 return StreamPlayerEditor; 99 case 'joystick': 100 return JoystickEditor; 101 case 'icon': 102 return IconEditor; 103 case 'grid': 104 return GridEditor; 105 case 'three': 106 return ThreeEditor; 107 case 'jsonViewer': 108 return JsonViewerEditor; 109 case 'modal': 110 return ModalEditor; 111 default: 112 // console.error(`unknown card name "${name}"`); 113 return DummyEditor; 114 } 115 }; 116 117 const {t} = useI18n() 118 119 export interface ItemsType { 120 label: string; 121 value: string; 122 children?: ItemsType[]; 123 } 124 125 export const CardItemList: ItemsType[] = [ 126 { 127 value: 'general', 128 label: 'General', 129 children: [ 130 {label: t('dashboard.editor.TEXT'), value: 'text'}, 131 {label: t('dashboard.editor.IMAGE'), value: 'image'}, 132 {label: t('dashboard.editor.PROGRESS'), value: 'progress'}, 133 {label: t('dashboard.editor.ICON'), value: 'icon'}, 134 {label: t('dashboard.editor.STATE'), value: 'state'}, 135 {label: t('dashboard.editor.GRID'), value: 'grid'}, 136 // {label: t('dashboard.editor.MODAL'), value: 'modal'}, 137 ], 138 }, 139 { 140 value: 'dashboard', 141 label: 'Dashboard', 142 children: [ 143 {label: t('dashboard.editor.LOGS'), value: 'logs'}, 144 {label: t('dashboard.editor.ENTITY_STORAGE'), value: 'entityStorage'}, 145 {label: t('dashboard.editor.JSON_VIEWER'), value: 'jsonViewer'}, 146 ], 147 }, 148 { 149 value: 'video', 150 label: 'Video', 151 children: [ 152 {label: t('dashboard.editor.STREAM_PLAYER'), value: 'streamPlayer'}, 153 ], 154 }, 155 { 156 value: 'control', 157 label: 'Control', 158 children: [ 159 {label: t('dashboard.editor.BUTTON'), value: 'button'}, 160 {label: t('dashboard.editor.JOYSTICK'), value: 'joystick'}, 161 {label: t('dashboard.editor.SLIDER'), value: 'slider'}, 162 {label: t('dashboard.editor.COLOR_PICKER'), value: 'colorPicker'}, 163 ], 164 }, 165 { 166 value: 'charts', 167 label: 'Charts', 168 children: [ 169 {label: t('dashboard.editor.CHART'), value: 'chart'}, 170 ], 171 }, 172 { 173 value: 'geo', 174 label: 'Geo', 175 children: [ 176 {label: t('dashboard.editor.MAP'), value: 'map'}, 177 ], 178 }, 179 { 180 value: 'experimental', 181 label: 'Experimental', 182 children: [ 183 // {label: t('dashboard.editor.THREE'), value: 'three'}, 184 {label: t('dashboard.editor.CHART_CUSTOM'), value: 'chartCustom'}, 185 ], 186 } 187 ]; 188 189 export interface ItemPayload { 190 text?: ItemPayloadText; 191 image?: ItemPayloadImage; 192 icon?: ItemPayloadIcon; 193 button?: ItemPayloadButton; 194 state?: ItemPayloadState; 195 logs?: ItemPayloadLogs; 196 progress?: ItemPayloadProgress; 197 chart?: ItemPayloadChart; 198 chartCustom?: ItemPayloadChartCustom; 199 map?: ItemPayloadMap; 200 slider?: ItemPayloadSlider; 201 colorPicker?: ItemPayloadColorPicker; 202 joystick?: ItemPayloadJoystick; 203 video?: ItemPayloadVideo; 204 entityStorage?: ItemPayloadEntityStorage; 205 grid?: ItemPayloadGrid; 206 three?: ItemPayloadThree; 207 jsonViewer?: ItemPayloadJsonViewer; 208 modal?: ItemPayloadModal; 209 }