19 changed files with 474 additions and 327 deletions
@ -1,12 +1,12 @@ |
|||||
import { defineWidget } from '../../../runtime/DefineWidget.ts' |
import { defineWidget } from '@/runtime/DefineWidget.ts' |
||||
import { renderIcon } from '@/utils/webutils.ts' |
import { renderIcon } from '@/utils/webutils.ts' |
||||
import ScriptView from './ScriptView.vue' |
import ScriptView from './ScriptView.vue' |
||||
|
|
||||
export default defineWidget({ |
export default defineWidget({ |
||||
name: 'script', |
name: 'script', |
||||
title: '脚本', |
title: '自定义脚本', |
||||
icon: renderIcon('antd CodeOutlined'), |
icon: renderIcon('fa Code'), |
||||
side: 'bottom', |
side: 'bottom', |
||||
order: 3, |
order: 3, |
||||
component: ScriptView |
component: ScriptView |
||||
}) |
}) |
||||
|
|||||
@ -0,0 +1,108 @@ |
|||||
|
<template> |
||||
|
<el-select placeholder="选择运行环境" style="width:180px; margin-right: 5px;" |
||||
|
:disabled="worldModelState.runState.currentEnvId && worldModelState.runState.isRunning" |
||||
|
:model-value="worldModelState.runState.currentEnvId" |
||||
|
@change="setEnvId"> |
||||
|
<el-option v-for="env in envList" :key="env.envId" :label="env.envName" :value="env.envId"></el-option> |
||||
|
<template #footer> |
||||
|
<el-button size="small" type="primary" @click="createEnv" plain>创建虚拟环境</el-button> |
||||
|
<el-button size="small" :icon="renderIcon('Refresh')" @click="reloadEnvList" /> |
||||
|
</template> |
||||
|
</el-select> |
||||
|
<el-select style="width:80px;margin-right: 5px;" placeholder="时间速率" |
||||
|
v-model="worldModelState.runState.timeRate" |
||||
|
v-if="worldModelState.runState.isVirtual"> |
||||
|
<el-option v-for="option in timeRateOptions" |
||||
|
:label="option.label" :value="option.value" /> |
||||
|
</el-select> |
||||
|
<el-button :icon="renderIcon('Connection')" type="primary" |
||||
|
v-if="!worldModelState.runState.currentEnvId || !worldModelState.runState.isRunning" |
||||
|
:disabled="!worldModelState.runState.currentEnvId" |
||||
|
:loading="worldModelState.runState.isLoading" |
||||
|
@click="connectEnv">连接服务 |
||||
|
</el-button> |
||||
|
<el-button :icon="renderIcon('antd DisconnectOutlined')" type="danger" plain |
||||
|
v-if="worldModelState.runState.currentEnvId && worldModelState.runState.isRunning" |
||||
|
:loading="worldModelState.runState.isLoading" |
||||
|
@click="disconnectEnv">断开连接 |
||||
|
</el-button> |
||||
|
</template> |
||||
|
<script> |
||||
|
import { renderIcon } from '@/utils/webutils.js' |
||||
|
import { worldModel } from '@/core/manager/WorldModel.js' |
||||
|
import EnvManager from '@/core/manager/EnvManager.js' |
||||
|
import _ from 'lodash' |
||||
|
|
||||
|
export default { |
||||
|
name: 'EnvSelectConnect', |
||||
|
data() { |
||||
|
return { |
||||
|
/** |
||||
|
* @type {Array<EnvInfo>} |
||||
|
*/ |
||||
|
envList: [], |
||||
|
timeRateOptions: [ |
||||
|
{ label: '1x', value: 1 }, |
||||
|
{ label: '2x', value: 2 }, |
||||
|
{ label: '5x', value: 5 }, |
||||
|
{ label: '10x', value: 10 } |
||||
|
] |
||||
|
} |
||||
|
}, |
||||
|
mounted() { |
||||
|
this.reloadEnvList() |
||||
|
}, |
||||
|
methods: { |
||||
|
renderIcon, |
||||
|
connectEnv() { |
||||
|
worldModel.envManager.connectEnv() |
||||
|
}, |
||||
|
disconnectEnv() { |
||||
|
worldModel.envManager.disconnectEnv() |
||||
|
}, |
||||
|
createEnv() { |
||||
|
EnvManager.createEnv(this.worldModelState.project_uuid).then(() => { |
||||
|
this.reloadEnvList() |
||||
|
}) |
||||
|
}, |
||||
|
reloadEnvList() { |
||||
|
EnvManager.getAllEnv(this.worldModelState.project_uuid) |
||||
|
.then(envList => { |
||||
|
this.envList = envList |
||||
|
}) |
||||
|
}, |
||||
|
setEnvId(newVal) { |
||||
|
const env = _.find(this.envList, env => env.envId === newVal) |
||||
|
if (!env) { |
||||
|
system.showErrorDialog(`未找到环境ID: ${newVal}`) |
||||
|
} |
||||
|
worldModel.setEnv(env) |
||||
|
} |
||||
|
}, |
||||
|
watch: { |
||||
|
'worldModelState.isOpened': { |
||||
|
handler() { |
||||
|
if (this.worldModelState.isOpened) { |
||||
|
this.reloadEnvList() |
||||
|
} |
||||
|
} |
||||
|
}, |
||||
|
'worldModelState.project_uuid': { |
||||
|
immediate: true, |
||||
|
handler() { |
||||
|
if (this.worldModelState.isOpened) { |
||||
|
this.reloadEnvList() |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
}, |
||||
|
computed: { |
||||
|
isModelOpen() { |
||||
|
return this.worldModelState.isOpened |
||||
|
}, |
||||
|
worldModelState() { |
||||
|
return worldModel.state |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
</script> |
||||
Loading…
Reference in new issue