- dspy: 直接return VScrollPanel+Text子控件的完整JSON,不再用status/data包装
- ui: actiontype从urldata改为bricks,直接实例化返回的控件
- 解决status_of模板${items}数组替换不支持的问题
30 lines
842 B
Plaintext
30 lines
842 B
Plaintext
ppid = params_kw.ppid
|
|
data = params_kw.data
|
|
try:
|
|
if isinstance(data, str):
|
|
data = json.loads(data)
|
|
x = await buffered_charging(ppid, data)
|
|
subwidgets = []
|
|
if isinstance(x, list):
|
|
for r in x:
|
|
subwidgets.append({
|
|
"widgettype": "Text",
|
|
"options": {"text": json.dumps(r, ensure_ascii=False), "width": "100%"}
|
|
})
|
|
else:
|
|
subwidgets.append({
|
|
"widgettype": "Text",
|
|
"options": {"text": json.dumps(x, ensure_ascii=False), "width": "100%"}
|
|
})
|
|
return json.dumps({
|
|
"widgettype": "VScrollPanel",
|
|
"options": {"width": "100%", "height": "100%"},
|
|
"subwidgets": subwidgets
|
|
}, ensure_ascii=False)
|
|
except Exception as e:
|
|
exception(f'{ppid=}, {data=}, {e}{format_exc()}')
|
|
return json.dumps({
|
|
"widgettype": "Text",
|
|
"options": {"width": "100%", "color": "red", "text": f'{ppid=}, {data=}, {e}'}
|
|
}, ensure_ascii=False)
|