workspace: content in options instead of subwidgets

This commit is contained in:
p 2026-08-12 14:35:53 +08:00
parent 90af3f67a1
commit b3b97632ac

View File

@ -1,4 +1,4 @@
# workspace_popup.dspy - 返回工作空间 PopupWindow widget 定义
# workspace_popup.dspy - 返回 PopupWindow内容直接放 resizebox
uid = await get_user()
if not uid:
@ -14,9 +14,7 @@ async with DBPools().sqlorContext(dbname) as sor:
pname = ''
if pid:
proj = await sor.sqlExe(
"SELECT name FROM sd_projects WHERE id=${p}$",
{"p": pid})
proj = await sor.sqlExe("SELECT name FROM sd_projects WHERE id=${p}$", {"p": pid})
if proj:
pname = getattr(proj[0], 'name', '')
@ -25,66 +23,37 @@ async with DBPools().sqlorContext(dbname) as sor:
"widgettype": "PopupWindow",
"options": {
"title": "提示",
"cwidth": 30,
"cheight": 8,
"auto_open": True
"cwidth": 30, "cheight": 8, "auto_open": True
},
"subwidgets": [{
"widgettype": "Text",
"options": {
"text": "请先选择项目",
"cfontsize": 1,
"color": "#64748b",
"padding": "20px"
}
"options": {"text": "请先选择项目", "cfontsize": 1, "color": "#64748b", "padding": "20px"}
}]
}
else:
content_widget = {
"widgettype": "Splitter",
"options": {"direction": "horizontal", "split": "30%"},
"subwidgets": [
{
"widgettype": "Tree", "id": "ws_tree",
"options": {"dataurl": "/pipeline-sdlc/api/workspace_tree.dspy", "css": "filler", "padding": "4px", "cheight": "100%"},
"binds": [{"wid": "self", "event": "selected", "actiontype": "urlwidget", "target": "ws_files", "options": {"url": "/pipeline-sdlc/api/workspace_files.dspy"}}]
},
{
"widgettype": "VScrollPanel", "id": "ws_files",
"options": {"css": "filler", "padding": "8px", "gap": "4px"}
}
]
}
resp = {
"widgettype": "PopupWindow",
"options": {
"title": pname + " - 工作空间",
"cwidth": 80,
"cheight": 36,
"auto_open": True
},
"subwidgets": [{
"widgettype": "Splitter",
"options": {
"direction": "horizontal",
"split": "30%"
},
"subwidgets": [
{
"widgettype": "Tree",
"id": "ws_tree",
"options": {
"dataurl": "/pipeline-sdlc/api/workspace_tree.dspy",
"css": "filler",
"padding": "4px",
"cheight": "100%"
},
"binds": [{
"wid": "self",
"event": "selected",
"actiontype": "urlwidget",
"target": "ws_files",
"options": {
"url": "/pipeline-sdlc/api/workspace_files.dspy"
}
}]
},
{
"widgettype": "VScrollPanel",
"id": "ws_files",
"options": {
"css": "filler",
"padding": "8px",
"gap": "4px"
}
}
]
}]
"cwidth": 80, "cheight": 36, "auto_open": True,
"content": content_widget
}
}
return json.dumps(resp, ensure_ascii=False)