Remove checkbox column and batch-delete from trip history

This commit is contained in:
Mathieu Moran
2026-08-11 15:05:40 -04:00
parent 23ac6c218b
commit 2ee4862edd
2 changed files with 1 additions and 28 deletions
-4
View File
@@ -16,9 +16,6 @@
<div class="card shadow-sm">
<div class="card-header py-2 d-flex justify-content-between align-items-center">
<h6 class="text-primary fw-bold m-0">Recorded trips</h6>
<button id="delete-selected-btn" class="btn btn-sm btn-outline-danger" type="button" hidden title="Delete selected trips">
<i class="fas fa-trash fa-fw"></i> Delete selected
</button>
</div>
<div class="card-body p-0">
<div id="trip-loading" class="text-center text-muted py-4">
@@ -42,7 +39,6 @@
true
) }}
<script>document.getElementById('trip-list').dataset.deleteUrl = '/api/v1/portal/trip/';</script>
<script>document.getElementById('trip-list').dataset.batchDeleteUrl = '/api/v1/portal/trips/delete';</script>
</div>
</div>
</div>
+1 -24
View File
@@ -199,26 +199,6 @@
var tl = document.getElementById("trip-list");
var del = tl && tl.dataset.deletable === "1";
var dUrl = (tl && tl.dataset.deleteUrl) || "/api/trip/";
var bUrl = tl && tl.dataset.batchDeleteUrl;
var btD = document.getElementById("delete-selected-btn");
function cIds() { return Array.from(body.querySelectorAll("input.trip-checkbox:checked")).map(function (c) { return parseInt(c.value); }); }
function upBt() { if (!btD) return; var n = cIds().length; btD.hidden = !n; btD.textContent = "Delete selected (" + n + ")"; }
function slAll() {
var cbs = body.querySelectorAll("input.trip-checkbox");
var all = cbs.length && Array.from(cbs).every(function (c) { return c.checked; });
cbs.forEach(function (c) { c.checked = !all; }); upBt();
}
async function delSel() {
var ids = cIds(); if (!ids.length || !bUrl) return;
if (!(await window.confirmDelete("Delete " + ids.length + " trip(s)? Raw GPS data is kept."))) return;
try {
var r = await fetch(bUrl, {method: "POST", headers: {"Content-Type": "application/json"}, body: JSON.stringify({ids: ids})});
if (!r.ok) throw new Error("Delete failed");
ids.forEach(function (id) { var row = body.querySelector('tr[data-trip-id="' + id + '"]'); if (row) row.remove(); });
upBt();
} catch (e) { showErr(e.message); }
}
if (btD) btD.addEventListener("click", delSel);
function render(tt) {
body.replaceChildren();
@@ -228,12 +208,9 @@
row.dataset.duration = t.duration_seconds; row.dataset.maxSpeed = t.max_speed_kmh;
row.dataset.tripId = t.id; row.style.cursor = "pointer";
var db = del ? '<button class="btn btn-sm btn-outline-danger ms-1" type="button" data-delete-trip-id="' + t.id + '" title="Delete"><i class="fas fa-trash fa-fw"></i></button>' : "";
var cb = bUrl ? '<td class="text-center" onclick="event.stopPropagation()"><input type="checkbox" class="trip-checkbox form-check-input" value="' + t.id + '"></td>' : "";
row.innerHTML = cb + "<td class=\"text-muted small text-end pe-1\" style=\"width:1%\">#" + t.id + "</td><td>" + fT(t.start_datetime) + "</td><td>" + fK(t.distance_km) + "</td><td>" + fD(t.duration_seconds) + "</td><td>" + fS(t.max_speed_kmh) + "</td><td class=\"text-muted small\">" + (t.odo_start_km != null ? t.odo_start_km.toFixed(0) + " \u2192 " + t.odo_end_km.toFixed(0) + " km" : "\u2014") + "</td><td class=\"text-end text-nowrap d-none d-sm-table-cell\">" + db + "</td>";
row.innerHTML = "<td class=\"text-muted small text-end pe-1\" style=\"width:1%\">#" + t.id + "</td><td>" + fT(t.start_datetime) + "</td><td>" + fK(t.distance_km) + "</td><td>" + fD(t.duration_seconds) + "</td><td>" + fS(t.max_speed_kmh) + "</td><td class=\"text-muted small\">" + (t.odo_start_km != null ? t.odo_start_km.toFixed(0) + " \u2192 " + t.odo_end_km.toFixed(0) + " km" : "\u2014") + "</td><td class=\"text-end text-nowrap d-none d-sm-table-cell\">" + db + "</td>";
body.appendChild(row);
});
body.querySelectorAll("input.trip-checkbox").forEach(function (c) { c.addEventListener("change", upBt); });
upBt();
}
body.addEventListener("click", function (e) {
if (del) {