diff --git a/index.html b/index.html index 4cba51a..4c21229 100644 --- a/index.html +++ b/index.html @@ -17,6 +17,7 @@
+ diff --git a/main.js b/main.js index 1bfee6c..25d10ec 100644 --- a/main.js +++ b/main.js @@ -29,6 +29,9 @@ document.addEventListener('readystatechange', () => { document.getElementById('save').addEventListener('click', () => { saveSchedule(); }); + document.getElementById('alt-text').addEventListener('click', () => { + altText(); + }); document.getElementById('clipboard').addEventListener('click', () => { copyClipboard(); }); @@ -88,6 +91,31 @@ function loadSchedule() { schedule = JSON.parse(atob(saved)); } +function altText() { + let altText = "ari melody LIVE schedule: "; + + const activeDays = Object.keys(schedule.days) + .filter(day => schedule.days[day].enabled) + .reduce((days, day) => (days[day] = schedule.days[day], days), {}); + const nDays = Object.keys(activeDays).length; + for (let i = 0; i < nDays; i++) { + const day = Object.keys(activeDays)[i]; + const slot = schedule.days[day]; + if (!slot.enabled) continue; + + if (i == nDays - 1) + altText += `and `; + altText += slot.title; + if (slot.subtitle.length > 0) + altText += ` (${slot.subtitle})`; + altText += ` on ${day} @ ${slot.time}`; + if (i < nDays - 1) + altText += `, `; + } + + alert(altText); +} + function copyClipboard() { html2canvas(scheduleDOM).then(/** @typeof HTMLCanvasElement */ canvas => { canvas.toBlob(blob => { diff --git a/style.css b/style.css index 86f77a7..92c477c 100644 --- a/style.css +++ b/style.css @@ -205,10 +205,6 @@ body { font-size: 2em; } -.timeslot-subtitle { - font-weight: 600; -} - .timeslot.disabled .timeslot-title { font-size: 1.8em; }