允许编辑配置

This commit is contained in:
CN-JS-HuiBai
2026-04-06 00:31:05 +08:00
parent a35dac78f8
commit 542258a271
3 changed files with 60 additions and 8 deletions

View File

@@ -75,6 +75,7 @@
routeTargetInput: document.getElementById('routeTargetInput'),
btnAddRoute: document.getElementById('btnAddRoute'),
latencyRoutesList: document.getElementById('latencyRoutesList'),
btnCancelEditRoute: document.getElementById('btnCancelEditRoute'),
detailDiskTotal: document.getElementById('detailDiskTotal'),
// Server Details Modal
serverDetailModal: document.getElementById('serverDetailModal'),
@@ -131,6 +132,7 @@
}
let myMap2D = null;
let editingRouteId = null;
// ---- Initialize ----
function init() {
@@ -163,6 +165,10 @@
});
}
if (dom.btnCancelEditRoute) {
dom.btnCancelEditRoute.onclick = cancelEditRoute;
}
dom.settingsModal.addEventListener('click', (e) => {
if (e.target === dom.settingsModal) closeSettings();
});
@@ -1541,11 +1547,40 @@
<span>目标: ${escapeHtml(route.latency_target)}</span>
</div>
</div>
<button class="btn btn-delete" onclick="deleteLatencyRoute(${route.id})" style="padding: 4px 10px; font-size: 0.72rem;">删除</button>
<div class="route-actions" style="display: flex; gap: 8px;">
<button class="btn btn-test" onclick="editRoute(${route.id}, ${route.source_id}, '${escapeHtml(route.latency_source)}', '${escapeHtml(route.latency_dest)}', '${escapeHtml(route.latency_target)}')" style="padding: 4px 10px; font-size: 0.72rem;">编辑</button>
<button class="btn btn-delete" onclick="deleteLatencyRoute(${route.id})" style="padding: 4px 10px; font-size: 0.72rem;">删除</button>
</div>
</div>
`).join('');
}
window.editRoute = function(id, source_id, source, dest, target) {
editingRouteId = id;
dom.routeSourceSelect.value = source_id;
dom.routeSourceInput.value = source;
dom.routeDestInput.value = dest;
dom.routeTargetInput.value = target;
dom.btnAddRoute.textContent = '保存修改';
dom.btnCancelEditRoute.style.display = 'block';
// Select the tab just in case (though it's already there)
const tab = Array.from(dom.modalTabs).find(t => t.dataset.tab === 'routes');
if (tab) tab.click();
};
function cancelEditRoute() {
editingRouteId = null;
dom.routeSourceSelect.value = "";
dom.routeSourceInput.value = "";
dom.routeDestInput.value = "";
dom.routeTargetInput.value = "";
dom.btnAddRoute.textContent = '添加线路';
dom.btnCancelEditRoute.style.display = 'none';
}
async function addLatencyRoute() {
if (!user) {
showSiteMessage('请先登录及进行身份验证', 'error');
@@ -1563,21 +1598,24 @@
return;
}
const url = editingRouteId ? `/api/latency-routes/${editingRouteId}` : '/api/latency-routes';
const method = editingRouteId ? 'PUT' : 'POST';
try {
const response = await fetch('/api/latency-routes', {
method: 'POST',
const response = await fetch(url, {
method,
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({ source_id: parseInt(source_id), latency_source, latency_dest, latency_target })
});
if (response.ok) {
showSiteMessage('线路添加成功', 'success');
dom.routeSourceInput.value = '';
dom.routeDestInput.value = '';
dom.routeTargetInput.value = '';
showSiteMessage(editingRouteId ? '线路更新成功' : '线路添加成功', 'success');
cancelEditRoute();
loadLatencyRoutes();
fetchLatency();
} else {
const err = await response.json();
showSiteMessage(`操作失败: ${err.error}`, 'error');
if (response.status === 401) openLoginModal();
}
} catch (err) {