remove shrinking headers from day view

only show header on day view if its he voting header
This commit is contained in:
Trey t
2022-04-14 22:31:29 -05:00
parent 1cfb4c1b2e
commit 61a5f71a2e

View File

@@ -28,14 +28,6 @@ struct DayView: View {
// 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
// MARK: top header storage
@AppStorage(UserDefaultsStore.Keys.contentViewCurrentSelectedHeaderViewBackDays.rawValue, store: GroupUserDefaults.groupDefaults) private var currentSelectedHeaderViewBackDays: Int = 30
@AppStorage(UserDefaultsStore.Keys.contentViewHeaderTagViewOneViewType.rawValue, store: GroupUserDefaults.groupDefaults) private var firstSwichableHeaderViewType: MainSwitchableViewType = .total
@AppStorage(UserDefaultsStore.Keys.contentViewHeaderTagViewTwoViewType.rawValue, store: GroupUserDefaults.groupDefaults) private var secondSwichableHeaderViewType: MainSwitchableViewType = .total
@AppStorage(UserDefaultsStore.Keys.contentViewHeaderTag.rawValue, store: GroupUserDefaults.groupDefaults) private var switchableViewSelectedIndex = 1
@AppStorage(UserDefaultsStore.Keys.currentSelectedHeaderViewViewType.rawValue, store: GroupUserDefaults.groupDefaults) private var currentSelectedHeaderViewViewType: MainSwitchableViewType = .total
//
// MARK: edit row properties
@State private var showingSheet = false
@State private var selectedEntry: MoodEntry?
@@ -47,12 +39,6 @@ struct DayView: View {
@StateObject private var onboardingData = OnboardingDataDataManager.shared
@StateObject private var filteredDays = DaysFilterClass.shared
// MARK: header properties
@State private var headerHeight: CGFloat = DayViewConstants.maxHeaderHeight
@State private var headerViewType: MainSwitchableViewType = .total
@State private var headerOpacity: Double = 1.0
//
@ObservedObject var viewModel: DayViewViewModel
var body: some View {
@@ -90,36 +76,7 @@ struct DayView: View {
})
}
}
// MARK: functions that do view type work
func calcuateViewAlpha() {
let perc = (((Double(headerHeight) - DayViewConstants.minHeaderHeight) * 100) / (DayViewConstants.maxHeaderHeight - DayViewConstants.minHeaderHeight)) / 100
headerOpacity = perc
}
func calculateHeight(minHeight: CGFloat, maxHeight: CGFloat, yOffset: CGFloat) {
let newValue = maxHeight + yOffset
calcuateViewAlpha()
// If scrolling up, yOffset will be a negative number
if newValue < minHeight {
// SCROLLING UP
// Never go smaller than our minimum height
headerHeight = minHeight
return
}
if newValue > maxHeight {
// SCROLLING UP
// Never go smaller than our minimum height
headerHeight = maxHeight
return
}
// SCROLLING DOWN
headerHeight = newValue
}
// MARK: Views
public var mainView: some View {
VStack {
@@ -130,34 +87,15 @@ struct DayView: View {
Spacer()
} else {
ZStack {
Text(String(customMoodTintUpdateNumber))
.hidden()
VStack {
headerView
Spacer()
}
.opacity(headerOpacity)
VStack {
SmallRollUpHeaderView(entries: getBackEntries(),
viewType: $currentSelectedHeaderViewViewType)
.frame(height: DayViewConstants.minHeaderHeight)
.padding([.trailing, .leading])
.background(
theme.currentTheme.secondaryBGColor
)
.cornerRadius(Constants.viewsCornerRaidus, corners: [.topLeft, .topRight, .bottomLeft, .bottomRight])
Spacer()
}
.opacity(1 - headerOpacity)
}
.frame(height: headerHeight + 20)
listView
.padding(.top, -25)
}
}
.padding()
@@ -191,45 +129,8 @@ struct DayView: View {
AddMoodHeaderView(addItemHeaderClosure: { (mood, date) in
viewModel.add(mood: mood, forDate: date, entryType: .header)
})
.frame(height: headerHeight)
.frame(minWidth: 0, maxWidth: .infinity)
} else {
// selection hre doesn't work ...
TabView(selection: $switchableViewSelectedIndex) {
SwitchableView(daysBack: 30,
viewType: $firstSwichableHeaderViewType,
headerTypeChanged: { viewType in
firstSwichableHeaderViewType = viewType
currentSelectedHeaderViewViewType = firstSwichableHeaderViewType
})
.tag(1)
.frame(height: headerHeight)
.frame(minWidth: 0, maxWidth: .infinity)
.contentShape(Rectangle())
SwitchableView(daysBack: 7,
viewType: $secondSwichableHeaderViewType,
headerTypeChanged: { viewType in
secondSwichableHeaderViewType = viewType
currentSelectedHeaderViewViewType = secondSwichableHeaderViewType
})
.tag(2)
.frame(height: headerHeight)
.frame(minWidth: 0, maxWidth: .infinity)
.contentShape(Rectangle())
}
.tabViewStyle(.page)
.onChange(of: switchableViewSelectedIndex) { value in
if value == 1 {
currentSelectedHeaderViewBackDays = 30
currentSelectedHeaderViewViewType = firstSwichableHeaderViewType
}
if value == 2 {
currentSelectedHeaderViewBackDays = 7
currentSelectedHeaderViewViewType = secondSwichableHeaderViewType
}
}
.frame(height: DayViewConstants.maxHeaderHeight)
.frame(minWidth: 0, maxWidth: .infinity)
}
}
}
@@ -261,23 +162,8 @@ struct DayView: View {
.background(
theme.currentTheme.secondaryBGColor
)
.coordinateSpace(name: "scroll")
.onPreferenceChange(ViewOffsetKey.self) { value in
if viewModel.numberOfItems > 10 {
calculateHeight(minHeight: DayViewConstants.minHeaderHeight,
maxHeight: DayViewConstants.maxHeaderHeight,
yOffset: value)
}
}
.cornerRadius(Constants.viewsCornerRaidus, corners: [.topLeft, .topRight])
}
func getBackEntries() -> [MoodEntry] {
var daysAgo = Calendar.current.date(byAdding: .day, value: -self.currentSelectedHeaderViewBackDays, to: Date())!
daysAgo = Calendar.current.date(bySettingHour: 0, minute: 0, second: 0, of: daysAgo)!
return PersistenceController.shared.getData(startDate: daysAgo, endDate: Date(), includedDays: [1,2,3,4,5,6,7])
}
}
// view that make up the list body