diff options
Diffstat (limited to 'androidApp/src/main/java/mx/trackermap/TrackerMap/android/details/reports/UnitReportsFragment.kt')
-rw-r--r-- | androidApp/src/main/java/mx/trackermap/TrackerMap/android/details/reports/UnitReportsFragment.kt | 57 |
1 files changed, 43 insertions, 14 deletions
diff --git a/androidApp/src/main/java/mx/trackermap/TrackerMap/android/details/reports/UnitReportsFragment.kt b/androidApp/src/main/java/mx/trackermap/TrackerMap/android/details/reports/UnitReportsFragment.kt index 92a94b1..1f1bb15 100644 --- a/androidApp/src/main/java/mx/trackermap/TrackerMap/android/details/reports/UnitReportsFragment.kt +++ b/androidApp/src/main/java/mx/trackermap/TrackerMap/android/details/reports/UnitReportsFragment.kt @@ -24,6 +24,7 @@ import mx.trackermap.TrackerMap.android.details.UnitDetailsAdapter import mx.trackermap.TrackerMap.android.map.MapFragment import mx.trackermap.TrackerMap.android.shared.MarkerTransformations import mx.trackermap.TrackerMap.client.models.EventInformation +import mx.trackermap.TrackerMap.client.models.Geofence import mx.trackermap.TrackerMap.client.models.Position import mx.trackermap.TrackerMap.client.models.Stop import mx.trackermap.TrackerMap.controllers.ReportController @@ -162,6 +163,10 @@ class UnitReportsFragment : Fragment() { } ) } + + unitReportsViewModel.geofences.observe(viewLifecycleOwner) { geofences -> + display(geofences) + } } private fun removeObservers() { @@ -193,15 +198,22 @@ class UnitReportsFragment : Fragment() { } private fun display(positions: Array<Position>) { - Log.d("UnitReportsFragment", "Displaying positions: $positions") + if (reportsMapFragment.hasStarted) { + Log.d("UnitReportsFragment", "Displaying positions: $positions") - binding.eventsScroll.visibility = View.GONE - binding.reportsMapContainer.visibility = View.VISIBLE + binding.eventsScroll.visibility = View.GONE + binding.reportsMapContainer.visibility = View.VISIBLE - reportsMapFragment.display( - positions.mapNotNull(MarkerTransformations::positionToMarker).toTypedArray(), - isReport = true - ) + reportsMapFragment.display( + positions.mapNotNull(MarkerTransformations::positionToMarker).toTypedArray(), + isReport = true + ) + } else { + reportsMapFragment.setupCallbacks.clear() + reportsMapFragment.setupCallbacks.add { + display(positions) + } + } } private fun display(events: Array<EventInformation>) { @@ -271,15 +283,32 @@ class UnitReportsFragment : Fragment() { } private fun display(stops: Array<Stop>) { - Log.d("UnitReportsFragment", "Displaying stops: $stops") + if (reportsMapFragment.hasStarted) { + Log.d("UnitReportsFragment", "Displaying stops: $stops") - binding.eventsScroll.visibility = View.GONE - binding.reportsMapContainer.visibility = View.VISIBLE + binding.eventsScroll.visibility = View.GONE + binding.reportsMapContainer.visibility = View.VISIBLE - reportsMapFragment.display( - stops.mapNotNull(MarkerTransformations::stopToMarker).toTypedArray(), - isReport = true - ) + reportsMapFragment.display( + stops.mapNotNull(MarkerTransformations::stopToMarker).toTypedArray(), + isReport = true + ) + } else { + reportsMapFragment.setupCallbacks.add { + display(stops) + } + } + } + + private fun display(geofences: Array<Geofence>) { + if (reportsMapFragment.hasStarted) { + Log.d("UnitReportsFragment", "Displaying geofences: $geofences") + reportsMapFragment.displayGeofences(geofences) + } else { + reportsMapFragment.setupCallbacks.add { + display(geofences) + } + } } private fun loading() { |