misc: configurator: validate user settings before writing down

After clicking save button, validate settings before writing down
scenario.xml, otherwise broken scenario.xml will be generated.

Tracked-On: #7470
Signed-off-by: Calvin Zhang <calvinzhang.cool@gmail.com>
This commit is contained in:
Calvin Zhang 2022-05-19 15:19:58 +08:00 committed by acrnsi-robot
parent 3062aa409f
commit 12b81d83ca
1 changed files with 33 additions and 33 deletions

View File

@ -342,13 +342,13 @@ export default {
let errorFlag = false let errorFlag = false
errorFlag = this.confirmVmName() errorFlag = this.confirmVmName()
this.assignVMID() this.assignVMID()
let msg = ["Scenario xml saved\n", let msg = [ "Settings validated\n",
".xml settings validated\n", "scenario xml saved\n",
"launch scripts generated\n"]; "launch scripts generated\n"];
let errmsg = ["Scenario xml save failed\n", let errmsg = [ "Settings validate failed\n",
".xml settings validate failed\n", "scenario xml save failed\n",
"launch scripts generate failed\n"]; "launch scripts generate failed\n"];
let step = 0 let stepDone = 0
let scenarioXMLData = configurator.convertScenarioToXML( let scenarioXMLData = configurator.convertScenarioToXML(
{ {
// simple deep copy // simple deep copy
@ -365,34 +365,34 @@ export default {
// get scenario XML with defaults // get scenario XML with defaults
scenarioXMLData = scenarioWithDefault.xml scenarioXMLData = scenarioWithDefault.xml
if (!errorFlag) { if (!errorFlag) {
// begin write down and verify // begin verify and write down
configurator.writeFile(this.WorkingFolder + 'scenario.xml', scenarioXMLData) console.log("validate settings...")
.then(() => { try {
step = 1 this.errors = configurator.pythonObject.validateScenario(this.board.content, scenarioXMLData)
this.errors = configurator.pythonObject.validateScenario(this.board.content, scenarioXMLData) if (this.errors.length != 0) {
if (this.errors.length != 0) { throw "validation failed"
throw "validation failed" }
} console.log("validation ok")
}) stepDone = 1
.then(() => {
step = 2 configurator.writeFile(this.WorkingFolder + 'scenario.xml', scenarioXMLData)
let launchScripts = configurator.pythonObject.generateLaunchScript(this.board.content, scenarioXMLData) stepDone = 2
for (let filename in launchScripts) {
configurator.writeFile(this.WorkingFolder + filename, launchScripts[filename]) let launchScripts = configurator.pythonObject.generateLaunchScript(this.board.content, scenarioXMLData)
} for (let filename in launchScripts) {
}) configurator.writeFile(this.WorkingFolder + filename, launchScripts[filename])
.then(() => { }
alert(`${msg.join('')} \n All files successfully saved to your working folder ${this.WorkingFolder}`) stepDone = 3
}) alert(`${msg.join('')} \n All files successfully saved to your working folder ${this.WorkingFolder}`)
.catch((err) => { } catch(err) {
console.log(err) console.log("error" + err)
let outmsg = '' let outmsg = ''
for (var i = 0; i < step; i++) for (var i = 0; i < stepDone; i++)
outmsg += msg[i] outmsg += msg[i]
for (i = step; i < 3; i++) for (i = stepDone; i < 3; i++)
outmsg += errmsg[i] outmsg += errmsg[i]
alert(`${outmsg} \n Please check your configuration`) alert(`${outmsg} \n Please check your configuration`)
}) }
} }
} }
} }