From c9cb98ba27ee78df26911dc8da1931c8b69b516c Mon Sep 17 00:00:00 2001
From: David Bauer <mail@david-bauer.net>
Date: Sun, 19 Apr 2020 20:09:10 +0200
Subject: [PATCH] app: sort models and vendors case-insensitive

Closes #104
---
 app.js | 12 ++++++++----
 1 file changed, 8 insertions(+), 4 deletions(-)

diff --git a/app.js b/app.js
index 26d8c3a..0b391c3 100644
--- a/app.js
+++ b/app.js
@@ -49,6 +49,10 @@ var firmwarewizard = function() {
     $(s).style.display = 'none';
   }
 
+  function sortCaseInsensitive(a, b) {
+	return a.localeCompare(b, 'en', {'sensitivity': 'base'});
+  }
+
   // Object.values() replacement
   function ObjectValues(obj) {
     return Object.keys(obj).map(function(key) { return obj[key]; });
@@ -741,7 +745,7 @@ var firmwarewizard = function() {
         createOption('', '-- Bitte Hersteller wählen --')
       );
 
-      var vendors = Object.keys(images).sort();
+      var vendors = Object.keys(images).sort(sortCaseInsensitive);
       for (var i in vendors) {
         select.appendChild(
           createOption(atomic(vendors[i]), vendors[i], atomic(currentVendor))
@@ -767,7 +771,7 @@ var firmwarewizard = function() {
       }
 
       var prefix = atomic(currentVendor) + ' ';
-      var models = Object.keys(images[currentVendor]).sort();
+      var models = Object.keys(images[currentVendor]).sort(sortCaseInsensitive);
       for (var i in models) {
         select.appendChild(createOption(
           prefix + atomic(models[i]),
@@ -1062,10 +1066,10 @@ var firmwarewizard = function() {
       return td;
     }
 
-    var vendors = Object.keys(images).sort();
+    var vendors = Object.keys(images).sort(sortCaseInsensitive);
     for (var v in vendors) {
       var vendor = vendors[v];
-      var models = Object.keys(images[vendor]).sort();
+      var models = Object.keys(images[vendor]).sort(sortCaseInsensitive);
       for (var m in models) {
         var model = models[m];
         var revisions = sortByRevision(images[vendor][model]);
-- 
GitLab