Skip to content

Commit 866344b

Browse files
committed
feat: dashboard preview
1 parent 7ba78de commit 866344b

23 files changed

+1530
-5
lines changed

backend/alembic/env.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,8 @@
2626

2727
# from apps.system.models.user import SQLModel # noqa
2828
# from apps.settings.models.setting_models import SQLModel
29-
from apps.chat.models.chat_model import SQLModel
29+
#from apps.chat.models.chat_model import SQLModel
30+
from apps.dashboard.models.dashboard import SQLModel
3031
from common.core.config import settings # noqa
3132

3233
target_metadata = SQLModel.metadata
Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
"""core_dashboard
2+
3+
Revision ID: 804b08ac329d
4+
Revises: 1f077c30e476
5+
Create Date: 2025-06-03 14:40:25.419409
6+
7+
"""
8+
from alembic import op
9+
import sqlalchemy as sa
10+
import sqlmodel.sql.sqltypes
11+
from sqlalchemy.dialects import postgresql
12+
13+
# revision identifiers, used by Alembic.
14+
revision = '804b08ac329d'
15+
down_revision = '1f077c30e476'
16+
branch_labels = None
17+
depends_on = None
18+
19+
20+
def upgrade():
21+
# ### commands auto generated by Alembic - please adjust! ###
22+
op.create_table('core_dashboard',
23+
sa.Column('id', sa.String(length=50), nullable=False),
24+
sa.Column('name', sa.String(length=255), nullable=True),
25+
sa.Column('pid', sa.String(length=50), nullable=True),
26+
sa.Column('workspace_id', sa.String(length=50), nullable=True),
27+
sa.Column('org_id', sa.String(length=50), nullable=True),
28+
sa.Column('level', sa.Integer(), nullable=True),
29+
sa.Column('node_type', sa.String(length=255), nullable=True),
30+
sa.Column('type', sa.String(length=50), nullable=True),
31+
sa.Column('canvas_style_data', sa.Text(), nullable=True),
32+
sa.Column('component_data', sa.Text(), nullable=True),
33+
sa.Column('mobile_layout', sa.SmallInteger(), nullable=True),
34+
sa.Column('status', sa.Integer(), nullable=True),
35+
sa.Column('self_watermark_status', sa.Integer(), nullable=True),
36+
sa.Column('sort', sa.Integer(), nullable=True),
37+
sa.Column('create_time', sa.BigInteger(), nullable=True),
38+
sa.Column('create_by', sa.String(length=255), nullable=True),
39+
sa.Column('update_time', sa.BigInteger(), nullable=True),
40+
sa.Column('update_by', sa.String(length=255), nullable=True),
41+
sa.Column('remark', sa.String(length=255), nullable=True),
42+
sa.Column('source', sa.String(length=255), nullable=True),
43+
sa.Column('delete_flag', sa.SmallInteger(), nullable=True),
44+
sa.Column('delete_time', sa.BigInteger(), nullable=True),
45+
sa.Column('delete_by', sa.String(length=255), nullable=True),
46+
sa.Column('version', sa.Integer(), nullable=True),
47+
sa.Column('content_id', sa.String(length=50), nullable=True),
48+
sa.Column('check_version', sa.String(length=50), nullable=True),
49+
sa.PrimaryKeyConstraint('id')
50+
)
51+
# ### end Alembic commands ###
52+
53+
54+
def downgrade():
55+
op.drop_table('core_dashboard')
56+
# ### end Alembic commands ###

backend/apps/dashboard/__init__.py

Whitespace-only changes.

backend/apps/dashboard/api/__init__.py

Whitespace-only changes.
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
import hashlib
2+
import os
3+
import uuid
4+
from typing import List
5+
from fastapi import APIRouter, File, UploadFile, HTTPException
6+
7+
from apps.dashboard.crud.dashboard_service import get_dashboard_list, preview_with_id
8+
from common.core.deps import SessionDep
9+
10+
router = APIRouter(tags=["dashboard"], prefix="/dashboard")
11+
12+
@router.get("/list")
13+
async def datasource_list(session: SessionDep):
14+
return get_dashboard_list(session=session)
15+
16+
@router.get("/preview_dashboard/{id}")
17+
async def preview_dashboard(session: SessionDep,id:str):
18+
return preview_with_id(session=session,dashboard_id=id)

backend/apps/dashboard/crud/__init__.py

Whitespace-only changes.
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
from select import select
2+
3+
from apps.dashboard.models.dashboard_model import CoreDashboard
4+
from common.core.deps import SessionDep
5+
6+
7+
def get_dashboard_list(session: SessionDep):
8+
statement = select(CoreDashboard).order_by(CoreDashboard.create_time.desc())
9+
dashboard_list = session.exec(statement).fetchall()
10+
return dashboard_list
11+
12+
def preview_with_id(session: SessionDep, dashboard_id: str):
13+
return session.query(CoreDashboard).filter(CoreDashboard.id == id).first()

backend/apps/dashboard/models/__init__.py

Whitespace-only changes.
Lines changed: 123 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,123 @@
1+
from sqlmodel import SQLModel, Field
2+
from sqlalchemy import String, Column, Text, SmallInteger, BigInteger, Integer
3+
4+
5+
class CoreDashboard(SQLModel, table=True):
6+
__tablename__ = "core_dashboard"
7+
8+
id: str = Field(
9+
sa_column=Column(String(50), nullable=False, primary_key=True)
10+
)
11+
name: str = Field(
12+
default=None,
13+
max_length=255,
14+
sa_column=Column(String(255), nullable=True)
15+
)
16+
pid: str = Field(
17+
default=None,
18+
max_length=50,
19+
sa_column=Column(String(50), nullable=True)
20+
)
21+
workspace_id: str = Field(
22+
default=None,
23+
max_length=50,
24+
sa_column=Column(String(50), nullable=True)
25+
)
26+
org_id: str = Field(
27+
default=None,
28+
max_length=50,
29+
sa_column=Column(String(50), nullable=True)
30+
)
31+
level: int = Field(
32+
default=None,
33+
sa_column=Column(Integer, nullable=True)
34+
)
35+
node_type: str = Field(
36+
default=None,
37+
max_length=255,
38+
sa_column=Column(String(255), nullable=True)
39+
)
40+
type: str = Field(
41+
default=None,
42+
max_length=50,
43+
sa_column=Column(String(50), nullable=True)
44+
)
45+
canvas_style_data: str = Field(
46+
default=None,
47+
sa_column=Column(Text, nullable=True)
48+
)
49+
component_data: str = Field(
50+
default=None,
51+
sa_column=Column(Text, nullable=True)
52+
)
53+
mobile_layout: int = Field(
54+
default=0,
55+
sa_column=Column(SmallInteger, nullable=True)
56+
)
57+
status: int = Field(
58+
default=1,
59+
sa_column=Column(Integer, nullable=True)
60+
)
61+
self_watermark_status: int = Field(
62+
default=0,
63+
sa_column=Column(Integer, nullable=True)
64+
)
65+
sort: int = Field(
66+
default=0,
67+
sa_column=Column(Integer, nullable=True)
68+
)
69+
create_time: int = Field(
70+
default=None,
71+
sa_column=Column(BigInteger, nullable=True)
72+
)
73+
create_by: str = Field(
74+
default=None,
75+
max_length=255,
76+
sa_column=Column(String(255), nullable=True)
77+
)
78+
update_time: int = Field(
79+
default=None,
80+
sa_column=Column(BigInteger, nullable=True)
81+
)
82+
update_by: str = Field(
83+
default=None,
84+
max_length=255,
85+
sa_column=Column(String(255), nullable=True)
86+
)
87+
remark: str = Field(
88+
default=None,
89+
max_length=255,
90+
sa_column=Column(String(255), nullable=True)
91+
)
92+
source: str = Field(
93+
default=None,
94+
max_length=255,
95+
sa_column=Column(String(255), nullable=True)
96+
)
97+
delete_flag: int = Field(
98+
default=0,
99+
sa_column=Column(SmallInteger, nullable=True)
100+
)
101+
delete_time: int = Field(
102+
default=None,
103+
sa_column=Column(BigInteger, nullable=True)
104+
)
105+
delete_by: str = Field(
106+
default=None,
107+
max_length=255,
108+
sa_column=Column(String(255), nullable=True)
109+
)
110+
version: int = Field(
111+
default=3,
112+
sa_column=Column(Integer, nullable=True)
113+
)
114+
content_id: str = Field(
115+
default='0',
116+
max_length=50,
117+
sa_column=Column(String(50), nullable=True)
118+
)
119+
check_version: str = Field(
120+
default='1',
121+
max_length=50,
122+
sa_column=Column(String(50), nullable=True)
123+
)

frontend/src/api/dashboard.ts

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
import { request } from '@/utils/request'
2+
3+
export const dashboardApi = {
4+
list: () => request.get('/dashboard/list'),
5+
getDashboardInfo: (params:any) => request.post(`/dashboard/get_dashboard/${params.id}`,params),
6+
sqNameCheck: (data: any) => request.post('/dashboard/name_check',data),
7+
moveResource: (data: any) => request.post('/dashboard/move',data),
8+
}

0 commit comments

Comments
 (0)