tablesorter/docs/example-option-textsorter-semver.html

126 lines
4.0 KiB
HTML
Raw Normal View History

<!DOCTYPE html>
<html>
<head>
2016-01-10 22:24:57 +00:00
<meta charset="utf-8">
<title>jQuery tablesorter 2.0 - Semver Sorting</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>
<script src="../js/extras/semver-mod.js"></script>
<style id="css">td.red { color: red; }</style>
<script id="js">$(function() {
// Set up empty table with second and first columns pre-sorted
$("table").tablesorter({
theme : 'blue',
// sortList: [[1,0]],
textSorter : {
1 : function(a,b) {
if (a === b) { return 0; }
if (window.semver && semver.valid(a) !== null && semver.valid(b) !== null) {
// valid version numbers, use semver.gt() method (greater than)
return semver.gt(a, b) ? 1 : -1;
} else {
// invalid version number or semver not included -> basic text sort
return a > b ? 1 : (a < b ? -1 : 0);
}
}
},
// extra code to highlight invalid semver numbers
2018-03-17 20:30:25 +00:00
initialized : function(table) {
var $cell,
c = table.config,
column = 1; // search second column (zero-based index)
if (window.semver) {
2018-03-17 20:30:25 +00:00
c.$tbodies.each(function(tbindex, tb) {
$(tb).children('tr').each(function(rowindex, tr) {
$cell = $(tr).children().eq(column);
if (semver.valid( $.trim( $cell.text() ) ) === null) {
// make invalid semver numbers obvious
$cell.addClass('red').append(' (invalid)');
}
});
});
}
}
});
});</script>
</head>
<body>
<div id="banner">
<h1>table<em>sorter</em></h1>
<h2>Semver Sorting</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>
2016-01-10 22:24:57 +00:00
</p>
<ul>
<li>This method does not use a parser nor a widget, it uses <code>semver.js</code> to allow the sorting of <a href="http://semver.org/">semantic version numbers</a>.</li>
<li>But this method requires a slightly modified version of <a href="https://github.com/isaacs/node-semver">semver.js for node</a>. All modifications are signified within the file to ease updating.</li>
<li>The modified semver.js (<a href="../js/extras/semver-mod.js">semver-mod.js</a>) is contained in the new "extras" subfolder. Please include it if you need this specific type of sort.</li>
<li>Invalid version numbers be sorted using a basic text sort, so they will be grouped with their similar version numbers, but not sorted properly; this demo has some extra code to highlight invalid version numbers.</li>
<li>In this demo, when the semver 2.0.0 compliant version column is sorted, the order column will be in sequential order.</li>
<li>Semver example order, from semver.org:<br>1.0.0-alpha &lt; 1.0.0-alpha.1 &lt; 1.0.0-alpha.beta &lt; 1.0.0-beta &lt; 1.0.0-beta.2 &lt; 1.0.0-beta.11 &lt; 1.0.0-rc.1 &lt; 1.0.0</li>
<!-- http://jsfiddle.net/Mottie/abkNM/1626/ -->
</ul>
<h1>Demo</h1>
<div id="demo"><table class="tablesorter">
<thead>
<tr>
<th>Order</th>
<th>SemVer 2.0.0 compliant versioning</th>
</tr>
</thead>
<tbody>
<tr><td>6</td><td>1.0.0-beta.2</td></tr>
<tr><td>8</td><td>1.0.0-rc.1</td></tr>
<tr><td>2</td><td>1.0.0-alpha.1</td></tr>
<tr><td>1</td><td>1.0.0-alpha</td></tr>
<tr><td>10</td><td>1.0.0</td></tr>
<tr><td>4</td><td>1.0.0-alpha.beta</td></tr>
<tr><td>3</td><td>1.0.0-alpha.2</td></tr>
<tr><td>7</td><td>1.0.0-beta.11</td></tr>
<tr><td>9</td><td>1.0.0-rc.2</td></tr>
<tr><td>5</td><td>1.0.0-beta</td></tr>
<tr><td>11</td><td>1.0.0beta</td></tr>
</tbody>
</table></div>
<h1>Javascript</h1>
<div id="javascript">
<pre class="prettyprint lang-javascript"></pre>
</div>
<h1>CSS</h1>
<div id="css">
<pre class="prettyprint lang-css"></pre>
</div>
<h1>HTML</h1>
<div id="html">
<pre class="prettyprint lang-html"></pre>
</div>
</div>
</body>
</html>