From 5b63bedc0d4facb5e53daaadb3490172b4e0fbcc Mon Sep 17 00:00:00 2001 From: David Dreher Date: Sat, 2 Mar 2019 14:21:12 +0100 Subject: [PATCH] fix issue #2894: sort alphabetical will now parse float values starting at all titles and compare these. --- browser/main/NoteList/index.js | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/browser/main/NoteList/index.js b/browser/main/NoteList/index.js index cfcfcc99..78b7a8cf 100644 --- a/browser/main/NoteList/index.js +++ b/browser/main/NoteList/index.js @@ -26,11 +26,30 @@ const { remote } = require('electron') const { dialog } = remote const WP_POST_PATH = '/wp/v2/posts' +const matchStartingTitleNumber = new RegExp('^([0-9]*\.?[0-9]+).*$') + function sortByCreatedAt (a, b) { return new Date(b.createdAt) - new Date(a.createdAt) } function sortByAlphabetical (a, b) { + const matchA = matchStartingTitleNumber.exec(a.title) + const matchB = matchStartingTitleNumber.exec(b.title) + + if (matchA && matchA.length === 2 && matchB && matchB.length === 2) { + // Both note titles are starting with a float. We will compare it now. + const floatA = parseFloat(matchA[1]) + const floatB = parseFloat(matchB[1]) + + if (floatA < floatB) { + return -1 + } else if (floatA > floatB) { + return 1 + } + + // The float values are equal. We will compare the full title. + } + return a.title.localeCompare(b.title) }