Skip to content

Commit 5c663b4

Browse files
committed
refactor: dashboard preview
1 parent 787d392 commit 5c663b4

File tree

5 files changed

+73
-34
lines changed

5 files changed

+73
-34
lines changed

backend/apps/dashboard/api/dashboard_api.py

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
11

22
from fastapi import APIRouter, File, UploadFile, HTTPException
33

4-
from apps.dashboard.crud.dashboard_service import get_dashboard_list, preview_with_id,create_dashboard
4+
from apps.dashboard.crud.dashboard_service import get_dashboard_list, preview_with_id, \
5+
create_resource, create_canvas
56
from apps.dashboard.models.dashboard_model import CreateDashboard
67
from common.core.deps import SessionDep, CurrentUser
78

@@ -17,4 +18,16 @@ async def preview_dashboard(session: SessionDep,id:str):
1718

1819
@router.post("/add", response_model=CreateDashboard)
1920
async def add(session: SessionDep, user: CurrentUser, dashboard: CreateDashboard):
20-
return create_dashboard(session, user, dashboard)
21+
return create_resource(session, user, dashboard)
22+
23+
@router.post("/update", response_model=CreateDashboard)
24+
async def update(session: SessionDep, user: CurrentUser, dashboard: CreateDashboard):
25+
return create_resource(session, user, dashboard)
26+
27+
@router.post("/add_dashboard", response_model=CreateDashboard)
28+
async def add_dashboard(session: SessionDep, user: CurrentUser, dashboard: CreateDashboard):
29+
return create_canvas(session, user, dashboard)
30+
31+
@router.post("/update_dashboard", response_model=CreateDashboard)
32+
async def update(session: SessionDep, user: CurrentUser, dashboard: CreateDashboard):
33+
return

backend/apps/dashboard/crud/dashboard_service.py

Lines changed: 27 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
from common.core.deps import SessionDep, CurrentUser
44
from sqlmodel import text
55
import uuid
6+
import datetime
67
def get_dashboard_list(session: SessionDep):
78
sql = text("SELECT id, name, type,node_type, pid, create_time FROM core_dashboard")
89
for row in session.exec(sql).mappings():
@@ -11,14 +12,38 @@ def get_dashboard_list(session: SessionDep):
1112
def preview_with_id(session: SessionDep, dashboard_id: str):
1213
return session.query(CoreDashboard).filter(CoreDashboard.id == id).first()
1314

14-
15-
def create_dashboard(session: SessionDep, user: CurrentUser, dashboard: CreateDashboard):
15+
def get_create_base_info(user: CurrentUser, dashboard: CreateDashboard):
1616
new_id = uuid.uuid4().hex
1717
record = CoreDashboard(**dashboard.model_dump())
1818
record.id = new_id
1919
record.create_by = user.id
20+
return record
21+
22+
def create_resource(session: SessionDep, user: CurrentUser, dashboard: CreateDashboard):
23+
record = get_create_base_info(user, dashboard)
2024
session.add(record)
2125
session.flush()
2226
session.refresh(record)
2327
session.commit()
2428
return record
29+
30+
31+
32+
def update_resource(session: SessionDep, user: CurrentUser, dashboard: CreateDashboard):
33+
record = session.query(CoreDashboard).filter(CoreDashboard.id == dashboard.id).first()
34+
record.name = dashboard.name
35+
record.update_by = user.id
36+
record.update_time = datetime.datetime.now()
37+
session.add(record)
38+
session.commit()
39+
40+
def create_canvas(session: SessionDep, user: CurrentUser, dashboard: CreateDashboard):
41+
record = get_create_base_info(user, dashboard)
42+
record.node_type = dashboard.node_type
43+
record.component_data = dashboard.component_data
44+
record.canvas_style_data = dashboard.canvas_style_data
45+
session.add(record)
46+
session.flush()
47+
48+
def update_canvas(session: SessionDep, user: CurrentUser, dashboard: CreateDashboard):
49+
record = session.query(CoreDashboard).filter(CoreDashboard.id == dashboard.id).first()

frontend/src/api/dashboard.ts

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,5 +5,8 @@ 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)
8+
addResource: (data: any) => request.post('/dashboard/add',data),
9+
updateResource: (data: any) => request.post('/dashboard/update',data),
10+
saveCanvas: (data: any) => request.post('/dashboard/save_canvas',data),
11+
updateCanvas: (data: any) => request.post('/dashboard/update_canvas',data)
912
}

frontend/src/views/dashboard/editor/Toolbar.vue

Lines changed: 22 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,14 +6,19 @@ import ComponentButtonLabel from "@/views/dashboard/components/button-label/Comp
66
import dvTab from '@/assets/svg/dv-tab.svg'
77
import dvText from '@/assets/svg/dv-text.svg'
88
import dvView from '@/assets/svg/dv-view.svg'
9-
9+
import ResourceGroupOpt from "@/views/dashboard/common/ResourceGroupOpt.vue";
10+
import {ref} from 'vue'
1011
const dashboardStore = dashboardStoreWithOut()
1112
const {dashboardInfo} = storeToRefs(dashboardStore)
1213
const emits = defineEmits(['addComponent'])
13-
14+
const resourceGroupOptRef = ref(null)
1415
const openViewDialog = () => {
1516
// do addComponent
1617
}
18+
19+
const saveCanvasWithCheck = () =>{
20+
21+
}
1722
</script>
1823

1924
<template>
@@ -46,6 +51,15 @@ const openViewDialog = () => {
4651
>
4752
</component-button-label>
4853
</div>
54+
<div class="right-toolbar">
55+
<el-button @click="saveCanvasWithCheck()"
56+
style="float: right; margin-right: 12px"
57+
type="primary"
58+
>
59+
Save
60+
</el-button>
61+
</div>
62+
<ResourceGroupOpt ref="resourceGroupOptRef"></ResourceGroupOpt>
4963
</div>
5064
</template>
5165

@@ -57,12 +71,18 @@ const openViewDialog = () => {
5771
align-items: center;
5872
background: #050e21;
5973
padding-left: 8px;
74+
6075
.core-toolbar {
6176
display: flex;
6277
position: absolute;
6378
left: 50%;
6479
transform: translateX(-50%);
6580
}
81+
.right-toolbar {
82+
display: flex;
83+
position: absolute;
84+
right: 12px;
85+
}
6686
}
6787
6888
</style>

frontend/src/views/dashboard/editor/index.vue

Lines changed: 5 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,11 @@ import DashboardEditor from "@/views/dashboard/editor/DashboardEditor.vue";
55
import {findNewComponentFromList} from "@/views/dashboard/components/component-list.ts";
66
import {guid} from "@/utils/canvas.ts";
77
import cloneDeep from 'lodash/cloneDeep';
8+
import {storeToRefs} from "pinia";
9+
import {dashboardStoreWithOut} from "@/stores/dashboard/dashboard.ts";
10+
11+
const dashboardStore = dashboardStoreWithOut()
12+
const {componentData} = storeToRefs(dashboardStore)
813
914
1015
const dashboardEditorRef = ref(null);
@@ -24,33 +29,6 @@ const addComponent = (componentType: string) => {
2429
}
2530
}
2631
27-
const componentData = ref([
28-
{
29-
id: 4,
30-
x: 1,
31-
y: 1,
32-
sizeX: 20,
33-
sizeY: 10,
34-
_dragId: 0
35-
},
36-
{
37-
id: 10,
38-
x: 2,
39-
y: 1,
40-
sizeX: 20,
41-
sizeY: 10,
42-
_dragId: 1
43-
},
44-
{
45-
id: 7,
46-
x: 1,
47-
y: 2,
48-
sizeX: 20,
49-
sizeY: 10,
50-
_dragId: 2
51-
}
52-
])
53-
5432
</script>
5533

5634
<template>

0 commit comments

Comments
 (0)