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
|
// 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
|
||||||
|
|
||||||
// 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
|
// MARK: edit row properties
|
||||||
@State private var showingSheet = false
|
@State private var showingSheet = false
|
||||||
@State private var selectedEntry: MoodEntry?
|
@State private var selectedEntry: MoodEntry?
|
||||||
@@ -47,12 +39,6 @@ struct DayView: View {
|
|||||||
@StateObject private var onboardingData = OnboardingDataDataManager.shared
|
@StateObject private var onboardingData = OnboardingDataDataManager.shared
|
||||||
@StateObject private var filteredDays = DaysFilterClass.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
|
@ObservedObject var viewModel: DayViewViewModel
|
||||||
|
|
||||||
var body: some View {
|
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
|
// MARK: Views
|
||||||
public var mainView: some View {
|
public var mainView: some View {
|
||||||
VStack {
|
VStack {
|
||||||
@@ -130,34 +87,15 @@ struct DayView: View {
|
|||||||
Spacer()
|
Spacer()
|
||||||
} else {
|
} else {
|
||||||
ZStack {
|
ZStack {
|
||||||
|
|
||||||
Text(String(customMoodTintUpdateNumber))
|
Text(String(customMoodTintUpdateNumber))
|
||||||
.hidden()
|
.hidden()
|
||||||
|
|
||||||
VStack {
|
VStack {
|
||||||
headerView
|
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
|
listView
|
||||||
.padding(.top, -25)
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
.padding()
|
.padding()
|
||||||
@@ -191,45 +129,8 @@ struct DayView: View {
|
|||||||
AddMoodHeaderView(addItemHeaderClosure: { (mood, date) in
|
AddMoodHeaderView(addItemHeaderClosure: { (mood, date) in
|
||||||
viewModel.add(mood: mood, forDate: date, entryType: .header)
|
viewModel.add(mood: mood, forDate: date, entryType: .header)
|
||||||
})
|
})
|
||||||
.frame(height: headerHeight)
|
.frame(height: DayViewConstants.maxHeaderHeight)
|
||||||
.frame(minWidth: 0, maxWidth: .infinity)
|
.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
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -261,23 +162,8 @@ struct DayView: View {
|
|||||||
.background(
|
.background(
|
||||||
theme.currentTheme.secondaryBGColor
|
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])
|
.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
|
// view that make up the list body
|
||||||
|
|||||||
Reference in New Issue
Block a user