LogView.swift 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. // LoopFollow
  2. // LogView.swift
  3. import SwiftUI
  4. struct LogView: View {
  5. @ObservedObject var viewModel = LogViewModel()
  6. var body: some View {
  7. NavigationView {
  8. VStack {
  9. Picker("Category", selection: $viewModel.selectedCategory) {
  10. Text("All").tag(LogManager.Category?.none)
  11. ForEach(LogManager.Category.allCases, id: \.self) { category in
  12. Text(category.rawValue).tag(LogManager.Category?.some(category))
  13. }
  14. }
  15. .pickerStyle(MenuPickerStyle())
  16. SearchBar(text: $viewModel.searchText)
  17. .padding([.leading, .trailing])
  18. ScrollView {
  19. LazyVStack(alignment: .leading, spacing: 2) {
  20. ForEach(viewModel.filteredLogEntries) { entry in
  21. Text(entry.text)
  22. .font(.system(size: 12, design: .monospaced))
  23. .frame(maxWidth: .infinity, alignment: .leading)
  24. .padding(.vertical, 0)
  25. }
  26. }
  27. .padding(.horizontal)
  28. }
  29. }
  30. .onAppear {
  31. viewModel.loadLogEntries()
  32. }
  33. }
  34. .preferredColorScheme(Storage.shared.forceDarkMode.value ? .dark : nil)
  35. .navigationBarTitle("Today's Logs", displayMode: .inline)
  36. }
  37. }