321 lines
14 KiB
HTML
321 lines
14 KiB
HTML
<!DOCTYPE html>
|
|
<html>
|
|
<head>
|
|
<meta charset="utf-8">
|
|
<title>jQuery tablesorter 2.0 - headerTitles widget</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">
|
|
<link href="css/tipsy.css" rel="stylesheet">
|
|
<link class="ui-theme" rel="stylesheet" href="css/jquery-ui.min.css">
|
|
<script src="js/jquery-ui.min.js"></script>
|
|
<script src="js/prettify.js"></script>
|
|
<script src="js/docs.js"></script>
|
|
<script src="js/jquery.tipsy.min.js"></script>
|
|
|
|
<!-- Tablesorter: required -->
|
|
<link rel="stylesheet" href="../css/theme.blue.css">
|
|
<script src="../js/jquery.tablesorter.js"></script>
|
|
|
|
<!-- Tablesorter: optional -->
|
|
<script src="../js/widgets/widget-headerTitles.js"></script>
|
|
|
|
<script id="js">$(function() {
|
|
|
|
var updateTooltips = function($cell, txt) {
|
|
// dynamically update tipsy
|
|
if ($cell.is(':hover')) {
|
|
$cell
|
|
.attr({ title : txt, 'original-title': txt })
|
|
// hide, then show the tooltip to force updating & realignment
|
|
.tipsy('hide')
|
|
.tipsy('show');
|
|
}
|
|
return txt;
|
|
};
|
|
|
|
$("#table1").tablesorter({
|
|
theme : 'blue',
|
|
sortList: [[0,0]],
|
|
headers : { 4: { sorter: false } },
|
|
widgets: ['zebra', 'headerTitles'],
|
|
widgetOptions: {
|
|
headerTitle_useAria : true,
|
|
// add tooltip class
|
|
headerTitle_tooltip : 'tooltip',
|
|
// manipulate the title as desired
|
|
headerTitle_callback : updateTooltips
|
|
}
|
|
});
|
|
|
|
// This table is showing all of the headerTitle widget options
|
|
$("#table2").tablesorter({
|
|
theme : 'blue',
|
|
sortList: [[0,0]],
|
|
// third click resets the sort
|
|
sortReset: true,
|
|
headers : { 4: { sorter: false } },
|
|
widgets: ['zebra', 'headerTitles'],
|
|
widgetOptions: {
|
|
// headerTitle_prefix : 'Sort: ', // option has been deprecated
|
|
// use aria-label text
|
|
// e.g. "First Name: Ascending sort applied, activate to apply a descending sort"
|
|
headerTitle_useAria : false,
|
|
// add tooltip class
|
|
headerTitle_tooltip : 'tooltip',
|
|
// custom titles [ "ascending", "descending", "unsorted" ]
|
|
headerTitle_cur_text : [ 'Ascending text sort applied', 'Descending text sort applied', 'Currently unsorted' ],
|
|
headerTitle_cur_numeric : [ 'Ascending numeric sort applied', 'Descending numeric sort applied', 'Currently unsorted' ],
|
|
headerTitle_nxt_text : [ ' apply ascending text sort', ' apply descending text sort', 'remove sort' ],
|
|
headerTitle_nxt_numeric : [ ' apply ascending numeric sort', ' apply descending numeric sort', 'remove sort' ],
|
|
|
|
// title display; {prefix} adds above prefix
|
|
// {type} adds the current sort order from above (text or numeric)
|
|
// {next} adds the next sort direction using the sort order above
|
|
headerTitle_output_sorted : '{current}; activate to {next}',
|
|
headerTitle_output_unsorted : '{current}; activate to {next}',
|
|
headerTitle_output_nosort : 'No sort available',
|
|
// use this type to override the parser detection result
|
|
// e.g. use for numerically parsed columns (e.g. dates), but you
|
|
// want the user to see a text sort, e.g. [ 'text', '', 'numeric' ]
|
|
// use '' (empty string) to use the default
|
|
headerTitle_type : ['', '', '', '', '', 'text'],
|
|
// manipulate the title as desired
|
|
headerTitle_callback : updateTooltips
|
|
}
|
|
});
|
|
|
|
// using defaults, no tooltips
|
|
$("#table3").tablesorter({
|
|
theme : 'blue',
|
|
sortList: [[0,0]],
|
|
headers : { 4: { sorter: false } },
|
|
widgets: ['zebra', 'headerTitles']
|
|
});
|
|
|
|
// add tooltip
|
|
$('.tooltip').tipsy({ gravity: 's' });
|
|
|
|
// switch aria mode
|
|
var $state = $('#usearia'),
|
|
$table1 = $('#table1'),
|
|
// first table only
|
|
wo = $table1[0].config.widgetOptions;
|
|
$('button').on('click', function() {
|
|
wo.headerTitle_useAria = !wo.headerTitle_useAria;
|
|
// show current state in demo
|
|
$state.text( wo.headerTitle_useAria );
|
|
// force headerTitles widget to update
|
|
$table1.trigger('refreshHeaderTitle');
|
|
});
|
|
|
|
});</script>
|
|
</head>
|
|
<body>
|
|
|
|
<div id="banner">
|
|
<h1>table<em>sorter</em></h1>
|
|
<h2>headerTitles Widget</h2>
|
|
<h3>Flexible client-side table sorting</h3>
|
|
<a href="index.html">Back to documentation</a>
|
|
</div>
|
|
|
|
<div id="main">
|
|
|
|
<p></p>
|
|
<br>
|
|
|
|
<div class="accordion">
|
|
|
|
<h3><a href="#">Notes</a></h3>
|
|
<div>
|
|
<ul>
|
|
<li>In <span class="version">2.15.7</span>,
|
|
<ul>
|
|
<li>Sorry for all of these breaking changes, I should have left this widget in beta.</li>
|
|
<li>The <code>headerTitle_prefix</code>, <code>headerTitle_text</code>, <code>headerTitle_numeric</code> options has been replaced, in lieu of the new ouput options; sorry for no deprecation notice.</li>
|
|
<li>Added <code>headerTitle_useAria</code>, <code>headerTitle_tooltip</code>, <code>headerTitle_output_sorted</code>, <code>headerTitle_output_unsorted</code>, <code>headerTitle_output_nosort</code>, <code>headerTitle_cur_text</code>, <code>headerTitle_cur_numeric</code>, <code>headerTitle_nxt_text</code>, <code>headerTitle_nxt_numeric</code>, <code>headerTitle_type</code> & <code>headerTitle_callback</code> options. See the options section below for more details.</li>
|
|
<li>Added <code>"refreshHeaderTitle"</code> method to force the widget to update.</li>
|
|
</ul>
|
|
</li>
|
|
<li>This widget adds a title to the table headers when they are sorted.</li>
|
|
<li>Click on any header. You may have to move the mouse off, then back on the header to see the title appear.</li>
|
|
<li>This widget will not work with the original tablesorter plugin (v2.0.5).</li>
|
|
<li>The examples uses the <a href="http://onehackoranother.com/projects/jquery/tipsy/">tipsy jQuery plugin </a></li>
|
|
</ul>
|
|
</div>
|
|
|
|
<h3><a href="#">Options</a></h3>
|
|
<div>
|
|
<table class="tablesorter-blue">
|
|
<colgroup>
|
|
<col style="width:50px;">
|
|
<col style="width:120px;">
|
|
<col>
|
|
</colgroup>
|
|
<thead>
|
|
<tr><th>Option</th><th>Default</th><th>Description</th></tr>
|
|
</thead>
|
|
<tbody>
|
|
<tr>
|
|
<td>headerTitle_useAria</td>
|
|
<td><code>false</code></td>
|
|
<td>
|
|
When <code>true</code>, the headers titles are extracted from the <code>aria-label</code>. The text in that label is built from the <a href="http://mottie.github.io/tablesorter/docs/#variable-language"><code>$.tablesorter.language</code> option</a>.
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td>headerTitle_tooltip</td>
|
|
<td><code>""</code></td>
|
|
<td>
|
|
Add a (tooltip) class name to the header, yeah you could have used the <a href="http://mottie.github.io/tablesorter/docs/#cssheader"><code>cssHeader</code> option</a> to do the same thing, but this option allows adding classes using an array.
|
|
<pre class="prettyprint lang-js">headerTitle_tooltip : [ 'tooltip-text', 'tooltip-text', 'tooltip-numeric', 'tooltip-numeric', '', 'tooltip-text']</pre>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td>
|
|
headerTitle_cur_text<br>
|
|
headerTitle_cur_numeric
|
|
</td>
|
|
<td>(see description)</td>
|
|
<td>
|
|
When any of the header title output options use the <code>{current}</code> tag, it is replaced by values from either the current ("cur") text or numeric option array as determined by the column unsorted state or sort direction.<br>
|
|
<br>
|
|
The array must contain text for ascending, descending and unsorted state (in that order). Defaults:
|
|
<pre class="prettyprint lang-js">headerTitle_cur_text : [ ' sort: A - Z', ' sort: Z - A', 'ly unsorted' ],
|
|
headerTitle_cur_numeric : [ ' sort: 0 - 9', ' sort: 9 - 0', 'ly unsorted' ]</pre>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td>
|
|
headerTitle_nxt_text<br>
|
|
headerTitle_nxt_numeric
|
|
</td>
|
|
<td>(see description)</td>
|
|
<td>
|
|
When any of the header title output options use the <code>{next}</code> tag, it is replaced by values from either the next ("nxt") text or numeric option array as determined by the column unsorted state or sort direction.<br>
|
|
<br>
|
|
The array must contain text for when the next state is ascending, descending and unsorted (in that order). Defaults:
|
|
<pre class="prettyprint lang-js">headerTitle_nxt_text : [ ' sort: A - Z', ' sort: Z - A', 'remove sort' ],
|
|
headerTitle_nxt_numeric : [ ' sort: 0 - 9', ' sort: 9 - 0', 'remove sort' ]</pre>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td>
|
|
headerTitle_output_sorted<br>
|
|
headerTitle_output_unsorted<br>
|
|
headerTitle_output_nosort
|
|
</td>
|
|
<td>(see description)</td>
|
|
<td>
|
|
Set the output string for each sort condition: sorted, unsorted or sorting disabled.<br>
|
|
<br>
|
|
Each of these option strings can include a <code>{name}</code>, <code>{current}</code> and <code>{next}</code> tag.
|
|
<ul>
|
|
<li>The <code>{name}</code> tag is replaced by the header text.</li>
|
|
<li>The <code>{current}</code> tag is replaced by the type-appropriate text from either the <code>headerTitle_cur_text</code> or <code>headerTitle_cur_numeric</code> option.</li>
|
|
<li>The <code>{next}</code> tag is replaced by the type-appropriate text from either the <code>headerTitle_nxt_text</code> or <code>headerTitle_nxt_numeric</code> option.</li>
|
|
</ul>
|
|
Defaults:
|
|
<pre class="prettyprint lang-js">headerTitle_output_sorted : 'current{current}; activate to {next}',
|
|
headerTitle_output_unsorted : 'current{current}; activate to {next} ',
|
|
headerTitle_output_nosort : 'No sort available'</pre>
|
|
Note: the reason "activate" is used instead of "click" is because the user can also <kbd>Tab</kbd> to the header cell and press <kbd>Enter</kbd> to initiate a sort.
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td>headerTitle_type</td>
|
|
<td><code>[]</code></td>
|
|
<td>Each column type is determined by the parser <code>type</code> value. So, if you want to override a column default type, set this option with an array with the specified column changed to either "text" or "numeric". This is useful when a date column shows as a numeric sort, but you want your users to see it as a text sort.<br>
|
|
<br>
|
|
As seen in the second table initialization code below, if an array element is undefined or an empty string, it will not override the default type.
|
|
<pre class="prettyprint lang-js">headerTitle_type : ['', '', '', '', '', 'text']</pre>
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<td>headerTitle_callback</td>
|
|
<td><code>null</code></td>
|
|
<td>
|
|
This callback function is executed after the title text string has completed processing. Any additional changes, or modifications can be done within this function. This function has two parameters <code>$cell</code> (the header cell as a jQuery object), and the processed text (<code>txt</code>). The function <strong>must</strong> return the text!
|
|
<pre class="prettyprint lang-js">headerTitle_callback : function($cell, txt) {
|
|
return txt;
|
|
}</pre>In this demo, you will notice that this function is used to dynamically update the tooltip.
|
|
</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
</div>
|
|
|
|
<h3><a href="#">Method</a></h3>
|
|
<div>
|
|
<h3>Force headerTitle widget update</h3>
|
|
If you need to programmically force the header title to update, trigger a <code>refreshHeaderTitle</code> event on the table:
|
|
<pre class="prettyprint lang-js">$('table').trigger('refreshHeaderTitle');</pre>
|
|
In this demo, this method is used when switching between the default header title and aria-label text.
|
|
</div>
|
|
|
|
</div>
|
|
|
|
<h1>Demo</h1>
|
|
<div id="demo">
|
|
|
|
<h3>Tooltip plugin using togglable aria-label text</h3>
|
|
<button type="button">use aria-label</button>: <span id="usearia" class="bright">true</span>
|
|
|
|
<table id="table1">
|
|
<thead>
|
|
<tr><th>First Name</th><th>Last Name</th><th>Age</th><th>Total</th><th>Discount</th><th>Date</th></tr>
|
|
</thead>
|
|
<tbody>
|
|
<tr><td>Peter</td><td>Parker</td><td>28</td><td>$9.99</td><td>20%</td><td>Jan 18, 2001 9:12 AM</td></tr>
|
|
<tr><td>John</td><td>Evans</td><td>33</td><td>$9.99</td><td>25%</td><td>Dec 10, 2002 5:14 AM</td></tr>
|
|
<tr><td>Clark</td><td>Kent</td><td>22</td><td>$15.89</td><td>44%</td><td>Jan 12, 2003 11:14 AM</td></tr>
|
|
<tr><td>Bruce</td><td>Almighty</td><td>45</td><td>$15.89</td><td>44%</td><td>Jan 18, 2001 9:12 AM</td></tr>
|
|
<tr><td>Bruce</td><td>Evans</td><td>22</td><td>$13.19</td><td>11%</td><td>Jul 6, 2006 8:14 AM</td></tr>
|
|
</tbody>
|
|
</table>
|
|
|
|
<h3>Tooltip plugin with alternative titles</h3>
|
|
<table id="table2">
|
|
<thead>
|
|
<tr><th>First Name</th><th>Last Name</th><th>Age</th><th>Total</th><th>Discount</th><th>Date</th></tr>
|
|
</thead>
|
|
<tbody>
|
|
<tr><td>Peter</td><td>Parker</td><td>28</td><td>$9.99</td><td>20%</td><td>Jan 18, 2001 9:12 AM</td></tr>
|
|
<tr><td>John</td><td>Evans</td><td>33</td><td>$9.99</td><td>25%</td><td>Dec 10, 2002 5:14 AM</td></tr>
|
|
<tr><td>Clark</td><td>Kent</td><td>22</td><td>$15.89</td><td>44%</td><td>Jan 12, 2003 11:14 AM</td></tr>
|
|
<tr><td>Bruce</td><td>Almighty</td><td>45</td><td>$15.89</td><td>44%</td><td>Jan 18, 2001 9:12 AM</td></tr>
|
|
<tr><td>Bruce</td><td>Evans</td><td>22</td><td>$13.19</td><td>11%</td><td>Jul 6, 2006 8:14 AM</td></tr>
|
|
</tbody>
|
|
</table>
|
|
|
|
<h3>No Tooltip Plugin</h3>
|
|
<table id="table3">
|
|
<thead>
|
|
<tr><th>First Name</th><th>Last Name</th><th>Age</th><th>Total</th><th>Discount</th><th>Date</th></tr>
|
|
</thead>
|
|
<tbody>
|
|
<tr><td>Peter</td><td>Parker</td><td>28</td><td>$9.99</td><td>20%</td><td>Jan 18, 2001 9:12 AM</td></tr>
|
|
<tr><td>John</td><td>Evans</td><td>33</td><td>$9.99</td><td>25%</td><td>Dec 10, 2002 5:14 AM</td></tr>
|
|
<tr><td>Clark</td><td>Kent</td><td>22</td><td>$15.89</td><td>44%</td><td>Jan 12, 2003 11:14 AM</td></tr>
|
|
<tr><td>Bruce</td><td>Almighty</td><td>45</td><td>$15.89</td><td>44%</td><td>Jan 18, 2001 9:12 AM</td></tr>
|
|
<tr><td>Bruce</td><td>Evans</td><td>22</td><td>$13.19</td><td>11%</td><td>Jul 6, 2006 8:14 AM</td></tr>
|
|
</tbody>
|
|
</table>
|
|
|
|
</div>
|
|
|
|
<h1>Javascript</h1>
|
|
<div id="javascript">
|
|
<pre class="prettyprint lang-javascript"></pre>
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</body>
|
|
</html>
|