Sort tags naturally
authorJoachim Breitner <mail@joachim-breitner.de>
Sun, 21 Jun 2015 19:13:27 +0000 (21:13 +0200)
committerJoachim Breitner <mail@joachim-breitner.de>
Sun, 21 Jun 2015 19:13:27 +0000 (21:13 +0200)
install-jslibs.sh
site/index.html
site/js/gipeda.js

index b9b3062..3ee8ea4 100755 (executable)
@@ -12,7 +12,7 @@ test -e handlebars-v2.0.0.js ||
        wget -c http://builds.handlebarsjs.com.s3.amazonaws.com/handlebars-v2.0.0.js
 test -e jquery-1.11.2.min.js ||
        wget -c http://code.jquery.com/jquery-1.11.2.min.js
-test -d jquery-ui- || {
+test -d jquery-ui || {
         wget -c http://jqueryui.com/resources/download/jquery-ui-1.11.4.zip
        unzip jquery-ui-1.11.4.zip
        mv jquery-ui-1.11.4 jquery-ui
@@ -29,7 +29,9 @@ test -d bootstrap || {
        mkdir bootstrap
        cd bootstrap
        wget -c https://github.com/twbs/bootstrap/releases/download/v3.3.1/bootstrap-3.3.1-dist.zip
-       unzip bootstrap-3.3.1-dist.zip 
-       rm -f bootstrap-3.3.1-dist.zip 
+       unzip bootstrap-3.3.1-dist.zip
+       rm -f bootstrap-3.3.1-dist.zip
        cd ..
        }
+test -e naturalSort.j ||
+       wget -c https://raw.githubusercontent.com/overset/javascript-natural-sort/master/naturalSort.js
index 0ec4de3..cbe36e8 100644 (file)
@@ -12,6 +12,7 @@
 <script src="js/jquery-1.11.2.min.js"></script>
 <script src="js/jquery.timeago.js"></script>
 <script src="js/jquery-ui/jquery-ui.min.js"></script>
+<script src="js/naturalSort.js"></script>
 <link rel="stylesheet" href="js/jquery-ui/jquery-ui.min.css">
 
 <script src="js/flot/jquery.flot.min.js"></script>
@@ -211,7 +212,7 @@ html {
 <script id="tags"  type="text/x-handlebars-template">
   <h2>Tags</h2>
   <table class="table tag-table">
-   {{#each tags}}
+   {{#each_unnaturally tags}}
      {{#with (lookup ../revisions this)}}
       {{#with this.summary}}
       <tr class="tag-row">
@@ -247,7 +248,7 @@ html {
        </td>
       </tr>
      {{/with}}
-   {{/each}}
+   {{/each_unnaturally}}
   </table>
 </script>
 
index a1213e8..eec4a29 100644 (file)
@@ -216,6 +216,31 @@ Handlebars.registerHelper('iso8601', function(timestamp) {
 Handlebars.registerHelper('humanDate', function(timestamp) {
   return new Date(timestamp*1000).toString();
 });
+// inspired by http://stackoverflow.com/a/17935019/946226
+Handlebars.registerHelper('each_naturally', function(context,options){
+    var output = '';
+    if (context) {
+       console.log(context);
+       var keys = jQuery.map(context, function(v,k) {return k});
+       var sorted_keys = keys.sort(naturalSort);
+       sorted_keys.map(function (k,i) {
+           output += options.fn(context[k], {data: {key: k, index: i}});
+       });
+    }
+    return output;
+});
+Handlebars.registerHelper('each_unnaturally', function(context,options){
+    var output = '';
+    if (context) {
+       console.log(context);
+       var keys = jQuery.map(context, function(v,k) {return k});
+       var sorted_keys = keys.sort(naturalSort).reverse();
+       sorted_keys.map(function (k,i) {
+           output += options.fn(context[k], {data: {key: k, index: i}});
+       });
+    }
+    return output;
+});
 
 // We cache everything
 var jsonSeen = {};