diff options
Diffstat (limited to 'iosApp/iosApp/Devices/DeviceRow.swift')
-rw-r--r-- | iosApp/iosApp/Devices/DeviceRow.swift | 106 |
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() + } + } + } + } +} |