()
| 6945 | } |
| 6946 | }); |
| 6947 | |
| 6948 | // Update label |
| 6949 | const label = document.getElementById('metadata-type-label'); |
| 6950 | const labels = { |
| 6951 | 'designer': 'Designers', |
| 6952 | 'parentModel': 'Parent Models', |
| 6953 | 'license': 'Licenses' |
| 6954 | }; |
| 6955 | if (label) { |
| 6956 | label.textContent = labels[currentMetadataType] || 'Metadata'; |
| 6957 | } |
| 6958 | } |
| 6959 | |
| 6960 | async function refreshMetadataList(type, searchTerm = '') { |
| 6961 | const metadataList = document.getElementById('metadata-editor-list'); |
| 6962 | metadataList.innerHTML = ''; |
| 6963 | |
| 6964 | try { |
| 6965 | // Always refresh metadata to ensure we have the latest data |
| 6966 | allMetadata = await window.electron.getAllMetadata(); |
| 6967 | |
| 6968 | // Filter metadata by type and search term |
| 6969 | let filteredMetadata = allMetadata.filter(item => item.type === type); |
| 6970 | |
| 6971 | // Deduplicate by name (case-insensitive) - keep the one with the highest model_count |
| 6972 | const metadataMap = new Map(); |
| 6973 | filteredMetadata.forEach(item => { |
| 6974 | const key = item.name.toLowerCase(); |
| 6975 | const existing = metadataMap.get(key); |
| 6976 | if (!existing || (item.model_count || 0) > (existing.model_count || 0)) { |
| 6977 | metadataMap.set(key, item); |
no test coverage detected