리스트 뷰/편집 모드에서 동일한 레이아웃 제공
This commit is contained in:
parent
8e0ef82de7
commit
a8c1b4b5e5
|
|
@ -25,7 +25,18 @@ const DocumentWidget = dynamic(() => import("./widgets/DocumentWidget"), { ssr:
|
||||||
const BookingAlertWidget = dynamic(() => import("./widgets/BookingAlertWidget"), { ssr: false });
|
const BookingAlertWidget = dynamic(() => import("./widgets/BookingAlertWidget"), { ssr: false });
|
||||||
const MaintenanceWidget = dynamic(() => import("./widgets/MaintenanceWidget"), { ssr: false });
|
const MaintenanceWidget = dynamic(() => import("./widgets/MaintenanceWidget"), { ssr: false });
|
||||||
const CalculatorWidget = dynamic(() => import("./widgets/CalculatorWidget"), { ssr: false });
|
const CalculatorWidget = dynamic(() => import("./widgets/CalculatorWidget"), { ssr: false });
|
||||||
const CalendarWidget = dynamic(() => import("@/components/admin/dashboard/widgets/CalendarWidget").then(mod => ({ default: mod.CalendarWidget })), { ssr: false });
|
const CalendarWidget = dynamic(
|
||||||
|
() => import("@/components/admin/dashboard/widgets/CalendarWidget").then((mod) => ({ default: mod.CalendarWidget })),
|
||||||
|
{ ssr: false },
|
||||||
|
);
|
||||||
|
const ClockWidget = dynamic(
|
||||||
|
() => import("@/components/admin/dashboard/widgets/ClockWidget").then((mod) => ({ default: mod.ClockWidget })),
|
||||||
|
{ ssr: false },
|
||||||
|
);
|
||||||
|
const ListWidget = dynamic(
|
||||||
|
() => import("@/components/admin/dashboard/widgets/ListWidget").then((mod) => ({ default: mod.ListWidget })),
|
||||||
|
{ ssr: false },
|
||||||
|
);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 위젯 렌더링 함수 - DashboardSidebar의 모든 subtype 처리
|
* 위젯 렌더링 함수 - DashboardSidebar의 모든 subtype 처리
|
||||||
|
|
@ -34,7 +45,7 @@ const CalendarWidget = dynamic(() => import("@/components/admin/dashboard/widget
|
||||||
function renderWidget(element: DashboardElement) {
|
function renderWidget(element: DashboardElement) {
|
||||||
switch (element.subtype) {
|
switch (element.subtype) {
|
||||||
// 차트는 ChartRenderer에서 처리됨 (이 함수 호출 안됨)
|
// 차트는 ChartRenderer에서 처리됨 (이 함수 호출 안됨)
|
||||||
|
|
||||||
// === 위젯 종류 ===
|
// === 위젯 종류 ===
|
||||||
case "exchange":
|
case "exchange":
|
||||||
return <ExchangeWidget element={element} />;
|
return <ExchangeWidget element={element} />;
|
||||||
|
|
@ -43,14 +54,7 @@ function renderWidget(element: DashboardElement) {
|
||||||
case "calculator":
|
case "calculator":
|
||||||
return <CalculatorWidget element={element} />;
|
return <CalculatorWidget element={element} />;
|
||||||
case "clock":
|
case "clock":
|
||||||
return (
|
return <ClockWidget element={element} />;
|
||||||
<div className="flex h-full w-full items-center justify-center bg-gradient-to-br from-blue-400 to-purple-600 p-4 text-white">
|
|
||||||
<div className="text-center">
|
|
||||||
<div className="mb-2 text-3xl">⏰</div>
|
|
||||||
<div className="text-sm">시계 위젯 (개발 예정)</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
);
|
|
||||||
case "map-summary":
|
case "map-summary":
|
||||||
return <MapSummaryWidget element={element} />;
|
return <MapSummaryWidget element={element} />;
|
||||||
case "list-summary":
|
case "list-summary":
|
||||||
|
|
@ -61,7 +65,7 @@ function renderWidget(element: DashboardElement) {
|
||||||
return <CalendarWidget element={element} />;
|
return <CalendarWidget element={element} />;
|
||||||
case "status-summary":
|
case "status-summary":
|
||||||
return <StatusSummaryWidget element={element} />;
|
return <StatusSummaryWidget element={element} />;
|
||||||
|
|
||||||
// === 운영/작업 지원 ===
|
// === 운영/작업 지원 ===
|
||||||
case "todo":
|
case "todo":
|
||||||
return <TodoWidget element={element} />;
|
return <TodoWidget element={element} />;
|
||||||
|
|
@ -72,8 +76,8 @@ function renderWidget(element: DashboardElement) {
|
||||||
case "document":
|
case "document":
|
||||||
return <DocumentWidget element={element} />;
|
return <DocumentWidget element={element} />;
|
||||||
case "list":
|
case "list":
|
||||||
return <ListSummaryWidget element={element} />;
|
return <ListWidget element={element} />;
|
||||||
|
|
||||||
// === 차량 관련 (추가 위젯) ===
|
// === 차량 관련 (추가 위젯) ===
|
||||||
case "vehicle-status":
|
case "vehicle-status":
|
||||||
return <VehicleStatusWidget />;
|
return <VehicleStatusWidget />;
|
||||||
|
|
@ -81,7 +85,7 @@ function renderWidget(element: DashboardElement) {
|
||||||
return <VehicleListWidget />;
|
return <VehicleListWidget />;
|
||||||
case "vehicle-map":
|
case "vehicle-map":
|
||||||
return <VehicleMapOnlyWidget element={element} />;
|
return <VehicleMapOnlyWidget element={element} />;
|
||||||
|
|
||||||
// === 배송 관련 (추가 위젯) ===
|
// === 배송 관련 (추가 위젯) ===
|
||||||
case "delivery-status":
|
case "delivery-status":
|
||||||
return <DeliveryStatusWidget />;
|
return <DeliveryStatusWidget />;
|
||||||
|
|
@ -93,7 +97,7 @@ function renderWidget(element: DashboardElement) {
|
||||||
return <CargoListWidget />;
|
return <CargoListWidget />;
|
||||||
case "customer-issues":
|
case "customer-issues":
|
||||||
return <CustomerIssuesWidget />;
|
return <CustomerIssuesWidget />;
|
||||||
|
|
||||||
// === 기본 fallback ===
|
// === 기본 fallback ===
|
||||||
default:
|
default:
|
||||||
return (
|
return (
|
||||||
|
|
@ -301,7 +305,9 @@ function ViewerElement({ element, data, isLoading, onRefresh }: ViewerElementPro
|
||||||
<div className="h-[calc(100%-57px)]">
|
<div className="h-[calc(100%-57px)]">
|
||||||
{element.type === "chart" ? (
|
{element.type === "chart" ? (
|
||||||
<ChartRenderer element={element} data={data} width={element.size.width} height={element.size.height - 57} />
|
<ChartRenderer element={element} data={data} width={element.size.width} height={element.size.height - 57} />
|
||||||
) : renderWidget(element)}
|
) : (
|
||||||
|
renderWidget(element)
|
||||||
|
)}
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
{/* 로딩 오버레이 */}
|
{/* 로딩 오버레이 */}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue