From ef8fdb8234c211aa9e7dde2e9c520aad7abf45e0 Mon Sep 17 00:00:00 2001
From: pkupczyk <piotr.kupczyk@id.ethz.ch>
Date: Thu, 13 Aug 2020 19:44:54 +0200
Subject: [PATCH] NG_UI : vocabulary form - natural and case-insensitive
 sorting of terms (properly sorts alphanumerical values, e.g. 'A2' will be
 before 'a10')

---
 .../src/js/components/common/grid/GridController.js       | 8 ++++++--
 1 file changed, 6 insertions(+), 2 deletions(-)

diff --git a/openbis_ng_ui/src/js/components/common/grid/GridController.js b/openbis_ng_ui/src/js/components/common/grid/GridController.js
index d50663e8ada..5acf40f0ded 100644
--- a/openbis_ng_ui/src/js/components/common/grid/GridController.js
+++ b/openbis_ng_ui/src/js/components/common/grid/GridController.js
@@ -338,13 +338,17 @@ export default class GridController {
 
   _sort(rows, columns, sort, sortDirection) {
     if (sort) {
-      let column = _.find(columns, ['field', sort])
+      const column = _.find(columns, ['field', sort])
       if (column) {
+        const collator = new Intl.Collator(undefined, {
+          numeric: true,
+          sensitivity: 'base'
+        })
         return rows.sort((t1, t2) => {
           let sign = sortDirection === 'asc' ? 1 : -1
           let v1 = this._getValue(t1, column.field)
           let v2 = this._getValue(t2, column.field)
-          return sign * v1.localeCompare(v2)
+          return sign * collator.compare(v1, v2)
         })
       }
     }
-- 
GitLab