aboutsummaryrefslogtreecommitdiff
path: root/iosApp/iosApp/Devices/DeviceRow.swift
diff options
context:
space:
mode:
Diffstat (limited to 'iosApp/iosApp/Devices/DeviceRow.swift')
-rw-r--r--iosApp/iosApp/Devices/DeviceRow.swift106
1 files changed, 106 insertions, 0 deletions
diff --git a/iosApp/iosApp/Devices/DeviceRow.swift b/iosApp/iosApp/Devices/DeviceRow.swift
new file mode 100644
index 0000000..5fc4e11
--- /dev/null
+++ b/iosApp/iosApp/Devices/DeviceRow.swift
@@ -0,0 +1,106 @@
+//
+// DeviceRow.swift
+// iosApp
+//
+// Created by Iván on 28/01/22.
+// Copyright © 2022 orgName. All rights reserved.
+//
+
+import SwiftUI
+import shared
+
+struct DeviceRow: View {
+ var unit: UnitInformation
+
+ var body: some View {
+ VStack {
+ HStack {
+ /* Status icon */
+ switch (unit.getStatus()) {
+ case .online:
+ Image(systemName: "circle.fill")
+ .foregroundColor(.systemGreen)
+ .imageScale(.small)
+ case .offline:
+ Image(systemName: "circle.fill")
+ .foregroundColor(.systemRed)
+ .imageScale(.small)
+ default:
+ EmptyView()
+ }
+
+ /* Engine stop */
+ switch (unit.getEngineStop()) {
+ case .on:
+ Image(systemName: "lock.fill")
+ .foregroundColor(.systemRed)
+ .imageScale(.small)
+ case .off:
+ Image(systemName: "lock.open.fill")
+ .foregroundColor(.systemGreen)
+ .imageScale(.small)
+ default:
+ EmptyView()
+ }
+
+ /* Device name */
+ Text(unit.device.name)
+ Spacer()
+ }
+ .padding(.bottom, 5.0)
+
+ /* Driver */
+ if let contact = unit.device.contact {
+ HStack {
+ Label(contact, systemImage: "person")
+ .labelStyle(SmallLabelStyle())
+ Spacer()
+ }
+ }
+
+ /* Speed */
+ if let speed = unit.position?.speed {
+ HStack {
+ Label(Formatter.companion.formatSpeed(
+ speed: Double(truncating: speed),
+ unit: .kmh),
+ systemImage: "speedometer")
+ .labelStyle(SmallLabelStyle())
+ Spacer()
+ }
+ }
+
+ /* Address */
+ if let address = unit.position?.address {
+ HStack {
+ Label(address, systemImage: "mappin.and.ellipse")
+ .labelStyle(SmallLabelStyle())
+ Spacer()
+ }
+ }
+
+ /* Hourmeter */
+ if let hourmeter = unit.position?.attributes["hours"] {
+ if let hourmeter = Serialization.companion.longOrNull(json: hourmeter) {
+ HStack {
+ Label(Formatter.companion.formatHours(
+ millis: Int64(truncating: hourmeter)),
+ systemImage: "timer")
+ .labelStyle(SmallLabelStyle())
+ Spacer()
+ }
+ }
+ }
+
+ /* Date time */
+ if let datetime = unit.position?.fixTime {
+ HStack {
+ Label(Formatter.companion.formatDate(str: datetime),
+ systemImage: "calendar")
+ .labelStyle(SmallLabelStyle())
+ Spacer()
+ }
+ }
+ }
+ }
+}