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) {
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,
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[]>> {
return Request.request.post('/api/workbench/LccController@queryDeviceInfoList', {
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

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

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

11
src/types/LCC.d.ts

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

Loading…
Cancel
Save