Newer Older
57 lines | 2.045kb
Bogdan Timofte authored a week ago
1
//
2
//  MeterChartTabView.swift
3
//  USB Meter
4
//
5

            
6
import SwiftUI
7

            
8
struct MeterChartTabView: View {
9
    @EnvironmentObject private var meter: Meter
10

            
11
    let size: CGSize
12
    let isLandscape: Bool
13

            
14
    private let pageHorizontalPadding: CGFloat = 12
15
    private let pageVerticalPadding: CGFloat = 12
16
    private let contentCardPadding: CGFloat = 16
17

            
18
    var body: some View {
19
        Group {
20
            if isLandscape {
21
                landscapeFace {
22
                    MeasurementChartView()
23
                        .environmentObject(meter.measurements)
24
                        .frame(height: max(250, size.height - 44))
25
                        .padding(contentCardPadding)
26
                        .frame(maxWidth: .infinity, maxHeight: .infinity, alignment: .center)
27
                        .meterCard(tint: meter.color, fillOpacity: 0.12, strokeOpacity: 0.20)
28
                }
29
            } else {
30
                portraitFace {
31
                    MeasurementChartView()
32
                        .environmentObject(meter.measurements)
33
                        .frame(minHeight: size.height / 3.4)
34
                        .padding(contentCardPadding)
35
                        .meterCard(tint: meter.color, fillOpacity: 0.12, strokeOpacity: 0.20)
36
                }
37
            }
38
        }
39
    }
40

            
41
    private func portraitFace<Content: View>(@ViewBuilder content: () -> Content) -> some View {
42
        ScrollView {
43
            content()
44
                .frame(maxWidth: .infinity, alignment: .topLeading)
45
                .padding(.horizontal, pageHorizontalPadding)
46
                .padding(.vertical, pageVerticalPadding)
47
        }
48
    }
49

            
50
    private func landscapeFace<Content: View>(@ViewBuilder content: () -> Content) -> some View {
51
        content()
52
            .frame(maxWidth: .infinity, maxHeight: .infinity, alignment: .topLeading)
53
            .padding(.horizontal, pageHorizontalPadding)
54
            .padding(.vertical, pageVerticalPadding)
55
            .frame(maxWidth: .infinity, maxHeight: .infinity, alignment: .topLeading)
56
    }
57
}