mirror of
https://github.com/advplyr/audiobookshelf.git
synced 2025-05-18 01:15:31 +02:00
Fix:Multi-select library items using shift key #1236
This commit is contained in:
parent
8425fac543
commit
6baa0fa047
@ -230,7 +230,7 @@ export default {
|
||||
},
|
||||
selectEntity(entity, shiftKey) {
|
||||
if (this.entityName === 'books' || this.entityName === 'series-books') {
|
||||
var indexOf = this.entities.findIndex((ent) => ent && ent.id === entity.id)
|
||||
const indexOf = this.entities.findIndex((ent) => ent && ent.id === entity.id)
|
||||
const lastLastItemIndexSelected = this.lastItemIndexSelected
|
||||
if (!this.selectedMediaItems.some((i) => i.id === entity.id)) {
|
||||
this.lastItemIndexSelected = indexOf
|
||||
@ -239,14 +239,14 @@ export default {
|
||||
}
|
||||
|
||||
if (shiftKey && lastLastItemIndexSelected >= 0) {
|
||||
var loopStart = indexOf
|
||||
var loopEnd = lastLastItemIndexSelected
|
||||
let loopStart = indexOf
|
||||
let loopEnd = lastLastItemIndexSelected
|
||||
if (indexOf > lastLastItemIndexSelected) {
|
||||
loopStart = lastLastItemIndexSelected
|
||||
loopEnd = indexOf
|
||||
}
|
||||
|
||||
var isSelecting = false
|
||||
let isSelecting = false
|
||||
// If any items in this range is not selected then select all otherwise unselect all
|
||||
for (let i = loopStart; i <= loopEnd; i++) {
|
||||
const thisEntity = this.entities[i]
|
||||
@ -275,6 +275,7 @@ export default {
|
||||
mediaType: thisEntity.mediaType,
|
||||
hasTracks: thisEntity.mediaType === 'podcast' || thisEntity.media.numTracks || (thisEntity.media.tracks && thisEntity.media.tracks.length)
|
||||
}
|
||||
console.log('Setting media item selected', mediaItem, 'Num Selected=', this.selectedMediaItems.length)
|
||||
this.$store.commit('globals/setMediaItemSelected', { item: mediaItem, selected: isSelecting })
|
||||
} else {
|
||||
console.error('Invalid entity index', i)
|
||||
|
@ -140,26 +140,22 @@ export const mutations = {
|
||||
state.showBatchQuickMatchModal = val
|
||||
},
|
||||
resetSelectedMediaItems(state) {
|
||||
// Vue.set(state, 'selectedMediaItems', [])
|
||||
state.selectedMediaItems = []
|
||||
},
|
||||
toggleMediaItemSelected(state, item) {
|
||||
if (state.selectedMediaItems.some(i => i.id === item.id)) {
|
||||
state.selectedMediaItems = state.selectedMediaItems.filter(i => i.id !== item.id)
|
||||
} else {
|
||||
// const newSel = state.selectedMediaItems.concat([{...item}])
|
||||
// Vue.set(state, 'selectedMediaItems', newSel)
|
||||
state.selectedMediaItems.push(item)
|
||||
}
|
||||
},
|
||||
setMediaItemSelected(state, { item, selected }) {
|
||||
const index = state.selectedMediaItems.findIndex(i => i.id === item.id)
|
||||
if (index && !selected) {
|
||||
const isAlreadySelected = state.selectedMediaItems.some(i => i.id === item.id)
|
||||
if (isAlreadySelected && !selected) {
|
||||
state.selectedMediaItems = state.selectedMediaItems.filter(i => i.id !== item.id)
|
||||
} else if (selected && !index) {
|
||||
state.selectedMediaItems.splice(index, 1, item)
|
||||
// var newSel = state.selectedMediaItems.concat([libraryItemId])
|
||||
// Vue.set(state, 'selectedMediaItems', newSel)
|
||||
|
||||
} else if (selected && !isAlreadySelected) {
|
||||
state.selectedMediaItems.push(item)
|
||||
}
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue
Block a user