remove shrinking headers from day view
only show header on day view if its he voting header
This commit is contained in:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user