修改为直接与blackbox通信

This commit is contained in:
CN-JS-HuiBai
2026-04-06 00:24:33 +08:00
parent d4d2927963
commit e8b60ce28b
6 changed files with 167 additions and 36 deletions

View File

@@ -33,6 +33,7 @@
modalClose: document.getElementById('modalClose'),
sourceName: document.getElementById('sourceName'),
sourceUrl: document.getElementById('sourceUrl'),
sourceType: document.getElementById('sourceType'),
sourceDesc: document.getElementById('sourceDesc'),
btnTest: document.getElementById('btnTest'),
btnAdd: document.getElementById('btnAdd'),
@@ -185,11 +186,17 @@
dom.globeCard.classList.toggle('expanded');
dom.btnExpandGlobe.classList.toggle('active');
if (myMap2D) {
// Multiple resizes to handle animation phases and final layout
myMap2D.resize();
setTimeout(() => myMap2D.resize(), 100);
setTimeout(() => myMap2D.resize(), 300);
setTimeout(() => myMap2D.resize(), 600); // Final resize after animation
// Immediately hide and then show map or just resize?
// ECharts can sometimes glitch when position:fixed + transform happens.
// Since we removed transform, resize should be smoother.
myMap2D.resize();
let resizeCount = 0;
const timer = setInterval(() => {
myMap2D.resize();
resizeCount++;
if (resizeCount >= 5) clearInterval(timer);
}, 100);
}
});
}
@@ -1716,7 +1723,7 @@
${source.status === 'online' ? '在线' : '离线'}
</span>
<span class="source-type-badge ${source.is_server_source ? 'type-server' : 'type-other'}" title="${source.is_server_source ? '该数据源用于展示服务器列表和指标' : '该数据源仅用于特定目的(如 Blackbox 延迟),不参与服务器列表统计'}">
${source.is_server_source ? '服务器看板' : '独立数据源'}
${source.type === 'blackbox' ? 'Blackbox' : (source.is_server_source ? '服务器看板' : '独立数据源')}
</span>
</div>
<div class="source-item-url">${escapeHtml(source.url)}</div>
@@ -1737,6 +1744,8 @@
return;
}
const type = dom.sourceType.value;
dom.btnTest.textContent = '测试中...';
dom.btnTest.disabled = true;
@@ -1744,7 +1753,7 @@
const response = await fetch('/api/sources/test', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({ url })
body: JSON.stringify({ url, type })
});
const data = await response.json();
if (data.status === 'ok') {
@@ -1775,6 +1784,7 @@
const name = dom.sourceName.value.trim();
const url = dom.sourceUrl.value.trim();
const type = dom.sourceType.value;
const description = dom.sourceDesc.value.trim();
const is_server_source = dom.isServerSource.checked;
@@ -1790,7 +1800,7 @@
const response = await fetch('/api/sources', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({ name, url, description, is_server_source })
body: JSON.stringify({ name, url, description, is_server_source, type })
});
if (response.ok) {