From afea5747dc5021491f03babb8fef9dd8a27b5143 Mon Sep 17 00:00:00 2001 From: vapormusic Date: Sat, 18 Dec 2021 10:42:49 +0700 Subject: [PATCH] add context buttons to the squares --- .../cider-ui/views/components/lyrics-view.ejs | 1 - .../components/mediaitem-square-large.ejs | 124 ++++++++++++++++- .../views/components/mediaitem-square-sp.ejs | 126 +++++++++++++++++- resources/cider-ui/views/svg/more.svg | 3 + 4 files changed, 243 insertions(+), 11 deletions(-) create mode 100644 resources/cider-ui/views/svg/more.svg diff --git a/resources/cider-ui/views/components/lyrics-view.ejs b/resources/cider-ui/views/components/lyrics-view.ejs index ff8a7d13..5a6d9320 100644 --- a/resources/cider-ui/views/components/lyrics-view.ejs +++ b/resources/cider-ui/views/components/lyrics-view.ejs @@ -154,7 +154,6 @@ return relativeTime >= verseTime && relativeTime <= timeEnd - timeStart }, getVerseLine(index) { - if (this.richlyrics[index] != null && this.richlyrics[index].l != null) { return this.richlyrics[index].l } diff --git a/resources/cider-ui/views/components/mediaitem-square-large.ejs b/resources/cider-ui/views/components/mediaitem-square-large.ejs index 76f235ff..dddc3836 100644 --- a/resources/cider-ui/views/components/mediaitem-square-large.ejs +++ b/resources/cider-ui/views/components/mediaitem-square-large.ejs @@ -1,8 +1,8 @@ \ No newline at end of file diff --git a/resources/cider-ui/views/components/mediaitem-square-sp.ejs b/resources/cider-ui/views/components/mediaitem-square-sp.ejs index f070e9cd..b1a79d03 100644 --- a/resources/cider-ui/views/components/mediaitem-square-sp.ejs +++ b/resources/cider-ui/views/components/mediaitem-square-sp.ejs @@ -1,8 +1,8 @@ @@ -58,6 +81,99 @@ Vue.component('mediaitem-square-sp', { template: '#mediaitem-square-sp', props: ['item'], - methods: {} + methods: { clickContext() { + var evt = document.createEvent('MouseEvent'); + var rect = this.$refs.main2.getBoundingClientRect(); + evt.initMouseEvent( + "contextmenu", + true /* bubble */, true /* cancelable */, + window, null, + 0, 0, rect.x + 100, rect.y +100, /* coordinates */ + false, false, false, false, /* modifier keys */ + 0 /*left*/, null + ); + this.$refs.main.dispatchEvent(evt); + } + ,contextMenu(event) { + if (!event){event = this.$refs.main} else {console.log(event)} + let self = this + let useMenu = "normal" + if (app.selectedMediaItems.length <= 1) { + app.selectedMediaItems = [] + app.select_selectMediaItem(this.item.attributes.playParams.id ?? this.item.id, this.item.attributes.playParams.kind ?? this.item.type, this.index, this.guid) + } else { + useMenu = "multiple" + } + let menus = { + multiple: { + items: [ + { + name: `Play ${app.selectedMediaItems.length} tracks next`, + action: () => { + let itemsToPlay = {} + app.selectedMediaItems.forEach(item => { + if (!itemsToPlay[item.kind]) { + itemsToPlay[item.kind] = [] + } + itemsToPlay[item.kind].push(item.id) + }) + // loop through itemsToPlay + for (let kind in itemsToPlay) { + let ids = itemsToPlay[kind] + if (ids.length > 0) { + app.mk.playNext({[kind + "s"]: itemsToPlay[kind]}) + } + } + console.log(itemsToPlay) + app.selectedMediaItems = [] + } + }, + { + name: `Play ${app.selectedMediaItems.length} tracks later`, + action: () => { + let itemsToPlay = {} + app.selectedMediaItems.forEach(item => { + if (!itemsToPlay[item.kind]) { + itemsToPlay[item.kind] = [] + } + itemsToPlay[item.kind].push(item.id) + }) + // loop through itemsToPlay + for (let kind in itemsToPlay) { + let ids = itemsToPlay[kind] + if (ids.length > 0) { + app.mk.playLater({[kind + "s"]: itemsToPlay[kind]}) + } + } + app.selectedMediaItems = [] + } + }, + ] + }, + normal: { + items: [ + + { + "name": "Play Next", + "action": function () { + app.mk.playNext({[self.item.attributes.playParams.kind ?? self.item.type]: self.item.attributes.playParams.id ?? self.item.id}) + app.mk.queue._reindex() + app.selectedMediaItems = [] + } + }, + { + "name": "Play Later", + "action": function () { + app.mk.playLater({[self.item.attributes.playParams.kind ?? self.item.type]: self.item.attributes.playParams.id ?? self.item.id}) + app.mk.queue._reindex() + app.selectedMediaItems = [] + } + }, + + ] + } + } + CiderContextMenu.Create(event, menus[useMenu]) + },} }); \ No newline at end of file diff --git a/resources/cider-ui/views/svg/more.svg b/resources/cider-ui/views/svg/more.svg new file mode 100644 index 00000000..8abcf599 --- /dev/null +++ b/resources/cider-ui/views/svg/more.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file