|
Lines 961-967
function _dt_add_delay(table_dt, table_node, delay_ms) {
Link Here
|
| 961 |
}); |
961 |
}); |
| 962 |
} |
962 |
} |
| 963 |
|
963 |
|
| 964 |
function _dt_save_restore_state(table_settings){ |
964 |
function _dt_save_restore_state(table_settings, external_filter_nodes={}){ |
| 965 |
|
965 |
|
| 966 |
let table_key = 'DataTables_%s_%s_%s'.format( |
966 |
let table_key = 'DataTables_%s_%s_%s'.format( |
| 967 |
table_settings.module, |
967 |
table_settings.module, |
|
Lines 984-990
function _dt_save_restore_state(table_settings){
Link Here
|
| 984 |
return { columns, time: new Date() }; |
984 |
return { columns, time: new Date() }; |
| 985 |
} |
985 |
} |
| 986 |
let stateLoadCallback = function(settings) { |
986 |
let stateLoadCallback = function(settings) { |
| 987 |
|
|
|
| 988 |
// Load state from URL |
987 |
// Load state from URL |
| 989 |
const url = new URL(window.location.href); |
988 |
const url = new URL(window.location.href); |
| 990 |
let state_from_url = url.searchParams.get( table_key + '_state'); |
989 |
let state_from_url = url.searchParams.get( table_key + '_state'); |
|
Lines 1008-1014
function _dt_save_restore_state(table_settings){
Link Here
|
| 1008 |
return state; |
1007 |
return state; |
| 1009 |
} |
1008 |
} |
| 1010 |
|
1009 |
|
| 1011 |
return {stateSave: true, stateSaveCallback, stateLoadCallback}; |
1010 |
let stateSaveParams = function (settings, data) { |
|
|
1011 |
// FIXME Selector in on the whole DOM, we don't know where the filters are |
| 1012 |
// If others exist on the same page this will lead to unexpected behaviours |
| 1013 |
// Should be safe so far as: patron search use the same code for the different searches |
| 1014 |
// but only the main one has the table settings (and so the state saved) |
| 1015 |
data.external_filters = Object.keys(external_filter_nodes).reduce( |
| 1016 |
(r, k) => { |
| 1017 |
r[k] = $(external_filter_nodes[k]).val(); |
| 1018 |
return r; |
| 1019 |
}, |
| 1020 |
{} |
| 1021 |
); |
| 1022 |
}; |
| 1023 |
let stateLoadParams = function (settings, data) { |
| 1024 |
if (!settings.loaded_from_state) return; |
| 1025 |
|
| 1026 |
if (data.external_filters) { |
| 1027 |
Object.keys(external_filter_nodes).forEach((k, i) => { |
| 1028 |
if (data.external_filters.hasOwnProperty(k)) { |
| 1029 |
$(external_filter_nodes[k]).val(data.external_filters[k]); |
| 1030 |
} |
| 1031 |
}); |
| 1032 |
} |
| 1033 |
}; |
| 1034 |
|
| 1035 |
return { |
| 1036 |
stateSave: true, |
| 1037 |
stateSaveCallback, |
| 1038 |
stateLoadCallback, |
| 1039 |
stateSaveParams, |
| 1040 |
stateLoadParams, |
| 1041 |
}; |
| 1012 |
} |
1042 |
} |
| 1013 |
|
1043 |
|
| 1014 |
(function($) { |
1044 |
(function($) { |
|
Lines 1028-1034
function _dt_save_restore_state(table_settings){
Link Here
|
| 1028 |
* @param {Object} default_filters Add a set of default search filters to apply at table initialisation |
1058 |
* @param {Object} default_filters Add a set of default search filters to apply at table initialisation |
| 1029 |
* @return {Object} The dataTables instance |
1059 |
* @return {Object} The dataTables instance |
| 1030 |
*/ |
1060 |
*/ |
| 1031 |
$.fn.kohaTable = function(options, table_settings, add_filters, default_filters, filters_options) { |
1061 |
$.fn.kohaTable = function(options, table_settings, add_filters, default_filters, filters_options, external_filter_nodes) { |
| 1032 |
var settings = null; |
1062 |
var settings = null; |
| 1033 |
|
1063 |
|
| 1034 |
if(options) { |
1064 |
if(options) { |
|
Lines 1066-1072
function _dt_save_restore_state(table_settings){
Link Here
|
| 1066 |
} |
1096 |
} |
| 1067 |
|
1097 |
|
| 1068 |
if ( table_settings ) { |
1098 |
if ( table_settings ) { |
| 1069 |
let state_settings = _dt_save_restore_state(table_settings); |
1099 |
let state_settings = _dt_save_restore_state(table_settings, external_filter_nodes); |
| 1070 |
settings = {...settings, ...state_settings}; |
1100 |
settings = {...settings, ...state_settings}; |
| 1071 |
|
1101 |
|
| 1072 |
if ( table_settings.hasOwnProperty('default_display_length') && table_settings['default_display_length'] != null ) { |
1102 |
if ( table_settings.hasOwnProperty('default_display_length') && table_settings['default_display_length'] != null ) { |
| 1073 |
- |
|
|