diff --git a/frontend/packages/data-portal/app/components/BrowseData/DepositionTable.tsx b/frontend/packages/data-portal/app/components/BrowseData/DepositionTable.tsx
index 3f98a9c68..ee914bc73 100644
--- a/frontend/packages/data-portal/app/components/BrowseData/DepositionTable.tsx
+++ b/frontend/packages/data-portal/app/components/BrowseData/DepositionTable.tsx
@@ -278,12 +278,12 @@ export function DepositionTable() {
{Object.entries(shapeTypeToI18nKey)
.filter(([key]) => shapeTypes.includes(key))
- .map((entry) => (
+ .map(([k, v]) => (
-
- {t(entry[1])}
+ {t(v)}
))}
diff --git a/frontend/packages/data-portal/app/components/Deposition/MethodLinks/MethodLinksMetadataTable.tsx b/frontend/packages/data-portal/app/components/Deposition/MethodLinks/MethodLinksMetadataTable.tsx
index e2375a634..b79a61471 100644
--- a/frontend/packages/data-portal/app/components/Deposition/MethodLinks/MethodLinksMetadataTable.tsx
+++ b/frontend/packages/data-portal/app/components/Deposition/MethodLinks/MethodLinksMetadataTable.tsx
@@ -137,9 +137,13 @@ export function MethodLinksMetadataTable({
.map((methodData, i) => (
['t'],
): BaseFilterOption[] {
- return objectShapeTypes.map((value) => ({ value }))
+ return objectShapeTypes.map((value) => ({
+ label: t(shapeTypeToI18nKey[value as ObjectShapeType]),
+ value,
+ }))
}
export function AnnotatedObjectShapeTypeFilter({
@@ -26,13 +32,13 @@ export function AnnotatedObjectShapeTypeFilter({
} = useFilter()
const objectShapeTypeOptions = useMemo(
- () => getObjectShapeTypeOptions(allObjectShapeTypes),
- [allObjectShapeTypes],
+ () => getObjectShapeTypeOptions(allObjectShapeTypes, t),
+ [allObjectShapeTypes, t],
)
const objectShapeTypeValue = useMemo(
- () => getObjectShapeTypeOptions(objectShapeTypes),
- [objectShapeTypes],
+ () => getObjectShapeTypeOptions(objectShapeTypes, t),
+ [objectShapeTypes, t],
)
return (
diff --git a/frontend/packages/data-portal/app/components/Run/AnnotationObjectTable/AnnotationObjectTable.tsx b/frontend/packages/data-portal/app/components/Run/AnnotationObjectTable/AnnotationObjectTable.tsx
index 2b7ba62ec..8c52cd5fd 100644
--- a/frontend/packages/data-portal/app/components/Run/AnnotationObjectTable/AnnotationObjectTable.tsx
+++ b/frontend/packages/data-portal/app/components/Run/AnnotationObjectTable/AnnotationObjectTable.tsx
@@ -1,6 +1,8 @@
import { AccordionMetadataTable } from 'app/components/AccordionMetadataTable'
+import { shapeTypeToI18nKey } from 'app/constants/objectShapeTypes'
import { useI18n } from 'app/hooks/useI18n'
import { useAnnotation } from 'app/state/annotation'
+import { ObjectShapeType } from 'app/types/shapeTypes'
import { getTableData } from 'app/utils/table'
import { ObjectIdLink } from './components/ObjectIdLink'
@@ -31,7 +33,7 @@ export function AnnotationObjectTable() {
},
{
label: t('objectShapeType'),
- values: [annotation.shape_type],
+ values: [t(shapeTypeToI18nKey[annotation.shape_type as ObjectShapeType])],
},
{
label: t('objectState'),
diff --git a/frontend/packages/data-portal/app/components/Run/AnnotationTable.tsx b/frontend/packages/data-portal/app/components/Run/AnnotationTable.tsx
index b70d02013..9ef10c5f1 100644
--- a/frontend/packages/data-portal/app/components/Run/AnnotationTable.tsx
+++ b/frontend/packages/data-portal/app/components/Run/AnnotationTable.tsx
@@ -22,6 +22,7 @@ import {
methodTooltipLabels,
MethodType,
} from 'app/constants/methodTypes'
+import { shapeTypeToI18nKey } from 'app/constants/objectShapeTypes'
import { MAX_PER_PAGE } from 'app/constants/pagination'
import { QueryParams } from 'app/constants/query'
import { AnnotationTableWidths } from 'app/constants/table'
@@ -36,6 +37,7 @@ import {
import { useRunById } from 'app/hooks/useRunById'
import { AnnotationRow, useAnnotation } from 'app/state/annotation'
import { I18nKeys } from 'app/types/i18n'
+import { ObjectShapeType } from 'app/types/shapeTypes'
import { DASHED_BORDERED_CLASSES } from 'app/utils/classNames'
import { cns, cnsNoMerge } from 'app/utils/cns'
@@ -248,7 +250,7 @@ export function AnnotationTable() {
cell: ({ getValue }) => (
- {getValue()}
+ {t(shapeTypeToI18nKey[getValue() as ObjectShapeType])}
),
}),
diff --git a/frontend/packages/data-portal/app/constants/objectShapeTypes.ts b/frontend/packages/data-portal/app/constants/objectShapeTypes.ts
index e8d25120e..a54601f20 100644
--- a/frontend/packages/data-portal/app/constants/objectShapeTypes.ts
+++ b/frontend/packages/data-portal/app/constants/objectShapeTypes.ts
@@ -3,16 +3,16 @@ import { ObjectShapeType } from 'app/types/shapeTypes'
type ShapeTypeToI18nKeyMap = { [key in ObjectShapeType]: I18nKeys }
-export const shapeTypeToI18nKey: ShapeTypeToI18nKeyMap = {
+export const shapeTypeToI18nKey = {
InstanceSegmentation: 'instanceSegmentation',
OrientedPoint: 'orientedPoint',
Point: 'point',
SegmentationMask: 'segmentationMask',
-}
+} as const satisfies ShapeTypeToI18nKeyMap
-export const shapeTypeToI18nKeyPlural: ShapeTypeToI18nKeyMap = {
+export const shapeTypeToI18nKeyPlural = {
InstanceSegmentation: 'instanceSegmentations',
OrientedPoint: 'orientedPoints',
Point: 'points',
SegmentationMask: 'segmentationMasks',
-}
+} as const satisfies ShapeTypeToI18nKeyMap
diff --git a/frontend/packages/data-portal/app/graphql/getDatasetsFilterData.server.ts b/frontend/packages/data-portal/app/graphql/getDatasetsFilterData.server.ts
index 7a62f36fb..c66b74c44 100644
--- a/frontend/packages/data-portal/app/graphql/getDatasetsFilterData.server.ts
+++ b/frontend/packages/data-portal/app/graphql/getDatasetsFilterData.server.ts
@@ -1,33 +1,36 @@
import type { ApolloClient, NormalizedCacheObject } from '@apollo/client'
import { gql } from 'app/__generated__'
-import { Datasets_Bool_Exp } from 'app/__generated__/graphql'
const GET_DATASETS_FILTER_DATA_QUERY = gql(`
query GetDatasetsFilterData(
- $filter: datasets_bool_exp,
+ $datasets_filter: datasets_bool_exp,
+ $tiltseries_filter: tiltseries_bool_exp,
+ $tomograms_filter: tomograms_bool_exp,
+ $annotations_filter: annotations_bool_exp,
+ $annotation_files_filter: annotation_files_bool_exp,
) {
- organism_names: datasets(where: $filter, distinct_on: organism_name) {
+ organism_names: datasets(where: $datasets_filter, distinct_on: organism_name) {
organism_name
}
- camera_manufacturers: tiltseries(distinct_on: camera_manufacturer) {
+ camera_manufacturers: tiltseries(where: $tiltseries_filter, distinct_on: camera_manufacturer) {
camera_manufacturer
}
- reconstruction_methods: tomograms(distinct_on: reconstruction_method) {
+ reconstruction_methods: tomograms(where: $tomograms_filter, distinct_on: reconstruction_method) {
reconstruction_method
}
- reconstruction_softwares: tomograms(distinct_on: reconstruction_software) {
+ reconstruction_softwares: tomograms(where: $tomograms_filter, distinct_on: reconstruction_software) {
reconstruction_software
}
- object_names: annotations(distinct_on: object_name) {
+ object_names: annotations(where: $annotations_filter, distinct_on: object_name) {
object_name
}
- object_shape_types: annotation_files(distinct_on: shape_type) {
+ object_shape_types: annotation_files(where: $annotation_files_filter, distinct_on: shape_type) {
shape_type
}
}
@@ -35,17 +38,35 @@ const GET_DATASETS_FILTER_DATA_QUERY = gql(`
export async function getDatasetsFilterData({
client,
- filter = {},
+ depositionId,
}: {
client: ApolloClient
- filter: Datasets_Bool_Exp
+ depositionId?: number
}) {
const start = performance.now()
+ const filter = {
+ deposition_id: {
+ _eq: depositionId,
+ },
+ }
+
const results = await client.query({
query: GET_DATASETS_FILTER_DATA_QUERY,
variables: {
- filter,
+ datasets_filter: depositionId
+ ? {
+ runs: {
+ tomogram_voxel_spacings: {
+ annotations: filter,
+ },
+ },
+ }
+ : {},
+ tiltseries_filter: depositionId ? filter : {},
+ tomograms_filter: depositionId ? filter : {},
+ annotations_filter: depositionId ? filter : {},
+ annotation_files_filter: depositionId ? { annotation: filter } : {},
},
})
diff --git a/frontend/packages/data-portal/app/graphql/getDepositionById.server.ts b/frontend/packages/data-portal/app/graphql/getDepositionById.server.ts
index c25fb3af3..828ce854c 100644
--- a/frontend/packages/data-portal/app/graphql/getDepositionById.server.ts
+++ b/frontend/packages/data-portal/app/graphql/getDepositionById.server.ts
@@ -60,7 +60,6 @@ const GET_DEPOSITION_BY_ID = gql(`
annotation_software
method_links
method_type
-
}
annotations_aggregate {
diff --git a/frontend/packages/data-portal/app/routes/browse-data.datasets.tsx b/frontend/packages/data-portal/app/routes/browse-data.datasets.tsx
index fc7bef27d..4804b8b18 100644
--- a/frontend/packages/data-portal/app/routes/browse-data.datasets.tsx
+++ b/frontend/packages/data-portal/app/routes/browse-data.datasets.tsx
@@ -41,7 +41,7 @@ export async function loader({ request }: LoaderFunctionArgs) {
client: apolloClient,
params: url.searchParams,
}),
- getDatasetsFilterData({ client: apolloClient, filter: {} }),
+ getDatasetsFilterData({ client: apolloClient }),
])
return json({
diff --git a/frontend/packages/data-portal/app/routes/browse-data.depositions.tsx b/frontend/packages/data-portal/app/routes/browse-data.depositions.tsx
index 5d434bd52..c91699a3d 100644
--- a/frontend/packages/data-portal/app/routes/browse-data.depositions.tsx
+++ b/frontend/packages/data-portal/app/routes/browse-data.depositions.tsx
@@ -50,7 +50,6 @@ export async function loader({ request }: LoaderFunctionArgs) {
}
export default function BrowseDepositionsPage() {
- // TODO: hook up to backend when available
const { depositionCount, filteredDepositionCount } = useDepositions()
const { reset } = useFilter()
const { t } = useI18n()
diff --git a/frontend/packages/data-portal/app/routes/depositions.$id.tsx b/frontend/packages/data-portal/app/routes/depositions.$id.tsx
index 860ea32f7..2ebebfcdf 100644
--- a/frontend/packages/data-portal/app/routes/depositions.$id.tsx
+++ b/frontend/packages/data-portal/app/routes/depositions.$id.tsx
@@ -69,17 +69,7 @@ export async function loader({ params, request }: LoaderFunctionArgs) {
}),
getDatasetsFilterData({
client: apolloClient,
- filter: {
- runs: {
- tomogram_voxel_spacings: {
- annotations: {
- deposition_id: {
- _eq: id,
- },
- },
- },
- },
- },
+ depositionId: id,
}),
])
diff --git a/frontend/packages/data-portal/app/utils/featureFlags.ts b/frontend/packages/data-portal/app/utils/featureFlags.ts
index 407b39375..4158bde30 100644
--- a/frontend/packages/data-portal/app/utils/featureFlags.ts
+++ b/frontend/packages/data-portal/app/utils/featureFlags.ts
@@ -7,7 +7,7 @@ export type FeatureFlagEnvironment = typeof process.env.ENV
export type FeatureFlagKey = 'depositions' | 'multipleTomograms'
export const FEATURE_FLAGS: Record = {
- depositions: ['local', 'dev'],
+ depositions: ['local', 'dev', 'staging', 'prod'],
multipleTomograms: ['local', 'dev'],
}
diff --git a/frontend/packages/data-portal/e2e/browseDatasetFilters.test.ts b/frontend/packages/data-portal/e2e/browseDatasetFilters.test.ts
index 642d20dc9..2293dd99b 100644
--- a/frontend/packages/data-portal/e2e/browseDatasetFilters.test.ts
+++ b/frontend/packages/data-portal/e2e/browseDatasetFilters.test.ts
@@ -5,11 +5,12 @@ import { FiltersPage } from 'e2e/pageObjects/filters/filtersPage'
import { serializeAvailableFiles } from 'e2e/pageObjects/filters/utils'
import { QueryParams } from 'app/constants/query'
+import { ObjectShapeType } from 'app/types/shapeTypes'
import { getPrefixedId } from 'app/utils/idPrefixes'
import { getApolloClient } from './apollo'
import { BROWSE_DATASETS_URL, E2E_CONFIG, translations } from './constants'
-import { onlyRunIfEnabled } from './utils'
+import { getObjectShapeTypeLabel, onlyRunIfEnabled } from './utils'
test.describe('Browse datasets page filters', () => {
let client: ApolloClient
@@ -1156,17 +1157,16 @@ test.describe('Browse datasets page filters', () => {
getPrefixedId(E2E_CONFIG.depositionId, QueryParams.DepositionId),
)
- // TODO: (kne42) uncomment when hooked up to backend
- // await filtersActor.expectDataAndDatasetsTableToMatch({
- // client,
- // url: BROWSE_DATASETS_URL,
- // queryParamsList: [
- // {
- // queryParamKey: QueryParams.DepositionId,
- // queryParamValue: E2E_CONFIG.depositionId,
- // },
- // ],
- // })
+ await filtersActor.expectDataAndDatasetsTableToMatch({
+ client,
+ url: BROWSE_DATASETS_URL,
+ queryParamsList: [
+ {
+ queryParamKey: QueryParams.DepositionId,
+ queryParamValue: E2E_CONFIG.depositionId,
+ },
+ ],
+ })
})
test('should filter when opening URL', async () => {
await filtersActor.goToFilteredUrl({
@@ -1183,17 +1183,16 @@ test.describe('Browse datasets page filters', () => {
getPrefixedId(E2E_CONFIG.depositionId, QueryParams.DepositionId),
)
- // TODO: (kne42) uncomment when hooked up to backend
- // await filtersActor.expectDataAndDatasetsTableToMatch({
- // client,
- // url: BROWSE_DATASETS_URL,
- // queryParamsList: [
- // {
- // queryParamKey: QueryParams.DepositionId,
- // queryParamValue: E2E_CONFIG.depositionId,
- // },
- // ],
- // })
+ await filtersActor.expectDataAndDatasetsTableToMatch({
+ client,
+ url: BROWSE_DATASETS_URL,
+ queryParamsList: [
+ {
+ queryParamKey: QueryParams.DepositionId,
+ queryParamValue: E2E_CONFIG.depositionId,
+ },
+ ],
+ })
})
test('should disable filter when deselecting', async () => {
await filtersActor.goToFilteredUrl({
@@ -2485,7 +2484,9 @@ test.describe('Browse datasets page filters', () => {
await filtersActor.addSingleSelectFilter({
label: translations.objectShapeType,
- value: E2E_CONFIG.objectShapeType,
+ value: getObjectShapeTypeLabel(
+ E2E_CONFIG.objectShapeType as ObjectShapeType,
+ ),
})
await filtersActor.expectUrlQueryParamsToBeCorrect({
@@ -2542,7 +2543,9 @@ test.describe('Browse datasets page filters', () => {
],
})
- await filtersPage.removeFilterOption(E2E_CONFIG.objectShapeType)
+ await filtersPage.removeFilterOption(
+ getObjectShapeTypeLabel(E2E_CONFIG.objectShapeType as ObjectShapeType),
+ )
await filtersActor.expectUrlQueryParamsToBeCorrect({
url: BROWSE_DATASETS_URL,
diff --git a/frontend/packages/data-portal/e2e/pageObjects/filters/filtersActor.ts b/frontend/packages/data-portal/e2e/pageObjects/filters/filtersActor.ts
index f1bcd5325..fe89f20a7 100644
--- a/frontend/packages/data-portal/e2e/pageObjects/filters/filtersActor.ts
+++ b/frontend/packages/data-portal/e2e/pageObjects/filters/filtersActor.ts
@@ -392,7 +392,6 @@ export class FiltersActor {
}) {
const { data: datasetsFilterData } = await getDatasetsFilterData({
client,
- filter: {},
})
const organismNames = getFilteredOrganismNamesFromData({
diff --git a/frontend/packages/data-portal/e2e/pageObjects/metadataDrawer/utils.ts b/frontend/packages/data-portal/e2e/pageObjects/metadataDrawer/utils.ts
index 00c547d4d..749f9cefe 100644
--- a/frontend/packages/data-portal/e2e/pageObjects/metadataDrawer/utils.ts
+++ b/frontend/packages/data-portal/e2e/pageObjects/metadataDrawer/utils.ts
@@ -1,5 +1,6 @@
import { ApolloClient, NormalizedCacheObject } from '@apollo/client'
import { E2E_CONFIG, translations } from 'e2e/constants'
+import { getObjectShapeTypeLabel } from 'e2e/utils'
import { startCase } from 'lodash-es'
import { DeepPartial } from 'utility-types'
@@ -16,6 +17,7 @@ import {
import { getDatasetById } from 'app/graphql/getDatasetById.server'
import { getRunById } from 'app/graphql/getRunById.server'
import { getRunByIdV2 } from 'app/graphql/getRunByIdV2.server'
+import { ObjectShapeType } from 'app/types/shapeTypes'
import { isFiducial } from 'app/utils/tomograms'
import { DrawerTestData, DrawerTestMetadata } from './types'
@@ -152,7 +154,9 @@ function getAnnotationTestMetdata(
objectName: annotation.object_name,
objectId: annotation.object_id,
objectCount: annotation.object_count,
- objectShapeType: file?.shape_type,
+ objectShapeType: file?.shape_type
+ ? getObjectShapeTypeLabel(file.shape_type as ObjectShapeType)
+ : '',
objectState: annotation.object_state,
objectDescription: annotation.object_description,
diff --git a/frontend/packages/data-portal/e2e/singleDatasetFilters.test.ts b/frontend/packages/data-portal/e2e/singleDatasetFilters.test.ts
index ab079b18d..faadd41e0 100644
--- a/frontend/packages/data-portal/e2e/singleDatasetFilters.test.ts
+++ b/frontend/packages/data-portal/e2e/singleDatasetFilters.test.ts
@@ -4,11 +4,12 @@ import { FiltersActor } from 'e2e/pageObjects/filters/filtersActor'
import { FiltersPage } from 'e2e/pageObjects/filters/filtersPage'
import { QueryParams } from 'app/constants/query'
+import { ObjectShapeType } from 'app/types/shapeTypes'
import { getPrefixedId } from 'app/utils/idPrefixes'
import { getApolloClient } from './apollo'
import { E2E_CONFIG, SINGLE_DATASET_URL, translations } from './constants'
-import { onlyRunIfEnabled } from './utils'
+import { getObjectShapeTypeLabel, onlyRunIfEnabled } from './utils'
test.describe('Single dataset page filters', () => {
let client: ApolloClient
@@ -137,18 +138,17 @@ test.describe('Single dataset page filters', () => {
getPrefixedId(E2E_CONFIG.depositionId, QueryParams.DepositionId),
)
- // TODO: (kne42) uncomment this when hooked up to backend
- // await filtersActor.expectDataAndRunsTableToMatch({
- // client,
- // id: +E2E_CONFIG.datasetId,
- // url: SINGLE_DATASET_URL,
- // queryParamsList: [
- // {
- // queryParamKey: QueryParams.DepositionId,
- // queryParamValue: E2E_CONFIG.depositionId,
- // },
- // ],
- // })
+ await filtersActor.expectDataAndRunsTableToMatch({
+ client,
+ id: +E2E_CONFIG.datasetId,
+ url: SINGLE_DATASET_URL,
+ queryParamsList: [
+ {
+ queryParamKey: QueryParams.DepositionId,
+ queryParamValue: E2E_CONFIG.depositionId,
+ },
+ ],
+ })
})
test('should filter by deposition ID when opening URL', async () => {
await filtersActor.goToFilteredUrl({
@@ -165,18 +165,17 @@ test.describe('Single dataset page filters', () => {
getPrefixedId(E2E_CONFIG.depositionId, QueryParams.DepositionId),
)
- // TODO: (kne42) uncomment this when hooked up to backend
- // await filtersActor.expectDataAndRunsTableToMatch({
- // client,
- // id: +E2E_CONFIG.datasetId,
- // url: SINGLE_DATASET_URL,
- // queryParamsList: [
- // {
- // queryParamKey: QueryParams.DepositionId,
- // queryParamValue: E2E_CONFIG.depositionId,
- // },
- // ],
- // })
+ await filtersActor.expectDataAndRunsTableToMatch({
+ client,
+ id: +E2E_CONFIG.datasetId,
+ url: SINGLE_DATASET_URL,
+ queryParamsList: [
+ {
+ queryParamKey: QueryParams.DepositionId,
+ queryParamValue: E2E_CONFIG.depositionId,
+ },
+ ],
+ })
})
test('should remove filter when deselecting', async () => {
await filtersActor.goToFilteredUrl({
@@ -312,7 +311,9 @@ test.describe('Single dataset page filters', () => {
await filtersActor.addSingleSelectFilter({
label: translations.objectShapeType,
- value: E2E_CONFIG.objectShapeType,
+ value: getObjectShapeTypeLabel(
+ E2E_CONFIG.objectShapeType as ObjectShapeType,
+ ),
})
await filtersActor.expectUrlQueryParamsToBeCorrect({
@@ -371,7 +372,9 @@ test.describe('Single dataset page filters', () => {
],
})
- await filtersPage.removeFilterOption(E2E_CONFIG.objectShapeType)
+ await filtersPage.removeFilterOption(
+ getObjectShapeTypeLabel(E2E_CONFIG.objectShapeType as ObjectShapeType),
+ )
await filtersActor.expectUrlQueryParamsToBeCorrect({
url: SINGLE_DATASET_URL,
diff --git a/frontend/packages/data-portal/e2e/singleRunFilters.test.ts b/frontend/packages/data-portal/e2e/singleRunFilters.test.ts
index a1866db96..e0e7e81be 100644
--- a/frontend/packages/data-portal/e2e/singleRunFilters.test.ts
+++ b/frontend/packages/data-portal/e2e/singleRunFilters.test.ts
@@ -4,11 +4,12 @@ import { FiltersActor } from 'e2e/pageObjects/filters/filtersActor'
import { FiltersPage } from 'e2e/pageObjects/filters/filtersPage'
import { QueryParams } from 'app/constants/query'
+import { ObjectShapeType } from 'app/types/shapeTypes'
import { getPrefixedId } from 'app/utils/idPrefixes'
import { getApolloClient } from './apollo'
import { E2E_CONFIG, SINGLE_RUN_URL, translations } from './constants'
-import { onlyRunIfEnabled } from './utils'
+import { getObjectShapeTypeLabel, onlyRunIfEnabled } from './utils'
test.describe('Single run page filters', () => {
let client: ApolloClient
@@ -242,18 +243,17 @@ test.describe('Single run page filters', () => {
getPrefixedId(E2E_CONFIG.depositionId, QueryParams.DepositionId),
)
- // TODO: (kne42) uncomment when hooked up to backend
- // await filtersActor.expectDataAndAnnotationsTableToMatch({
- // client,
- // id: +E2E_CONFIG.runId,
- // url: SINGLE_RUN_URL,
- // queryParamsList: [
- // {
- // queryParamKey: QueryParams.DepositionId,
- // queryParamValue: E2E_CONFIG.depositionId,
- // },
- // ],
- // })
+ await filtersActor.expectDataAndAnnotationsTableToMatch({
+ client,
+ id: +E2E_CONFIG.runId,
+ url: SINGLE_RUN_URL,
+ queryParamsList: [
+ {
+ queryParamKey: QueryParams.DepositionId,
+ queryParamValue: E2E_CONFIG.depositionId,
+ },
+ ],
+ })
})
test('should filter when opening URL', async () => {
await filtersActor.goToFilteredUrl({
@@ -270,18 +270,17 @@ test.describe('Single run page filters', () => {
getPrefixedId(E2E_CONFIG.depositionId, QueryParams.DepositionId),
)
- // TODO: (kne42) uncomment when hooked up to backend
- // await filtersActor.expectDataAndAnnotationsTableToMatch({
- // client,
- // id: +E2E_CONFIG.runId,
- // url: SINGLE_RUN_URL,
- // queryParamsList: [
- // {
- // queryParamKey: QueryParams.DepositionId,
- // queryParamValue: E2E_CONFIG.depositionId,
- // },
- // ],
- // })
+ await filtersActor.expectDataAndAnnotationsTableToMatch({
+ client,
+ id: +E2E_CONFIG.runId,
+ url: SINGLE_RUN_URL,
+ queryParamsList: [
+ {
+ queryParamKey: QueryParams.DepositionId,
+ queryParamValue: E2E_CONFIG.depositionId,
+ },
+ ],
+ })
})
test('should remove filter when deselecting', async () => {
await filtersActor.goToFilteredUrl({
@@ -308,18 +307,12 @@ test.describe('Single run page filters', () => {
],
})
- // TODO: (kne42) uncomment when hooked up to backend
- // await filtersActor.expectDataAndAnnotationsTableToMatch({
- // client,
- // id: +E2E_CONFIG.runId,
- // url: SINGLE_RUN_URL,
- // queryParamsList: [
- // {
- // queryParamKey: QueryParams.DepositionId,
- // queryParamValue: E2E_CONFIG.depositionId,
- // },
- // ],
- // })
+ await filtersActor.expectDataAndAnnotationsTableToMatch({
+ client,
+ id: +E2E_CONFIG.runId,
+ url: SINGLE_RUN_URL,
+ queryParamsList: [],
+ })
})
})
test.describe('Object Name filter', () => {
@@ -517,7 +510,9 @@ test.describe('Single run page filters', () => {
await filtersActor.addSingleSelectFilter({
label: translations.objectShapeType,
- value: E2E_CONFIG.objectShapeType,
+ value: getObjectShapeTypeLabel(
+ E2E_CONFIG.objectShapeType as ObjectShapeType,
+ ),
})
await filtersActor.expectUrlQueryParamsToBeCorrect({
@@ -578,7 +573,9 @@ test.describe('Single run page filters', () => {
],
})
- await filtersPage.removeFilterOption(E2E_CONFIG.objectShapeType)
+ await filtersPage.removeFilterOption(
+ getObjectShapeTypeLabel(E2E_CONFIG.objectShapeType as ObjectShapeType),
+ )
await filtersActor.expectUrlQueryParamsToBeCorrect({
url: SINGLE_RUN_URL,
diff --git a/frontend/packages/data-portal/e2e/utils.ts b/frontend/packages/data-portal/e2e/utils.ts
index 0f4b8dc1e..375663831 100644
--- a/frontend/packages/data-portal/e2e/utils.ts
+++ b/frontend/packages/data-portal/e2e/utils.ts
@@ -1,7 +1,11 @@
import { test } from '@playwright/test'
+import { shapeTypeToI18nKey } from 'app/constants/objectShapeTypes'
+import { ObjectShapeType } from 'app/types/shapeTypes'
import { FeatureFlagKey, getFeatureFlag } from 'app/utils/featureFlags'
+import { translations } from './constants'
+
export function onlyRunIfEnabled(key: FeatureFlagKey) {
const isEnabled = getFeatureFlag({
key,
@@ -11,3 +15,8 @@ export function onlyRunIfEnabled(key: FeatureFlagKey) {
// eslint-disable-next-line playwright/no-skipped-test
test.skip(!isEnabled, `Skipping because feature ${key} is disabled`)
}
+
+export function getObjectShapeTypeLabel(shapeType: ObjectShapeType): string {
+ const key = shapeTypeToI18nKey[shapeType]
+ return key ? translations[key] : ''
+}
diff --git a/frontend/packages/data-portal/public/locales/en/translation.json b/frontend/packages/data-portal/public/locales/en/translation.json
index 7e1b0317e..49aca09f2 100644
--- a/frontend/packages/data-portal/public/locales/en/translation.json
+++ b/frontend/packages/data-portal/public/locales/en/translation.json
@@ -327,7 +327,7 @@
"runs": "Runs",
"runsTab": "Runs {{count}}",
"runsTooltip": "Run: A tomography run is a collection of all data and annotations related to one physical location in a biological specimen. Learn More",
- "runsTooltipDepositionSubtext": "Count only shows the number of runs containing deposition data. Learn more about depositions in the portal.",
+ "runsTooltipDepositionSubtext": "Count only shows the number of runs containing deposition data. Learn more about depositions in the portal.",
"sampleAndExperimentConditions": "Sample and Experiment Conditions",
"samplePreparation": "Sample Preparation",
"sampleType": "Sample Type",
@@ -407,6 +407,7 @@
"urlCZ": "https://chanzuckerberg.com/",
"urlCZII": "https://www.czimaginginstitute.org/",
"urlDataContributionForm": "https://airtable.com/apppmytRJXoXYTO9w/shr5UxgeQcUTSGyiY?prefill_Event=Portal&hide_Event=true",
+ "urlDepositionsDocumentation": "https://chanzuckerberg.github.io/cryoet-data-portal/cryoet_data_portal_docsite_data.html#depositions",
"urlEMPIAR": "https://www.ebi.ac.uk/empiar/",
"valueToValue": "{{value1}} to {{value2}}",
"veryPoor": "Very Poor",