|
1 | 1 | (function ($, DataTable) { |
2 | 2 | "use strict"; |
3 | 3 |
|
4 | | - var _buildParams = function (dt, action) { |
| 4 | + var _buildParams = function (dt, action, onlyVisibles) { |
5 | 5 | var params = dt.ajax.params(); |
6 | 6 | params.action = action; |
7 | 7 | params._token = $('meta[name="csrf-token"]').attr('content'); |
8 | 8 |
|
| 9 | + if (onlyVisibles) { |
| 10 | + params.visible_columns = _getVisibleColumns(); |
| 11 | + } else { |
| 12 | + params.visible_columns = null; |
| 13 | + } |
| 14 | + |
9 | 15 | return params; |
10 | 16 | }; |
| 17 | + |
| 18 | + var _getVisibleColumns = function () { |
| 19 | + |
| 20 | + var visible_columns = []; |
| 21 | + $.each(DataTable.settings[0].aoColumns, function (key, col) { |
| 22 | + if (col.bVisible) { |
| 23 | + visible_columns.push(col.name); |
| 24 | + } |
| 25 | + }); |
| 26 | + |
| 27 | + return visible_columns; |
| 28 | + }; |
11 | 29 |
|
12 | 30 | var _downloadFromUrl = function (url, params) { |
13 | 31 | var postUrl = url + '/export'; |
|
98 | 116 | _downloadFromUrl(url, params); |
99 | 117 | } |
100 | 118 | }; |
| 119 | + |
| 120 | + DataTable.ext.buttons.postExcelVisibleColumns = { |
| 121 | + className: 'buttons-excel', |
| 122 | + |
| 123 | + text: function (dt) { |
| 124 | + return '<i class="fa fa-file-excel-o"></i> ' + dt.i18n('buttons.excel', 'Excel (only visible columns)'); |
| 125 | + }, |
| 126 | + |
| 127 | + action: function (e, dt, button, config) { |
| 128 | + var url = dt.ajax.url() || window.location.href; |
| 129 | + var params = _buildParams(dt, 'excel', true); |
| 130 | + |
| 131 | + _downloadFromUrl(url, params); |
| 132 | + } |
| 133 | + }; |
101 | 134 |
|
102 | 135 | DataTable.ext.buttons.export = { |
103 | 136 | extend: 'collection', |
|
124 | 157 | } |
125 | 158 | }; |
126 | 159 |
|
| 160 | + DataTable.ext.buttons.postCsvVisibleColumns = { |
| 161 | + className: 'buttons-csv', |
| 162 | + |
| 163 | + text: function (dt) { |
| 164 | + return '<i class="fa fa-file-excel-o"></i> ' + dt.i18n('buttons.csv', 'CSV (only visible columns)'); |
| 165 | + }, |
| 166 | + |
| 167 | + action: function (e, dt, button, config) { |
| 168 | + var url = dt.ajax.url() || window.location.href; |
| 169 | + var params = _buildParams(dt, 'csv', true); |
| 170 | + |
| 171 | + _downloadFromUrl(url, params); |
| 172 | + } |
| 173 | + }; |
| 174 | + |
127 | 175 | DataTable.ext.buttons.postCsv = { |
128 | 176 | className: 'buttons-csv', |
129 | 177 |
|
|
0 commit comments