fix: inputdata2dic use getAll for multi-value fields, UserInputView iterate arrays

This commit is contained in:
yumoqing 2026-07-16 12:21:20 +08:00
parent f732d631e3
commit 829d099d31
2 changed files with 12 additions and 8 deletions

View File

@ -16,23 +16,26 @@ bricks.UserInputView = class extends bricks.VBox {
this.v_ws = []; this.v_ws = [];
this.a_ws = []; this.a_ws = [];
this.input_fields.forEach(f =>{ this.input_fields.forEach(f =>{
if (data[f.name]){ var vals = data[f.name];
if (!vals) return;
if (!Array.isArray(vals)) vals = [vals];
vals.forEach(val => {
if (f.name.startsWith('video')){ if (f.name.startsWith('video')){
var url = URL.createObjectURL(data[f.name]); var url = URL.createObjectURL(val);
this.v_ws.push(new bricks.VideoPlayer({ this.v_ws.push(new bricks.VideoPlayer({
url:url, url:url,
autoplay:false, autoplay:false,
width: '100%' width: '100%'
})); }));
} else if (f.name.startsWith('audio')){ } else if (f.name.startsWith('audio')){
var url = URL.createObjectURL(data[f.name]); var url = URL.createObjectURL(val);
this.a_ws.push(new bricks.AudioPlayer({ this.a_ws.push(new bricks.AudioPlayer({
url:url, url:url,
autoplay:false, autoplay:false,
width: '100%' width: '100%'
})); }));
} else if (f.name.startsWith('image')){ } else if (f.name.startsWith('image')){
var url = URL.createObjectURL(data[f.name]); var url = URL.createObjectURL(val);
mdtext += ` mdtext += `
* ${f.label || f.name} * ${f.label || f.name}
![${f.label || f.name}](${url}) ![${f.label || f.name}](${url})
@ -41,11 +44,11 @@ bricks.UserInputView = class extends bricks.VBox {
mdtext += ` mdtext += `
* ${f.label || f.name} * ${f.label || f.name}
${data[f.name]} ${val}
`; `;
} }
} });
}); });
this.clear_widgets(); this.clear_widgets();
var w = new bricks.MdWidget({ var w = new bricks.MdWidget({

View File

@ -222,8 +222,9 @@ var inputdata2dic = function(data){
try { try {
var d = {} var d = {}
for (let k of data.keys()){ for (let k of data.keys()){
var x = data.get(k); var vals = data.getAll(k);
if (k == 'prompt'){ var x = vals.length > 1 ? vals : vals[0];
if (k == 'prompt' && typeof x === 'string'){
x = bricks.escapeSpecialChars(x); x = bricks.escapeSpecialChars(x);
} }
d[k] = x; d[k] = x;