From be852ada03d0a1b65d8969d737a118249d19bfae Mon Sep 17 00:00:00 2001 From: Martin Renvoize Date: Wed, 19 Apr 2023 16:49:06 +0100 Subject: [PATCH] Bug 33484: Add support to kohaTable (AJAX Tables) --- koha-tmpl/intranet-tmpl/prog/js/datatables.js | 36 +++++++++++++++++++ 1 file changed, 36 insertions(+) diff --git a/koha-tmpl/intranet-tmpl/prog/js/datatables.js b/koha-tmpl/intranet-tmpl/prog/js/datatables.js index bcf308c56c..de93c14d37 100644 --- a/koha-tmpl/intranet-tmpl/prog/js/datatables.js +++ b/koha-tmpl/intranet-tmpl/prog/js/datatables.js @@ -883,6 +883,24 @@ function _dt_add_filters(table_node, table_dt, filters_options = {}) { } ); } +function _dt_get_saved_state( localstorage_config, columns_settings ){ + var tables = JSON.parse( localstorage_config ); + // if a table configuration was found in local storage, parse it + if( tables ){ + var stateSave_column_visibility = []; + $(tables.columns).each(function(){ + stateSave_column_visibility.push( this.visible === true ? 0 : 1 ); + }); + $.each( columns_settings, function( index, key ){ + if( stateSave_column_visibility[ index ] !== columns_settings[key] ){ + columns_settings[ index ].is_hidden = stateSave_column_visibility[ index ]; + } + }); + return columns_settings; + } else { + return columns_settings; + } +} (function($) { @@ -937,6 +955,24 @@ function _dt_add_filters(table_node, table_dt, filters_options = {}) { } if ( table_settings ) { + + var table_key = + 'DataTables_' + + table_settings['module'] +'_' + + table_settings['page'] +'_' + + table_settings['table']; + + settings["stateSave"] = true; + settings["stateSaveCallback"] = function( settings, data ) { + localStorage.setItem( table_key, JSON.stringify(data) ) + } + settings["stateLoadCallback"] = function(settings) { + return JSON.parse( localStorage.getItem(table_key) ) + } + var local_settings = localStorage.getItem(table_key); + var system_settings = table_settings["columns"]; + var columns_settings = _dt_get_saved_state(local_settings, system_settings); + if ( table_settings.hasOwnProperty('default_display_length') && table_settings['default_display_length'] != null ) { settings["pageLength"] = table_settings['default_display_length']; } -- 2.40.0