65 lines
1.6 KiB
Swift
65 lines
1.6 KiB
Swift
//
|
||
// ContentView.swift
|
||
// Workouts
|
||
//
|
||
// Created by rzen on 7/11/25 at 5:04 PM.
|
||
//
|
||
// Copyright 2025 Rouslan Zenetl. All Rights Reserved.
|
||
//
|
||
|
||
|
||
import SwiftUI
|
||
import SwiftData
|
||
|
||
struct ContentView: View {
|
||
@Environment(\.modelContext) private var modelContext
|
||
@Query private var items: [Item]
|
||
|
||
var body: some View {
|
||
NavigationSplitView {
|
||
List {
|
||
ForEach(items) { item in
|
||
NavigationLink {
|
||
Text("Item at \(item.timestamp, format: Date.FormatStyle(date: .numeric, time: .standard))")
|
||
} label: {
|
||
Text(item.timestamp, format: Date.FormatStyle(date: .numeric, time: .standard))
|
||
}
|
||
}
|
||
.onDelete(perform: deleteItems)
|
||
}
|
||
.toolbar {
|
||
ToolbarItem(placement: .navigationBarTrailing) {
|
||
EditButton()
|
||
}
|
||
ToolbarItem {
|
||
Button(action: addItem) {
|
||
Label("Add Item", systemImage: "plus")
|
||
}
|
||
}
|
||
}
|
||
} detail: {
|
||
Text("Select an item")
|
||
}
|
||
}
|
||
|
||
private func addItem() {
|
||
withAnimation {
|
||
let newItem = Item(timestamp: Date())
|
||
modelContext.insert(newItem)
|
||
}
|
||
}
|
||
|
||
private func deleteItems(offsets: IndexSet) {
|
||
withAnimation {
|
||
for index in offsets {
|
||
modelContext.delete(items[index])
|
||
}
|
||
}
|
||
}
|
||
}
|
||
|
||
#Preview {
|
||
ContentView()
|
||
.modelContainer(for: Item.self, inMemory: true)
|
||
}
|