diff --git a/AIReviewSwiftUI.xcodeproj/project.xcworkspace/xcuserdata/kannan.xcuserdatad/UserInterfaceState.xcuserstate b/AIReviewSwiftUI.xcodeproj/project.xcworkspace/xcuserdata/kannan.xcuserdatad/UserInterfaceState.xcuserstate index b54b296..ae8b233 100644 Binary files a/AIReviewSwiftUI.xcodeproj/project.xcworkspace/xcuserdata/kannan.xcuserdatad/UserInterfaceState.xcuserstate and b/AIReviewSwiftUI.xcodeproj/project.xcworkspace/xcuserdata/kannan.xcuserdatad/UserInterfaceState.xcuserstate differ diff --git a/AIReviewSwiftUI/ContentView.swift b/AIReviewSwiftUI/ContentView.swift index def0112..f786fd0 100644 --- a/AIReviewSwiftUI/ContentView.swift +++ b/AIReviewSwiftUI/ContentView.swift @@ -24,6 +24,11 @@ struct ContentView: View { newTaskTitle = "" } + TaskSummaryView( + totalTasks: viewModel.tasks.count, + completedTasks: viewModel.completedTasks, + overdueTasks: viewModel.overdueTasks + ) List { ForEach(viewModel.tasks) { task in HStack { diff --git a/AIReviewSwiftUI/Task.swift b/AIReviewSwiftUI/Task.swift index baddb7d..287aeb6 100644 --- a/AIReviewSwiftUI/Task.swift +++ b/AIReviewSwiftUI/Task.swift @@ -11,4 +11,5 @@ struct Task: Identifiable { let id = UUID() var title: String var isCompleted: Bool = false + var dueDate: Date? = nil } diff --git a/AIReviewSwiftUI/TaskSummaryView.swift b/AIReviewSwiftUI/TaskSummaryView.swift new file mode 100644 index 0000000..8b404fc --- /dev/null +++ b/AIReviewSwiftUI/TaskSummaryView.swift @@ -0,0 +1,34 @@ +// +// TaskSummaryView.swift +// AIReviewSwiftUI +// +// Created by kanagasabapathy on 26.04.25. +// + + +import SwiftUI + +struct TaskSummaryView: View { + let totalTasks: Int + let completedTasks: Int + let overdueTasks: Int + + var body: some View { + HStack { + VStack(alignment: .leading) { + Text("Total Tasks") + .font(.headline) + Text("\(totalTasks)") + .font(.largeTitle) + } + Spacer() + VStack(alignment: .leading) { + Text("Completed Tasks") + .font(.headline) + Text("\(completedTasks)") + .font(.largeTitle) + } + } + .padding() + } +} diff --git a/AIReviewSwiftUI/TaskViewModel.swift b/AIReviewSwiftUI/TaskViewModel.swift index b9b3fc8..54e08fc 100644 --- a/AIReviewSwiftUI/TaskViewModel.swift +++ b/AIReviewSwiftUI/TaskViewModel.swift @@ -20,4 +20,10 @@ final class TaskViewModel: ObservableObject { guard let index = tasks.firstIndex(where: { $0.id == task.id }) else { return } tasks[index].isCompleted.toggle() } -} \ No newline at end of file + var completedTasks: Int { + tasks.filter { $0.isCompleted }.count + } + var overdueTasks: Int { + tasks.filter { $0.dueDate != nil && $0.dueDate! < Date() && !$0.isCompleted }.count + } +}