Add feature to "download rows for results" in master index view
This commit is contained in:
parent
bcb4bda7e6
commit
e0d1e39824
2 changed files with 404 additions and 2 deletions
|
@ -18,6 +18,15 @@
|
|||
<script type="text/javascript">
|
||||
$(function() {
|
||||
|
||||
% if download_results_rows_path:
|
||||
function downloadResultsRowsRedirect() {
|
||||
location.href = '${url('{}.download_results_rows'.format(route_prefix))}?filename=${h.os.path.basename(download_results_rows_path)}';
|
||||
}
|
||||
// we give this 1 second before attempting the redirect; so this
|
||||
// way the page should fully render before redirecting
|
||||
window.setTimeout(downloadResultsRowsRedirect, 1000);
|
||||
% endif
|
||||
|
||||
$('.grid-wrapper').gridwrapper();
|
||||
|
||||
% if master.deletable and request.has_perm('{}.delete'.format(permission_prefix)) and master.delete_confirm == 'simple':
|
||||
|
@ -55,6 +64,20 @@
|
|||
|
||||
% endif
|
||||
|
||||
% if master.has_rows and master.results_rows_downloadable:
|
||||
|
||||
$('#download-row-results-button').click(function() {
|
||||
if (confirm("This will generate an Excel file which contains "
|
||||
+ "not the results themselves, but the *rows* for "
|
||||
+ "each.\n\nAre you sure you want this?")) {
|
||||
disable_button(this);
|
||||
var form = $(this).parents('form');
|
||||
form.submit();
|
||||
}
|
||||
});
|
||||
|
||||
% endif
|
||||
|
||||
% if master.bulk_deletable and request.has_perm('{}.bulk_delete'.format(permission_prefix)):
|
||||
|
||||
$('form[name="bulk-delete"] button').click(function() {
|
||||
|
@ -292,6 +315,29 @@
|
|||
% endif
|
||||
% endif
|
||||
|
||||
## download rows for search results
|
||||
% if master.has_rows and master.results_rows_downloadable:
|
||||
% if use_buefy:
|
||||
<b-button type="is-primary"
|
||||
icon-pack="fas"
|
||||
icon-left="fas fa-download"
|
||||
@click="downloadResultsRows()"
|
||||
:disabled="downloadResultsRowsButtonDisabled">
|
||||
{{ downloadResultsRowsButtonText }}
|
||||
</b-button>
|
||||
${h.form(url('{}.download_results_rows'.format(route_prefix)), ref='downloadResultsRowsForm')}
|
||||
${h.csrf_token(request)}
|
||||
${h.end_form()}
|
||||
% else:
|
||||
${h.form(url('{}.download_results_rows'.format(route_prefix)))}
|
||||
${h.csrf_token(request)}
|
||||
<button type="button" id="download-row-results-button">
|
||||
Download Rows for Results
|
||||
</button>
|
||||
${h.end_form()}
|
||||
% endif
|
||||
% endif
|
||||
|
||||
## merge 2 objects
|
||||
% if master.mergeable and request.has_perm('{}.merge'.format(permission_prefix)):
|
||||
|
||||
|
@ -413,6 +459,13 @@
|
|||
</b-notification>
|
||||
% endif
|
||||
|
||||
% if download_results_rows_path:
|
||||
<b-notification type="is-info">
|
||||
Your download should start automatically, or you can
|
||||
${h.link_to("click here", '{}?filename={}'.format(url('{}.download_results_rows'.format(route_prefix)), h.os.path.basename(download_results_rows_path)))}
|
||||
</b-notification>
|
||||
% endif
|
||||
|
||||
<${grid.component} :csrftoken="csrftoken"
|
||||
% if master.deletable and request.has_perm('{}.delete'.format(permission_prefix)) and master.delete_confirm == 'simple':
|
||||
@deleteActionClicked="deleteObject"
|
||||
|
@ -465,6 +518,19 @@
|
|||
}
|
||||
% endif
|
||||
|
||||
## maybe auto-redirect to download latest "rows for results" file
|
||||
% if download_results_rows_path and use_buefy:
|
||||
ThisPage.methods.downloadResultsRowsRedirect = function() {
|
||||
location.href = '${url('{}.download_results_rows'.format(route_prefix))}?filename=${h.os.path.basename(download_results_rows_path)}';
|
||||
}
|
||||
ThisPage.mounted = function() {
|
||||
// we give this 1 second before attempting the redirect; otherwise
|
||||
// the FontAwesome icons do not seem to load properly. so this way
|
||||
// the page should fully render before redirecting
|
||||
window.setTimeout(this.downloadResultsRowsRedirect, 1000)
|
||||
}
|
||||
% endif
|
||||
|
||||
## TODO: stop checking for buefy here once we only have the one session.pop()
|
||||
% if use_buefy and request.session.pop('{}.results_csv.generated'.format(route_prefix), False):
|
||||
ThisPage.mounted = function() {
|
||||
|
@ -565,6 +631,23 @@
|
|||
}
|
||||
% endif
|
||||
|
||||
## download rows for results
|
||||
% if master.has_rows and master.results_rows_downloadable and master.has_perm('download_results_rows'):
|
||||
|
||||
${grid.component_studly}Data.downloadResultsRowsButtonDisabled = false
|
||||
${grid.component_studly}Data.downloadResultsRowsButtonText = "Download Rows for Results"
|
||||
|
||||
${grid.component_studly}.methods.downloadResultsRows = function() {
|
||||
if (confirm("This will generate an Excel file which contains "
|
||||
+ "not the results themselves, but the *rows* for "
|
||||
+ "each.\n\nAre you sure you want this?")) {
|
||||
this.downloadResultsRowsButtonDisabled = true
|
||||
this.downloadResultsRowsButtonText = "Working, please wait..."
|
||||
this.$refs.downloadResultsRowsForm.submit()
|
||||
}
|
||||
}
|
||||
% endif
|
||||
|
||||
## enable / disable selected objects
|
||||
% if master.supports_set_enabled_toggle and master.has_perm('enable_disable_set'):
|
||||
|
||||
|
@ -705,6 +788,17 @@
|
|||
|
||||
% else:
|
||||
## no buefy, so do the traditional thing
|
||||
|
||||
% if download_results_rows_path:
|
||||
<div class="flash-messages">
|
||||
<div class="ui-state-highlight ui-corner-all">
|
||||
<span style="float: left; margin-right: .3em;" class="ui-icon ui-icon-info"></span>
|
||||
Your download should start automatically, or you can
|
||||
${h.link_to("click here", '{}?filename={}'.format(url('{}.download_results_rows'.format(route_prefix)), h.os.path.basename(download_results_rows_path)))}
|
||||
</div>
|
||||
</div>
|
||||
% endif
|
||||
|
||||
${grid.render_complete(tools=capture(self.grid_tools).strip(), context_menu=capture(self.context_menu_items).strip())|n}
|
||||
|
||||
% if master.deletable and request.has_perm('{}.delete'.format(permission_prefix)) and master.delete_confirm == 'simple':
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue