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