126 lines
4.0 KiB
HTML
126 lines
4.0 KiB
HTML
<!DOCTYPE html>
|
|
<html>
|
|
<head>
|
|
<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
|
|
initialized : function(table) {
|
|
var $cell,
|
|
c = table.config,
|
|
column = 1; // search second column (zero-based index)
|
|
if (window.semver) {
|
|
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>
|
|
</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 < 1.0.0-alpha.1 < 1.0.0-alpha.beta < 1.0.0-beta < 1.0.0-beta.2 < 1.0.0-beta.11 < 1.0.0-rc.1 < 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>
|