From 237f0e1551c37bf177b860faf17a86fcff482eb3 Mon Sep 17 00:00:00 2001 From: Moon <108756201+LifeAdventurer@users.noreply.github.com> Date: Sun, 2 Mar 2025 23:02:44 +0800 Subject: [PATCH 1/4] Feat(fortune): Trigger matrix background animation everytime (#60) --- fortune_generator/js/fortune.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/fortune_generator/js/fortune.js b/fortune_generator/js/fortune.js index 4b1249a..5af97a4 100644 --- a/fortune_generator/js/fortune.js +++ b/fortune_generator/js/fortune.js @@ -350,7 +350,7 @@ async function init_page() { now_date.getDate() === last_date.getDate() ) { fortune_generated = true; - Appear(); + Update(); } } } -- 2.49.1 From 5aa99e78e8418267ee5ef4c5806b0aa0f3e6b030 Mon Sep 17 00:00:00 2001 From: tobiichi3227 Date: Wed, 5 Mar 2025 20:07:28 +0800 Subject: [PATCH 2/4] Feat(Fortune): Support multiple event in same day --- fortune_generator/js/fortune.js | 8 +++++++- scripts/check-events.py | 20 ++++++++++++++++---- 2 files changed, 23 insertions(+), 5 deletions(-) diff --git a/fortune_generator/js/fortune.js b/fortune_generator/js/fortune.js index 4b1249a..8a2601a 100644 --- a/fortune_generator/js/fortune.js +++ b/fortune_generator/js/fortune.js @@ -268,6 +268,7 @@ const J_ip_to_fortune = $("#ip-to-fortune"); let special = false; let special_events_index = 0; +let current_day_special_events = []; // init page async function init_page() { @@ -315,9 +316,14 @@ async function init_page() { eventIndexList[j] = i; } else if (diffCount === 0) { special = true; - special_events_index = i; + current_day_special_events.push(i); } } + + special_events_index = ip.split(".").map(num => parseInt(num)).reduce((acc, cur) => acc + cur); + special_events_index %= current_day_special_events.length; + special_events_index = current_day_special_events[special_events_index]; + // if there is upcoming event then show for (let eventIndex = 0; eventIndex < showSpecialEventCount; eventIndex++) { if (eventIndexList[eventIndex] != -1) { diff --git a/scripts/check-events.py b/scripts/check-events.py index 707712e..a0fe2cb 100644 --- a/scripts/check-events.py +++ b/scripts/check-events.py @@ -277,6 +277,12 @@ def check_static_date(event: dict, idx: int): idx, trigger_date["date"], 1, DAYSPERMONTH[month], "triggerDate.date" ) + key = f'"{event_name}:{trigger_date["month"]}/{trigger_date["date"]}' + if key in event_dates: + errors[idx].append(f"The `{key}` is repeated.") + + event_dates.add(key) + def check_cyclical_date(event: dict, idx: int): trigger_date: dict = event["triggerDate"] @@ -309,6 +315,12 @@ def check_cyclical_date(event: dict, idx: int): validate_number(idx, trigger_date["week"], 1, 5, "triggerDate.week") validate_number(idx, trigger_date["weekday"], 1, 7, "triggerDate.weekday") + key = f'"{event_name}:{trigger_date["month"]}/{trigger_date["week"]}/{trigger_date["weekday"]}' + if key in event_dates: + errors[idx].append(f"The `{key}` is repeated.") + + event_dates.add(key) + def check_custom_date(event: dict, idx: int): trigger_date: dict = event["triggerDate"] @@ -357,11 +369,11 @@ def check_custom_date(event: dict, idx: int): if date is None: return - date_str = f"{year}/{month}/{date}" - if date_str in event_dates: - errors[idx].append(f"The date `{date_str}` of `{event_name}` is repeated.") + key = f'"{event_name}:{year}/{month}/{date}' + if key in event_dates: + errors[idx].append(f"The `{key}` is repeated.") - event_dates.add(date_str) + event_dates.add(key) date_checker = { -- 2.49.1 From 4dcd6adf4386231f11ce248d7fa41130c6f8baa3 Mon Sep 17 00:00:00 2001 From: tobiichi3227 Date: Thu, 6 Mar 2025 09:10:14 +0800 Subject: [PATCH 3/4] Fix(Fortune): f-string typo --- scripts/check-events.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/scripts/check-events.py b/scripts/check-events.py index a0fe2cb..9ea20d2 100644 --- a/scripts/check-events.py +++ b/scripts/check-events.py @@ -277,7 +277,7 @@ def check_static_date(event: dict, idx: int): idx, trigger_date["date"], 1, DAYSPERMONTH[month], "triggerDate.date" ) - key = f'"{event_name}:{trigger_date["month"]}/{trigger_date["date"]}' + key = f'{event_name}:{trigger_date["month"]}/{trigger_date["date"]}' if key in event_dates: errors[idx].append(f"The `{key}` is repeated.") @@ -315,7 +315,7 @@ def check_cyclical_date(event: dict, idx: int): validate_number(idx, trigger_date["week"], 1, 5, "triggerDate.week") validate_number(idx, trigger_date["weekday"], 1, 7, "triggerDate.weekday") - key = f'"{event_name}:{trigger_date["month"]}/{trigger_date["week"]}/{trigger_date["weekday"]}' + key = f'{event_name}:{trigger_date["month"]}/{trigger_date["week"]}/{trigger_date["weekday"]}' if key in event_dates: errors[idx].append(f"The `{key}` is repeated.") @@ -369,7 +369,7 @@ def check_custom_date(event: dict, idx: int): if date is None: return - key = f'"{event_name}:{year}/{month}/{date}' + key = f'{event_name}:{year}/{month}/{date}' if key in event_dates: errors[idx].append(f"The `{key}` is repeated.") -- 2.49.1 From 27a218a5d26e2e5fdfad976e104cd169d7c39c6a Mon Sep 17 00:00:00 2001 From: tobiichi3227 Date: Thu, 6 Mar 2025 09:18:39 +0800 Subject: [PATCH 4/4] Docs(Fortune): Multiple events supporting --- CONTRIBUTING.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 335db40..775cae2 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -104,6 +104,9 @@ Special events require a more detailed structure. 2. Empty Fields: If there are no fortunes to add, leave the corresponding fields as empty strings (`""`). +3. We support adding multiple special events on the same day, + and the hash function will determine which event will be shown for that day. + ### Adding New Themes #### JSON Theme Structure -- 2.49.1