pipeline-sdlc/wwwroot/api/workspace_popup.dspy

106 lines
4.3 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# workspace_popup.dspy - 返回 PopupWindow内含 ResourceBrowser含打开/删除 tools
import json as _json
uid = await get_user()
if not uid:
uid = 'user-01'
dbname = get_module_dbname('pipeline-sdlc')
import os
async with DBPools().sqlorContext(dbname) as sor:
ws_dir, _ = await get_workspace_dir(sor, uid)
pname = os.path.basename(ws_dir) if ws_dir else ''
if not ws_dir:
resp = {
"widgettype": "PopupWindow",
"options": {"title": "提示", "cwidth": 30, "cheight": 8, "auto_open": True},
"subwidgets": [{
"widgettype": "Text",
"options": {"text": "请先选择项目", "cfontsize": 1, "color": "#64748b", "padding": "20px"}
}]
}
else:
open_url = entire_url("/pipeline-sdlc/api/workspace_open.dspy")
delete_url = entire_url("/pipeline-sdlc/api/workspace_delete.dspy")
# 打开:预览选中文件
open_script = (
"if(!bricks.app._ws_sel)return;"
"var r=await fetch(" + _json.dumps(open_url) + "+'?id='+encodeURIComponent(bricks.app._ws_sel.id));"
"var d=await r.json();"
"bricks.widgetBuild(d,bricks.app);"
)
# 删除:删除选中文件并刷新
delete_script = (
"if(!bricks.app._ws_sel)return;"
"var body=new URLSearchParams();"
"body.append('id',bricks.app._ws_sel.id);"
"var resp=await fetch(" + _json.dumps(delete_url) + ",{method:'POST',body:body});"
"var rj=await resp.json();"
"if(rj.status=='ok'){"
"bricks.app._ws_sel=null;bricks.app._ws_sel_el=null;"
"var rb=bricks.getWidgetById('ws_rb',bricks.app);"
"if(rb){var cid=rb.current_id;rb.current_id=undefined;await rb.render_browser(cid);}"
"}else{var m=new bricks.Message({title:'删除失败',message:rj.message||'未知错误'});m.open();}"
)
resp = {
"widgettype": "PopupWindow",
"options": {
"title": pname + " - 工作空间",
"width": "85%",
"height": "80%",
"auto_open": True
},
"subwidgets": [{
"widgettype": "ResourceBrowser",
"id": "ws_rb",
"options": {
"tree_options": {
"widgettype": "Tree",
"options": {
"dataurl": entire_url("/pipeline-sdlc/api/workspace_tree.dspy"),
"textField": "label",
"idField": "id",
"cfontsize": 1.0
}
},
"browser_options": {
"widgettype": "urlwidget",
"options": {
"url": entire_url("/pipeline-sdlc/api/workspace_files.dspy")
},
"tools": [
{
"widgettype": "Button",
"options": {"label": "打开", "css": "small"},
"binds": [{"wid": "self", "event": "click", "actiontype": "script", "target": "self", "script": open_script}]
},
{
"widgettype": "Button",
"options": {"label": "删除", "css": "small"},
"binds": [{
"wid": "self", "event": "click", "actiontype": "script", "target": "self",
"conform": {
"title": "删除确认",
"message": "确认删除选中的文件?",
"conform": {"label": "删除"},
"discard": {"label": "取消"}
},
"script": delete_script
}]
}
]
},
"tree_width": "280px"
}
}]
}
return _json.dumps(resp, ensure_ascii=False)