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 @@
+
+
);
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,