화면관리 중간 커밋
This commit is contained in:
@@ -93,6 +93,15 @@ export default function TableManagementPage() {
|
||||
description: getTextFromUI(option.descriptionKey, option.value),
|
||||
}));
|
||||
|
||||
// 웹타입 옵션 확인 (디버깅용)
|
||||
useEffect(() => {
|
||||
console.log("테이블 타입관리 - 웹타입 옵션 로드됨:", webTypeOptions);
|
||||
console.log("테이블 타입관리 - 웹타입 옵션 개수:", webTypeOptions.length);
|
||||
webTypeOptions.forEach((option, index) => {
|
||||
console.log(`${index + 1}. ${option.value}: ${option.label}`);
|
||||
});
|
||||
}, [webTypeOptions]);
|
||||
|
||||
// 참조 테이블 옵션 (실제 테이블 목록에서 가져옴)
|
||||
const referenceTableOptions = [
|
||||
{ value: "none", label: getTextFromUI(TABLE_MANAGEMENT_KEYS.LABEL_NONE, "선택 안함") },
|
||||
@@ -258,16 +267,18 @@ export default function TableManagementPage() {
|
||||
|
||||
try {
|
||||
const columnSetting = {
|
||||
columnName: column.columnName,
|
||||
columnLabel: column.displayName,
|
||||
webType: column.webType,
|
||||
detailSettings: column.detailSettings,
|
||||
codeCategory: column.codeCategory,
|
||||
codeValue: column.codeValue,
|
||||
referenceTable: column.referenceTable,
|
||||
referenceColumn: column.referenceColumn,
|
||||
columnName: column.columnName, // 실제 DB 컬럼명 (변경 불가)
|
||||
columnLabel: column.displayName, // 사용자가 입력한 표시명
|
||||
webType: column.webType || "text",
|
||||
detailSettings: column.detailSettings || "",
|
||||
codeCategory: column.codeCategory || "",
|
||||
codeValue: column.codeValue || "",
|
||||
referenceTable: column.referenceTable || "",
|
||||
referenceColumn: column.referenceColumn || "",
|
||||
};
|
||||
|
||||
console.log("저장할 컬럼 설정:", columnSetting);
|
||||
|
||||
const response = await apiClient.post(`/table-management/tables/${selectedTable}/columns/settings`, [
|
||||
columnSetting,
|
||||
]);
|
||||
@@ -276,6 +287,11 @@ export default function TableManagementPage() {
|
||||
toast.success("컬럼 설정이 성공적으로 저장되었습니다.");
|
||||
// 원본 데이터 업데이트
|
||||
setOriginalColumns((prev) => prev.map((col) => (col.columnName === column.columnName ? column : col)));
|
||||
|
||||
// 저장 후 데이터 확인을 위해 다시 로드
|
||||
setTimeout(() => {
|
||||
loadColumnTypes(selectedTable);
|
||||
}, 1000);
|
||||
} else {
|
||||
toast.error(response.data.message || "컬럼 설정 저장에 실패했습니다.");
|
||||
}
|
||||
@@ -292,16 +308,18 @@ export default function TableManagementPage() {
|
||||
try {
|
||||
// 모든 컬럼의 설정 데이터 준비
|
||||
const columnSettings = columns.map((column) => ({
|
||||
columnName: column.columnName,
|
||||
columnLabel: column.displayName, // 라벨 추가
|
||||
webType: column.webType,
|
||||
detailSettings: column.detailSettings,
|
||||
codeCategory: column.codeCategory,
|
||||
codeValue: column.codeValue,
|
||||
referenceTable: column.referenceTable,
|
||||
referenceColumn: column.referenceColumn,
|
||||
columnName: column.columnName, // 실제 DB 컬럼명 (변경 불가)
|
||||
columnLabel: column.displayName, // 사용자가 입력한 표시명
|
||||
webType: column.webType || "text",
|
||||
detailSettings: column.detailSettings || "",
|
||||
codeCategory: column.codeCategory || "",
|
||||
codeValue: column.codeValue || "",
|
||||
referenceTable: column.referenceTable || "",
|
||||
referenceColumn: column.referenceColumn || "",
|
||||
}));
|
||||
|
||||
console.log("저장할 전체 컬럼 설정:", columnSettings);
|
||||
|
||||
// 전체 테이블 설정을 한 번에 저장
|
||||
const response = await apiClient.post(
|
||||
`/table-management/tables/${selectedTable}/columns/settings`,
|
||||
@@ -312,6 +330,11 @@ export default function TableManagementPage() {
|
||||
// 저장 성공 후 원본 데이터 업데이트
|
||||
setOriginalColumns([...columns]);
|
||||
toast.success(`${columns.length}개의 컬럼 설정이 성공적으로 저장되었습니다.`);
|
||||
|
||||
// 저장 후 데이터 확인을 위해 다시 로드
|
||||
setTimeout(() => {
|
||||
loadColumnTypes(selectedTable);
|
||||
}, 1000);
|
||||
} else {
|
||||
toast.error(response.data.message || "컬럼 설정 저장에 실패했습니다.");
|
||||
}
|
||||
@@ -503,24 +526,30 @@ export default function TableManagementPage() {
|
||||
</TableCell>
|
||||
<TableCell className="font-mono text-sm">{column.dbType}</TableCell>
|
||||
<TableCell>
|
||||
<Select
|
||||
value={column.webType || "text"}
|
||||
onValueChange={(value) => handleWebTypeChange(column.columnName, value)}
|
||||
>
|
||||
<SelectTrigger className="w-32">
|
||||
<SelectValue />
|
||||
</SelectTrigger>
|
||||
<SelectContent>
|
||||
{webTypeOptions.map((option) => (
|
||||
<SelectItem key={option.value} value={option.value}>
|
||||
<div>
|
||||
<div className="font-medium">{option.label}</div>
|
||||
<div className="text-xs text-gray-500">{option.description}</div>
|
||||
</div>
|
||||
</SelectItem>
|
||||
))}
|
||||
</SelectContent>
|
||||
</Select>
|
||||
<div className="space-y-2">
|
||||
<Select
|
||||
value={column.webType || "text"}
|
||||
onValueChange={(value) => handleWebTypeChange(column.columnName, value)}
|
||||
>
|
||||
<SelectTrigger className="w-32">
|
||||
<SelectValue />
|
||||
</SelectTrigger>
|
||||
<SelectContent>
|
||||
{webTypeOptions.map((option) => (
|
||||
<SelectItem key={option.value} value={option.value}>
|
||||
<div>
|
||||
<div className="font-medium">{option.label}</div>
|
||||
<div className="text-xs text-gray-500">{option.description}</div>
|
||||
</div>
|
||||
</SelectItem>
|
||||
))}
|
||||
</SelectContent>
|
||||
</Select>
|
||||
{/* 웹타입 옵션 개수 표시 */}
|
||||
<div className="text-xs text-gray-500">
|
||||
사용 가능한 웹타입: {webTypeOptions.length}개
|
||||
</div>
|
||||
</div>
|
||||
</TableCell>
|
||||
<TableCell>
|
||||
<Input
|
||||
|
||||
Reference in New Issue
Block a user