From e6bd442aa41063814d45a9e062c36c8592055955 Mon Sep 17 00:00:00 2001 From: caadiq Date: Mon, 29 Dec 2025 13:32:38 +0900 Subject: [PATCH] =?UTF-8?q?refactor:=20=EC=84=9C=EB=B2=84=20=EA=B4=80?= =?UTF-8?q?=EB=A6=AC=20UI=20=EA=B0=9C=EC=84=A0=20-=20=EC=A0=91=ED=9E=98/?= =?UTF-8?q?=ED=8E=BC=EC=B9=A8=20+=20=EC=84=A0=ED=83=9D=20=EB=B0=A9?= =?UTF-8?q?=EC=8B=9D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 실행 중인 서버 상태 카드 표시 - 서버 목록 접힘/펼침 가능 - 라디오 버튼 선택 방식으로 변경 - 선택 후 시작 버튼 하나로 통합 --- frontend/src/pages/Admin.jsx | 218 +++++++++++++++++++++-------------- 1 file changed, 131 insertions(+), 87 deletions(-) diff --git a/frontend/src/pages/Admin.jsx b/frontend/src/pages/Admin.jsx index de42160..c9e87c4 100644 --- a/frontend/src/pages/Admin.jsx +++ b/frontend/src/pages/Admin.jsx @@ -108,6 +108,10 @@ export default function Admin({ isMobile = false }) { window.location.hash = tab; }; + // 서버 관리 상태 + const [isServerListExpanded, setIsServerListExpanded] = useState(false); // 서버 목록 펼침 상태 + const [selectedServer, setSelectedServer] = useState(null); // 선택된 서버 경로 + // 콘솔 관련 상태 const [logs, setLogs] = useState([]); const [command, setCommand] = useState(""); @@ -1487,99 +1491,139 @@ export default function Admin({ isMobile = false }) { className="space-y-4" > {/* 서버 관리 */} -
-

- 🖥️ 서버 관리 -

-
- {/* 서버 목록 - 하드코딩 (나중에 API로 대체) */} - {[ - { - id: "1.21.1", - loader: "NeoForge", - version: "1.21.1", - path: "neoforge/1.21.1/1.21.1", - running: true, - }, - { - id: "1.21.1 create private", - loader: "NeoForge", - version: "1.21.1", - path: "neoforge/1.21.1/1.21.1 create private", - running: false, - }, - { - id: "test", - loader: "NeoForge", - version: "1.21.1", - path: "neoforge/1.21.1/test", - running: false, - }, - { - id: "1.21.1 medieval", - loader: "Fabric", - version: "1.21.1", - path: "fabric/1.21.1 medieval", - running: false, - }, - ].map((server) => ( -
-
-
-
-

- {server.id} -

-

- - {server.loader} - - - {server.version} -

+ {(() => { + // 서버 목록 (하드코딩 - 나중에 API로 대체) + const servers = [ + { id: '1.21.1', loader: 'NeoForge', version: '1.21.1', path: 'neoforge/1.21.1/1.21.1', running: true }, + { id: '1.21.1 create private', loader: 'NeoForge', version: '1.21.1', path: 'neoforge/1.21.1/1.21.1 create private', running: false }, + { id: 'test', loader: 'NeoForge', version: '1.21.1', path: 'neoforge/1.21.1/test', running: false }, + { id: '1.21.1 medieval', loader: 'Fabric', version: '1.21.1', path: 'fabric/1.21.1 medieval', running: false }, + ]; + const runningServer = servers.find(s => s.running); + + return ( +
+ {/* 헤더 - 실행 중인 서버 표시 */} +
+

+ 🖥️ 서버 관리 +

+ {runningServer && ( +
+
+ {runningServer.id} +
+ )} +
+ + {/* 실행 중인 서버가 있으면 상태 카드 표시 */} + {runningServer && ( +
+
+
+
+
+
+
+

{runningServer.id}

+

+ + {runningServer.loader} + + + {runningServer.version} +

+
+
+
+ )} + + {/* 서버 선택 (접힘/펼침) */} +
+ + + {isServerListExpanded && ( + +
+ {servers.filter(s => !s.running).map((server) => ( + + ))} +
+ + {/* 시작 버튼 */} + {selectedServer && !runningServer && ( +
+ +
+ )} +
+ )} +
- ))} -
-
+
+ ); + })()} {/* 서버 성능 모니터링 */}