diff --git a/src/components/panels/JobqueuePanel.vue b/src/components/panels/JobqueuePanel.vue index 8ed59ada..015a5ade 100644 --- a/src/components/panels/JobqueuePanel.vue +++ b/src/components/panels/JobqueuePanel.vue @@ -1,6 +1,6 @@ @@ -93,7 +102,7 @@ import Component from 'vue-class-component' import { Mixins } from 'vue-property-decorator' import BaseMixin from '@/components/mixins/base' import { ServerJobQueueStateJob } from '@/store/server/jobQueue/types' -import { mdiFile, mdiPlay, mdiFileMultiple } from '@mdi/js' +import { mdiFile, mdiPlay, mdiFileMultiple, mdiPlaylistRemove } from '@mdi/js' @Component({ components: {}, }) @@ -101,6 +110,20 @@ export default class StatusPanelJobqueue extends Mixins(BaseMixin) { mdiFile = mdiFile mdiPlay = mdiPlay mdiFileMultiple = mdiFileMultiple + mdiPlaylistRemove = mdiPlaylistRemove + + private contentTdWidth = 100 + private contextMenu = { + shown: false, + touchTimer: undefined, + x: 0, + y: 0, + item: {}, + } + + declare $refs: { + filesJobqueue: any + } get jobs() { return this.$store.getters['server/jobQueue/getJobs'] ?? [] @@ -141,6 +164,10 @@ export default class StatusPanelJobqueue extends Mixins(BaseMixin) { return output } + get styleContentTdWidth() { + return `width: ${this.contentTdWidth}px;` + } + getSmallThumbnail(item: ServerJobQueueStateJob) { return this.$store.getters['server/jobQueue/getSmallThumbnail'](item) } @@ -206,8 +233,38 @@ export default class StatusPanelJobqueue extends Mixins(BaseMixin) { return '--' } + showContextMenu(e: any, item: ServerJobQueueStateJob) { + if (!this.contextMenu.shown) { + e?.preventDefault() + this.contextMenu.shown = true + this.contextMenu.x = e?.clientX || e?.pageX || window.screenX / 2 + this.contextMenu.y = e?.clientY || e?.pageY || window.screenY / 2 + this.contextMenu.item = item + this.$nextTick(() => { + this.contextMenu.shown = true + }) + } + } + startJobqueue() { this.$store.dispatch('server/jobQueue/start') } + + removeFromJobqueue(item: ServerJobQueueStateJob) { + this.$store.dispatch('server/jobQueue/deleteFromQueue', [item.job_id]) + } + + mounted() { + window.addEventListener('resize', this.eventListenerResize) + this.eventListenerResize() + } + + destroyed() { + window.removeEventListener('resize', this.eventListenerResize) + } + + eventListenerResize() { + this.contentTdWidth = this.$refs.filesJobqueue?.$el?.clientWidth - 48 - 48 - 32 + } } diff --git a/src/locales/de.json b/src/locales/de.json index eba662c1..43bd772a 100644 --- a/src/locales/de.json +++ b/src/locales/de.json @@ -335,11 +335,11 @@ }, "JobQueue": { "AllJobs": "Alle Aufträge", - "Delete": "Löschen", "Empty": "Leer", "JobQueue": "Auftragswarteschlange", "Jobs": "Aufträge", "Pause": "Pause", + "RemoveFromQueue": "Von Auftragswarteschlange entfernen", "Start": "Start" }, "Machine": { diff --git a/src/locales/en.json b/src/locales/en.json index 3e6267e3..76077fc6 100644 --- a/src/locales/en.json +++ b/src/locales/en.json @@ -350,11 +350,11 @@ }, "JobQueue": { "AllJobs": "All Jobs", - "Delete": "Delete", "Empty": "Empty", "JobQueue": "Job Queue", "Jobs": "Jobs", "Pause": "Pause", + "RemoveFromQueue": "Remove from Queue", "Start": "Start" }, "Machine": {