ALI-Lunch-Menu / script.js
bibekyess's picture
Bug fix for getRandomRestaurants
8626d26
raw
history blame
2.89 kB
async function fetchRestaurants() {
const response = await fetch('restaurants.json');
if (!response.ok) {
throw new Error('Network response was not ok ' + response.statusText);
}
const data = await response.json();
return data;
}
function getRandomRestaurants(restaurants, year, month, day) {
// Generate a seed based on the current date and time
const seed = year * 10000 + month * 100 + day;
// Shuffle using seeded random
for (let i = restaurants.length - 1; i > 0; i--) {
const j = Math.floor(seededRandom(seed + i) * (i + 1));
[restaurants[i], restaurants[j]] = [restaurants[j], restaurants[i]];
}
return restaurants.slice(0, 3);
}
async function displayRestaurants() {
const today = new Date();
const day = today.getDay();
const year = today.getFullYear();
const month = today.getMonth() + 1; // Months are zero-based
const date = today.getDate();
// Format the date
const options = { weekday: 'long', year: 'numeric', month: 'long', day: 'numeric' };
const formattedDate = today.toLocaleDateString(undefined, options);
// Display the date
document.getElementById('currentDate').innerText = `Today is ${formattedDate}`;
// Only display suggestions on weekdays
if (day === 0 || day === 6) {
document.getElementById('restaurants').innerHTML = "No suggestions available today!";
return;
}
const dateKey = today.toISOString().split('T')[0];
let savedData = localStorage.getItem('restaurantSuggestions');
if (savedData) {
savedData = JSON.parse(savedData);
if (savedData.date === dateKey) {
document.getElementById('restaurants').innerHTML = savedData.restaurants.map(restaurant =>
`<a href="${restaurant[1]}" target="_blank">${restaurant[0]}</a>`
).join('<br>');
return;
}
}
try {
const restaurants = await fetchRestaurants();
console.log('Fetched Restaurants:', restaurants); // Debugging: Print fetched restaurants
const randomRestaurants = getRandomRestaurants(restaurants, year, month, date);
console.log('Random Restaurants:', randomRestaurants); // Debugging: Print random restaurants
document.getElementById('restaurants').innerHTML = randomRestaurants.map(restaurant =>
`<a href="${restaurant[1]}" target="_blank">${restaurant[0]}</a>`
).join('<br>');
const dataToSave = {
date: dateKey,
restaurants: randomRestaurants
};
localStorage.setItem('restaurantSuggestions', JSON.stringify(dataToSave));
} catch (error) {
console.error('Error fetching restaurants:', error);
document.getElementById('restaurants').innerHTML = "Failed to load restaurant suggestions.";
}
}
window.onload = displayRestaurants;