import { state } from '../../core/state'; import { openDomainModal } from '../../components/Modal/DomainModal'; import { formatInline } from '../../core/utils'; import { ASSET_SCHEMA } from '../../core/schema'; import { SortState } from '../../core/tableHandler'; import { createListView } from './ListFactory'; // 정렬 상태를 모듈 수준에서 관리하여 화면 갱신 시에도 유지되도록 함 let persistentSortState: SortState = { key: '', direction: 'asc' }; export function renderDomainList(container: HTMLElement) { createListView(container, { title: '도메인', dataSource: () => state.masterData.domain || [], searchKeys: ['DOMAIN_ADDR', 'ASSET_PURPOSE', 'PRODUCT_NAME'], persistentSortState, emptyMessage: '등록된 도메인 정보가 없습니다.', filterOptions: { keywordLabel: `통합 검색 (${ASSET_SCHEMA.DOMAIN_ADDR.ui}/${ASSET_SCHEMA.PRODUCT_NAME.ui})`, showCorp: true, showDept: true }, onRowClick: (item) => openDomainModal(item), columns: [ { header: ASSET_SCHEMA.DOMAIN_ADDR.ui, sortKey: ASSET_SCHEMA.DOMAIN_ADDR.key, align: 'left', render: a => a[ASSET_SCHEMA.DOMAIN_ADDR.key] || '' }, { header: ASSET_SCHEMA.ASSET_PURPOSE.ui, sortKey: ASSET_SCHEMA.ASSET_PURPOSE.key, align: 'left', render: a => a[ASSET_SCHEMA.ASSET_PURPOSE.key] || '' }, { header: ASSET_SCHEMA.ASSET_TYPE.ui, sortKey: ASSET_SCHEMA.ASSET_TYPE.key, align: 'center', render: a => `${a[ASSET_SCHEMA.ASSET_TYPE.key] || '-'}` }, { header: ASSET_SCHEMA.PURCHASE_CORP.ui, sortKey: ASSET_SCHEMA.PURCHASE_CORP.key, align: 'center', render: a => a[ASSET_SCHEMA.PURCHASE_CORP.key] || '' }, { header: ASSET_SCHEMA.EXPIRED_DATE.ui, sortKey: ASSET_SCHEMA.EXPIRED_DATE.key, align: 'center', render: a => a[ASSET_SCHEMA.EXPIRED_DATE.key] || '' }, { header: ASSET_SCHEMA.MEMO.ui, sortKey: ASSET_SCHEMA.MEMO.key, className: 'col-memo', render: a => formatInline(a[ASSET_SCHEMA.MEMO.key] || '-') } ] }); }