-
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathActivityAddView.swift
More file actions
82 lines (71 loc) · 2.9 KB
/
ActivityAddView.swift
File metadata and controls
82 lines (71 loc) · 2.9 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
//
// ActivityAddView.swift
// Stanford360
//
// Created by Kelly Bonilla Guzmán on 3/10/25.
//
// SPDX-FileCopyrightText: 2025 Stanford University
//
// SPDX-License-Identifier: MIT
//
import SwiftUI
struct ActivityAddView: View {
@Environment(ActivityManager.self) private var activityManager
// Activity properties that can be initialized for editing
@State private var activeMinutes: String
@State private var selectedActivity: String
@State private var selectedDate: Date
@State private var showingAddActivity = false
var body: some View {
ZStack {
VStack(spacing: 20) {
PercentageRing(
currentValue: activityManager.getTodayTotalMinutes(),
maxValue: 60,
iconName: "figure.walk",
ringWidth: 25,
backgroundColor: Color.activityColorBackground,
foregroundColors: [Color.activityColor, Color.activityColorGradient],
unitLabel: "minutes",
iconSize: 13,
showProgressTextInCenter: true
)
.frame(width: 210, height: 210) // Fixed dimensions
.padding(.top, 30)
Text.goalMessage(current: Double(activityManager.getTodayTotalMinutes()), goal: 60, unit: "min")
.padding(.top, 10)
// Activity input components
ActivityPickerView(selectedActivity: $selectedActivity)
.padding(.top, 20)
saveNewActivityButton(showingAddActivity: $showingAddActivity)
.padding(.bottom, 30)
}
.padding(.horizontal)
MilestoneMessageView(unit: "minutes of activity")
.environmentObject(activityManager.milestoneManager)
.offset(y: -250)
}
.sheet(isPresented: $showingAddActivity) {
AddActivitySheet(selectedActivity: selectedActivity)
}
}
// MARK: - Initializers
init(selectedActivity: String = "Walking", activeMinutes: String = "", selectedDate: Date = Date()) {
self._selectedActivity = State(initialValue: selectedActivity)
self._activeMinutes = State(initialValue: activeMinutes)
self._selectedDate = State(initialValue: selectedDate)
self.activityId = nil
}
func saveNewActivityButton(showingAddActivity: Binding<Bool>) -> some View {
SaveActivityButton(
showingAddActivity: showingAddActivity,
selectedActivity: showingAddActivity.wrappedValue ? "Walking" : nil,
minutes: showingAddActivity.wrappedValue ? "0" : nil
)
}
}
#Preview {
@Previewable @State var activityManager = ActivityManager(activities: activitiesData)
ActivityAddView()
.environment(activityManager)
}