e1188027ed
feat(pop): 다중 액션 체이닝 + 외부 테이블 선택 + 카드 클릭 모달 + 필터 전 비표시 버튼 규칙 하나에 여러 액션을 순차 실행하는 다중 액션 체이닝, DB 직접 선택으로 외부 테이블에 값을 변경하는 기능, 카드 클릭 시 조건부 모달 열기, 필터 전 데이터 비표시 옵션을 추가한다. [다중 액션 체이닝] - types.ts: ActionButtonDef.clickActions 배열 추가 (하위호환 유지) - PopCardListV2Config: 액션 목록 UI (추가/삭제/순서) - cell-renderers: __allActions 배열로 config 전달 - PopCardListV2Component: actionsToRun 순차 실행, 실패 시 스킵 [외부 테이블 선택] - ActionButtonClickAction.joinConfig (sourceColumn, targetColumn) 추가 - ImmediateActionEditor: "DB에서 직접 선택..." 옵션 + 조인키 설정 UI - DbTableCombobox: 테이블명(영어)+설명(한글) 검색 가능 - Component: joinConfig 기반 lookupValue/lookupColumn 처리 [카드 클릭 모달] - types.ts: V2CardClickAction에 "modal-open", V2CardClickModalConfig 추가 - PopCardListV2Config: 동작 탭에 모달 설정 (화면 ID, 조건, 제목) - PopCardListV2Component: handleCardSelect 조건 체크 후 openPopModal [필터 전 데이터 비표시] - PopCardListV2Config.hideUntilFiltered Switch - Component: externalFilters 없을 때 안내 메시지 [버그 수정] - availableTableOptions: dataSource.table -> dataSource.tableName 수정 - popActionRoutes: INSERT 시 created_date/updated_date/writer 자동 추가, UPDATE 시 updated_date 자동 갱신 [액션 버튼 구조 개선] - evaluateShowCondition: 버튼별 조건 평가 (visible/disabled/hidden) - ActionButtonsEditor: 아코디언 UI + sessionStorage 상태 유지 - 1셀 1버튼 렌더링: 조건 맞는 버튼 1개만 표시
SeongHyun Kim
2026-03-11 18:20:02 +09:00
000484349b
feat: enhance dynamic form service and interactive screen viewer
kjs
2026-03-11 18:06:40 +09:00
62a5ae5f4b
feat: enhance category value retrieval with company code filtering
kjs
2026-03-11 17:53:41 +09:00
cae1622ac2
fix(pop): pop-status-bar 디자이너 팔레트 및 타입 등록 누락 수정 pop-status-bar 컴포넌트가 디자이너 컴포넌트 목록에 표시되지 않던 문제를 수정한다. 타입 유니온, 팔레트, 라벨, 기본 그리드 크기 4곳에 등록을 추가한다. - pop-layout.ts: PopComponentType에 "pop-status-bar" 추가, DEFAULT_COMPONENT_GRID_SIZE에 6칸x1행 기본 크기 추가 - ComponentPalette.tsx: PALETTE_ITEMS에 "상태 바" 항목 추가 - PopRenderer.tsx: COMPONENT_TYPE_LABELS에 "상태 바" 추가 - ComponentEditorPanel.tsx: COMPONENT_TYPE_LABELS에 "상태 바" 추가
SeongHyun Kim
2026-03-11 16:41:18 +09:00
c7b8acbac3
refactor(pop): status-chip을 pop-status-bar 독립 컴포넌트로 분리 + 카운트 순환 문제 수정 pop-search에 내장되어 있던 status-chip 기능을 pop-status-bar라는 독립 컴포넌트로 분리하여 재사용성과 설정 유연성을 높인다. 상태 칩 클릭 시 카운트가 왜곡되던 순환 의존 문제를 해결한다. [pop-status-bar 신규 컴포넌트] - types.ts: StatusBarConfig, StatusChipOption, hiddenMessage 등 타입 정의 - PopStatusBarComponent: all_rows 구독 + 카운트 집계 + filter_value 발행 _source: "status-bar" 마커로 자신의 필터를 식별 hideUntilSubFilter: 하위 필터 선택 전 칩 숨김 + 설정 가능 안내 문구 - PopStatusBarConfig: 설정 패널 (DB 자동 채우기, 고유값 클릭 추가, 숨김 문구 설정, 하위 필터 가상 컬럼 안내) - index.tsx: 레지스트리 등록, connectionMeta(filter_value/all_rows/set_value) [카운트 순환 문제 수정] - PopCardListV2Component: externalFilters에 _source 필드 저장 all_rows 발행 시 status-bar 소스 필터를 제외한 rowsForStatusCount 계산 상태 칩 클릭해도 전체 카운트가 유지됨 [pop-search에서 status-chip 제거] - PopSearchComponent: StatusChipInput, allRows 구독, autoSubStatusColumn 제거 - PopSearchConfig: StatusChipDetailSettings 제거, 분리 안내 메시지로 대체 - index.tsx: receivable에서 all_rows 제거 - types.ts: StatusChipStyle, StatusChipConfig에 @deprecated 주석 추가 [설정 UX 개선] - "전체 칩 자동 추가" → "전체 보기 칩 표시" + 설명 문구 추가 - hiddenMessage: 숨김 상태 안내 문구 설정 가능 (하드코딩 제거) - useSubCount 활성 시 가상 컬럼 안내 경고 표시
SeongHyun Kim
2026-03-11 16:35:49 +09:00
12ccb85308
feat(pop): 공정 상태 자동 계산 + 하위 필터 연동 + 타임라인 연동 상태배지 공정 필터 선택 시 상태 뱃지/카운트/버튼이 공정 상태 기준으로 동작하도록 파생 상태 자동 계산, 하위 필터 __subStatus__ 주입, 접수 버튼 공정 행 특정 로직을 구현한다. [파생 상태 자동 계산] - types.ts: StatusValueMapping.isDerived 필드 추가 isDerived=true면 DB에 없는 상태로, 이전 공정 완료 시 자동 변환 - PopCardListV2Component: injectProcessFlow에 derivedRules 기반 변환 로직 같은 semantic의 원본 상태를 자동 추론 (waiting → acceptable) - TimelineProcessStep에 processId, rawData 필드 추가 [하위 필터 __subStatus__ 주입] - PopCardListV2Component: filteredRows를 2단계로 분리 1단계: 하위 테이블(work_order_process) 필터 → 매칭 공정의 상태를 VIRTUAL_SUB_STATUS/SEMANTIC/PROCESS/SEQ 가상 컬럼으로 주입 2단계: 메인 필터에서 status 컬럼을 __subStatus__로 자동 대체 - cell-renderers: StatusBadgeCell/ActionButtonsCell이 __subStatus__ 우선 참조 하드코딩된 접수가능 판별 로직(isAcceptable) 제거 → 설정 기반으로 전환 - all_rows 발행: { rows, subStatusColumn } envelope 구조로 메타 포함 [타임라인 강조(isCurrent) 개선] - "기준" 상태(isDerived) 기반 강조 + 공정 필터 시 매칭 공정 강조 - 폴백: active → pending 순서로 자동 결정 [접수 버튼 공정 행 특정] - cell-renderers: ActionButtonsCell에서 현재 공정의 processId를 __processId로 전달 - PopCardListV2Component: onActionButtonClick에서 __processId로 공정 행 UPDATE [상태배지 타임라인 연동] - PopCardListV2Config: StatusMappingEditor에 "타임라인 연동" 버튼 추가 같은 카드의 타임라인 statusMappings에서 값/라벨/색상/컬럼 자동 가져옴 [타임라인 설정 UI] - PopCardListV2Config: StatusMappingsEditor에 "기준" 라디오 버튼 추가 하나만 선택 가능, 재클릭 시 해제 [연결 탭 하위 테이블 필터 설정] - ConnectionEditor: isSubTable 체크박스 + targetColumn/filterMode 설정 UI - pop-layout.ts: filterConfig.isSubTable 필드 추가 [status-chip 하위 필터 자동 전환] - PopSearchComponent: 카드가 전달한 subStatusColumn 자동 감지 useSubCount 활성 시 집계/필터 컬럼 자동 전환 - PopSearchConfig: useSubCount 체크박스 설정 UI - types.ts: StatusChipConfig.useSubCount 필드 추가 [디자이너 라벨] - ComponentEditorPanel: comp.label || comp.id 패턴으로 통일
SeongHyun Kim
2026-03-11 12:07:11 +09:00
ce4aefe12e
feat: 리포트 디자이너 최종 수정
shin
2026-03-11 12:03:53 +09:00
58e958829c
feat: update color handling for dark mode compatibility
DDD1542
2026-03-10 21:16:01 +09:00
c17dd86859
feat(pop): pop-search status-chip 입력 타입 추가 + all_rows 이벤트 연동 pop-search 컴포넌트에 status-chip 입력 타입을 추가하여 연결된 카드의 전체 데이터를 구독하고 상태별 건수를 집계/표시한다. 칩 클릭 시 filter_value를 발행하여 카드 목록을 필터링한다. [status-chip 입력 타입] - types.ts: StatusChipStyle, StatusChipConfig, STATUS_CHIP_STYLE_LABELS - PopSearchComponent: StatusChipInput 컴포넌트 (allRows 구독 + 건수 집계) - PopSearchConfig: StatusChipDetailSettings 설정 패널 (칩 옵션/스타일) - index.tsx: receivable에 all_rows 이벤트 등록 [all_rows 이벤트] - pop-card-list-v2: 데이터 로드 시 all_rows publish + sendable 등록 - pop-card-list: 데이터 로드 시 all_rows publish + sendable 등록 - useConnectionResolver: all_rows 타입 자동 매칭 로직 추가 [pop-card-list-v2 개선] - 하위 테이블 필터 적용 시 __subStatus__ 가상 컬럼 주입 - externalFilters에 하위 테이블 조건 분리 처리
SeongHyun Kim
2026-03-10 18:51:22 +09:00
ed3707a681
refactor(pop): 타임라인 라벨 범용화 + 상태 값 매핑 동적 배열 전환 설정 패널의 도메인 특화 라벨("공정")을 범용 라벨("하위 데이터/표시명")로 교체하고, 상태 값 매핑을 고정 4키 객체에서 동적 배열(statusMappings)로 전환하여 임의 개수의 워크플로우 상태를 지원한다. [라벨 범용화] - "공정 데이터 소스" → "하위 데이터 소스" - "공정 테이블" → "하위 테이블" - "공정명" → "표시명" - "현재 공정 강조" → "현재 항목 강조" - "전체 공정 모달" → "전체 목록 모달" - cell-renderers 내 "공정" 텍스트 전부 범용 교체 [상태 값 매핑 동적 배열] - types.ts: statusValues(고정 4키) → statusMappings(StatusValueMapping[]) TimelineStatusSemantic("pending"|"active"|"done"), StatusValueMapping 타입 추가 TimelineProcessStep에 semantic? 필드 추가 - PopCardListV2Config: StatusMappingsEditor 컴포넌트 신규 (행 추가/삭제 + 시맨틱 Select + 기본값 적용 버튼) - PopCardListV2Component: resolveStatusMappings() 레거시 자동 변환 함수 injectProcessFlow 동적 맵 기반 정규화로 전환 - cell-renderers: TIMELINE_STATUS_STYLES → TIMELINE_SEMANTIC_STYLES getTimelineStyle() + LEGACY_STATUS_TO_SEMANTIC 레거시 호환 completedCount/statusLabel/isAcceptable 모두 semantic 기반으로 전환
SeongHyun Kim
2026-03-10 17:33:25 +09:00
62b0564619
Merge branch 'main' into ycshin-node
syc0123
2026-03-10 17:04:18 +09:00
599b5a4426
feat(pop): pop-card-list-v2 슬롯 기반 카드 컴포넌트 신규 + 타임라인 범용화 + 액션 인라인 설정 CSS Grid 기반 슬롯 구조의 pop-card-list-v2 컴포넌트를 추가한다. 기존 pop-card-list의 데이터 로딩/필터링/장바구니 로직을 재활용하되, 카드 내부는 12종 셀 타입(text/field/image/badge/button/number-input/ cart-button/package-summary/status-badge/timeline/action-buttons/ footer-status)의 조합으로 자유롭게 구성할 수 있다. [신규 컴포넌트: pop-card-list-v2] - PopCardListV2Component: 런타임 렌더링 (데이터 조회 + CSS Grid 카드) - PopCardListV2Config: 3탭 설정 패널 (데이터/카드 디자인/동작) - PopCardListV2Preview: 디자이너 미리보기 - cell-renderers: 셀 타입별 독립 렌더러 12종 - migrate: v1 -> v2 설정 마이그레이션 함수 - index: PopComponentRegistry 자동 등록 [타임라인 데이터 소스 범용화] - TimelineDataSource 인터페이스로 공정 테이블/FK/컬럼/상태값 매핑 설정 - 하드코딩(work_orders+work_order_process) 제거 -> 설정 기반 동적 조회 - injectProcessFlow: 설정 기반 공정 데이터 조회 + __processFlow__ 가상 컬럼 주입 - 상태값 정규화(DB값 -> waiting/accepted/in_progress/completed) [액션 버튼 인라인 설정] - actionRules 내 updates 배열로 동작 정의 (별도 DB 테이블 불필요) - execute-action API 재활용 (targetTable/column/valueType) - 백엔드 __CURRENT_USER__/__CURRENT_TIME__ 특수값 치환 [디자이너 통합] - PopComponentType에 "pop-card-list-v2" 추가 - ComponentEditorPanel/ComponentPalette/PopRenderer 등록 - PopDesigner loadLayout: components 존재 확인 null 체크 추가 [기타] - .gitignore: .gradle/ 추가
SeongHyun Kim
2026-03-10 16:56:14 +09:00
8c0489e954
Merge pull request 'jskim-node' (#410) from jskim-node into main
kjs
2026-03-10 16:34:13 +09:00