diff --git a/components/dashboard/Map.vue b/components/dashboard/Map.vue index 183dec4..a80b681 100644 --- a/components/dashboard/Map.vue +++ b/components/dashboard/Map.vue @@ -20,7 +20,7 @@ The map preview could not be loaded.
- This workspace does not contain map data. + This workspace is empty.
diff --git a/components/dashboard/WorkspaceInformation.vue b/components/dashboard/WorkspaceInformation.vue index 53991d4..52f0a86 100644 --- a/components/dashboard/WorkspaceInformation.vue +++ b/components/dashboard/WorkspaceInformation.vue @@ -28,6 +28,18 @@ +
+ + No dataset area has been set for this workspace. +
+
); const parsedMetadata = computed(() => parseMetadata(props.workspace.tdeiMetadata)); const datasetVersion = computed(() => getDatasetVersion(parsedMetadata.value)); +const hasDatasetArea = computed(() => { + const metadataDetails = parsedMetadata.value?.metadata; + if (!isRecord(metadataDetails)) { + return false; + } + + const datasetDetail = metadataDetails.dataset_detail; + return isRecord(datasetDetail) && isRecord(datasetDetail.dataset_area); +}); const roleLabel = computed(() => { const labels: string[] = []; @@ -236,6 +257,15 @@ $workspace-information-meta-size: 0.875rem; font-weight: $font-weight-semibold; } +.workspace-information-area-notice { + display: flex; + align-items: center; + gap: 0.35rem; + margin-bottom: 0.8rem; + color: $gray-600; + font-size: $workspace-information-meta-size; +} + .workspace-information-grid { margin: 0; display: grid; diff --git a/test/e2e/dashboard.spec.ts b/test/e2e/dashboard.spec.ts index 4793249..6161154 100644 --- a/test/e2e/dashboard.spec.ts +++ b/test/e2e/dashboard.spec.ts @@ -1,6 +1,6 @@ import { test, expect, seedAuthenticatedSession, seedProjectGroupSelection } from './fixtures'; import { recordContract } from './contract'; -import { projectGroups, PROJECT_GROUP_ID, TEST_API_BASE } from '../mocks/fixtures'; +import { aWorkspace, projectGroups, PROJECT_GROUP_ID, TEST_API_BASE } from '../mocks/fixtures'; // Generated from the @test outline in pages/dashboard.vue. // @@ -55,6 +55,21 @@ test.describe('dashboard', () => { await expect(page.getByText('No workspaces exist in the selected project group.')).toBeVisible(); }); + test('shows empty-workspace and missing-dataset-area notices', async ({ page }) => { + await seedAuthenticatedSession(page); + await seedProjectGroupSelection(page, { id: PROJECT_GROUP_ID, name: 'Puget Sound' }); + await page.route('**/workspaces/mine', route => + route.fulfill({ json: [{ ...aWorkspace, tdeiMetadata: null }] }) + ); + await page.route('**/project-group-roles/**', route => route.fulfill({ json: projectGroups })); + await page.route('**/workspaces/1/bbox', route => route.fulfill({ status: 204 })); + + await page.goto('/dashboard'); + + await expect(page.getByText('This workspace is empty.')).toBeVisible(); + await expect(page.getByText('No dataset area has been set for this workspace.')).toBeVisible(); + }); + test('clicking a failed import status loads the latest job and shows its failure response', async ({ page }) => { const failedWorkspace = { id: 1769,