Bugzilla – Attachment 15968 Details for
Bug 9431
Use DataTables on Patron Category Administration page
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Help
|
New Account
|
Log In
[x]
|
Forgot Password
Login:
[x]
[patch]
Bug 9431 [Revised] Use DataTables on Patron Category Administration page
Bug-9431-Revised-Use-DataTables-on-Patron-Category.patch (text/plain), 7.67 KB, created by
Jonathan Druart
on 2013-03-08 10:10:57 UTC
(
hide
)
Description:
Bug 9431 [Revised] Use DataTables on Patron Category Administration page
Filename:
MIME Type:
Creator:
Jonathan Druart
Created:
2013-03-08 10:10:57 UTC
Size:
7.67 KB
patch
obsolete
>From 05b970255fb66b7cf4eb4ef2b95a36c9044240e4 Mon Sep 17 00:00:00 2001 >From: Owen Leonard <oleonard@myacpl.org> >Date: Fri, 18 Jan 2013 15:55:47 -0500 >Subject: [PATCH] Bug 9431 [Revised] Use DataTables on Patron Category > Administration page > >Replace the tablesorter plugin with the DataTables plugin on the >patron category administration page. Structural changes were made to the >table markup for validity and to deal with a DataTables bug which >prevents it from properly parsing a <th> with a colspan. > >To test, open the Patron Category Administration page (Administration -> >Patron types and categories). Confirm that table sorting works >correctly. > >Revision adds a "natural sort" plugin to the main datatables >configuration JavaScript file to enable sorting of columns like those in >this table which include mixed numeric and text data. Allows correct >numeric sorting of data like "0 years, 1 years, 2 years, 18 years," etc. > >Further revision corrects template path to datatables assets. > >Signed-off-by: Bernardo Gonzalez Kriegel <bgkriegel@gmail.com> > >Comment: Sorting works. No errors. >Signed-off-by: Jonathan Druart <jonathan.druart@biblibre.com> >--- > koha-tmpl/intranet-tmpl/prog/en/js/datatables.js | 57 ++++++++++++++++++++ > .../prog/en/modules/admin/categorie.tt | 39 +++++++++----- > 2 files changed, 82 insertions(+), 14 deletions(-) > >diff --git a/koha-tmpl/intranet-tmpl/prog/en/js/datatables.js b/koha-tmpl/intranet-tmpl/prog/en/js/datatables.js >index b43f2f8..b350211 100644 >--- a/koha-tmpl/intranet-tmpl/prog/en/js/datatables.js >+++ b/koha-tmpl/intranet-tmpl/prog/en/js/datatables.js >@@ -414,3 +414,60 @@ $.fn.dataTableExt.oSort['num-html-desc'] = function(a,b) { > y = parseFloat( y ); > return ((x < y) ? 1 : ((x > y) ? -1 : 0)); > }; >+ >+(function() { >+ >+/* >+ * Natural Sort algorithm for Javascript - Version 0.7 - Released under MIT license >+ * Author: Jim Palmer (based on chunking idea from Dave Koelle) >+ * Contributors: Mike Grier (mgrier.com), Clint Priest, Kyle Adams, guillermo >+ * See: http://js-naturalsort.googlecode.com/svn/trunk/naturalSort.js >+ */ >+function naturalSort (a, b) { >+ var re = /(^-?[0-9]+(\.?[0-9]*)[df]?e?[0-9]?$|^0x[0-9a-f]+$|[0-9]+)/gi, >+ sre = /(^[ ]*|[ ]*$)/g, >+ dre = /(^([\w ]+,?[\w ]+)?[\w ]+,?[\w ]+\d+:\d+(:\d+)?[\w ]?|^\d{1,4}[\/\-]\d{1,4}[\/\-]\d{1,4}|^\w+, \w+ \d+, \d{4})/, >+ hre = /^0x[0-9a-f]+$/i, >+ ore = /^0/, >+ // convert all to strings and trim() >+ x = a.toString().replace(sre, '') || '', >+ y = b.toString().replace(sre, '') || '', >+ // chunk/tokenize >+ xN = x.replace(re, '\0$1\0').replace(/\0$/,'').replace(/^\0/,'').split('\0'), >+ yN = y.replace(re, '\0$1\0').replace(/\0$/,'').replace(/^\0/,'').split('\0'), >+ // numeric, hex or date detection >+ xD = parseInt(x.match(hre), 10) || (xN.length != 1 && x.match(dre) && Date.parse(x)), >+ yD = parseInt(y.match(hre), 10) || xD && y.match(dre) && Date.parse(y) || null; >+ // first try and sort Hex codes or Dates >+ if (yD) >+ if ( xD < yD ) return -1; >+ else if ( xD > yD ) return 1; >+ // natural sorting through split numeric strings and default strings >+ for(var cLoc=0, numS=Math.max(xN.length, yN.length); cLoc < numS; cLoc++) { >+ // find floats not starting with '0', string or 0 if not defined (Clint Priest) >+ var oFxNcL = !(xN[cLoc] || '').match(ore) && parseFloat(xN[cLoc]) || xN[cLoc] || 0; >+ var oFyNcL = !(yN[cLoc] || '').match(ore) && parseFloat(yN[cLoc]) || yN[cLoc] || 0; >+ // handle numeric vs string comparison - number < string - (Kyle Adams) >+ if (isNaN(oFxNcL) !== isNaN(oFyNcL)) return (isNaN(oFxNcL)) ? 1 : -1; >+ // rely on string comparison if different types - i.e. '02' < 2 != '02' < '2' >+ else if (typeof oFxNcL !== typeof oFyNcL) { >+ oFxNcL += ''; >+ oFyNcL += ''; >+ } >+ if (oFxNcL < oFyNcL) return -1; >+ if (oFxNcL > oFyNcL) return 1; >+ } >+ return 0; >+} >+ >+jQuery.extend( jQuery.fn.dataTableExt.oSort, { >+ "natural-asc": function ( a, b ) { >+ return naturalSort(a,b); >+ }, >+ >+ "natural-desc": function ( a, b ) { >+ return naturalSort(a,b) * -1; >+ } >+} ); >+ >+}()); >\ No newline at end of file >diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/admin/categorie.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/admin/categorie.tt >index e7e00d4..ad57315 100644 >--- a/koha-tmpl/intranet-tmpl/prog/en/modules/admin/categorie.tt >+++ b/koha-tmpl/intranet-tmpl/prog/en/modules/admin/categorie.tt >@@ -5,23 +5,30 @@ > [% IF ( delete_confirmed ) %]Category deleted[% END %]</title> > [% INCLUDE 'doc-head-close.inc' %] > [% INCLUDE 'calendar.inc' %] >-<script type="text/javascript" src="[% themelang %]/lib/jquery/plugins/jquery.tablesorter.min.js"></script> >-<script type="text/javascript" src="[% themelang %]/lib/jquery/plugins/jquery.tablesorter.pager.js"></script> >-<script type="text/javascript" id="js">$(document).ready(function() { >- $("#table_categorie").tablesorter({ >- sortList: [[0,0]], >- widgets: ['zebra'], >- headers: { 11: { sorter: false}} >- }).tablesorterPager({container: $("#pagertable_categorie"),positionFixed: false,size: 20}); >+<link rel="stylesheet" type="text/css" href="[% themelang %]/css/datatables.css" /> >+<script type="text/javascript" src="[% themelang %]/lib/jquery/plugins/jquery.dataTables.min.js"></script> >+[% INCLUDE 'datatables-strings.inc' %] >+<script type="text/javascript" src="[% themelang %]/js/datatables.js"></script> >+<script type="text/javascript" id="js"> >+//<![CDATA[ >+ $(document).ready(function() { >+ $("#table_categorie").dataTable($.extend(true, {}, dataTablesDefaults, { >+ "aoColumnDefs": [ >+ { "aTargets": [ -1, -2 ], "bSortable": false, "bSearchable": false }, >+ { "aTargets": [ 3,4,5 ], "sType": "natural" }, >+ ], >+ "aaSorting": [[ 1, "asc" ]], >+ "aLengthMenu": [[10, 20, 50, 100, -1], [10, 20, 50, 100, "All"]], >+ "iDisplayLength": 20, >+ "sPaginationType": "four_button" >+ })); >+ > $( "#enrolmentperioddate" ).datepicker({ minDate: 1 }); // Require that "until date" be in the future > > if ( $("#branches option:selected").length < 1 ) { > $("#branches option:first").attr("selected", "selected"); > } >-}); </script> >-<script type="text/javascript"> >-//<![CDATA[ >- // >+}); > function isNotNull(f,noalert) { > if (f.value.length ==0) { > return false; >@@ -276,10 +283,10 @@ Confirm deletion of category [% categorycode |html %][% END %]</legend> > [% END %] > [% IF ( loop ) %] > <div id="pagertable_categorie"> >-[% INCLUDE 'table-pager.inc' perpage='20' %] > </div> > <table id="table_categorie"> > <thead> >+ <tr> > <th scope="col">Code</th> > <th scope="col">Category name</th> > <th scope="col">Type</th> >@@ -294,8 +301,11 @@ Confirm deletion of category [% categorycode |html %][% END %]</legend> > <th scope="col">Messaging</th> > [% END %] > <th scope="col">Branches limitations</th> >- <th scope="col" colspan="2"> </th> >+ <th scope="col"> </th> >+ <th scope="col"> </th> >+ </tr> > </thead> >+ <tbody> > [% FOREACH loo IN loop %] > <tr> > <td>[% loo.categorycode |html %]</td> >@@ -368,6 +378,7 @@ Confirm deletion of category [% categorycode |html %][% END %]</legend> > <td><a href="[% loo.script_name %]?op=delete_confirm&categorycode=[% loo.categorycode |uri %]">Delete</a></td> > </tr> > [% END %] >+ </tbody> > </table> > [% ELSE %] > <div class="dialog alert">No categories have been defined. <a href="/cgi-bin/koha/admin/categorie.pl?op=add_form">Create a new category</a>.</div> >-- >1.7.10.4
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 9431
:
14720
|
14721
|
14915
|
14956
|
15695
|
15870
|
15959
| 15968