필드 연결 설정 테이블 및 컬럼 db에서 가져오기
This commit is contained in:
parent
210a4ec62d
commit
8dec80fe22
|
|
@ -185,6 +185,9 @@ export const ConnectionSetupModal: React.FC<ConnectionSetupModalProps> = ({
|
||||||
// 모달이 열릴 때 기본값 설정
|
// 모달이 열릴 때 기본값 설정
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
if (isOpen && connection) {
|
if (isOpen && connection) {
|
||||||
|
// 모달이 열릴 때마다 캐시 초기화 (라벨 업데이트 반영)
|
||||||
|
setTableColumnsCache({});
|
||||||
|
|
||||||
const fromTableName = connection.fromNode.tableName;
|
const fromTableName = connection.fromNode.tableName;
|
||||||
const toTableName = connection.toNode.tableName;
|
const toTableName = connection.toNode.tableName;
|
||||||
const fromDisplayName = connection.fromNode.displayName;
|
const fromDisplayName = connection.fromNode.displayName;
|
||||||
|
|
@ -283,8 +286,8 @@ export const ConnectionSetupModal: React.FC<ConnectionSetupModalProps> = ({
|
||||||
}, [selectedFromColumns, selectedToColumns]);
|
}, [selectedFromColumns, selectedToColumns]);
|
||||||
|
|
||||||
// 테이블 컬럼 로드 함수 (캐시 활용)
|
// 테이블 컬럼 로드 함수 (캐시 활용)
|
||||||
const loadTableColumns = async (tableName: string): Promise<ColumnInfo[]> => {
|
const loadTableColumns = async (tableName: string, forceReload = false): Promise<ColumnInfo[]> => {
|
||||||
if (tableColumnsCache[tableName]) {
|
if (tableColumnsCache[tableName] && !forceReload) {
|
||||||
return tableColumnsCache[tableName];
|
return tableColumnsCache[tableName];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -172,7 +172,7 @@ export const ConditionRenderer: React.FC<ConditionRendererProps> = ({
|
||||||
<SelectContent>
|
<SelectContent>
|
||||||
{fromTableColumns.map((column) => (
|
{fromTableColumns.map((column) => (
|
||||||
<SelectItem key={column.columnName} value={column.columnName}>
|
<SelectItem key={column.columnName} value={column.columnName}>
|
||||||
{column.columnName}
|
{column.displayName || column.columnLabel || column.columnName}
|
||||||
</SelectItem>
|
</SelectItem>
|
||||||
))}
|
))}
|
||||||
</SelectContent>
|
</SelectContent>
|
||||||
|
|
|
||||||
|
|
@ -214,13 +214,13 @@ export const ActionConditionRenderer: React.FC<ActionConditionRendererProps> = (
|
||||||
{condition.tableType === "from" &&
|
{condition.tableType === "from" &&
|
||||||
fromTableColumns.map((column) => (
|
fromTableColumns.map((column) => (
|
||||||
<SelectItem key={column.columnName} value={column.columnName}>
|
<SelectItem key={column.columnName} value={column.columnName}>
|
||||||
{column.columnName}
|
{column.displayName || column.columnLabel || column.columnName}
|
||||||
</SelectItem>
|
</SelectItem>
|
||||||
))}
|
))}
|
||||||
{condition.tableType === "to" &&
|
{condition.tableType === "to" &&
|
||||||
toTableColumns.map((column) => (
|
toTableColumns.map((column) => (
|
||||||
<SelectItem key={column.columnName} value={column.columnName}>
|
<SelectItem key={column.columnName} value={column.columnName}>
|
||||||
{column.columnName}
|
{column.displayName || column.columnLabel || column.columnName}
|
||||||
</SelectItem>
|
</SelectItem>
|
||||||
))}
|
))}
|
||||||
</SelectContent>
|
</SelectContent>
|
||||||
|
|
|
||||||
|
|
@ -154,7 +154,7 @@ export const ActionFieldMappings: React.FC<ActionFieldMappingsProps> = ({
|
||||||
tableColumnsCache[mapping.sourceTable]?.map((column) => (
|
tableColumnsCache[mapping.sourceTable]?.map((column) => (
|
||||||
<SelectItem key={column.columnName} value={column.columnName}>
|
<SelectItem key={column.columnName} value={column.columnName}>
|
||||||
<div className="truncate" title={column.columnName}>
|
<div className="truncate" title={column.columnName}>
|
||||||
{column.columnName}
|
{column.displayName || column.columnLabel || column.columnName}
|
||||||
</div>
|
</div>
|
||||||
</SelectItem>
|
</SelectItem>
|
||||||
))}
|
))}
|
||||||
|
|
@ -200,7 +200,7 @@ export const ActionFieldMappings: React.FC<ActionFieldMappingsProps> = ({
|
||||||
tableColumnsCache[mapping.targetTable]?.map((column) => (
|
tableColumnsCache[mapping.targetTable]?.map((column) => (
|
||||||
<SelectItem key={column.columnName} value={column.columnName}>
|
<SelectItem key={column.columnName} value={column.columnName}>
|
||||||
<div className="truncate" title={column.columnName}>
|
<div className="truncate" title={column.columnName}>
|
||||||
{column.columnName}
|
{column.displayName || column.columnLabel || column.columnName}
|
||||||
</div>
|
</div>
|
||||||
</SelectItem>
|
</SelectItem>
|
||||||
))}
|
))}
|
||||||
|
|
|
||||||
|
|
@ -90,7 +90,7 @@ export const ActionSplitConfig: React.FC<ActionSplitConfigProps> = ({
|
||||||
<SelectContent>
|
<SelectContent>
|
||||||
{fromTableColumns.map((column) => (
|
{fromTableColumns.map((column) => (
|
||||||
<SelectItem key={column.columnName} value={column.columnName}>
|
<SelectItem key={column.columnName} value={column.columnName}>
|
||||||
{column.columnName}
|
{column.displayName || column.columnLabel || column.columnName}
|
||||||
</SelectItem>
|
</SelectItem>
|
||||||
))}
|
))}
|
||||||
</SelectContent>
|
</SelectContent>
|
||||||
|
|
@ -117,7 +117,7 @@ export const ActionSplitConfig: React.FC<ActionSplitConfigProps> = ({
|
||||||
<SelectContent>
|
<SelectContent>
|
||||||
{toTableColumns.map((column) => (
|
{toTableColumns.map((column) => (
|
||||||
<SelectItem key={column.columnName} value={column.columnName}>
|
<SelectItem key={column.columnName} value={column.columnName}>
|
||||||
{column.columnName}
|
{column.displayName || column.columnLabel || column.columnName}
|
||||||
</SelectItem>
|
</SelectItem>
|
||||||
))}
|
))}
|
||||||
</SelectContent>
|
</SelectContent>
|
||||||
|
|
|
||||||
|
|
@ -198,7 +198,9 @@ export const ColumnTableSection: React.FC<ColumnTableSectionProps> = ({
|
||||||
<div className="flex items-start justify-between gap-2">
|
<div className="flex items-start justify-between gap-2">
|
||||||
<div className="min-w-0 flex-1">
|
<div className="min-w-0 flex-1">
|
||||||
<div className="flex items-center gap-2">
|
<div className="flex items-center gap-2">
|
||||||
<span className="truncate font-medium">{column.columnName}</span>
|
<span className="truncate font-medium">
|
||||||
|
{column.displayName || column.columnLabel || column.columnName}
|
||||||
|
</span>
|
||||||
{isSelected && <span className="flex-shrink-0 text-blue-500">●</span>}
|
{isSelected && <span className="flex-shrink-0 text-blue-500">●</span>}
|
||||||
{isMapped && <span className="flex-shrink-0 text-green-500">✓</span>}
|
{isMapped && <span className="flex-shrink-0 text-green-500">✓</span>}
|
||||||
{oppositeSelectedColumn && !isTypeCompatible && (
|
{oppositeSelectedColumn && !isTypeCompatible && (
|
||||||
|
|
@ -264,7 +266,9 @@ export const ColumnTableSection: React.FC<ColumnTableSectionProps> = ({
|
||||||
>
|
>
|
||||||
<div className="flex min-w-0 flex-col justify-between">
|
<div className="flex min-w-0 flex-col justify-between">
|
||||||
<div className="flex items-center gap-2">
|
<div className="flex items-center gap-2">
|
||||||
<span className="truncate font-medium">{column.columnName}</span>
|
<span className="truncate font-medium">
|
||||||
|
{column.displayName || column.columnLabel || column.columnName}
|
||||||
|
</span>
|
||||||
{isSelected && <span className="flex-shrink-0 text-green-500">●</span>}
|
{isSelected && <span className="flex-shrink-0 text-green-500">●</span>}
|
||||||
{oppositeSelectedColumn && !isTypeCompatible && (
|
{oppositeSelectedColumn && !isTypeCompatible && (
|
||||||
<span className="flex-shrink-0 text-red-500" title="데이터 타입이 호환되지 않음">
|
<span className="flex-shrink-0 text-red-500" title="데이터 타입이 호환되지 않음">
|
||||||
|
|
|
||||||
|
|
@ -83,7 +83,7 @@ export const SimpleKeySettings: React.FC<SimpleKeySettingsProps> = ({
|
||||||
}}
|
}}
|
||||||
className="rounded"
|
className="rounded"
|
||||||
/>
|
/>
|
||||||
<span>{column.columnName}</span>
|
<span>{column.displayName || column.columnLabel || column.columnName}</span>
|
||||||
<span className="text-xs text-gray-500">({column.dataType})</span>
|
<span className="text-xs text-gray-500">({column.dataType})</span>
|
||||||
</label>
|
</label>
|
||||||
))}
|
))}
|
||||||
|
|
@ -112,7 +112,7 @@ export const SimpleKeySettings: React.FC<SimpleKeySettingsProps> = ({
|
||||||
}}
|
}}
|
||||||
className="rounded"
|
className="rounded"
|
||||||
/>
|
/>
|
||||||
<span>{column.columnName}</span>
|
<span>{column.displayName || column.columnLabel || column.columnName}</span>
|
||||||
<span className="text-xs text-gray-500">({column.dataType})</span>
|
<span className="text-xs text-gray-500">({column.dataType})</span>
|
||||||
</label>
|
</label>
|
||||||
))}
|
))}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue