diff --git a/web/src/components/DandisetSearchField.vue b/web/src/components/DandisetSearchField.vue index 5b3b5a6db..28087b9e2 100644 --- a/web/src/components/DandisetSearchField.vue +++ b/web/src/components/DandisetSearchField.vue @@ -108,14 +108,9 @@ function performSearch(evt: Event) { // nothing has changed, do nothing return; } - if (route.name !== 'searchDandisets') { - router.push({ - name: 'searchDandisets', - query: { - search: currentSearch.value, - }, - }); - } else { + if (route.name === 'searchDandisets' || route.name === 'myDandisets') { + // Stay on the current page so the search keeps its context. On "My Dandisets" + // this scopes the search to the user's own dandisets (including embargoed). router.replace({ ...route, query: { @@ -123,6 +118,13 @@ function performSearch(evt: Event) { search: currentSearch.value, }, } as RouteLocationRaw); + } else { + router.push({ + name: 'searchDandisets', + query: { + search: currentSearch.value, + }, + }); } } diff --git a/web/src/components/DandisetsPage.vue b/web/src/components/DandisetsPage.vue index 11c7064f9..83cb26315 100644 --- a/web/src/components/DandisetsPage.vue +++ b/web/src/components/DandisetsPage.vue @@ -142,7 +142,7 @@
{{ djangoDandisetRequest.count }} {{ djangoDandisetRequest.count === 1 ? 'result' : 'results' }} found @@ -232,6 +232,9 @@ const sortDir = ref(Number(route.query.sortDir || -1)); const page = ref(Number(route.query.page) || 1); const pageTitle = computed(() => ((props.search) ? route.query.search as string : props.title)); +// A search is active either on the dedicated search page, or whenever a search +// query is present on another listing page (e.g. "My Dandisets"). +const searchActive = computed(() => props.search || !!route.query.search); const sortField = computed(() => sortingOptions[sortOption.value].djangoField); // Django dandiset listing @@ -246,7 +249,7 @@ watchEffect(async () => { page_size: DANDISETS_PER_PAGE, ordering, user: props.user ? 'me' : null, - search: props.search ? route.query.search : null, + search: searchActive.value ? route.query.search : null, starred: props.starred ? true : null, draft: props.user ? true : showDrafts.value, empty: props.user ? true : showEmpty.value, diff --git a/web/src/views/MyDandisetsView/MyDandisetsView.vue b/web/src/views/MyDandisetsView/MyDandisetsView.vue index 10efb339c..d678fb7ce 100644 --- a/web/src/views/MyDandisetsView/MyDandisetsView.vue +++ b/web/src/views/MyDandisetsView/MyDandisetsView.vue @@ -4,7 +4,10 @@ user > @@ -12,5 +15,8 @@