console
const vs = require("../systemScripts/variable");
const IDS_REG = /^(\d+,\d+\|)*\d+,\d+$/;
const spliteVariableStr = str => {
if (!IDS_REG.test(str)) {
throw Error("无效的变量id字符串");
}
let result = [];
let ranges = str.split('|');
for (let range of ranges) {
let rangeCon = range.split(',');
let start = Number(rangeCon[0]);
let end = Number(rangeCon[1]);
if (Number.isNaN(start) || Number.isNaN(end) || end < start) {
throw Error("无效的变量id字符串");
}
for (let i = start; i <= end; i++) {
result.push(i);
}
}
return result;
};
module.exports = {
main: async function(originOutput, targetOutput, changeOutputNum, originVarIdString, targetVarIdString){
if(!originOutput || !changeOutputNum){
return;
}
if(!targetOutput){
targetOutput = 0;
}
if((originOutput >= targetOutput) && (originOutput - changeOutputNum < targetOutput)){
return;
}
originVarIds = spliteVariableStr(originVarIdString);
targetVarIds = spliteVariableStr(targetVarIdString);
originVarIdString = originVarIds.join(',');
if(originVarIds.length !== targetVarIds.length){
return;
}
let idMap = {}
for(let i=0; i<originVarIds.length; i++){
idMap[originVarIds[i]] = targetVarIds[i];
}
let variables = await vs.getVariablesByIds(originVarIdString);
let promiseList = [];
for(let item of variables){
let originValue = item.value;
let targetVarId = idMap[item.id];
promiseList.push(vs.setVariable(targetVarId, originValue));
}
await Promise.all(promiseList);
}
}
originOutput:782; targetOutput:493; changeOutputNum:null; originVarIdString:3743,3743|3757,3757|3770,3770|390,390; targetVarIdString:3785,3785|3801,3801|3820,3820|3837,3837