diff options
author | Iván Ávalos <avalos@disroot.org> | 2022-02-15 21:01:41 -0600 |
---|---|---|
committer | Iván Ávalos <avalos@disroot.org> | 2022-02-15 21:01:41 -0600 |
commit | ef7a88961841752cb1a38a39f5e0cc298b463f56 (patch) | |
tree | 0c522583cb604afa41e4ce4eb0f7186ca9324ca0 /iosApp/iosApp/Details/Reports/UnitReportsViewModel.swift | |
parent | 894b276f0b4e8ea840586727b1708ca0d8ebdc05 (diff) | |
download | etbsa-trackermap-mobile-ef7a88961841752cb1a38a39f5e0cc298b463f56.tar.gz etbsa-trackermap-mobile-ef7a88961841752cb1a38a39f5e0cc298b463f56.tar.bz2 etbsa-trackermap-mobile-ef7a88961841752cb1a38a39f5e0cc298b463f56.zip |
WIP: reports
Diffstat (limited to 'iosApp/iosApp/Details/Reports/UnitReportsViewModel.swift')
-rw-r--r-- | iosApp/iosApp/Details/Reports/UnitReportsViewModel.swift | 71 |
1 files changed, 71 insertions, 0 deletions
diff --git a/iosApp/iosApp/Details/Reports/UnitReportsViewModel.swift b/iosApp/iosApp/Details/Reports/UnitReportsViewModel.swift new file mode 100644 index 0000000..8f67d7a --- /dev/null +++ b/iosApp/iosApp/Details/Reports/UnitReportsViewModel.swift @@ -0,0 +1,71 @@ +// +// UnitReportsViewModel.swift +// iosApp +// +// Created by Iván on 13/02/22. +// Copyright © 2022 orgName. All rights reserved. +// + +import Foundation +import Combine +import shared + +class UnitReportsViewModel: ObservableObject { + @Inject var reportController: ReportController + + @Published var deviceId: Int32? = nil + @Published var reportType: ReportController.ReportType = .positions + @Published var reportPeriod: ReportDates.ReportPeriod = .today + @Published var report: ReportController.Report? = nil { + didSet { + switch report { + case let report as ReportController.ReportPositionsReport: + markers = report.positions.compactMap { p in Marker.companion.fromPosition(position: p)} + case is ReportController.ReportEventsReport: + markers = [] + case let report as ReportController.ReportStopsReport: + markers = report.stops.compactMap { s in Marker.companion.fromStop(stop: s) } + default: + break + } + } + } + @Published var layer = MapLayer.companion.defaultLayer + @Published var markers = [Marker]() + @Published var selectedMarker: Marker? = nil + + init(deviceId id: Int32?) { + deviceId = id + let collector = Collector<ReportController.Report>(callback: setReport) + reportController.reportFlow.collect(collector: collector) { _, _ in } + } + + func setReport (report: ReportController.Report) { + self.report = report + } + + func fetchReport(xlsx: Bool = false) { + if let id = deviceId { + reportController.fetchReport(deviceId: id, + reportType: reportType, + reportPeriod: reportPeriod, + xlsx: xlsx, eventTypes: [ + .deviceInactive, + .deviceMoving, + .deviceStopped, + .deviceOverspeed, + .deviceFuelDrop, + .commandResult, + .geofenceEnter, + .geofenceExit, + .alarm, + .ignitionOn, + .ignitionOff, + .maintenance, + .textMessage, + .driverChanged, + .unknown + ]) + } + } +} |