Change:Series volume numbers to use language sensitive sorting #261

This commit is contained in:
advplyr 2021-12-26 11:25:07 -06:00
parent 49fcaefd01
commit ef94a6bb29
4 changed files with 45 additions and 31 deletions

View file

@ -1,4 +1,7 @@
const { sort } = require('fast-sort')
const { sort, createNewSortInstance } = require('fast-sort')
const naturalSort = createNewSortInstance({
comparer: new Intl.Collator(undefined, { numeric: true, sensitivity: 'base' }).compare
})
module.exports = {
decode(text) {
@ -92,14 +95,18 @@ module.exports = {
}
})
return Object.values(_series).map((series) => {
series.books = sort(series.books).asc(ab => {
if (!isNaN(ab.book.volumeNumber) && ab.book.volumeNumber !== null) return Number(ab.book.volumeNumber)
return ab.book.volumeNumber
})
series.books = naturalSort(series.books).asc(ab => ab.book.volumeNumber)
return series
})
},
sortSeriesBooks(books, minified = false) {
return naturalSort(books).asc(ab => ab.book.volumeNumber).map(ab => {
if (minified) return ab.toJSONMinified()
return ab.toJSONExpanded()
})
},
getBooksWithUserAudiobook(user, books) {
return books.map(book => {
return {