Widget:AvailableCritters: Difference between revisions
Jump to navigation
Jump to search
Marblemadmax (talk | contribs) mNo edit summary |
Marblemadmax (talk | contribs) mNo edit summary |
||
Line 62: | Line 62: | ||
// Function to check if a critter is available | // Function to check if a critter is available | ||
function isAvailable(critter, day, hour) { | function isAvailable(critter, day, hour) { | ||
const times = critters[critter][day]; | |||
if (!times) return false; // 'n/a' or undefined | |||
if (times === 'All day') return true; | |||
const [start, end] = times.split(' to '); | |||
const startHour = parseHour(start); | |||
const endHour = parseHour(end); | |||
return hour >= startHour && hour < endHour; | |||
} | } | ||
// Helper function to parse hour string to 24-hour format number | // Helper function to parse hour string to 24-hour format number | ||
function parseHour(timeStr) { | function parseHour(timeStr) { | ||
const [time, period] = timeStr.split(' '); | |||
let [hours, minutes] = time.split(':'); | |||
hours = parseInt(hours); | |||
if (period === 'PM' && hours !== 12) hours += 12; | |||
if (period === 'AM' && hours === 12) hours = 0; | |||
return hours; | |||
} | } | ||
// Function to update the gallery | // Function to update the gallery | ||
function updateGallery() { | function updateGallery() { | ||
const now = new Date(); | |||
const dayOfWeek = now.toLocaleString('en-US', { weekday: 'long' }); // Get day name | |||
const hour = now.getHours(); // Get current hour in 24-hour format | |||
let galleryContent = ''; | |||
for (const [critter, _] of Object.entries(critters)) { | |||
if (isAvailable(critter, dayOfWeek, hour)) { | |||
galleryContent += `File:${critter.replace(/ /g, '_')}.png|link=${critter}\n`; | |||
} | |||
} | } | ||
// Assuming you have a div with id 'critterGallery' to host the gallery | |||
const galleryContainer = document.getElementById('critterGallery'); | |||
if (galleryContainer) { | |||
galleryContainer.innerHTML = `<gallery widths="50px" heights="50px" class="clothesgallery">${galleryContent}</gallery>`; | |||
} | |||
} | } | ||
// | // Listen for the wikipage.content hook to update the gallery after MediaWiki processes the content | ||
mw.hook('wikipage.content').add(function ($content) { | |||
updateGallery(); | updateGallery(); | ||
}); | |||
// Update the gallery immediately on script load, in case it's not triggered by mw.hook | |||
updateGallery(); | |||
</script> | </script> |
Revision as of 20:05, 29 April 2024
<script> // Data structure for critters and their availability const critters = {
"Emerald Sunbird": { "Sunday": "12 PM to 12 AM", "Tuesday": "All day", "Wednesday": "All day", "Saturday": "All day" }, "Golden Sunbird": { "Sunday": "12 AM to 12 PM", "Tuesday": "All day", "Thursday": "All day", "Friday": "All day" }, "Orchid Sunbird": { "Friday": "9 AM to 3 PM" }, "Red Sunbird": { "Sunday": "12 PM to 12 AM", "Monday": "All day", "Thursday": "All day", "Saturday": "All day" }, "Turquoise Sunbird": { "Sunday": "12 AM to 12 PM", "Monday": "All day", "Wednesday": "All day", "Friday": "All day" }, "Black Squirrel": { "Sunday": "12 AM to 12 PM", "Tuesday": "All day", "Thursday": "All day", "Friday": "All day" }, "Classic Squirrel": { "Sunday": "12 PM to 12 AM", "Monday": "All day", "Thursday": "All day", "Saturday": "All day" }, "Gray Squirrel": { "Sunday": "12 PM to 12 AM", "Tuesday": "All day", "Wednesday": "All day", "Saturday": "All day" }, "Red Squirrel": { "Sunday": "12 AM to 12 PM", "Monday": "All day", "Wednesday": "All day", "Friday": "All day" }, "White Squirrel": { "Sunday": "12 AM to 6 AM" }, "Blue Crocodile": { "Sunday": "12 AM to 12 PM", "Monday": "All day", "Wednesday": "All day", "Friday": "All day" }, "Classic Crocodile": { "Sunday": "12 PM to 12 AM", "Monday": "All day", "Thursday": "All day", "Saturday": "All day" }, "Golden Crocodile": { "Sunday": "12 AM to 12 PM", "Tuesday": "All day", "Thursday": "All day", "Friday": "All day" }, "Pink Crocodile": { "Saturday": "6 AM to 12 PM" }, "Red Crocodile": { "Sunday": "12 PM to 12 AM", "Tuesday": "All day", "Wednesday": "All day", "Saturday": "All day" }, "White Crocodile": { "Sunday": "6 PM to 12 AM" }, "Black Rabbit": { "Sunday": "12 AM to 12 PM", "Monday": "All day", "Wednesday": "All day", "Friday": "All day" }, "Brown Rabbit": { "Sunday": "12 PM to 12 AM", "Tuesday": "All day", "Wednesday": "All day", "Saturday": "All day" }, "Calico Rabbit": { "Thursday": "8 AM to 2 PM" }, "Classic Rabbit": { "Sunday": "12 PM to 12 AM", "Monday": "All day", "Thursday": "All day", "Saturday": "All day" }, "White Rabbit": { "Sunday": "12 AM to 12 PM", "Tuesday": "All day", "Thursday": "All day", "Friday": "All day" }, "Blue Raven": { "Sunday": "12 AM to 12 PM", "Tuesday": "All day", "Thursday": "All day", "Friday": "All day" }, "Brown Raven": { "Tuesday": "6 PM to 12 AM" }, "Classic Raven": { "Sunday": "12 PM to 12 AM", "Monday": "All day", "Thursday": "All day", "Saturday": "All day" }, "Red Raven": { "Sunday": "12 AM to 12 PM", "Monday": "All day", "Wednesday": "All day", "Friday": "All day" }, "White Raven": { "Sunday": "12 PM to 12 AM", "Tuesday": "All day", "Wednesday": "All day", "Saturday": "All day" }, "Black Sea Turtle": { "Monday": "10 AM to 4 PM" }, "Brown Sea Turtle": { "Sunday": "12 AM to 12 PM", "Monday": "All day", "Wednesday": "All day", "Friday": "All day" }, "Classic Sea Turtle": { "Sunday": "12 PM to 12 AM", "Monday": "All day", "Thursday": "All day", "Saturday": "All day" }, "Purple Sea Turtle": { "Sunday": "12 AM to 12 PM", "Tuesday": "All day", "Thursday": "All day", "Friday": "All day" }, "White Sea Turtle": { "Sunday": "12 PM to 12 AM", "Tuesday": "All day", "Wednesday": "All day", "Saturday": "All day" }, "Black Fox": { "Sunday": "12 PM to 12 AM", "Tuesday": "All day", "Wednesday": "All day", "Saturday": "All day" }, "Blue Fox": { "Sunday": "12 AM to 12 PM", "Tuesday": "All day", "Thursday": "All day", "Friday": "All day" }, "Classic Fox": { "Sunday": "12 AM to 12 PM", "Monday": "All day", "Wednesday": "All day", "Friday": "All day" }, "Red Fox": { "Saturday": "2 AM to 8 AM" }, "White Fox": { "Sunday": "12 PM to 12 AM", "Monday": "All day", "Thursday": "All day", "Saturday": "All day" }, "Black Raccoon": { "Sunday": "12 PM to 12 AM", "Tuesday": "All day", "Wednesday": "All day", "Saturday": "All day" }, "Blue Raccoon": { "Wednesday": "4 PM to 10 PM" }, "Classic Raccoon": { "Sunday": "12 PM to 12 AM", "Monday": "All day", "Thursday": "All day", "Saturday": "All day" }, "Red Raccoon": { "Sunday": "12 AM to 12 PM", "Monday": "All day", "Wednesday": "All day", "Friday": "All day" }, "White Raccoon": { "Sunday": "12 AM to 12 PM", "Tuesday": "All day", "Thursday": "All day", "Friday": "All day" }, "Black and White Capybara": { "Sunday": "12 PM to 12 AM", "Tuesday": "All day", "Thursday": "12 PM to 12 AM", "Friday": "12 PM to 12 AM", "Saturday": "12 PM to 12 AM" }, "Blue Striped Capybara": { "Monday": "12 AM to 12 PM", "Tuesday": "12 AM to 12 PM", "Wednesday": "12 AM to 12 PM", "Thursday": "All day", "Saturday": "All day" }, "Classic Capybara": { "Sunday": "All day", "Monday": "All day", "Tuesday": "All day", "Wednesday": "All day", "Thursday": "All day", "Friday": "All day", "Saturday": "All day" }, "Gray Spotted Capybara": { "Monday": "12 PM to 12 AM", "Tuesday": "12 PM to 12 AM", "Wednesday": "12 PM to 12 AM", "Friday": "All day", "Saturday": "All day" }, "Red and White Striped Capybara": { "Saturday": "12 PM to 6 PM" }, "Blue and Red Striped Cobra": { "Sunday": "All day", "Monday": "12 PM to 12 AM", "Tuesday": "12 PM to 12 AM", "Thursday": "All day", "Saturday": "12 PM to 12 AM" }, "Classic Cobra": { "Sunday": "All day", "Monday": "All day", "Tuesday": "All day", "Wednesday": "All day", "Thursday": "All day", "Friday": "All day", "Saturday": "All day" }, "Green and White Striped Cobra": { "Thursday": "6 AM to 12 PM" }, "Pink Spotted Cobra": { "Sunday": "12 AM to 12 PM", "Monday": "All day", "Wednesday": "12 AM to 12 PM", "Thursday": "12 AM to 12 PM", "Friday": "All day" }, "Yellow and Purple Striped Cobra": { "Sunday": "12 PM to 12 AM", "Tuesday": "All day", "Wednesday": "12 PM to 12 AM", "Thursday": "12 PM to 12 AM", "Saturday": "All day" }, "Beige Monkey": { "Sunday": "All day", "Monday": "12 PM to 12 AM", "Wednesday": "12 PM to 12 AM", "Thursday": "All day", "Friday": "12 PM to 12 AM" }, "Black and Brown Monkey": { "Sunday": "12 PM to 12 AM", "Tuesday": "12 PM to 12 AM", "Wednesday": "All day", "Thursday": "12 PM to 12 AM", "Saturday": "All day" }, "Black and Gray Monkey": { "Tuesday": "6 PM to 12 AM" }, "Classic Monkey": { "Sunday": "All day", "Monday": "All day", "Tuesday": "All day", "Wednesday": "All day", "Thursday": "All day", "Friday": "All day", "Saturday": "All day" }, "Red and Beige Monkey": { "Monday": "12 AM to 12 PM", "Tuesday": "All day", "Wednesday": "12 AM to 12 PM", "Friday": "12 AM to 12 PM", "Saturday": "All day" }
};
// Function to check if a critter is available function isAvailable(critter, day, hour) {
const times = critters[critter][day]; if (!times) return false; // 'n/a' or undefined if (times === 'All day') return true; const [start, end] = times.split(' to '); const startHour = parseHour(start); const endHour = parseHour(end); return hour >= startHour && hour < endHour;
}
// Helper function to parse hour string to 24-hour format number function parseHour(timeStr) {
const [time, period] = timeStr.split(' '); let [hours, minutes] = time.split(':'); hours = parseInt(hours); if (period === 'PM' && hours !== 12) hours += 12; if (period === 'AM' && hours === 12) hours = 0; return hours;
}
// Function to update the gallery function updateGallery() {
const now = new Date(); const dayOfWeek = now.toLocaleString('en-US', { weekday: 'long' }); // Get day name const hour = now.getHours(); // Get current hour in 24-hour format
let galleryContent = ; for (const [critter, _] of Object.entries(critters)) { if (isAvailable(critter, dayOfWeek, hour)) { galleryContent += `File:${critter.replace(/ /g, '_')}.png|link=${critter}\n`; } }
// Assuming you have a div with id 'critterGallery' to host the gallery const galleryContainer = document.getElementById('critterGallery'); if (galleryContainer) {
galleryContainer.innerHTML = `
`;
}
}
// Listen for the wikipage.content hook to update the gallery after MediaWiki processes the content mw.hook('wikipage.content').add(function ($content) {
updateGallery();
});
// Update the gallery immediately on script load, in case it's not triggered by mw.hook updateGallery(); </script>