UPDATE: LOCATION AND KM JUMPING DONE

This commit is contained in:
wayanrivan
2026-08-05 08:42:33 +07:00
parent ff47f3f932
commit 85279d4616
2 changed files with 813 additions and 0 deletions

View File

@ -306,6 +306,48 @@
return `Site ${site.address}, Timor-Leste`;
}
// ================================
// NORMALISASI KONTINUITAS TRIP // >>> ADDED
// ================================
// Menyamakan start (lokasi & odometer) suatu trip dengan finish trip
// sebelumnya (untuk kendaraan yang sama), jika keduanya tidak match.
// Timestamp 'start' TIDAK diubah karena itu waktu kejadian sebenarnya —
// yang disamakan hanya titik lokasi & odometer supaya laporan terlihat
// kontinu (finish trip N == start trip N+1).
function normalizeTripContinuity(rows) { // >>> ADDED
if (!Array.isArray(rows) || rows.length === 0) return rows;
// Group per kendaraan (pakai field 'id' = vhc_id)
const groups = {};
rows.forEach(row => {
if (!groups[row.id]) groups[row.id] = [];
groups[row.id].push(row);
});
Object.values(groups).forEach(groupRows => {
// Urutkan berdasarkan trip_id (fallback ke start time) supaya urutan
// kronologis benar sebelum membandingkan prev/curr.
groupRows.sort((a, b) => (a.trip_id ?? a.start) - (b.trip_id ?? b.start));
for (let i = 1; i < groupRows.length; i++) {
const prev = groupRows[i - 1];
const curr = groupRows[i];
const locMismatch = (prev.finish_lat_long || '').trim() !== (curr.start_lat_long || '')
.trim();
const kmMismatch = Number(prev.finishMileage) !== Number(curr.startMileage);
if (locMismatch || kmMismatch) {
curr.start_lat_long = prev.finish_lat_long;
curr.startLoc = prev.finishLoc;
curr.startMileage = prev.finishMileage;
}
}
});
return rows;
} // >>> ADDED (end normalizeTripContinuity)
// ================================
// REVERSE GEOCODING (Nominatim) - fallback ketika startLoc/finishLoc kosong
// ================================
@ -454,6 +496,13 @@
`,
type: 'GET',
success: function(json) {
// >>> ADDED: normalisasi kontinuitas start/finish antar trip
// (per kendaraan) SEBELUM data dirender ke tabel.
if (json && Array.isArray(json.data)) {
json.data = normalizeTripContinuity(json.data);
}
// >>> END ADDED
// Tampilkan tabel DULUAN dengan semua data apa adanya
// (baris yang startLoc/finishLoc kosong akan muncul
// sebagai placeholder "Load for location...").