diff --git a/solidui-web/src/pages/Designer/Header/Header.tsx b/solidui-web/src/pages/Designer/Header/Header.tsx index 4a2fd9b..226a66b 100644 --- a/solidui-web/src/pages/Designer/Header/Header.tsx +++ b/solidui-web/src/pages/Designer/Header/Header.tsx @@ -17,9 +17,8 @@ import React, { useEffect } from "react"; import { useNavigate, useSearchParams } from "react-router-dom"; -import { Button, Tooltip, Drawer, message } from "antd"; -import { ChartHistogramTwo } from "@icon-park/react"; -import { eventbus, mm } from "@/utils/index"; +import { Button, Drawer, message } from "antd"; +import { mm } from "@/utils/index"; import Apis from "@/apis"; import { ProjectPageViewsCreationDataType, @@ -35,6 +34,73 @@ function Header() { const [previewVisible, setPreviewVisible] = React.useState(false); const [title, setTitle] = React.useState(""); + async function handlePreview() { + await handleSave(); + const page = mm.getCurrentPage(); + const project = mm.getModel(); + if (isNil(project) || isNil(page)) { + message.warn("please select a page first"); + return; + } + setPreviewVisible(true); + } + + async function handleSave() { + const model = mm.getPrepareSavingModel(); + const page = mm.getCurrentPage(); + + if (isNil(model) || isNil(page)) { + return; + } + const views = page.views || []; + const _views: PageViewCreationDataType[] = []; + views.forEach((view) => { + const v: any = { + title: view.title, + position: { + top: `${view.position.top}`, + left: `${view.position.left}`, + }, + size: { + width: `${view.size.width}`, + height: `${view.size.height}`, + }, + type: view.type, + data: { + dataSourceId: `${view.data.dataSourceId || ""}`, + dataSourceName: `${view.data.dataSourceName || ""}`, + dataSourceTypeId: `${view.data.dataSourceTypeId || ""}`, + dataSourceTypeName: `${view.data.dataSourceTypeName || ""}`, + sql: view.data.sql || "", + table: view.data.table || "", + }, + }; + if (view.options !== null && undefined !== view.options) { + v.options = view.options; + } + if (!startsWith(view.id, "visual")) { + v.id = view.id; + } + _views.push(v); + }); + const data: ProjectPageViewsCreationDataType = { + projectId: model.id, + page: { + id: page.id, + name: page.title, + }, + size: { + width: page.size.width, + height: page.size.height, + }, + views: _views, + }; + const res = await Apis.model.updateProjectPageViews(data); + if (res.ok) { + message.success("Save success"); + } + } + function renderPreviewPopup() { if (!previewVisible) { return undefined; @@ -115,103 +181,17 @@ function Header() { {title} -
- {/* - { - eventbus.emit("onDraw", { - viewType: "echarts_bar", - }); - }} - /> - */} -
+
{}
-
diff --git a/solidui-web/src/pages/Designer/Properties/page/PagePagePropertiesPanel.tsx b/solidui-web/src/pages/Designer/Properties/page/PagePagePropertiesPanel.tsx index cbd5856..3149ef2 100644 --- a/solidui-web/src/pages/Designer/Properties/page/PagePagePropertiesPanel.tsx +++ b/solidui-web/src/pages/Designer/Properties/page/PagePagePropertiesPanel.tsx @@ -21,7 +21,12 @@ import { PropertyElement, InputNumber } from "@/components"; import { mm, eventbus } from "@/utils"; export default function PagePagePropertiesPanel() { - const [size] = useState<{ width: number; height: number }>(); + const page = mm.getCurrentPage(); + + const [size] = useState<{ width: number; height: number }>({ + width: page?.size.width || 1024, + height: page?.size.height || 768, + }); return ( <>