Skip to content

Commit ae63a92

Browse files
perf: Embedded page interactive
1 parent ce05e24 commit ae63a92

File tree

3 files changed

+31
-3
lines changed

3 files changed

+31
-3
lines changed

backend/apps/system/crud/assistant.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -211,7 +211,7 @@ def get_ds_engine(ds: AssistantOutDsSchema) -> Engine:
211211
password=ds.password,
212212
database=ds.dataBase,
213213
driver='',
214-
extraJdbc=ds.extraParams,
214+
extraJdbc=ds.extraParams or '',
215215
dbSchema=ds.db_schema or ''
216216
)
217217
conf.extraJdbc = ''

frontend/public/assistant.js

Lines changed: 27 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,7 @@
6969
const getChatContainerHtml = (data) => {
7070
return `
7171
<div id="sqlbot-assistant-chat-container">
72-
<iframe id="sqlbot-assistant-chat-iframe-${data.id}" allow="microphone;clipboard-read 'src'; clipboard-write 'src'" src="${data.domain_url}/#/assistant?id=${data.id}&online=${!!data.online}&name=${encodeURIComponent(data.name)}"></iframe>
72+
<iframe id="sqlbot-assistant-chat-iframe-${data.id}" allow="microphone;clipboard-read 'src'; clipboard-write 'src'" src="${data.domain_url}/#/assistant?id=${data.id}&online=${!!data.online}&name=${encodeURIComponent(data.name)}&userFlag=${data.userFlag || ''}"></iframe>
7373
<div class="sqlbot-assistant-operate">
7474
<div class="sqlbot-assistant-closeviewport sqlbot-assistant-viewportnone">
7575
<svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 20 20" fill="none">
@@ -498,6 +498,7 @@
498498
function loadScript(src, id) {
499499
const domain_url = getDomain(src)
500500
const online = getParam(src, 'online')
501+
const userFlag = getParam(src, 'userFlag')
501502
let url = `${domain_url}/api/v1/system/assistant/info/${id}`
502503
if (domain_url.includes('5173')) {
503504
url = url.replace('5173', '8000')
@@ -534,6 +535,7 @@
534535
}
535536

536537
tempData['online'] = online && online.toString().toLowerCase() == 'true'
538+
tempData['userFlag'] = userFlag
537539
initsqlbot_assistant(tempData)
538540
if (data.type == 1) {
539541
registerMessageEvent(id, tempData)
@@ -708,7 +710,7 @@
708710
contentWindow.postMessage(params, url)
709711
}
710712
}
711-
window.sqlbot_assistant_handler[id]['refresh'] = (online) => {
713+
window.sqlbot_assistant_handler[id]['refresh'] = (online, userFlag) => {
712714
if (online != null && typeof online != 'boolean') {
713715
throw new Error('The parameter can only be of type boolean')
714716
}
@@ -719,12 +721,35 @@
719721
if (online != null) {
720722
new_url = updateParam(new_url, 'online', online)
721723
}
724+
if (userFlag != null) {
725+
new_url = updateParam(new_url, 'userFlag', userFlag)
726+
}
722727
iframe.src = 'about:blank'
723728
setTimeout(() => {
724729
iframe.src = new_url
725730
}, 500)
726731
}
727732
}
733+
window.sqlbot_assistant_handler[id]['destroy'] = () => {
734+
const sqlbot_root_id = 'sqlbot-assistant-root-' + id
735+
const container_div = document.getElementById(sqlbot_root_id)
736+
if (container_div) {
737+
const root_div = container_div.parentNode
738+
if (root_div?.parentNode) {
739+
root_div.parentNode.removeChild(root_div)
740+
}
741+
}
742+
743+
const scriptDom = document.getElementById(`sqlbot-assistant-float-script-${id}`)
744+
if (scriptDom) {
745+
scriptDom.parentNode.removeChild(scriptDom)
746+
}
747+
const propName = script_id_prefix + id + '-state'
748+
if (window[propName]) {
749+
delete window[propName]
750+
}
751+
delete window.sqlbot_assistant_handler[id]
752+
}
728753
}
729754
// window.addEventListener('load', init)
730755
const executeWhenReady = (fn) => {

frontend/src/utils/utils.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -155,6 +155,9 @@ export function colorStringToHex(colorStr: any) {
155155

156156
export const setCurrentColor = (color: any, element: HTMLElement = document.documentElement) => {
157157
const currentColor = colorStringToHex(color) as any
158+
if (!currentColor) {
159+
return
160+
}
158161
element.style.setProperty('--ed-color-primary', currentColor)
159162
element.style.setProperty('--van-blue', currentColor)
160163
element.style.setProperty(

0 commit comments

Comments
 (0)