Skip to content

Commit 82de276

Browse files
committed
feat(dashboard): The dashboard supports displaying real-time data
1 parent 9dccaf1 commit 82de276

File tree

4 files changed

+37
-13
lines changed

4 files changed

+37
-13
lines changed

backend/apps/chat/curd/chat.py

Lines changed: 17 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import datetime
2-
from typing import List, Optional, Union
2+
from typing import List, Optional, Union, Dict, Any
33

44
import orjson
55
import sqlparse
@@ -18,7 +18,7 @@
1818
from apps.system.schemas.system_schema import AssistantOutDsSchema
1919
from common.core.deps import CurrentAssistant, SessionDep, CurrentUser, Trans
2020
from common.utils.data_format import DataFormat
21-
from common.utils.utils import extract_nested_json
21+
from common.utils.utils import extract_nested_json, SQLBotLogUtil
2222

2323

2424
def get_chat_record_by_id(session: SessionDep, record_id: int):
@@ -243,14 +243,24 @@ def get_chart_data_with_user_live(session: SessionDep, current_user: CurrentUser
243243
return get_chart_data_ds(session,row.datasource, row.sql)
244244

245245
def get_chart_data_ds(session: SessionDep,ds_id,sql):
246+
json_result: Dict[str, Any] = {'status': 'success','data':[],'message':''}
246247
try:
247248
datasource = get_ds(session,ds_id)
248-
result = exec_sql(ds=datasource,sql=sql, origin_column=False)
249-
_data = DataFormat.convert_large_numbers_in_object_array(result.get('data'))
250-
return _data
251-
except Exception:
249+
if datasource is None:
250+
json_result['status'] = 'failed'
251+
json_result['message'] = 'Datasource not found'
252+
return json_result
253+
else:
254+
result = exec_sql(ds=datasource,sql=sql, origin_column=False)
255+
_data = DataFormat.convert_large_numbers_in_object_array(result.get('data'))
256+
json_result['data'] = _data
257+
return json_result
258+
except Exception as e:
259+
SQLBotLogUtil.error(f"Function failed: {e}")
260+
json_result['status'] = 'failed'
261+
json_result['message'] = f"{e}"
252262
pass
253-
return []
263+
return json_result
254264

255265
def get_chat_chart_data(session: SessionDep, chat_record_id: int):
256266
stmt = select(ChatRecord.data).where(and_(ChatRecord.id == chat_record_id))

backend/apps/dashboard/crud/dashboard_service.py

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -49,11 +49,12 @@ def load_resource(session: SessionDep, dashboard: QueryDashboard):
4949

5050
result_dict = dict(result)
5151
canvas_view_obj = orjson.loads(result_dict['canvas_view_info'])
52-
for item in canvas_view_obj.values(): # 直接遍历值
53-
# 检查必要字段是否存在
52+
for item in canvas_view_obj.values():
5453
if all(key in item for key in ['datasource', 'sql']) and item['datasource'] is not None:
55-
item['data']['data'] = get_chart_data_ds(session, item['datasource'], item['sql'])
56-
54+
data_result = get_chart_data_ds(session, item['datasource'], item['sql'])
55+
item['data']['data'] = data_result['data']
56+
item['status'] = data_result['status']
57+
item['message'] = data_result['message']
5758
result_dict['canvas_view_info'] = orjson.dumps(canvas_view_obj)
5859
return result_dict
5960

frontend/src/views/dashboard/common/EmptyBackgroundSvg.vue

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,6 @@ defineProps({
3232
}
3333
:deep(.ed-empty__description) {
3434
margin-top: 8px;
35-
3635
color: var(--N600, #646a73);
3736
text-align: center;
3837
font-size: 14px;

frontend/src/views/dashboard/components/sq-view/index.vue

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -156,8 +156,11 @@ defineExpose({
156156
</div>
157157
</div>
158158
<div class="chart-show-area">
159+
<div v-if="viewInfo.status === 'failed'" class="error-info">
160+
{{ viewInfo.message }}
161+
</div>
159162
<ChartComponent
160-
v-if="viewInfo.id"
163+
v-else-if="viewInfo.id"
161164
:id="outerId || viewInfo.id"
162165
ref="chartRef"
163166
:type="chartType"
@@ -383,4 +386,15 @@ defineExpose({
383386
}
384387
}
385388
}
389+
390+
.error-info {
391+
width: 100%;
392+
height: 100%;
393+
display: flex;
394+
flex-direction: column;
395+
justify-content: center;
396+
align-items: center;
397+
font-size: 12px;
398+
color: var(--N600, #646a73);
399+
}
386400
</style>

0 commit comments

Comments
 (0)