Feat(Fortune): Support multiple event in same day (#61)
* Feat(Fortune): Support multiple event in same day * Fix(Fortune): f-string typo * Docs(Fortune): Multiple events supporting
This commit was merged in pull request #61.
This commit is contained in:
@@ -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
|
2. Empty Fields: If there are no fortunes to add, leave the corresponding fields
|
||||||
as empty strings (`""`).
|
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
|
### Adding New Themes
|
||||||
|
|
||||||
#### JSON Theme Structure
|
#### JSON Theme Structure
|
||||||
|
|||||||
@@ -268,6 +268,7 @@ const J_ip_to_fortune = $("#ip-to-fortune");
|
|||||||
|
|
||||||
let special = false;
|
let special = false;
|
||||||
let special_events_index = 0;
|
let special_events_index = 0;
|
||||||
|
let current_day_special_events = [];
|
||||||
|
|
||||||
// init page
|
// init page
|
||||||
async function init_page() {
|
async function init_page() {
|
||||||
@@ -315,9 +316,14 @@ async function init_page() {
|
|||||||
eventIndexList[j] = i;
|
eventIndexList[j] = i;
|
||||||
} else if (diffCount === 0) {
|
} else if (diffCount === 0) {
|
||||||
special = true;
|
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
|
// if there is upcoming event then show
|
||||||
for (let eventIndex = 0; eventIndex < showSpecialEventCount; eventIndex++) {
|
for (let eventIndex = 0; eventIndex < showSpecialEventCount; eventIndex++) {
|
||||||
if (eventIndexList[eventIndex] != -1) {
|
if (eventIndexList[eventIndex] != -1) {
|
||||||
|
|||||||
@@ -277,6 +277,12 @@ def check_static_date(event: dict, idx: int):
|
|||||||
idx, trigger_date["date"], 1, DAYSPERMONTH[month], "triggerDate.date"
|
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):
|
def check_cyclical_date(event: dict, idx: int):
|
||||||
trigger_date: dict = event["triggerDate"]
|
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["week"], 1, 5, "triggerDate.week")
|
||||||
validate_number(idx, trigger_date["weekday"], 1, 7, "triggerDate.weekday")
|
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):
|
def check_custom_date(event: dict, idx: int):
|
||||||
trigger_date: dict = event["triggerDate"]
|
trigger_date: dict = event["triggerDate"]
|
||||||
@@ -357,11 +369,11 @@ def check_custom_date(event: dict, idx: int):
|
|||||||
if date is None:
|
if date is None:
|
||||||
return
|
return
|
||||||
|
|
||||||
date_str = f"{year}/{month}/{date}"
|
key = f'{event_name}:{year}/{month}/{date}'
|
||||||
if date_str in event_dates:
|
if key in event_dates:
|
||||||
errors[idx].append(f"The date `{date_str}` of `{event_name}` is repeated.")
|
errors[idx].append(f"The `{key}` is repeated.")
|
||||||
|
|
||||||
event_dates.add(date_str)
|
event_dates.add(key)
|
||||||
|
|
||||||
|
|
||||||
date_checker = {
|
date_checker = {
|
||||||
|
|||||||
Reference in New Issue
Block a user