added shift multi select to list item

This commit is contained in:
booploops 2021-12-16 02:50:30 -08:00
parent 3ad4665ee2
commit 92e7035ff8
2 changed files with 34 additions and 13 deletions

View file

@ -419,7 +419,7 @@ const app = new Vue({
} }
}, },
select_removeMediaItem(id) { select_removeMediaItem(id) {
this.selectedMediaItems.filter(item => item.id == id).forEach(item => { this.selectedMediaItems.filter(item => item.guid == id).forEach(item => {
this.selectedMediaItems.splice(this.selectedMediaItems.indexOf(item), 1) this.selectedMediaItems.splice(this.selectedMediaItems.indexOf(item), 1)
}) })
}, },

View file

@ -85,20 +85,41 @@
methods: { methods: {
select(e) { select(e) {
if (e.shiftKey) { if (e.shiftKey) {
if(this.index != -1) { if (this.index != -1) {
let allMediaItems = document.querySelectorAll(".cd-mediaitem-list-item[data-index]") let allMediaItems = document.querySelectorAll(".cd-mediaitem-list-item[data-index]")
// select everything between the last selected item from app.selectedMediaItems and this one let startIndex = Math.min(...app.selectedMediaItems.map(item => item.index))
let endIndex = Math.max(...app.selectedMediaItems.map(item => item.index))
for (let i = start; i <= end; i++) { if (this.index < startIndex) {
let mediaItem = allMediaItems[i]; for (let i = this.index; i <= endIndex; i++) {
app.select_selectMediaItem(mediaItem.getAttribute("data-id"), mediaItem.getAttribute("data-type")); let item = allMediaItems[i]
if (item) {
app.select_selectMediaItem(item.getAttribute("data-id"),
item.getAttribute("data-type"),
item.getAttribute("data-index"),
item.getAttribute("data-guid"))
}
}
} else if (this.index > endIndex) {
for (let i = startIndex; i <= this.index; i++) {
let item = allMediaItems[i]
if (item) {
app.select_selectMediaItem(item.getAttribute("data-id"),
item.getAttribute("data-type"),
item.getAttribute("data-index"),
item.getAttribute("data-guid"))
} }
} }
if (app.select_hasMediaItem(this.guid)) {
app.select_removeMediaItem(this.guid)
} else { } else {
app.select_selectMediaItem(this.item.attributes.playParams.id ?? this.item.id, this.item.attributes.playParams.kind ?? this.item.type, this.index, this.guid) for (let i = startIndex; i <= endIndex; i++) {
let item = allMediaItems[i]
if (item) {
app.select_selectMediaItem(item.getAttribute("data-id"),
item.getAttribute("data-type"),
item.getAttribute("data-index"),
item.getAttribute("data-guid"))
}
}
}
} }
} else if (e.ctrlKey) { } else if (e.ctrlKey) {
if (app.select_hasMediaItem(this.guid)) { if (app.select_hasMediaItem(this.guid)) {