diff options
Diffstat (limited to 'androidApp/src/main/java/mx/trackermap/TrackerMap/android/details/reports/UnitReportsViewModel.kt')
-rw-r--r-- | androidApp/src/main/java/mx/trackermap/TrackerMap/android/details/reports/UnitReportsViewModel.kt | 20 |
1 files changed, 19 insertions, 1 deletions
diff --git a/androidApp/src/main/java/mx/trackermap/TrackerMap/android/details/reports/UnitReportsViewModel.kt b/androidApp/src/main/java/mx/trackermap/TrackerMap/android/details/reports/UnitReportsViewModel.kt index 7749b54..7d1e028 100644 --- a/androidApp/src/main/java/mx/trackermap/TrackerMap/android/details/reports/UnitReportsViewModel.kt +++ b/androidApp/src/main/java/mx/trackermap/TrackerMap/android/details/reports/UnitReportsViewModel.kt @@ -5,6 +5,8 @@ import kotlinx.coroutines.DelicateCoroutinesApi import kotlinx.coroutines.flow.collect import kotlinx.coroutines.launch import mx.trackermap.TrackerMap.client.models.EventInformation +import mx.trackermap.TrackerMap.client.models.Geofence +import mx.trackermap.TrackerMap.controllers.GeofencesController import mx.trackermap.TrackerMap.controllers.ReportController import mx.trackermap.TrackerMap.utils.ReportDates import org.koin.core.component.KoinComponent @@ -15,6 +17,7 @@ class UnitReportsViewModel( savedStateHandle: SavedStateHandle ) : ViewModel(), KoinComponent { + private val geofencesController: GeofencesController by inject() private val reportController: ReportController by inject() private var _deviceId = savedStateHandle.getLiveData("deviceId", 0) @@ -22,11 +25,13 @@ class UnitReportsViewModel( private val _reportPeriod: MutableLiveData<ReportDates.ReportPeriod> = savedStateHandle.getLiveData("reportPeriod", null) private val _report: MutableLiveData<ReportController.Report> = MutableLiveData() + private val _geofences: MutableLiveData<Array<Geofence>> = MutableLiveData(emptyArray()) val deviceId: LiveData<Int> get() = _deviceId val reportType: LiveData<ReportController.ReportType> get() = _reportType val reportPeriod: LiveData<ReportDates.ReportPeriod> get() = _reportPeriod val report: LiveData<ReportController.Report> get() = _report + val geofences: LiveData<Array<Geofence>> get() = _geofences init { viewModelScope.launch { @@ -38,6 +43,9 @@ class UnitReportsViewModel( viewModelScope.launch { setupReportObserver() } + viewModelScope.launch { + setupGeofenceObserver() + } } private suspend fun setupTypeObserver() { @@ -58,6 +66,12 @@ class UnitReportsViewModel( } } + private suspend fun setupGeofenceObserver() { + geofencesController.geofencesFlow.collect { + _geofences.value = it.values.toTypedArray() + } + } + fun setDeviceId (id: Int) { _deviceId.value = id } @@ -74,7 +88,11 @@ class UnitReportsViewModel( fetchReport(true) } - private fun fetchReport(xlsx: Boolean = false) { + fun clearReport() { + _report.value = null + } + + fun fetchReport(xlsx: Boolean = false) { if (_reportType.value == null || _reportPeriod.value == null) { return } |