Personalizzazione buffer datatables

This commit is contained in:
Thomas Zilio 2019-07-09 12:29:39 +02:00
parent 13f127af7c
commit bfde712708
9 changed files with 70 additions and 29 deletions

View File

@ -7,6 +7,7 @@ use Util\Query;
// Informazioni fondamentali
$columns = filter('columns');
$order = filter('order')[0];
$draw_numer = intval(filter('draw'));
$order['column'] = $order['column'] - 1;
array_shift($columns);
@ -32,6 +33,7 @@ $results = [
'recordsTotal' => 0,
'recordsFiltered' => 0,
'summable' => [],
'draw' => $draw_numer,
];
$query = Query::getQuery($structure);
@ -53,7 +55,9 @@ if (!empty($query)) {
$results['recordsFiltered'] = $data['count'];
// SOMME
$results['summable'] = Util\Query::getSums($structure, $search);
if ($draw_numer == 1) {
$results['summable'] = Util\Query::getSums($structure, $search);
}
// Allineamento delle righe
$align = [];

View File

@ -105,8 +105,6 @@ if (Auth::check()) {
id_module: \''.$id_module.'\',
id_record: \''.$id_record.'\',
order_manager_id: \''.($dbo->isInstalled() ? Modules::get('Stato dei serivizi')['id'] : '').'\',
cifre_decimali: '.setting('Cifre decimali per importi').',
decimals: "'.formatter()->getNumberSeparators()['decimals'].'",
@ -124,7 +122,9 @@ if (Auth::check()) {
ckeditorToolbar: [
["Undo","Redo","-","Cut","Copy","Paste","PasteText","PasteFromWord","-","Scayt", "-","Link","Unlink","-","Bold","Italic","Underline","Superscript","SpecialChar","HorizontalRule","-","JustifyLeft","JustifyCenter","JustifyRight","JustifyBlock","-","NumberedList","BulletedList","Outdent","Indent","Blockquote","-","Styles","Format","Image","Table", "TextColor", "BGColor" ],
],
order_manager_id: \''.($dbo->isInstalled() ? Modules::get('Stato dei serivizi')['id'] : '').'\',
dataload_page_buffer: '.setting('Lunghezza in pagine del buffer Datatables').',
tempo_attesa_ricerche: '.setting('Tempo di attesa ricerche in secondi').',
};
</script>';

View File

@ -172,20 +172,24 @@ $(document).ready(function () {
});
$(".btn-select-all").click(function () {
var table = $(document).find("#" + $(this).parent().parent().parent().data("target")).DataTable();
$("#main_loading").show();
var id = $(document).find("#" + $(this).parent().parent().parent().data("target"));
var table = id.DataTable();
$("#main_loading").show();
table.clear().draw();
$(id).data('page-length', table.page.len());
table.page.len(-1).draw();
});
$(".btn-select-none").click(function () {
var table = $(document).find("#" + $(this).parent().parent().parent().data("target")).DataTable();
var id = $(document).find("#" + $(this).parent().parent().parent().data("target"));
var table = id.DataTable();
table.rows().deselect();
table.page.len(200);
table.page.len($(id).data('page-length'));
});
$(".bulk-action").click(function () {
@ -623,14 +627,14 @@ function start_datatables() {
selector: 'td:first-child'
},
buttons: [{
extend: 'csv',
fieldSeparator: ";",
exportOptions: {
modifier: {
selected: true
extend: 'csv',
fieldSeparator: ";",
exportOptions: {
modifier: {
selected: true
}
}
}
},
},
{
extend: 'copy',
exportOptions: {
@ -689,7 +693,8 @@ function start_datatables() {
},
],
scroller: {
loadingIndicator: true
loadingIndicator: true,
displayBuffer: globals.dataload_page_buffer,
},
ajax: {
url: "ajax_dataload.php?id_module=" + id_module + "&id_plugin=" + id_plugin + "&id_parent=" + id_parent,
@ -699,8 +704,9 @@ function start_datatables() {
return data.data;
}
},
initComplete: function () {
initComplete: function (settings) {
var api = this.api();
api.columns('.search').every(function () {
var column = this;
$('<br><input type="text" style="width:100%" class="form-control" placeholder="' + globals.translations.filter + '..."><i class="deleteicon fa fa-times fa-2x hide"></i>')
@ -753,7 +759,10 @@ function start_datatables() {
$('.deleteicon').on("click", function (e) {
reset($(this).parent().attr("id").replace("th_", ""));
api.page.len(200).draw();
if (api.page.len() == -1){
api.page.len($(id).data('page-length'));
}
});
// Ricerca di base ereditata dalla sessione
@ -827,7 +836,7 @@ function start_datatables() {
$(this.footer()).addClass("text-right");
$(this.footer()).attr("id", "summable");
$(this.footer()).html(sum.summable[i]);
} else $(this.footer()).html("&nbsp;");
}
i++;
});
}

View File

@ -170,7 +170,7 @@ $_SESSION['superselect']['idsede_destinazione'] = $record['idsede_destinazione']
$("#idvettore").attr("required", false);
$("#idvettore").attr("disabled", true);
$("label[for=idvettore]").text("<?php echo tr('Vettore'); ?>");
$("#idvettore").selectReset("<?php echo tr("Seleziona un'opzione") ?>");
$("#idvettore").selectReset("<?php echo tr("Seleziona un'opzione"); ?>");
$("#idvettore").next().next().find("button.bound:nth-child(1)").prop("disabled", true);
}else{
$("#idvettore").attr("required", true);

View File

@ -50,8 +50,8 @@ foreach ($rs as $key => $value) {
$rs[$key]['prezzo'] = Translator::numberToLocale($prezzo);
$rs[$key]['descrizione_intervento'] = strip_tags($rs[$key]['descrizione_intervento']);
if($prezzo <= 0){
unset($rs[$key]);
if ($prezzo <= 0) {
unset($rs[$key]);
}
}

View File

@ -57,8 +57,8 @@ function submodules($list, $depth = 0)
// Possibilità di disinstallare solo se il modulo non è tra quelli predefiniti
if (empty($sub['default'])) {
$result .= "
<a href=\"javascript:;\" class=\"tip\" title=\"".tr('Disinstalla')."...\" onclick=\"if( confirm('".tr('Vuoi disinstallare questo modulo?').' '.tr('Tutti i dati salvati andranno persi!')."') ){ if( confirm('".tr('Sei veramente sicuro?')."') ){ $.post( '".ROOTDIR.'/actions.php?id_module='.$id_module."', { op: 'uninstall', id: '".$sub['id']."' }, function(response){ location.href='".ROOTDIR.'/controller.php?id_module='.$id_module."'; }); } }\">
$result .= '
<a href="javascript:;" class="tip" title="'.tr('Disinstalla')."...\" onclick=\"if( confirm('".tr('Vuoi disinstallare questo modulo?').' '.tr('Tutti i dati salvati andranno persi!')."') ){ if( confirm('".tr('Sei veramente sicuro?')."') ){ $.post( '".ROOTDIR.'/actions.php?id_module='.$id_module."', { op: 'uninstall', id: '".$sub['id']."' }, function(response){ location.href='".ROOTDIR.'/controller.php?id_module='.$id_module."'; }); } }\">
<i class='fa fa-trash'></i>
</a>";
} else {

View File

@ -81,6 +81,11 @@ class Query
}
$date_query = !empty($filters) && !empty(self::$segments) ? ' AND ('.implode(' OR ', $filters).')' : '';
// Sostituzione periodi temporali
preg_match('|segment\((.+?)\)|', $query, $matches);
$segment_name = !empty($matches[1]) ? $matches[1] : 'id_segment';
$segment_filter = !empty($matches[0]) ? $matches[0] : 'segment';
// Elenco delle sostituzioni
$replace = [
// Identificatori
@ -96,7 +101,7 @@ class Query
'|period_end|' => $_SESSION['period_end'],
// Segmenti
'|segment|' => !empty($segment) ? ' AND id_segment = '.prepare($segment) : '',
'|'.$segment_filter.'|' => !empty($segment) ? ' AND '.$segment_name.' = '.prepare($segment) : '',
];
// Sostituzione dei formati

View File

@ -1,8 +1,8 @@
<?php
// Fix del calcolo del bollo
use Modules\Anagrafiche\Anagrafica;
// Fix del calcolo del bollo
$fatture = \Modules\Fatture\Fattura::all();
foreach ($fatture as $fattura) {
$fattura->save();

View File

@ -89,9 +89,6 @@ UPDATE `mg_movimenti` SET `idsede_azienda` = (SELECT `idsede_partenza` FROM `dt_
UPDATE `mg_movimenti` SET `idsede_controparte` = (SELECT `idsede_destinazione` FROM `co_documenti` WHERE `co_documenti`.`id` = `mg_movimenti`.`iddocumento`) WHERE `iddocumento`!=0;
UPDATE `mg_movimenti` SET `idsede_azienda` = (SELECT `idsede_destinazione` FROM `co_documenti` WHERE `co_documenti`.`id` = `mg_movimenti`.`iddocumento`) WHERE `iddocumento`!=0;
-- Aggiungo LEFT e INNER JOIN per ottimizzare la query del modulo Fatture di vendita
UPDATE `zz_modules` SET `options` = 'SELECT |select| FROM `co_documenti` INNER JOIN `co_tipidocumento` ON `co_documenti`.`idtipodocumento` = `co_tipidocumento`.`id` LEFT OUTER JOIN ( SELECT `zz_emails`.`name`, `zz_operations`.`id_record` FROM `zz_operations` INNER JOIN `zz_emails` ON `zz_operations`.`id_email` = `zz_emails`.`id` INNER JOIN `zz_modules` ON `zz_operations`.`id_module` = `zz_modules`.`id` AND `zz_modules`.`name` = \'Fatture di vendita\' AND `zz_operations`.`op` = \'send-email\' LIMIT 1) AS `email` ON `email`.`id_record` = `co_documenti`.`id` WHERE 1=1 AND `dir` = \'entrata\' |segment| AND `data` >= \'|period_start|\' AND `data` <= \'|period_end|\' HAVING 2=2 ORDER BY `data` DESC, CAST(numero_esterno AS UNSIGNED) DESC' WHERE `zz_modules`.`name` = 'Fatture di vendita';
-- Sistemo vista per icon_Inviata modulo Fatture di vendita
UPDATE `zz_views` SET `query` = 'IF(`email`.`name` IS NOT NULL, \'fa fa-envelope text-success\', \'\')' WHERE `zz_views`.`name` = 'icon_Inviata' AND `id_module` = (SELECT `id` FROM `zz_modules` WHERE `name` = 'Fatture di vendita') ;
@ -185,3 +182,29 @@ ALTER TABLE `in_interventi_tecnici` CHANGE `idtipointervento` `idtipointervento`
UPDATE `in_tariffe` INNER JOIN `in_tipiintervento` ON `in_tariffe`.`idtipointervento` = `in_tipiintervento`.`codice` SET `in_tariffe`.`idtipointervento` = `in_tipiintervento`.`idtipointervento`;
ALTER TABLE `in_tariffe` CHANGE `idtipointervento` `idtipointervento` INT(11) NOT NULL, ADD FOREIGN KEY (`idtipointervento`) REFERENCES `in_tipiintervento`(`idtipointervento`);
-- Ottimizzazione query Fatture
UPDATE `zz_modules` SET `options` = 'SELECT |select| FROM `co_documenti`
INNER JOIN `an_anagrafiche` ON `co_documenti`.`idanagrafica` = `an_anagrafiche`.`idanagrafica`
INNER JOIN `co_tipidocumento` ON `co_documenti`.`idtipodocumento` = `co_tipidocumento`.`id`
INNER JOIN `co_statidocumento` ON `co_documenti`.`idstatodocumento` = `co_statidocumento`.`id`
LEFT JOIN `fe_stati_documento` ON `co_documenti`.`codice_stato_fe` = `fe_stati_documento`.`codice`
LEFT JOIN (SELECT `numero_esterno`, `id_segment` FROM `co_documenti` WHERE `co_documenti`.`idtipodocumento` IN(SELECT `id` FROM `co_tipidocumento` WHERE `dir` = ''entrata'') AND `co_documenti`.`data` >= ''2019-01-01'' AND `co_documenti`.`data` <= ''2019-12-31'' GROUP BY `id_segment`, `numero_esterno` HAVING COUNT(`numero_esterno`) > 1) dup ON `co_documenti`.`numero_esterno` = `dup`.`numero_esterno` AND `dup`.`id_segment` = `co_documenti`.`id_segment`
LEFT OUTER JOIN (SELECT `zz_emails`.`name`, `zz_operations`.`id_record` FROM `zz_operations` INNER JOIN `zz_emails` ON `zz_operations`.`id_email` = `zz_emails`.`id` INNER JOIN `zz_modules` ON `zz_operations`.`id_module` = `zz_modules`.`id` AND `zz_modules`.`name` = ''Fatture di vendita'' AND `zz_operations`.`op` = ''send-email'' LIMIT 1) AS `email` ON `email`.`id_record` = `co_documenti`.`id`
WHERE 1=1 AND `dir` = ''entrata'' |segment(co_documenti.id_segment)| AND `co_documenti`.`data` >= ''|period_start|'' AND `co_documenti`.`data` <= ''|period_end|''
HAVING 2=2
ORDER BY `co_documenti`.`data` DESC, CAST(`co_documenti`.`numero_esterno` AS UNSIGNED) DESC' WHERE `name` = 'Fatture di vendita';
UPDATE `zz_views` SET `query` = 'IF(`dup`.`numero_esterno` IS NULL, '''', ''red'')' WHERE `name` = '_bg_' AND `id_module` = (SELECT `id` FROM `zz_modules` WHERE `name` = 'Fatture di vendita');
UPDATE `zz_views` SET `query` = 'an_anagrafiche.idanagrafica' WHERE `name` = 'idanagrafica' AND `id_module` = (SELECT `id` FROM `zz_modules` WHERE `name` = 'Fatture di vendita');
UPDATE `zz_views` SET `query` = 'IF(co_documenti.numero_esterno='''', co_documenti.numero, co_documenti.numero_esterno)', `order_by` ='CAST(co_documenti.numero_esterno AS UNSIGNED)' WHERE `name` = 'Numero' AND `id_module` = (SELECT `id` FROM `zz_modules` WHERE `name` = 'Fatture di vendita');
UPDATE `zz_views` SET `query` = 'co_documenti.data' WHERE `name` = 'Data' AND `id_module` = (SELECT `id` FROM `zz_modules` WHERE `name` = 'Fatture di vendita');
UPDATE `zz_views` SET `query` = 'an_anagrafiche.ragione_sociale' WHERE `name` = 'Ragione sociale' AND `id_module` = (SELECT `id` FROM `zz_modules` WHERE `name` = 'Fatture di vendita');
UPDATE `zz_views` SET `query` = '(SELECT SUM(subtotale - sconto + iva + rivalsainps - ritenutaacconto) FROM co_righe_documenti WHERE co_righe_documenti.iddocumento=co_documenti.id GROUP BY iddocumento) + co_documenti.iva_rivalsainps' WHERE `name` = 'Totale' AND `id_module` = (SELECT `id` FROM `zz_modules` WHERE `name` = 'Fatture di vendita');
UPDATE `zz_views` SET `query` = 'co_statidocumento.icona' WHERE `name` = 'icon_Stato' AND `id_module` = (SELECT `id` FROM `zz_modules` WHERE `name` = 'Fatture di vendita');
UPDATE `zz_views` SET `query` = 'co_statidocumento.descrizione' WHERE `name` = 'icon_title_Stato' AND `id_module` = (SELECT `id` FROM `zz_modules` WHERE `name` = 'Fatture di vendita');
UPDATE `zz_views` SET `query` = '`fe_stati_documento`.`icon`' WHERE `name` = 'icon_FE' AND `id_module` = (SELECT `id` FROM `zz_modules` WHERE `name` = 'Fatture di vendita');
UPDATE `zz_views` SET `query` = '`fe_stati_documento`.`descrizione`' WHERE `name` = 'icon_title_FE' AND `id_module` = (SELECT `id` FROM `zz_modules` WHERE `name` = 'Fatture di vendita');
-- Impostazione per la lunghezza delle pagine Datatables
INSERT INTO `zz_settings` (`id`, `nome`, `valore`, `tipo`, `editable`, `sezione`, `order`) VALUES (NULL, 'Lunghezza in pagine del buffer Datatables', '200', 'decimal', 0, 'Generali', 1);