BGDisplayView.swift 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. // LoopFollow
  2. // BGDisplayView.swift
  3. import SwiftUI
  4. struct BGDisplayView: View {
  5. @ObservedObject var serverText = Observable.shared.serverText
  6. @ObservedObject var bgText = Observable.shared.bgText
  7. @ObservedObject var bgTextColor = Observable.shared.bgTextColor
  8. @ObservedObject var bgStale = Observable.shared.bgStale
  9. @ObservedObject var directionText = Observable.shared.directionText
  10. @ObservedObject var deltaText = Observable.shared.deltaText
  11. @ObservedObject var minAgoText = Observable.shared.minAgoText
  12. @ObservedObject var loopStatusText = Observable.shared.loopStatusText
  13. @ObservedObject var loopStatusColor = Observable.shared.loopStatusColor
  14. @ObservedObject var predictionText = Observable.shared.predictionText
  15. @ObservedObject var predictionColor = Observable.shared.predictionColor
  16. @ObservedObject var isNotLooping = Observable.shared.isNotLooping
  17. var onRefresh: (() -> Void)?
  18. var body: some View {
  19. ScrollView {
  20. VStack(spacing: 0) {
  21. Text(serverText.value)
  22. .font(.system(size: 13))
  23. Text(bgText.value)
  24. .font(.system(size: 85, weight: .black))
  25. .foregroundColor(bgTextColor.value)
  26. .strikethrough(
  27. bgStale.value,
  28. pattern: .solid,
  29. color: bgStale.value ? .red : .clear
  30. )
  31. .frame(maxWidth: .infinity)
  32. .lineLimit(1)
  33. .minimumScaleFactor(0.5)
  34. HStack {
  35. Text(directionText.value)
  36. .font(.system(size: 60, weight: .black))
  37. Text(deltaText.value)
  38. .font(.system(size: 32))
  39. }
  40. .lineLimit(1)
  41. .minimumScaleFactor(0.5)
  42. Text(minAgoText.value)
  43. .font(.system(size: 17))
  44. if isNotLooping.value {
  45. Text(loopStatusText.value)
  46. .font(.system(size: 18, weight: .bold))
  47. .foregroundColor(loopStatusColor.value)
  48. .frame(maxWidth: .infinity)
  49. } else {
  50. HStack {
  51. Spacer()
  52. Text(loopStatusText.value)
  53. .foregroundColor(loopStatusColor.value)
  54. Text(predictionText.value)
  55. .foregroundColor(predictionColor.value)
  56. Spacer()
  57. }
  58. .font(.system(size: 17))
  59. }
  60. }
  61. }
  62. .refreshable {
  63. onRefresh?()
  64. }
  65. }
  66. }