Bugzilla – Attachment 90585 Details for
Bug 20588
Elasticsearch - Apply dataTable on search fields and mapping tables
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Help
|
New Account
|
Log In
[x]
|
Forgot Password
Login:
[x]
[patch]
Bug 20588: Apply dataTable on search fields and mapping tables
Bug-20588-Apply-dataTable-on-search-fields-and-map.patch (text/plain), 10.58 KB, created by
Michal Denar
on 2019-06-13 19:50:06 UTC
(
hide
)
Description:
Bug 20588: Apply dataTable on search fields and mapping tables
Filename:
MIME Type:
Creator:
Michal Denar
Created:
2019-06-13 19:50:06 UTC
Size:
10.58 KB
patch
obsolete
>From 5f7b773da6a3f75613c37b5a44064e91e39cf022 Mon Sep 17 00:00:00 2001 >From: Axel Amghar <axel.amghar@biblibre.com> >Date: Thu, 13 Jun 2019 13:25:50 +0200 >Subject: [PATCH] Bug 20588: Apply dataTable on search fields and mapping > tables > >This add the following capabilities: > - Pagination, > - columns sorting, > - data filtering > >Test plan: > - apply this patch, > - update DB and schema files, > - add/remove search fields and mappings > >Signed-off-by: Michal Denar <black23@gmail.com> >--- > .../intranet-tmpl/prog/en/includes/datatables.inc | 2 +- > .../admin/searchengine/elasticsearch/mappings.tt | 129 +++++++++++++++++---- > 2 files changed, 108 insertions(+), 23 deletions(-) > >diff --git a/koha-tmpl/intranet-tmpl/prog/en/includes/datatables.inc b/koha-tmpl/intranet-tmpl/prog/en/includes/datatables.inc >index eda776e03c..d3f1069734 100644 >--- a/koha-tmpl/intranet-tmpl/prog/en/includes/datatables.inc >+++ b/koha-tmpl/intranet-tmpl/prog/en/includes/datatables.inc >@@ -21,7 +21,7 @@ > var MSG_DT_LOADING_RECORDS = _("Loading..."); > var MSG_DT_PROCESSING = _("Processing..."); > var MSG_DT_SEARCH = _("Search:"); >- var MSG_DT_ZERO_RECORDS = _("No matching records found"); >+ var MSG_DT_ZERO_RECORDS = _("No results for this search"); > var MSG_DT_ALL = _("All"); > var CONFIG_EXCLUDE_ARTICLES_FROM_SORT = _("a an the"); > var MSG_DT_COPY_TITLE = _("Copy to clipboard"); >diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/admin/searchengine/elasticsearch/mappings.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/admin/searchengine/elasticsearch/mappings.tt >index 0198b9afb8..d5b6f7655b 100644 >--- a/koha-tmpl/intranet-tmpl/prog/en/modules/admin/searchengine/elasticsearch/mappings.tt >+++ b/koha-tmpl/intranet-tmpl/prog/en/modules/admin/searchengine/elasticsearch/mappings.tt >@@ -4,13 +4,51 @@ > [% INCLUDE 'doc-head-open.inc' %] > <title>Koha › Administration › Search engine configuration</title> > [% INCLUDE 'doc-head-close.inc' %] >+[% INCLUDE 'datatables.inc' %] > [% Asset.js("lib/jquery/plugins/jquery.tablednd.js") | $raw %] >+[% Asset.css("css/datatables.css") | $raw %] > <script> >+ var searchfieldst; >+ var bibliost; >+ var authoritiest; >+ > function clean_line( line ) { > $(line).find('input[type="text"]').val(""); > $(line).find('select').find('option:first').attr("selected", "selected"); > } > >+ function reset_datatables() { >+ var searchfieldSettings = searchfieldst.fnSettings(); >+ var biblioSettings = bibliost.fnSettings(); >+ var authoritySettings = authoritiest.fnSettings(); >+ >+ searchfieldSettings._iDisplayLength = 20; >+ biblioSettings._iDisplayLength = 20; >+ authoritySettings._iDisplayLength = 20; >+ >+ searchfieldst.fnDraw(); >+ bibliost.fnDraw(); >+ authoritiest.fnDraw(); >+ } >+ >+ function show_all_rows() { >+ var searchfieldSettings = searchfieldst.fnSettings(); >+ var biblioSettings = bibliost.fnSettings(); >+ var authoritySettings = authoritiest.fnSettings(); >+ >+ searchfieldSettings._iDisplayLength = -1; >+ biblioSettings._iDisplayLength = -1; >+ authoritySettings._iDisplayLength = -1; >+ >+ searchfieldSettings.oPreviousSearch.sSearch = ""; >+ biblioSettings.oPreviousSearch.sSearch = ""; >+ authoritySettings.oPreviousSearch.sSearch = ""; >+ >+ searchfieldst.fnDraw(); >+ bibliost.fnDraw(); >+ authoritiest.fnDraw(); >+ } >+ > function clone_line( line ) { > var new_line = $(line).clone(); > $(new_line).removeClass("nodrag nodrop"); >@@ -29,9 +67,40 @@ > > $(document).ready(function() { > $("#tabs").tabs(); >- $(document).on('click', '.delete', function() { >- $(this).parents('tr').remove(); >- var line = $(this).closest("tr"); >+ searchfieldst = $('#search-fieldst').dataTable($.extend(true, {}, dataTablesDefaults, { >+ "aoColumnDefs": [ >+ { "sType": "string", "aTargets": [ "string-sort" ] } >+ ], >+ "sPaginationType": "full_numbers", >+ })); >+ >+ bibliost = $('#bibliost').dataTable($.extend(true, {}, dataTablesDefaults, { >+ "aoColumnDefs": [ >+ { "sType": "string", "aTargets": [ "string-sort" ] } >+ ], >+ "sPaginationType": "full_numbers", >+ })); >+ >+ authoritiest = $('#authoritiest').dataTable($.extend(true, {}, dataTablesDefaults, { >+ "aoColumnDefs": [ >+ { "sType": "string", "aTargets": [ "string-sort" ] } >+ ], >+ "sPaginationType": "full_numbers", >+ })); >+ >+ $('#save').click(function() { >+ show_all_rows(); >+ }); >+ >+ $('table.dataTable').on('click', '.delete', function() { >+ var tableid = $(this).closest('table').attr('id'); >+ var t = $('#' + tableid).DataTable(); >+ var line = $(this).closest('tr'); >+ t.row( $(this).parents('tr') ).remove().draw( false ); >+ >+ // Show all rows on biblios and authorities table >+ // to find some mapping. >+ show_all_rows(); > > var name; > // We clicked delete button on search fields tab. >@@ -49,21 +118,35 @@ > var search_field_line = $('input[name="search_field_name"][value="' + search_field_name + '"]').closest("tr"); > $(search_field_line).find('a.btn-default').removeClass('disabled'); > } >+ //Set display length back to 20. >+ reset_datatables(); > }); > > $('.add').click(function() { >- var table = $(this).closest('table'); >- var index_name = $(table).attr('data-index_name'); >+ var tableid = $(this).closest('table').attr('id'); >+ var t = $('#' + tableid).DataTable(); > var line = $(this).closest("tr"); >+ var new_line = clone_line( line ); > var marc_field = $(line).find('input[data-id="mapping_marc_field"]').val(); > if ( marc_field.length > 0 ) { >- var new_line = clone_line( line ); >+ t.row.add($(new_line)).draw( false ); >+ t.order([1, 'asc']).draw(); >+ t.page('last').draw(false); >+ // Show all rows on search-fields table >+ // to find the search field. >+ var mappingSettings = mappingst.fnSettings(); >+ mappingSettings._iDisplayLength = -1; >+ mappingst.fnDraw(); >+ > var search_field_name = $(line).find('select[data-id="mapping_search_field_name"] option:selected').text(); >- new_line.appendTo($('table[data-index_name="'+index_name+'"]>tbody')); > > var search_field_line = $('input[name="search_field_name"][value="' + search_field_name + '"]').closest("tr"); > $(search_field_line).find('a.btn-default').addClass('disabled'); > >+ //Set display length back to 20. >+ mappingSettings._iDisplayLength = 20; >+ mappingst.fnDraw(); >+ > clean_line(line); > } > }); >@@ -73,8 +156,9 @@ > } ); > > $('.add-search-field').click(function() { >- var table = $(this).closest('table'); >+ var t = $('#search-fieldst').DataTable(); > var line = $(this).closest("tr"); >+ var new_line = clone_line( line ); > var name = $(line).find('input[data-id="search_field_name"]').val(); > let already_exist = 0; > [% FOREACH search_field IN all_search_fields %] >@@ -85,8 +169,9 @@ > } else { > var label = $(line).find('input[data-id="search_field_name"]').val(); > if ( name.length > 0 && label.length > 0 ) { >- var new_line = clone_line( line ); >- new_line.appendTo(table.find('tbody')); >+ t.row.add($(new_line)).draw( false ); >+ t.order([1, 'asc']).draw(); >+ t.page('last').draw(false); > clean_line(line); > } > } >@@ -189,14 +274,14 @@ a.add, a.delete { > [% END %] > </ul> > <div id="search_fields"> >- <table class="search_fields" data-index_name="search_fields"> >+ <table id="search-fieldst" class="search_fields" data-index_name="search_fields"> > <thead> > <tr> >- <th>Name</th> >- <th>Label</th> >- <th>Type</th> >- <th>Weight</th> >- <th></th> >+ <th class="string-sort">Name</th> >+ <th class="string-sort">Label</th> >+ <th class="string-sort">Type</th> >+ <th class="string-sort">Weight</th> >+ <th class="string-sort"></th> > </tr> > </thead> > <tbody> >@@ -291,14 +376,14 @@ a.add, a.delete { > </div> > [% FOREACH index IN indexes %] > <div id="mapping_[% index.index_name | html %]"> >- <table class="mappings" data-index_name="[% index.index_name | html %]"> >+ <table id="[% index.index_name | html %]t" class="mappings" data-index_name="[% index.index_name | html %]"> > <thead> > <tr class="nodrag nodrop"> > <th>Search field</th> >- <th>Sortable</th> >- <th>Facetable</th> >- <th>Suggestible</th> >- <th>Mapping</th> >+ <th class="string-sort">Sortable</th> >+ <th class="string-sort">Facetable</th> >+ <th class="string-sort">Suggestible</th> >+ <th class="string-sort">Mapping</th> > <th></th> > </tr> > </thead> >@@ -457,7 +542,7 @@ a.add, a.delete { > [% END %] > </div> > <p> >- <button class="btn btn-default" type="submit" name="op" value="edit"><i class="fa fa-hdd-o" aria-hidden="true"></i> Save</button> >+ <button id="save" class="btn btn-default" type="submit" name="op" value="edit"><i class="fa fa-hdd-o" aria-hidden="true"></i> Save</button> > <button class="btn btn-default" type="submit" name="op" value="reset_confirm"><i class="fa fa-refresh" aria-hidden="true"></i> Reset Mappings</button> > </p> > </form> >-- >2.11.0
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
|
Splinter Review
Attachments on
bug 20588
:
74241
|
74312
|
74315
|
78660
|
90576
| 90585