UPDATE: LOCATION AND KM JUMPING DONE
This commit is contained in:
@ -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...").
|
||||
|
||||
Reference in New Issue
Block a user