1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160
|
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>jQuery tablesorter 2.0 - Using a Custom Sort Script</title>
<!-- jQuery -->
<script src="js/jquery-latest.min.js"></script>
<!-- Demo stuff -->
<link rel="stylesheet" href="css/jq.css">
<link href="css/prettify.css" rel="stylesheet">
<script src="js/prettify.js"></script>
<script src="js/docs.js"></script>
<!-- Tablesorter: required -->
<link rel="stylesheet" href="../css/theme.blue.css">
<script src="../js/jquery.tablesorter.js"></script>
<!-- https://sugarjs.com/docs/#/DateParsing -->
<script src="js/sugar.min.js"></script>
<script id="js">$(function() {
/*
// Define sugar.js v1.4.1 Icelandic sort order
Array.AlphanumericSortOrder = 'AaÁáBbCcDdÐðEeÉéĘęFfGgHhIiÍíJjKkLlMmNnOoÓóPpQqRrSsTtUuÚúVvWwXxYyÝýZzÞþÆæÖö';
Array.AlphanumericSortIgnoreCase = true;
Array.AlphanumericSortEquivalents = {};
*/
// Define sugar.js v2.0.0+ Icelandic sort order
// The following setting is IMPORTANT!
// see https://github.com/andrewplummer/Sugar/issues/382#issuecomment-41526957
Sugar.Array.setOption('sortEquivalents', {});
Sugar.Array.setOption('sortOrder', 'AaÁáBbCcDdÐðEeÉéĘęFfGgHhIiÍíJjKkLlMmNnOoÓóPpQqRrSsTtUuÚúVvWwXxYyÝýZzÞþÆæÖö');
Sugar.Array.setOption('sortIgnoreCase', true);
$("table").tablesorter({
theme : 'blue',
// table = table object; get config options from table.config
// column is the column index (zero-based)
ignoreCase : false,
textSorter : {
// alphanumeric sort from sugar v1.4.1 (https://sugarjs.com/docs/#/Array/sortBy)
// 1 : Array.AlphanumericSort,
// alphanumeric sort from sugar v2.0+ (https://sugarjs.com/docs/#/Array/getOption)
1 : Sugar.Array.getOption('sortCollate'),
// function parameters were previously (a, b, table, column) - *** THEY HAVE CHANGED!!! ***
2 : function(a, b, direction, column, table) {
// this is the original sort method from tablesorter 2.0.3
if (table.config.sortLocaleCompare) { return a.localeCompare(b); }
return ((a < b) ? -1 : ((a > b) ? 1 : 0));
},
// no need to set this as it is the default sorter
// renamed v2.12 from $.tablesorter.sortText - performs natural sort
3 : $.tablesorter.sortNatural,
}
});
});</script>
</head>
<body>
<div id="banner">
<h1>table<em>sorter</em></h1>
<h2>Using a Custom Sort Script</h2>
<h3>Flexible client-side table sorting</h3>
<a href="index.html">Back to documentation</a>
</div>
<div id="main">
<p class="tip">
<em>NOTE!</em>
</p>
<ul>
<li>Modified the <code>textSorter</code> option to allow setting the sorter per column <span class="version">v2.12</span>:
<ul>
<li><span class="label alert">*NOTE*</span> The <code>textSorter</code> function parameters have changed! It is now <code>function(a, b, direction, column, table)</code> (previously <code>function(a, b, table, column)</code>).</li>
<li>The "Icelandic Alphabet" column is using the <a href="https://sugarjs.com/docs/#/Array/sortBy">Sugar</a> library v2.0+ to sort:
<ul>
<li><span class="label alert">*NOTE*</span> There are <strong>significant changes</strong> in the API of Sugar v2.0+.</li>
<li>Solved (4/28/2014)! <del>please note that at the time of this writing, there is an issue with it not sorting properly (<a href="https://github.com/andrewplummer/Sugar/issues/382">ref</a>)</del></li>
<li>You can tell it is working properly when you sort the Icelandic Alphabet column and the numeric column numbers are sequential (<span class="lookhere">see row #37</span>).</li>
</ul>
</li>
<li>The "Plain Text Sort" column is using a basic alphabetical sort (with localeCompare if set). Sort that column, then the last column to see how it differs from an alphanumeric sort.</li>
<li>The sorting of empty cells still occurs regardless of the custom <code>textSorter</code> setting.</li>
</ul>
</li>
<li>One custom sort used here is from the original tablesorter plugin v2.0.3. Sort the <del>first</del> "Plain Text Sort" column to see how it sorts alphanumeric data.</li>
<li>This option is not part of the original plugin (v2.2).</li>
</ul>
<h1>Demo</h1>
<div id="demo"><table class="tablesorter">
<thead>
<tr>
<th>Numeric</th>
<th>Icelandic Alphabet</th>
<th>Plain Text Sort</th>
<th>Alphanumeric Sort</th>
</tr>
</thead>
<tbody>
<tr><td>01</td><td>A</td><td>a1a10</td><td>a1a10</td></tr>
<tr><td>02</td><td>Á</td><td>a1a1</td><td>a1a1</td></tr>
<tr><td>03</td><td>B</td><td>a2b2</td><td>a2b2</td></tr>
<tr><td>04</td><td>C</td><td>a1a3</td><td>a1a3</td></tr>
<tr><td>05</td><td>D</td><td>a2b10</td><td>a2b10</td></tr>
<tr><td>06</td><td>Ð</td><td>a1a20</td><td>a1a20</td></tr>
<tr><td>07</td><td>E</td><td>a1b04</td><td>a1b04</td></tr>
<tr><td>08</td><td>É</td><td>a1a0</td><td>a1a0</td></tr>
<tr><td>09</td><td>Ę</td><td>a1a4</td><td>a1a4</td></tr>
<tr><td>10</td><td>F</td><td>a1a6</td><td>a1a6</td></tr>
<tr><td>11</td><td>G</td><td>a1b5</td><td>a1b5</td></tr>
<tr><td>12</td><td>H</td><td>a1b99</td><td>a1b99</td></tr>
<tr><td>13</td><td>I</td><td>a2b5</td><td>a2b5</td></tr>
<tr><td>14</td><td>Í</td><td>b10</td><td>b10</td></tr>
<tr><td>15</td><td>J</td><td>b3</td><td>b3</td></tr>
<tr><td>16</td><td>K</td><td>b5</td><td>b5</td></tr>
<tr><td>17</td><td>L</td><td>b7</td><td>b7</td></tr>
<tr><td>18</td><td>M</td><td>b9</td><td>b9</td></tr>
<tr><td>19</td><td>N</td><td>b12</td><td>b12</td></tr>
<tr><td>20</td><td>O</td><td>b30</td><td>b30</td></tr>
<tr><td>21</td><td>Ó</td><td>b45</td><td>b45</td></tr>
<tr><td>22</td><td>P</td><td>b78</td><td>b78</td></tr>
<tr><td>23</td><td>Q</td><td>b67</td><td>b67</td></tr>
<tr><td>24</td><td>R</td><td>b62</td><td>b62</td></tr>
<tr><td>25</td><td>S</td><td>b01</td><td>b01</td></tr>
<tr><td>26</td><td>T</td><td>b0</td><td>b0</td></tr>
<tr><td>27</td><td>U</td><td>b77</td><td>b77</td></tr>
<tr><td>28</td><td>Ú</td><td>b96</td><td>b96</td></tr>
<tr><td>29</td><td>V</td><td>a1b55</td><td>a1b55</td></tr>
<tr><td>30</td><td>W</td><td>a1b84</td><td>a1b84</td></tr>
<tr><td>31</td><td>X</td><td>b25</td><td>b25</td></tr>
<tr><td>32</td><td>Y</td><td>b41</td><td>b41</td></tr>
<tr><td>33</td><td>Ý</td><td>b79</td><td>b79</td></tr>
<tr><td>34</td><td>Z</td><td>b49</td><td>b49</td></tr>
<tr><td>35</td><td>Þ</td><td>b94</td><td>b94</td></tr>
<tr><td>36</td><td>Æ</td><td>b118</td><td>b118</td></tr>
<tr><td>37</td><td class="lookhere">Ö</td><td>b80</td><td>b80</td></tr>
</tbody>
</table></div>
<h1>Javascript</h1>
<div id="javascript">
<pre class="prettyprint lang-javascript"></pre>
</div>
<h1>HTML</h1>
<div id="html">
<pre class="prettyprint lang-html"></pre>
</div>
<div class="next-up">
<hr />
Next up: <a href="example-locale-sort.html">Sorting Accented Characters ››</a>
</div>
</div>
</body>
</html>
|