(reliability)
| 866 | } |
| 867 | |
| 868 | function reliabilityBadge(reliability) { |
| 869 | if (!reliability) return ''; |
| 870 | const cfg = { |
| 871 | healthy: { label: 'Stable', cls: 'bg-emerald-100 text-emerald-800 dark:bg-emerald-900/40 dark:text-emerald-300' }, |
| 872 | partial: { label: 'Partial', cls: 'bg-amber-100 text-amber-800 dark:bg-amber-900/40 dark:text-amber-300' }, |
| 873 | failed: { label: 'Failed', cls: 'bg-red-100 text-red-800 dark:bg-red-900/40 dark:text-red-300' }, |
| 874 | 'no-data': { label: 'No data', cls: 'bg-slate-100 text-slate-600 dark:bg-slate-700 dark:text-slate-400' } |
| 875 | }; |
| 876 | const c = cfg[reliability.status] || cfg['no-data']; |
| 877 | const ratio = reliability.totalQueries ? ` ${reliability.successCount}/${reliability.totalQueries}` : ''; |
| 878 | return `<span class="inline-flex items-center px-1.5 py-0.5 rounded text-[10px] font-semibold ${c.cls}" title="${escapeHTML(reliability.message || '')}">${c.label}${ratio}</span>`; |
| 879 | } |
| 880 | |
| 881 | function copyServerDetails(btn, text) { |
| 882 | navigator.clipboard.writeText(text).then(() => { |
no test coverage detected