ERP-node/frontend/lib/registry/components/related-data-buttons
kjs 3d287bb883 엔티티타입 연쇄관계관리 설정 추가 2025-12-17 11:48:05 +09:00
..
README.md 좌측 선택데이터에 대한 우측에 데이터표시및 버튼표시 컴포넌트 2025-12-16 16:13:43 +09:00
RelatedDataButtonsComponent.tsx 엔티티타입 연쇄관계관리 설정 추가 2025-12-17 11:48:05 +09:00
RelatedDataButtonsConfigPanel.tsx 버튼별로 데이터 필터링기능 2025-12-16 18:02:08 +09:00
RelatedDataButtonsRenderer.tsx 좌측 선택데이터에 대한 우측에 데이터표시및 버튼표시 컴포넌트 2025-12-16 16:13:43 +09:00
config.ts 좌측 선택데이터에 대한 우측에 데이터표시및 버튼표시 컴포넌트 2025-12-16 16:13:43 +09:00
index.ts 좌측 선택데이터에 대한 우측에 데이터표시및 버튼표시 컴포넌트 2025-12-16 16:13:43 +09:00
types.ts 버튼별로 데이터 필터링기능 2025-12-16 18:02:08 +09:00

README.md

RelatedDataButtons 컴포넌트

좌측 패널에서 선택한 데이터를 기반으로 연관 테이블의 데이터를 버튼으로 표시하는 컴포넌트

개요

  • ID: related-data-buttons
  • 카테고리: data
  • 웹타입: container
  • 버전: 1.0.0

사용 사례

품목별 라우팅 버전 관리

┌─────────────────────────────────────────────────────┐
│  알루미늄 프레임                    [+ 라우팅 버전 추가] │
│  ITEM001                                            │
│  ┌──────────────┐ ┌─────────┐                      │
│  │ 기본 라우팅 ★ │ │ 개선버전 │                      │
│  └──────────────┘ └─────────┘                      │
└─────────────────────────────────────────────────────┘

데이터 흐름

1. 좌측 패널: item_info 선택
   ↓ SplitPanelContext.selectedLeftData
2. RelatedDataButtons: item_code로 item_routing_version 조회
   ↓ 버튼 클릭 시 이벤트 발생
3. 하위 테이블: routing_version_id로 item_routing_detail 필터링

설정 옵션

소스 매핑 (sourceMapping)

속성 타입 설명
sourceTable string 좌측 패널 테이블명 (예: item_info)
sourceColumn string 필터에 사용할 컬럼 (예: item_code)

헤더 표시 (headerDisplay)

속성 타입 설명
show boolean 헤더 표시 여부
titleColumn string 제목으로 표시할 컬럼 (예: item_name)
subtitleColumn string 부제목으로 표시할 컬럼 (예: item_code)

버튼 데이터 소스 (buttonDataSource)

속성 타입 설명
tableName string 조회할 테이블명 (예: item_routing_version)
filterColumn string 필터링할 컬럼명 (예: item_code)
displayColumn string 버튼에 표시할 컬럼명 (예: version_name)
valueColumn string 선택 시 전달할 값 컬럼 (기본: id)
orderColumn string 정렬 컬럼
orderDirection "ASC" | "DESC" 정렬 방향

버튼 스타일 (buttonStyle)

속성 타입 설명
variant string 기본 버튼 스타일 (default, outline, secondary, ghost)
activeVariant string 선택 시 버튼 스타일
size string 버튼 크기 (sm, default, lg)
defaultIndicator.column string 기본 버전 판단 컬럼
defaultIndicator.showStar boolean 별표 아이콘 표시 여부

추가 버튼 (addButton)

속성 타입 설명
show boolean 추가 버튼 표시 여부
label string 버튼 라벨
position "header" | "inline" 버튼 위치
modalScreenId number 연결할 모달 화면 ID

이벤트 설정 (events)

속성 타입 설명
targetTable string 필터링할 하위 테이블명
targetFilterColumn string 하위 테이블의 필터 컬럼명

이벤트

버튼 선택 시 발생하는 커스텀 이벤트

window.addEventListener("related-button-select", (e: CustomEvent) => {
  const { targetTable, filterColumn, filterValue, selectedData } = e.detail;
  // 하위 테이블 필터링 처리
});

사용 예시

품목별 라우팅 버전 화면

const config: RelatedDataButtonsConfig = {
  sourceMapping: {
    sourceTable: "item_info",
    sourceColumn: "item_code",
  },
  headerDisplay: {
    show: true,
    titleColumn: "item_name",
    subtitleColumn: "item_code",
  },
  buttonDataSource: {
    tableName: "item_routing_version",
    filterColumn: "item_code",
    displayColumn: "version_name",
    valueColumn: "id",
  },
  buttonStyle: {
    variant: "outline",
    activeVariant: "default",
    defaultIndicator: {
      column: "is_default",
      showStar: true,
    },
  },
  events: {
    targetTable: "item_routing_detail",
    targetFilterColumn: "routing_version_id",
  },
  addButton: {
    show: true,
    label: "+ 라우팅 버전 추가",
    position: "header",
  },
  autoSelectFirst: true,
};

분할 패널과 함께 사용

┌─────────────────┬──────────────────────────────────────────────┐
│                 │  [RelatedDataButtons 컴포넌트]                │
│  품목 목록       │  품목명 표시 + 버전 버튼들                     │
│  (좌측 패널)     ├──────────────────────────────────────────────┤
│                 │  [DataTable 컴포넌트]                         │
│  item_info      │  공정 순서 테이블 (item_routing_detail)        │
│                 │  related-button-select 이벤트로 필터링         │
└─────────────────┴──────────────────────────────────────────────┘

개발자 정보

  • 생성일: 2024-12
  • 경로: lib/registry/components/related-data-buttons/