feat: Add days in the past selector on meal planner (#6857)

Co-authored-by: Michael Genson <genson.michael@gmail.com>
This commit is contained in:
Arnas Savickas
2026-03-26 21:09:52 +02:00
committed by GitHub
parent 9f47f38176
commit 41c3f1fced
4 changed files with 33 additions and 7 deletions

View File

@@ -35,6 +35,18 @@
:local="$i18n.locale"
/>
<v-card-text>
<v-number-input
v-model="numberOfDaysPast"
:min="0"
control-variant="stacked"
inset
:label="$t('meal-plan.numberOfDaysPast-label')"
:hint="$t('meal-plan.numberOfDaysPast-hint')"
persistent-hint
/>
</v-card-text>
<v-card-text>
<v-number-input
v-model="numberOfDays"
@@ -111,7 +123,11 @@ useSeoMeta({
});
const mealPlanPreferences = useUserMealPlanPreferences();
const numberOfDaysPast = ref<number>(mealPlanPreferences.value.numberOfDaysPast || 0);
const numberOfDays = ref<number>(mealPlanPreferences.value.numberOfDays || 7);
watch(numberOfDaysPast, (val) => {
mealPlanPreferences.value.numberOfDaysPast = Number(val);
});
watch(numberOfDays, (val) => {
mealPlanPreferences.value.numberOfDays = Number(val);
});
@@ -135,7 +151,7 @@ function safeParseISO(date: string, fallback: Date | undefined = undefined) {
}
// Initialize dates from query parameters or defaults
const initialStartDate = safeParseISO(route.query.start as string, new Date());
const initialStartDate = safeParseISO(route.query.start as string, addDays(new Date(), adjustForToday(-numberOfDaysPast.value)));
const initialEndDate = safeParseISO(route.query.end as string, addDays(new Date(), adjustForToday(numberOfDays.value)));
const state = ref({
@@ -163,7 +179,7 @@ const weekRange = computed(() => {
return { start, end };
}
return {
start: new Date(),
start: addDays(new Date(), adjustForToday(-numberOfDaysPast.value)),
end: addDays(new Date(), adjustForToday(numberOfDays.value)),
};
});
@@ -193,9 +209,9 @@ function filterMealByDate(date: Date) {
}
function adjustForToday(days: number) {
// The use case for this function is "how many days are we adding to 'today'?"
// e.g. If the user wants 7 days, we substract one to do "today + 6"
return days > 0 ? days - 1 : days + 1;
// e.g. If the user wants 7 days, we subtract one to do "today + 6"
// e.g. If the user wants 2 days in the past, we keep it the same to do "today - 2"
return days > 0 ? days - 1 : days;
}
const days = computed(() => {