Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
22 changes: 22 additions & 0 deletions client/dive-common/components/Review/ReviewPage.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -178,6 +178,28 @@ async function settlePage() {
await nextTick();
}

it('opens straight on Results while a library selection loads', async () => {
let release: () => void = () => {};
mocks.loadDetections.mockReturnValueOnce(new Promise((resolve) => {
release = () => resolve({
tracks: [], groups: [], sets: [], version: 2,
});
}));
const wrapper = mountPage({ initialDatasetIds: ['a'] });
const page = wrapper.vm as unknown as PageState & { opening: boolean };
expect(page.view).toBe('results');
expect(page.opening).toBe(true);
await settlePage();
expect(page.view).toBe('results');
expect(page.opening || page.review.loading.value).toBe(true);
release();
await settlePage();
expect(page.opening).toBe(false);
expect(page.review.loading.value).toBe(false);
expect(page.view).toBe('results');
wrapper.destroy();
});

it('opens the current sequence alone in Results on the first Review visit', async () => {
const wrapper = mountPage({ fallbackDatasetId: 'current' });
const page = wrapper.vm as unknown as PageState;
Expand Down
15 changes: 9 additions & 6 deletions client/dive-common/components/Review/ReviewPage.vue
Original file line number Diff line number Diff line change
Expand Up @@ -81,10 +81,13 @@ export default defineComponent({
provideReview(review);
const { prompt } = usePrompt();

// Empty first visit opens Datasets; coming back with loaded data opens Results.
// Only an empty first visit opens Datasets; a library selection or
// loaded data opens Results.
const hasReady = review.datasets.value.some((d) => d.status === 'ready');
const view = ref<ReviewView>(hasReady ? 'results' : 'datasets');
const view = ref<ReviewView>(hasReady || initialIds.length > 0 ? 'results' : 'datasets');
const resuming = ref(!!resumed);
// Covers the gap before the initial selection starts loading.
const opening = ref(!hasReady && initialIds.length > 0);
const pageTypeInput = ref('');
const showSettings = ref(false);
const typeField = ref<{ isMenuActive: boolean; activateMenu(): void; blur(): void } | null>(null);
Expand Down Expand Up @@ -366,10 +369,8 @@ export default defineComponent({

async function applyInitial(ids: string[]) {
if (ids.length === 0) return;
view.value = 'results';
await review.addDatasets(ids);
if (review.datasets.value.some((d) => d.status === 'ready')) {
view.value = 'results';
}
}

onMounted(async () => {
Expand All @@ -388,6 +389,7 @@ export default defineComponent({
if (!resumed || datasetKey !== sessionKey(initialIds) || review.datasets.value.length === 0) {
await applyInitial(initialIds);
}
opening.value = false;
});
watch(() => props.initialDatasetIds, (ids) => { applyInitial(ids); });
onBeforeUnmount(() => {
Expand All @@ -408,6 +410,7 @@ export default defineComponent({
return {
review,
view,
opening,
typeField,
toggleTypeMenu,
grid,
Expand Down Expand Up @@ -745,7 +748,7 @@ export default defineComponent({
>
mdi-database-outline
</v-icon>
<div v-if="review.loading.value">
<div v-if="opening || review.loading.value">
Loading annotations…
</div>
<template v-else>
Expand Down
16 changes: 8 additions & 8 deletions client/platform/web-girder/views/Home.vue
Original file line number Diff line number Diff line change
Expand Up @@ -266,27 +266,27 @@ export default defineComponent({
:selected-dataset-ids="locationInputs"
/>
<v-btn
v-if="pipelinesEnabled && selectedViameFolderIds.length > 0"
v-if="selectedViameFolderIds.length > 0"
v-bind="buttonOptions"
@click="scoreSelection"
@click="reviewSelection"
>
<v-icon>
mdi-chart-box-outline
mdi-view-grid-outline
</v-icon>
<span class="pl-1">
Score
Review
</span>
</v-btn>
<v-btn
v-if="selectedViameFolderIds.length > 0"
v-if="pipelinesEnabled && selectedViameFolderIds.length > 0"
v-bind="buttonOptions"
@click="reviewSelection"
@click="scoreSelection"
>
<v-icon>
mdi-view-grid-outline
mdi-chart-box-outline
</v-icon>
<span class="pl-1">
Review
Score
</span>
</v-btn>
<export
Expand Down
Loading