Spaces:
Running
Running
| const restaurant_no = 5; | |
| function shuffle(array, seed) { | |
| var m = array.length, t, i; | |
| // While there remain elements to shuffle… | |
| while (m) { | |
| // Pick a remaining element… | |
| i = Math.floor(random(seed) * m--); | |
| // And swap it with the current element. | |
| t = array[m]; | |
| array[m] = array[i]; | |
| array[i] = t; | |
| ++seed | |
| } | |
| return array; | |
| } | |
| function random(seed) { | |
| var x = Math.sin(seed++) * 10000; | |
| return x - Math.floor(x); | |
| } | |
| 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, seed) { | |
| // Generate three random indices based on the seed | |
| randomRestaurants = shuffle(restaurants, seed); | |
| return randomRestaurants.slice(0,restaurant_no); | |
| } | |
| async function displayRestaurants() { | |
| const today = new Date(); | |
| const day = today.getDay(); | |
| // 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]; | |
| try { | |
| const restaurants = await fetchRestaurants(); | |
| console.log('Fetched Restaurants:', restaurants); // Debugging: Print fetched restaurants | |
| const seed = today.getFullYear() * 10000 + (today.getMonth() + 1) * 100 + today.getDate(); // Create a seed from the date | |
| console.log('Random seed per day: ', seed); | |
| const randomRestaurants = getRandomRestaurants(restaurants, seed); | |
| console.log('Random Restaurants:', randomRestaurants); // Debugging: Print random restaurants | |
| const firstThreeRestaurants = randomRestaurants.slice(0, 3); | |
| const bonusRestaurants = randomRestaurants.slice(3, 5); | |
| document.getElementById('restaurants').innerHTML = firstThreeRestaurants.map(restaurant => | |
| `<a href="${restaurant[1]}" target="_blank">${restaurant[0]}</a>` | |
| ).join('<br>'); | |
| document.getElementById('bonusRestaurants').innerHTML = bonusRestaurants.map(restaurant => | |
| `<a href="${restaurant[1]}" target="_blank">${restaurant[0]}</a>` | |
| ).join('<br>'); | |
| } catch (error) { | |
| console.error('Error fetching restaurants:', error); | |
| const bestRestaurants = [ | |
| ["돈비고고 (unlimited 돈까스 + 제육 (Pork) for 8.8K)", "https://naver.me/GGUfwvl9"], | |
| ["Taksim Kebab (Turkish, small place)", "https://maps.app.goo.gl/6rwGVo5qbT9xKZAMA"], | |
| ["강남역 파스타 (Pasta, large space)", "https://naver.me/xL1EJLfC"], | |
| ] | |
| document.getElementById('restaurants').innerHTML = "Failed to load restaurant suggestions. <br>Below are my personal suggestions based on your review!!"; | |
| document.getElementById('bonusHeader').innerHTML = ""; | |
| document.getElementById('bonusRestaurants').innerHTML = bestRestaurants.map(restaurant => | |
| `<a href="${restaurant[1]}" target="_blank">${restaurant[0]}</a>` | |
| ).join('<br>') + "<br><br>"; | |
| } | |
| } | |
| window.onload = displayRestaurants; | |