78 lines
2.5 KiB
TypeScript
78 lines
2.5 KiB
TypeScript
"use client";
|
|
|
|
import { AutoRegisteringComponentRenderer } from "../../AutoRegisteringComponentRenderer";
|
|
import { ComponentCategory } from "@/types/component";
|
|
import MapComponent from "./MapComponent";
|
|
import MapPreviewComponent from "./MapPreviewComponent";
|
|
import MapConfigPanel from "./MapConfigPanel";
|
|
|
|
/**
|
|
* Map 컴포넌트 렌더러 (자동 등록)
|
|
*/
|
|
export class MapRenderer extends AutoRegisteringComponentRenderer {
|
|
static definition = {
|
|
id: "map",
|
|
name: "지도",
|
|
nameEng: "Map Component",
|
|
description: "외부/내부 DB 데이터를 지도에 마커로 표시합니다 (위도/경도 필요)",
|
|
category: ComponentCategory.DISPLAY,
|
|
webType: "text" as const,
|
|
component: MapComponent,
|
|
previewComponent: MapPreviewComponent,
|
|
defaultConfig: {
|
|
// 데이터 소스 설정
|
|
dataSource: {
|
|
type: "internal", // "internal" | "external"
|
|
connectionId: null, // 외부 DB 연결 ID
|
|
tableName: "",
|
|
latColumn: "latitude", // 위도 컬럼명
|
|
lngColumn: "longitude", // 경도 컬럼명
|
|
labelColumn: "", // 마커 라벨 컬럼명
|
|
statusColumn: "", // 상태 컬럼명 (마커 색상용)
|
|
additionalColumns: [], // 추가 표시할 컬럼들
|
|
whereClause: "", // WHERE 조건절
|
|
},
|
|
|
|
// 지도 설정
|
|
mapConfig: {
|
|
center: {
|
|
lat: 36.5,
|
|
lng: 127.5,
|
|
},
|
|
zoom: 7,
|
|
minZoom: 5,
|
|
maxZoom: 18,
|
|
},
|
|
|
|
// 마커 설정
|
|
markerConfig: {
|
|
showLabel: true,
|
|
showPopup: true,
|
|
clusterMarkers: false, // 마커 클러스터링
|
|
statusColors: {
|
|
default: "#3b82f6", // 기본 파란색
|
|
active: "#22c55e", // 활성 녹색
|
|
inactive: "#94a3b8", // 비활성 회색
|
|
warning: "#f59e0b", // 경고 주황색
|
|
danger: "#ef4444", // 위험 빨간색
|
|
},
|
|
},
|
|
|
|
// 새로고침 설정
|
|
refreshInterval: 30000, // 30초 (0이면 자동 새로고침 없음)
|
|
},
|
|
defaultSize: { width: 800, height: 600 },
|
|
configPanel: MapConfigPanel,
|
|
icon: "Map",
|
|
tags: ["map", "location", "gps", "marker", "leaflet"],
|
|
version: "1.0.0",
|
|
author: "개발팀",
|
|
documentation:
|
|
"외부/내부 DB 데이터를 지도에 표시하는 컴포넌트입니다. 위도/경도 컬럼이 있는 테이블이면 어떤 데이터든 지도에 마커로 표시할 수 있습니다.",
|
|
};
|
|
}
|
|
|
|
// 자동 등록 실행
|
|
new MapRenderer();
|
|
|