Difference between revisions of "Widget:DataExporter"
From LINKS Community Center
Line 30: | Line 30: | ||
const formData = new FormData(document.getElementById('export_form')); | const formData = new FormData(document.getElementById('export_form')); | ||
+ | // Fetch schema and parse it into an export query. | ||
const schemaParams = new URLSearchParams(); | const schemaParams = new URLSearchParams(); | ||
schemaParams.set('action', 'raw'); | schemaParams.set('action', 'raw'); | ||
schemaParams.set('title', 'Category:' + formData.get('library')); | schemaParams.set('title', 'Category:' + formData.get('library')); | ||
+ | const schemaXml = await fetch('/index.php?' + schemaParams.toString()).then(rsp => rsp.text()); | ||
+ | const schema = (new DOMParser).parseFromString(schemaXml, 'text/xml'); | ||
+ | |||
+ | let exportUrl = '[[Category:' + formData.get('library').replaceAll('_', ' ') + ']]'; | ||
+ | |||
+ | for (const field of schema.querySelectorAll('Field')) { | ||
+ | const prop = field.querySelector('semanticmediawiki_Property')?.getAttribute('name') | ||
+ | || field.getAttribute('name'); | ||
+ | const label = field.querySelector('Label')?.textContent; | ||
+ | exportUrl += '|?' + prop; | ||
+ | if (!!label) exportUrl += '=' + label; | ||
+ | exportUrl += '<br>'; | ||
+ | // output.innerHTML += prop + ' | ' + label + '<br>'; | ||
+ | } | ||
+ | output.innerHTML = exportUrl; | ||
const exportParams = new URLSearchParams(); | const exportParams = new URLSearchParams(); | ||
Line 42: | Line 58: | ||
// exportUrl = '/api.php?action=ask&format=spreadsheet&query=[[Category:Use Cases]]'; | // exportUrl = '/api.php?action=ask&format=spreadsheet&query=[[Category:Use Cases]]'; | ||
// exportUrl = '/api.php?action=ask&format=spreadsheet&query=[[Category:Guideline]]'; | // exportUrl = '/api.php?action=ask&format=spreadsheet&query=[[Category:Guideline]]'; | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
// exportUrl += ''; // &fileformat=csv &fileformat=ods &fileformat=xlsx | // exportUrl += ''; // &fileformat=csv &fileformat=ods &fileformat=xlsx |