File size: 4,527 Bytes
255efa8
 
 
c0d2247
 
255efa8
c0d2247
 
 
255efa8
c0d2247
 
ae75435
 
c0d2247
ae75435
 
c0d2247
 
1960505
 
 
 
 
 
 
 
 
a8c2362
c0d2247
255efa8
1960505
 
ae75435
1960505
ae75435
 
1960505
ae75435
 
 
1960505
 
 
 
 
 
 
 
 
 
 
ae75435
a8c2362
255efa8
 
 
 
 
 
 
1960505
 
 
ae75435
 
 
 
 
 
 
 
 
 
 
 
 
1960505
255efa8
 
 
 
 
 
 
 
 
ae75435
 
 
 
 
 
 
 
 
 
 
 
 
 
1960505
 
 
ae75435
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
const restaurant_no = 5;

function shuffle(array, seed) {
    var m = array.length, t, i;
    while (m) {
      i = Math.floor(random(seed) * m--);
      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) {
    randomRestaurants = shuffle(restaurants, seed);
    return randomRestaurants.slice(0,restaurant_no);
}

function getDailySeed() {
    const today = new Date();
    return today.getFullYear() * 10000 + (today.getMonth() + 1) * 100 + today.getDate();
}

async function displayRestaurants(useRandomSeed = false) {
    const today = new Date();
    const day = today.getDay();
    const options = { weekday: 'long', year: 'numeric', month: 'long', day: 'numeric' };
    const formattedDate = today.toLocaleDateString(undefined, options);
    document.getElementById('currentDate').innerText = `Today is ${formattedDate}`;

    if (day === 0 || day === 6) {
        document.getElementById('restaurants').innerHTML = "No suggestions available today!";
        return;
    }

    try {
        const restaurants = await fetchRestaurants();
        const seed = useRandomSeed ? Math.floor(Math.random() * 1000000) : getDailySeed();
        const randomRestaurants = getRandomRestaurants(restaurants, seed);
        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>');

        // Remove previous suggest again button
        const existingButton = document.querySelector('.suggest-again-button');
        if (existingButton) {
            existingButton.remove();
        }

        // Add new suggest again button
        const suggestButton = document.createElement('div');
        suggestButton.classList.add('suggest-again-button');
        suggestButton.style.cssText = 'text-align: center; margin-top: 20px;';
        suggestButton.innerHTML = '<button onclick="displayRestaurants(true)" style="padding:8px 16px; background-color:#4CAF50; color:white; border:none; border-radius:4px; cursor:pointer;">Suggest Again</button>';
        document.querySelector('.bonus-container').after(suggestButton);

    } catch (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>');

        // Remove previous suggest again button
        const existingButton = document.querySelector('.suggest-again-button');
        if (existingButton) {
            existingButton.remove();
        }

        // Add new suggest again button
        const suggestButton = document.createElement('div');
        suggestButton.classList.add('suggest-again-button');
        suggestButton.style.cssText = 'text-align: center; margin-top: 20px;';
        suggestButton.innerHTML = '<button onclick="displayRestaurants(true)" style="padding:8px 16px; background-color:#4CAF50; color:white; border:none; border-radius:4px; cursor:pointer;">Suggest Again</button>';
        document.querySelector('.bonus-container').after(suggestButton);
    }
}

window.onload = () => displayRestaurants(false);