bugfixing economic calendar

This commit is contained in:
MuslemRahimi 2024-11-10 17:51:08 +01:00
parent fa2124b468
commit e059b00180

View File

@ -1,5 +1,12 @@
<script lang="ts"> <script lang="ts">
import { format, startOfWeek, addDays, addWeeks, subWeeks } from "date-fns"; import {
format,
startOfWeek,
addDays,
addWeeks,
subWeeks,
differenceInWeeks,
} from "date-fns";
import { screenWidth, numberOfUnreadNotification } from "$lib/store"; import { screenWidth, numberOfUnreadNotification } from "$lib/store";
import { abbreviateNumber, listOfRelevantCountries } from "$lib/utils"; import { abbreviateNumber, listOfRelevantCountries } from "$lib/utils";
import ArrowLogo from "lucide-svelte/icons/move-up-right"; import ArrowLogo from "lucide-svelte/icons/move-up-right";
@ -12,6 +19,7 @@
let rawData; let rawData;
let filterList = []; let filterList = [];
let weekdayFiltered = []; let weekdayFiltered = [];
let weekday; // Added declaration
let syncWorker: Worker | undefined; let syncWorker: Worker | undefined;
const maxWeeksChange = 6; const maxWeeksChange = 6;
@ -25,10 +33,15 @@
$: economicCalendar = data?.getEconomicCalendar; $: economicCalendar = data?.getEconomicCalendar;
$: daysOfWeek = getDaysOfWeek(currentWeek); $: daysOfWeek = getDaysOfWeek(currentWeek);
$: formattedWeekday = daysOfWeek.map((day) => format(day.date, "EEE, MMM d")); $: formattedWeekday = daysOfWeek.map((day) => format(day.date, "EEE, MMM d"));
$: weekday = getWeekdayData(economicCalendar, daysOfWeek); $: {
$: rawData = weekday; weekday = getWeekdayData(economicCalendar, daysOfWeek);
rawData = weekday;
// Reapply filters whenever weekday data changes
if (filterList.length > 0 && syncWorker) {
loadWorker();
}
}
// Calculate start and end boundaries
const startBoundary = subWeeks( const startBoundary = subWeeks(
startOfWeek(today, { weekStartsOn: 1 }), startOfWeek(today, { weekStartsOn: 1 }),
maxWeeksChange, maxWeeksChange,
@ -38,7 +51,6 @@
maxWeeksChange, maxWeeksChange,
); );
// Update max checks based on boundaries
$: previousMax = currentWeek <= startBoundary; $: previousMax = currentWeek <= startBoundary;
$: nextMax = currentWeek >= endBoundary; $: nextMax = currentWeek >= endBoundary;
@ -71,7 +83,7 @@
}; };
const loadWorker = async () => { const loadWorker = async () => {
syncWorker.postMessage({ rawData, filterList }); syncWorker?.postMessage({ rawData, filterList });
}; };
function toggleDate(index) { function toggleDate(index) {
@ -100,7 +112,6 @@
? subWeeks(currentWeek, 1) ? subWeeks(currentWeek, 1)
: addWeeks(currentWeek, 1); : addWeeks(currentWeek, 1);
// Only update if within boundaries
if (newWeek >= startBoundary && newWeek <= endBoundary) { if (newWeek >= startBoundary && newWeek <= endBoundary) {
currentWeek = newWeek; currentWeek = newWeek;
} }
@ -163,7 +174,6 @@
currentWeek = startOfWeek(today, { weekStartsOn: 1 }); currentWeek = startOfWeek(today, { weekStartsOn: 1 });
selectedWeekday = Math.min((currentDate.getDay() + 6) % 7, 4); selectedWeekday = Math.min((currentDate.getDay() + 6) % 7, 4);
// Reset max checks based on boundaries
previousMax = currentWeek <= startBoundary; previousMax = currentWeek <= startBoundary;
nextMax = currentWeek >= endBoundary; nextMax = currentWeek >= endBoundary;
} }