From 85279d4616f53aaee5032862a5eb0f72fca3b31f Mon Sep 17 00:00:00 2001 From: wayanrivan Date: Wed, 5 Aug 2026 08:42:33 +0700 Subject: [PATCH] UPDATE: LOCATION AND KM JUMPING DONE --- .../reports/old_vehicle_trips.blade.php | 764 ++++++++++++++++++ .../menu_v1/reports/vehicle_trips.blade.php | 49 ++ 2 files changed, 813 insertions(+) create mode 100644 resources/views/menu_v1/reports/old_vehicle_trips.blade.php diff --git a/resources/views/menu_v1/reports/old_vehicle_trips.blade.php b/resources/views/menu_v1/reports/old_vehicle_trips.blade.php new file mode 100644 index 0000000..abccf6c --- /dev/null +++ b/resources/views/menu_v1/reports/old_vehicle_trips.blade.php @@ -0,0 +1,764 @@ +@php + $user_role = Auth::user()->role; +@endphp + +@extends('app.app') + +@section('title') + Vehicles Trip Report +@endsection + +@section('customcss') + + +@endsection + +@section('content') +
+
+
+
+
+
+

Vehicle Trip Report

+
+ @if ($user_role == \App\Models\Users::ROLE_VENDOR || $user_role == \App\Models\Users::ROLE_ADMIN) + @can('vehicle.create') + + @endcan + + {{--
+ +
--}} + @endif +
+ +
+
+
+
+ +
+ +
+
+ + +
+
+ +
+
+ + +
+
+ +
+
+ + +
+
+ +
+
+ + +
+
+ +
+
+ + +
+
+ +
+ + +
+ +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
License Plate NumberDist. Cat.PoolNumber of TripTotal Mileage (km)Trip #StartFinishDurationStart (km)Finish (km)Distance (km)Fuel (L)Vehicle CategoryDetail
+
+
+
+
+ + + + +@endsection + +@section('customjs') + + + + + + + + + + + + + +@endsection diff --git a/resources/views/menu_v1/reports/vehicle_trips.blade.php b/resources/views/menu_v1/reports/vehicle_trips.blade.php index abccf6c..9819973 100644 --- a/resources/views/menu_v1/reports/vehicle_trips.blade.php +++ b/resources/views/menu_v1/reports/vehicle_trips.blade.php @@ -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...").