@g1cloud/entity-modeler-next 5.0.2 → 5.0.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/core/dedupeModelIds.d.ts +12 -0
- package/dist/core/fkDerived.d.ts +9 -0
- package/dist/entity-modeler-next.css +1 -1
- package/dist/entity-modeler.js +7279 -7111
- package/dist/entity-modeler.umd.cjs +20 -20
- package/dist/i18n/ko.d.ts +3 -0
- package/dist/index.d.ts +1 -0
- package/dist/view/indexColumnLabel.d.ts +60 -0
- package/package.json +1 -1
package/dist/i18n/ko.d.ts
CHANGED
|
@@ -247,6 +247,9 @@ export declare const ko: {
|
|
|
247
247
|
readonly 'em.index.conditionPlaceholderWide': "예: WHERE status = 'A' AND deleted = false";
|
|
248
248
|
readonly 'em.index.inheritedColTitle': "슈퍼클래스 상속 컬럼";
|
|
249
249
|
readonly 'em.index.inheritedBadge': "상속";
|
|
250
|
+
readonly 'em.index.colUnspecified': "{name} (컬럼 {n}개 중 미지정)";
|
|
251
|
+
readonly 'em.index.multiColumn': "{name} (컬럼 {n}개)";
|
|
252
|
+
readonly 'em.index.unnamedAttr': "(이름 없음)";
|
|
250
253
|
readonly 'em.index.availColumns': "가용 컬럼 ({n})";
|
|
251
254
|
readonly 'em.index.indexColumns': "인덱스 컬럼 ({n})";
|
|
252
255
|
readonly 'em.index.allColumnsUsed': "모든 컬럼 사용됨";
|
package/dist/index.d.ts
CHANGED
|
@@ -16,6 +16,7 @@ export { collectSharedColumns, resolveSharedColumn, sharedColumnScopeEntities, t
|
|
|
16
16
|
export { JAVA_TYPES, SELECTABLE_JAVA_TYPES, javaTypeLabel, CUSTOM_TYPE_VALUE, GROUP_CODE_ENUM_VALUE, DEFAULT_JAVA_TYPE, type JavaTypeDef, } from './core/javaTypes';
|
|
17
17
|
export { scaffoldEntityJava, isGeneratable, type ScaffoldOptions, type ScaffoldedEntity, } from './core/scaffoldJava';
|
|
18
18
|
export { migrateLegacyMoney } from './core/migrateLegacyMoney';
|
|
19
|
+
export { dedupeModelIds, type DedupeResult } from './core/dedupeModelIds';
|
|
19
20
|
export { multiplicityLabel } from './core/associationNav';
|
|
20
21
|
export { stereotypeLabel } from './core/stereotype';
|
|
21
22
|
export { mergeDiagram, type MergeDiagramSource, type MergeDiagramOptions, type MergeDiagramResult, } from './core/mergeDiagram';
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import { Attribute, EmbeddableCatalog, Entity, LogicalModel, ModelId } from '../core/types';
|
|
2
|
+
import { InheritedColumn } from '../core/inheritedColumns';
|
|
3
|
+
import { IndexRefResolver } from '../core/indexColumnRef';
|
|
4
|
+
import { Translator } from '../i18n';
|
|
5
|
+
/**
|
|
6
|
+
* 인덱스 편집 뷰의 **컬럼 표시 라벨** 단일 출처 — 인스펙터(`EntityIndexSection`)와 와이드
|
|
7
|
+
* (`EntityIndexesWide`)가 같은 규칙으로 라벨을 만든다.
|
|
8
|
+
*
|
|
9
|
+
* ── 왜 뽑았나 ─────────────────────────────────────────────────────────────────
|
|
10
|
+
* 두 뷰가 각자 라벨을 조립하면서 **서로 다른 반쪽**을 갖고 있었다(VE-4 미러 드리프트 축):
|
|
11
|
+
* - 와이드 `colLabel`은 **속성 modelId만** 조회해 **레거시 dbAttr 표기 ref가 UUID 원문**으로 보였다.
|
|
12
|
+
* 실 데이터 인덱스 컬럼은 거의 전량 그 표기이므로(797/860 실측) 정상 컬럼까지 UUID로 렌더됐고,
|
|
13
|
+
* 그래서 **깨진 행(dangling)과 구분이 안 됐다**.
|
|
14
|
+
* - 인스펙터 `fallbackLabel`은 dbAttr까지 찾았지만 `physicalName || ref`라, **FK 파생 컬럼**(물리명을
|
|
15
|
+
* 비우고 부모 PK 컬럼명을 상속하는 정상 형상)에서 빈 문자열을 만나 결국 UUID로 떨어졌다.
|
|
16
|
+
*
|
|
17
|
+
* 결과는 *"인덱스 모달에서 FK를 지목할 방법이 없다"*는 사용자 보고였다 — 지목 대상은 목록에 있는데
|
|
18
|
+
* (FK는 전파 산출로 속성이 이미 존재한다) **화면의 라벨이 실제 컬럼명을 말해주지 않아** 코드의
|
|
19
|
+
* `order_area_code`와 연결할 근거가 없었다.
|
|
20
|
+
*
|
|
21
|
+
* ── 규칙 ─────────────────────────────────────────────────────────────────────
|
|
22
|
+
* 물리명은 항상 **실효 값**(`resolveColumnPhysicalName` = 상속 해소 단일 출처)으로 읽는다. 캔버스
|
|
23
|
+
* (`columnResolution`)·DDL·코드젠이 이미 그 함수를 쓰므로 라벨이 산출물과 같은 이름을 보인다.
|
|
24
|
+
* 표기 두 종(편집 뷰=속성 modelId / 레거시 로드=dbAttr modelId)은 `IndexRefResolver`가 접는다.
|
|
25
|
+
*
|
|
26
|
+
* ★i18n 문자열은 이 모듈이 소유하지 않는다 — 호출자가 `t`를 넘긴다(뷰 계층 규약). 순수 함수이므로
|
|
27
|
+
* 단위 테스트 대상이다(`view/` ② 순수 헬퍼 분류).
|
|
28
|
+
*/
|
|
29
|
+
export interface IndexLabelContext {
|
|
30
|
+
entity: Entity;
|
|
31
|
+
logical: LogicalModel;
|
|
32
|
+
resolver: IndexRefResolver;
|
|
33
|
+
/** superClass 파생 투영(상속 감사 컬럼). 미주입이면 상속 ref는 원문으로 남는다. */
|
|
34
|
+
inherited?: readonly InheritedColumn[];
|
|
35
|
+
/** EMBED_PREDEF 서브컬럼 상속 해소용(호스트 주입 카탈로그). */
|
|
36
|
+
embeddableCatalog?: EmbeddableCatalog;
|
|
37
|
+
/** i18n 번역기 — `em.index.colUnspecified`(컬럼 미지정)·`em.index.unnamedAttr`(이름 없는 속성). */
|
|
38
|
+
t: Translator;
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* **후보 목록** 라벨(가용 컬럼 패널·셀렉트 항목) — `속성명 (실효 물리명)`.
|
|
42
|
+
* 종전 두 뷰의 차이도 여기서 흡수한다: 와이드는 `name (phys)`를, 인스펙터는 `name`만 냈다.
|
|
43
|
+
*
|
|
44
|
+
* ★**다중 컬럼 속성은 컬럼 수만 밝힌다** — 종전엔 첫 슬롯 물리명을 대표로 내세워(`name (name_1)`)
|
|
45
|
+
* *그 컬럼을 넣는다*는 오해를 만들었다. 실제로 후보는 **속성 단위 ref** 라 인덱스에 들어가면 어느
|
|
46
|
+
* 컬럼인지 미지정이고(행 라벨이 그렇게 표시한다) 산출물에서 생략된다 ⇒ 두 패널이 같은 말을 하게 한다.
|
|
47
|
+
* 컬럼 단위로 고를 수 있게 만드는 것은 별 항목(「인덱스 컬럼 단위 어포던스」)이고, 이 표기는 그때까지
|
|
48
|
+
* 오해를 만들지 않기 위한 최소 정정이다.
|
|
49
|
+
*/
|
|
50
|
+
export declare function candidateColumnLabel(attr: Attribute, ctx: IndexLabelContext): string;
|
|
51
|
+
/**
|
|
52
|
+
* **인덱스 컬럼 행** 라벨 — ref가 지목한 대상을 사람이 읽을 이름으로. 판정 순서:
|
|
53
|
+
* 1. 상속 컬럼 ref(`inherited:<Base>:<field>`) → 필드명(+ 상속 표기는 호출자 배지 소관)
|
|
54
|
+
* 2. 속성이 해소되고 **컬럼이 특정되면** → `속성명 (실효 물리명)`
|
|
55
|
+
* 3. 속성은 있는데 컬럼이 미특정(다중 컬럼 속성 ref) → `속성명 (컬럼 미지정)`
|
|
56
|
+
* ★어느 컬럼인지는 사용자 결정이므로 임의 슬롯을 고르지 않는다(모르는 값 발명 금지).
|
|
57
|
+
* 4. 아무것도 못 찾음(dangling, `CHK-DSN-5`) → **ref 원문**. 진단 가능성을 남기는 종전 계약이고,
|
|
58
|
+
* 이제 정상 컬럼은 전부 이름으로 보이므로 원문 UUID가 곧 *"이 행이 깨졌다"*는 신호가 된다.
|
|
59
|
+
*/
|
|
60
|
+
export declare function indexColumnRowLabel(ref: ModelId, ctx: IndexLabelContext): string;
|