diff --git a/InvenTree/templates/js/translated/tables.js b/InvenTree/templates/js/translated/tables.js index b295c3f89a..9fb5b668d1 100644 --- a/InvenTree/templates/js/translated/tables.js +++ b/InvenTree/templates/js/translated/tables.js @@ -31,33 +31,53 @@ function reloadtable(table) { * - The table has been loaded using the inventreeTable() function, not bootstrapTable() * (Refer to the "reloadTableFilters" function to see why!) */ -function downloadTableData(table) { +function downloadTableData(table, opts={}) { // Extract table configuration options - var options = table.bootstrapTable('getOptions'); + var table_options = table.bootstrapTable('getOptions'); - var url = options.url; + var url = table_options.url; if (!url) { console.log("Error: downloadTableData could not find 'url' parameter"); } - var query_params = options.query_params || {}; + var query_params = table_options.query_params || {}; url += '?'; - for (const [key, value] of Object.entries(query_params)) { - url += `${key}=${value}&`; - } + constructFormBody({}, { + title: opts.title || '{% trans "Export Table Data" %}', + fields: { + format: { + label: '{% trans "Format" %}', + help_text: '{% trans "Select File Format" %}', + required: true, + type: 'choice', + value: 'csv', + choices: exportFormatOptions(), + } + }, + onSubmit: function(fields, form_options) { + var format = getFormFieldValue('format', fields['format'], form_options); + + // Hide the modal + $(form_options.modal).modal('hide'); - var format = 'csv'; - - url += `export=${format}`; - - location.href = url; + for (const [key, value] of Object.entries(query_params)) { + url += `${key}=${value}&`; + } + + url += `export=${format}`; + + location.href = url; + } + }); } + + /** * Render a URL for display * @param {String} text