From 57b16c89adc8fca4bbecf9851b077dcc19134fb5 Mon Sep 17 00:00:00 2001 From: Atridad Lahiji Date: Sat, 20 Sep 2025 15:08:59 -0600 Subject: [PATCH] 1.0.1 (6) --- .../UserInterfaceState.xcuserstate | Bin 91699 -> 91871 bytes .../Views/AddEdit/AddAttemptView.swift | 400 ++++++++++++++---- ios/OpenClimb/Views/AnalyticsView.swift | 336 +++++++-------- 3 files changed, 477 insertions(+), 259 deletions(-) diff --git a/ios/OpenClimb.xcodeproj/project.xcworkspace/xcuserdata/atridad.xcuserdatad/UserInterfaceState.xcuserstate b/ios/OpenClimb.xcodeproj/project.xcworkspace/xcuserdata/atridad.xcuserdatad/UserInterfaceState.xcuserstate index 917f898b60f796fc748bb16724f2a7fe5cde176a..5d4fb10624e0b861c12e8e631a49300cfce98b1f 100644 GIT binary patch literal 91871 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%0A3;>d@= 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 QvE%>q=l}mRZ|HIV2XH{pWB>pF literal 91699 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 some View { + Section("Select Problem") { + if availableProblems.isEmpty { + VStack(alignment: .leading, spacing: 12) { + Text("No active problems in this gym") + .foregroundColor(.secondary) + + Button("Create New Problem") { + showingCreateProblem = true + } + .buttonStyle(.borderedProminent) + } + .padding(.vertical, 8) + } else { + LazyVGrid( + columns: Array(repeating: GridItem(.flexible(), spacing: 8), count: 2), + spacing: 8 + ) { + ForEach(availableProblems, id: \.id) { problem in + ProblemSelectionCard( + problem: problem, + isSelected: selectedProblem?.id == problem.id + ) { + selectedProblem = problem + } + } + } + .padding(.vertical, 8) + + Button("Create New Problem") { + showingCreateProblem = true + } + .foregroundColor(.blue) + } + } + } + + @ViewBuilder + private func CreateProblemSection() -> some View { + Section { + HStack { + Text("Create New Problem") + .font(.headline) + + Spacer() + + Button("Back") { + showingCreateProblem = false + } + .foregroundColor(.blue) + } + } + + Section("Problem Details") { + TextField("Problem Name", text: $newProblemName) + } + + Section("Climb Type") { + ForEach(availableClimbTypes, id: \.self) { climbType in + HStack { + Text(climbType.displayName) + Spacer() + if selectedClimbType == climbType { + Image(systemName: "checkmark.circle.fill") + .foregroundColor(.blue) + } else { + Image(systemName: "circle") + .foregroundColor(.gray) + } + } + .contentShape(Rectangle()) + .onTapGesture { + selectedClimbType = climbType + } + } + } + + Section("Difficulty") { + VStack(alignment: .leading, spacing: 12) { + Text("Difficulty System") + .font(.subheadline) + .fontWeight(.medium) + + ForEach(availableDifficultySystems, id: \.self) { system in + HStack { + Text(system.displayName) + Spacer() + if selectedDifficultySystem == system { + Image(systemName: "checkmark.circle.fill") + .foregroundColor(.blue) + } else { + Image(systemName: "circle") + .foregroundColor(.gray) + } + } + .contentShape(Rectangle()) + .onTapGesture { + selectedDifficultySystem = system + } + } + } + + if selectedDifficultySystem == .custom { + TextField("Grade (Required - numbers only)", text: $newProblemGrade) + .keyboardType(.numberPad) + .onChange(of: newProblemGrade) { + // Filter out non-numeric characters + newProblemGrade = newProblemGrade.filter { $0.isNumber } + } + } else { + VStack(alignment: .leading, spacing: 8) { + Text("Grade (Required)") + .font(.subheadline) + .fontWeight(.medium) + + ScrollView(.horizontal, showsIndicators: false) { + LazyHStack(spacing: 8) { + ForEach(availableGrades, id: \.self) { grade in + Button(grade) { + newProblemGrade = grade + } + .buttonStyle(.bordered) + .controlSize(.small) + .tint(newProblemGrade == grade ? .blue : .gray) + } + } + .padding(.horizontal, 1) + } + } + } + } + } + + @ViewBuilder + private func AttemptDetailsSection() -> some View { + Section("Attempt Result") { + ForEach(AttemptResult.allCases, id: \.self) { result in + HStack { + Text(result.displayName) + Spacer() + if selectedResult == result { + Image(systemName: "checkmark.circle.fill") + .foregroundColor(.blue) + } else { + Image(systemName: "circle") + .foregroundColor(.gray) + } + } + .contentShape(Rectangle()) + .onTapGesture { + selectedResult = result + } + } + } + + Section("Additional Details") { + TextField("Highest Hold (Optional)", text: $highestHold) + + VStack(alignment: .leading, spacing: 8) { + Text("Notes (Optional)") + .font(.headline) + + TextEditor(text: $notes) + .frame(minHeight: 80) + .padding(8) + .background( + RoundedRectangle(cornerRadius: 8) + .fill(.quaternary) + ) + } + + HStack { + Text("Duration (seconds)") + Spacer() + TextField("0", value: $duration, format: .number) + .keyboardType(.numberPad) + .textFieldStyle(.roundedBorder) + .frame(width: 80) + } + + HStack { + Text("Rest Time (seconds)") + Spacer() + TextField("0", value: $restTime, format: .number) + .keyboardType(.numberPad) + .textFieldStyle(.roundedBorder) + .frame(width: 80) + } + } + } + + private var canSave: Bool { + if showingCreateProblem { + return !newProblemGrade.trimmingCharacters(in: .whitespacesAndNewlines).isEmpty + } else { + return selectedProblem != nil + } + } + + private func setupInitialValues() { + guard let gym = gym else { return } + + // Auto-select climb type if there's only one available + if gym.supportedClimbTypes.count == 1 { + selectedClimbType = gym.supportedClimbTypes.first! + } + + updateDifficultySystem() + } + + private func updateDifficultySystem() { + let available = availableDifficultySystems + + if !available.contains(selectedDifficultySystem) { + selectedDifficultySystem = available.first ?? .custom + } + + if available.count == 1 { + selectedDifficultySystem = available.first! + } + } + + private func resetGradeIfNeeded() { + let availableGrades = selectedDifficultySystem.availableGrades + if !availableGrades.isEmpty && !availableGrades.contains(newProblemGrade) { + newProblemGrade = "" } } private func updateAttempt() { - guard selectedProblem != nil else { return } + if showingCreateProblem { + guard let gym = gym else { return } - let updatedAttempt = attempt.updated( - problemId: selectedProblem?.id, - result: selectedResult, - highestHold: highestHold.isEmpty ? nil : highestHold, - notes: notes.isEmpty ? nil : notes, - duration: duration > 0 ? duration : nil, - restTime: restTime > 0 ? restTime : nil - ) + let difficulty = DifficultyGrade( + system: selectedDifficultySystem, grade: newProblemGrade) + + let newProblem = Problem( + gymId: gym.id, + name: newProblemName.isEmpty ? nil : newProblemName, + climbType: selectedClimbType, + difficulty: difficulty + ) + + dataManager.addProblem(newProblem) + + let updatedAttempt = attempt.updated( + problemId: newProblem.id, + result: selectedResult, + highestHold: highestHold.isEmpty ? nil : highestHold, + notes: notes.isEmpty ? nil : notes, + duration: duration > 0 ? duration : nil, + restTime: restTime > 0 ? restTime : nil + ) + + dataManager.updateAttempt(updatedAttempt) + } else { + guard selectedProblem != nil else { return } + + let updatedAttempt = attempt.updated( + problemId: selectedProblem?.id, + result: selectedResult, + highestHold: highestHold.isEmpty ? nil : highestHold, + notes: notes.isEmpty ? nil : notes, + duration: duration > 0 ? duration : nil, + restTime: restTime > 0 ? restTime : nil + ) + + dataManager.updateAttempt(updatedAttempt) + } - dataManager.updateAttempt(updatedAttempt) dismiss() } } diff --git a/ios/OpenClimb/Views/AnalyticsView.swift b/ios/OpenClimb/Views/AnalyticsView.swift index 9f66790..828182a 100644 --- a/ios/OpenClimb/Views/AnalyticsView.swift +++ b/ios/OpenClimb/Views/AnalyticsView.swift @@ -104,13 +104,14 @@ struct StatCard: View { struct ProgressChartSection: View { @EnvironmentObject var dataManager: ClimbingDataManager @State private var selectedSystem: DifficultySystem = .vScale + @State private var showAllTime: Bool = true - private var progressData: [ProgressDataPoint] { - calculateProgressOverTime() + private var gradeCountData: [GradeCount] { + calculateGradeCounts() } private var usedSystems: [DifficultySystem] { - let uniqueSystems = Set(progressData.map { $0.difficultySystem }) + let uniqueSystems = Set(gradeCountData.map { $0.difficultySystem }) return uniqueSystems.sorted { let order: [DifficultySystem] = [.vScale, .font, .yds, .custom] let firstIndex = order.firstIndex(of: $0) ?? order.count @@ -121,13 +122,50 @@ struct ProgressChartSection: View { var body: some View { VStack(alignment: .leading, spacing: 16) { + Text("Grade Distribution") + .font(.title2) + .fontWeight(.bold) + + // Toggles section HStack { - Text("Progress Over Time") - .font(.title2) - .fontWeight(.bold) + // Time period toggle + HStack(spacing: 8) { + Button(action: { + showAllTime = true + }) { + Text("All Time") + .font(.caption) + .fontWeight(.medium) + .padding(.horizontal, 8) + .padding(.vertical, 4) + .background( + RoundedRectangle(cornerRadius: 6) + .fill(showAllTime ? .blue : .clear) + .stroke(.blue.opacity(0.3), lineWidth: 1) + ) + .foregroundColor(showAllTime ? .white : .blue) + } + + Button(action: { + showAllTime = false + }) { + Text("7 Days") + .font(.caption) + .fontWeight(.medium) + .padding(.horizontal, 8) + .padding(.vertical, 4) + .background( + RoundedRectangle(cornerRadius: 6) + .fill(!showAllTime ? .blue : .clear) + .stroke(.blue.opacity(0.3), lineWidth: 1) + ) + .foregroundColor(!showAllTime ? .white : .blue) + } + } Spacer() + // Scale selector (only show if multiple systems) if usedSystems.count > 1 { Menu { ForEach(usedSystems, id: \.self) { system in @@ -164,24 +202,22 @@ struct ProgressChartSection: View { } } - let filteredData = progressData.filter { $0.difficultySystem == selectedSystem } + let filteredData = gradeCountData.filter { $0.difficultySystem == selectedSystem } if !filteredData.isEmpty { - LineChartView(data: filteredData, selectedSystem: selectedSystem) + BarChartView(data: filteredData) .frame(height: 200) - Text( - "Progress: max \(selectedSystem.displayName.lowercased()) grade achieved per session" - ) - .font(.caption) - .foregroundColor(.secondary) + Text("Successful climbs by grade") + .font(.caption) + .foregroundColor(.secondary) } else { VStack(spacing: 8) { - Image(systemName: "chart.line.uptrend.xyaxis") + Image(systemName: "chart.bar") .font(.title) .foregroundColor(.secondary) - Text("No progress data available for \(selectedSystem.displayName) system") + Text("No data available for \(selectedSystem.displayName) system") .font(.subheadline) .foregroundColor(.secondary) } @@ -201,38 +237,125 @@ struct ProgressChartSection: View { } } - private func calculateProgressOverTime() -> [ProgressDataPoint] { - let sessions = dataManager.completedSessions().sorted { $0.date < $1.date } + private func calculateGradeCounts() -> [GradeCount] { let problems = dataManager.problems let attempts = dataManager.attempts - return sessions.compactMap { session in - let sessionAttempts = attempts.filter { $0.sessionId == session.id } - let attemptedProblemIds = sessionAttempts.map { $0.problemId } - let attemptedProblems = problems.filter { attemptedProblemIds.contains($0.id) } + // Filter attempts by time period + let filteredAttempts: [Attempt] + if showAllTime { + filteredAttempts = attempts.filter { $0.result.isSuccessful } + } else { + let sevenDaysAgo = + Calendar.current.date(byAdding: .day, value: -7, to: Date()) ?? Date() + filteredAttempts = attempts.filter { + $0.result.isSuccessful && $0.timestamp >= sevenDaysAgo + } + } - // Group problems by difficulty system - let problemsBySystem = Dictionary(grouping: attemptedProblems) { $0.difficulty.system } + // Get attempted problems + let attemptedProblemIds = filteredAttempts.map { $0.problemId } + let attemptedProblems = problems.filter { attemptedProblemIds.contains($0.id) } - // Create data points for each system used in this session - return problemsBySystem.compactMap { (system, systemProblems) -> ProgressDataPoint? in - guard - let highestGradeProblem = systemProblems.max(by: { - $0.difficulty.numericValue < $1.difficulty.numericValue - }) - else { - return nil - } + // Group by difficulty system and grade + var gradeCounts: [String: GradeCount] = [:] - return ProgressDataPoint( - date: session.date, - maxGrade: highestGradeProblem.difficulty.grade, - maxGradeNumeric: highestGradeProblem.difficulty.numericValue, - climbType: highestGradeProblem.climbType, - difficultySystem: system + for problem in attemptedProblems { + let successfulAttemptsForProblem = filteredAttempts.filter { + $0.problemId == problem.id + } + let count = successfulAttemptsForProblem.count + + let key = "\(problem.difficulty.system.rawValue)-\(problem.difficulty.grade)" + + if let existing = gradeCounts[key] { + gradeCounts[key] = GradeCount( + grade: existing.grade, + count: existing.count + count, + gradeNumeric: existing.gradeNumeric, + difficultySystem: existing.difficultySystem + ) + } else { + gradeCounts[key] = GradeCount( + grade: problem.difficulty.grade, + count: count, + gradeNumeric: problem.difficulty.numericValue, + difficultySystem: problem.difficulty.system ) } - }.flatMap { $0 } + } + + return Array(gradeCounts.values) + } +} + +struct GradeCount { + let grade: String + let count: Int + let gradeNumeric: Int + let difficultySystem: DifficultySystem +} + +struct BarChartView: View { + let data: [GradeCount] + + private var sortedData: [GradeCount] { + data.sorted { $0.gradeNumeric < $1.gradeNumeric } + } + + private var maxCount: Int { + data.map { $0.count }.max() ?? 1 + } + + var body: some View { + GeometryReader { geometry in + let chartWidth = geometry.size.width - 40 + let chartHeight = geometry.size.height - 40 + let barWidth = chartWidth / CGFloat(max(sortedData.count, 1)) * 0.8 + let spacing = chartWidth / CGFloat(max(sortedData.count, 1)) * 0.2 + + if sortedData.isEmpty { + Rectangle() + .fill(.clear) + .overlay( + Text("No data") + .foregroundColor(.secondary) + ) + } else { + VStack(alignment: .leading) { + // Chart area + HStack(alignment: .bottom, spacing: spacing / CGFloat(sortedData.count)) { + ForEach(Array(sortedData.enumerated()), id: \.offset) { index, gradeCount in + VStack(spacing: 4) { + // Bar + RoundedRectangle(cornerRadius: 4) + .fill(.blue) + .frame( + width: barWidth, + height: CGFloat(gradeCount.count) / CGFloat(maxCount) + * chartHeight * 0.8 + ) + .overlay( + Text("\(gradeCount.count)") + .font(.caption2) + .fontWeight(.medium) + .foregroundColor(.white) + .opacity(gradeCount.count > 0 ? 1 : 0) + ) + + // Grade label + Text(gradeCount.grade) + .font(.caption2) + .foregroundColor(.secondary) + .lineLimit(1) + } + } + } + .frame(height: chartHeight) + } + .frame(maxWidth: .infinity, alignment: .center) + } + } } } @@ -253,7 +376,7 @@ struct FavoriteGymSection: View { } var body: some View { - VStack(alignment: .leading, spacing: 16) { + VStack(alignment: .leading, spacing: 16) { HStack { Image(systemName: "location.fill") .font(.title2) @@ -380,139 +503,6 @@ struct RecentActivitySection: View { } } -struct LineChartView: View { - let data: [ProgressDataPoint] - let selectedSystem: DifficultySystem - - private var uniqueGrades: [String] { - if selectedSystem == .custom { - return Array(Set(data.map { $0.maxGrade })).sorted { grade1, grade2 in - return (Int(grade1) ?? 0) > (Int(grade2) ?? 0) - } - } else { - return Array(Set(data.map { $0.maxGrade })).sorted { grade1, grade2 in - let grade1Data = data.first(where: { $0.maxGrade == grade1 }) - let grade2Data = data.first(where: { $0.maxGrade == grade2 }) - return (grade1Data?.maxGradeNumeric ?? 0) - > (grade2Data?.maxGradeNumeric ?? 0) - } - } - } - - private var minGrade: Int { - data.map { $0.maxGradeNumeric }.min() ?? 0 - } - - private var maxGrade: Int { - data.map { $0.maxGradeNumeric }.max() ?? 1 - } - - private var gradeRange: Int { - max(maxGrade - minGrade, 1) - } - - var body: some View { - GeometryReader { geometry in - let chartWidth = geometry.size.width - 40 - let chartHeight = geometry.size.height - 40 - - if data.isEmpty { - Rectangle() - .fill(.clear) - .overlay( - Text("No data") - .foregroundColor(.secondary) - ) - } else { - - HStack { - // Y-axis labels - VStack { - ForEach(0.. 1 { - Path { path in - for (index, point) in data.enumerated() { - let x = CGFloat(index) * chartWidth / CGFloat(data.count - 1) - let normalizedY = - CGFloat(point.maxGradeNumeric - minGrade) - / CGFloat(gradeRange) - let y = chartHeight - (normalizedY * chartHeight) - - if index == 0 { - path.move(to: CGPoint(x: x, y: y)) - } else { - path.addLine(to: CGPoint(x: x, y: y)) - } - } - } - .stroke(.blue, lineWidth: 2) - } - - // Data points - ForEach(data.indices, id: \.self) { index in - let point = data[index] - let x = - data.count == 1 - ? chartWidth / 2 - : CGFloat(index) * chartWidth / CGFloat(data.count - 1) - let normalizedY = - CGFloat(point.maxGradeNumeric - minGrade) / CGFloat(gradeRange) - let y = chartHeight - (normalizedY * chartHeight) - - Circle() - .fill(.blue) - .frame(width: 8, height: 8) - .position(x: x, y: y) - .overlay( - Circle() - .stroke(.white, lineWidth: 2) - .frame(width: 8, height: 8) - .position(x: x, y: y) - ) - } - } - .frame(width: chartWidth, height: chartHeight) - } - } - } - .padding() - } -} - -struct ProgressDataPoint { - let date: Date - let maxGrade: String - let maxGradeNumeric: Int - let climbType: ClimbType - let difficultySystem: DifficultySystem -} - #Preview { AnalyticsView() .environmentObject(ClimbingDataManager.preview)