let structure; let components; let collections; changeVersion('1.15'); function changeVersion(version) { $.getJSON('schemas/' + version + '.json', json => { console.log(json); if (json.root) { structure = json.root; } else if (json.roots) { let id = window.location.pathname.replace(/\/$/, '').replace(/^\//, ''); structure = json.roots.find(e => e.id === id) || json.roots[0] ; } components = json.components; collections = json.collections; }).fail((jqXHR, textStatus, errorThrown) => { let message = 'Failed loading ' + version + ' schema'; structure = { fields: [ { id: 'pools', type: 'error', message: message } ] }; console.error(message + '\n' + errorThrown); }).always(() => { $('#versionLabel').text(version); updateView(); }); } function updateView() { if (structure) { let {out: sourceOut, component: $component} = generateSourceAndView(table, structure); $('#structure').removeClass('d-none').html(''); $('#descriptionSpan').attr('data-i18n', structure.description); $('title').attr('data-i18n', structure.title); $('#structure').append($component); if (i18next.isInitialized) { $('html').localize(); } $('#source').val(JSON.stringify(sourceOut, null, indentation)); } } function generateSourceAndView(data, struct) { if (struct.id === 'loot-table') { $('#lootTableToolbar').removeClass('d-none'); $('#structure').attr('data-index', 'pools'); return generateTable(data, struct); } else { return generateObject(data, struct, false); } } function generateTable(data, struct) { let out = {}; let $el = $('
'); let type = struct.fields.find(e => e.id === 'type'); if (type) { $('.table-type').removeClass('d-none'); $('#tableType').html(''); for (let option of type.values) { $('#tableType').append(setValueAndName($('