Browse Source

运行脚本 / 停止脚本 / 保存 / 拉取

master
修宁 5 months ago
parent
commit
22c919b848
  1. 70
      src/core/script/LCCScript.ts
  2. 35
      src/editor/widgets/script/ScriptView.vue
  3. 11
      src/types/LCC.d.ts

70
src/core/script/LCCScript.ts

@ -92,17 +92,34 @@ export default class LCCScript implements LCC {
}) })
} }
saveAndSyncScripts(scriptList: { name: string; content: string }[]): Promise<ServerResponse<{ name: string; content: string }[]>> { /**
*
* @param scriptList
*/
saveScripts(scriptList: { name: string, content: string }[]): Promise<ServerResponse<void>>{
if (!worldModel.state.project_uuid) { if (!worldModel.state.project_uuid) {
return Promise.reject(new Error('Project UUID or Environment ID is not set.')) return Promise.reject(new Error('Project UUID is not set.'))
} }
return Request.request.post('/api/workbench/LccController@saveAndSyncScripts', { return Request.request.post('/api/workbench/LccController@saveScripts', {
projectUUID: worldModel.state.project_uuid, projectUUID: worldModel.state.project_uuid,
scriptList: scriptList scriptList: scriptList
}) })
} }
/**
*
*/
syncScripts(): Promise<ServerResponse<{ name: string, content: string }[]>>{
if (!worldModel.state.project_uuid) {
return Promise.reject(new Error('Project UUID is not set.'))
}
return Request.request.post('/api/workbench/LccController@syncScripts', {
projectUUID: worldModel.state.project_uuid,
})
}
queryDeviceInfoList(): Promise<ServerResponse<AgvStatusVo[]>> { queryDeviceInfoList(): Promise<ServerResponse<AgvStatusVo[]>> {
return Request.request.post('/api/workbench/LccController@queryDeviceInfoList', { return Request.request.post('/api/workbench/LccController@queryDeviceInfoList', {
projectUUID: worldModel.state.project_uuid, projectUUID: worldModel.state.project_uuid,
@ -110,53 +127,6 @@ export default class LCCScript implements LCC {
}) })
} }
// // 从后台读取所有车
// async loadExecutor(): Promise<ExecutorVo> {
// const res = await Request.request.post('/api/workbench/LccController@loadExecutor', {
// projectUuid: worldModel.state.project_uuid,
// envId: worldModel.state.runState.currentEnvId
// })
//
// for (const row of res.data) {
// const executor_id = row.executor_id
// const payload = JSON.parse(row.virtual_executor_payload)
// // 车所在的标记位置,及方向 11_4:RIGHT
// const [wayPointId, direction] = _.split(row.virtual_location_at, ':')
//
// if (window['Model']) {
// const point = Model.find(wayPointId)
// if (!point) {
// console.error(`Waypoint with ID ${wayPointId} not found for executor ${executor_id}.`)
// continue
// }
//
// const item = _.cloneDeep(payload)
// item.id = executor_id
// item.tf[0] = _.cloneDeep(point.tf[0])
// switch (_.toLower(direction)) {
// // right=0/left=180/up=90/down=-90
// case 'right':
// item.tf[1][1] = 0 // 右侧
// break
// case 'left':
// item.tf[1][1] = 180 // 左侧
// break
// case 'down':
// item.tf[1][1] = -90 // 下方
// break
// case 'up':
// item.tf[1][1] = 90 // 上方
// break
// }
// if (row.virtual_floor_code === worldModel.state.catalogCode) {
// Model.createExecutor(item)
// }
// }
// }
//
// return res.data
// }
/** /**
* *
* @param from Worker * @param from Worker

35
src/editor/widgets/script/ScriptView.vue

@ -5,13 +5,17 @@
脚本编辑 脚本编辑
</h3> </h3>
<el-row> <el-row>
<el-button :icon="renderIcon('Sync')" link <el-divider direction="vertical" />
@click="saveAndSyncScripts">保存并同步 <el-button :icon="renderIcon('Save')" link
@click="saveScripts">保存
</el-button>
<el-button :icon="renderIcon('antd PullRequestOutlined')" link
@click="syncScripts">拉取
</el-button> </el-button>
<el-divider direction="vertical" />
<el-button :icon="renderIcon('CirclePlus')" link <el-button :icon="renderIcon('CirclePlus')" link
@click="addScript">添加 @click="addScript">添加
</el-button> </el-button>
<el-divider direction="vertical" />
<el-button :icon="renderIcon('Delete')" link <el-button :icon="renderIcon('Delete')" link
:disabled="scriptList.length === 0 || !scriptList[scriptIndex]" :disabled="scriptList.length === 0 || !scriptList[scriptIndex]"
@click="removeCurrentScript">删除 @click="removeCurrentScript">删除
@ -141,12 +145,22 @@ export default {
this.loadFromLocal() this.loadFromLocal()
}, },
methods: { methods: {
async saveAndSyncScripts() { async saveScripts() {
system.showLoading()
try {
await LCC.saveScripts(this.scriptList)
system.msg('脚本已保存')
} finally {
system.clearLoading()
}
},
async syncScripts() {
// //
const originName = this.scriptList[this.scriptIndex]?.name const originName = this.scriptList[this.scriptIndex]?.name
system.showLoading() system.showLoading()
try { try {
const serverResponse = await LCC.saveAndSyncScripts(this.scriptList) const serverResponse = await LCC.syncScripts()
if (serverResponse.success) { if (serverResponse.success) {
this.scriptList = serverResponse.data || [] this.scriptList = serverResponse.data || []
@ -162,7 +176,7 @@ export default {
this.scriptIndex = 0 this.scriptIndex = 0
} }
system.msg('脚本已保存并同步到服务器') system.msg('脚本已同步')
} finally { } finally {
system.clearLoading() system.clearLoading()
@ -180,15 +194,16 @@ export default {
}) })
// this.viewport.modelManager.runScript(script) // this.viewport.modelManager.runScript(script)
}, },
localRun(script) {
this.viewport.modelManager.executestring(script.content)
},
/** /**
* 停止脚本 * 停止脚本
* @type {(script: CustomScript) => void} * @type {(script: CustomScript) => void}
*/ */
stopScript(script) { stopScript(script) {
this.viewport.modelManager.stopScript(script) scriptRunner.stopScript(script)
},
localRun(script) {
this.viewport.modelManager.executestring(script.content)
}, },
setCodeDropper() { setCodeDropper() {
CodeDropper.start(this.viewport, (item) => { CodeDropper.start(this.viewport, (item) => {

11
src/types/LCC.d.ts

@ -39,16 +39,15 @@ declare interface LCC {
deleteInv(lpn: string): Promise<ServerResponse<void>> deleteInv(lpn: string): Promise<ServerResponse<void>>
/** /**
* Model *
* @param scriptList
*/ */
saveScripts(scriptList: { name: string, content: string }[]): Promise<ServerResponse<void>>
// loadExecutor(): Promise<ExecutorVo>
/** /**
* *
* @param scriptList
*/ */
saveAndSyncScripts(scriptList: { name: string, content: string }[]): Promise<ServerResponse<{ name: string, content: string }[]>> syncScripts(): Promise<ServerResponse<{ name: string, content: string }[]>>
/** /**
* *

Loading…
Cancel
Save