import { state } from '../../core/state'; import { openPartsMasterModal } from '../../components/Modal/PartsMasterModal'; import { formatInline } from '../../core/utils'; import { createListView } from './ListFactory'; export function renderPartsMasterList(container: HTMLElement) { createListView(container, { title: '부품 마스터', dataSource: () => state.masterData.partsMaster || [], searchKeys: ['component_name', 'category', 'score_tier'], filterOptions: { keywordLabel: '부품명 / 등급 검색', showLoc: false, showDept: false, showType: false }, onRowClick: (component) => openPartsMasterModal(component, 'view'), columns: [ { header: 'ID', sortKey: 'id', align: 'center', width: '5%', render: c => c.id.toString() }, { header: '분류', sortKey: 'category', align: 'center', width: '15%', render: c => { let badgeClass = 'badge-primary'; if (c.category === 'CPU') badgeClass = 'b-primary'; else if (c.category === 'GPU') badgeClass = 'b-purple'; else if (c.category === 'RAM') badgeClass = 'b-green'; return `${c.category}`; } }, { header: '부품 표준 명칭', sortKey: 'component_name', render: c => formatInline(c.component_name || '-') }, { header: '성능 등급', sortKey: 'score_tier', align: 'center', width: '15%', render: c => c.score_tier || '-' }, { header: '감점 점수', sortKey: 'deduction', align: 'center', width: '15%', render: c => { const score = c.deduction || 0; let color = '#3b82f6'; // blue if (score >= 20) color = '#ef4444'; // red else if (score >= 10) color = '#f59e0b'; // orange return `-${score}점`; } } ] }); }