feat: 엔티티 타입 컬럼 표시 설정을 화면 편집기로 이동

- 테이블 타입 관리에서 엔티티 타입의 표시 컬럼 설정 완전 제거
- 컬럼 설정 패널에서 엔티티 타입일 때 표시 컬럼 조합 선택 기능 추가
- 기본 테이블과 조인 테이블의 컬럼을 자유롭게 조합 가능
- 구분자 설정 및 실시간 미리보기 기능 포함
- 별도 모달 방식 제거하고 기존 컬럼 설정 패널에 통합
This commit is contained in:
kjs
2025-09-23 16:23:36 +09:00
parent 4aefb5be6a
commit de6c7a8008
9 changed files with 293 additions and 51 deletions

View File

@@ -20,7 +20,7 @@ export class EntityJoinService {
* @param screenEntityConfigs 화면별 엔티티 설정 (선택사항)
*/
async detectEntityJoins(
tableName: string,
tableName: string,
screenEntityConfigs?: Record<string, any>
): Promise<EntityJoinConfig[]> {
try {
@@ -57,7 +57,7 @@ export class EntityJoinService {
const screenConfig = screenEntityConfigs?.[column.column_name];
let displayColumns: string[] = [];
let separator = " - ";
if (screenConfig && screenConfig.displayColumns) {
// 화면에서 설정된 표시 컬럼들 사용
displayColumns = screenConfig.displayColumns;
@@ -66,8 +66,11 @@ export class EntityJoinService {
// 기존 설정된 단일 표시 컬럼 사용
displayColumns = [column.display_column];
} else {
// 기본값: reference_column 사용
displayColumns = [column.reference_column];
// 화면에서 설정하도록 빈 배열로 초기화 (테이블 타입 관리에서 표시 컬럼 설정 제거)
displayColumns = [];
console.log(
`🎯 표시 컬럼을 화면에서 설정하도록 초기화: ${column.column_name} (테이블 타입 관리에서 표시 컬럼 설정 제거됨)`
);
}
// 별칭 컬럼명 생성 (writer -> writer_name)
@@ -153,16 +156,18 @@ export class EntityJoinService {
const joinColumns = joinConfigs
.map((config) => {
const alias = aliasMap.get(config.referenceTable);
const displayColumns = config.displayColumns || [config.displayColumn];
const displayColumns = config.displayColumns || [
config.displayColumn,
];
const separator = config.separator || " - ";
if (displayColumns.length === 1) {
// 단일 컬럼인 경우
return `COALESCE(${alias}.${displayColumns[0]}, '') AS ${config.aliasColumn}`;
} else {
// 여러 컬럼인 경우 CONCAT으로 연결
const concatParts = displayColumns
.map(col => `COALESCE(${alias}.${col}, '')`)
.map((col) => `COALESCE(${alias}.${col}, '')`)
.join(`, '${separator}', `);
return `CONCAT(${concatParts}) AS ${config.aliasColumn}`;
}
@@ -236,7 +241,7 @@ export class EntityJoinService {
const cachedData = await referenceCacheService.getCachedReference(
config.referenceTable,
config.referenceColumn,
config.displayColumn
config.displayColumn || config.displayColumns[0]
);
return cachedData ? "cache" : "join";