Skip to content

Commit 7f64f5e

Browse files
committed
✨ 增加了节点详情的自定义选择:小型面板和Vditor编辑器
1 parent 0b6a0dd commit 7f64f5e

File tree

7 files changed

+42
-9
lines changed

7 files changed

+42
-9
lines changed

app/src/core/service/Settings.tsx

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@ export namespace Settings {
3333
entityDetailsFontSize: number;
3434
entityDetailsLinesLimit: number;
3535
entityDetailsWidthLimit: number;
36+
nodeDetailsPanel: "small" | "vditor";
3637
limitCameraInCycleSpace: boolean;
3738
cameraCycleSpaceSizeX: number;
3839
cameraCycleSpaceSizeY: number;
@@ -105,6 +106,7 @@ export namespace Settings {
105106
entityDetailsFontSize: 18,
106107
entityDetailsLinesLimit: 4,
107108
entityDetailsWidthLimit: 200,
109+
nodeDetailsPanel: "vditor",
108110
limitCameraInCycleSpace: false,
109111
cameraCycleSpaceSizeX: 1000,
110112
cameraCycleSpaceSizeY: 1000,

app/src/locales/en.yml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -160,6 +160,11 @@ settings:
160160
title: Always Show Node Details
161161
description: |
162162
When enabled, node details will be shown without hovering the mouse over the node.
163+
nodeDetailsPanel:
164+
title: node details panel
165+
options:
166+
small: small panel
167+
vditor: vditor markdown panel
163168
useNativeTitleBar:
164169
title: Use Native Title Bar (Requires application restart)
165170
description: |

app/src/locales/zh_CN.yml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -150,6 +150,11 @@ settings:
150150
title: 始终显示节点详细信息
151151
description: |
152152
开启后,无需鼠标移动到节点上时,才显示节点的详细信息。
153+
nodeDetailsPanel:
154+
title: 节点详细信息面板
155+
options:
156+
small: 小型面板
157+
vditor: vditor markdown编辑器
153158
useNativeTitleBar:
154159
title: 使用原生标题栏(需要重启应用)
155160
description: |

app/src/locales/zh_TW.yml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -132,6 +132,11 @@ settings:
132132
title: 始終顯示節點詳細資訊
133133
description: |
134134
開啟後,無需滑鼠移動到節點上時,才顯示節點的詳細資訊。
135+
nodeDetailsPanel:
136+
title: 节点详细信息面板
137+
options:
138+
small: 小型面板
139+
vditor: vditor markdown编辑器
135140
useNativeTitleBar:
136141
title: 使用原生標題列(需要重新啟動應用程式)
137142
description: |

app/src/pages/_details_edit_panel.tsx renamed to app/src/pages/_details_edit_small_panel.tsx

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -9,9 +9,10 @@ import { Entity } from "../core/stage/stageObject/abstract/StageEntity";
99

1010
/**
1111
* 2025年1月4日,这个打算被侧边栏取代 ——littlefean
12+
* 2025年2月9日,打算先共存
1213
* @returns
1314
*/
14-
export default function DetailsEditPanel() {
15+
export default function DetailsEditSmallPanel() {
1516
const [inputCurrentDetails, setInputCurrentDetails] = React.useState("");
1617
const [isNodeTextEditing, setIsNodeTextEditing] = React.useState(false);
1718
const [clickedNode, setClickedNode] = React.useState<Entity>();
@@ -43,6 +44,7 @@ export default function DetailsEditPanel() {
4344
Controller.isCameraLocked = false;
4445
entity.isEditingDetails = false;
4546
};
47+
4648
const getClickedNodeStyle = () => {
4749
if (!clickedNode) {
4850
return {
@@ -52,13 +54,17 @@ export default function DetailsEditPanel() {
5254
}
5355
const collisionBoxRectangle = clickedNode.collisionBox.getRectangle();
5456
const heightViewSize = collisionBoxRectangle.size.y * Camera.currentScale;
55-
57+
let viewTop = Renderer.transformWorld2View(collisionBoxRectangle.location).y + heightViewSize;
58+
viewTop = Math.min(viewTop, window.innerHeight - 192);
59+
let viewLeft = Renderer.transformWorld2View(collisionBoxRectangle.location).x;
60+
viewLeft = Math.min(viewLeft, window.innerWidth - 288);
5661
return {
57-
left: `${Renderer.transformWorld2View(collisionBoxRectangle.location).x}px`,
58-
top: `${Renderer.transformWorld2View(collisionBoxRectangle.location).y + heightViewSize}px`,
62+
left: `${viewLeft}px`,
63+
top: `${viewTop}px`,
5964
};
6065
};
61-
66+
// h-48 = 192px
67+
// w-72 = 288px
6268
return (
6369
<>
6470
{isNodeTextEditing && (

app/src/pages/index.tsx

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,19 +7,21 @@ import { Settings } from "../core/service/Settings";
77
import { Canvas } from "../core/stage/Canvas";
88
import { Stage } from "../core/stage/Stage";
99
// import DetailsEditPanel from "./_details_edit_panel";
10+
import Button from "../components/Button";
11+
import { isMobile } from "../utils/platform";
12+
import DetailsEditSmallPanel from "./_details_edit_small_panel";
1013
import DetailsEditSidePanel from "./_details_edit_side_panel";
1114
import HintText from "./_hint_text";
1215
import SearchingNodePanel from "./_searching_node_panel";
1316
import Toolbar from "./_toolbar";
14-
import Button from "../components/Button";
15-
import { isMobile } from "../utils/platform";
1617

1718
export default function Home() {
1819
const canvasRef: React.RefObject<HTMLCanvasElement | null> = useRef(null);
1920

2021
const [cursorName, setCursorName] = React.useState("default");
2122
const [bgAlpha, setBgAlpha] = React.useState(1);
2223
const [isDrawingMode, setIsDrawingMode] = React.useState(false);
24+
const [nodeDetailsPanel, setNodeDetailsPanel] = React.useState("vditor");
2325

2426
useEffect(() => {
2527
const handleResize = () => {
@@ -82,6 +84,10 @@ export default function Home() {
8284

8385
let frameId = requestAnimationFrame(loop);
8486

87+
Settings.watch("nodeDetailsPanel", (value) => {
88+
setNodeDetailsPanel(value);
89+
});
90+
8591
// 清理事件监听器
8692
return () => {
8793
window.removeEventListener("resize", handleResize);
@@ -99,8 +105,7 @@ export default function Home() {
99105
<Toolbar />
100106
<SearchingNodePanel />
101107
{/* 这个打算被取代 */}
102-
{/* <DetailsEditPanel /> */}
103-
<DetailsEditSidePanel />
108+
{nodeDetailsPanel === "small" ? <DetailsEditSmallPanel /> : <DetailsEditSidePanel />}
104109
<HintText />
105110
{isMobile && (
106111
<Button

app/src/pages/settings/visual.tsx

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import {
2+
AppWindow,
23
AppWindowMac,
34
ArrowDownNarrowWide,
45
Blend,
@@ -14,6 +15,7 @@ import {
1415
Move3d,
1516
Palette,
1617
Ratio,
18+
ReceiptText,
1719
Rows4,
1820
Scaling,
1921
Settings,
@@ -45,6 +47,9 @@ export default function Visual() {
4547
<FieldGroup title="Node & Edge 节点与连线样式" icon={<Workflow />}>
4648
<SettingField icon={<Spline />} settingKey="lineStyle" type="select" />
4749
<SettingField icon={<Tag />} settingKey="enableTagTextNodesBigDisplay" type="switch" />
50+
</FieldGroup>
51+
<FieldGroup title="节点详情" icon={<ReceiptText />}>
52+
<SettingField icon={<AppWindow />} settingKey="nodeDetailsPanel" type="select" />
4853
<SettingField icon={<ListCollapse />} settingKey="alwaysShowDetails" type="switch" />
4954
<SettingField
5055
icon={<CaseSensitive />}

0 commit comments

Comments
 (0)