diff options
author | Iván Ávalos <avalos@disroot.org> | 2022-01-14 18:25:26 -0600 |
---|---|---|
committer | Iván Ávalos <avalos@disroot.org> | 2022-01-14 18:25:26 -0600 |
commit | 7c3e13114fd189c49e86b8d6c200ffb3c27bb498 (patch) | |
tree | 9024ba5e810b40c22eeb2065e3d22650aa51d54e /androidApp/src/main/java/mx/trackermap/TrackerMap/android/details/reports/UnitReportsFragment.kt | |
parent | e10c55888fede23b225dee03044f6953e997c28b (diff) | |
download | etbsa-trackermap-mobile-7c3e13114fd189c49e86b8d6c200ffb3c27bb498.tar.gz etbsa-trackermap-mobile-7c3e13114fd189c49e86b8d6c200ffb3c27bb498.tar.bz2 etbsa-trackermap-mobile-7c3e13114fd189c49e86b8d6c200ffb3c27bb498.zip |
Refactored reports code into ReportController.kt and added extra report periods
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 | 83 |
1 files changed, 44 insertions, 39 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 b67dd94..957c6a7 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 @@ -26,7 +26,9 @@ import mx.trackermap.TrackerMap.android.map.MarkerTransformations import mx.trackermap.TrackerMap.client.models.EventInformation import mx.trackermap.TrackerMap.client.models.Position import mx.trackermap.TrackerMap.client.models.Stop +import mx.trackermap.TrackerMap.controllers.ReportController import mx.trackermap.TrackerMap.utils.Formatter +import mx.trackermap.TrackerMap.utils.ReportDates import org.koin.androidx.viewmodel.ext.android.viewModel import java.lang.Exception import kotlin.math.max @@ -76,9 +78,9 @@ class UnitReportsFragment : Fragment() { binding.reportType.setOnPositionChangedListener { position -> unitReportsViewModel.setReportType( when (position) { - 0 -> UnitReportsViewModel.ReportType.POSITIONS - 1 -> UnitReportsViewModel.ReportType.EVENTS - else -> UnitReportsViewModel.ReportType.STOPS + 0 -> ReportController.ReportType.POSITIONS + 1 -> ReportController.ReportType.EVENTS + else -> ReportController.ReportType.STOPS } ) } @@ -88,8 +90,8 @@ class UnitReportsFragment : Fragment() { binding.exportButton.setOnClickListener { unitReportsViewModel.fetchReportXlsx() } - unitReportsViewModel.setReportPeriod(UnitReportsViewModel.ReportPeriod.DAY) - unitReportsViewModel.setReportType(UnitReportsViewModel.ReportType.POSITIONS) + unitReportsViewModel.setReportPeriod(ReportDates.ReportPeriod.TODAY) + unitReportsViewModel.setReportType(ReportController.ReportType.POSITIONS) } private fun setupObservers() { @@ -97,19 +99,22 @@ class UnitReportsFragment : Fragment() { Log.d("UnitReportsFragment", "Report available: $report") when (report) { - is UnitReportsViewModel.Report.PositionsReport -> { + is ReportController.Report.PositionsReport -> { display(report.positions) showMap(true) } - is UnitReportsViewModel.Report.EventsReport -> { + is ReportController.Report.EventsReport -> { display(report.events) showMap(false) } - is UnitReportsViewModel.Report.StopsReport -> { + is ReportController.Report.StopsReport -> { display(report.stops) showMap(true) } - is UnitReportsViewModel.Report.LoadingReport -> loading() + is ReportController.Report.XlsxReport -> { + downloadFile("report.xlsx") + } + is ReportController.Report.LoadingReport -> loading() } } @@ -121,21 +126,16 @@ class UnitReportsFragment : Fragment() { binding.periodButton.text = context?.getString( when (period) { - UnitReportsViewModel.ReportPeriod.DAY -> R.string.day_period - UnitReportsViewModel.ReportPeriod.WEEK -> R.string.week_period - UnitReportsViewModel.ReportPeriod.MONTH -> R.string.month_period + ReportDates.ReportPeriod.TODAY -> R.string.period_today + ReportDates.ReportPeriod.LAST_24 -> R.string.period_last_24 + ReportDates.ReportPeriod.YESTERDAY -> R.string.period_yesterday + ReportDates.ReportPeriod.THIS_WEEK -> R.string.period_this_week + ReportDates.ReportPeriod.LAST_7 -> R.string.period_last_7 + ReportDates.ReportPeriod.THIS_MONTH -> R.string.period_this_month + ReportDates.ReportPeriod.LAST_30 -> R.string.period_last_30 } ) } - - unitReportsViewModel.reportFile.observe(viewLifecycleOwner) { - downloadFile("report.xlsx") - } - - unitReportsViewModel.geofences.observe(viewLifecycleOwner) { geofences -> - Log.d("UnitReportsFragment", "Success $geofences") - reportsMapFragment.displayGeofences(geofences.values.toTypedArray()) - } } private fun showPeriodPopUp(view: View) { @@ -144,9 +144,14 @@ class UnitReportsFragment : Fragment() { popOver.setOnMenuItemClickListener { item -> unitReportsViewModel.setReportPeriod( when (item.itemId) { - R.id.dayOption -> UnitReportsViewModel.ReportPeriod.DAY - R.id.weekOption -> UnitReportsViewModel.ReportPeriod.WEEK - else -> UnitReportsViewModel.ReportPeriod.MONTH + R.id.optionToday -> ReportDates.ReportPeriod.TODAY + R.id.optionLast24 -> ReportDates.ReportPeriod.LAST_24 + R.id.optionYesterday -> ReportDates.ReportPeriod.YESTERDAY + R.id.optionWeek -> ReportDates.ReportPeriod.THIS_WEEK + R.id.optionLast7 -> ReportDates.ReportPeriod.LAST_7 + R.id.optionMonth -> ReportDates.ReportPeriod.THIS_MONTH + R.id.optionLast30 -> ReportDates.ReportPeriod.LAST_30 + else -> ReportDates.ReportPeriod.TODAY } ) true @@ -221,10 +226,8 @@ class UnitReportsFragment : Fragment() { else -> R.string.event_unknown }) } - event.event.geofenceId?.let { - val geofence = unitReportsViewModel.getGeofence(it) - Log.d("UnitReportsFragment", "Getting geofence $geofence") - geofenceText.text = geofence?.name + event.geofence?.let { + geofenceText.text = it.name } event.position?.let { addressText.text = it.address @@ -286,17 +289,19 @@ class UnitReportsFragment : Fragment() { private val createDocumentResult = registerForActivityResult(ActivityResultContracts.StartActivityForResult()) { if (it.resultCode == Activity.RESULT_OK) { - it?.data?.data?.also { uri -> - Log.d("UnitReportsFragment", "Downloading file into ${uri.path}") - val outputStream = context?.contentResolver?.openOutputStream(uri) - outputStream?.let { - try { - outputStream.write(unitReportsViewModel.reportFile.value) - outputStream.flush() - outputStream.close() - Log.d("UnitReportsFragment", "Wrote file into ${uri.path}") - } catch (e: Exception) { - e.printStackTrace() + (unitReportsViewModel.report.value as? ReportController.Report.XlsxReport)?.let { report -> + it?.data?.data?.also { uri -> + Log.d("UnitReportsFragment", "Downloading file into ${uri.path}") + val outputStream = context?.contentResolver?.openOutputStream(uri) + outputStream?.let { + try { + outputStream.write(report.data) + outputStream.flush() + outputStream.close() + Log.d("UnitReportsFragment", "Wrote file into ${uri.path}") + } catch (e: Exception) { + e.printStackTrace() + } } } } |