mirror of
https://github.com/blakeblackshear/frigate.git
synced 2026-01-22 20:18:30 +03:00
fix weekday starting point on explore when set to monday in UI settings
This commit is contained in:
parent
3fb9abc97d
commit
bf74e74696
@ -18,6 +18,7 @@ import PlatformAwareDialog from "../overlay/dialog/PlatformAwareDialog";
|
|||||||
import { useTranslation } from "react-i18next";
|
import { useTranslation } from "react-i18next";
|
||||||
import useSWR from "swr";
|
import useSWR from "swr";
|
||||||
import { FrigateConfig } from "@/types/frigateConfig";
|
import { FrigateConfig } from "@/types/frigateConfig";
|
||||||
|
import { useUserPersistence } from "@/hooks/use-user-persistence";
|
||||||
|
|
||||||
type CalendarFilterButtonProps = {
|
type CalendarFilterButtonProps = {
|
||||||
reviewSummary?: ReviewSummary;
|
reviewSummary?: ReviewSummary;
|
||||||
@ -105,6 +106,7 @@ export function CalendarRangeFilterButton({
|
|||||||
const { t } = useTranslation(["components/filter"]);
|
const { t } = useTranslation(["components/filter"]);
|
||||||
const { data: config } = useSWR<FrigateConfig>("config");
|
const { data: config } = useSWR<FrigateConfig>("config");
|
||||||
const timezone = useTimezone(config);
|
const timezone = useTimezone(config);
|
||||||
|
const [weekStartsOn] = useUserPersistence("weekStartsOn", 0);
|
||||||
const [open, setOpen] = useState(false);
|
const [open, setOpen] = useState(false);
|
||||||
|
|
||||||
const selectedDate = useFormattedRange(
|
const selectedDate = useFormattedRange(
|
||||||
@ -138,6 +140,7 @@ export function CalendarRangeFilterButton({
|
|||||||
initialDateTo={range?.to}
|
initialDateTo={range?.to}
|
||||||
timezone={timezone}
|
timezone={timezone}
|
||||||
showCompare={false}
|
showCompare={false}
|
||||||
|
weekStartsOn={weekStartsOn}
|
||||||
onUpdate={(range) => {
|
onUpdate={(range) => {
|
||||||
updateSelectedRange(range.range);
|
updateSelectedRange(range.range);
|
||||||
setOpen(false);
|
setOpen(false);
|
||||||
|
|||||||
@ -35,6 +35,8 @@ export interface DateRangePickerProps {
|
|||||||
showCompare?: boolean;
|
showCompare?: boolean;
|
||||||
/** timezone */
|
/** timezone */
|
||||||
timezone?: string;
|
timezone?: string;
|
||||||
|
/** First day of the week: 0 = Sunday, 1 = Monday */
|
||||||
|
weekStartsOn?: number;
|
||||||
}
|
}
|
||||||
|
|
||||||
const getDateAdjustedForTimezone = (
|
const getDateAdjustedForTimezone = (
|
||||||
@ -91,6 +93,7 @@ export function DateRangePicker({
|
|||||||
onUpdate,
|
onUpdate,
|
||||||
onReset,
|
onReset,
|
||||||
showCompare = true,
|
showCompare = true,
|
||||||
|
weekStartsOn = 0,
|
||||||
}: DateRangePickerProps) {
|
}: DateRangePickerProps) {
|
||||||
const [isOpen, setIsOpen] = useState(false);
|
const [isOpen, setIsOpen] = useState(false);
|
||||||
|
|
||||||
@ -150,7 +153,9 @@ export function DateRangePicker({
|
|||||||
if (!preset) throw new Error(`Unknown date range preset: ${presetName}`);
|
if (!preset) throw new Error(`Unknown date range preset: ${presetName}`);
|
||||||
const from = new TZDate(new Date(), timezone);
|
const from = new TZDate(new Date(), timezone);
|
||||||
const to = new TZDate(new Date(), timezone);
|
const to = new TZDate(new Date(), timezone);
|
||||||
const first = from.getDate() - from.getDay();
|
const dayOfWeek = from.getDay();
|
||||||
|
const daysFromWeekStart = (dayOfWeek - weekStartsOn + 7) % 7;
|
||||||
|
const first = from.getDate() - daysFromWeekStart;
|
||||||
|
|
||||||
switch (preset.name) {
|
switch (preset.name) {
|
||||||
case "today":
|
case "today":
|
||||||
@ -184,8 +189,8 @@ export function DateRangePicker({
|
|||||||
to.setHours(23, 59, 59, 999);
|
to.setHours(23, 59, 59, 999);
|
||||||
break;
|
break;
|
||||||
case "lastWeek":
|
case "lastWeek":
|
||||||
from.setDate(from.getDate() - 7 - from.getDay());
|
from.setDate(first - 7);
|
||||||
to.setDate(to.getDate() - to.getDay() - 1);
|
to.setDate(first - 1);
|
||||||
from.setHours(0, 0, 0, 0);
|
from.setHours(0, 0, 0, 0);
|
||||||
to.setHours(23, 59, 59, 999);
|
to.setHours(23, 59, 59, 999);
|
||||||
break;
|
break;
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user