diff --git a/apps/app-frontend/src/components/GridDisplay.vue b/apps/app-frontend/src/components/GridDisplay.vue index 6e5dac5d8..2ced29564 100644 --- a/apps/app-frontend/src/components/GridDisplay.vue +++ b/apps/app-frontend/src/components/GridDisplay.vue @@ -136,7 +136,7 @@ const filteredResults = computed(() => { if (sortBy.value === 'Game version') { instances.sort((a, b) => { - return a.game_version.localeCompare(b.game_version) + return a.game_version.localeCompare(b.game_version, undefined, { numeric: true }) }) } @@ -213,6 +213,17 @@ const filteredResults = computed(() => { instanceMap.set(entry[0], entry[1]) }) } + // default sorting would do 1.20.4 < 1.8.9 because 2 < 8 + // localeCompare with numeric=true puts 1.8.9 < 1.20.4 because 8 < 20 + if (group.value === 'Game version') { + const sortedEntries = [...instanceMap.entries()].sort((a, b) => { + return a[0].localeCompare(b[0], undefined, { numeric: true }) + }) + instanceMap.clear() + sortedEntries.forEach((entry) => { + instanceMap.set(entry[0], entry[1]) + }) + } return instanceMap })