From 832718872248e03e5e462dbba003cdefffcfb758 Mon Sep 17 00:00:00 2001 From: cerenX9 Date: Fri, 24 Jul 2026 15:51:06 +0300 Subject: [PATCH] Implement OSRM route matching and fix undefined strings --- .../static/src/js/dashboard.js | 42 ++++++++++++++++--- .../views/dashboard_template.xml | 2 +- 2 files changed, 38 insertions(+), 6 deletions(-) diff --git a/addons/mymach_fleet_intelligence/static/src/js/dashboard.js b/addons/mymach_fleet_intelligence/static/src/js/dashboard.js index ce92f5f..45aa822 100644 --- a/addons/mymach_fleet_intelligence/static/src/js/dashboard.js +++ b/addons/mymach_fleet_intelligence/static/src/js/dashboard.js @@ -188,6 +188,38 @@ if (greenPts.length > 0) { var polyGreen = L.polyline(greenPts, { color: '#10b981', weight: 8, opacity: 0.95, lineCap: 'round', lineJoin: 'round' }).addTo(map); activePolylines.push(polyGreen); + + // OSRM Map Matching (Pürüzsüz Rota Çizimi) + if (greenPts.length >= 2) { + // Sadece son 80 noktayı al ki OSRM URL limiti aşılmasın + var validPts = greenPts.length > 80 ? greenPts.slice(-80) : greenPts; + var coords = validPts.map(function(p) { return p[1] + ',' + p[0]; }); + var osrmUrl = 'https://router.project-osrm.org/route/v1/driving/' + coords.join(';') + '?overview=full&geometries=geojson'; + + fetch(osrmUrl) + .then(function(res) { return res.json(); }) + .then(function(data) { + if (data && data.routes && data.routes.length > 0) { + // Ham (kırık) çizgiyi haritadan ve diziden kaldır + map.removeLayer(polyGreen); + var index = activePolylines.indexOf(polyGreen); + if (index > -1) activePolylines.splice(index, 1); + + // OSRM'den gelen pürüzsüz rotayı GeoJSON olarak çiz + var snappedPoly = L.geoJSON(data.routes[0].geometry, { + style: { color: '#10b981', weight: 8, opacity: 0.95, lineCap: 'round', lineJoin: 'round' } + }).addTo(map); + activePolylines.push(snappedPoly); + + // Yeni çizilen pürüzsüz rotaya göre kamerayı odakla + var group = new L.featureGroup(activePolylines); + map.fitBounds(group.getBounds(), { padding: [50, 50] }); + } + }) + .catch(function(err) { + console.log('OSRM Yönlendirme Hatası, ham çizgi bırakıldı:', err); + }); + } } // 3. Kırmızı 1 km+ Sapma Çizgisi @@ -224,8 +256,8 @@ var badgeBorder = vehicle.is_violation ? '#ef4444' : (vehicle.is_manager_approved ? '#38bdf8' : '#10b981'); var badgeText = vehicle.is_violation ? '#ef4444' : (vehicle.is_manager_approved ? '#38bdf8' : '#10b981'); var badgeTitle = vehicle.is_violation - ? vehicle.badge_violation - : (vehicle.is_manager_approved ? vehicle.badge_approved : vehicle.badge_ok); + ? (vehicle.badge_violation || 'KURAL İHLALİ') + : (vehicle.is_manager_approved ? (vehicle.badge_approved || 'YÖNETİCİ ONAYLI') : (vehicle.badge_ok || 'GÜVENLİ SÜRÜŞ')); overlayEl.style.display = 'block'; overlayEl.innerHTML = @@ -235,7 +267,7 @@ '' + vehicle.license_plate + ' (' + vehicle.name + ')' + '' + '' + - vehicle.label_score + ' ' + vehicle.score + + (vehicle.label_score || 'Puan:') + ' ' + (vehicle.score || 100) + '' + '' + '
' + @@ -260,7 +292,7 @@ '
' + '
' + 'Rota Sapma Durumu:' + - '' + vehicle.deviation_label + '' + + '' + (vehicle.deviation_label || 'Rotada İlerliyor') + '' + '
' + '
' + 'Şirket Politikası:' + @@ -312,7 +344,7 @@ : (v.is_manager_approved ? 'background: rgba(56, 189, 248, 0.2); color: #38bdf8; border: 1px solid rgba(56, 189, 248, 0.4);' : 'background: rgba(16, 185, 129, 0.2); color: #10b981; border: 1px solid rgba(16, 185, 129, 0.4);'); - var statusLabel = isRev ? (v.badge_violation) : (v.is_manager_approved ? v.badge_approved : v.badge_ok); + var statusLabel = isRev ? (v.badge_violation || 'İHLAL') : (v.is_manager_approved ? (v.badge_approved || 'ONAYLI') : (v.badge_ok || 'GÜVENLİ')); tr.innerHTML = '' + diff --git a/addons/mymach_fleet_intelligence/views/dashboard_template.xml b/addons/mymach_fleet_intelligence/views/dashboard_template.xml index df146bf..e49c7b2 100644 --- a/addons/mymach_fleet_intelligence/views/dashboard_template.xml +++ b/addons/mymach_fleet_intelligence/views/dashboard_template.xml @@ -270,7 +270,7 @@ style="display: none;"/> - +