diff --git a/frontend/components/AnalysisList.vue b/frontend/components/AnalysisList.vue index 66c8eae487579c67417054b30c6b1d02bbcfee1e..8ec51587c5ec51aae623ec4c9451a8385ec7b3c7 100644 --- a/frontend/components/AnalysisList.vue +++ b/frontend/components/AnalysisList.vue @@ -2,8 +2,8 @@ import { computed } from 'vue' import { usePolling } from "../composables/useFetchAnalyses"; import type { Analysis } from '~/types'; -// import { useIsGalaxyOffline } from '~/composables/isGalaxyOffline'; - +import { joinURL } from "ufo"; +const runtimeConfig = useRuntimeConfig() const sessionExpiryDate = useState('sessionExpiryDate') const toEdit: Ref<number | null> = ref(null) const newTitle: Ref<string | null> = ref(null) @@ -17,6 +17,10 @@ const sanitizedAnalyses = computed(() => { }) ?? [] : [] }) +function getResultArchiveUrl(analysisId: number) { + return joinURL(runtimeConfig.public.dfApiPrefix, `/analysis/${analysisId}/results-archive`) +} + async function deleteAnalysis(analysisId: number) { // if (csrfToken.value) { try { @@ -150,8 +154,7 @@ if (sessionError.value) { </template> <template v-if="toEdit != analysis.raw.id" #append> <div class="d-flex flex-row justify-end align-center"> - <v-btn variant="text" size="small" icon="md:download" - :href="`/api/analysis/${analysis.raw.id}/results-archive`"> + <v-btn variant="text" size="small" icon="md:download" :href="getResultArchiveUrl(analysis.raw.id)"> </v-btn> <v-btn variant="text" size="small" icon="md:edit" @click="editionMode(analysis.raw.id, analysis.raw.name)"> diff --git a/frontend/components/SubmitAnalysis.vue b/frontend/components/SubmitAnalysis.vue index 0e041e096c61dbb528f54e0ebe5db5585a2438a3..b538d0f13f7b7117c65e013d152a86a661b19003 100644 --- a/frontend/components/SubmitAnalysis.vue +++ b/frontend/components/SubmitAnalysis.vue @@ -14,11 +14,15 @@ const { meta, handleSubmit } = useForm({ const files = useField("files"); -const { data, error } = await useAPI<{ is_online: boolean }>("/analysis/is-galaxy-online") -if (data.value === null) throw createError("Error with galaxy instance") -if (!data.value.is_online) { +const { data, error } = await useAPI<{ is_online: boolean }>("/analysis/is-galaxy-online", { + onRequest({ request }) { + } +}) + +if (data.value !== null && !data.value.is_online) { throw createError("The galaxy instance is offline") } + </script> <template> <v-card flat color="transparent"> diff --git a/frontend/pages/analyses/[analysisId].vue b/frontend/pages/analyses/[analysisId].vue index f7930c9c0701acaf47dd9dc47d8fecde756f28b8..0efbce536cc27ca4a261e3ce924808a5b7d6159e 100644 --- a/frontend/pages/analyses/[analysisId].vue +++ b/frontend/pages/analyses/[analysisId].vue @@ -8,10 +8,13 @@ import { useRoute, computed } from "#imports"; import * as d3 from "d3"; import { useDisplay } from 'vuetify' import { useElementSize } from '@vueuse/core' +import { joinURL } from "ufo"; + const { width } = useDisplay() const route = useRoute(); const { selectedProtein } = useSelectedProtein() +const runtimeConfig = useRuntimeConfig() const analysisId = computed(() => { @@ -406,6 +409,9 @@ function draw() { +} +function getResultArchiveUrl(analysisId: number) { + return joinURL(runtimeConfig.public.dfApiPrefix, `/analysis/${analysisId}/results-archive`) } onMounted(() => { @@ -452,7 +458,7 @@ useHead({ <v-toolbar density="compact" class="pr-2"> <v-toolbar-title>{{ analysis.name }}</v-toolbar-title> <v-btn color="primary" prepend-icon="mdi-download" - :href="`/api/analysis/${analysis.id}/results-archive`">Download + :href="getResultArchiveUrl(analysis.id)">Download all results</v-btn> <v-chip color="primary" rounded>{{ new Date(analysis.create_time).toLocaleString() }}</v-chip> <template v-if="analysis.percentage_done !== 100 && analysis.stderr === ''" #extension> diff --git a/frontend/plugins/api.ts b/frontend/plugins/api.ts index 8d66b65a1eeaca3a277ee8be7258bb7cb85125da..57f79643d56291db16ec135786b0ffd419bc1079 100644 --- a/frontend/plugins/api.ts +++ b/frontend/plugins/api.ts @@ -5,6 +5,7 @@ export default defineNuxtPlugin(() => { const $api = $fetch.create({ baseURL: "/dfapi", async onRequest({ request, options, error }) { + console.log("dans le on request du create") const { data } = await useFetch("/api/auth", { headers }) const toValToken = toValue(csrfToken) if (toValToken !== undefined) {