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 |
- |
|
|