diff options
author | Iván Ávalos <avalos@disroot.org> | 2022-02-27 01:29:49 -0600 |
---|---|---|
committer | Iván Ávalos <avalos@disroot.org> | 2022-02-27 01:29:49 -0600 |
commit | 596efb5f3b9d9e13407222f4672853363e81a0fc (patch) | |
tree | bb1a52cf634036e46c3507ab59e77a454290c5ee /iosApp/iosApp/Details/Reports/UnitReportsView.swift | |
parent | 438c0a9cbb1bcb594028cc4c7fcedfe4a802ef6f (diff) | |
download | etbsa-trackermap-mobile-596efb5f3b9d9e13407222f4672853363e81a0fc.tar.gz etbsa-trackermap-mobile-596efb5f3b9d9e13407222f4672853363e81a0fc.tar.bz2 etbsa-trackermap-mobile-596efb5f3b9d9e13407222f4672853363e81a0fc.zip |
Added report map icons and initial impl. of events table
Diffstat (limited to 'iosApp/iosApp/Details/Reports/UnitReportsView.swift')
-rw-r--r-- | iosApp/iosApp/Details/Reports/UnitReportsView.swift | 76 |
1 files changed, 72 insertions, 4 deletions
diff --git a/iosApp/iosApp/Details/Reports/UnitReportsView.swift b/iosApp/iosApp/Details/Reports/UnitReportsView.swift index b73c9e7..1ca1a87 100644 --- a/iosApp/iosApp/Details/Reports/UnitReportsView.swift +++ b/iosApp/iosApp/Details/Reports/UnitReportsView.swift @@ -18,6 +18,9 @@ import SwiftUI import shared import SwiftUIX +import Tabler + +extension EventInformation: Identifiable {} struct UnitReportsView: View { @StateObject var unitReportsViewModel: UnitReportsViewModel @@ -30,12 +33,77 @@ struct UnitReportsView: View { wrappedValue: UnitReportsViewModel(deviceId: unit.device.id)) } + private var eventsGridItems: [GridItem] = [ + GridItem(.flexible(), alignment: .leading), + GridItem(.flexible(), alignment: .leading), + GridItem(.flexible(), alignment: .leading), + GridItem(.flexible(), alignment: .leading), + ] + + @ViewBuilder + private func eventsHeader(_ ctx: TablerSortContext<EventInformation>) -> some View { + Text("events-table-datetime") + Text("events-table-event") + Text("events-table-geofence") + Text("events-table-address") + } + + @ViewBuilder + private func eventsRow(_ element: EventInformation) -> some View { + if let eventTime = element.event.eventTime { + Text(Formatter.companion.formatDate(str: eventTime)) + } else { Text("") } + + if let eventType = element.event.type { + switch EventInformation.companion.stringToReportType(s: eventType) { + case .deviceOnline: Text("event-device-online") + case .deviceUnknown: Text("event-device-unknown") + case .deviceOffline: Text("event-device-offline") + case .deviceInactive: Text("event-device-inactive") + case .deviceMoving: Text("event-device-moving") + case .deviceStopped: Text("event-device-stopped") + case .deviceOverspeed: Text("event-device-overspeed") + case .deviceFuelDrop: Text("event-device-fuel-drop") + case .commandResult: Text("event-command-result") + case .geofenceEnter: Text("event-geofence-enter") + case .geofenceExit: Text("event-geofence-exit") + case .alarm: Text("event-alarm") + case .ignitionOn: Text("event-ignition-on") + case .ignitionOff: Text("event-ignition-off") + case .maintenance: Text("event-maintenance") + case .textMessage: Text("event-text-message") + case .driverChanged: Text("event-driver-changed") + default: Text("event-unknown") + } + } else { Text("") } + + if let geofenceName = element.geofence?.name { + Text(geofenceName) + } else { Text("") } + + if let positionAddress = element.position?.address { + Text(positionAddress) + } else { Text("") } + } + var body: some View { VStack { - MapView(layer: $unitReportsViewModel.layer, - markers: $unitReportsViewModel.markers, - selected: $unitReportsViewModel.selectedMarker, - isReport: true) + if unitReportsViewModel.reportType == .events { + if let report = unitReportsViewModel.report as? ReportController.ReportEventsReport { + TablerList(TablerListConfig<EventInformation>(gridItems: eventsGridItems), + headerContent: eventsHeader, + rowContent: eventsRow, + results: report.events) + } else { + Spacer() + } + } else { + MapView(layer: $unitReportsViewModel.layer, + markers: $unitReportsViewModel.markers, + selected: $unitReportsViewModel.selectedMarker, + isReport: true) + } + VStack { HStack { Text("report-period") |