const tbody = document.getElementById('tbody'); function newEl(tagname, content) { const cell = document.createElement(tagname); if (content instanceof Node) cell.appendChild(content); else cell.textContent = content; return cell; } (async function() { const data = await (await fetch('proposals.json')).json(); data.forEach(proposal => { const row = document.createElement('tr'); const statusCell = newEl('td', proposal.status); statusCell.className = 'status-' + proposal.status; row.appendChild(statusCell); let date = '???'; if (proposal.status == 'voting' || proposal.status == 'approved' || proposal.status == 'rejected') { date = proposal.vote_start; } else if (proposal.status == 'proposed') { date = proposal.rfc_start; } else { date = proposal.draft_start; } row.appendChild(newEl('td', date)); const link = newEl('a', proposal.name); link.href = 'https://wiki.openstreetmap.org/wiki/' + proposal.page_title.replaceAll(' ', '_'); row.appendChild(newEl('td', link)); row.appendChild(newEl('td', proposal.authors)); tbody.appendChild(row); }); })();