// // MeasurementView.swift // USB Meter // // Created by Bogdan Timofte on 13/04/2020. // Copyright © 2020 Bogdan Timofte. All rights reserved. // import SwiftUI struct MeasurementPointView: View { var power: Measurements.Measurement.Point var voltage: Measurements.Measurement.Point var current: Measurements.Measurement.Point @State var showDetail: Bool = false var body: some View { VStack(alignment: .leading, spacing: 12) { HStack(spacing: 12) { Image(systemName: "waveform.path.ecg.rectangle.fill") .foregroundColor(.blue) .frame(width: 36, height: 36) .background(Circle().fill(Color.blue.opacity(0.16))) VStack(alignment: .leading, spacing: 3) { Text(voltage.timestamp.format(as: "yyyy-MM-dd HH:mm:ss")) .font(.subheadline.weight(.semibold)) Text("Captured sample") .font(.caption) .foregroundColor(.secondary) } Spacer() Button(action: { showDetail.toggle() }) { Image(systemName: "chevron.right.circle.fill") .imageScale(.large) .foregroundColor(.secondary) .rotationEffect(.degrees(showDetail ? 90 : 0)) .animation(.easeInOut(duration: 0.25), value: showDetail) } .buttonStyle(.plain) } if showDetail { VStack(spacing: 10) { detailRow(title: "Power", value: "\(power.value.format(fractionDigits: 4)) W") detailRow(title: "Voltage", value: "\(voltage.value.format(fractionDigits: 4)) V") detailRow(title: "Current", value: "\(current.value.format(fractionDigits: 4)) A") } } } .padding(16) .meterCard(tint: .blue, fillOpacity: 0.14, strokeOpacity: 0.20, cornerRadius: 18) } private func detailRow(title: String, value: String) -> some View { HStack { Text(title) .foregroundColor(.secondary) Spacer() Text(value) .fontWeight(.semibold) .monospacedDigit() } .font(.footnote) } }