Skip to content

Commit 04721c9

Browse files
committed
refactor: dashboard preview
1 parent f3d27b1 commit 04721c9

25 files changed

+450
-93
lines changed

backend/apps/api.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
from apps.settings.api import terminology
55
from apps.datasource.api import datasource
66
from apps.chat.api import chat
7+
from apps.dashboard.api import dashboard_api
78

89

910
api_router = APIRouter()
@@ -13,5 +14,6 @@
1314
api_router.include_router(terminology.router)
1415
api_router.include_router(datasource.router)
1516
api_router.include_router(chat.router)
17+
api_router.include_router(dashboard_api.router)
1618

1719

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,9 @@
1-
import hashlib
2-
import os
3-
import uuid
4-
from typing import List
1+
52
from fastapi import APIRouter, File, UploadFile, HTTPException
63

7-
from apps.dashboard.crud.dashboard_service import get_dashboard_list, preview_with_id
8-
from common.core.deps import SessionDep
4+
from apps.dashboard.crud.dashboard_service import get_dashboard_list, preview_with_id,create_dashboard
5+
from apps.dashboard.models.dashboard_model import CreateDashboard
6+
from common.core.deps import SessionDep, CurrentUser
97

108
router = APIRouter(tags=["dashboard"], prefix="/dashboard")
119

@@ -15,4 +13,8 @@ async def datasource_list(session: SessionDep):
1513

1614
@router.get("/preview_dashboard/{id}")
1715
async def preview_dashboard(session: SessionDep,id:str):
18-
return preview_with_id(session=session,dashboard_id=id)
16+
return preview_with_id(session=session,dashboard_id=id)
17+
18+
@router.post("/add", response_model=CreateDashboard)
19+
async def add(session: SessionDep, user: CurrentUser, dashboard: CreateDashboard):
20+
return create_dashboard(session, user, dashboard)
Lines changed: 16 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,23 @@
11
from select import select
2-
3-
from apps.dashboard.models.dashboard_model import CoreDashboard
4-
from common.core.deps import SessionDep
5-
6-
2+
from apps.dashboard.models.dashboard_model import CoreDashboard, CreateDashboard
3+
from common.core.deps import SessionDep, CurrentUser
4+
import uuid
75
def get_dashboard_list(session: SessionDep):
86
statement = select(CoreDashboard).order_by(CoreDashboard.create_time.desc())
97
dashboard_list = session.exec(statement).fetchall()
108
return dashboard_list
119

1210
def preview_with_id(session: SessionDep, dashboard_id: str):
13-
return session.query(CoreDashboard).filter(CoreDashboard.id == id).first()
11+
return session.query(CoreDashboard).filter(CoreDashboard.id == id).first()
12+
13+
14+
def create_dashboard(session: SessionDep, user: CurrentUser, dashboard: CreateDashboard):
15+
new_id = uuid.uuid4().hex
16+
record = CoreDashboard(**dashboard.model_dump())
17+
record.id = new_id
18+
record.create_by = user.id
19+
session.add(record)
20+
session.flush()
21+
session.refresh(record)
22+
session.commit()
23+
return record

backend/apps/dashboard/models/dashboard_model.py

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
from sqlmodel import SQLModel, Field
2-
from sqlalchemy import String, Column, Text, SmallInteger, BigInteger, Integer
2+
from sqlalchemy import String, Column, Text, SmallInteger, BigInteger, Integer,DateTime
3+
from pydantic import BaseModel
4+
from datetime import datetime
35

46

57
class CoreDashboard(SQLModel, table=True):
@@ -121,3 +123,18 @@ class CoreDashboard(SQLModel, table=True):
121123
max_length=50,
122124
sa_column=Column(String(50), nullable=True)
123125
)
126+
127+
# dashboard create obj
128+
class CreateDashboard(BaseModel):
129+
id: str = ''
130+
name: str = ''
131+
pid: str = ''
132+
workspace_id: str = ''
133+
org_id: str = ''
134+
description: str = ''
135+
type: str = ''
136+
node_type: str = ''
137+
canvas_style_data: str =''
138+
component_data: str = ''
139+
configuration: str = ''
140+
create_by: int = 0

frontend/components.d.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ declare module '@vue/runtime-core' {
2121
ElDropdown: typeof import('element-plus-secondary/es')['ElDropdown']
2222
ElDropdownItem: typeof import('element-plus-secondary/es')['ElDropdownItem']
2323
ElDropdownMenu: typeof import('element-plus-secondary/es')['ElDropdownMenu']
24+
ElEmpty: typeof import('element-plus-secondary/es')['ElEmpty']
2425
ElFooter: typeof import('element-plus-secondary/es')['ElFooter']
2526
ElForm: typeof import('element-plus-secondary/es')['ElForm']
2627
ElFormItem: typeof import('element-plus-secondary/es')['ElFormItem']
@@ -32,6 +33,7 @@ declare module '@vue/runtime-core' {
3233
ElMenuItem: typeof import('element-plus-secondary/es')['ElMenuItem']
3334
ElOption: typeof import('element-plus-secondary/es')['ElOption']
3435
ElPagination: typeof import('element-plus-secondary/es')['ElPagination']
36+
ElPopover: typeof import('element-plus-secondary/es')['ElPopover']
3537
ElRadio: typeof import('element-plus-secondary/es')['ElRadio']
3638
ElRadioGroup: typeof import('element-plus-secondary/es')['ElRadioGroup']
3739
ElRow: typeof import('element-plus-secondary/es')['ElRow']
@@ -46,6 +48,8 @@ declare module '@vue/runtime-core' {
4648
ElTabPane: typeof import('element-plus-secondary/es')['ElTabPane']
4749
ElTabs: typeof import('element-plus-secondary/es')['ElTabs']
4850
ElTooltip: typeof import('element-plus-secondary/es')['ElTooltip']
51+
ElTree: typeof import('element-plus-secondary/es')['ElTree']
52+
ElTreeSelect: typeof import('element-plus-secondary/es')['ElTreeSelect']
4953
ElUpload: typeof import('element-plus-secondary/es')['ElUpload']
5054
Icon: typeof import('./src/components/icon-custom/src/Icon.vue')['default']
5155
Layout: typeof import('./src/components/layout/index.vue')['default']

frontend/src/api/dashboard.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,4 +5,5 @@ export const dashboardApi = {
55
getDashboardInfo: (params:any) => request.post(`/dashboard/get_dashboard/${params.id}`,params),
66
sqNameCheck: (data: any) => request.post('/dashboard/name_check',data),
77
moveResource: (data: any) => request.post('/dashboard/move',data),
8+
addResource: (data: any) => request.post('/dashboard/add',data)
89
}

frontend/src/assets/img/error.png

3.38 KB
Loading

frontend/src/assets/img/none.png

1.64 KB
Loading
2.99 KB
Loading
1.67 KB
Loading

0 commit comments

Comments
 (0)