Widget:AvailableCritters: Difference between revisions
Jump to navigation
Jump to search
Marblemadmax (talk | contribs) No edit summary |
Marblemadmax (talk | contribs) mNo edit summary |
||
(15 intermediate revisions by the same user not shown) | |||
Line 1: | Line 1: | ||
<script> | <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 isAvailable(critter, day, hour) { | |||
const availability = critters[critter][day]; | |||
if (!availability) return false; // 'n/a' or undefined | |||
if (availability === 'All day') return true; | |||
const [start, end] = availability.split(' to '); | |||
const startHour = parseHour(start); | |||
const endHour = parseHour(end); | |||
return hour >= startHour && hour < endHour; | |||
} | |||
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 updateCritterList() { | |||
const now = new Date(); | |||
const dayOfWeek = now.toLocaleString('en-US', { weekday: 'long' }); | |||
const hour = now.getHours(); | |||
let listContent = ''; | |||
Object.entries(critters).forEach(([critterName, _]) => { | |||
if (isAvailable(critterName, dayOfWeek, hour)) { | |||
listContent += `{{name|${critterName}}}<br>`; | |||
} | |||
}); | |||
parseContent(listContent); | |||
} | |||
function parseContent(wikitext) { | |||
const apiEndpoint = "/api.php"; | |||
const params = new URLSearchParams({ | |||
action: 'parse', | |||
format: 'json', | |||
contentmodel: 'wikitext', | |||
text: wikitext, | |||
prop: 'text' | |||
}); | }); | ||
fetch(apiEndpoint + "?" + params.toString(), { | |||
method: 'POST', | |||
credentials: 'same-origin' | |||
}) | |||
.then(response => response.json()) | |||
.then(data => { | |||
const parsedHtml = data.parse.text['*']; | |||
document.getElementById('critterList').innerHTML = parsedHtml; | |||
}) | |||
.catch(error => console.error('Error parsing content:', error)); | |||
} | |||
window.addEventListener('load', function() { | |||
updateCritterList(); // Initial update | |||
setInterval(updateCritterList, 60000); // Refresh every minute | |||
}); | }); | ||
</script> | </script> |
Latest revision as of 21:14, 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 isAvailable(critter, day, hour) { const availability = critters[critter][day]; if (!availability) return false; // 'n/a' or undefined if (availability === 'All day') return true; const [start, end] = availability.split(' to '); const startHour = parseHour(start); const endHour = parseHour(end); return hour >= startHour && hour < endHour; }
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 updateCritterList() { const now = new Date(); const dayOfWeek = now.toLocaleString('en-US', { weekday: 'long' }); const hour = now.getHours(); let listContent = ;
Object.entries(critters).forEach(([critterName, _]) => { if (isAvailable(critterName, dayOfWeek, hour)) { listContent += `[[File:${critterName.png|20x20px|alt=|link=]] [[${critterName]]}
`; } });
parseContent(listContent); }
function parseContent(wikitext) { const apiEndpoint = "/api.php"; const params = new URLSearchParams({ action: 'parse', format: 'json', contentmodel: 'wikitext', text: wikitext, prop: 'text' });
fetch(apiEndpoint + "?" + params.toString(), { method: 'POST', credentials: 'same-origin' }) .then(response => response.json()) .then(data => { const parsedHtml = data.parse.text['*']; document.getElementById('critterList').innerHTML = parsedHtml; }) .catch(error => console.error('Error parsing content:', error)); }
window.addEventListener('load', function() { updateCritterList(); // Initial update setInterval(updateCritterList, 60000); // Refresh every minute });
</script>