From 6122bd137fc39872a3ece40442e388efe6a4f513 Mon Sep 17 00:00:00 2001 From: Aaron Mussig Date: Tue, 28 Mar 2023 09:15:46 +1000 Subject: [PATCH] feat(fastani): Add modal to set priority queue secret. --- pages/tools/fastani.vue | 79 +++++++++++++++++++++++++++++++++++++++-- 1 file changed, 77 insertions(+), 2 deletions(-) diff --git a/pages/tools/fastani.vue b/pages/tools/fastani.vue index 6e1e319..7e4f499 100644 --- a/pages/tools/fastani.vue +++ b/pages/tools/fastani.vue @@ -148,6 +148,61 @@ + + + + + + + Priority Queue + + + +
+ If you have been given the priority queue secret key, enter it below: +
+ +
+ + + + + + + Save + + +
+
+ @@ -345,7 +400,7 @@ import FragLength from "~/components/fastani/FragLength.vue"; import FastAniResults from "~/components/fastani/FastAniResults.vue"; import { mdiChartScatterPlotHexbin, - mdiCog, + mdiCog, mdiExclamation, mdiHandshake, mdiMagnify, mdiPlusThick, @@ -413,6 +468,7 @@ export default Vue.extend({ mdiHandshakeSvg: mdiHandshake, mdiPlusThickSvg: mdiPlusThick, mdiChartScatterPlotHexbinSvg: mdiChartScatterPlotHexbin, + mdiExclamationSvg: mdiExclamation, // Default form values minAlignedFragments: 50, @@ -448,6 +504,10 @@ export default Vue.extend({ addGenomesFromTaxonLoading: false, addGenomesFromTaxonSpReps: true, + // FastANI priority queue + modalFastAniPriorityQueueVisible: false, + fastAniPriorityQueueSecret: '', + fastAniPriorityQueueCookieName: 'fastAniPriorityQueueSecret', }), computed: { // Returns True if the form can be submitted @@ -480,7 +540,7 @@ export default Vue.extend({ min_frac: this.minAlignmentFraction, version: this.fastAniVersion }, - priority: (this.$route.query['secret'] as string) || 'N/A' + priority: this.fastAniPriorityQueueSecret } }, curNumPairwise(): number { @@ -587,13 +647,28 @@ export default Vue.extend({ }) } }, + savePriorityQueueModal() { + this.modalFastAniPriorityQueueVisible = false; + this.$cookies.set(this.fastAniPriorityQueueCookieName, this.fastAniPriorityQueueSecret, { + path: '/', + maxAge: 31536000, // 1 year + sameSite: true, + }); + } }, mounted() { + // Load the Job ID const jobId = this.$route.query['job-id']; if (isDefined(jobId) && jobId.length == 36) { this.jobId = jobId as string; this.getAndSetContentFromJobId(); } + + // Load the priority queue (if the cookie is present) + const fastAniPriorityQCookie = this.$cookies.get(this.fastAniPriorityQueueCookieName); + if (fastAniPriorityQCookie) { + this.fastAniPriorityQueueSecret = fastAniPriorityQCookie; + } } })