1
0
mirror of https://gitee.com/coder-xiaomo/flashsale synced 2025-09-12 23:11:38 +08:00
Code Issues Projects Releases Wiki Activity GitHub Gitee
Files
flashsale/frontend/static/assets/admin/pages/scripts/table-advanced.js

288 lines
11 KiB
JavaScript

var TableAdvanced = function () {
var initTable1 = function () {
var table = $('#sample_1');
/* Table tools samples: https://www.datatables.net/release-datatables/extras/TableTools/ */
/* Set tabletools buttons and button container */
$.extend(true, $.fn.DataTable.TableTools.classes, {
"container": "btn-group tabletools-dropdown-on-portlet",
"buttons": {
"normal": "btn btn-sm default",
"disabled": "btn btn-sm default disabled"
},
"collection": {
"container": "DTTT_dropdown dropdown-menu tabletools-dropdown-menu"
}
});
var oTable = table.dataTable({
"aaSorting": [
[0, 'asc']
],
"aLengthMenu": [
[5, 15, 20, -1],
[5, 15, 20, "All"] // change per page values here
],
// set the initial value
"iDisplayLength": 10,
"sDom": "<'row' <'col-md-12'T>><'row'<'col-md-6 col-sm-12'l><'col-md-6 col-sm-12'f>r><'table-scrollable't><'row'<'col-md-5 col-sm-12'i><'col-md-7 col-sm-12'p>>", // horizobtal scrollable datatable
"oTableTools": {
"sSwfPath": "../../assets/global/plugins/data-tables/tabletools/swf/copy_csv_xls_pdf.swf",
"aButtons": [{
"sExtends": "pdf",
"sButtonText": "PDF"
}, {
"sExtends": "csv",
"sButtonText": "CSV"
}, {
"sExtends": "xls",
"sButtonText": "Excel"
}, {
"sExtends": "print",
"sButtonText": "Print",
"sInfo": 'Please press "CTRL+P" to print or "ESC" to quit',
"sMessage": "Generated by DataTables"
}]
}
});
var tableWrapper = $('#sample_1_wrapper'); // datatable creates the table wrapper by adding with id {your_table_jd}_wrapper
jQuery('.dataTables_filter input', tableWrapper).addClass("form-control input-small input-inline"); // modify table search input
jQuery('.dataTables_length select', tableWrapper).addClass("form-control input-small"); // modify table per page dropdown
jQuery('.dataTables_length select', tableWrapper).select2(); // initialize select2 dropdown
}
var initTable2 = function () {
var table = $('#sample_2');
/* Table tools samples: https://www.datatables.net/release-datatables/extras/TableTools/ */
/* Set tabletools buttons and button container */
$.extend(true, $.fn.DataTable.TableTools.classes, {
"container": "btn-group tabletools-btn-group pull-right",
"buttons": {
"normal": "btn btn-sm default",
"disabled": "btn btn-sm default disabled"
}
});
var oTable = table.dataTable({
"aaSorting": [
[0, 'asc']
],
"aLengthMenu": [
[5, 15, 20, -1],
[5, 15, 20, "All"] // change per page values here
],
// set the initial value
"iDisplayLength": 10,
"sDom": "<'row' <'col-md-12'T>><'row'<'col-md-6 col-sm-12'l><'col-md-6 col-sm-12'f>r><'table-scrollable't><'row'<'col-md-5 col-sm-12'i><'col-md-7 col-sm-12'p>>", // horizobtal scrollable datatable
"oTableTools": {
"sSwfPath": "../../assets/global/plugins/data-tables/tabletools/swf/copy_csv_xls_pdf.swf",
"aButtons": [{
"sExtends": "pdf",
"sButtonText": "PDF"
}, {
"sExtends": "csv",
"sButtonText": "CSV"
}, {
"sExtends": "xls",
"sButtonText": "Excel"
}, {
"sExtends": "print",
"sButtonText": "Print",
"sInfo": 'Please press "CTRL+P" to print or "ESC" to quit',
"sMessage": "Generated by DataTables"
}, {
"sExtends": "copy",
"sButtonText": "Copy"
}]
}
});
var tableWrapper = $('#sample_2_wrapper'); // datatable creates the table wrapper by adding with id {your_table_jd}_wrapper
jQuery('.dataTables_filter input', tableWrapper).addClass("form-control input-small input-inline"); // modify table search input
jQuery('.dataTables_length select', tableWrapper).addClass("form-control input-small"); // modify table per page dropdown
jQuery('.dataTables_length select', tableWrapper).select2(); // initialize select2 dropdown
}
var initTable3 = function () {
var table = $('#sample_3');
/* Formatting function for row details */
function fnFormatDetails(oTable, nTr) {
var aData = oTable.fnGetData(nTr);
var sOut = '<table>';
sOut += '<tr><td>Platform(s):</td><td>' + aData[2] + '</td></tr>';
sOut += '<tr><td>Engine version:</td><td>' + aData[3] + '</td></tr>';
sOut += '<tr><td>CSS grade:</td><td>' + aData[4] + '</td></tr>';
sOut += '<tr><td>Others:</td><td>Could provide a link here</td></tr>';
sOut += '</table>';
return sOut;
}
/*
* Insert a 'details' column to the table
*/
var nCloneTh = document.createElement('th');
var nCloneTd = document.createElement('td');
nCloneTd.innerHTML = '<span class="row-details row-details-close"></span>';
$('thead tr', table).each(function () {
this.insertBefore(nCloneTh, this.childNodes[0]);
});
$('tbody tr', table).each(function () {
this.insertBefore(nCloneTd.cloneNode(true), this.childNodes[0]);
});
/*
* Initialize DataTables, with no sorting on the 'details' column
*/
var oTable = table.dataTable({
"aoColumnDefs": [{
"bSortable": false,
"aTargets": [0]
}],
"aaSorting": [
[1, 'asc']
],
"aLengthMenu": [
[5, 15, 20, -1],
[5, 15, 20, "All"] // change per page values here
],
// set the initial value
"iDisplayLength": 10,
});
var tableWrapper = $('#sample_3_wrapper'); // datatable creates the table wrapper by adding with id {your_table_jd}_wrapper
jQuery('.dataTables_filter input', tableWrapper).addClass("form-control input-small input-inline"); // modify table search input
jQuery('.dataTables_length select', tableWrapper).addClass("form-control input-small"); // modify table per page dropdown
jQuery('.dataTables_length select', tableWrapper).select2(); // initialize select2 dropdown
/* Add event listener for opening and closing details
* Note that the indicator for showing which row is open is not controlled by DataTables,
* rather it is done here
*/
table.on('click', ' tbody td .row-details', function () {
var nTr = $(this).parents('tr')[0];
if (oTable.fnIsOpen(nTr)) {
/* This row is already open - close it */
$(this).addClass("row-details-close").removeClass("row-details-open");
oTable.fnClose(nTr);
} else {
/* Open this row */
$(this).addClass("row-details-open").removeClass("row-details-close");
oTable.fnOpen(nTr, fnFormatDetails(oTable, nTr), 'details');
}
});
}
var initTable4 = function () {
var table = $('#sample_4');
/* Formatting function for row expanded details */
function fnFormatDetails(oTable, nTr) {
var aData = oTable.fnGetData(nTr);
var sOut = '<table>';
sOut += '<tr><td>Platform(s):</td><td>' + aData[2] + '</td></tr>';
sOut += '<tr><td>Engine version:</td><td>' + aData[3] + '</td></tr>';
sOut += '<tr><td>CSS grade:</td><td>' + aData[4] + '</td></tr>';
sOut += '<tr><td>Others:</td><td>Could provide a link here</td></tr>';
sOut += '</table>';
return sOut;
}
/*
* Insert a 'details' column to the table
*/
var nCloneTh = document.createElement('th');
var nCloneTd = document.createElement('td');
nCloneTd.innerHTML = '<span class="row-details row-details-close"></span>';
$('thead tr', table).each(function () {
this.insertBefore(nCloneTh, this.childNodes[0]);
});
$('tbody tr', table).each(function () {
this.insertBefore(nCloneTd.cloneNode(true), this.childNodes[0]);
});
var oTable = table.dataTable({
"aoColumnDefs": [{
"aTargets": [0]
}],
"aaSorting": [
[1, 'asc']
],
"aLengthMenu": [
[5, 15, 20, -1],
[5, 15, 20, "All"] // change per page values here
],
// set the initial value
"iDisplayLength": 10,
});
var tableWrapper = $('#sample_4_wrapper'); // datatable creates the table wrapper by adding with id {your_table_jd}_wrapper
var tableColumnToggler = $('#sample_4_column_toggler');
/* modify datatable control inputs */
jQuery('.dataTables_filter input', tableWrapper).addClass("form-control input-small input-inline"); // modify table search input
jQuery('.dataTables_length select', tableWrapper).addClass("form-control input-small"); // modify table per page dropdown
jQuery('.dataTables_length select', tableWrapper).select2(); // initialize select2 dropdown
/* Add event listener for opening and closing details
* Note that the indicator for showing which row is open is not controlled by DataTables,
* rather it is done here
*/
table.on('click', ' tbody td .row-details', function () {
var nTr = $(this).parents('tr')[0];
if (oTable.fnIsOpen(nTr)) {
/* This row is already open - close it */
$(this).addClass("row-details-close").removeClass("row-details-open");
oTable.fnClose(nTr);
} else {
/* Open this row */
$(this).addClass("row-details-open").removeClass("row-details-close");
oTable.fnOpen(nTr, fnFormatDetails(oTable, nTr), 'details');
}
});
/* handle show/hide columns*/
$('input[type="checkbox"]', tableColumnToggler).change(function () {
/* Get the DataTables object again - this is not a recreation, just a get of the object */
var iCol = parseInt($(this).attr("data-column"));
var bVis = oTable.fnSettings().aoColumns[iCol].bVisible;
oTable.fnSetColumnVis(iCol, (bVis ? false : true));
});
}
return {
//main function to initiate the module
init: function () {
if (!jQuery().dataTable) {
return;
}
initTable1();
initTable2();
initTable3();
initTable4();
}
};
}();