|
Lines 6-14
Link Here
|
| 6 |
<script> |
6 |
<script> |
| 7 |
// default_filters is not used but keeping the same constructor as kohaTable for consistency |
7 |
// default_filters is not used but keeping the same constructor as kohaTable for consistency |
| 8 |
function KohaTable(id_selector, dt_parameters, table_settings, add_filters, default_filters, filters_options) { |
8 |
function KohaTable(id_selector, dt_parameters, table_settings, add_filters, default_filters, filters_options) { |
| 9 |
var counter = 0; |
|
|
| 10 |
var hidden_ids = []; |
| 11 |
var included_ids = []; |
| 12 |
var selector = '#' + id_selector; |
9 |
var selector = '#' + id_selector; |
| 13 |
|
10 |
|
| 14 |
if ( table_settings ) { |
11 |
if ( table_settings ) { |
|
Lines 30-39
function KohaTable(id_selector, dt_parameters, table_settings, add_filters, defa
Link Here
|
| 30 |
localStorage.setItem( table_key, JSON.stringify(data) ) |
27 |
localStorage.setItem( table_key, JSON.stringify(data) ) |
| 31 |
} |
28 |
} |
| 32 |
|
29 |
|
| 33 |
function set_default(table_settings, settings){ |
30 |
function set_default(table_settings, table_dt){ |
| 34 |
let columns = new Array(table_settings.columns.length).fill({visible: true}); |
31 |
let columns = new Array(table_settings.columns.length).fill({visible: true}); |
| 35 |
let hidden_ids, included_ids; |
32 |
let hidden_ids = _dt_visibility(table_settings, table_dt); |
| 36 |
[hidden_ids, included_ids] = _dt_visibility(table_settings, settings, $("#"+settings.nTable.id)); |
|
|
| 37 |
hidden_ids.forEach((id, i) => { columns[id] = { visible: false } } ); |
33 |
hidden_ids.forEach((id, i) => { columns[id] = { visible: false } } ); |
| 38 |
// State is not loaded if time is not passed |
34 |
// State is not loaded if time is not passed |
| 39 |
return { columns, time: new Date() }; |
35 |
return { columns, time: new Date() }; |
|
Lines 48-57
function KohaTable(id_selector, dt_parameters, table_settings, add_filters, defa
Link Here
|
| 48 |
return JSON.parse(atob(state_from_url)); |
44 |
return JSON.parse(atob(state_from_url)); |
| 49 |
} |
45 |
} |
| 50 |
|
46 |
|
| 51 |
if (!default_save_state) return set_default(table_settings, settings); |
47 |
if (!default_save_state) return set_default(table_settings, this.api()); |
| 52 |
|
48 |
|
| 53 |
let state = localStorage.getItem(table_key); |
49 |
let state = localStorage.getItem(table_key); |
| 54 |
if (!state) return set_default(table_settings, settings); |
50 |
if (!state) return set_default(table_settings, this.api()); |
| 55 |
|
51 |
|
| 56 |
state = JSON.parse(state); |
52 |
state = JSON.parse(state); |
| 57 |
|
53 |
|
|
Lines 64-83
function KohaTable(id_selector, dt_parameters, table_settings, add_filters, defa
Link Here
|
| 64 |
return state; |
60 |
return state; |
| 65 |
} |
61 |
} |
| 66 |
|
62 |
|
| 67 |
$(columns_settings).each( function() { |
|
|
| 68 |
var named_id = $( 'thead th[data-colname="' + this.columnname + '"]', selector ).index( selector + ' th' ); |
| 69 |
var used_id = dt_parameters.bKohaColumnsUseNames ? named_id : counter; |
| 70 |
if ( used_id == -1 ) return; |
| 71 |
|
| 72 |
if ( this['is_hidden'] == "1" ) { |
| 73 |
hidden_ids.push( used_id ); |
| 74 |
} |
| 75 |
if ( this['cannot_be_toggled'] == "0" ) { |
| 76 |
included_ids.push( used_id ); |
| 77 |
} |
| 78 |
counter++; |
| 79 |
}); |
| 80 |
|
| 81 |
if ( table_settings.hasOwnProperty('default_save_state') && table_settings['default_save_state'] === 0 ) { |
63 |
if ( table_settings.hasOwnProperty('default_save_state') && table_settings['default_save_state'] === 0 ) { |
| 82 |
localStorage.removeItem(table_key); |
64 |
localStorage.removeItem(table_key); |
| 83 |
} |
65 |
} |
|
Lines 188-199
function KohaTable(id_selector, dt_parameters, table_settings, add_filters, defa
Link Here
|
| 188 |
|
170 |
|
| 189 |
dt_parameters[ "buttons" ] = ['clear_filter']; |
171 |
dt_parameters[ "buttons" ] = ['clear_filter']; |
| 190 |
|
172 |
|
| 191 |
if( included_ids.length > 0 ){ |
173 |
let included_columns = table_settings.columns.filter(c => !c.cannot_be_toggled); |
|
|
174 |
if( included_columns.length > 0 ){ |
| 192 |
dt_parameters[ "buttons" ].push( |
175 |
dt_parameters[ "buttons" ].push( |
| 193 |
{ |
176 |
{ |
| 194 |
extend: 'colvis', |
177 |
extend: 'colvis', |
| 195 |
fade: 100, |
178 |
fade: 100, |
| 196 |
columns: included_ids, |
179 |
columns: included_columns.map(c => "[data-colname='%s']".format(c.columnname)).join(','), |
| 197 |
className: "columns_controls", |
180 |
className: "columns_controls", |
| 198 |
titleAttr: _("Columns settings"), |
181 |
titleAttr: _("Columns settings"), |
| 199 |
text: '<i class="fa fa-lg fa-gear"></i> <span class="dt-button-text">' + _("Columns") + '</span>', |
182 |
text: '<i class="fa fa-lg fa-gear"></i> <span class="dt-button-text">' + _("Columns") + '</span>', |
|
Lines 297-302
function KohaTable(id_selector, dt_parameters, table_settings, add_filters, defa
Link Here
|
| 297 |
} |
280 |
} |
| 298 |
} |
281 |
} |
| 299 |
|
282 |
|
|
|
283 |
$(table).data('bKohaColumnsUseNames', dt_parameters.bKohaColumnsUseNames); |
| 284 |
|
| 300 |
table.dataTable(new_parameters); |
285 |
table.dataTable(new_parameters); |
| 301 |
var table_dt = table.DataTable(); |
286 |
var table_dt = table.DataTable(); |
| 302 |
table_dt.on("column-visibility.dt", function(){ |
287 |
table_dt.on("column-visibility.dt", function(){ |
|
Lines 306-312
function KohaTable(id_selector, dt_parameters, table_settings, add_filters, defa
Link Here
|
| 306 |
// has been updated according to the table's configuration |
291 |
// has been updated according to the table's configuration |
| 307 |
columnsInit(this); |
292 |
columnsInit(this); |
| 308 |
} |
293 |
} |
| 309 |
}).columns( hidden_ids ).visible( false ); |
294 |
}); |
| 310 |
|
295 |
|
| 311 |
if ( add_filters ) { |
296 |
if ( add_filters ) { |
| 312 |
_dt_add_filters(table, table_dt, filters_options); |
297 |
_dt_add_filters(table, table_dt, filters_options); |
| 313 |
- |
|
|