* Dataview query page can export data.

This commit is contained in:
songchenxuan
2023-06-30 14:09:40 +08:00
parent 67dcc076af
commit 1e6dd6eb45
3 changed files with 43 additions and 24 deletions
+40 -23
View File
@@ -2,35 +2,52 @@ $(function()
{
if(rawMethod !== 'create') return;
var createModal = new $.zui.ModalTrigger({url: createLink('dataview', 'create', 'step=create', '', true), type: 'iframe', width: 480});
var exportModal = new $.zui.ModalTrigger({url: createLink('dataview', 'export', 'type=query', '', true), type: 'iframe', width: 900});
document.getElementById('saveButton').addEventListener('click', function(e)
{
$.ajaxSettings.async = false;
query();
$.ajaxSettings.async = true;
e.preventDefault();
if($('#dataform .error').length == $('#dataform .error.hidden').length)
{
var params = $('#dataform').serializeArray();
tryQuery(e);
showModel(createModal);
});
getFieldSettings();
/* Fix bug #26716. */
var fieldSettings = DataStorage.clone('fieldSettings');
for(let index in fieldSettings)
{
if(!Object.keys(DataStorage.fields).includes(index)) delete fieldSettings[index];
}
DataStorage.fieldSettings = fieldSettings;
sessionStorage.setItem('dataviewSql', JSON.stringify(params));
sessionStorage.setItem('fieldSettings', JSON.stringify(fieldSettings));
sessionStorage.setItem('langs', JSON.stringify(DataStorage.langs));
createModal.show();
}
document.getElementById('export').addEventListener('click', function(e)
{
tryQuery(e);
showModel(exportModal);
});
});
function tryQuery(e)
{
$.ajaxSettings.async = false;
query();
$.ajaxSettings.async = true;
e.preventDefault();
}
function showModel(objModel)
{
if($('#dataform .error').length == $('#dataform .error.hidden').length)
{
var params = $('#dataform').serializeArray();
getFieldSettings();
/* Fix bug #26716. */
var fieldSettings = DataStorage.clone('fieldSettings');
for(let index in fieldSettings)
{
if(!Object.keys(DataStorage.fields).includes(index)) delete fieldSettings[index];
}
DataStorage.fieldSettings = fieldSettings;
sessionStorage.setItem('dataviewSql', JSON.stringify(params));
sessionStorage.setItem('fieldSettings', JSON.stringify(fieldSettings));
sessionStorage.setItem('langs', JSON.stringify(DataStorage.langs));
objModel.show();
}
}
function locate(method, params)
{
var link = createLink('dataview', method, params);
+2
View File
@@ -40,6 +40,7 @@ function query(callback) {
$('#querying').addClass('hidden');
if(resp.result !== 'success')
{
$('#export').addClass('hidden');
var message = resp.message.errorInfo ? resp.message.errorInfo[2] : resp.message;
$('.error').removeClass('hidden');
$('.error td').html(message);
@@ -47,6 +48,7 @@ function query(callback) {
}
else
{
$('#export').removeClass('hidden');
DataStorage.fields = resp.fields;
DataStorage.columns = resp.columns;
DataStorage.rows = resp.rows;
+1 -1
View File
@@ -31,7 +31,7 @@ window.DataStorage = initStorage(
</div>
</div>
<div class="create-action pull-right">
<?php $iframe = $app->rawMethod == 'create' ? 'iframe' : ''?>
<?php if(common::hasPriv('dataview', 'export')) echo html::a('#', "<i class='icon icon-export'></i> {$lang->dataview->export}", '', "id='export' class='hidden btn btn-link'");?>
<?php if($app->rawMethod == 'create') echo html::a($saveLink, '<i class="icon icon-save"></i> ' . $lang->save, '', "class='btn btn-primary' id='saveButton'");?>
<?php if($app->rawMethod != 'create') echo '<button type="button" class="btn btn-primary" id="save"><i class="icon icon-save"></i> ' . $lang->save. '</button>';?>
</div>