var dates var parts = [ 'nieuwe namen', 'nieuwe woorden', 'personen', 'locaties', 'organisaties', 'andere namen', ] var sources = ['Algemeen', 'Amsterdam', 'Groningen', 'Literatuur', 'Vlaanderen'] var data = new Map() function sleep(ms) { return new Promise((resolve) => setTimeout(resolve, ms)) } function getJSON(url) { return new Promise(function (resolve, reject) { var xhr = new XMLHttpRequest() xhr.open('get', url, true) xhr.responseType = 'json' xhr.onload = function () { var status = xhr.status if (status == 200) { resolve(xhr.response) } else { reject(status) } } xhr.send() }) } function escape(s) { return s .replace('&', '&') .replace("'", ''') .replace('<', '<') .replace('>', '>') } function makeTD(title, values) { const td = document.createElement('td') const h3 = document.createElement('h3') const txt = document.createTextNode(title) h3.appendChild(txt) td.appendChild(h3) const tab = document.createElement('table') var max for (var i = 0; i < 20; i++) { var value if (i < values.length) { value = values[i] } else { value = [0, '\xa0', '', '', ''] } if (i == 0) { max = value[0] } const tr = document.createElement('tr') if (i < values.length) { var t2 = '' if (value[2]) { tr.classList.add('tags') t2 = '
' + escape(value[2]) + '' } var t3 = '' if (value[3] && value[4]) { t3 = '
lemma: ' + escape(value[3]) + '
postag: ' + escape(value[4]) + '
' } tr.setAttribute( 'onmouseover', "tooltip.show('" + value[0] + ' \xa0 ' + escape(value[1]) + t2 + t3 + "')", ) tr.setAttribute('onmouseout', 'tooltip.hide()') } const td1 = document.createElement('td') const div1 = document.createElement('div') pc = (value[0] / max) * 100 div1.style.width = pc + '%' td1.appendChild(div1) tr.appendChild(td1) const td2 = document.createElement('td') const txt2 = document.createTextNode(value[1]) td2.appendChild(txt2) tr.appendChild(td2) tab.appendChild(tr) } td.appendChild(tab) return td } async function loadSource(source, week) { if (!data.has(week)) { data[week] = await getJSON('DATA-' + week + '-4.json') } document.getElementById('subtitle').innerHTML = source + ' — t/m ' + data[week].last const d = document.createElement('div') const tab = document.createElement('table') tab.classList.add('outer') tr = document.createElement('tr') parts.forEach(function (part) { var values = data[week][source][part] tr.appendChild(makeTD(part, values)) }) tab.appendChild(tr) d.appendChild(tab) document.getElementById('data').innerHTML = d.innerHTML } async function loadPart(part, week) { if (!data.has(week)) { data[week] = await getJSON('DATA-' + week + '-4.json') } document.getElementById('subtitle').innerHTML = part + ' — t/m ' + data[week].last const d = document.createElement('div') const tab = document.createElement('table') tab.classList.add('outer') tr = document.createElement('tr') sources.forEach(function (source) { var values = data[week][source][part] tr.appendChild(makeTD(source, values)) }) tab.appendChild(tr) d.appendChild(tab) document.getElementById('data').innerHTML = d.innerHTML } async function loadWeken(source, part) { document.getElementById('subtitle').innerHTML = source + ' — ' + part const d = document.createElement('div') const tab = document.createElement('table') tab.classList.add('outer') tr = document.createElement('tr') for (var i = 0; i < 6; i++) { if (i < dates.length) { var week = dates[i] if (!data.has(week)) { data[week] = await getJSON('DATA-' + week + '-4.json') } var values = data[week][source][part] tr.appendChild(makeTD('t/m ' + data[week].last, values)) } } tab.appendChild(tr) d.appendChild(tab) document.getElementById('data').innerHTML = d.innerHTML } async function kies() { let source = document.forms['choice']['rSource'].value let part = document.forms['choice']['rPart'].value if ((source == 'alles' || source == '') && (part == 'alles' || part == '')) { alert('Kies een bron en/of een onderdeel') return } const dd = document.getElementById('data') const st = document.getElementById('subtitle') dd.classList.add('fade') st.classList.add('fade') await sleep(20) if (source == 'alles' || source == '') { loadPart(part, dates[0]) } else if (part == 'alles' || part == '') { loadSource(source, dates[0]) } else { loadWeken(source, part) } dd.classList.remove('fade') st.classList.remove('fade') } async function init() { dates = await getJSON('index4.json') loadSource('Algemeen', dates[0]) } init()