19 lines
1.2 KiB
Plaintext
19 lines
1.2 KiB
Plaintext
"""返回知识库选择按钮列表"""
|
|
env = request._run_ns
|
|
userorgid = await env.get_userorgid()
|
|
async with get_sor_context(env, 'rag') as sor:
|
|
sql = "SELECT id, name FROM knowledge_bases WHERE org_id IS NULL OR org_id=${org_id}$ ORDER BY name"
|
|
recs = await sor.sqlExe(sql, {"org_id": userorgid})
|
|
|
|
buttons = []
|
|
for r in recs:
|
|
buttons.append({
|
|
"widgettype": "Text",
|
|
"options": {"text": str(r.name), "cfontsize": 12, "padding": "4px 12px",
|
|
"bgcolor": "#eee", "color": "#333", "borderRadius": "4px", "css": "clickable kb-btn"},
|
|
"binds": [{"wid": "self", "event": "click", "actiontype": "script", "target": "self",
|
|
"script": f"var f=document.querySelector('[name=kb_id]');if(f)f.value='{r.id}';var btns=document.querySelectorAll('.kb-btn');for(var i=0;i<btns.length;i++){{btns[i].style.background='#eee';btns[i].style.color='#333'}}this.dom_element.style.background='#3b82f6';this.dom_element.style.color='#fff';var all=document.getElementById('kb_btn_all');if(all){{all.style.background='#eee';all.style.color='#333'}}"}]
|
|
})
|
|
|
|
{"widgettype": "HBox", "options": {"spacing": "8px", "width": "100%", "wrap": true}, "subwidgets": buttons}
|