add count to month view header

clean up spacing on day view
This commit is contained in:
Trey t
2022-04-14 22:55:33 -05:00
parent 61a5f71a2e
commit 7712f70f03
2 changed files with 73 additions and 52 deletions

View File

@@ -16,15 +16,15 @@ struct DayViewConstants {
struct DayView: View { struct DayView: View {
@Environment(\.managedObjectContext) private var viewContext @Environment(\.managedObjectContext) private var viewContext
@AppStorage(UserDefaultsStore.Keys.deleteEnable.rawValue, store: GroupUserDefaults.groupDefaults) private var deleteEnabled = true @AppStorage(UserDefaultsStore.Keys.deleteEnable.rawValue, store: GroupUserDefaults.groupDefaults) private var deleteEnabled = true
@AppStorage(UserDefaultsStore.Keys.theme.rawValue, store: GroupUserDefaults.groupDefaults) private var theme: Theme = .system @AppStorage(UserDefaultsStore.Keys.theme.rawValue, store: GroupUserDefaults.groupDefaults) private var theme: Theme = .system
@AppStorage(UserDefaultsStore.Keys.moodImages.rawValue, store: GroupUserDefaults.groupDefaults) private var imagePack: MoodImages = .FontAwesome @AppStorage(UserDefaultsStore.Keys.moodImages.rawValue, store: GroupUserDefaults.groupDefaults) private var imagePack: MoodImages = .FontAwesome
@AppStorage(UserDefaultsStore.Keys.moodTint.rawValue, store: GroupUserDefaults.groupDefaults) private var moodTint: MoodTints = .Default @AppStorage(UserDefaultsStore.Keys.moodTint.rawValue, store: GroupUserDefaults.groupDefaults) private var moodTint: MoodTints = .Default
@AppStorage(UserDefaultsStore.Keys.textColor.rawValue, store: GroupUserDefaults.groupDefaults) private var textColor: Color = DefaultTextColor.textColor @AppStorage(UserDefaultsStore.Keys.textColor.rawValue, store: GroupUserDefaults.groupDefaults) private var textColor: Color = DefaultTextColor.textColor
// store a value that gets changed when user updates custom colors to update the view since the moodTint doesn't change // store a value that gets changed when user updates custom colors to update the view since the moodTint doesn't change
@AppStorage(UserDefaultsStore.Keys.customMoodTintUpdateNumber.rawValue, store: GroupUserDefaults.groupDefaults) private var customMoodTintUpdateNumber: Int = 0 @AppStorage(UserDefaultsStore.Keys.customMoodTintUpdateNumber.rawValue, store: GroupUserDefaults.groupDefaults) private var customMoodTintUpdateNumber: Int = 0
@@ -40,66 +40,68 @@ struct DayView: View {
@StateObject private var filteredDays = DaysFilterClass.shared @StateObject private var filteredDays = DaysFilterClass.shared
@ObservedObject var viewModel: DayViewViewModel @ObservedObject var viewModel: DayViewViewModel
var body: some View { var body: some View {
mainView ZStack {
.onAppear(perform: { Text(String(customMoodTintUpdateNumber))
EventLogger.log(event: "show_home_view") .hidden()
})
.sheet(isPresented: $showingSheet) { mainView
SettingsView() .onAppear(perform: {
} EventLogger.log(event: "show_home_view")
.alert(DayViewViewModel.updateTitleHeader(forEntry: selectedEntry),
isPresented: $showUpdateEntryAlert) {
ForEach(Mood.allValues) { mood in
Button(mood.strValue, action: {
if let selectedEntry = selectedEntry {
viewModel.update(entry: selectedEntry, toMood: mood)
}
showUpdateEntryAlert = false
selectedEntry = nil
})
}
if let selectedEntry = selectedEntry,
deleteEnabled,
selectedEntry.mood != .missing {
Button(String(localized: "content_view_delete_entry"), action: {
viewModel.update(entry: selectedEntry, toMood: Mood.missing)
showUpdateEntryAlert = false
})
}
Button(String(localized: "content_view_fill_in_missing_entry_cancel"), role: .cancel, action: {
selectedEntry = nil
showUpdateEntryAlert = false
}) })
} .sheet(isPresented: $showingSheet) {
SettingsView()
}
.alert(DayViewViewModel.updateTitleHeader(forEntry: selectedEntry),
isPresented: $showUpdateEntryAlert) {
ForEach(Mood.allValues) { mood in
Button(mood.strValue, action: {
if let selectedEntry = selectedEntry {
viewModel.update(entry: selectedEntry, toMood: mood)
}
showUpdateEntryAlert = false
selectedEntry = nil
})
}
if let selectedEntry = selectedEntry,
deleteEnabled,
selectedEntry.mood != .missing {
Button(String(localized: "content_view_delete_entry"), action: {
viewModel.update(entry: selectedEntry, toMood: Mood.missing)
showUpdateEntryAlert = false
})
}
Button(String(localized: "content_view_fill_in_missing_entry_cancel"), role: .cancel, action: {
selectedEntry = nil
showUpdateEntryAlert = false
})
}
}
} }
// MARK: Views // MARK: Views
public var mainView: some View { public var mainView: some View {
VStack { VStack {
settingsButtonView settingsButtonView
.padding(.top)
if viewModel.hasNoData { if viewModel.hasNoData {
Spacer() Spacer()
EmptyHomeView(showVote: true, viewModel: viewModel) EmptyHomeView(showVote: true, viewModel: viewModel)
Spacer() Spacer()
} else { } else {
ZStack { VStack {
Text(String(customMoodTintUpdateNumber)) headerView
.hidden()
VStack { listView
headerView .padding(.top, 5)
}
} }
listView
} }
} }
.padding() .padding([.leading, .trailing, .bottom])
.padding(.bottom, 5)
.background( .background(
theme.currentTheme.bg theme.currentTheme.bg
.edgesIgnoringSafeArea(.all) .edgesIgnoringSafeArea(.all)
@@ -186,7 +188,7 @@ extension DayView {
return $0.forDate! > $1.forDate! return $0.forDate! > $1.forDate!
}), id: \.self) { entry in }), id: \.self) { entry in
if filteredDays.currentFilters.contains(Int(entry.weekDay)) { if filteredDays.currentFilters.contains(Int(entry.weekDay)) {
// let _ = print(entry.forDate, entry.weekDay, filteredDays.currentFilters) // let _ = print(entry.forDate, entry.weekDay, filteredDays.currentFilters)
EntryListView(entry: entry) EntryListView(entry: entry)
.contentShape(Rectangle()) .contentShape(Rectangle())
.onTapGesture(perform: { .onTapGesture(perform: {

View File

@@ -125,12 +125,31 @@ extension MonthView {
// view that make up the list body // view that make up the list body
extension MonthView { extension MonthView {
private func monthCountView(forMonth month: Int, year: Int) -> [MoodMetrics] {
let (startDate, endDate) = Date.dateRange(monthInt: month, yearInt: year)
let entries = PersistenceController.shared.getData(startDate: startDate, endDate: endDate, includedDays: [1,2,3,4,5,6,7])
return Random.createTotalPerc(fromEntries: entries)
}
private func homeViewTwoSectionHeaderView(month: Int, year: Int) -> some View { private func homeViewTwoSectionHeaderView(month: Int, year: Int) -> some View {
ZStack { ZStack {
Text("\(Random.monthName(fromMonthInt: month)) \(String(year))") HStack {
.font(.body) Text("\(Random.monthName(fromMonthInt: month)) \(String(year))")
.foregroundColor(textColor) .font(.body)
.frame(maxWidth: .infinity, alignment: .leading) .foregroundColor(textColor)
.frame(maxWidth: .infinity, alignment: .leading)
Spacer()
ForEach(monthCountView(forMonth: month, year: year)) {
Text("\($0.total)")
.font(.body)
.fontWeight(.bold)
.foregroundColor($0.mood.color)
}
}
Text(String(customMoodTintUpdateNumber)) Text(String(customMoodTintUpdateNumber))
.hidden() .hidden()
} }