mirror of
https://github.com/owntone/owntone-server.git
synced 2025-04-23 20:15:41 -04:00
[web] Fix sorting that is not kept in some situations
This commit is contained in:
parent
006093c643
commit
9513097dd0
@ -120,29 +120,26 @@ export class GroupedList {
|
|||||||
}
|
}
|
||||||
|
|
||||||
group(options, filterFns = []) {
|
group(options, filterFns = []) {
|
||||||
const itemsFiltered = filterFns
|
const itemsFiltered = this.items.filter((item) =>
|
||||||
? this.items.filter((item) => filterFns.every((fn) => fn(item)))
|
filterFns.every((fn) => fn(item))
|
||||||
: this.items
|
)
|
||||||
this.count = itemsFiltered.length
|
this.count = itemsFiltered.length
|
||||||
|
|
||||||
// Sort item list
|
// Sort item list
|
||||||
const itemsSorted = options.compareFn
|
const itemsSorted = options.compareFn
|
||||||
? [...itemsFiltered].sort(options.compareFn)
|
? [...itemsFiltered].sort(options.compareFn)
|
||||||
: itemsFiltered
|
: itemsFiltered
|
||||||
|
|
||||||
// Create index list
|
|
||||||
this.indices = [...new Set(itemsSorted.map(options.groupKeyFn))]
|
|
||||||
|
|
||||||
// Group item list
|
// Group item list
|
||||||
this.itemsGrouped = itemsSorted.reduce((r, item) => {
|
this.itemsGrouped = itemsSorted.reduce((map, item) => {
|
||||||
const groupKey = options.groupKeyFn(item)
|
const groupKey = options.groupKeyFn(item)
|
||||||
r[groupKey] = [...(r[groupKey] || []), item]
|
map.set(groupKey, [...(map.get(groupKey) || []), item])
|
||||||
return r
|
return map
|
||||||
}, {})
|
}, new Map())
|
||||||
|
// Create index list
|
||||||
|
this.indices = Array.from(this.itemsGrouped.keys())
|
||||||
}
|
}
|
||||||
|
|
||||||
*generate() {
|
*generate() {
|
||||||
for (const key in this.itemsGrouped) {
|
for (const [key, items] of this.itemsGrouped.entries()) {
|
||||||
if (key !== GROUP_KEY_NONE) {
|
if (key !== GROUP_KEY_NONE) {
|
||||||
yield {
|
yield {
|
||||||
groupKey: key,
|
groupKey: key,
|
||||||
@ -151,7 +148,7 @@ export class GroupedList {
|
|||||||
item: {}
|
item: {}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
for (const item of this.itemsGrouped[key]) {
|
for (const item of items) {
|
||||||
yield {
|
yield {
|
||||||
groupKey: key,
|
groupKey: key,
|
||||||
itemId: item.id,
|
itemId: item.id,
|
||||||
|
Loading…
x
Reference in New Issue
Block a user