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() { 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",