From 84b767c152f3096ce83a76178aee79fa5d8618bd Mon Sep 17 00:00:00 2001 From: luoyifan Date: Tue, 20 May 2025 21:35:43 +0800 Subject: [PATCH] =?UTF-8?q?=E5=BF=AB=E6=8D=B7=E9=94=AE=E5=AE=9A=E4=B9=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- package.json | 1 + src/components/viewMenus/editMenu/EditMenu.ts | 63 ------------ src/components/viewMenus/fileMenu/FileMenu.ts | 32 ------ src/components/viewWidgets/alarm/AlarmMeta.ts | 12 --- src/components/viewWidgets/alarm/AlarmView.vue | 3 - src/components/viewWidgets/logger/LoggerMeta.ts | 12 --- src/components/viewWidgets/logger/LoggerView.vue | 42 -------- .../viewWidgets/modeltree/ModeltreeMeta.ts | 12 --- .../viewWidgets/modeltree/ModeltreeView.vue | 42 -------- src/components/viewWidgets/monitor/MonitorMeta.ts | 12 --- src/components/viewWidgets/monitor/MonitorView.vue | 44 --------- .../viewWidgets/property/PropertyMeta.ts | 12 --- .../viewWidgets/property/PropertyView.vue | 44 --------- src/components/viewWidgets/script/ScriptMeta.ts | 12 --- src/components/viewWidgets/script/ScriptView.vue | 3 - src/components/viewWidgets/task/TaskMeta.ts | 12 --- src/components/viewWidgets/task/TaskView.vue | 22 ----- src/components/viewWidgets/toolbox/ToolboxMeta.ts | 12 --- src/components/viewWidgets/toolbox/ToolboxView.vue | 22 ----- src/designer/Designer.ts | 3 + src/designer/ModelEditor.vue | 59 +++++++++++ src/designer/ModelView.vue | 8 ++ src/designer/menus/EditMenu.ts | 110 +++++++++++++++++++++ src/designer/menus/FileMenu.ts | 32 ++++++ src/designer/viewWidgets/alarm/AlarmMeta.ts | 12 +++ src/designer/viewWidgets/alarm/AlarmView.vue | 3 + src/designer/viewWidgets/logger/LoggerMeta.ts | 12 +++ src/designer/viewWidgets/logger/LoggerView.vue | 42 ++++++++ .../viewWidgets/modeltree/ModeltreeMeta.ts | 12 +++ .../viewWidgets/modeltree/ModeltreeView.vue | 42 ++++++++ src/designer/viewWidgets/monitor/MonitorMeta.ts | 12 +++ src/designer/viewWidgets/monitor/MonitorView.vue | 44 +++++++++ src/designer/viewWidgets/property/PropertyMeta.ts | 12 +++ src/designer/viewWidgets/property/PropertyView.vue | 44 +++++++++ src/designer/viewWidgets/script/ScriptMeta.ts | 12 +++ src/designer/viewWidgets/script/ScriptView.vue | 3 + src/designer/viewWidgets/task/TaskMeta.ts | 12 +++ src/designer/viewWidgets/task/TaskView.vue | 22 +++++ src/designer/viewWidgets/toolbox/ToolboxMeta.ts | 12 +++ src/designer/viewWidgets/toolbox/ToolboxView.vue | 22 +++++ src/runtime/DefineMenu.ts | 22 ++++- src/runtime/System.ts | 3 + src/utils/webutils.ts | 3 +- src/views/ModelMain.vue | 19 +++- src/views/ModelMainInit.ts | 79 ++++++++++++--- src/views/modeleditor/ModelEditor.vue | 59 ----------- yarn.lock | 5 + 47 files changed, 643 insertions(+), 491 deletions(-) delete mode 100644 src/components/viewMenus/editMenu/EditMenu.ts delete mode 100644 src/components/viewMenus/fileMenu/FileMenu.ts delete mode 100644 src/components/viewWidgets/alarm/AlarmMeta.ts delete mode 100644 src/components/viewWidgets/alarm/AlarmView.vue delete mode 100644 src/components/viewWidgets/logger/LoggerMeta.ts delete mode 100644 src/components/viewWidgets/logger/LoggerView.vue delete mode 100644 src/components/viewWidgets/modeltree/ModeltreeMeta.ts delete mode 100644 src/components/viewWidgets/modeltree/ModeltreeView.vue delete mode 100644 src/components/viewWidgets/monitor/MonitorMeta.ts delete mode 100644 src/components/viewWidgets/monitor/MonitorView.vue delete mode 100644 src/components/viewWidgets/property/PropertyMeta.ts delete mode 100644 src/components/viewWidgets/property/PropertyView.vue delete mode 100644 src/components/viewWidgets/script/ScriptMeta.ts delete mode 100644 src/components/viewWidgets/script/ScriptView.vue delete mode 100644 src/components/viewWidgets/task/TaskMeta.ts delete mode 100644 src/components/viewWidgets/task/TaskView.vue delete mode 100644 src/components/viewWidgets/toolbox/ToolboxMeta.ts delete mode 100644 src/components/viewWidgets/toolbox/ToolboxView.vue create mode 100644 src/designer/Designer.ts create mode 100644 src/designer/ModelEditor.vue create mode 100644 src/designer/ModelView.vue create mode 100644 src/designer/menus/EditMenu.ts create mode 100644 src/designer/menus/FileMenu.ts create mode 100644 src/designer/viewWidgets/alarm/AlarmMeta.ts create mode 100644 src/designer/viewWidgets/alarm/AlarmView.vue create mode 100644 src/designer/viewWidgets/logger/LoggerMeta.ts create mode 100644 src/designer/viewWidgets/logger/LoggerView.vue create mode 100644 src/designer/viewWidgets/modeltree/ModeltreeMeta.ts create mode 100644 src/designer/viewWidgets/modeltree/ModeltreeView.vue create mode 100644 src/designer/viewWidgets/monitor/MonitorMeta.ts create mode 100644 src/designer/viewWidgets/monitor/MonitorView.vue create mode 100644 src/designer/viewWidgets/property/PropertyMeta.ts create mode 100644 src/designer/viewWidgets/property/PropertyView.vue create mode 100644 src/designer/viewWidgets/script/ScriptMeta.ts create mode 100644 src/designer/viewWidgets/script/ScriptView.vue create mode 100644 src/designer/viewWidgets/task/TaskMeta.ts create mode 100644 src/designer/viewWidgets/task/TaskView.vue create mode 100644 src/designer/viewWidgets/toolbox/ToolboxMeta.ts create mode 100644 src/designer/viewWidgets/toolbox/ToolboxView.vue delete mode 100644 src/views/modeleditor/ModelEditor.vue diff --git a/package.json b/package.json index b47b83a..9a83bab 100644 --- a/package.json +++ b/package.json @@ -20,6 +20,7 @@ "dat.gui": "^0.7.9", "decimal.js": "^10.5.0", "element-plus": "^2.9.10", + "hotkeys-js": "^3.13.10", "jquery": "^3.6.0", "less": "^4.2.1", "localforage": "^1.10.0", diff --git a/src/components/viewMenus/editMenu/EditMenu.ts b/src/components/viewMenus/editMenu/EditMenu.ts deleted file mode 100644 index 7637d4e..0000000 --- a/src/components/viewMenus/editMenu/EditMenu.ts +++ /dev/null @@ -1,63 +0,0 @@ -import { renderIcon } from '@/utils/webutils.ts' -import { defineMenu } from '@/runtime/DefineMenu.ts' -import SvgCode from '@/components/icons/SvgCode' - -export default defineMenu((menus) => { - menus.insertChildren('modelFile', - { - name: 'modelFile', - label: '编辑', - icon: renderIcon('ModelFile'), - order: 1 - }, - [ - { - name: 'find', label: '查找', icon: SvgCode.find, order: 1, tip: 'Ctrl+F', divided: true, - click: () => { - system.msg('查找') - } - }, - { - name: 'undo', label: '撤销', icon: SvgCode.undo, order: 2, tip: 'Ctrl+Z', disabled: true, - click: () => { - system.msg('撤销') - } - }, - { - name: 'redo', label: '重做', icon: SvgCode.redo, order: 3, tip: 'Ctrl+Y', divided: true, - disabled() { - return true - }, - click() { - system.msg('重做') - } - }, - { - name: 'copy', label: '复制', icon: SvgCode.copy, order: 4, tip: 'Ctrl+C', - disabled() { - return true - }, - click() { - system.msg('复制') - } - }, - { - name: 'cut', label: '剪切', icon: SvgCode.cut, order: 5, tip: 'Ctrl+X', - disabled() { - return true - }, - click() { - system.msg('剪切') - } - }, - { - name: 'paste', label: '粘贴', icon: SvgCode.paste, order: 6, tip: 'Ctrl+V', - disabled() { - return true - }, - click() { - system.msg('粘贴') - } - } - ]) -}) \ No newline at end of file diff --git a/src/components/viewMenus/fileMenu/FileMenu.ts b/src/components/viewMenus/fileMenu/FileMenu.ts deleted file mode 100644 index 239ab3c..0000000 --- a/src/components/viewMenus/fileMenu/FileMenu.ts +++ /dev/null @@ -1,32 +0,0 @@ -import { renderIcon } from '@/utils/webutils.ts' -import { defineMenu } from '@/runtime/DefineMenu.ts' -import SvgCode from '@/components/icons/SvgCode' -import { Open } from '@element-plus/icons-vue' - -export default defineMenu((menus) => { - menus.insertChildren('file', - { - name: 'file', label: '模型', icon: renderIcon('ModelFile'), order: 1, disabled: false - }, - [ - { - name: 'open', label: '打开', icon: SvgCode.open, order: 1, tip: 'Ctrl+O', - click: () => { - system.msg('打开模型文件') - } - }, - { - name: 'save', label: '保存', icon: SvgCode.save, order: 2, tip: 'Ctrl+S', - click: () => { - system.msg('保存模型文件') - } - }, - { - name: 'saveAs', label: '另存为', icon: renderIcon('ModelFile'), order: 3, - click: () => { - system.msg('另存为模型文件') - } - } - ] - ) -}) \ No newline at end of file diff --git a/src/components/viewWidgets/alarm/AlarmMeta.ts b/src/components/viewWidgets/alarm/AlarmMeta.ts deleted file mode 100644 index 56cd72e..0000000 --- a/src/components/viewWidgets/alarm/AlarmMeta.ts +++ /dev/null @@ -1,12 +0,0 @@ -import { defineWidget } from '@/runtime/DefineWidget.ts' -import { renderIcon } from '@/utils/webutils.ts' -import AlarmView from './AlarmView.vue' - -export default defineWidget({ - name: 'alarm', - title: '告警', - icon: renderIcon('antd AlertOutlined'), - side: 'right', - order: 2, - component: AlarmView -}) \ No newline at end of file diff --git a/src/components/viewWidgets/alarm/AlarmView.vue b/src/components/viewWidgets/alarm/AlarmView.vue deleted file mode 100644 index dbfb982..0000000 --- a/src/components/viewWidgets/alarm/AlarmView.vue +++ /dev/null @@ -1,3 +0,0 @@ - \ No newline at end of file diff --git a/src/components/viewWidgets/logger/LoggerMeta.ts b/src/components/viewWidgets/logger/LoggerMeta.ts deleted file mode 100644 index eb75c82..0000000 --- a/src/components/viewWidgets/logger/LoggerMeta.ts +++ /dev/null @@ -1,12 +0,0 @@ -import { defineWidget } from '@/runtime/DefineWidget.ts' -import { renderIcon } from '@/utils/webutils.ts' -import LoggerView from './LoggerView.vue' - -export default defineWidget({ - name: 'logger', - title: '日志', - icon: renderIcon('element ToiletPaper'), - side: 'bottom', - order: 2, - component: LoggerView -}) \ No newline at end of file diff --git a/src/components/viewWidgets/logger/LoggerView.vue b/src/components/viewWidgets/logger/LoggerView.vue deleted file mode 100644 index 740b14d..0000000 --- a/src/components/viewWidgets/logger/LoggerView.vue +++ /dev/null @@ -1,42 +0,0 @@ - \ No newline at end of file diff --git a/src/components/viewWidgets/modeltree/ModeltreeMeta.ts b/src/components/viewWidgets/modeltree/ModeltreeMeta.ts deleted file mode 100644 index 09b1363..0000000 --- a/src/components/viewWidgets/modeltree/ModeltreeMeta.ts +++ /dev/null @@ -1,12 +0,0 @@ -import { defineWidget } from '@/runtime/DefineWidget.ts' -import { renderIcon } from '@/utils/webutils.ts' -import ModeltreeView from './ModeltreeView.vue' - -export default defineWidget({ - name: 'modeltree', - title: '模型', - icon: renderIcon('antd ClusterOutlined'), - side: 'left', - order: 1, - component: ModeltreeView -}) \ No newline at end of file diff --git a/src/components/viewWidgets/modeltree/ModeltreeView.vue b/src/components/viewWidgets/modeltree/ModeltreeView.vue deleted file mode 100644 index ef68c13..0000000 --- a/src/components/viewWidgets/modeltree/ModeltreeView.vue +++ /dev/null @@ -1,42 +0,0 @@ - \ No newline at end of file diff --git a/src/components/viewWidgets/monitor/MonitorMeta.ts b/src/components/viewWidgets/monitor/MonitorMeta.ts deleted file mode 100644 index 07cddde..0000000 --- a/src/components/viewWidgets/monitor/MonitorMeta.ts +++ /dev/null @@ -1,12 +0,0 @@ -import { defineWidget } from '@/runtime/DefineWidget.ts' -import { renderIcon } from '@/utils/webutils.ts' -import MonitorView from './MonitorView.vue' - -export default defineWidget({ - name: 'monitor', - title: '监控', - icon: renderIcon('antd DashboardOutlined'), - side: 'left', - order: 2, - component: MonitorView -}) \ No newline at end of file diff --git a/src/components/viewWidgets/monitor/MonitorView.vue b/src/components/viewWidgets/monitor/MonitorView.vue deleted file mode 100644 index c432642..0000000 --- a/src/components/viewWidgets/monitor/MonitorView.vue +++ /dev/null @@ -1,44 +0,0 @@ - - \ No newline at end of file diff --git a/src/components/viewWidgets/property/PropertyMeta.ts b/src/components/viewWidgets/property/PropertyMeta.ts deleted file mode 100644 index 27450a8..0000000 --- a/src/components/viewWidgets/property/PropertyMeta.ts +++ /dev/null @@ -1,12 +0,0 @@ -import { defineWidget } from '@/runtime/DefineWidget.ts' -import { renderIcon } from '@/utils/webutils.ts' -import PropertyView from './PropertyView.vue' - -export default defineWidget({ - name: 'property', - title: '属性', - icon: renderIcon('element Memo'), - side: 'right', - order: 1, - component: PropertyView -}) \ No newline at end of file diff --git a/src/components/viewWidgets/property/PropertyView.vue b/src/components/viewWidgets/property/PropertyView.vue deleted file mode 100644 index 593b562..0000000 --- a/src/components/viewWidgets/property/PropertyView.vue +++ /dev/null @@ -1,44 +0,0 @@ - - \ No newline at end of file diff --git a/src/components/viewWidgets/script/ScriptMeta.ts b/src/components/viewWidgets/script/ScriptMeta.ts deleted file mode 100644 index aaebd89..0000000 --- a/src/components/viewWidgets/script/ScriptMeta.ts +++ /dev/null @@ -1,12 +0,0 @@ -import { defineWidget } from '../../../runtime/DefineWidget.ts' -import { renderIcon } from '@/utils/webutils.ts' -import ScriptView from './ScriptView.vue' - -export default defineWidget({ - name: 'script', - title: '脚本', - icon: renderIcon('antd CodeOutlined'), - side: 'bottom', - order: 3, - component: ScriptView -}) \ No newline at end of file diff --git a/src/components/viewWidgets/script/ScriptView.vue b/src/components/viewWidgets/script/ScriptView.vue deleted file mode 100644 index dbf5c23..0000000 --- a/src/components/viewWidgets/script/ScriptView.vue +++ /dev/null @@ -1,3 +0,0 @@ - \ No newline at end of file diff --git a/src/components/viewWidgets/task/TaskMeta.ts b/src/components/viewWidgets/task/TaskMeta.ts deleted file mode 100644 index 602efdf..0000000 --- a/src/components/viewWidgets/task/TaskMeta.ts +++ /dev/null @@ -1,12 +0,0 @@ -import { defineWidget } from '@/runtime/DefineWidget.ts' -import { renderIcon } from '@/utils/webutils.ts' -import TaskView from './TaskView.vue' - -export default defineWidget({ - name: 'task', - title: '任务', - icon: renderIcon('element List'), - side: 'bottom', - order: 1, - component: TaskView -}) \ No newline at end of file diff --git a/src/components/viewWidgets/task/TaskView.vue b/src/components/viewWidgets/task/TaskView.vue deleted file mode 100644 index 569aa7b..0000000 --- a/src/components/viewWidgets/task/TaskView.vue +++ /dev/null @@ -1,22 +0,0 @@ - \ No newline at end of file diff --git a/src/components/viewWidgets/toolbox/ToolboxMeta.ts b/src/components/viewWidgets/toolbox/ToolboxMeta.ts deleted file mode 100644 index 9ccd171..0000000 --- a/src/components/viewWidgets/toolbox/ToolboxMeta.ts +++ /dev/null @@ -1,12 +0,0 @@ -import { defineWidget } from '@/runtime/DefineWidget.ts' -import { renderIcon } from '@/utils/webutils.ts' -import ToolboxView from './ToolboxView.vue' - -export default defineWidget({ - name: 'toolbox', - title: '工具箱', - icon: renderIcon('antd CodepenOutlined'), - side: 'left', - order: 3, - component: ToolboxView -}) \ No newline at end of file diff --git a/src/components/viewWidgets/toolbox/ToolboxView.vue b/src/components/viewWidgets/toolbox/ToolboxView.vue deleted file mode 100644 index 4cdb0a7..0000000 --- a/src/components/viewWidgets/toolbox/ToolboxView.vue +++ /dev/null @@ -1,22 +0,0 @@ - \ No newline at end of file diff --git a/src/designer/Designer.ts b/src/designer/Designer.ts new file mode 100644 index 0000000..6c868d1 --- /dev/null +++ b/src/designer/Designer.ts @@ -0,0 +1,3 @@ +export default class Designer { + +} \ No newline at end of file diff --git a/src/designer/ModelEditor.vue b/src/designer/ModelEditor.vue new file mode 100644 index 0000000..b9ca4f0 --- /dev/null +++ b/src/designer/ModelEditor.vue @@ -0,0 +1,59 @@ + + \ No newline at end of file diff --git a/src/designer/ModelView.vue b/src/designer/ModelView.vue new file mode 100644 index 0000000..78e4ba9 --- /dev/null +++ b/src/designer/ModelView.vue @@ -0,0 +1,8 @@ + + \ No newline at end of file diff --git a/src/designer/menus/EditMenu.ts b/src/designer/menus/EditMenu.ts new file mode 100644 index 0000000..fa34631 --- /dev/null +++ b/src/designer/menus/EditMenu.ts @@ -0,0 +1,110 @@ +import { renderIcon } from '@/utils/webutils.ts' +import { defineMenu } from '@/runtime/DefineMenu.ts' +import SvgCode from '@/components/icons/SvgCode' + +export default defineMenu((menus) => { + menus.insertChildren('modelFile', + { + name: 'modelFile', + label: '编辑', + icon: renderIcon('ModelFile'), + order: 1 + }, + [ + { + name: 'find', label: '全局查找', icon: SvgCode.find, order: 1, tip: 'Ctrl+H', + click: () => { + system.msg('全局查找') + } + }, + { + name: 'resource', label: '资源定位', icon: SvgCode.find, order: 1.1, tip: 'Ctrl+Shift+R', divided: true, + click: () => { + system.msg('资源定位') + } + }, + { + name: 'undo', label: '撤销', icon: SvgCode.undo, order: 2, tip: 'Ctrl+Z', disabled: true, + click: () => { + system.msg('撤销') + } + }, + { + name: 'redo', label: '重做', icon: SvgCode.redo, order: 3, tip: 'Ctrl+Y', divided: true, + click() { + system.msg('重做') + } + }, + { + name: 'copy', label: '复制', icon: SvgCode.copy, order: 4, tip: 'Ctrl+C', + click() { + system.msg('复制') + } + }, + { + name: 'cut', label: '剪切', icon: SvgCode.cut, order: 5, tip: 'Ctrl+X', + click() { + system.msg('剪切') + } + }, + { + name: 'paste', label: '粘贴', icon: SvgCode.paste, order: 6, tip: 'Ctrl+V', + click() { + system.msg('粘贴') + } + }, + { + name: 'delete', label: '删除', icon: SvgCode.delete, order: 7, tip: 'key-delete', divided: true, + click() { + system.msg('删除') + } + }, + { + name: 'edit_property', label: '快速转换', order: 8, + children: [ + { + name: 'edit_property_esc', label: '取消', order: 1, tip: 'key-esc', + click() { + system.msg('ESC') + } + }, + { + name: 'edit_property_rotate', label: '转向90度', order: 1, tip: 'key-r', + click() { + system.msg('转向90度') + } + }, + { + name: 'edit_append', label: '快速添加', tip: 'key-q', + click() { + system.msg('快速添加') + } + }, + { + name: 'edit_up', label: '上移', tip: 'key-up', + click() { + system.msg('↑') + } + }, + { + name: 'edit_down', label: '下移', tip: 'key-down', + click() { + system.msg('↓') + } + }, + { + name: 'edit_left', label: '左移', tip: 'key-left', + click() { + system.msg('←') + } + }, + { + name: 'edit_right', label: '右移', tip: 'key-right', + click() { + system.msg('→') + } + } + ] + } + ]) +}) \ No newline at end of file diff --git a/src/designer/menus/FileMenu.ts b/src/designer/menus/FileMenu.ts new file mode 100644 index 0000000..239ab3c --- /dev/null +++ b/src/designer/menus/FileMenu.ts @@ -0,0 +1,32 @@ +import { renderIcon } from '@/utils/webutils.ts' +import { defineMenu } from '@/runtime/DefineMenu.ts' +import SvgCode from '@/components/icons/SvgCode' +import { Open } from '@element-plus/icons-vue' + +export default defineMenu((menus) => { + menus.insertChildren('file', + { + name: 'file', label: '模型', icon: renderIcon('ModelFile'), order: 1, disabled: false + }, + [ + { + name: 'open', label: '打开', icon: SvgCode.open, order: 1, tip: 'Ctrl+O', + click: () => { + system.msg('打开模型文件') + } + }, + { + name: 'save', label: '保存', icon: SvgCode.save, order: 2, tip: 'Ctrl+S', + click: () => { + system.msg('保存模型文件') + } + }, + { + name: 'saveAs', label: '另存为', icon: renderIcon('ModelFile'), order: 3, + click: () => { + system.msg('另存为模型文件') + } + } + ] + ) +}) \ No newline at end of file diff --git a/src/designer/viewWidgets/alarm/AlarmMeta.ts b/src/designer/viewWidgets/alarm/AlarmMeta.ts new file mode 100644 index 0000000..56cd72e --- /dev/null +++ b/src/designer/viewWidgets/alarm/AlarmMeta.ts @@ -0,0 +1,12 @@ +import { defineWidget } from '@/runtime/DefineWidget.ts' +import { renderIcon } from '@/utils/webutils.ts' +import AlarmView from './AlarmView.vue' + +export default defineWidget({ + name: 'alarm', + title: '告警', + icon: renderIcon('antd AlertOutlined'), + side: 'right', + order: 2, + component: AlarmView +}) \ No newline at end of file diff --git a/src/designer/viewWidgets/alarm/AlarmView.vue b/src/designer/viewWidgets/alarm/AlarmView.vue new file mode 100644 index 0000000..dbfb982 --- /dev/null +++ b/src/designer/viewWidgets/alarm/AlarmView.vue @@ -0,0 +1,3 @@ + \ No newline at end of file diff --git a/src/designer/viewWidgets/logger/LoggerMeta.ts b/src/designer/viewWidgets/logger/LoggerMeta.ts new file mode 100644 index 0000000..eb75c82 --- /dev/null +++ b/src/designer/viewWidgets/logger/LoggerMeta.ts @@ -0,0 +1,12 @@ +import { defineWidget } from '@/runtime/DefineWidget.ts' +import { renderIcon } from '@/utils/webutils.ts' +import LoggerView from './LoggerView.vue' + +export default defineWidget({ + name: 'logger', + title: '日志', + icon: renderIcon('element ToiletPaper'), + side: 'bottom', + order: 2, + component: LoggerView +}) \ No newline at end of file diff --git a/src/designer/viewWidgets/logger/LoggerView.vue b/src/designer/viewWidgets/logger/LoggerView.vue new file mode 100644 index 0000000..740b14d --- /dev/null +++ b/src/designer/viewWidgets/logger/LoggerView.vue @@ -0,0 +1,42 @@ + \ No newline at end of file diff --git a/src/designer/viewWidgets/modeltree/ModeltreeMeta.ts b/src/designer/viewWidgets/modeltree/ModeltreeMeta.ts new file mode 100644 index 0000000..09b1363 --- /dev/null +++ b/src/designer/viewWidgets/modeltree/ModeltreeMeta.ts @@ -0,0 +1,12 @@ +import { defineWidget } from '@/runtime/DefineWidget.ts' +import { renderIcon } from '@/utils/webutils.ts' +import ModeltreeView from './ModeltreeView.vue' + +export default defineWidget({ + name: 'modeltree', + title: '模型', + icon: renderIcon('antd ClusterOutlined'), + side: 'left', + order: 1, + component: ModeltreeView +}) \ No newline at end of file diff --git a/src/designer/viewWidgets/modeltree/ModeltreeView.vue b/src/designer/viewWidgets/modeltree/ModeltreeView.vue new file mode 100644 index 0000000..ef68c13 --- /dev/null +++ b/src/designer/viewWidgets/modeltree/ModeltreeView.vue @@ -0,0 +1,42 @@ + \ No newline at end of file diff --git a/src/designer/viewWidgets/monitor/MonitorMeta.ts b/src/designer/viewWidgets/monitor/MonitorMeta.ts new file mode 100644 index 0000000..07cddde --- /dev/null +++ b/src/designer/viewWidgets/monitor/MonitorMeta.ts @@ -0,0 +1,12 @@ +import { defineWidget } from '@/runtime/DefineWidget.ts' +import { renderIcon } from '@/utils/webutils.ts' +import MonitorView from './MonitorView.vue' + +export default defineWidget({ + name: 'monitor', + title: '监控', + icon: renderIcon('antd DashboardOutlined'), + side: 'left', + order: 2, + component: MonitorView +}) \ No newline at end of file diff --git a/src/designer/viewWidgets/monitor/MonitorView.vue b/src/designer/viewWidgets/monitor/MonitorView.vue new file mode 100644 index 0000000..c432642 --- /dev/null +++ b/src/designer/viewWidgets/monitor/MonitorView.vue @@ -0,0 +1,44 @@ + + \ No newline at end of file diff --git a/src/designer/viewWidgets/property/PropertyMeta.ts b/src/designer/viewWidgets/property/PropertyMeta.ts new file mode 100644 index 0000000..27450a8 --- /dev/null +++ b/src/designer/viewWidgets/property/PropertyMeta.ts @@ -0,0 +1,12 @@ +import { defineWidget } from '@/runtime/DefineWidget.ts' +import { renderIcon } from '@/utils/webutils.ts' +import PropertyView from './PropertyView.vue' + +export default defineWidget({ + name: 'property', + title: '属性', + icon: renderIcon('element Memo'), + side: 'right', + order: 1, + component: PropertyView +}) \ No newline at end of file diff --git a/src/designer/viewWidgets/property/PropertyView.vue b/src/designer/viewWidgets/property/PropertyView.vue new file mode 100644 index 0000000..593b562 --- /dev/null +++ b/src/designer/viewWidgets/property/PropertyView.vue @@ -0,0 +1,44 @@ + + \ No newline at end of file diff --git a/src/designer/viewWidgets/script/ScriptMeta.ts b/src/designer/viewWidgets/script/ScriptMeta.ts new file mode 100644 index 0000000..aaebd89 --- /dev/null +++ b/src/designer/viewWidgets/script/ScriptMeta.ts @@ -0,0 +1,12 @@ +import { defineWidget } from '../../../runtime/DefineWidget.ts' +import { renderIcon } from '@/utils/webutils.ts' +import ScriptView from './ScriptView.vue' + +export default defineWidget({ + name: 'script', + title: '脚本', + icon: renderIcon('antd CodeOutlined'), + side: 'bottom', + order: 3, + component: ScriptView +}) \ No newline at end of file diff --git a/src/designer/viewWidgets/script/ScriptView.vue b/src/designer/viewWidgets/script/ScriptView.vue new file mode 100644 index 0000000..dbf5c23 --- /dev/null +++ b/src/designer/viewWidgets/script/ScriptView.vue @@ -0,0 +1,3 @@ + \ No newline at end of file diff --git a/src/designer/viewWidgets/task/TaskMeta.ts b/src/designer/viewWidgets/task/TaskMeta.ts new file mode 100644 index 0000000..602efdf --- /dev/null +++ b/src/designer/viewWidgets/task/TaskMeta.ts @@ -0,0 +1,12 @@ +import { defineWidget } from '@/runtime/DefineWidget.ts' +import { renderIcon } from '@/utils/webutils.ts' +import TaskView from './TaskView.vue' + +export default defineWidget({ + name: 'task', + title: '任务', + icon: renderIcon('element List'), + side: 'bottom', + order: 1, + component: TaskView +}) \ No newline at end of file diff --git a/src/designer/viewWidgets/task/TaskView.vue b/src/designer/viewWidgets/task/TaskView.vue new file mode 100644 index 0000000..569aa7b --- /dev/null +++ b/src/designer/viewWidgets/task/TaskView.vue @@ -0,0 +1,22 @@ + \ No newline at end of file diff --git a/src/designer/viewWidgets/toolbox/ToolboxMeta.ts b/src/designer/viewWidgets/toolbox/ToolboxMeta.ts new file mode 100644 index 0000000..9ccd171 --- /dev/null +++ b/src/designer/viewWidgets/toolbox/ToolboxMeta.ts @@ -0,0 +1,12 @@ +import { defineWidget } from '@/runtime/DefineWidget.ts' +import { renderIcon } from '@/utils/webutils.ts' +import ToolboxView from './ToolboxView.vue' + +export default defineWidget({ + name: 'toolbox', + title: '工具箱', + icon: renderIcon('antd CodepenOutlined'), + side: 'left', + order: 3, + component: ToolboxView +}) \ No newline at end of file diff --git a/src/designer/viewWidgets/toolbox/ToolboxView.vue b/src/designer/viewWidgets/toolbox/ToolboxView.vue new file mode 100644 index 0000000..4cdb0a7 --- /dev/null +++ b/src/designer/viewWidgets/toolbox/ToolboxView.vue @@ -0,0 +1,22 @@ + \ No newline at end of file diff --git a/src/runtime/DefineMenu.ts b/src/runtime/DefineMenu.ts index bccc309..8e16e2c 100644 --- a/src/runtime/DefineMenu.ts +++ b/src/runtime/DefineMenu.ts @@ -1,4 +1,4 @@ -import type { Component } from 'vue' +import _ from 'lodash' export interface MenuOption { name: string @@ -72,6 +72,26 @@ export function getChildrenMenu(name: string) { } /** + * 遍历菜单 + * @param callback 回调函数 + */ +export function forEachMenu(callback: (menu: MenuOption) => void) { + // 递归遍历菜单 + const traverse = (menu: MenuOption) => { + callback(menu) + if (menu.children) { + _.forEach(menu.children, (child) => { + traverse(child) + }) + } + } + + _.forEach(_menus.menus, (menu) => { + traverse(menu) + }) +} + +/** * 定义一个 Widget */ export function defineMenu(func: (menus: Menus) => void): MenuDefineResult { diff --git a/src/runtime/System.ts b/src/runtime/System.ts index 41a713e..ac764b3 100644 --- a/src/runtime/System.ts +++ b/src/runtime/System.ts @@ -2,6 +2,7 @@ import $ from 'jquery' import _ from 'lodash' import localforage from 'localforage' import JSON5 from 'json5' +import hotkeys from 'hotkeys-js' import { defineComponent, h, markRaw, nextTick, reactive, toRaw, unref, type App, createApp } from 'vue' import { ElMessage, ElMessageBox, ElNotification } from 'element-plus' import { QuestionFilled } from '@element-plus/icons-vue' @@ -20,6 +21,8 @@ export default class System { markRaw = markRaw reactive = reactive renderIcon = renderIcon + hotkeys = hotkeys + localforage = localforage JSON5 = JSON5 json5 = JSON5 diff --git a/src/utils/webutils.ts b/src/utils/webutils.ts index a959642..35353db 100644 --- a/src/utils/webutils.ts +++ b/src/utils/webutils.ts @@ -1,5 +1,4 @@ -import _ from 'lodash' -import { type Component, h, toRaw } from 'vue' +import { h } from 'vue' import * as AntdIcon from '@vicons/antd' import { ElIcon } from 'element-plus' import * as FaIcon from '@vicons/fa' diff --git a/src/views/ModelMain.vue b/src/views/ModelMain.vue index a304c81..e2f7027 100644 --- a/src/views/ModelMain.vue +++ b/src/views/ModelMain.vue @@ -64,6 +64,9 @@ + + + @@ -115,7 +118,7 @@