web: hide the L2 delete button for the CPU entry and drop a deleted row

The firmware now refuses to delete the switch's own entry, so the
button on the CPU row can only fail; leave it out. When a delete
succeeds, remove the entry from the cached table and repaint instead
of leaving the stale row until the next refresh.
This commit is contained in:
bloqaudio committed 2026-09-03 14:33:07 -05:00
1 parent 1c9bf10b87
commit f0e9953081
1 file changed
+13 -4
+13 -4
View File
@@ -52,8 +52,10 @@ function delL2(idx) {
var xhttp = new XMLHttpRequest(); var xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function() { xhttp.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200) { if (this.readyState == 4 && this.status == 200) {
var s = JSON.parse(xhttp.responseText); if (JSON.parse(xhttp.responseText).result == 1) {
console.log("Entry deletion result: ", s.result); l2All = l2All.filter(function(e) { return e.idx != idx; });
renderL2();
}
} }
}; };
xhttp.open("GET", "/l2_del.json?idx=" + idx, true); xhttp.open("GET", "/l2_del.json?idx=" + idx, true);
@@ -116,6 +118,13 @@ function fillL2(s)
renderL2(); renderL2();
} }
function delL2Button(e)
{
if (e.port == 'CPU')
return '';
return '<button type="button" onclick="delL2(' + e.idx + ');">' + t('l2_delete') + '</button>';
}
function paintL2(tbl, s) function paintL2(tbl, s)
{ {
console.log("L2: ", JSON.stringify(s)); console.log("L2: ", JSON.stringify(s));
@@ -127,14 +136,14 @@ function paintL2(tbl, s)
tbl.rows[i+1].cells[1].innerHTML = `${e.mac}`; tbl.rows[i+1].cells[1].innerHTML = `${e.mac}`;
tbl.rows[i+1].cells[2].innerHTML = `${e.vlan}`; tbl.rows[i+1].cells[2].innerHTML = `${e.vlan}`;
tbl.rows[i+1].cells[3].innerHTML = `${e.type}`; tbl.rows[i+1].cells[3].innerHTML = `${e.type}`;
tbl.rows[i+1].cells[4].innerHTML = '<button type="button" onclick="delL2(' + e.idx + ');">' + t('l2_delete') + '</button>'; tbl.rows[i+1].cells[4].innerHTML = delL2Button(e);
} else { } else {
const tr = tbl.insertRow(); const tr = tbl.insertRow();
let td = tr.insertCell(); td.innerHTML = `${e.port}`; let td = tr.insertCell(); td.innerHTML = `${e.port}`;
td = tr.insertCell(); td.innerHTML = `${e.mac}`; td = tr.insertCell(); td.innerHTML = `${e.mac}`;
td = tr.insertCell(); td.innerHTML = `${e.vlan}`; td = tr.insertCell(); td.innerHTML = `${e.vlan}`;
td = tr.insertCell(); td.innerHTML = `${e.type}`; td = tr.insertCell(); td.innerHTML = `${e.type}`;
td = tr.insertCell(); td.innerHTML = '<button type="button" onclick="delL2(' + e.idx + ');">' + t('l2_delete') + '</button>'; td = tr.insertCell(); td.innerHTML = delL2Button(e);
} }
} }
for (let i = tbl.rows.length - 1; i > s.length; i--) for (let i = tbl.rows.length - 1; i > s.length; i--)