Revisione JS datatables per inclusione footer in esportazione
This commit is contained in:
parent
8a8b1479d0
commit
bd6889be4a
|
@ -38,34 +38,32 @@ function start_datatables() {
|
||||||
start_local_datatables();
|
start_local_datatables();
|
||||||
|
|
||||||
$('.main-records').each(function () {
|
$('.main-records').each(function () {
|
||||||
var $this = $(this);
|
const $this = $(this);
|
||||||
|
|
||||||
// Controlla che la tabella non sia già inizializzata
|
// Controlla che la tabella non sia già inizializzata
|
||||||
if (!$.fn.DataTable.isDataTable('#' + $this.attr('id'))) {
|
if (!$.fn.DataTable.isDataTable('#' + $this.attr('id'))) {
|
||||||
var id_module = $this.data('idmodule');
|
const id_module = $this.data('idmodule');
|
||||||
var id_plugin = $this.data('idplugin');
|
const id_plugin = $this.data('idplugin');
|
||||||
var id_parent = $this.data('idparent');
|
const id_parent = $this.data('idparent');
|
||||||
|
|
||||||
// Parametri di ricerca da url o sessione
|
// Parametri di ricerca da url o sessione
|
||||||
var search = getTableSearch();
|
const search = getTableSearch();
|
||||||
|
|
||||||
var column_search = [];
|
const column_search = [];
|
||||||
$this.find("th").each(function () {
|
$this.find("th").each(function () {
|
||||||
var id = $(this).attr('id').replace("th_", "");
|
const id = $(this).attr('id').replace("th_", "");
|
||||||
var single_value = search["search_" + id] ? search["search_" + id] : "";
|
const single_value = search["search_" + id] ? search["search_" + id] : "";
|
||||||
|
|
||||||
column_search.push({
|
column_search.push({
|
||||||
"sSearch": single_value,
|
"sSearch": single_value,
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
var tempo_attesa_ricerche = (globals.tempo_attesa_ricerche * 1000);
|
|
||||||
|
|
||||||
$this.on('preInit.dt', function (ev, settings) {
|
$this.on('preInit.dt', function (ev, settings) {
|
||||||
$('#mini-loader').show();
|
$('#mini-loader').show();
|
||||||
});
|
});
|
||||||
|
|
||||||
var table = $this.DataTable({
|
const table = $this.DataTable({
|
||||||
language: globals.translations.datatables,
|
language: globals.translations.datatables,
|
||||||
autoWidth: true,
|
autoWidth: true,
|
||||||
dom: "ti",
|
dom: "ti",
|
||||||
|
@ -97,82 +95,7 @@ function start_datatables() {
|
||||||
style: 'multi',
|
style: 'multi',
|
||||||
selector: 'td:first-child'
|
selector: 'td:first-child'
|
||||||
},
|
},
|
||||||
buttons: [
|
buttons: getDatatablesButtons($this),
|
||||||
{
|
|
||||||
extend: 'csv',
|
|
||||||
fieldSeparator: ";",
|
|
||||||
exportOptions: {
|
|
||||||
modifier: {
|
|
||||||
selected: true
|
|
||||||
},
|
|
||||||
format: {
|
|
||||||
body: function (data, row, column, node) {
|
|
||||||
data = $('<p>' + data + '</p>').text();
|
|
||||||
data_edit = data.replace('.', ''); // Rimozione punto delle migliaia
|
|
||||||
|
|
||||||
return data_edit.match(/^[0-9,]+$/) ? data_edit : data;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
extend: 'copy',
|
|
||||||
exportOptions: {
|
|
||||||
modifier: {
|
|
||||||
selected: true
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
extend: 'print',
|
|
||||||
autoPrint: true,
|
|
||||||
footer: true,
|
|
||||||
customize: function (win) {
|
|
||||||
$(win.document.body)
|
|
||||||
.css('font-size', '10pt')
|
|
||||||
.append(
|
|
||||||
'<table class="main-records table table-condensed table-bordered dataTable"><tfoot><tr><td></td><td class="pull-right">' + $('#summable').text() + '</td><td></td></tr></tfoot></table>'
|
|
||||||
);
|
|
||||||
$(win.document.body).find('table')
|
|
||||||
.addClass('compact')
|
|
||||||
.css('font-size', 'inherit');
|
|
||||||
$(win.document.body).find('td:first-child')
|
|
||||||
.addClass('hide');
|
|
||||||
$(win.document.body).find('th:first-child')
|
|
||||||
.addClass('hide');
|
|
||||||
},
|
|
||||||
exportOptions: {
|
|
||||||
modifier: {
|
|
||||||
selected: true
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
extend: 'excel',
|
|
||||||
exportOptions: {
|
|
||||||
modifier: {
|
|
||||||
selected: true
|
|
||||||
},
|
|
||||||
format: {
|
|
||||||
body: function (data, row, column, node) {
|
|
||||||
data = $('<p>' + data + '</p>').text();
|
|
||||||
data_edit = data.replace('.', ''); // Fix specifico per i numeri italiani
|
|
||||||
data_edit = data_edit.replace(',', '.');
|
|
||||||
|
|
||||||
return data_edit.match(/^[0-9\.]+$/) ? data_edit : data;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
extend: 'pdf',
|
|
||||||
exportOptions: {
|
|
||||||
modifier: {
|
|
||||||
selected: true
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
],
|
|
||||||
scroller: {
|
scroller: {
|
||||||
loadingIndicator: true,
|
loadingIndicator: true,
|
||||||
displayBuffer: globals.dataload_page_buffer,
|
displayBuffer: globals.dataload_page_buffer,
|
||||||
|
@ -182,120 +105,9 @@ function start_datatables() {
|
||||||
type: 'GET',
|
type: 'GET',
|
||||||
dataSrc: "data",
|
dataSrc: "data",
|
||||||
},
|
},
|
||||||
initComplete: function (settings) {
|
initComplete: initComplete,
|
||||||
var api = this.api();
|
drawCallback: drawCallback,
|
||||||
var search = getTableSearch();
|
footerCallback: footerCallback,
|
||||||
|
|
||||||
api.columns('.search').every(function () {
|
|
||||||
var column = this;
|
|
||||||
|
|
||||||
// Valore predefinito della ricerca
|
|
||||||
var tempo;
|
|
||||||
var header = $(column.header());
|
|
||||||
var name = header.attr('id').replace('th_', '');
|
|
||||||
|
|
||||||
var value = search['search_' + name] ? search['search_' + name] : '';
|
|
||||||
|
|
||||||
$('<br><input type="text" style="width:100%" class="form-control' + (value ? ' input-searching' : '') + '" placeholder="' + globals.translations.filter + '..." value="' + value.replace(/"/g, '"') + '"><i class="deleteicon fa fa-times fa-2x' + (value ? '' : ' hide') + '"></i>')
|
|
||||||
.appendTo(column.header())
|
|
||||||
.on('keyup', function (e) {
|
|
||||||
clearInterval(tempo);
|
|
||||||
|
|
||||||
// Fix del pulsante di pulizia ricerca e del messaggio sulla ricerca lenta
|
|
||||||
if (e.which != 9) {
|
|
||||||
if (!$(this).val()) {
|
|
||||||
if ($(this).parent().data("slow") != undefined) $("#slow").remove();
|
|
||||||
$(this).removeClass('input-searching');
|
|
||||||
$(this).next('.deleteicon').addClass('hide');
|
|
||||||
} else {
|
|
||||||
if ($(this).parent().data("slow") != undefined && $("#slow").length == 0) {
|
|
||||||
$("#" + $this.attr('id') + "_info").parent().append('<span class="text-danger" id="slow"><i class="fa fa-refresh fa-spin"></i> ' + globals.translations.long + '</span>');
|
|
||||||
}
|
|
||||||
$(this).addClass('input-searching');
|
|
||||||
$(this).next('.deleteicon').removeClass('hide');
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
function start_search(module_id, field, search_value) {
|
|
||||||
searchTable(module_id, field, search_value);
|
|
||||||
column.search(search_value).draw();
|
|
||||||
}
|
|
||||||
|
|
||||||
// Impostazione delle sessioni per le ricerche del modulo e del campo specificati
|
|
||||||
var module_id = $this.data('idmodule'); //+ "-" + $this.data('idplugin');
|
|
||||||
var field = $(this).parent().attr('id').replace('th_', '');
|
|
||||||
var value = $(this).val();
|
|
||||||
if (e.keyCode == 13 || $(this).val() == '') {
|
|
||||||
start_search(module_id, field, value);
|
|
||||||
} else {
|
|
||||||
tempo = window.setTimeout(start_search, tempo_attesa_ricerche, module_id, field, value);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
// Disabilito l'ordinamento alla pressione del tasto invio sull'<input>
|
|
||||||
$("thead input, .search").on('keypress', function (e) {
|
|
||||||
stopTableSorting(e);
|
|
||||||
});
|
|
||||||
|
|
||||||
// Disabilito l'ordinamento al click sull'<input>
|
|
||||||
$("thead input, .deleteicon").click(function (e) {
|
|
||||||
stopTableSorting(e);
|
|
||||||
});
|
|
||||||
|
|
||||||
$('.deleteicon').on("click", function (e) {
|
|
||||||
resetTableSearch($(this).parent().attr("id").replace("th_", ""));
|
|
||||||
});
|
|
||||||
},
|
|
||||||
drawCallback: function (settings) {
|
|
||||||
var api = new $.fn.dataTable.Api(settings);
|
|
||||||
|
|
||||||
$(".dataTables_sizing .deleteicon").addClass('hide');
|
|
||||||
|
|
||||||
$("[data-background]").each(function () {
|
|
||||||
$(this).parent().css("background", $(this).data("background"));
|
|
||||||
});
|
|
||||||
|
|
||||||
$("[data-color]").each(function () {
|
|
||||||
$(this).parent().css("color", $(this).data("color"));
|
|
||||||
});
|
|
||||||
|
|
||||||
$("[data-link]").each(function () {
|
|
||||||
var $link = $(this);
|
|
||||||
$(this).parent().not('.bound').addClass('bound').click(function (event) {
|
|
||||||
if ($link.data('type') === 'dialog') {
|
|
||||||
launch_modal(globals.translations.details, $link.data('link'));
|
|
||||||
} else {
|
|
||||||
openLink(event, $link.data('link'))
|
|
||||||
}
|
|
||||||
});
|
|
||||||
$(this).parent().addClass("clickable");
|
|
||||||
});
|
|
||||||
|
|
||||||
// Reimposto il flag sulle righe ricaricate selezionate in precedenza
|
|
||||||
var selected = $this.data('selected') ? $this.data('selected').split(';') : [];
|
|
||||||
table.rows().every(function (rowIdx) {
|
|
||||||
if ($.inArray(this.id().toString(), selected) !== -1) {
|
|
||||||
table.row(':eq(' + rowIdx + ')', {
|
|
||||||
page: 'current'
|
|
||||||
}).select();
|
|
||||||
}
|
|
||||||
});
|
|
||||||
},
|
|
||||||
footerCallback: function (row, data, start, end, display) {
|
|
||||||
var i = -1;
|
|
||||||
var json = this.api().ajax.json();
|
|
||||||
|
|
||||||
this.api().columns().every(function () {
|
|
||||||
if (json.summable[i] !== undefined) {
|
|
||||||
$(this.footer()).addClass("text-right")
|
|
||||||
.attr("id", "summable")
|
|
||||||
.html(json.summable[i]);
|
|
||||||
}
|
|
||||||
|
|
||||||
i++;
|
|
||||||
});
|
|
||||||
}
|
|
||||||
});
|
});
|
||||||
|
|
||||||
table.on('processing.dt', function (e, settings, processing) {
|
table.on('processing.dt', function (e, settings, processing) {
|
||||||
|
@ -309,26 +121,30 @@ function start_datatables() {
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Funzione per evitare il sorting al click della colonna.
|
||||||
|
* Utilizzata per evitare il sorting nelle ricerche.
|
||||||
|
* @param {*} e
|
||||||
|
*/
|
||||||
function stopTableSorting(e) {
|
function stopTableSorting(e) {
|
||||||
if (!e) var e = window.event;
|
if (!e) var e = window.event;
|
||||||
e.cancelBubble = true;
|
e.cancelBubble = true;
|
||||||
if (e.stopPropagation) e.stopPropagation();
|
if (e.stopPropagation) e.stopPropagation();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Funzione per resettare il campo di ricerca in una specifica colonna.
|
||||||
|
* @param {string} type
|
||||||
|
*/
|
||||||
function resetTableSearch(type) {
|
function resetTableSearch(type) {
|
||||||
if (type == null) $('[id^=th_] input').val('').trigger('keyup');
|
if (type == null) $('[id^=th_] input').val('').trigger('keyup');
|
||||||
else $('[id^=th_' + type + '] input').val('').trigger('keyup');
|
else $('[id^=th_' + type + '] input').val('').trigger('keyup');
|
||||||
}
|
}
|
||||||
|
|
||||||
function reset(type) {
|
|
||||||
return resetTableSearch(type);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Sostituisce i caratteri speciali per la ricerca attraverso le tabelle Datatables.
|
* Sostituisce i caratteri speciali per la ricerca attraverso le tabelle Datatables.
|
||||||
*
|
*
|
||||||
* @param string field
|
* @param {string} field
|
||||||
*
|
|
||||||
* @return string
|
* @return string
|
||||||
*/
|
*/
|
||||||
function searchFieldName(field) {
|
function searchFieldName(field) {
|
||||||
|
@ -338,17 +154,21 @@ function searchFieldName(field) {
|
||||||
/**
|
/**
|
||||||
* Salva nella sessione la ricerca per le tabelle Datatables.
|
* Salva nella sessione la ricerca per le tabelle Datatables.
|
||||||
*
|
*
|
||||||
* @param int module_id
|
* @param {int} module_id
|
||||||
* @param string field
|
* @param {string} field
|
||||||
* @param mixed value
|
* @param {mixed} value
|
||||||
*/
|
*/
|
||||||
function searchTable(module_id, field, value) {
|
function searchTable(module_id, field, value) {
|
||||||
session_set('module_' + module_id + ',' + 'search_' + searchFieldName(field), value, 0);
|
session_set('module_' + module_id + ',' + 'search_' + searchFieldName(field), value, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Restituisce i valori di ricerca impostati nell'URL della pagina.
|
||||||
|
* @returns {{}}
|
||||||
|
*/
|
||||||
function getTableSearch() {
|
function getTableSearch() {
|
||||||
// Parametri di ricerca da url o sessione
|
// Parametri di ricerca da url o sessione
|
||||||
var search = getUrlVars();
|
const search = getUrlVars();
|
||||||
|
|
||||||
globals.search.forEach(function (value, index, array) {
|
globals.search.forEach(function (value, index, array) {
|
||||||
if (search[array[index]] === undefined) {
|
if (search[array[index]] === undefined) {
|
||||||
|
@ -359,6 +179,220 @@ function getTableSearch() {
|
||||||
return search;
|
return search;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Restituisce i pulsanti da generare per la tabella Datatables.
|
||||||
|
* @returns
|
||||||
|
*/
|
||||||
|
function getDatatablesButtons(table) {
|
||||||
|
return [
|
||||||
|
// Pulsante di esportazione CSV
|
||||||
|
{
|
||||||
|
extend: 'csv',
|
||||||
|
footer: true,
|
||||||
|
fieldSeparator: ";",
|
||||||
|
exportOptions: {
|
||||||
|
modifier: {
|
||||||
|
selected: true
|
||||||
|
},
|
||||||
|
format: {
|
||||||
|
body: function (data, row, column, node) {
|
||||||
|
data = $('<p>' + data + '</p>').text();
|
||||||
|
data_edit = data.replace('.', ''); // Rimozione punto delle migliaia
|
||||||
|
|
||||||
|
return data_edit.match(/^[0-9,]+$/) ? data_edit : data;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
// Pulsante di esportazione tramite copia
|
||||||
|
{
|
||||||
|
extend: 'copy',
|
||||||
|
footer: true,
|
||||||
|
exportOptions: {
|
||||||
|
modifier: {
|
||||||
|
selected: true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
// Pulsante di esportazione via stampa della tabella
|
||||||
|
{
|
||||||
|
extend: 'print',
|
||||||
|
autoPrint: true,
|
||||||
|
footer: false, // Non funzionante in Firefox, e saltuarmente in Chrome
|
||||||
|
customize: function (win) {
|
||||||
|
const datatable = getTable(table).datatable;
|
||||||
|
|
||||||
|
const footer = datatable.table().footer().children[0];
|
||||||
|
console.log(footer);
|
||||||
|
|
||||||
|
const body = $(win.document.body);
|
||||||
|
body.find('table')
|
||||||
|
.addClass('compact')
|
||||||
|
.css('font-size', 'inherit')
|
||||||
|
.append(footer);
|
||||||
|
|
||||||
|
body.find('td:first-child, th:first-child')
|
||||||
|
.addClass('hide');
|
||||||
|
|
||||||
|
},
|
||||||
|
exportOptions: {
|
||||||
|
modifier: {
|
||||||
|
selected: true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
// Pulsante di esportazione in formato Excel
|
||||||
|
{
|
||||||
|
extend: 'excel',
|
||||||
|
footer: true,
|
||||||
|
exportOptions: {
|
||||||
|
modifier: {
|
||||||
|
selected: true
|
||||||
|
},
|
||||||
|
format: {
|
||||||
|
body: function (data, row, column, node) {
|
||||||
|
data = $('<p>' + data + '</p>').text();
|
||||||
|
data_edit = data.replace('.', ''); // Fix specifico per i numeri italiani
|
||||||
|
data_edit = data_edit.replace(',', '.');
|
||||||
|
|
||||||
|
return data_edit.match(/^[0-9\.]+$/) ? data_edit : data;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
// Pulsante di esportazione in formato PDF
|
||||||
|
{
|
||||||
|
extend: 'pdf',
|
||||||
|
footer: true,
|
||||||
|
exportOptions: {
|
||||||
|
modifier: {
|
||||||
|
selected: true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
|
function initComplete(settings) {
|
||||||
|
const api = this.api();
|
||||||
|
const search = getTableSearch();
|
||||||
|
|
||||||
|
api.columns('.search').every(function () {
|
||||||
|
const column = this;
|
||||||
|
|
||||||
|
// Valore predefinito della ricerca
|
||||||
|
let tempo;
|
||||||
|
const header = $(column.header());
|
||||||
|
const name = header.attr('id').replace('th_', '');
|
||||||
|
|
||||||
|
const value = search['search_' + name] ? search['search_' + name] : '';
|
||||||
|
|
||||||
|
$('<br><input type="text" style="width:100%" class="form-control' + (value ? ' input-searching' : '') + '" placeholder="' + globals.translations.filter + '..." value="' + value.replace(/"/g, '"') + '"><i class="deleteicon fa fa-times fa-2x' + (value ? '' : ' hide') + '"></i>')
|
||||||
|
.appendTo(column.header())
|
||||||
|
.on('keyup', function (e) {
|
||||||
|
clearInterval(tempo);
|
||||||
|
|
||||||
|
// Fix del pulsante di pulizia ricerca e del messaggio sulla ricerca lenta
|
||||||
|
if (e.which != 9) {
|
||||||
|
if (!$(this).val()) {
|
||||||
|
if ($(this).parent().data("slow") != undefined) $("#slow").remove();
|
||||||
|
$(this).removeClass('input-searching');
|
||||||
|
$(this).next('.deleteicon').addClass('hide');
|
||||||
|
} else {
|
||||||
|
if ($(this).parent().data("slow") != undefined && $("#slow").length == 0) {
|
||||||
|
$("#" + $this.attr('id') + "_info").parent().append('<span class="text-danger" id="slow"><i class="fa fa-refresh fa-spin"></i> ' + globals.translations.long + '</span>');
|
||||||
|
}
|
||||||
|
$(this).addClass('input-searching');
|
||||||
|
$(this).next('.deleteicon').removeClass('hide');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function start_search(module_id, field, search_value) {
|
||||||
|
searchTable(module_id, field, search_value);
|
||||||
|
column.search(search_value).draw();
|
||||||
|
}
|
||||||
|
|
||||||
|
// Impostazione delle sessioni per le ricerche del modulo e del campo specificati
|
||||||
|
const module_id = $this.data('idmodule'); //+ "-" + $this.data('idplugin');
|
||||||
|
const field = $(this).parent().attr('id').replace('th_', '');
|
||||||
|
const value = $(this).val();
|
||||||
|
if (e.keyCode == 13 || $(this).val() == '') {
|
||||||
|
start_search(module_id, field, value);
|
||||||
|
} else {
|
||||||
|
const tempo_attesa_ricerche = (globals.tempo_attesa_ricerche * 1000);
|
||||||
|
|
||||||
|
tempo = window.setTimeout(start_search, tempo_attesa_ricerche, module_id, field, value);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
// Disabilito l'ordinamento alla pressione del tasto invio sull'<input>
|
||||||
|
$("thead input, .search").on('keypress', function (e) {
|
||||||
|
stopTableSorting(e);
|
||||||
|
});
|
||||||
|
|
||||||
|
// Disabilito l'ordinamento al click sull'<input>
|
||||||
|
$("thead input, .deleteicon").click(function (e) {
|
||||||
|
stopTableSorting(e);
|
||||||
|
});
|
||||||
|
|
||||||
|
$('.deleteicon').on("click", function (e) {
|
||||||
|
resetTableSearch($(this).parent().attr("id").replace("th_", ""));
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
function drawCallback(settings) {
|
||||||
|
const table = getTable(settings.nTable);
|
||||||
|
const datatable = table.datatable;
|
||||||
|
|
||||||
|
$(".dataTables_sizing .deleteicon").addClass('hide');
|
||||||
|
|
||||||
|
$("[data-background]").each(function () {
|
||||||
|
$(this).parent().css("background", $(this).data("background"));
|
||||||
|
});
|
||||||
|
|
||||||
|
$("[data-color]").each(function () {
|
||||||
|
$(this).parent().css("color", $(this).data("color"));
|
||||||
|
});
|
||||||
|
|
||||||
|
$("[data-link]").each(function () {
|
||||||
|
const $link = $(this);
|
||||||
|
$(this).parent().not('.bound').addClass('bound').click(function (event) {
|
||||||
|
if ($link.data('type') === 'dialog') {
|
||||||
|
launch_modal(globals.translations.details, $link.data('link'));
|
||||||
|
} else {
|
||||||
|
openLink(event, $link.data('link'))
|
||||||
|
}
|
||||||
|
});
|
||||||
|
$(this).parent().addClass("clickable");
|
||||||
|
});
|
||||||
|
|
||||||
|
// Reimposto il flag sulle righe ricaricate selezionate in precedenza
|
||||||
|
const selected = table.getSelectedRows();
|
||||||
|
datatable.rows().every(function (rowIdx) {
|
||||||
|
if (selected.includes(this.id())) {
|
||||||
|
datatable.row(':eq(' + rowIdx + ')', {
|
||||||
|
page: 'current'
|
||||||
|
}).select();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
function footerCallback(row, data, start, end, display) {
|
||||||
|
let i = -1;
|
||||||
|
const json = this.api().ajax.json();
|
||||||
|
|
||||||
|
this.api().columns().every(function () {
|
||||||
|
if (json.summable[i] !== undefined) {
|
||||||
|
$(this.footer()).addClass("text-right")
|
||||||
|
.attr("id", "summable")
|
||||||
|
.html(json.summable[i]);
|
||||||
|
}
|
||||||
|
|
||||||
|
i++;
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Restituisce un oggetto che permette di gestire le tabelle DataTables.
|
* Restituisce un oggetto che permette di gestire le tabelle DataTables.
|
||||||
*
|
*
|
||||||
|
@ -425,13 +459,13 @@ function getTable(selector) {
|
||||||
|
|
||||||
// Aggiornamento del footer nel caso sia richiesto
|
// Aggiornamento del footer nel caso sia richiesto
|
||||||
if (globals.restrict_summables_to_selected) {
|
if (globals.restrict_summables_to_selected) {
|
||||||
this.updateSelectedFooter();
|
this.updateFooterForSelectedRows();
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
addSelectedRows: function (row_ids) {
|
addSelectedRows: function (row_ids) {
|
||||||
row_ids = Array.isArray(row_ids) ? row_ids : [row_ids];
|
row_ids = Array.isArray(row_ids) ? row_ids : [row_ids];
|
||||||
row_ids.forEach(function (item, index) {
|
row_ids.forEach(function (item, index) {
|
||||||
selected.set(item, true);
|
selected.set(item.toString(), true);
|
||||||
});
|
});
|
||||||
|
|
||||||
this.saveSelectedRows();
|
this.saveSelectedRows();
|
||||||
|
@ -439,7 +473,7 @@ function getTable(selector) {
|
||||||
removeSelectedRows: function (row_ids) {
|
removeSelectedRows: function (row_ids) {
|
||||||
row_ids = Array.isArray(row_ids) ? row_ids : [row_ids];
|
row_ids = Array.isArray(row_ids) ? row_ids : [row_ids];
|
||||||
row_ids.forEach(function (item, index) {
|
row_ids.forEach(function (item, index) {
|
||||||
selected.delete(item);
|
selected.delete(item.toString());
|
||||||
});
|
});
|
||||||
|
|
||||||
this.saveSelectedRows();
|
this.saveSelectedRows();
|
||||||
|
@ -449,12 +483,14 @@ function getTable(selector) {
|
||||||
this.saveSelectedRows();
|
this.saveSelectedRows();
|
||||||
},
|
},
|
||||||
|
|
||||||
// Aggiornamento dei campi summable
|
/**
|
||||||
updateSelectedFooter: function () {
|
* Nuovi valori dei campi summable
|
||||||
let datatable = this.datatable;
|
* @returns
|
||||||
|
*/
|
||||||
|
getSelectedRowsFooter: function () {
|
||||||
let ids = this.getSelectedRows();
|
let ids = this.getSelectedRows();
|
||||||
|
|
||||||
$.ajax({
|
return $.ajax({
|
||||||
url: globals.rootdir + "/ajax.php",
|
url: globals.rootdir + "/ajax.php",
|
||||||
type: "POST",
|
type: "POST",
|
||||||
dataType: "json",
|
dataType: "json",
|
||||||
|
@ -463,15 +499,23 @@ function getTable(selector) {
|
||||||
id_plugin: this.id_plugin,
|
id_plugin: this.id_plugin,
|
||||||
op: "summable-results",
|
op: "summable-results",
|
||||||
ids: ids,
|
ids: ids,
|
||||||
},
|
}
|
||||||
success: function (response) {
|
});
|
||||||
for (let [column, value] of Object.entries(response)) {
|
},
|
||||||
let index = parseInt(column) + 1;
|
|
||||||
let sel = datatable.column(index).footer();
|
/**
|
||||||
$(sel).addClass("text-right")
|
* Aggiornamento dei campi summable
|
||||||
.attr("id", "summable")
|
*/
|
||||||
.html(value);
|
updateFooterForSelectedRows: function () {
|
||||||
}
|
let datatable = this.datatable;
|
||||||
|
|
||||||
|
this.getSelectedRowsFooter().then(function (response) {
|
||||||
|
for (let [column, value] of Object.entries(response)) {
|
||||||
|
let index = parseInt(column) + 1;
|
||||||
|
let sel = datatable.column(index).footer();
|
||||||
|
$(sel).addClass("text-right")
|
||||||
|
.attr("id", "summable")
|
||||||
|
.html(value);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
|
|
Loading…
Reference in New Issue