From 0e2799e0a4e9ff41a565268b91352320d6a1f8f7 Mon Sep 17 00:00:00 2001 From: bilalesi Date: Wed, 13 Aug 2025 11:19:31 +0200 Subject: [PATCH] allow extensible types other than default from entitycore (use dict rather enum) --- next.config.ts | 18 ++--- src/api/entity-download/index.ts | 4 +- src/api/entitycore/guards.ts | 18 ++--- src/api/entitycore/queries/assets/index.ts | 8 +-- .../entitycore/queries/general/derivation.ts | 4 +- src/api/entitycore/queries/general/entity.ts | 4 +- .../queries/model/single-neuron-synaptome.ts | 4 +- .../simulation/single-neuron-simulation.ts | 4 +- .../single-neuron-synaptome-simulation.ts | 4 +- src/api/entitycore/types/entities/entity.ts | 4 +- .../types/entities/measurement-annotation.ts | 6 +- src/api/entitycore/types/entity-type.ts | 71 ++++++++++--------- .../entitycore/types/extended-entity-type.ts | 32 ++++----- src/api/entitycore/types/shared/global.ts | 4 +- src/api/virtual-lab-svc/queries/bookmark.ts | 4 +- src/api/virtual-lab-svc/queries/types.ts | 6 +- .../api/entity-download/[entityType]/route.ts | 4 +- .../[entityType]/ticket/[ticketId]/route.ts | 4 +- .../[entityType]/ticket/route.ts | 4 +- .../[projectId]/(pages)/activity/page.tsx | 4 +- .../(secondary)/build/synaptome/new/page.tsx | 4 +- .../project/[projectId]/build/page.tsx | 6 +- .../simulate/simulation/browse.tsx | 4 +- .../[projectId]/simulate/simulation/new.tsx | 4 +- .../ExploreListingLayout/navigation-menu.tsx | 4 +- .../ExploreSectionNameSearch.tsx | 7 +- .../ExploreSectionTable.tsx | 6 +- .../FilterControls.tsx | 4 +- .../LoadMoreButton.tsx | 6 +- .../ExploreSectionListingView/hooks.tsx | 6 +- .../ExploreSectionListingView/index.tsx | 7 +- .../useRowSelection.ts | 4 +- src/components/listing-table/controls.tsx | 4 +- .../definitions/fields-defs/common.tsx | 30 ++++---- .../definitions/fields-defs/experimental.tsx | 26 +++---- .../definitions/fields-defs/model.tsx | 6 +- src/entity-configuration/definitions/types.ts | 6 +- .../definitions/view-defs/experiment.ts | 12 ++-- .../definitions/view-defs/experimental.ts | 12 ++-- .../definitions/view-defs/index.tsx | 10 +-- .../definitions/view-defs/model.ts | 14 ++-- .../domain/experimental/bouton-density.ts | 8 +-- .../experimental/electrical-cell-recording.ts | 8 +-- .../domain/experimental/index.ts | 12 ++-- .../domain/experimental/neuron-density.ts | 8 +-- .../experimental/reconstruction-morphology.ts | 10 +-- .../experimental/synapse-per-connection.ts | 8 +-- src/entity-configuration/domain/helpers.ts | 4 +- .../domain/model/circuit.ts | 8 +-- .../domain/model/e-model.ts | 8 +-- .../domain/model/index.ts | 8 +-- .../domain/model/me-model.ts | 8 +-- .../domain/model/mirocircuit.ts | 8 +-- .../domain/model/paired-neurons.ts | 8 +-- .../domain/model/single-neuron-synaptome.ts | 8 +-- .../domain/model/small-microcircuit.ts | 8 +-- .../domain/simulation/index.ts | 8 +-- .../simulation/paired-neurons-simulation.ts | 10 +-- .../domain/simulation/simulation-campaign.ts | 10 +-- .../simulation/single-neuron-simulation.ts | 8 +-- .../single-neuron-synaptome-simulation.ts | 8 +-- .../small-microcircuit-simulation.ts | 10 +-- src/entity-configuration/domain/types.ts | 8 +-- src/features/activity-view/types.ts | 4 +- src/features/bookmark/control.tsx | 4 +- src/features/bookmark/footer.tsx | 4 +- src/features/bookmark/helpers.ts | 17 +++-- src/features/bookmark/listing-table.tsx | 4 +- src/features/bookmark/view.tsx | 4 +- src/features/brain-atlas-viewer/context.tsx | 4 +- src/features/cell-composition/context.ts | 4 +- src/features/details-view/summary.tsx | 15 ++-- .../entities/e-model/detail-view/index.tsx | 4 +- .../entities/e-model/listing-view.tsx | 4 +- .../card-viewers/emodel-overview-card.tsx | 4 +- .../card-viewers/morphology-overview-card.tsx | 4 +- .../entities/me-model/detail-view/index.tsx | 8 +-- .../me-model/detail-view/simulation.tsx | 4 +- .../elements/me-model-details.tsx | 4 +- .../elements/synaptome-details.tsx | 4 +- .../simulation-results/simulation-details.tsx | 4 +- .../build/elements/synapse-config-form.tsx | 4 +- .../build/phases/me-model-listing.tsx | 6 +- .../detail-view/configuration.tsx | 4 +- .../detail-view/index.tsx | 8 +-- .../detail-view/simulation.tsx | 4 +- .../entity-download/download-stream.ts | 6 +- src/features/entity-download/file-handlers.ts | 36 +++++----- src/features/entity-download/ticket-store.ts | 4 +- src/features/entity-download/utils.ts | 6 +- src/features/listing-filter-panel/index.tsx | 4 +- .../listing-filter-panel.tsx | 11 +-- .../numeric-results-info.tsx | 4 +- .../_components/atoms/index.ts | 4 +- .../_components/hooks/circuit.ts | 4 +- src/features/views/details/experimental.tsx | 16 ++--- src/features/views/details/model.tsx | 10 +-- src/features/views/listing/index.tsx | 4 +- .../views/listing/model-listing-view.tsx | 8 +-- src/hooks/useExploreColumns.tsx | 6 +- src/hooks/useMorphoMetrics.tsx | 7 +- src/hooks/virtual-labs/infinite-scroll.tsx | 4 +- .../build/me-model/configure.tsx | 4 +- .../build/me-model/emodel.selection.tsx | 6 +- .../build/me-model/morphology.selection.tsx | 6 +- .../explore/single-neuron-simulation.tsx | 10 +-- .../single-neuron-synaptome-simulation.tsx | 10 +-- src/services/entity-download/index.ts | 4 +- src/services/entitycore/entities-count.ts | 4 +- .../explore-section/column-key-to-filter.ts | 4 +- .../explore-section/detail-view-atoms.ts | 5 +- .../explore-section/details-view-atom.ts | 5 +- src/state/explore-section/list-view-atoms.ts | 4 +- src/state/morpho-viewer/index.ts | 4 +- src/state/virtual-lab/bookmark.ts | 5 +- src/ui/segments/explore/entity-count.tsx | 6 +- src/utils/url-builder.ts | 12 ++-- tests/utils/url-builder.test.ts | 12 ++-- 118 files changed, 476 insertions(+), 462 deletions(-) diff --git a/next.config.ts b/next.config.ts index e18d5d4c0..5d57a1029 100644 --- a/next.config.ts +++ b/next.config.ts @@ -81,15 +81,15 @@ const nextConfig = (phase: string): NextConfig => { }, ], }, - // async redirects() { - // return [ - // { - // source: `/app/virtual-lab/:path*`, - // destination: `/app/v2/setup`, - // permanent: false, - // }, - // ]; - // }, + async redirects() { + return [ + { + source: `/app/virtual-lab/:path*`, + destination: `/app/v2/setup`, + permanent: false, + }, + ]; + }, }; }; diff --git a/src/api/entity-download/index.ts b/src/api/entity-download/index.ts index a1494004b..bc40ffe23 100644 --- a/src/api/entity-download/index.ts +++ b/src/api/entity-download/index.ts @@ -1,5 +1,5 @@ import kebabCase from 'lodash/kebabCase'; -import { EntityTypeValue } from '@/api/entitycore/types'; +import { TEntityTypeDict } from '@/api/entitycore/types'; type CreateTicketResponse = { ticketId: string; @@ -11,7 +11,7 @@ export default async function createDownloadTicket({ projectId, entityIds, }: { - entityType: EntityTypeValue; + entityType: TEntityTypeDict; virtualLabId?: string; projectId?: string; entityIds: string[]; diff --git a/src/api/entitycore/guards.ts b/src/api/entitycore/guards.ts index d6c3c99e5..9d694ab5a 100644 --- a/src/api/entitycore/guards.ts +++ b/src/api/entitycore/guards.ts @@ -1,4 +1,4 @@ -import { EntityTypeEnum } from '@/api/entitycore/types/entity-type'; +import { EntityTypeDict } from '@/api/entitycore/types/entity-type'; import type { EntityCoreBaseAsset } from '@/api/entitycore/types/shared/global'; import type { @@ -22,43 +22,43 @@ export function hasAssets( export function isReconstructionMorphology( entity: EntityCoreObjectTypes ): entity is IReconstructionMorphology { - return entity.type === EntityTypeEnum.ReconstructionMorphology; + return entity.type === EntityTypeDict.ReconstructionMorphology; } export function isElectricalCellRecording( entity: EntityCoreObjectTypes ): entity is IElectricalCellRecording { - return entity.type === EntityTypeEnum.ElectricalCellRecording; + return entity.type === EntityTypeDict.ElectricalCellRecording; } export function isExperimentalNeuronDensity( entity: EntityCoreObjectTypes ): entity is IExperimentalNeuronDensity { - return entity.type === EntityTypeEnum.ExperimentalNeuronDensity; + return entity.type === EntityTypeDict.ExperimentalNeuronDensity; } export function isExperimentalBoutonDensity( entity: EntityCoreObjectTypes ): entity is IExperimentalBoutonDensity { - return entity.type === EntityTypeEnum.ExperimentalBoutonDensity; + return entity.type === EntityTypeDict.ExperimentalBoutonDensity; } export function isExperimentalSynapsesPerConnection( entity: EntityCoreObjectTypes ): entity is IExperimentalSynapsesPerConnection { - return entity.type === EntityTypeEnum.ExperimentalSynapsesPerConnection; + return entity.type === EntityTypeDict.ExperimentalSynapsesPerConnection; } export function isSingleNeuronSynaptome( entity: EntityCoreObjectTypes ): entity is ISingleNeuronSynaptome { - return entity.type === EntityTypeEnum.SingleNeuronSynaptome; + return entity.type === EntityTypeDict.SingleNeuronSynaptome; } export function isMemodel(entity: EntityCoreObjectTypes): entity is IMEModel { - return entity.type === EntityTypeEnum.Memodel; + return entity.type === EntityTypeDict.Memodel; } export function isEmodel(entity: EntityCoreObjectTypes): entity is IEModel { - return entity.type === EntityTypeEnum.Emodel; + return entity.type === EntityTypeDict.Emodel; } diff --git a/src/api/entitycore/queries/assets/index.ts b/src/api/entitycore/queries/assets/index.ts index 59c50ea4b..f25b17dc2 100644 --- a/src/api/entitycore/queries/assets/index.ts +++ b/src/api/entitycore/queries/assets/index.ts @@ -2,7 +2,7 @@ import kebabCase from 'lodash/kebabCase'; import authApiClient from '@/api/apiClient'; -import { EntityTypeValue } from '@/api/entitycore/types/entity-type'; +import { TEntityTypeDict } from '@/api/entitycore/types/entity-type'; import { getEntityCoreContext } from '@/api/entitycore/utils'; import { entityCoreUrl } from '@/config'; @@ -61,7 +61,7 @@ export async function getAsset({ export async function downloadAsset(params: { ctx?: WorkspaceContext; - entityType: EntityTypeValue; + entityType: TEntityTypeDict; entityId: string; assetPath?: string; id: string; @@ -71,7 +71,7 @@ export async function downloadAsset(params: { export async function downloadAsset(params: { ctx?: WorkspaceContext; - entityType: EntityTypeValue; + entityType: TEntityTypeDict; entityId: string; assetPath?: string; id: string; @@ -98,7 +98,7 @@ export async function downloadAsset({ assetPath = '', }: { ctx?: WorkspaceContext; - entityType: EntityTypeValue; + entityType: TEntityTypeDict; entityId: string; assetPath?: string; id: string; diff --git a/src/api/entitycore/queries/general/derivation.ts b/src/api/entitycore/queries/general/derivation.ts index 1d5287aa2..c8e224369 100644 --- a/src/api/entitycore/queries/general/derivation.ts +++ b/src/api/entitycore/queries/general/derivation.ts @@ -5,7 +5,7 @@ import type { } from '@/api/entitycore/types/entities/derivation'; import type { EntityCoreResponse } from '@/api/entitycore/types/shared/response'; import type { KebabCase, NormalizeChars } from '@/utils/type'; -import type { EntityTypeValue } from '@/api/entitycore/types/entity-type'; +import type { TEntityTypeDict } from '@/api/entitycore/types/entity-type'; import type { WorkspaceContext } from '@/types/common'; /** @@ -27,7 +27,7 @@ export async function getEntityDerivations({ filters, }: { context?: WorkspaceContext | null; - entityRoute: KebabCase>; + entityRoute: KebabCase>; entityId: string; filters?: Partial; }): Promise> { diff --git a/src/api/entitycore/queries/general/entity.ts b/src/api/entitycore/queries/general/entity.ts index 4071912d2..702766d78 100644 --- a/src/api/entitycore/queries/general/entity.ts +++ b/src/api/entitycore/queries/general/entity.ts @@ -1,7 +1,7 @@ import { entityCoreApi, getEntityCoreContext } from '@/api/entitycore/utils'; import { compactRecord } from '@/utils/dictionary'; -import type { EntityTypeWithBrainRegionValue } from '@/api/entitycore/types/entity-type'; +import type { TEntityTypeWithBrainRegionDict } from '@/api/entitycore/types/entity-type'; import type { EntityCountResponse, IEntity } from '@/api/entitycore/types/entities/entity'; import type { BrainRegionFilter } from '@/api/entitycore/types/shared/request'; import type { WorkspaceContext } from '@/types/common'; @@ -22,7 +22,7 @@ export async function getEntitiesCount({ brainRegion, }: { context?: WorkspaceContext | null; - types?: Array; + types?: Array; brainRegion: BrainRegionFilter; }): Promise { const api = await entityCoreApi(); diff --git a/src/api/entitycore/queries/model/single-neuron-synaptome.ts b/src/api/entitycore/queries/model/single-neuron-synaptome.ts index 30288de96..b25c3b941 100644 --- a/src/api/entitycore/queries/model/single-neuron-synaptome.ts +++ b/src/api/entitycore/queries/model/single-neuron-synaptome.ts @@ -2,7 +2,7 @@ import startsWith from 'lodash/startsWith'; import some from 'lodash/some'; import { entityCoreApi, getEntityCoreContext, getAssetElement } from '@/api/entitycore/utils'; -import { EntityTypeEnum } from '@/api/entitycore/types/entity-type'; +import { EntityTypeDict } from '@/api/entitycore/types/entity-type'; import { AssetLabel } from '@/api/entitycore/types/shared/global'; import { downloadAsset } from '@/api/entitycore/queries/assets'; import { tryCatch } from '@/api/utils'; @@ -122,7 +122,7 @@ export async function getSingleNeuronSynaptomeConfiguration( downloadAsset({ ctx: context, entityId: source.id, - entityType: EntityTypeEnum.SingleNeuronSynaptome, + entityType: EntityTypeDict.SingleNeuronSynaptome, id: configAsset.id, asRawResponse: true, }) diff --git a/src/api/entitycore/queries/simulation/single-neuron-simulation.ts b/src/api/entitycore/queries/simulation/single-neuron-simulation.ts index 4a304616f..94f67e78b 100644 --- a/src/api/entitycore/queries/simulation/single-neuron-simulation.ts +++ b/src/api/entitycore/queries/simulation/single-neuron-simulation.ts @@ -4,7 +4,7 @@ import some from 'lodash/some'; import { entityCoreApi, getAssetElement, getEntityCoreContext } from '@/api/entitycore/utils'; import { SingleNeuronSimulation } from '@/entity-configuration/domain/simulation'; import { downloadAsset } from '@/api/entitycore/queries/assets'; -import { EntityTypeEnum } from '@/api/entitycore/types'; +import { EntityTypeDict } from '@/api/entitycore/types'; import { compactRecord } from '@/utils/dictionary'; import { tryCatch } from '@/api/utils'; @@ -120,7 +120,7 @@ export async function getSingleNeuronSimulationIOResult( downloadAsset({ ctx: context, entityId: source.id, - entityType: EntityTypeEnum.SingleNeuronSimulation, + entityType: EntityTypeDict.SingleNeuronSimulation, id: configAsset.id, asRawResponse: true, }) diff --git a/src/api/entitycore/queries/simulation/single-neuron-synaptome-simulation.ts b/src/api/entitycore/queries/simulation/single-neuron-synaptome-simulation.ts index f681f93bd..6daad0734 100644 --- a/src/api/entitycore/queries/simulation/single-neuron-synaptome-simulation.ts +++ b/src/api/entitycore/queries/simulation/single-neuron-synaptome-simulation.ts @@ -4,7 +4,7 @@ import some from 'lodash/some'; import { entityCoreApi, getAssetElement, getEntityCoreContext } from '@/api/entitycore/utils'; import { SingleNeuronSynaptomeSimulation } from '@/entity-configuration/domain/simulation'; import { downloadAsset } from '@/api/entitycore/queries/assets'; -import { EntityTypeEnum } from '@/api/entitycore/types'; +import { EntityTypeDict } from '@/api/entitycore/types'; import { tryCatch } from '@/api/utils'; import type { @@ -121,7 +121,7 @@ export async function getSingleNeuronSynaptomeSimulationIOResult( downloadAsset({ ctx: context, entityId: source.id, - entityType: EntityTypeEnum.SingleNeuronSynaptomeSimulation, + entityType: EntityTypeDict.SingleNeuronSynaptomeSimulation, id: configAsset.id, asRawResponse: true, }) diff --git a/src/api/entitycore/types/entities/entity.ts b/src/api/entitycore/types/entities/entity.ts index f36cc9e12..7bd0c6433 100644 --- a/src/api/entitycore/types/entities/entity.ts +++ b/src/api/entitycore/types/entities/entity.ts @@ -3,8 +3,8 @@ import type { EntityCoreIdentifiable, EntityCoreType, } from '@/api/entitycore/types/shared/global'; -import type { EntityTypeWithBrainRegionEnum } from '@/api/entitycore/types/entity-type'; +import type { TEntityTypeWithBrainRegionDict } from '@/api/entitycore/types/entity-type'; export interface IEntity extends EntityCoreIdentifiable, EntityCoreType, EntityAuthorization {} -export type EntityCountResponse = Record; +export type EntityCountResponse = Record; diff --git a/src/api/entitycore/types/entities/measurement-annotation.ts b/src/api/entitycore/types/entities/measurement-annotation.ts index 20020a345..7c6a8c12d 100644 --- a/src/api/entitycore/types/entities/measurement-annotation.ts +++ b/src/api/entitycore/types/entities/measurement-annotation.ts @@ -1,6 +1,6 @@ import { Timestamps, EntityCoreIdentifiable } from '@/api/entitycore/types/shared/global'; import { TimestampsFilter, PaginationFilter } from '@/api/entitycore/types/shared/request'; -import { EntityTypeValue } from '@/api/entitycore/types/entity-type'; +import { TEntityTypeDict } from '@/api/entitycore/types/entity-type'; type MeasurementItem = { name: string; @@ -24,7 +24,7 @@ export type MeasurementKind = { export interface MeasurementAnnotation extends EntityCoreIdentifiable, Timestamps { entity_id: string; - entity_type: EntityTypeValue; + entity_type: TEntityTypeDict; measurement_kinds: MeasurementKind[]; } @@ -33,6 +33,6 @@ export type MeasurementAnnotationFilter = Partial< TimestampsFilter & PaginationFilter & { entity_id?: string; - entity_type?: EntityTypeValue; + entity_type?: TEntityTypeDict; } >; diff --git a/src/api/entitycore/types/entity-type.ts b/src/api/entitycore/types/entity-type.ts index ba3161674..85d1f01ab 100644 --- a/src/api/entitycore/types/entity-type.ts +++ b/src/api/entitycore/types/entity-type.ts @@ -1,37 +1,38 @@ -export enum EntityTypeEnum { - AnalysisSoftwareSourceCode = 'analysis_software_source_code', - Emodel = 'emodel', - ExperimentalBoutonDensity = 'experimental_bouton_density', - ExperimentalNeuronDensity = 'experimental_neuron_density', - ExperimentalSynapsesPerConnection = 'experimental_synapses_per_connection', - Memodel = 'memodel', - Mesh = 'mesh', - ReconstructionMorphology = 'reconstruction_morphology', - ElectricalCellRecording = 'electrical_cell_recording', - SingleNeuronSimulation = 'single_neuron_simulation', - SingleNeuronSynaptome = 'single_neuron_synaptome', - Subject = 'subject', - SynapticPathway = 'synaptic_pathway', - SingleNeuronSynaptomeSimulation = 'single_neuron_synaptome_simulation', - Circuit = 'circuit', - CellComposition = 'cell_composition', - BrainAtlas = 'brain_atlas', - BrainAtlasRegion = 'brain_atlas_region', - SimulationCampaign = 'simulation_campaign', - Simulation = 'simulation', -} +export const EntityTypeDict = { + AnalysisSoftwareSourceCode: 'analysis_software_source_code', + Emodel: 'emodel', + ExperimentalBoutonDensity: 'experimental_bouton_density', + ExperimentalNeuronDensity: 'experimental_neuron_density', + ExperimentalSynapsesPerConnection: 'experimental_synapses_per_connection', + Memodel: 'memodel', + Mesh: 'mesh', + ReconstructionMorphology: 'reconstruction_morphology', + ElectricalCellRecording: 'electrical_cell_recording', + SingleNeuronSimulation: 'single_neuron_simulation', + SingleNeuronSynaptome: 'single_neuron_synaptome', + Subject: 'subject', + SynapticPathway: 'synaptic_pathway', + SingleNeuronSynaptomeSimulation: 'single_neuron_synaptome_simulation', + Circuit: 'circuit', + CellComposition: 'cell_composition', + BrainAtlas: 'brain_atlas', + BrainAtlasRegion: 'brain_atlas_region', + SimulationCampaign: 'simulation_campaign', + Simulation: 'simulation', +} as const; -export enum EntityTypeWithBrainRegionEnum { - ExperimentalSynapsesPerConnection = 'experimental_synapses_per_connection', - ExperimentalBoutonDensity = 'experimental_bouton_density', - ExperimentalNeuronDensity = 'experimental_neuron_density', - ReconstructionMorphology = 'reconstruction_morphology', - ElectricalCellRecording = 'electrical_cell_recording', - Memodel = 'memodel', - Emodel = 'emodel', - Circuit = 'circuit', - SingleNeuronSynaptome = 'single_neuron_synaptome', -} +export const EntityTypeWithBrainRegionDict = { + ExperimentalSynapsesPerConnection: 'experimental_synapses_per_connection', + ExperimentalBoutonDensity: 'experimental_bouton_density', + ExperimentalNeuronDensity: 'experimental_neuron_density', + ReconstructionMorphology: 'reconstruction_morphology', + ElectricalCellRecording: 'electrical_cell_recording', + Memodel: 'memodel', + Emodel: 'emodel', + Circuit: 'circuit', + SingleNeuronSynaptome: 'single_neuron_synaptome', +} as const; -export type EntityTypeValue = `${EntityTypeEnum}`; -export type EntityTypeWithBrainRegionValue = `${EntityTypeWithBrainRegionEnum}`; +export type TEntityTypeDict = (typeof EntityTypeDict)[keyof typeof EntityTypeDict]; +export type TEntityTypeWithBrainRegionDict = + (typeof EntityTypeWithBrainRegionDict)[keyof typeof EntityTypeWithBrainRegionDict]; diff --git a/src/api/entitycore/types/extended-entity-type.ts b/src/api/entitycore/types/extended-entity-type.ts index bfe6090ef..0419f1e17 100644 --- a/src/api/entitycore/types/extended-entity-type.ts +++ b/src/api/entitycore/types/extended-entity-type.ts @@ -3,27 +3,19 @@ // TODO: update virtual-lab-api with the new names // NOTE: There are now various nested types associated with a single parent type in EntityCore. // We should enable selection and data manipulation for both the nested types and those directly defined in EntityCore. -export enum ExtendedEntitiesType { - ExperimentalBoutonDensity = `experimental_bouton_density`, - ExperimentalNeuronDensity = `experimental_neuron_density`, - ElectricalCellRecording = `electrical_cell_recording`, - ExperimentalSynapsePerConnection = `experimental_synapses_per_connection`, - ReconstructionMorphology = `reconstruction_morphology`, - SimulationCampaign = `simulation_campaign`, - EModel = 'emodel', - MEModel = 'memodel', - SingleNeuronSimulation = 'single_neuron_simulation', - SingleNeuronSynaptome = 'single_neuron_synaptome', - SingleNeuronSynaptomeSimulation = 'single_neuron_synaptome_simulation', - Circuit = 'circuit', - SmallMicrocircuit = 'small_micro_circuit', - Microcircuit = 'micro_circuit', - PairedNeuronCircuit = 'paired_neuron_circuit', - PairedNeuronCircuitSimulation = 'paired_neuron_circuit_simulation', - SmallMicrocircuitSimulation = 'small_microcircuit_simulation', -} +import { EntityTypeDict } from '@/api/entitycore/types/entity-type'; -export type TExtendedEntitiesType = `${ExtendedEntitiesType}`; +export const ExtendedEntitiesTypeDict = { + ...EntityTypeDict, + SmallMicrocircuit: 'small_micro_circuit', + Microcircuit: 'micro_circuit', + PairedNeuronCircuit: 'paired_neuron_circuit', + PairedNeuronCircuitSimulation: 'paired_neuron_circuit_simulation', + SmallMicrocircuitSimulation: 'small_microcircuit_simulation', +} as const; + +export type TExtendedEntitiesTypeDict = + (typeof ExtendedEntitiesTypeDict)[keyof typeof ExtendedEntitiesTypeDict]; export const DEFAULT_CHECKLIST_RENDER_LENGTH = 8; export const PAGE_SIZE = 30; diff --git a/src/api/entitycore/types/shared/global.ts b/src/api/entitycore/types/shared/global.ts index bd4dd24c7..22de9c986 100644 --- a/src/api/entitycore/types/shared/global.ts +++ b/src/api/entitycore/types/shared/global.ts @@ -1,6 +1,6 @@ import { EntityCoreConfiguration } from '@/entity-configuration/domain'; -import type { EntityTypeValue } from '@/api/entitycore/types/entity-type'; +import type { TEntityTypeDict } from '@/api/entitycore/types/entity-type'; import type { AssetLegacyMeta } from '@/api/entitycore/types/shared/legacy'; import type { PaginationFilter } from '@/api/entitycore/types/shared/request'; @@ -13,7 +13,7 @@ export type EntityCoreIdentifiable = { }; export type EntityCoreType = { - type: EntityTypeValue; + type: TEntityTypeDict; }; export type ActivityType = { diff --git a/src/api/virtual-lab-svc/queries/bookmark.ts b/src/api/virtual-lab-svc/queries/bookmark.ts index f190dda22..86004df39 100644 --- a/src/api/virtual-lab-svc/queries/bookmark.ts +++ b/src/api/virtual-lab-svc/queries/bookmark.ts @@ -1,6 +1,6 @@ import { virtualLabRootApi } from '@/api/virtual-lab-svc/utils'; -import type { ExtendedEntitiesType } from '@/api/entitycore/types/extended-entity-type'; +import type { TExtendedEntitiesTypeDict } from '@/api/entitycore/types/extended-entity-type'; import type { WorkspaceContext } from '@/types/common'; import type { BookmarkRequest, @@ -50,7 +50,7 @@ export async function bookmarkToProjectLibrary( */ export async function getAllBookmarksByCategory( { virtualLabId, projectId }: WorkspaceContext, - { category }: { category?: ExtendedEntitiesType } + { category }: { category?: TExtendedEntitiesTypeDict } ): Promise { const api = await virtualLabRootApi(); const url = `${baseUri}/${virtualLabId}/projects/${projectId}/bookmarks`; diff --git a/src/api/virtual-lab-svc/queries/types.ts b/src/api/virtual-lab-svc/queries/types.ts index 8accb73b4..ce9b9ba18 100644 --- a/src/api/virtual-lab-svc/queries/types.ts +++ b/src/api/virtual-lab-svc/queries/types.ts @@ -1,4 +1,4 @@ -import { ExtendedEntitiesType } from '@/api/entitycore/types/extended-entity-type'; +import type { TExtendedEntitiesTypeDict } from '@/api/entitycore/types/extended-entity-type'; interface VlmResponse { message: string; @@ -404,7 +404,7 @@ interface UserGroupsResponse { export type BookmarkRequest = { resource_id?: string; entity_id: string; - category: ExtendedEntitiesType; + category: TExtendedEntitiesTypeDict; }; export type DeleteBookmarksResponse = { @@ -418,7 +418,7 @@ export interface AddBookmarkResponse extends BookmarkRequest { export interface LibraryBookmark extends AddBookmarkResponse {} -type BookmarksByCategoryResponse = Record>; +type BookmarksByCategoryResponse = Record>; export type VlmGetSubscriptionResponse = VlmResponse; export type VlmCreateSubscriptionResponse = VlmResponse; diff --git a/src/app/api/entity-download/[entityType]/route.ts b/src/app/api/entity-download/[entityType]/route.ts index 01f889a17..3dcaa7ce2 100644 --- a/src/app/api/entity-download/[entityType]/route.ts +++ b/src/app/api/entity-download/[entityType]/route.ts @@ -3,7 +3,7 @@ import snakeCase from 'lodash/snakeCase'; import kebabCase from 'lodash/kebabCase'; import { NextRequest, NextResponse } from 'next/server'; import { auth } from '@/auth'; -import { EntityTypeValue } from '@/api/entitycore/types'; +import { TEntityTypeDict } from '@/api/entitycore/types'; import { getDownloadStreamHeaders } from '@/features/entity-download/utils'; import { createDownloadStream } from '@/features/entity-download/download-stream'; @@ -29,7 +29,7 @@ const downloadRequestSchema = z.object({ */ export async function POST(request: NextRequest, { params }: { params: { entityType: string } }) { const { entityType: entityTypeRaw } = await params; - const entityType = snakeCase(entityTypeRaw) as EntityTypeValue; + const entityType = snakeCase(entityTypeRaw) as TEntityTypeDict; const session = await auth(); if (!session) { diff --git a/src/app/api/entity-download/[entityType]/ticket/[ticketId]/route.ts b/src/app/api/entity-download/[entityType]/ticket/[ticketId]/route.ts index 54338f8d6..682fa7e13 100644 --- a/src/app/api/entity-download/[entityType]/ticket/[ticketId]/route.ts +++ b/src/app/api/entity-download/[entityType]/ticket/[ticketId]/route.ts @@ -6,7 +6,7 @@ import { z } from 'zod'; import { createDownloadStream } from '@/features/entity-download/download-stream'; import { getDownloadStreamHeaders } from '@/features/entity-download/utils'; -import { EntityTypeValue } from '@/api/entitycore/types'; +import { TEntityTypeDict } from '@/api/entitycore/types'; import { auth } from '@/auth'; import { ticketStore } from '@/features/entity-download/ticket-store'; @@ -18,7 +18,7 @@ export async function GET( { params }: { params: { entityType: string; ticketId: string } } ) { const { entityType: entityTypeRaw, ticketId } = await params; - const entityType = snakeCase(entityTypeRaw) as EntityTypeValue; + const entityType = snakeCase(entityTypeRaw) as TEntityTypeDict; const session = await auth(); if (!session) { diff --git a/src/app/api/entity-download/[entityType]/ticket/route.ts b/src/app/api/entity-download/[entityType]/ticket/route.ts index 11b1c11f6..76a18c261 100644 --- a/src/app/api/entity-download/[entityType]/ticket/route.ts +++ b/src/app/api/entity-download/[entityType]/ticket/route.ts @@ -3,7 +3,7 @@ import { z } from 'zod'; import snakeCase from 'lodash/snakeCase'; import { auth } from '@/auth'; -import { EntityTypeValue } from '@/api/entitycore/types'; +import { TEntityTypeDict } from '@/api/entitycore/types'; import { ticketStore } from '@/features/entity-download/ticket-store'; // Schema for ticket creation request @@ -35,7 +35,7 @@ export async function POST(request: NextRequest, { params }: { params: { entityT } const { entityType: entityTypeRaw } = await params; - const entityType = snakeCase(entityTypeRaw) as EntityTypeValue; + const entityType = snakeCase(entityTypeRaw) as TEntityTypeDict; try { const reqData = createTicketSchema.parse(await request.json()); diff --git a/src/app/app/virtual-lab/lab/[virtualLabId]/project/[projectId]/(pages)/activity/page.tsx b/src/app/app/virtual-lab/lab/[virtualLabId]/project/[projectId]/(pages)/activity/page.tsx index 577c5e7fd..f26eebc89 100644 --- a/src/app/app/virtual-lab/lab/[virtualLabId]/project/[projectId]/(pages)/activity/page.tsx +++ b/src/app/app/virtual-lab/lab/[virtualLabId]/project/[projectId]/(pages)/activity/page.tsx @@ -11,7 +11,7 @@ import ErrorData from '@/components/message-banners/error'; import Tabs from '@/components/detail-view-tabs'; import type { ServerSideComponentProp, WorkspaceContext } from '@/types/common'; -import type { EntityTypeValue } from '@/api/entitycore/types'; +import type { TEntityTypeDict } from '@/api/entitycore/types'; function ErrorFallback() { return ( @@ -29,7 +29,7 @@ export default async function Page({ WorkspaceContext, { type: Extract< - EntityTypeValue, + TEntityTypeDict, | 'single_neuron_synaptome_simulation' | 'single_neuron_synaptome' | 'memodel' diff --git a/src/app/app/virtual-lab/lab/[virtualLabId]/project/[projectId]/(secondary)/build/synaptome/new/page.tsx b/src/app/app/virtual-lab/lab/[virtualLabId]/project/[projectId]/(secondary)/build/synaptome/new/page.tsx index 26fb4e8f7..36dde39d6 100644 --- a/src/app/app/virtual-lab/lab/[virtualLabId]/project/[projectId]/(secondary)/build/synaptome/new/page.tsx +++ b/src/app/app/virtual-lab/lab/[virtualLabId]/project/[projectId]/(secondary)/build/synaptome/new/page.tsx @@ -6,7 +6,7 @@ import Configuration from '@/page-wrappers/build/single-neuron-synaptome'; import { getSingleNeuronSynaptome } from '@/api/entitycore/queries/model/single-neuron-synaptome'; import { SingleNeuronSynaptome } from '@/entity-configuration/domain/model/single-neuron-synaptome'; -import { EntityTypeEnum } from '@/api/entitycore/types/entity-type'; +import { EntityTypeDict } from '@/api/entitycore/types/entity-type'; import { ErrorComponent } from '@/components/GenericErrorFallback'; import { downloadAsset } from '@/api/entitycore/queries/assets'; import { getAssetElement } from '@/api/entitycore/utils'; @@ -76,7 +76,7 @@ async function getSingleNeuronSynaptomeConfiguration({ const asset = await downloadAsset({ ctx, entityId: data.id, - entityType: EntityTypeEnum.SingleNeuronSynaptome, + entityType: EntityTypeDict.SingleNeuronSynaptome, id: configAsset.id, }); diff --git a/src/app/app/virtual-lab/lab/[virtualLabId]/project/[projectId]/build/page.tsx b/src/app/app/virtual-lab/lab/[virtualLabId]/project/[projectId]/build/page.tsx index e48bf448c..0a3e92df7 100644 --- a/src/app/app/virtual-lab/lab/[virtualLabId]/project/[projectId]/build/page.tsx +++ b/src/app/app/virtual-lab/lab/[virtualLabId]/project/[projectId]/build/page.tsx @@ -13,7 +13,7 @@ import BookmarkButton from '@/features/bookmark/control'; import { selectedRowsAtom } from '@/state/explore-section/list-view-atoms'; import { ExploreDataScope } from '@/types/explore-section/application'; import { getEntityByExtendedType } from '@/entity-configuration/domain/helpers'; -import { ExtendedEntitiesType } from '@/api/entitycore/types/extended-entity-type'; +import { ExtendedEntitiesTypeDict } from '@/api/entitycore/types/extended-entity-type'; import { Btn } from '@/components/buttons/base/legacy-btn'; import { classNames } from '@/util/utils'; import { @@ -77,8 +77,8 @@ function BrowseModelsTab() { {dataType && - dataType !== ExtendedEntitiesType.PairedNeuronCircuit && - dataType !== ExtendedEntitiesType.SmallMicrocircuit ? ( + dataType !== ExtendedEntitiesTypeDict.PairedNeuronCircuit && + dataType !== ExtendedEntitiesTypeDict.SmallMicrocircuit ? (
{selectedRows.length > 0 && (
- {dataType === ExtendedEntitiesType.SimulationCampaign && ( + {dataType === ExtendedEntitiesTypeDict.SimulationCampaign && ( { diff --git a/src/app/app/virtual-lab/lab/[virtualLabId]/project/[projectId]/simulate/simulation/new.tsx b/src/app/app/virtual-lab/lab/[virtualLabId]/project/[projectId]/simulate/simulation/new.tsx index cc858dbfe..20367baa7 100644 --- a/src/app/app/virtual-lab/lab/[virtualLabId]/project/[projectId]/simulate/simulation/new.tsx +++ b/src/app/app/virtual-lab/lab/[virtualLabId]/project/[projectId]/simulate/simulation/new.tsx @@ -15,7 +15,7 @@ import { import { getEntityByExtendedType } from '@/entity-configuration/domain/helpers'; import { selectedRowsAtom } from '@/state/explore-section/list-view-atoms'; import { ExploreDataScope } from '@/types/explore-section/application'; -import { EntityTypeEnum } from '@/api/entitycore/types'; +import { EntityTypeDict } from '@/api/entitycore/types'; import { resolveDataKey } from '@/utils/key-builder'; import { classNames } from '@/util/utils'; import { @@ -75,7 +75,7 @@ export default function StartNewSimulation() { /> {buttonsVisible && selectedRows.length > 0 && (
- {entity?.type !== EntityTypeEnum.Circuit && ( + {entity?.type !== EntityTypeDict.Circuit && ( | undefined; + entitytype: Partial | undefined; label: ReactNode; className: string; style: CSSProperties; diff --git a/src/components/explore-section/ExploreSectionListingView/ExploreSectionNameSearch.tsx b/src/components/explore-section/ExploreSectionListingView/ExploreSectionNameSearch.tsx index 3ea0c4fd5..d8ae03b69 100644 --- a/src/components/explore-section/ExploreSectionListingView/ExploreSectionNameSearch.tsx +++ b/src/components/explore-section/ExploreSectionListingView/ExploreSectionNameSearch.tsx @@ -7,12 +7,15 @@ import { previousDataAtom, searchStringAtom, } from '@/state/explore-section/list-view-atoms'; -import { ExtendedEntitiesType, PAGE_NUMBER } from '@/api/entitycore/types/extended-entity-type'; +import { + PAGE_NUMBER, + TExtendedEntitiesTypeDict, +} from '@/api/entitycore/types/extended-entity-type'; import { useDebouncedCallback } from '@/hooks/hooks'; type SearchProps = { dataKey: string; - dataType: ExtendedEntitiesType; + dataType: TExtendedEntitiesTypeDict; }; export default function ExploreSectionNameSearch({ dataType, dataKey }: SearchProps) { diff --git a/src/components/explore-section/ExploreSectionListingView/ExploreSectionTable.tsx b/src/components/explore-section/ExploreSectionListingView/ExploreSectionTable.tsx index a994dcaa1..97180db29 100644 --- a/src/components/explore-section/ExploreSectionListingView/ExploreSectionTable.tsx +++ b/src/components/explore-section/ExploreSectionListingView/ExploreSectionTable.tsx @@ -17,7 +17,7 @@ import { useShowMore, } from '@/components/explore-section/ExploreSectionListingView/hooks'; import { ExploreDataScope } from '@/types/explore-section/application'; -import { ExtendedEntitiesType } from '@/api/entitycore/types/extended-entity-type'; +import { TExtendedEntitiesTypeDict } from '@/api/entitycore/types/extended-entity-type'; import { classNames } from '@/util/utils'; import TableControls from '@/components/listing-table/controls'; @@ -29,7 +29,7 @@ import type { WorkspaceContext } from '@/types/common'; import styles from '@/app/app/virtual-lab/(free)/explore/explore.module.css'; -export type OnCellClick = (basePath: string, record: T, type: ExtendedEntitiesType) => void; +export type OnCellClick = (basePath: string, record: T, type: TExtendedEntitiesTypeDict) => void; function CustomTH({ children, @@ -101,7 +101,7 @@ type AdditionalTableProps = { dataContext: { virtualLabInfo?: WorkspaceContext; dataScope: ExploreDataScope; - dataType: ExtendedEntitiesType; + dataType: TExtendedEntitiesTypeDict; }; hasError?: boolean; onCellClick?: OnCellClick; diff --git a/src/components/explore-section/ExploreSectionListingView/FilterControls.tsx b/src/components/explore-section/ExploreSectionListingView/FilterControls.tsx index 7c494979a..602b2568b 100644 --- a/src/components/explore-section/ExploreSectionListingView/FilterControls.tsx +++ b/src/components/explore-section/ExploreSectionListingView/FilterControls.tsx @@ -19,9 +19,9 @@ import SettingsIcon from '@/components/icons/Settings'; import { activeColumnsAtom } from '@/state/explore-section/list-view-atoms'; import { ExploreDataScope } from '@/types/explore-section/application'; import { filterHasValue } from '@/features/listing-filter-panel/util'; -import { ExtendedEntitiesType } from '@/api/entitycore/types/extended-entity-type'; import { classNames } from '@/util/utils'; +import type { TExtendedEntitiesTypeDict } from '@/api/entitycore/types/extended-entity-type'; import type { CoreFilter } from '@/entity-configuration/definitions/types'; function FilterBtn({ disabled, children, onClick }: HTMLProps) { @@ -57,7 +57,7 @@ export default function FilterControls({ children?: ReactNode; displayControlPanel: boolean; setDisplayControlPanel: Dispatch>; - dataType: ExtendedEntitiesType; + dataType: TExtendedEntitiesTypeDict; dataScope?: ExploreDataScope; dataKey: string; filters?: CoreFilter[]; diff --git a/src/components/explore-section/ExploreSectionListingView/LoadMoreButton.tsx b/src/components/explore-section/ExploreSectionListingView/LoadMoreButton.tsx index bbef3edf6..05ba63fb5 100644 --- a/src/components/explore-section/ExploreSectionListingView/LoadMoreButton.tsx +++ b/src/components/explore-section/ExploreSectionListingView/LoadMoreButton.tsx @@ -13,7 +13,7 @@ import { VirtualLabInfo } from '@/types/virtual-lab/common'; import { useLoadableValue } from '@/hooks/hooks'; import { classNames } from '@/util/utils'; -import type { ExtendedEntitiesType } from '@/api/entitycore/types/extended-entity-type'; +import type { TExtendedEntitiesTypeDict } from '@/api/entitycore/types/extended-entity-type'; function Btn({ children, className, disabled, onClick }: HTMLProps) { return ( @@ -33,7 +33,7 @@ export function useLoadMore( dataContext: { workspace?: VirtualLabInfo; dataScope: ExploreDataScope; - dataType: ExtendedEntitiesType; + dataType: TExtendedEntitiesTypeDict; }, key: string, useBrainRegion?: boolean @@ -89,7 +89,7 @@ export default function LoadMoreButton({ dataContext: { virtualLabInfo?: VirtualLabInfo; dataScope: ExploreDataScope; - dataType: ExtendedEntitiesType; + dataType: TExtendedEntitiesTypeDict; }; dataKey: string; hide: () => void; diff --git a/src/components/explore-section/ExploreSectionListingView/hooks.tsx b/src/components/explore-section/ExploreSectionListingView/hooks.tsx index 2911cddf5..0df2c40b8 100644 --- a/src/components/explore-section/ExploreSectionListingView/hooks.tsx +++ b/src/components/explore-section/ExploreSectionListingView/hooks.tsx @@ -13,15 +13,15 @@ import { backToListPathAtom } from '@/state/explore-section/detail-view-atoms'; import { classNames } from '@/util/utils'; import type { EntityCoreIdentifiable } from '@/api/entitycore/types/shared/global'; -import type { ExtendedEntitiesType } from '@/api/entitycore/types/extended-entity-type'; +import type { TExtendedEntitiesTypeDict } from '@/api/entitycore/types/extended-entity-type'; -type OnCellClick = (basePath: string, record: T, type: ExtendedEntitiesType) => void; +type OnCellClick = (basePath: string, record: T, type: TExtendedEntitiesTypeDict) => void; export function useOnCellRouteHandler({ dataType, onCellClick, }: { - dataType: ExtendedEntitiesType; + dataType: TExtendedEntitiesTypeDict; onCellClick?: OnCellClick; }) { const pathname = usePathname(); diff --git a/src/components/explore-section/ExploreSectionListingView/index.tsx b/src/components/explore-section/ExploreSectionListingView/index.tsx index 12cf1dec3..ca01d1874 100644 --- a/src/components/explore-section/ExploreSectionListingView/index.tsx +++ b/src/components/explore-section/ExploreSectionListingView/index.tsx @@ -22,7 +22,10 @@ import { import { useBrainRegionHierarchy } from '@/features/brain-region-hierarchy/context'; import { EntityCoreIdentifiable } from '@/api/entitycore/types/shared/global'; import { ExploreDataScope } from '@/types/explore-section/application'; -import { ExtendedEntitiesType, PAGE_NUMBER } from '@/api/entitycore/types/extended-entity-type'; +import { + TExtendedEntitiesTypeDict, + PAGE_NUMBER, +} from '@/api/entitycore/types/extended-entity-type'; import { classNames } from '@/util/utils'; import type { RenderButtonProps } from '@/components/explore-section/ExploreSectionListingView/useRowSelection'; @@ -30,7 +33,7 @@ import type { WorkspaceContext } from '@/types/common'; export interface Props { dataKey: string; - dataType: ExtendedEntitiesType; + dataType: TExtendedEntitiesTypeDict; dataScope: ExploreDataScope; onCellClick?: OnCellClick; renderButton?: (props: RenderButtonProps) => ReactNode; diff --git a/src/components/explore-section/ExploreSectionListingView/useRowSelection.ts b/src/components/explore-section/ExploreSectionListingView/useRowSelection.ts index 7bb629c22..0ca79c642 100644 --- a/src/components/explore-section/ExploreSectionListingView/useRowSelection.ts +++ b/src/components/explore-section/ExploreSectionListingView/useRowSelection.ts @@ -3,14 +3,14 @@ import { useAtom } from 'jotai'; import { RowSelectionType, TableRowSelection } from 'antd/es/table/interface'; import { selectedRowsAtom } from '@/state/explore-section/list-view-atoms'; -import { ExtendedEntitiesType } from '@/api/entitycore/types/extended-entity-type'; +import { TExtendedEntitiesTypeDict } from '@/api/entitycore/types/extended-entity-type'; type RowSelection = Pick, 'selectedRowKeys' | 'onChange' | 'type'>; export type RenderButtonProps = { selectedRows: Array; clearSelectedRows: () => void; - dataType: ExtendedEntitiesType; + dataType: TExtendedEntitiesTypeDict; }; export default function useRowSelection({ diff --git a/src/components/listing-table/controls.tsx b/src/components/listing-table/controls.tsx index 2827ba812..c27ba9585 100644 --- a/src/components/listing-table/controls.tsx +++ b/src/components/listing-table/controls.tsx @@ -5,7 +5,7 @@ import { ReactNode } from 'react'; import { RenderButtonProps } from '@/components/explore-section/ExploreSectionListingView/useRowSelection'; import { ExploreDownloadButton } from '@/components/explore-section/ExploreSectionListingView/DownloadButton'; import { useScrollNav } from '@/components/explore-section/ExploreSectionListingView/hooks'; -import { ExtendedEntitiesType } from '@/api/entitycore/types/extended-entity-type'; +import { TExtendedEntitiesTypeDict } from '@/api/entitycore/types/extended-entity-type'; import type { EntityCoreIdentifiable } from '@/api/entitycore/types/shared/global'; @@ -46,7 +46,7 @@ export default function TableControls({ renderButton?: (props: RenderButtonProps) => ReactNode; selectedRows: RenderButtonProps['selectedRows']; visible: boolean; - dataType: ExtendedEntitiesType; + dataType: TExtendedEntitiesTypeDict; }) { const { left, right } = useScrollNav( typeof document !== 'undefined' diff --git a/src/entity-configuration/definitions/fields-defs/common.tsx b/src/entity-configuration/definitions/fields-defs/common.tsx index a83b2ff14..b0a8daf49 100644 --- a/src/entity-configuration/definitions/fields-defs/common.tsx +++ b/src/entity-configuration/definitions/fields-defs/common.tsx @@ -1,6 +1,6 @@ import { hasAssets } from '@/api/entitycore/guards'; import { transformAgentToNames } from '@/api/entitycore/transformers'; -import { ExtendedEntitiesType } from '@/api/entitycore/types/extended-entity-type'; +import { ExtendedEntitiesTypeDict } from '@/api/entitycore/types/extended-entity-type'; import { CoreFieldFilterTypeEnum, EntityCoreFields, @@ -174,16 +174,16 @@ export const FieldsDefinition: Partial>; + types: Array>; property: string; value: string; }>; @@ -97,7 +97,7 @@ export type FieldDefinition = { description?: string; filter: CoreFilterType; defaultConstraint?: string | Record; - perTypeConstraint?: Partial>; + perTypeConstraint?: Partial>; isSortable?: boolean; isFilterable?: boolean; isDisplayable?: boolean; diff --git a/src/entity-configuration/definitions/view-defs/experiment.ts b/src/entity-configuration/definitions/view-defs/experiment.ts index e5e5f34ab..e2c4e2cf6 100644 --- a/src/entity-configuration/definitions/view-defs/experiment.ts +++ b/src/entity-configuration/definitions/view-defs/experiment.ts @@ -1,12 +1,12 @@ import { EntityCoreFields } from '@/entity-configuration/definitions/fields-defs/enums'; import { DataTypeGroup } from '@/entity-configuration/definitions/view-defs/types'; -import { ExtendedEntitiesType } from '@/api/entitycore/types/extended-entity-type'; +import { ExtendedEntitiesTypeDict } from '@/api/entitycore/types/extended-entity-type'; import { EntitySlug } from '@/entity-configuration/domain/slug'; import type { ViewDefinitionConfig } from '@/entity-configuration/definitions/view-defs/types'; export const ViewsDefinition: { [key: string]: ViewDefinitionConfig } = { - [ExtendedEntitiesType.SingleNeuronSimulation]: { + [ExtendedEntitiesTypeDict.SingleNeuronSimulation]: { title: 'Simulation', group: DataTypeGroup.SimulationData, name: EntitySlug.SingleNeuronSimulation, @@ -29,7 +29,7 @@ export const ViewsDefinition: { [key: string]: ViewDefinitionConfig } = { { field: EntityCoreFields.CreationDate }, ], }, - [ExtendedEntitiesType.SingleNeuronSynaptomeSimulation]: { + [ExtendedEntitiesTypeDict.SingleNeuronSynaptomeSimulation]: { title: 'Synaptome simulations', group: DataTypeGroup.SimulationData, name: EntitySlug.SingleNeuronSynaptomeSimulation, @@ -50,7 +50,7 @@ export const ViewsDefinition: { [key: string]: ViewDefinitionConfig } = { { field: EntityCoreFields.CreationDate }, ], }, - [ExtendedEntitiesType.SimulationCampaign]: { + [ExtendedEntitiesTypeDict.SimulationCampaign]: { title: 'Simulation Campaign', group: DataTypeGroup.SimulationData, name: EntitySlug.SimulationCampaign, @@ -77,7 +77,7 @@ export const ViewsDefinition: { [key: string]: ViewDefinitionConfig } = { EntityCoreFields.CreationDate, ], }, - [ExtendedEntitiesType.PairedNeuronCircuitSimulation]: { + [ExtendedEntitiesTypeDict.PairedNeuronCircuitSimulation]: { title: 'Paired Neurons Simulation', group: DataTypeGroup.SimulationData, name: EntitySlug.PairedNeuronCircuitSimulation, @@ -103,7 +103,7 @@ export const ViewsDefinition: { [key: string]: ViewDefinitionConfig } = { EntityCoreFields.CreationDate, ], }, - [ExtendedEntitiesType.SmallMicrocircuitSimulation]: { + [ExtendedEntitiesTypeDict.SmallMicrocircuitSimulation]: { title: 'Small microcircuit Simulation', group: DataTypeGroup.SimulationData, name: EntitySlug.SmallMicrocircuitSimulation, diff --git a/src/entity-configuration/definitions/view-defs/experimental.ts b/src/entity-configuration/definitions/view-defs/experimental.ts index e53726cce..3768c8139 100644 --- a/src/entity-configuration/definitions/view-defs/experimental.ts +++ b/src/entity-configuration/definitions/view-defs/experimental.ts @@ -1,12 +1,12 @@ import { EntityCoreFields } from '@/entity-configuration/definitions/fields-defs/enums'; import { DataTypeGroup } from '@/entity-configuration/definitions/view-defs/types'; -import { ExtendedEntitiesType } from '@/api/entitycore/types/extended-entity-type'; +import { ExtendedEntitiesTypeDict } from '@/api/entitycore/types/extended-entity-type'; import { EntitySlug } from '@/entity-configuration/domain/slug'; import type { ViewDefinitionConfig } from '@/entity-configuration/definitions/view-defs/types'; export const ViewsDefinition: { [key: string]: ViewDefinitionConfig } = { - [ExtendedEntitiesType.ReconstructionMorphology]: { + [ExtendedEntitiesTypeDict.ReconstructionMorphology]: { title: 'Morphology', group: DataTypeGroup.ExperimentalData, name: EntitySlug.ReconstructionMorphology, @@ -102,7 +102,7 @@ export const ViewsDefinition: { [key: string]: ViewDefinitionConfig } = { ], mlTopic: 'Neuron morphology', }, - [ExtendedEntitiesType.ElectricalCellRecording]: { + [ExtendedEntitiesTypeDict.ElectricalCellRecording]: { title: 'Electrophysiology', group: DataTypeGroup.ExperimentalData, name: EntitySlug.ElectricalCellRecording, @@ -125,7 +125,7 @@ export const ViewsDefinition: { [key: string]: ViewDefinitionConfig } = { curated: true, mlTopic: 'Neuron spike', }, - [ExtendedEntitiesType.ExperimentalNeuronDensity]: { + [ExtendedEntitiesTypeDict.ExperimentalNeuronDensity]: { title: 'Neuron density', group: DataTypeGroup.ExperimentalData, name: EntitySlug.ExperimentalNeuronDensity, @@ -174,7 +174,7 @@ export const ViewsDefinition: { [key: string]: ViewDefinitionConfig } = { curated: false, mlTopic: 'cell composition', }, - [ExtendedEntitiesType.ExperimentalBoutonDensity]: { + [ExtendedEntitiesTypeDict.ExperimentalBoutonDensity]: { title: 'Bouton density', group: DataTypeGroup.ExperimentalData, name: EntitySlug.ExperimentalBoutonDensity, @@ -201,7 +201,7 @@ export const ViewsDefinition: { [key: string]: ViewDefinitionConfig } = { curated: false, mlTopic: 'Bouton density', }, - [ExtendedEntitiesType.ExperimentalSynapsePerConnection]: { + [ExtendedEntitiesTypeDict.ExperimentalSynapsesPerConnection]: { title: 'Synapse per connection', group: DataTypeGroup.ExperimentalData, name: EntitySlug.ExperimentalSynapsesPerConnection, diff --git a/src/entity-configuration/definitions/view-defs/index.tsx b/src/entity-configuration/definitions/view-defs/index.tsx index 176751945..7b8d08585 100644 --- a/src/entity-configuration/definitions/view-defs/index.tsx +++ b/src/entity-configuration/definitions/view-defs/index.tsx @@ -7,7 +7,7 @@ import { ViewsDefinition as ExperimentalViewDefinition } from '@/entity-configur import { ViewsDefinition as ExperimentViewDefinition } from '@/entity-configuration/definitions/view-defs/experiment'; import { ViewsDefinition as ModelViewDefinition } from '@/entity-configuration/definitions/view-defs/model'; import { EntityCoreFields } from '@/entity-configuration/definitions/fields-defs/enums'; -import { ExtendedEntitiesType } from '@/api/entitycore/types/extended-entity-type'; +import { TExtendedEntitiesTypeDict } from '@/api/entitycore/types/extended-entity-type'; import type { TypeSummaryProps } from '@/entity-configuration/definitions/view-defs/types'; import type { TExperimentTypeNames } from '@/entity-configuration/domain/experimental'; @@ -24,11 +24,11 @@ export const ViewsDefinitionRegistry = { ...ExperimentViewDefinition, } as const; -export function getViewDefinitionByLegacyType(legacyType: ExtendedEntitiesType) { +export function getViewDefinitionByExtendedType(legacyType: TExtendedEntitiesTypeDict) { return get(ViewsDefinitionRegistry, legacyType, null); } -export function getViewDefinitionsByLegacyType(types: Array) { +export function getViewDefinitionsByLegacyType(types: Array) { return pick(ViewsDefinitionRegistry, types); } @@ -38,6 +38,6 @@ export function getViewDefinitionByName(name: TExperimentTypeNames) { export function getViewDefinitionDataTypeByName( name: TExperimentTypeNames -): ExtendedEntitiesType | undefined { - return findKey(ViewsDefinitionRegistry, { name }) as ExtendedEntitiesType; +): TExtendedEntitiesTypeDict | undefined { + return findKey(ViewsDefinitionRegistry, { name }) as TExtendedEntitiesTypeDict; } diff --git a/src/entity-configuration/definitions/view-defs/model.ts b/src/entity-configuration/definitions/view-defs/model.ts index 79d548122..746195616 100644 --- a/src/entity-configuration/definitions/view-defs/model.ts +++ b/src/entity-configuration/definitions/view-defs/model.ts @@ -1,12 +1,12 @@ import { EntityCoreFields } from '@/entity-configuration/definitions/fields-defs/enums'; import { DataTypeGroup } from '@/entity-configuration/definitions/view-defs/types'; -import { ExtendedEntitiesType } from '@/api/entitycore/types/extended-entity-type'; +import { ExtendedEntitiesTypeDict } from '@/api/entitycore/types/extended-entity-type'; import { EntitySlug } from '@/entity-configuration/domain/slug'; import type { ViewDefinitionConfig } from '@/entity-configuration/definitions/view-defs/types'; export const ViewsDefinition: { [key: string]: ViewDefinitionConfig } = { - [ExtendedEntitiesType.EModel]: { + [ExtendedEntitiesTypeDict.Emodel]: { title: 'E-model', group: DataTypeGroup.ModelData, name: EntitySlug.EModel, @@ -29,7 +29,7 @@ export const ViewsDefinition: { [key: string]: ViewDefinitionConfig } = { { field: EntityCoreFields.EType }, ], }, - [ExtendedEntitiesType.MEModel]: { + [ExtendedEntitiesTypeDict.Memodel]: { title: 'ME-model', group: DataTypeGroup.ModelData, name: EntitySlug.MeModel, @@ -52,7 +52,7 @@ export const ViewsDefinition: { [key: string]: ViewDefinitionConfig } = { { field: EntityCoreFields.EType, className: 'col-span-4' }, ], }, - [ExtendedEntitiesType.SingleNeuronSynaptome]: { + [ExtendedEntitiesTypeDict.SingleNeuronSynaptome]: { title: 'Synaptome', group: DataTypeGroup.ModelData, name: EntitySlug.SingleNeuronSynaptome, @@ -72,7 +72,7 @@ export const ViewsDefinition: { [key: string]: ViewDefinitionConfig } = { { field: EntityCoreFields.License, className: 'col-span-1' }, ], }, - [ExtendedEntitiesType.Circuit]: { + [ExtendedEntitiesTypeDict.Circuit]: { title: 'Circuit', name: EntitySlug.Circuit, curated: false, @@ -89,7 +89,7 @@ export const ViewsDefinition: { [key: string]: ViewDefinitionConfig } = { EntityCoreFields.CircuitBuildCategory, ], }, - [ExtendedEntitiesType.SmallMicrocircuit]: { + [ExtendedEntitiesTypeDict.SmallMicrocircuit]: { title: 'Small microcircuit', name: EntitySlug.SmallMicrocircuit, curated: false, @@ -104,7 +104,7 @@ export const ViewsDefinition: { [key: string]: ViewDefinitionConfig } = { EntityCoreFields.CreationDate, ], }, - [ExtendedEntitiesType.PairedNeuronCircuit]: { + [ExtendedEntitiesTypeDict.PairedNeuronCircuit]: { title: 'Paired neurons', name: EntitySlug.PairedNeuronsCircuit, curated: false, diff --git a/src/entity-configuration/domain/experimental/bouton-density.ts b/src/entity-configuration/domain/experimental/bouton-density.ts index 2163c20f7..0d79a91cb 100644 --- a/src/entity-configuration/domain/experimental/bouton-density.ts +++ b/src/entity-configuration/domain/experimental/bouton-density.ts @@ -1,7 +1,7 @@ // import { ViewsDefinitionRegistry } from '@/entity-configuration/definitions/view-defs'; -import { EntityTypeEnum } from '@/api/entitycore/types/entity-type'; +import { EntityTypeDict } from '@/api/entitycore/types/entity-type'; import { EntitySlug } from '@/entity-configuration/domain/slug'; -import { ExtendedEntitiesType } from '@/api/entitycore/types/extended-entity-type'; +import { ExtendedEntitiesTypeDict } from '@/api/entitycore/types/extended-entity-type'; import { getExperimentalBoutonDensities, getExperimentalBoutonDensity, @@ -13,8 +13,8 @@ import type { EntityCoreTypeConfig } from '@/entity-configuration/domain/types'; export const BoutonDensity: EntityCoreTypeConfig = { group: 'experimental', title: 'Bouton density', - extendedType: ExtendedEntitiesType.ExperimentalBoutonDensity, - type: EntityTypeEnum.ExperimentalBoutonDensity, + extendedType: ExtendedEntitiesTypeDict.ExperimentalBoutonDensity, + type: EntityTypeDict.ExperimentalBoutonDensity, slug: EntitySlug.ExperimentalBoutonDensity, api: { config: { diff --git a/src/entity-configuration/domain/experimental/electrical-cell-recording.ts b/src/entity-configuration/domain/experimental/electrical-cell-recording.ts index 2e518eac8..6cc76d420 100644 --- a/src/entity-configuration/domain/experimental/electrical-cell-recording.ts +++ b/src/entity-configuration/domain/experimental/electrical-cell-recording.ts @@ -1,6 +1,6 @@ import { ElectricalRecordingOriginDictionary } from '@/api/entitycore/types/entities/electrical-cell-recording'; -import { ExtendedEntitiesType } from '@/api/entitycore/types/extended-entity-type'; -import { EntityTypeEnum } from '@/api/entitycore/types/entity-type'; +import { ExtendedEntitiesTypeDict } from '@/api/entitycore/types/extended-entity-type'; +import { EntityTypeDict } from '@/api/entitycore/types/entity-type'; import { EntitySlug } from '@/entity-configuration/domain/slug'; import { getElectricalCellRecordings, @@ -13,8 +13,8 @@ import type { EntityCoreTypeConfig } from '@/entity-configuration/domain/types'; export const ElectricalCellRecording: EntityCoreTypeConfig = { group: 'experimental', title: 'Electrophysiology', - extendedType: ExtendedEntitiesType.ElectricalCellRecording, - type: EntityTypeEnum.ElectricalCellRecording, + extendedType: ExtendedEntitiesTypeDict.ElectricalCellRecording, + type: EntityTypeDict.ElectricalCellRecording, slug: EntitySlug.ElectricalCellRecording, api: { config: { diff --git a/src/entity-configuration/domain/experimental/index.ts b/src/entity-configuration/domain/experimental/index.ts index 3973a59ac..0c2097f04 100644 --- a/src/entity-configuration/domain/experimental/index.ts +++ b/src/entity-configuration/domain/experimental/index.ts @@ -1,12 +1,12 @@ // TODO: this data type should be moved from this file -import { ExtendedEntitiesType } from '@/api/entitycore/types/extended-entity-type'; +import { ExtendedEntitiesTypeDict } from '@/api/entitycore/types/extended-entity-type'; export const EXPERIMENTAL_DATATYPES = [ - ExtendedEntitiesType.ExperimentalBoutonDensity, - ExtendedEntitiesType.ExperimentalNeuronDensity, - ExtendedEntitiesType.ElectricalCellRecording, - ExtendedEntitiesType.ExperimentalSynapsePerConnection, - ExtendedEntitiesType.ReconstructionMorphology, + ExtendedEntitiesTypeDict.ExperimentalBoutonDensity, + ExtendedEntitiesTypeDict.ExperimentalNeuronDensity, + ExtendedEntitiesTypeDict.ElectricalCellRecording, + ExtendedEntitiesTypeDict.ExperimentalSynapsesPerConnection, + ExtendedEntitiesTypeDict.ReconstructionMorphology, ] as const; export enum ExperimentTypeNames { diff --git a/src/entity-configuration/domain/experimental/neuron-density.ts b/src/entity-configuration/domain/experimental/neuron-density.ts index b7f297319..6fc63a77d 100644 --- a/src/entity-configuration/domain/experimental/neuron-density.ts +++ b/src/entity-configuration/domain/experimental/neuron-density.ts @@ -1,5 +1,5 @@ -import { ExtendedEntitiesType } from '@/api/entitycore/types/extended-entity-type'; -import { EntityTypeEnum } from '@/api/entitycore/types/entity-type'; +import { ExtendedEntitiesTypeDict } from '@/api/entitycore/types/extended-entity-type'; +import { EntityTypeDict } from '@/api/entitycore/types/entity-type'; import { EntitySlug } from '@/entity-configuration/domain/slug'; import { getExperimentalNeuronDensities, @@ -12,8 +12,8 @@ import type { EntityCoreTypeConfig } from '@/entity-configuration/domain/types'; export const NeuronDensity: EntityCoreTypeConfig = { group: 'experimental', title: 'Neuron density', - extendedType: ExtendedEntitiesType.ExperimentalNeuronDensity, - type: EntityTypeEnum.ExperimentalNeuronDensity, + extendedType: ExtendedEntitiesTypeDict.ExperimentalNeuronDensity, + type: EntityTypeDict.ExperimentalNeuronDensity, slug: EntitySlug.ExperimentalNeuronDensity, api: { config: { diff --git a/src/entity-configuration/domain/experimental/reconstruction-morphology.ts b/src/entity-configuration/domain/experimental/reconstruction-morphology.ts index efa7b6fe6..0b6487502 100644 --- a/src/entity-configuration/domain/experimental/reconstruction-morphology.ts +++ b/src/entity-configuration/domain/experimental/reconstruction-morphology.ts @@ -1,6 +1,6 @@ import { ViewsDefinitionRegistry } from '@/entity-configuration/definitions/view-defs'; -import { EntityTypeEnum } from '@/api/entitycore/types/entity-type'; -import { ExtendedEntitiesType } from '@/api/entitycore/types/extended-entity-type'; +import { EntityTypeDict } from '@/api/entitycore/types/entity-type'; +import { ExtendedEntitiesTypeDict } from '@/api/entitycore/types/extended-entity-type'; import { EntitySlug } from '@/entity-configuration/domain/slug'; import { getReconstructionMorphologies, @@ -18,8 +18,8 @@ export const ReconstructionMorphology: EntityCoreTypeConfig< > = { group: 'experimental', title: 'Morphology', - extendedType: ExtendedEntitiesType.ReconstructionMorphology, - type: EntityTypeEnum.ReconstructionMorphology, + extendedType: ExtendedEntitiesTypeDict.ReconstructionMorphology, + type: EntityTypeDict.ReconstructionMorphology, slug: EntitySlug.ReconstructionMorphology, api: { config: { @@ -37,6 +37,6 @@ export const ReconstructionMorphology: EntityCoreTypeConfig< asset: { extension: 'application/swc', }, - viewDefinition: ViewsDefinitionRegistry[ExtendedEntitiesType.ReconstructionMorphology], + viewDefinition: ViewsDefinitionRegistry[ExtendedEntitiesTypeDict.ReconstructionMorphology], isBookmarkable: true, } as const; diff --git a/src/entity-configuration/domain/experimental/synapse-per-connection.ts b/src/entity-configuration/domain/experimental/synapse-per-connection.ts index 5948f3eaa..4a3200a2c 100644 --- a/src/entity-configuration/domain/experimental/synapse-per-connection.ts +++ b/src/entity-configuration/domain/experimental/synapse-per-connection.ts @@ -1,6 +1,6 @@ -import { EntityTypeEnum } from '@/api/entitycore/types/entity-type'; +import { EntityTypeDict } from '@/api/entitycore/types/entity-type'; import { EntitySlug } from '@/entity-configuration/domain/slug'; -import { ExtendedEntitiesType } from '@/api/entitycore/types/extended-entity-type'; +import { ExtendedEntitiesTypeDict } from '@/api/entitycore/types/extended-entity-type'; import { getExperimentalSynapsesPerConnections, getExperimentalSynapsesPerConnection, @@ -12,8 +12,8 @@ import type { EntityCoreTypeConfig } from '@/entity-configuration/domain/types'; export const SynapsePerConnection: EntityCoreTypeConfig = { group: 'experimental', title: 'Synapse per connection', - extendedType: ExtendedEntitiesType.ExperimentalSynapsePerConnection, - type: EntityTypeEnum.ExperimentalSynapsesPerConnection, + extendedType: ExtendedEntitiesTypeDict.ExperimentalSynapsesPerConnection, + type: EntityTypeDict.ExperimentalSynapsesPerConnection, slug: EntitySlug.ExperimentalSynapsesPerConnection, api: { config: { diff --git a/src/entity-configuration/domain/helpers.ts b/src/entity-configuration/domain/helpers.ts index a87e1afff..b84d75514 100644 --- a/src/entity-configuration/domain/helpers.ts +++ b/src/entity-configuration/domain/helpers.ts @@ -9,7 +9,7 @@ import type { EntityCoreTypeGroup, } from '@/entity-configuration/domain/types'; import type { EntitySlugValue } from '@/entity-configuration/domain/slug'; -import type { EntityTypeValue } from '@/api/entitycore/types'; +import type { TEntityTypeDict } from '@/api/entitycore/types'; import { EntityCoreIdentifiable } from '@/api/entitycore/types/shared/global'; export type EntityCoreExtendedType = @@ -19,7 +19,7 @@ export const getEntityByExtendedType = ({ type }: { type?: EntityCoreExtendedTyp find(EntityCoreConfiguration, { extendedType: type }); // TODO: fix type to be a list of available types in entitycore -export const getEntityByCoreType = ({ type }: { type?: EntityTypeValue }) => +export const getEntityByCoreType = ({ type }: { type?: TEntityTypeDict }) => find(EntityCoreConfiguration, { type }); export const getEntityBySlug = ({ slug }: { slug: EntitySlugValue }) => diff --git a/src/entity-configuration/domain/model/circuit.ts b/src/entity-configuration/domain/model/circuit.ts index 00bea9381..3f981674d 100644 --- a/src/entity-configuration/domain/model/circuit.ts +++ b/src/entity-configuration/domain/model/circuit.ts @@ -1,6 +1,6 @@ import { getCircuit, getCircuits } from '@/api/entitycore/queries/model/circuit'; -import { ExtendedEntitiesType } from '@/api/entitycore/types/extended-entity-type'; -import { EntityTypeEnum } from '@/api/entitycore/types/entity-type'; +import { ExtendedEntitiesTypeDict } from '@/api/entitycore/types/extended-entity-type'; +import { EntityTypeDict } from '@/api/entitycore/types/entity-type'; import { EntitySlug } from '@/entity-configuration/domain/slug'; import type { ICircuit } from '@/api/entitycore/types/entities/circuit'; @@ -9,8 +9,8 @@ import type { EntityCoreTypeConfig } from '@/entity-configuration/domain/types'; export const Circuit: EntityCoreTypeConfig = { group: 'models', title: 'Circuit', - extendedType: ExtendedEntitiesType.Circuit, - type: EntityTypeEnum.Circuit, + extendedType: ExtendedEntitiesTypeDict.Circuit, + type: EntityTypeDict.Circuit, slug: EntitySlug.Circuit, api: { config: { diff --git a/src/entity-configuration/domain/model/e-model.ts b/src/entity-configuration/domain/model/e-model.ts index 44d2361a5..7d94422d3 100644 --- a/src/entity-configuration/domain/model/e-model.ts +++ b/src/entity-configuration/domain/model/e-model.ts @@ -1,7 +1,7 @@ import { getEModel, getEModels } from '@/api/entitycore/queries/model/e-model'; import { getReconstructionMorphology } from '@/api/entitycore/queries'; -import { EntityTypeEnum } from '@/api/entitycore/types/entity-type'; -import { ExtendedEntitiesType } from '@/api/entitycore/types/extended-entity-type'; +import { EntityTypeDict } from '@/api/entitycore/types/entity-type'; +import { ExtendedEntitiesTypeDict } from '@/api/entitycore/types/extended-entity-type'; import { EntitySlug } from '@/entity-configuration/domain/slug'; import type { EntityCoreTypeConfig } from '@/entity-configuration/domain/types'; @@ -10,8 +10,8 @@ import type { IEModel } from '@/api/entitycore/types/entities/e-model'; export const Emodel: EntityCoreTypeConfig = { group: 'models', title: 'E-model', - extendedType: ExtendedEntitiesType.EModel, - type: EntityTypeEnum.Emodel, + extendedType: ExtendedEntitiesTypeDict.Emodel, + type: EntityTypeDict.Emodel, slug: EntitySlug.EModel, api: { config: { diff --git a/src/entity-configuration/domain/model/index.ts b/src/entity-configuration/domain/model/index.ts index e380977b5..f73e5730b 100644 --- a/src/entity-configuration/domain/model/index.ts +++ b/src/entity-configuration/domain/model/index.ts @@ -1,12 +1,12 @@ // TODO: this data type should be moved from this file -import { ExtendedEntitiesType } from '@/api/entitycore/types/extended-entity-type'; +import { ExtendedEntitiesTypeDict } from '@/api/entitycore/types/extended-entity-type'; export * from '@/entity-configuration/domain/model/circuit'; export const MODEL_DATATYPES = [ - ExtendedEntitiesType.EModel, - ExtendedEntitiesType.MEModel, - ExtendedEntitiesType.SingleNeuronSynaptome, + ExtendedEntitiesTypeDict.Emodel, + ExtendedEntitiesTypeDict.Memodel, + ExtendedEntitiesTypeDict.SingleNeuronSynaptome, ] as const; export enum ModelTypeNames { diff --git a/src/entity-configuration/domain/model/me-model.ts b/src/entity-configuration/domain/model/me-model.ts index 6dea67e7c..6aef7b830 100644 --- a/src/entity-configuration/domain/model/me-model.ts +++ b/src/entity-configuration/domain/model/me-model.ts @@ -1,7 +1,7 @@ import { getMEModel, getMEModels, createMEModel } from '@/api/entitycore/queries/model/me-model'; -import { EntityTypeEnum } from '@/api/entitycore/types/entity-type'; +import { EntityTypeDict } from '@/api/entitycore/types/entity-type'; import { EntitySlug } from '@/entity-configuration/domain/slug'; -import { ExtendedEntitiesType } from '@/api/entitycore/types/extended-entity-type'; +import { ExtendedEntitiesTypeDict } from '@/api/entitycore/types/extended-entity-type'; import type { EntityCoreTypeConfig } from '@/entity-configuration/domain/types'; import type { IMEModel } from '@/api/entitycore/types/entities/me-model'; @@ -9,8 +9,8 @@ import type { IMEModel } from '@/api/entitycore/types/entities/me-model'; export const MEmodel: EntityCoreTypeConfig = { group: 'models', title: 'ME-model', - extendedType: ExtendedEntitiesType.MEModel, - type: EntityTypeEnum.Memodel, + extendedType: ExtendedEntitiesTypeDict.Memodel, + type: EntityTypeDict.Memodel, slug: EntitySlug.MeModel, api: { config: { diff --git a/src/entity-configuration/domain/model/mirocircuit.ts b/src/entity-configuration/domain/model/mirocircuit.ts index 744bc4e04..a02fb4115 100644 --- a/src/entity-configuration/domain/model/mirocircuit.ts +++ b/src/entity-configuration/domain/model/mirocircuit.ts @@ -1,6 +1,6 @@ import { getCircuit, getCircuits } from '@/api/entitycore/queries/model/circuit'; -import { ExtendedEntitiesType } from '@/api/entitycore/types/extended-entity-type'; -import { EntityTypeEnum } from '@/api/entitycore/types/entity-type'; +import { ExtendedEntitiesTypeDict } from '@/api/entitycore/types/extended-entity-type'; +import { EntityTypeDict } from '@/api/entitycore/types/entity-type'; import { EntitySlug } from '@/entity-configuration/domain/slug'; import type { EntityCoreTypeConfig } from '@/entity-configuration/domain/types'; @@ -9,8 +9,8 @@ import type { ICircuit } from '@/api/entitycore/types/entities/circuit'; export const Microcircuit: EntityCoreTypeConfig = { group: 'models', title: 'Microcircuit', - extendedType: ExtendedEntitiesType.Microcircuit, - type: EntityTypeEnum.Circuit, + extendedType: ExtendedEntitiesTypeDict.Microcircuit, + type: EntityTypeDict.Circuit, slug: EntitySlug.Microcircuit, api: { config: { diff --git a/src/entity-configuration/domain/model/paired-neurons.ts b/src/entity-configuration/domain/model/paired-neurons.ts index 5d74b4788..e30b43936 100644 --- a/src/entity-configuration/domain/model/paired-neurons.ts +++ b/src/entity-configuration/domain/model/paired-neurons.ts @@ -1,6 +1,6 @@ import { getCircuit, getCircuits } from '@/api/entitycore/queries/model/circuit'; -import { ExtendedEntitiesType } from '@/api/entitycore/types/extended-entity-type'; -import { EntityTypeEnum } from '@/api/entitycore/types/entity-type'; +import { ExtendedEntitiesTypeDict } from '@/api/entitycore/types/extended-entity-type'; +import { EntityTypeDict } from '@/api/entitycore/types/entity-type'; import { EntitySlug } from '@/entity-configuration/domain/slug'; import type { EntityCoreTypeConfig } from '@/entity-configuration/domain/types'; @@ -9,8 +9,8 @@ import type { ICircuit } from '@/api/entitycore/types/entities/circuit'; export const PairedNeuronCircuit: EntityCoreTypeConfig = { group: 'models', title: 'Paired neuron', - extendedType: ExtendedEntitiesType.PairedNeuronCircuit, - type: EntityTypeEnum.Circuit, + extendedType: ExtendedEntitiesTypeDict.PairedNeuronCircuit, + type: EntityTypeDict.Circuit, slug: EntitySlug.PairedNeuronsCircuit, api: { config: { diff --git a/src/entity-configuration/domain/model/single-neuron-synaptome.ts b/src/entity-configuration/domain/model/single-neuron-synaptome.ts index 0330be7ed..f77f863c3 100644 --- a/src/entity-configuration/domain/model/single-neuron-synaptome.ts +++ b/src/entity-configuration/domain/model/single-neuron-synaptome.ts @@ -4,8 +4,8 @@ import { createSingleNeuronSynaptome, getSingleNeuronSynaptomeConfiguration, } from '@/api/entitycore/queries/model/single-neuron-synaptome'; -import { ExtendedEntitiesType } from '@/api/entitycore/types/extended-entity-type'; -import { EntityTypeEnum } from '@/api/entitycore/types/entity-type'; +import { ExtendedEntitiesTypeDict } from '@/api/entitycore/types/extended-entity-type'; +import { EntityTypeDict } from '@/api/entitycore/types/entity-type'; import { AssetLabel } from '@/api/entitycore/types/shared/global'; import { EntitySlug } from '@/entity-configuration/domain/slug'; import { getMEModel } from '@/api/entitycore/queries'; @@ -24,8 +24,8 @@ export const apiQueryExpand = { export const SingleNeuronSynaptome: EntityCoreTypeConfig = { group: 'models', title: 'Synaptome', - extendedType: ExtendedEntitiesType.SingleNeuronSynaptome, - type: EntityTypeEnum.SingleNeuronSynaptome, + extendedType: ExtendedEntitiesTypeDict.SingleNeuronSynaptome, + type: EntityTypeDict.SingleNeuronSynaptome, slug: EntitySlug.SingleNeuronSynaptome, api: { config: { diff --git a/src/entity-configuration/domain/model/small-microcircuit.ts b/src/entity-configuration/domain/model/small-microcircuit.ts index da6bd8fc1..2725dc262 100644 --- a/src/entity-configuration/domain/model/small-microcircuit.ts +++ b/src/entity-configuration/domain/model/small-microcircuit.ts @@ -1,6 +1,6 @@ import { getCircuit, getCircuits } from '@/api/entitycore/queries/model/circuit'; -import { ExtendedEntitiesType } from '@/api/entitycore/types/extended-entity-type'; -import { EntityTypeEnum } from '@/api/entitycore/types/entity-type'; +import { ExtendedEntitiesTypeDict } from '@/api/entitycore/types/extended-entity-type'; +import { EntityTypeDict } from '@/api/entitycore/types/entity-type'; import { EntitySlug } from '@/entity-configuration/domain/slug'; import type { EntityCoreTypeConfig } from '@/entity-configuration/domain/types'; @@ -9,8 +9,8 @@ import type { ICircuit } from '@/api/entitycore/types/entities/circuit'; export const SmallMicrocircuit: EntityCoreTypeConfig = { group: 'models', title: 'Small microcircuit', - extendedType: ExtendedEntitiesType.SmallMicrocircuit, - type: EntityTypeEnum.Circuit, + extendedType: ExtendedEntitiesTypeDict.SmallMicrocircuit, + type: EntityTypeDict.Circuit, slug: EntitySlug.SmallMicrocircuit, api: { config: { diff --git a/src/entity-configuration/domain/simulation/index.ts b/src/entity-configuration/domain/simulation/index.ts index b6824e2b1..a0eefbae2 100644 --- a/src/entity-configuration/domain/simulation/index.ts +++ b/src/entity-configuration/domain/simulation/index.ts @@ -1,14 +1,14 @@ // TODO: this data type should be moved from this file "/explore-section/list-views" -import { ExtendedEntitiesType } from '@/api/entitycore/types/extended-entity-type'; +import { ExtendedEntitiesTypeDict } from '@/api/entitycore/types/extended-entity-type'; export * from '@/entity-configuration/domain/simulation/single-neuron-synaptome-simulation'; export * from '@/entity-configuration/domain/simulation/single-neuron-simulation'; export * from '@/entity-configuration/domain/simulation/simulation-campaign'; export const SIMULATIONS_DATATYPES = [ - ExtendedEntitiesType.SingleNeuronSimulation, - ExtendedEntitiesType.SingleNeuronSynaptomeSimulation, - ExtendedEntitiesType.SimulationCampaign, + ExtendedEntitiesTypeDict.SingleNeuronSimulation, + ExtendedEntitiesTypeDict.SingleNeuronSynaptomeSimulation, + ExtendedEntitiesTypeDict.SimulationCampaign, ] as const; export enum SimulationTypeNames { diff --git a/src/entity-configuration/domain/simulation/paired-neurons-simulation.ts b/src/entity-configuration/domain/simulation/paired-neurons-simulation.ts index daefeb7e1..0350c6eb4 100644 --- a/src/entity-configuration/domain/simulation/paired-neurons-simulation.ts +++ b/src/entity-configuration/domain/simulation/paired-neurons-simulation.ts @@ -5,9 +5,9 @@ import { getCircuitSimulationExecutions } from '@/api/entitycore/queries/simulat import { getCircuitSimulations } from '@/api/entitycore/queries/simulation/circuit-simulation'; import { CircuitScaleDictionary } from '@/api/entitycore/types/entities/circuit'; import { getCircuits } from '@/api/entitycore/queries/model/circuit'; -import { EntityTypeEnum } from '@/api/entitycore/types/entity-type'; +import { EntityTypeDict } from '@/api/entitycore/types/entity-type'; import { AssetLabel } from '@/api/entitycore/types/shared/global'; -import { ExtendedEntitiesType } from '@/api/entitycore/types/extended-entity-type'; +import { ExtendedEntitiesTypeDict } from '@/api/entitycore/types/extended-entity-type'; import { downloadAsset } from '@/api/entitycore/queries/assets'; import { EntitySlug } from '@/entity-configuration/domain/slug'; import { getAssetElement } from '@/api/entitycore/utils'; @@ -111,7 +111,7 @@ export async function resolveSimulationByCampaignId({ const rawConfig = await downloadAsset({ entityId: campaign?.id!, - entityType: EntityTypeEnum.SimulationCampaign, + entityType: EntityTypeDict.SimulationCampaign, id: configAsset?.id, ctx: context, asRawResponse: true, @@ -128,8 +128,8 @@ export async function resolveSimulationByCampaignId({ export const PairedNeuronCircuitSimulation: EntityCoreTypeConfig = { group: 'simulations', title: 'Paired Neurons Simulation', - extendedType: ExtendedEntitiesType.PairedNeuronCircuitSimulation, - type: EntityTypeEnum.SimulationCampaign, + extendedType: ExtendedEntitiesTypeDict.PairedNeuronCircuitSimulation, + type: EntityTypeDict.SimulationCampaign, slug: EntitySlug.PairedNeuronCircuitSimulation, isBookmarkable: true, api: { diff --git a/src/entity-configuration/domain/simulation/simulation-campaign.ts b/src/entity-configuration/domain/simulation/simulation-campaign.ts index a14675e64..7929986e7 100644 --- a/src/entity-configuration/domain/simulation/simulation-campaign.ts +++ b/src/entity-configuration/domain/simulation/simulation-campaign.ts @@ -4,9 +4,9 @@ import keyBy from 'lodash/keyBy'; import { getCircuitSimulationExecutions } from '@/api/entitycore/queries/simulation/circuit-simulation-execution'; import { getCircuitSimulations } from '@/api/entitycore/queries/simulation/circuit-simulation'; import { getCircuits } from '@/api/entitycore/queries/model/circuit'; -import { EntityTypeEnum } from '@/api/entitycore/types/entity-type'; +import { EntityTypeDict } from '@/api/entitycore/types/entity-type'; import { AssetLabel } from '@/api/entitycore/types/shared/global'; -import { ExtendedEntitiesType } from '@/api/entitycore/types/extended-entity-type'; +import { ExtendedEntitiesTypeDict } from '@/api/entitycore/types/extended-entity-type'; import { downloadAsset } from '@/api/entitycore/queries/assets'; import { EntitySlug } from '@/entity-configuration/domain/slug'; import { getAssetElement } from '@/api/entitycore/utils'; @@ -104,7 +104,7 @@ export async function resolveSimulationByCampaignId({ const rawConfig = await downloadAsset({ entityId: campaign?.id!, - entityType: EntityTypeEnum.SimulationCampaign, + entityType: EntityTypeDict.SimulationCampaign, id: configAsset?.id, ctx: context, asRawResponse: true, @@ -121,8 +121,8 @@ export async function resolveSimulationByCampaignId({ export const SimulationCampaign: EntityCoreTypeConfig = { group: 'simulations', title: 'Simulation Campaign', - extendedType: ExtendedEntitiesType.SimulationCampaign, - type: EntityTypeEnum.SimulationCampaign, + extendedType: ExtendedEntitiesTypeDict.SimulationCampaign, + type: EntityTypeDict.SimulationCampaign, slug: EntitySlug.SimulationCampaign, isBookmarkable: true, api: { diff --git a/src/entity-configuration/domain/simulation/single-neuron-simulation.ts b/src/entity-configuration/domain/simulation/single-neuron-simulation.ts index 27dd68e3a..7764b9d78 100644 --- a/src/entity-configuration/domain/simulation/single-neuron-simulation.ts +++ b/src/entity-configuration/domain/simulation/single-neuron-simulation.ts @@ -1,5 +1,5 @@ -import { ExtendedEntitiesType } from '@/api/entitycore/types/extended-entity-type'; -import { EntityTypeEnum } from '@/api/entitycore/types/entity-type'; +import { ExtendedEntitiesTypeDict } from '@/api/entitycore/types/extended-entity-type'; +import { EntityTypeDict } from '@/api/entitycore/types/entity-type'; import { AssetLabel } from '@/api/entitycore/types/shared/global'; import { EntitySlug } from '@/entity-configuration/domain/slug'; import { @@ -35,8 +35,8 @@ export async function resolveSingleNeuronSimulation( export const SingleNeuronSimulation: EntityCoreTypeConfig = { group: 'simulations', title: 'Single Neuron Simulation', - extendedType: ExtendedEntitiesType.SingleNeuronSimulation, - type: EntityTypeEnum.SingleNeuronSimulation, + extendedType: ExtendedEntitiesTypeDict.SingleNeuronSimulation, + type: EntityTypeDict.SingleNeuronSimulation, slug: EntitySlug.SingleNeuronSimulation, isBookmarkable: true, api: { diff --git a/src/entity-configuration/domain/simulation/single-neuron-synaptome-simulation.ts b/src/entity-configuration/domain/simulation/single-neuron-synaptome-simulation.ts index 901069a01..17ba3ffd6 100644 --- a/src/entity-configuration/domain/simulation/single-neuron-synaptome-simulation.ts +++ b/src/entity-configuration/domain/simulation/single-neuron-synaptome-simulation.ts @@ -5,8 +5,8 @@ import { getSingleNeuronSynaptomeSimulations, } from '@/api/entitycore/queries/simulation/single-neuron-synaptome-simulation'; import { getSingleNeuronSynaptome } from '@/api/entitycore/queries/model/single-neuron-synaptome'; -import { EntityTypeEnum } from '@/api/entitycore/types/entity-type'; -import { ExtendedEntitiesType } from '@/api/entitycore/types/extended-entity-type'; +import { EntityTypeDict } from '@/api/entitycore/types/entity-type'; +import { ExtendedEntitiesTypeDict } from '@/api/entitycore/types/extended-entity-type'; import { AssetLabel } from '@/api/entitycore/types/shared/global'; import { EntitySlug } from '@/entity-configuration/domain/slug'; import { getMEModel } from '@/api/entitycore/queries/model/me-model'; @@ -49,8 +49,8 @@ export const SingleNeuronSynaptomeSimulation: EntityCoreTypeConfig = { group: 'simulations', title: 'Small microcircuit Simulation', - extendedType: ExtendedEntitiesType.SmallMicrocircuitSimulation, - type: EntityTypeEnum.SimulationCampaign, + extendedType: ExtendedEntitiesTypeDict.SmallMicrocircuitSimulation, + type: EntityTypeDict.SimulationCampaign, slug: EntitySlug.SmallMicrocircuitSimulation, isBookmarkable: true, api: { diff --git a/src/entity-configuration/domain/types.ts b/src/entity-configuration/domain/types.ts index b1e0e7a0e..42db37217 100644 --- a/src/entity-configuration/domain/types.ts +++ b/src/entity-configuration/domain/types.ts @@ -1,16 +1,16 @@ import type { ViewDefinitionConfig } from '@/entity-configuration/definitions/view-defs/types'; import type { AssetLabel, EntityCoreIdentifiable } from '@/api/entitycore/types/shared/global'; +import type { TExtendedEntitiesTypeDict } from '@/api/entitycore/types/extended-entity-type'; import type { EntityCoreResponse } from '@/api/entitycore/types/shared/response'; import type { EntitySlugValue } from '@/entity-configuration/domain/slug'; -import type { ExtendedEntitiesType } from '@/api/entitycore/types/extended-entity-type'; -import type { EntityTypeValue } from '@/api/entitycore/types'; +import type { TEntityTypeDict } from '@/api/entitycore/types'; import type { WorkspaceContext } from '@/types/common'; export type EntityCoreTypeGroup = 'experimental' | 'models' | 'simulations'; export type EntityCoreTypeConfig = { group: EntityCoreTypeGroup; - extendedType: ExtendedEntitiesType; - type: EntityTypeValue; + extendedType: TExtendedEntitiesTypeDict; + type: TEntityTypeDict; slug: EntitySlugValue; title: string; api: { diff --git a/src/features/activity-view/types.ts b/src/features/activity-view/types.ts index dc29adc5b..8157fb9b2 100644 --- a/src/features/activity-view/types.ts +++ b/src/features/activity-view/types.ts @@ -8,7 +8,7 @@ import { } from '@/entity-configuration/domain/simulation'; import { SingleNeuronSimulationStatus } from '@/api/entitycore/types/shared/neuron-simulation'; -import type { EntityTypeValue } from '@/api/entitycore/types'; +import type { TEntityTypeDict } from '@/api/entitycore/types'; export type Status = | 'initialized' @@ -47,7 +47,7 @@ export const ActivityEntityTypes = { } as const; export type AllowedEntityTypes = Extract< - EntityTypeValue, + TEntityTypeDict, | 'single_neuron_synaptome_simulation' | 'single_neuron_synaptome' | 'memodel' diff --git a/src/features/bookmark/control.tsx b/src/features/bookmark/control.tsx index c3efb8312..a3e160c4e 100644 --- a/src/features/bookmark/control.tsx +++ b/src/features/bookmark/control.tsx @@ -26,7 +26,7 @@ import { serverMessages } from '@/i18n/en/bookmark'; import { classNames } from '@/util/utils'; import { tryCatch } from '@/api/utils'; -import type { EntityTypeValue } from '@/api/entitycore/types'; +import type { TEntityTypeDict } from '@/api/entitycore/types'; import type { ErrorCause } from '@/api/apiClient'; type Props = { @@ -34,7 +34,7 @@ type Props = { projectId: string; entityId: string; resourceId?: string; - type: EntityTypeValue; + type: TEntityTypeDict; customButton?: (props: HTMLProps & { loading?: boolean }) => ReactNode; }; diff --git a/src/features/bookmark/footer.tsx b/src/features/bookmark/footer.tsx index d1666d305..2c7e323d6 100644 --- a/src/features/bookmark/footer.tsx +++ b/src/features/bookmark/footer.tsx @@ -10,13 +10,13 @@ import { tryCatch } from '@/api/utils'; import type { EntityCoreIdentifiable } from '@/api/entitycore/types/shared/global'; import type { LibraryBookmark } from '@/api/virtual-lab-svc/queries/types'; -import type { ExtendedEntitiesType } from '@/api/entitycore/types/extended-entity-type'; +import type { TExtendedEntitiesTypeDict } from '@/api/entitycore/types/extended-entity-type'; type Props = { selectedRows: Array; virtualLabId: string; projectId: string; - category: ExtendedEntitiesType; + category: TExtendedEntitiesTypeDict; // @FIXME: Is that property used? // eslint-disable-next-line react/no-unused-prop-types dataKey: string; diff --git a/src/features/bookmark/helpers.ts b/src/features/bookmark/helpers.ts index 67530af67..2511b7b00 100644 --- a/src/features/bookmark/helpers.ts +++ b/src/features/bookmark/helpers.ts @@ -14,8 +14,8 @@ import { getViewDefinitionsByLegacyType } from '@/entity-configuration/definitio import { EXPERIMENTAL_DATATYPES } from '@/entity-configuration/domain/experimental'; import { SIMULATIONS_DATATYPES } from '@/entity-configuration/domain/simulation'; import { MODEL_DATATYPES } from '@/entity-configuration/domain/model'; -import { ExtendedEntitiesType } from '@/api/entitycore/types/extended-entity-type'; +import type { TExtendedEntitiesTypeDict } from '@/api/entitycore/types/extended-entity-type'; import type { EntityCoreTypeGroup } from '@/entity-configuration/domain/types'; import type { LibraryBookmark } from '@/api/virtual-lab-svc/queries/types'; @@ -35,7 +35,7 @@ export type GroupedLibraryBookmarks = { simulations?: SimulationDataMap; }; -const getCategory = (key: ExtendedEntitiesType): string => { +const getCategory = (key: TExtendedEntitiesTypeDict): string => { if (EXPERIMENTAL_DATATYPES.includes(key as (typeof EXPERIMENTAL_DATATYPES)[number])) return 'experimental'; if (MODEL_DATATYPES.includes(key as (typeof MODEL_DATATYPES)[number])) return 'models'; @@ -45,13 +45,16 @@ const getCategory = (key: ExtendedEntitiesType): string => { }; export const groupBookmarksByCategory = ( - data?: Record | null -): { data: Record | null; list: GroupedLibraryBookmarks | null } => { + data?: Record | null +): { + data: Record | null; + list: GroupedLibraryBookmarks | null; +} => { if (isNil(data) || isEmpty(data)) return { data: null, list: null }; const entries = Object.entries(data).map(([key, value]) => ({ key, value, - category: getCategory(key as ExtendedEntitiesType), + category: getCategory(key as TExtendedEntitiesTypeDict), })); const grouped = groupBy(entries, 'category'); @@ -79,7 +82,7 @@ export function getAvailableTabs( const tabs = map(picked, (item, key) => { return { - key: getEntityByExtendedType({ type: key as ExtendedEntitiesType })?.slug, + key: getEntityByExtendedType({ type: key as TExtendedEntitiesTypeDict })?.slug, label: item!.title, name: item!.name, }; @@ -91,7 +94,7 @@ export function getAvailableTabs( compact( Object.keys(categories).map( (legacyType) => - getEntityByExtendedType({ type: legacyType as ExtendedEntitiesType })?.slug + getEntityByExtendedType({ type: legacyType as TExtendedEntitiesTypeDict })?.slug ) ), ]) diff --git a/src/features/bookmark/listing-table.tsx b/src/features/bookmark/listing-table.tsx index 24fdb319a..9b076ebc7 100644 --- a/src/features/bookmark/listing-table.tsx +++ b/src/features/bookmark/listing-table.tsx @@ -18,11 +18,11 @@ import { resolveExploreDetailsPageUrl } from '@/utils/url-builder'; import { PAGE_NUMBER } from '@/api/entitycore/types/extended-entity-type'; import type { EntityCoreIdentifiable } from '@/api/entitycore/types/shared/global'; -import type { ExtendedEntitiesType } from '@/api/entitycore/types/extended-entity-type'; +import type { TExtendedEntitiesTypeDict } from '@/api/entitycore/types/extended-entity-type'; import type { WorkspaceContext } from '@/types/common'; interface Props extends WorkspaceContext { - dataType: ExtendedEntitiesType; + dataType: TExtendedEntitiesTypeDict; dataKey: string; } diff --git a/src/features/bookmark/view.tsx b/src/features/bookmark/view.tsx index 0a48625d8..ff0d85afc 100644 --- a/src/features/bookmark/view.tsx +++ b/src/features/bookmark/view.tsx @@ -23,7 +23,7 @@ import type { EntityCoreIdentifiable } from '@/api/entitycore/types/shared/globa import type { EntityCoreTypeGroup } from '@/entity-configuration/domain/types'; import type { LibraryBookmark } from '@/api/virtual-lab-svc/queries/types'; import type { EntitySlugValue } from '@/entity-configuration/domain/slug'; -import type { ExtendedEntitiesType } from '@/api/entitycore/types/extended-entity-type'; +import type { TExtendedEntitiesTypeDict } from '@/api/entitycore/types/extended-entity-type'; import type { GroupedLibraryBookmarks } from '@/features/bookmark/helpers'; import type { WorkspaceContext } from '@/types/common'; @@ -132,7 +132,7 @@ export default function BookmarksView({ key={dataKey} virtualLabId={virtualLabId} projectId={projectId} - dataType={entity?.extendedType as ExtendedEntitiesType} + dataType={entity?.extendedType as TExtendedEntitiesTypeDict} dataKey={dataKey} /> diff --git a/src/features/brain-atlas-viewer/context.tsx b/src/features/brain-atlas-viewer/context.tsx index 5fc56184c..a72fe0dfc 100644 --- a/src/features/brain-atlas-viewer/context.tsx +++ b/src/features/brain-atlas-viewer/context.tsx @@ -11,7 +11,7 @@ import { import { arrayBufferToString } from '@/utils/buffer'; import { tryCatch } from '@/api/utils'; import { env } from '@/env'; -import { EntityTypeEnum } from '@/api/entitycore/types'; +import { EntityTypeDict } from '@/api/entitycore/types'; const defaultAtlasName = 'BlueBrain Atlas'; export const brainAtlasAtom = atom(async () => { @@ -45,7 +45,7 @@ async function resolveBrainRegionAtlasMesh({ const { data: asset, error: assetError } = await tryCatch( downloadAsset({ asRawResponse: false, - entityType: EntityTypeEnum.BrainAtlasRegion, + entityType: EntityTypeDict.BrainAtlasRegion, entityId: atlasRegions.id, id: atlasAssetId, } as const) diff --git a/src/features/cell-composition/context.ts b/src/features/cell-composition/context.ts index c1e9a88ac..632fa47fb 100644 --- a/src/features/cell-composition/context.ts +++ b/src/features/cell-composition/context.ts @@ -19,7 +19,7 @@ import { log } from '@/utils/logger'; import type { ICellCompositionRoot } from '@/api/entitycore/types/entities/cell-composition'; import type { WorkspaceContext } from '@/types/common'; import type { IAnnotation } from '@/api/entitycore/types/shared/global'; -import { EntityTypeEnum } from '@/api/entitycore/types'; +import { EntityTypeDict } from '@/api/entitycore/types'; const defaultCellCompositionName = 'Cell Composition from Blue Brain Atlas'; @@ -44,7 +44,7 @@ const cellCompositionSummaryAtom = atom(async (): Promise const { data: cellCompositionSummary, error: assetError } = await tryCatch( downloadAsset({ - entityType: EntityTypeEnum.CellComposition, + entityType: EntityTypeDict.CellComposition, entityId: cellComposition.data.at(0)?.id!, id: summaryAsset.id, }) diff --git a/src/features/details-view/summary.tsx b/src/features/details-view/summary.tsx index 7f7f25da8..56ab8024b 100644 --- a/src/features/details-view/summary.tsx +++ b/src/features/details-view/summary.tsx @@ -7,9 +7,13 @@ import CentralLoadingSpinner from '@/components/CentralLoadingSpinner'; import Overview from '@/features/details-view/overview'; import usePathname from '@/hooks/pathname'; +import { + ExtendedEntitiesTypeDict, + type TExtendedEntitiesTypeDict, +} from '@/api/entitycore/types/extended-entity-type'; import { CommonSummaryViewFields, - getViewDefinitionByLegacyType, + getViewDefinitionByExtendedType, } from '@/entity-configuration/definitions/view-defs'; import { DetailsPageSideBackLink } from '@/components/explore-section/Sidebar'; import { @@ -18,13 +22,12 @@ import { } from '@/state/explore-section/detail-view-atoms'; import { ErrorLink, withErrorConfig } from '@/components/GenericErrorFallback'; import { resolveExploreDetailsPageUrl } from '@/utils/url-builder'; -import { ExtendedEntitiesType } from '@/api/entitycore/types/extended-entity-type'; import { conditionalAtom } from '@/hooks/use-conditional-atom'; +import { downloadArchive } from '@/services/entity-download'; import type { TypeSummaryProps } from '@/entity-configuration/definitions/view-defs/types'; import type { EntityCoreIdentifiableNamed } from '@/api/entitycore/types/shared/global'; import type { DetailViewUrlParams } from '@/types/explore-section/application'; -import { downloadArchive } from '@/services/entity-download'; export default function Summary({ payload, @@ -38,12 +41,12 @@ export default function Summary({ showViewMode?: boolean; commonFields?: Array; extraHeaderAction?: ReactNode; - dataType: ExtendedEntitiesType; + dataType: TExtendedEntitiesTypeDict; children?: (detail: T) => ReactNode; }) { const { id, virtualLabId, projectId, ...params } = useParams(); const setBrainRegionSidebarIsCollapsed = useSetAtom(brainRegionSidebarIsCollapsedAtom); - const fields = getViewDefinitionByLegacyType(dataType)?.summaryViewFields; + const fields = getViewDefinitionByExtendedType(dataType)?.summaryViewFields; const path = usePathname(); @@ -80,7 +83,7 @@ export default function Summary({ title="Back to entities list" href={resolveExploreDetailsPageUrl({ ctx: { virtualLabId, projectId }, - dataType: ExtendedEntitiesType.MEModel, + dataType: ExtendedEntitiesTypeDict.Memodel, })} /> diff --git a/src/features/entities/e-model/detail-view/index.tsx b/src/features/entities/e-model/detail-view/index.tsx index e1bf265d9..ddd3d0738 100644 --- a/src/features/entities/e-model/detail-view/index.tsx +++ b/src/features/entities/e-model/detail-view/index.tsx @@ -10,7 +10,7 @@ import Analysis from '@/features/model-analysis/explorer'; import Summary from '@/features/details-view/summary'; import If from '@/components/ConditionalRenderer/If'; -import { ExtendedEntitiesType } from '@/api/entitycore/types/extended-entity-type'; +import { ExtendedEntitiesTypeDict } from '@/api/entitycore/types/extended-entity-type'; import type { IReconstructionMorphology, IEModel } from '@/api/entitycore/types'; import type { WorkspaceContext } from '@/types/common'; @@ -37,7 +37,7 @@ export default function EModelDetailView({ payload, params }: Props) { return ( }> - + {() => ( <> diff --git a/src/features/entities/e-model/listing-view.tsx b/src/features/entities/e-model/listing-view.tsx index 80eccca38..531bfac88 100644 --- a/src/features/entities/e-model/listing-view.tsx +++ b/src/features/entities/e-model/listing-view.tsx @@ -4,13 +4,13 @@ import dynamic from 'next/dynamic'; import { getEntityByExtendedType } from '@/entity-configuration/domain/helpers'; import { ExploreDataScope } from '@/types/explore-section/application'; -import { ExtendedEntitiesType } from '@/api/entitycore/types/extended-entity-type'; import { VirtualLabInfo } from '@/types/virtual-lab/common'; import { resolveDataKey } from '@/utils/key-builder'; import { detailUrlBuilder } from '@/util/common'; import type { Props as ExploreSectionListingViewProps } from '@/components/explore-section/ExploreSectionListingView'; import type { RenderButtonProps } from '@/components/explore-section/ExploreSectionListingView/useRowSelection'; +import type { TExtendedEntitiesTypeDict } from '@/api/entitycore/types/extended-entity-type'; import type { IEModel } from '@/api/entitycore/types/entities/e-model'; const ExploreSectionListingView = dynamic( @@ -26,7 +26,7 @@ export default function ListingView({ renderButton, virtualLabInfo, }: { - dataType: ExtendedEntitiesType; + dataType: TExtendedEntitiesTypeDict; dataScope: ExploreDataScope; virtualLabInfo?: VirtualLabInfo; renderButton?: (props: RenderButtonProps) => ReactNode; diff --git a/src/features/entities/me-model/detail-view/card-viewers/emodel-overview-card.tsx b/src/features/entities/me-model/detail-view/card-viewers/emodel-overview-card.tsx index 987b70614..f1719fc43 100644 --- a/src/features/entities/me-model/detail-view/card-viewers/emodel-overview-card.tsx +++ b/src/features/entities/me-model/detail-view/card-viewers/emodel-overview-card.tsx @@ -10,7 +10,7 @@ import { renderPreview, } from '@/entity-configuration/definitions/renderer'; import { resolveExploreDetailsPageUrl } from '@/utils/url-builder'; -import { ExtendedEntitiesType } from '@/api/entitycore/types/extended-entity-type'; +import { ExtendedEntitiesTypeDict } from '@/api/entitycore/types/extended-entity-type'; import { classNames } from '@/util/utils'; import type { IEModel } from '@/api/entitycore/types/entities/e-model'; @@ -41,7 +41,7 @@ function EModelOverviewCard({ mode = 'summary', data, reselectLink = false }: Pr if (data) { const exploreUrl = resolveExploreDetailsPageUrl({ ctx: { ...(params ?? {}) }, - dataType: ExtendedEntitiesType.EModel, + dataType: ExtendedEntitiesTypeDict.Emodel, entityId: data.id, }); diff --git a/src/features/entities/me-model/detail-view/card-viewers/morphology-overview-card.tsx b/src/features/entities/me-model/detail-view/card-viewers/morphology-overview-card.tsx index 7b40dda58..43bd6209f 100644 --- a/src/features/entities/me-model/detail-view/card-viewers/morphology-overview-card.tsx +++ b/src/features/entities/me-model/detail-view/card-viewers/morphology-overview-card.tsx @@ -11,7 +11,7 @@ import { renderPreview, } from '@/entity-configuration/definitions/renderer'; import { resolveExploreDetailsPageUrl } from '@/utils/url-builder'; -import { ExtendedEntitiesType } from '@/api/entitycore/types/extended-entity-type'; +import { ExtendedEntitiesTypeDict } from '@/api/entitycore/types/extended-entity-type'; import { classNames } from '@/util/utils'; import type { IReconstructionMorphology } from '@/api/entitycore/types/entities/reconstruction-morphology'; @@ -55,7 +55,7 @@ function MorphologyOverviewCard({ mode = 'summary', data, reselectLink = false } const exploreUrl = resolveExploreDetailsPageUrl({ ctx: { ...(params ?? {}) }, - dataType: ExtendedEntitiesType.ReconstructionMorphology, + dataType: ExtendedEntitiesTypeDict.ReconstructionMorphology, entityId: data.id, }); diff --git a/src/features/entities/me-model/detail-view/index.tsx b/src/features/entities/me-model/detail-view/index.tsx index 8edb2967c..114a0dc64 100644 --- a/src/features/entities/me-model/detail-view/index.tsx +++ b/src/features/entities/me-model/detail-view/index.tsx @@ -16,9 +16,9 @@ import If from '@/components/ConditionalRenderer/If'; import { useClearClientStorageCacheByKey } from '@/features/model-analysis/viewer/storage'; import { EntityCoreFields } from '@/entity-configuration/definitions/fields-defs/enums'; import { EntitySlug } from '@/entity-configuration/domain/slug'; -import { ExtendedEntitiesType } from '@/api/entitycore/types/extended-entity-type'; +import { ExtendedEntitiesTypeDict } from '@/api/entitycore/types/extended-entity-type'; import { resolveExperimentUrl } from '@/utils/url-builder'; -import { EntityTypeEnum } from '@/api/entitycore/types'; +import { EntityTypeDict } from '@/api/entitycore/types'; import type { TypeSummaryProps } from '@/entity-configuration/definitions/view-defs/types'; import type { IMEModel } from '@/api/entitycore/types/entities/me-model'; @@ -60,7 +60,7 @@ export default function SummaryView({ showViewMode = false, payload: { source } }> diff --git a/src/features/entities/me-model/detail-view/simulation.tsx b/src/features/entities/me-model/detail-view/simulation.tsx index a5f858c28..719bf9c17 100644 --- a/src/features/entities/me-model/detail-view/simulation.tsx +++ b/src/features/entities/me-model/detail-view/simulation.tsx @@ -7,7 +7,7 @@ import { Spin } from 'antd'; import SimulationDetail from '@/features/entities/neuron-simulation/simulation-results/simulation-details'; import { withErrorConfig } from '@/components/GenericErrorFallback'; import { getSingleNeuronSimulations } from '@/api/entitycore/queries'; -import { EntityTypeEnum } from '@/api/entitycore/types'; +import { EntityTypeDict } from '@/api/entitycore/types'; import { tryCatch } from '@/api/utils'; import type { EntitySlugValue } from '@/entity-configuration/domain/slug'; @@ -95,7 +95,7 @@ export default function Results({ modelId }: Props) { > index={indx} - type={EntityTypeEnum.SingleNeuronSimulation} + type={EntityTypeDict.SingleNeuronSimulation} simulation={sim} /> diff --git a/src/features/entities/neuron-simulation/elements/me-model-details.tsx b/src/features/entities/neuron-simulation/elements/me-model-details.tsx index 2ed42272f..4d34a9a1e 100644 --- a/src/features/entities/neuron-simulation/elements/me-model-details.tsx +++ b/src/features/entities/neuron-simulation/elements/me-model-details.tsx @@ -5,7 +5,7 @@ import PreviewThumbnail from '@/features/thumbnail/preview'; import { renderArray, renderEmptyOrValue } from '@/entity-configuration/definitions/renderer'; import { Field } from '@/features/entities/neuron-simulation/elements/field'; import { resolveExploreDetailsPageUrl } from '@/utils/url-builder'; -import { ExtendedEntitiesType } from '@/api/entitycore/types/extended-entity-type'; +import { ExtendedEntitiesTypeDict } from '@/api/entitycore/types/extended-entity-type'; import type { IMEModel } from '@/api/entitycore/types'; @@ -23,7 +23,7 @@ export default function ModelDetails({ virtualLabId, projectId, meModel }: Props = { index: number; - type: EntityTypeEnum; + type: TEntityTypeDict; simulation: T; children?: ({ config }: { config: SingleNeuronModelSimulationConfig }) => ReactNode; }; diff --git a/src/features/entities/single-neuron-synaptome/build/elements/synapse-config-form.tsx b/src/features/entities/single-neuron-synaptome/build/elements/synapse-config-form.tsx index 67814ad33..ecb467da7 100644 --- a/src/features/entities/single-neuron-synaptome/build/elements/synapse-config-form.tsx +++ b/src/features/entities/single-neuron-synaptome/build/elements/synapse-config-form.tsx @@ -18,7 +18,7 @@ import { SIMULATION_COLORS } from '@/constants/simulate/single-neuron'; import { activityAtomFamily } from '@/features/activity-view/context'; import { resolveExploreDetailsPageUrl } from '@/utils/url-builder'; import { createJsonAsset } from '@/api/entitycore/queries/assets'; -import { ExtendedEntitiesType } from '@/api/entitycore/types/extended-entity-type'; +import { ExtendedEntitiesTypeDict } from '@/api/entitycore/types/extended-entity-type'; import { classNames, getRandomIntInclusive } from '@/util/utils'; import { selectedSimulationScopeAtom } from '@/state/simulate'; import { @@ -235,7 +235,7 @@ export default function SynaptomeConfigurationForm({ ); const url = resolveExploreDetailsPageUrl({ ctx: { virtualLabId, projectId }, - dataType: ExtendedEntitiesType.SingleNeuronSynaptome, + dataType: ExtendedEntitiesTypeDict.SingleNeuronSynaptome, entityId: result?.entity.id, }); diff --git a/src/features/entities/single-neuron-synaptome/build/phases/me-model-listing.tsx b/src/features/entities/single-neuron-synaptome/build/phases/me-model-listing.tsx index 0dd7ba449..d84a810ef 100644 --- a/src/features/entities/single-neuron-synaptome/build/phases/me-model-listing.tsx +++ b/src/features/entities/single-neuron-synaptome/build/phases/me-model-listing.tsx @@ -13,7 +13,7 @@ import useRowSelection from '@/components/explore-section/ExploreSectionListingV import { ExploreDataScope } from '@/types/explore-section/application'; import { resolveExploreDetailsPageUrl } from '@/utils/url-builder'; -import { ExtendedEntitiesType } from '@/api/entitycore/types/extended-entity-type'; +import { ExtendedEntitiesTypeDict } from '@/api/entitycore/types/extended-entity-type'; import { classNames } from '@/util/utils'; import type { Props as ExploreSectionListingViewProps } from '@/components/explore-section/ExploreSectionListingView'; @@ -73,7 +73,7 @@ export default function MeModelsListingView({ virtualLabId, projectId, stateId } navigate( resolveExploreDetailsPageUrl({ ctx: { virtualLabId, projectId }, - dataType: ExtendedEntitiesType.MEModel, + dataType: ExtendedEntitiesTypeDict.Memodel, entityId: record.id, }) ); @@ -104,7 +104,7 @@ export default function MeModelsListingView({ virtualLabId, projectId, stateId } diff --git a/src/features/entities/single-neuron-synaptome/detail-view/simulation.tsx b/src/features/entities/single-neuron-synaptome/detail-view/simulation.tsx index aa5c3444c..6c4cbd651 100644 --- a/src/features/entities/single-neuron-synaptome/detail-view/simulation.tsx +++ b/src/features/entities/single-neuron-synaptome/detail-view/simulation.tsx @@ -9,7 +9,7 @@ import ConfigItem from '@/features/entities/single-neuron-synaptome/build/elemen import { getSingleNeuronSynaptomeSimulations } from '@/api/entitycore/queries'; import { withErrorConfig } from '@/components/GenericErrorFallback'; -import { EntityTypeEnum } from '@/api/entitycore/types'; +import { EntityTypeDict } from '@/api/entitycore/types'; import { tryCatch } from '@/api/utils'; import type { ISingleNeuronSynaptomeSimulation } from '@/api/entitycore/types'; @@ -93,7 +93,7 @@ export default function Results({ modelId }: Props) { key={sim.id} > - type={EntityTypeEnum.SingleNeuronSynaptomeSimulation} + type={EntityTypeDict.SingleNeuronSynaptomeSimulation} simulation={sim} index={indx} > diff --git a/src/features/entity-download/download-stream.ts b/src/features/entity-download/download-stream.ts index dcc49e059..334b0444b 100644 --- a/src/features/entity-download/download-stream.ts +++ b/src/features/entity-download/download-stream.ts @@ -4,11 +4,11 @@ import { promisify } from 'util'; import tar from 'tar-stream'; import { getEntityFilesHandlerMap } from '@/features/entity-download/file-handlers'; -import { EntityTypeValue } from '@/api/entitycore/types'; +import { TEntityTypeDict } from '@/api/entitycore/types'; type CreateDownloadStreamParams = { entityIds: string[]; - entityType: EntityTypeValue; + entityType: TEntityTypeDict; projectId?: string | null; virtualLabId?: string | null; }; @@ -17,7 +17,7 @@ type CreateDownloadStreamParams = { * Creates a download stream for a specific entity type with associated files. * * @param {CreateDownloadStreamParams} params - Parameters for creating the download stream - * @param {EntityTypeValue} params.entityType - The type of entity being downloaded + * @param {TEntityTypeDict} params.entityType - The type of entity being downloaded * @param {string} params.virtualLabId - The ID of the virtual lab * @param {string} params.projectId - The ID of the project * @param {string[]} params.entityIds - The IDs of the entities to download diff --git a/src/features/entity-download/file-handlers.ts b/src/features/entity-download/file-handlers.ts index 360e05079..85ae4be79 100644 --- a/src/features/entity-download/file-handlers.ts +++ b/src/features/entity-download/file-handlers.ts @@ -9,7 +9,7 @@ import { getReconstructionMorphology, } from '@/api/entitycore/queries'; import { getSingleNeuronSynaptome } from '@/api/entitycore/queries/model/single-neuron-synaptome'; -import { EntityTypeEnum, EntityTypeValue } from '@/api/entitycore/types'; +import { EntityTypeDict, TEntityTypeDict } from '@/api/entitycore/types'; import { Metadata } from '@/features/entity-download/metadata'; import { FileEntry } from '@/features/entity-download/types'; import { createAssetFileEntry, createTemplateFileEntry } from '@/features/entity-download/utils'; @@ -29,7 +29,7 @@ async function* getReconstructionMorphologyFiles(entityIds: string[], ctx?: Work const metadata = new Metadata(); try { - yield await createTemplateFileEntry(EntityTypeEnum.ReconstructionMorphology); + yield await createTemplateFileEntry(EntityTypeDict.ReconstructionMorphology); } catch {} for (const entityId of entityIds) { @@ -60,7 +60,7 @@ async function* getElectricalCellRecordingFiles(entityIds: string[], ctx?: Works const metadata = new Metadata(); try { - yield await createTemplateFileEntry(EntityTypeEnum.ElectricalCellRecording); + yield await createTemplateFileEntry(EntityTypeDict.ElectricalCellRecording); } catch {} for (const entityId of entityIds) { @@ -91,7 +91,7 @@ async function* getExperimentalNeuronDensityFiles(entityIds: string[], ctx?: Wor const metadata = new Metadata(); try { - yield await createTemplateFileEntry(EntityTypeEnum.ExperimentalNeuronDensity); + yield await createTemplateFileEntry(EntityTypeDict.ExperimentalNeuronDensity); } catch {} for (const entityId of entityIds) { @@ -109,7 +109,7 @@ async function* getExperimentalBoutonDensityFiles(entityIds: string[], ctx?: Wor const metadata = new Metadata(); try { - yield await createTemplateFileEntry(EntityTypeEnum.ExperimentalBoutonDensity); + yield await createTemplateFileEntry(EntityTypeDict.ExperimentalBoutonDensity); } catch {} for (const entityId of entityIds) { @@ -130,7 +130,7 @@ async function* getExperimentalSynapsesPerConnectionFiles( const metadata = new Metadata(); try { - yield await createTemplateFileEntry(EntityTypeEnum.ExperimentalSynapsesPerConnection); + yield await createTemplateFileEntry(EntityTypeDict.ExperimentalSynapsesPerConnection); } catch {} for (const entityId of entityIds) { @@ -152,7 +152,7 @@ async function* getEmodelFiles(entityIds: string[], ctx?: WorkspaceContext) { const metadata = new Metadata(); try { - yield await createTemplateFileEntry(EntityTypeEnum.Emodel); + yield await createTemplateFileEntry(EntityTypeDict.Emodel); } catch {} for (const entityId of entityIds) { @@ -206,7 +206,7 @@ async function* getMEmodelFiles(entityIds: string[], ctx?: WorkspaceContext) { const metadata = new Metadata(); try { - yield await createTemplateFileEntry(EntityTypeEnum.Memodel); + yield await createTemplateFileEntry(EntityTypeDict.Memodel); } catch {} for (const entityId of entityIds) { @@ -264,7 +264,7 @@ async function* getSingleNeuronSynaptomeFiles(entityIds: string[], ctx?: Workspa const metadata = new Metadata(); try { - yield await createTemplateFileEntry(EntityTypeEnum.SingleNeuronSynaptome); + yield await createTemplateFileEntry(EntityTypeDict.SingleNeuronSynaptome); } catch {} // TODO: add emodel assets when supported by the API @@ -339,15 +339,15 @@ async function* getSingleNeuronSynaptomeFiles(entityIds: string[], ctx?: Workspa } } -export const getEntityFilesHandlerMap: Partial> = { +export const getEntityFilesHandlerMap: Partial> = { // Experimental data - [EntityTypeEnum.ReconstructionMorphology]: getReconstructionMorphologyFiles, - [EntityTypeEnum.ElectricalCellRecording]: getElectricalCellRecordingFiles, - [EntityTypeEnum.ExperimentalNeuronDensity]: getExperimentalNeuronDensityFiles, - [EntityTypeEnum.ExperimentalBoutonDensity]: getExperimentalBoutonDensityFiles, - [EntityTypeEnum.ExperimentalSynapsesPerConnection]: getExperimentalSynapsesPerConnectionFiles, + [EntityTypeDict.ReconstructionMorphology]: getReconstructionMorphologyFiles, + [EntityTypeDict.ElectricalCellRecording]: getElectricalCellRecordingFiles, + [EntityTypeDict.ExperimentalNeuronDensity]: getExperimentalNeuronDensityFiles, + [EntityTypeDict.ExperimentalBoutonDensity]: getExperimentalBoutonDensityFiles, + [EntityTypeDict.ExperimentalSynapsesPerConnection]: getExperimentalSynapsesPerConnectionFiles, // Model data - [EntityTypeEnum.Emodel]: getEmodelFiles, - [EntityTypeEnum.Memodel]: getMEmodelFiles, - [EntityTypeEnum.SingleNeuronSynaptome]: getSingleNeuronSynaptomeFiles, + [EntityTypeDict.Emodel]: getEmodelFiles, + [EntityTypeDict.Memodel]: getMEmodelFiles, + [EntityTypeDict.SingleNeuronSynaptome]: getSingleNeuronSynaptomeFiles, }; diff --git a/src/features/entity-download/ticket-store.ts b/src/features/entity-download/ticket-store.ts index a8d9480e8..8d2164099 100644 --- a/src/features/entity-download/ticket-store.ts +++ b/src/features/entity-download/ticket-store.ts @@ -1,10 +1,10 @@ import { randomUUID } from 'crypto'; -import { EntityTypeValue } from '@/api/entitycore/types'; +import { TEntityTypeDict } from '@/api/entitycore/types'; import { PartialBy } from '@/types/common'; type DownloadTicket = { - entityType: EntityTypeValue; + entityType: TEntityTypeDict; virtualLabId?: string | null; projectId?: string | null; entityIds: string[]; diff --git a/src/features/entity-download/utils.ts b/src/features/entity-download/utils.ts index 802aeef51..837f6109a 100644 --- a/src/features/entity-download/utils.ts +++ b/src/features/entity-download/utils.ts @@ -7,7 +7,7 @@ import kebabCase from 'lodash/kebabCase'; import template from 'lodash/template'; import { downloadAsset } from '@/api/entitycore/queries/assets'; -import { EntityTypeValue } from '@/api/entitycore/types'; +import { TEntityTypeDict } from '@/api/entitycore/types'; import { IEntity } from '@/api/entitycore/types/entities/entity'; import { IAsset } from '@/api/entitycore/types/shared/global'; import { getSession } from '@/authFetch'; @@ -137,7 +137,7 @@ export async function getReadmeTemplateRenderParams(): Promise} A promise that resolves to a file entry with README content stream, path, and size information. * * @description @@ -147,7 +147,7 @@ export async function getReadmeTemplateRenderParams(): Promise { +export async function createTemplateFileEntry(entityType: TEntityTypeDict): Promise { const renderParams = await getReadmeTemplateRenderParams(); // Read template file based on entity type diff --git a/src/features/listing-filter-panel/index.tsx b/src/features/listing-filter-panel/index.tsx index 1dbefbfcb..6b15e3ac4 100644 --- a/src/features/listing-filter-panel/index.tsx +++ b/src/features/listing-filter-panel/index.tsx @@ -9,10 +9,10 @@ import ListingFilterPanel from '@/features/listing-filter-panel/listing-filter-p import { activeColumnsAtom, dataAtom, filtersAtom } from '@/state/explore-section/list-view-atoms'; import { useBrainRegionHierarchy } from '@/features/brain-region-hierarchy/context'; import { ExploreDataScope } from '@/types/explore-section/application'; -import { ExtendedEntitiesType } from '@/api/entitycore/types/extended-entity-type'; import { useUnwrappedValue } from '@/hooks/hooks'; import { classNames } from '@/util/utils'; +import type { TExtendedEntitiesTypeDict } from '@/api/entitycore/types/extended-entity-type'; import type { CoreFilter } from '@/entity-configuration/definitions/types'; import type { WorkspaceContext } from '@/types/common'; @@ -31,7 +31,7 @@ export default function WithListingFilterPanel({ setDisplayControlPanel: Dispatch>; filters?: CoreFilter[]; }) => ReactNode; - dataType: ExtendedEntitiesType; + dataType: TExtendedEntitiesTypeDict; dataScope: ExploreDataScope; virtualLabInfo?: WorkspaceContext; className?: string; diff --git a/src/features/listing-filter-panel/listing-filter-panel.tsx b/src/features/listing-filter-panel/listing-filter-panel.tsx index 3912e841d..05c78e686 100644 --- a/src/features/listing-filter-panel/listing-filter-panel.tsx +++ b/src/features/listing-filter-panel/listing-filter-panel.tsx @@ -30,11 +30,14 @@ import { searchStringAtom, } from '@/state/explore-section/list-view-atoms'; import { CoreFieldFilterTypeEnum } from '@/entity-configuration/definitions/fields-defs/enums'; -import { getViewDefinitionByLegacyType } from '@/entity-configuration/definitions/view-defs'; +import { getViewDefinitionByExtendedType } from '@/entity-configuration/definitions/view-defs'; import { defaultList } from '@/features/listing-filter-panel/checklist/default-checklist'; import { ExploreDataScope } from '@/types/explore-section/application'; import { useBrainRegionHierarchy } from '@/features/brain-region-hierarchy/context'; -import { ExtendedEntitiesType, PAGE_NUMBER } from '@/api/entitycore/types/extended-entity-type'; +import { + TExtendedEntitiesTypeDict, + PAGE_NUMBER, +} from '@/api/entitycore/types/extended-entity-type'; import { FilterGroup } from '@/features/listing-filter-panel/filter-group'; import { getFieldDefinition } from '@/entity-configuration/definitions'; import { Facets } from '@/api/entitycore/types/shared/response'; @@ -51,7 +54,7 @@ import type { WorkspaceContext } from '@/types/common'; type Props = { children?: ReactNode; toggleDisplay: () => void; - dataType: ExtendedEntitiesType; + dataType: TExtendedEntitiesTypeDict; dataScope?: ExploreDataScope; dataKey: string; filters: CoreFilter[]; @@ -261,7 +264,7 @@ export default function ListingFilterPanel({ setFilters(filters?.map((fil: CoreFilter) => ({ ...fil, value: filterValues[fil.field] }))); }; - const Entity = getViewDefinitionByLegacyType(dataType); + const Entity = getViewDefinitionByExtendedType(dataType); const filterItems = useMemo( () => filters diff --git a/src/features/listing-filter-panel/numeric-results-info.tsx b/src/features/listing-filter-panel/numeric-results-info.tsx index c38dec39a..ec377ba73 100644 --- a/src/features/listing-filter-panel/numeric-results-info.tsx +++ b/src/features/listing-filter-panel/numeric-results-info.tsx @@ -7,9 +7,9 @@ import { match, P } from 'ts-pattern'; import { useBrainRegionHierarchy } from '@/features/brain-region-hierarchy/context'; import { ExploreDataScope } from '@/types/explore-section/application'; import { dataAtom } from '@/state/explore-section/list-view-atoms'; -import { ExtendedEntitiesType } from '@/api/entitycore/types/extended-entity-type'; import { useLoadableValue } from '@/hooks/hooks'; +import type { TExtendedEntitiesTypeDict } from '@/api/entitycore/types/extended-entity-type'; import type { EntityCoreResponse } from '@/api/entitycore/types/shared/response'; import type { WorkspaceContext } from '@/types/common'; @@ -50,7 +50,7 @@ function ResultsCount({ dataKey, useBrainRegion, }: { - dataType: ExtendedEntitiesType; + dataType: TExtendedEntitiesTypeDict; dataScope: ExploreDataScope; virtualLabInfo?: WorkspaceContext; dataKey: string; diff --git a/src/features/small-microcircuit/_components/atoms/index.ts b/src/features/small-microcircuit/_components/atoms/index.ts index 25ceed256..0b99becfe 100644 --- a/src/features/small-microcircuit/_components/atoms/index.ts +++ b/src/features/small-microcircuit/_components/atoms/index.ts @@ -7,7 +7,7 @@ import { getCircuit } from '@/api/entitycore/queries/model/circuit'; import { getCircuitSimulations } from '@/api/entitycore/queries/simulation/circuit-simulation'; import { getCircuitSimulationExecutions } from '@/api/entitycore/queries/simulation/circuit-simulation-execution'; import { getCircuitSimulationResult } from '@/api/entitycore/queries/simulation/circuit-simulation-result'; -import { EntityTypeValue } from '@/api/entitycore/types'; +import { TEntityTypeDict } from '@/api/entitycore/types'; import { ICircuit } from '@/api/entitycore/types/entities/circuit'; import { ICircuitSimulation } from '@/api/entitycore/types/entities/circuit-simulation'; import { ICircuitSimulationExecution } from '@/api/entitycore/types/entities/circuit-simulation-execution'; @@ -147,7 +147,7 @@ export const fileAtomFamily = readAtomFamilyWithExpiration( }: { id: string; entityId: string; - entityType: EntityTypeValue; + entityType: TEntityTypeDict; assetPath?: string; context: WorkspaceContext; }) => diff --git a/src/features/small-microcircuit/_components/hooks/circuit.ts b/src/features/small-microcircuit/_components/hooks/circuit.ts index 4d3ae3c9b..753d6a0b7 100644 --- a/src/features/small-microcircuit/_components/hooks/circuit.ts +++ b/src/features/small-microcircuit/_components/hooks/circuit.ts @@ -5,7 +5,7 @@ import { ICircuit } from '@/api/entitycore/types/entities/circuit'; import { useAppNotification } from '@/components/notification'; import { AssetLabel } from '@/api/entitycore/types/shared/global'; import { downloadAsset } from '@/api/entitycore/queries/assets'; -import { EntityTypeEnum } from '@/api/entitycore/types'; +import { EntityTypeDict } from '@/api/entitycore/types'; const pendingQueries = new Map>(); @@ -55,7 +55,7 @@ export function useCircuitImageURL(circuitId: string | undefined) { } try { const resp = await downloadAsset({ - entityType: EntityTypeEnum.Circuit, + entityType: EntityTypeDict.Circuit, entityId: circuit.id, id: asset.id, asRawResponse: false, diff --git a/src/features/views/details/experimental.tsx b/src/features/views/details/experimental.tsx index 170f82688..e9ccefe56 100644 --- a/src/features/views/details/experimental.tsx +++ b/src/features/views/details/experimental.tsx @@ -10,7 +10,7 @@ import Summary from '@/features/details-view/summary'; import EphysViewer from '@/features/ephys-viewer'; import { getEntityBySlug } from '@/entity-configuration/domain/helpers'; -import { ExtendedEntitiesType } from '@/api/entitycore/types/extended-entity-type'; +import { ExtendedEntitiesTypeDict } from '@/api/entitycore/types/extended-entity-type'; import type { IReconstructionMorphology } from '@/api/entitycore/types/entities/reconstruction-morphology'; import type { IElectricalCellRecording } from '@/api/entitycore/types/entities/electrical-cell-recording'; @@ -31,25 +31,25 @@ export default function DetailView({ type }: Props) { const content = match>(entity) .with( { - extendedType: ExtendedEntitiesType.ReconstructionMorphology, + extendedType: ExtendedEntitiesTypeDict.ReconstructionMorphology, }, () => ( - + {(detail) => } ) ) - .with({ extendedType: ExtendedEntitiesType.ElectricalCellRecording }, () => ( - + .with({ extendedType: ExtendedEntitiesTypeDict.ElectricalCellRecording }, () => ( + {(detail) => } )) .with( { extendedType: P.union( - ExtendedEntitiesType.ExperimentalSynapsePerConnection, - ExtendedEntitiesType.ExperimentalBoutonDensity, - ExtendedEntitiesType.ExperimentalNeuronDensity + ExtendedEntitiesTypeDict.ExperimentalSynapsesPerConnection, + ExtendedEntitiesTypeDict.ExperimentalBoutonDensity, + ExtendedEntitiesTypeDict.ExperimentalNeuronDensity ).select(), }, (dataType) => diff --git a/src/features/views/details/model.tsx b/src/features/views/details/model.tsx index 929f3ebdc..5722fe772 100644 --- a/src/features/views/details/model.tsx +++ b/src/features/views/details/model.tsx @@ -7,7 +7,7 @@ import EModelDetailView from '@/page-wrappers/explore/e-model'; import { EntityCoreTypeConfig } from '@/entity-configuration/domain/types'; import { getEntityBySlug } from '@/entity-configuration/domain/helpers'; -import { ExtendedEntitiesType } from '@/api/entitycore/types/extended-entity-type'; +import { ExtendedEntitiesTypeDict } from '@/api/entitycore/types/extended-entity-type'; import type { ModelEntitySlugValue } from '@/entity-configuration/domain/slug'; import type { WorkspaceContext } from '@/types/common'; @@ -22,11 +22,13 @@ export default async function DetailView(props: Props) { if (!entity) notFound(); return match>(entity) - .with({ extendedType: ExtendedEntitiesType.EModel }, () => ) - .with({ extendedType: ExtendedEntitiesType.MEModel }, () => ( + .with({ extendedType: ExtendedEntitiesTypeDict.Emodel }, () => ( + + )) + .with({ extendedType: ExtendedEntitiesTypeDict.Memodel }, () => ( )) - .with({ extendedType: ExtendedEntitiesType.SingleNeuronSynaptome }, () => ( + .with({ extendedType: ExtendedEntitiesTypeDict.SingleNeuronSynaptome }, () => ( )) .otherwise(() => null); diff --git a/src/features/views/listing/index.tsx b/src/features/views/listing/index.tsx index 3c1d45a3b..8f601f0e2 100644 --- a/src/features/views/listing/index.tsx +++ b/src/features/views/listing/index.tsx @@ -6,11 +6,11 @@ import dynamic from 'next/dynamic'; import { ExploreDataScope } from '@/types/explore-section/application'; import { useExploreTableOnClickHandler } from '@/hooks/virtual-labs'; -import { ExtendedEntitiesType } from '@/api/entitycore/types/extended-entity-type'; import { resolveDataKey } from '@/utils/key-builder'; import type { Props as ExploreSectionListingViewProps } from '@/components/explore-section/ExploreSectionListingView'; import type { SerializedEntityCoreTypeConfig } from '@/entity-configuration/domain/types'; +import type { TExtendedEntitiesTypeDict } from '@/api/entitycore/types/extended-entity-type'; import type { EntityCoreIdentifiable } from '@/api/entitycore/types/shared/global'; import type { WorkspaceContext } from '@/types/common'; @@ -34,7 +34,7 @@ export default function ListingView({ entity, projectId, virtualLabId }: Props) return ( >(entity) - .with({ extendedType: ExtendedEntitiesType.EModel }, (en) => ( + .with({ extendedType: ExtendedEntitiesTypeDict.Emodel }, (en) => ( ( diff --git a/src/hooks/useExploreColumns.tsx b/src/hooks/useExploreColumns.tsx index c55170ae7..c6a7ebfb3 100644 --- a/src/hooks/useExploreColumns.tsx +++ b/src/hooks/useExploreColumns.tsx @@ -9,9 +9,9 @@ import fieldsDefinitionRegistry, { getFieldDefinition } from 'src/entity-configu import { EntityCoreFields } from '@/entity-configuration/definitions/fields-defs/enums'; import { ViewsDefinitionRegistry } from '@/entity-configuration/definitions/view-defs'; -import { ExtendedEntitiesType } from '@/api/entitycore/types/extended-entity-type'; import { classNames, fieldTitleSentenceCase } from '@/util/utils'; +import type { TExtendedEntitiesTypeDict } from '@/api/entitycore/types/extended-entity-type'; import type { OrderShape } from '@/entity-configuration/definitions/types'; import styles from '@/app/app/virtual-lab/(free)/explore/explore.module.css'; @@ -59,7 +59,7 @@ function isOrderObject(order: OrderShape): order is { property: string; value: s */ export function getOrderValue( order: OrderShape | undefined, - dataType?: ExtendedEntitiesType + dataType?: TExtendedEntitiesTypeDict ): string | undefined { if (!order) return undefined; @@ -84,7 +84,7 @@ export default function useExploreColumns( sortState?: SortState, initialColumns: ColumnProps[] = [], dimensionColumns?: string[] | null, - dataType?: ExtendedEntitiesType + dataType?: TExtendedEntitiesTypeDict ): ColumnProps[] { const keys = useMemo(() => Object.keys(fieldsDefinitionRegistry), []); diff --git a/src/hooks/useMorphoMetrics.tsx b/src/hooks/useMorphoMetrics.tsx index b8bce9ddd..78e1d34dd 100644 --- a/src/hooks/useMorphoMetrics.tsx +++ b/src/hooks/useMorphoMetrics.tsx @@ -2,9 +2,9 @@ import groupBy from 'lodash/groupBy'; import omit from 'lodash/omit'; import fieldsDefinitionRegistry, { getFieldDefinition } from '@/entity-configuration/definitions'; -import { getViewDefinitionByLegacyType } from '@/entity-configuration/definitions/view-defs'; +import { getViewDefinitionByExtendedType } from '@/entity-configuration/definitions/view-defs'; import { EmptyValue } from '@/entity-configuration/definitions/renderer'; -import { ExtendedEntitiesType } from '@/api/entitycore/types/extended-entity-type'; +import { ExtendedEntitiesTypeDict } from '@/api/entitycore/types/extended-entity-type'; import type { IReconstructionMorphologyExpanded } from '@/api/entitycore/types/entities/reconstruction-morphology'; import type { TypeSummaryProps } from '@/entity-configuration/definitions/view-defs/types'; @@ -14,7 +14,8 @@ export const useMorphometrics = ( showLabel: boolean = false ) => { const groupedCardFields = groupBy( - getViewDefinitionByLegacyType(ExtendedEntitiesType.ReconstructionMorphology)!.cardViewFields, + getViewDefinitionByExtendedType(ExtendedEntitiesTypeDict.ReconstructionMorphology)! + .cardViewFields, (item) => fieldsDefinitionRegistry[item.field]?.group ?? 'Metadata' ); diff --git a/src/hooks/virtual-labs/infinite-scroll.tsx b/src/hooks/virtual-labs/infinite-scroll.tsx index d94d71b99..58af3fefd 100644 --- a/src/hooks/virtual-labs/infinite-scroll.tsx +++ b/src/hooks/virtual-labs/infinite-scroll.tsx @@ -2,12 +2,12 @@ import { useMemo, useRef, useEffect } from 'react'; import { useLoadMore } from '@/components/explore-section/ExploreSectionListingView/LoadMoreButton'; import { ExploreDataScope } from '@/types/explore-section/application'; -import { ExtendedEntitiesType } from '@/api/entitycore/types/extended-entity-type'; +import type { TExtendedEntitiesTypeDict } from '@/api/entitycore/types/extended-entity-type'; export default function useInfiniteScroll( virtualLabId: string, projectId: string, - dataType: ExtendedEntitiesType, + dataType: TExtendedEntitiesTypeDict, dataKey: string ) { const loadMoreDivRef = useRef(null); diff --git a/src/page-wrappers/build/me-model/configure.tsx b/src/page-wrappers/build/me-model/configure.tsx index 0dfb76106..12f57c887 100644 --- a/src/page-wrappers/build/me-model/configure.tsx +++ b/src/page-wrappers/build/me-model/configure.tsx @@ -15,7 +15,7 @@ import MorphologyOverviewCard from '@/features/entities/me-model/detail-view/car import { createMEModel } from '@/api/entitycore/queries'; import { CreateMEModelSchema, ValidationStatus } from '@/api/entitycore/types/entities/me-model'; import { tryCatch } from '@/api/utils'; -import { ExtendedEntitiesType } from '@/api/entitycore/types/extended-entity-type'; +import { ExtendedEntitiesTypeDict } from '@/api/entitycore/types/extended-entity-type'; import { renderArray, renderEmptyOrValue } from '@/entity-configuration/definitions/renderer'; import { MEmodel } from '@/entity-configuration/domain/model/me-model'; import { activityAtomFamily } from '@/features/activity-view/context'; @@ -261,7 +261,7 @@ export default function Configure({ ctx, searchParams }: Props) { navigate( resolveExploreDetailsPageUrl({ ctx, - dataType: ExtendedEntitiesType.MEModel, + dataType: ExtendedEntitiesTypeDict.Memodel, entityId: data.id, }) ); diff --git a/src/page-wrappers/build/me-model/emodel.selection.tsx b/src/page-wrappers/build/me-model/emodel.selection.tsx index fc36f2553..06e416cd4 100644 --- a/src/page-wrappers/build/me-model/emodel.selection.tsx +++ b/src/page-wrappers/build/me-model/emodel.selection.tsx @@ -9,7 +9,7 @@ import { useBuildMeModelSessionState } from '@/features/entities/me-model/build/ import { checkSelectedEmodelBlackList } from '@/page-wrappers/build/me-model/helpers'; import { ExploreDataScope } from '@/types/explore-section/application'; import { resolveExploreDetailsPageUrl } from '@/utils/url-builder'; -import { ExtendedEntitiesType } from '@/api/entitycore/types/extended-entity-type'; +import { ExtendedEntitiesTypeDict } from '@/api/entitycore/types/extended-entity-type'; import { useAppNotification } from '@/components/notification'; import { Btn } from '@/components/buttons/base/legacy-btn'; import { resolveDataKey } from '@/utils/key-builder'; @@ -105,7 +105,7 @@ export default function EmodelSelection({ params, searchParams }: Props) { const onCellClick = (_basePath: string, record: IEModel) => { resolveExploreDetailsPageUrl({ ctx: { virtualLabId: params.virtualLabId, projectId: params.projectId }, - dataType: ExtendedEntitiesType.EModel, + dataType: ExtendedEntitiesTypeDict.Emodel, entityId: record.id, }); }; @@ -120,7 +120,7 @@ export default function EmodelSelection({ params, searchParams }: Props) { dataKey={dataKey} containerClass="h-full bg-white" - dataType={ExtendedEntitiesType.EModel} + dataType={ExtendedEntitiesTypeDict.Emodel} dataScope={ExploreDataScope.BuildSelectedBrainRegion} onCellClick={onCellClick} selectionType="radio" diff --git a/src/page-wrappers/build/me-model/morphology.selection.tsx b/src/page-wrappers/build/me-model/morphology.selection.tsx index 6bf1fd0ca..58575f128 100644 --- a/src/page-wrappers/build/me-model/morphology.selection.tsx +++ b/src/page-wrappers/build/me-model/morphology.selection.tsx @@ -8,7 +8,7 @@ import ExploreSectionListingView from '@/components/explore-section/ExploreSecti import { useBuildMeModelSessionState } from '@/features/entities/me-model/build/create.state-session'; import { ExploreDataScope } from '@/types/explore-section/application'; import { resolveExploreDetailsPageUrl } from '@/utils/url-builder'; -import { ExtendedEntitiesType } from '@/api/entitycore/types/extended-entity-type'; +import { ExtendedEntitiesTypeDict } from '@/api/entitycore/types/extended-entity-type'; import { Btn } from '@/components/buttons/base/legacy-btn'; import { resolveDataKey } from '@/utils/key-builder'; @@ -62,7 +62,7 @@ export default function MorphologySelection({ params, searchParams }: Props) { navigate( resolveExploreDetailsPageUrl({ ctx: { virtualLabId: params.virtualLabId, projectId: params.projectId }, - dataType: ExtendedEntitiesType.ReconstructionMorphology, + dataType: ExtendedEntitiesTypeDict.ReconstructionMorphology, entityId: record.id, }) ); @@ -73,7 +73,7 @@ export default function MorphologySelection({ params, searchParams }: Props) { containerClass="h-full bg-white" dataKey={dataKey} - dataType={ExtendedEntitiesType.ReconstructionMorphology} + dataType={ExtendedEntitiesTypeDict.ReconstructionMorphology} dataScope={ExploreDataScope.BuildSelectedBrainRegion} onCellClick={onCellClick} virtualLabInfo={{ virtualLabId: params.virtualLabId, projectId: params.projectId }} diff --git a/src/page-wrappers/explore/single-neuron-simulation.tsx b/src/page-wrappers/explore/single-neuron-simulation.tsx index b5acd78ce..5d29b97bb 100644 --- a/src/page-wrappers/explore/single-neuron-simulation.tsx +++ b/src/page-wrappers/explore/single-neuron-simulation.tsx @@ -9,9 +9,9 @@ import Nav from '@/components/build-section/virtual-lab/me-model/Nav'; import Overview from '@/features/details-view/overview'; import Link from '@/components/Link'; -import { getViewDefinitionByLegacyType } from '@/entity-configuration/definitions/view-defs'; +import { getViewDefinitionByExtendedType } from '@/entity-configuration/definitions/view-defs'; import { resolveExperimentUrl, resolveProjectUrl } from '@/utils/url-builder'; -import { ExtendedEntitiesType } from '@/api/entitycore/types/extended-entity-type'; +import { ExtendedEntitiesTypeDict } from '@/api/entitycore/types/extended-entity-type'; import { LinkItemKey } from '@/constants/virtual-labs/sidemenu'; import { useSimulationConfig } from '@/hooks/useSimulation'; @@ -34,13 +34,13 @@ export default function SimulationDetailPage({ params, payload }: Props) { source: payload.source, }); - const fields = getViewDefinitionByLegacyType( - ExtendedEntitiesType.SingleNeuronSimulation + const fields = getViewDefinitionByExtendedType( + ExtendedEntitiesTypeDict.SingleNeuronSimulation )?.summaryViewFields; if (!fields) throw new Error( - `Cannot find fields definition for ${ExtendedEntitiesType.SingleNeuronSimulation}` + `Cannot find fields definition for ${ExtendedEntitiesTypeDict.SingleNeuronSimulation}` ); return ( diff --git a/src/page-wrappers/explore/single-neuron-synaptome-simulation.tsx b/src/page-wrappers/explore/single-neuron-synaptome-simulation.tsx index 509ab439d..1f040999a 100644 --- a/src/page-wrappers/explore/single-neuron-synaptome-simulation.tsx +++ b/src/page-wrappers/explore/single-neuron-synaptome-simulation.tsx @@ -11,9 +11,9 @@ import Overview from '@/features/details-view/overview'; import Link from '@/components/Link'; import { resolveSingleNeuronSynaptomeSimulation } from '@/entity-configuration/domain/simulation/single-neuron-synaptome-simulation'; -import { getViewDefinitionByLegacyType } from '@/entity-configuration/definitions/view-defs'; +import { getViewDefinitionByExtendedType } from '@/entity-configuration/definitions/view-defs'; import { resolveExperimentUrl, resolveProjectUrl } from '@/utils/url-builder'; -import { ExtendedEntitiesType } from '@/api/entitycore/types/extended-entity-type'; +import { ExtendedEntitiesTypeDict } from '@/api/entitycore/types/extended-entity-type'; import { LinkItemKey } from '@/constants/virtual-labs/sidemenu'; import { useSimulationConfig } from '@/hooks/useSimulation'; @@ -29,13 +29,13 @@ export default function SimulationDetailPage({ payload }: Props) { source: payload.source, }); - const fields = getViewDefinitionByLegacyType( - ExtendedEntitiesType.SingleNeuronSynaptomeSimulation + const fields = getViewDefinitionByExtendedType( + ExtendedEntitiesTypeDict.SingleNeuronSynaptomeSimulation )?.summaryViewFields; if (!fields) throw new Error( - `Cannot find fields definition for ${ExtendedEntitiesType.SingleNeuronSynaptomeSimulation}` + `Cannot find fields definition for ${ExtendedEntitiesTypeDict.SingleNeuronSynaptomeSimulation}` ); return ( diff --git a/src/services/entity-download/index.ts b/src/services/entity-download/index.ts index 29f9c2217..e5fc30d6b 100644 --- a/src/services/entity-download/index.ts +++ b/src/services/entity-download/index.ts @@ -1,9 +1,9 @@ import snakeCase from 'lodash/snakeCase'; -import { EntityTypeValue } from '@/api/entitycore/types'; +import { TEntityTypeDict } from '@/api/entitycore/types'; import createDownloadTicket from '@/api/entity-download'; -export async function downloadArchive(entityType: EntityTypeValue, entityIds: string[]) { +export async function downloadArchive(entityType: TEntityTypeDict, entityIds: string[]) { const { ticketId } = await createDownloadTicket({ entityType, entityIds }); const url = `/api/entity-download/${snakeCase(entityType)}/ticket/${ticketId}`; diff --git a/src/services/entitycore/entities-count.ts b/src/services/entitycore/entities-count.ts index 493282b9f..db2b9e7fd 100644 --- a/src/services/entitycore/entities-count.ts +++ b/src/services/entitycore/entities-count.ts @@ -11,7 +11,7 @@ import { import { getEntitiesCount } from '@/api/entitycore/queries/general/entity'; import { findParentIds } from '@/features/brain-region-hierarchy/helpers'; import { getElectricalCellRecordings } from '@/api/entitycore/queries'; -import { EntityTypeEnum } from '@/api/entitycore/types'; +import { EntityTypeDict } from '@/api/entitycore/types'; import { tryCatch } from '@/api/utils'; import type { EntityCountResponse } from '@/api/entitycore/types/entities/entity'; @@ -72,7 +72,7 @@ export const entitiesCountAtom = atomFamily( if (restData) Object.assign(data, restData); if (ephysData) Object.assign(data, { - [EntityTypeEnum.ElectricalCellRecording]: ephysData.pagination.total_items, + [EntityTypeDict.ElectricalCellRecording]: ephysData.pagination.total_items, }); if (ephysError || restError) error = restError ?? ephysError; diff --git a/src/state/explore-section/column-key-to-filter.ts b/src/state/explore-section/column-key-to-filter.ts index c589d0624..e97c47953 100644 --- a/src/state/explore-section/column-key-to-filter.ts +++ b/src/state/explore-section/column-key-to-filter.ts @@ -4,13 +4,13 @@ import { EntityCoreFields, } from '@/entity-configuration/definitions/fields-defs/enums'; import { getFieldDefinition } from '@/entity-configuration/definitions'; -import { ExtendedEntitiesType } from '@/api/entitycore/types/extended-entity-type'; +import type { TExtendedEntitiesTypeDict } from '@/api/entitycore/types/extended-entity-type'; import type { CoreFilter } from '@/entity-configuration/definitions/types'; export default function columnKeyToFilter( key: EntityCoreFields, - dataType: ExtendedEntitiesType + dataType: TExtendedEntitiesTypeDict ): CoreFilter { const fieldConfig = getFieldDefinition(key); if (!fieldConfig) { diff --git a/src/state/explore-section/detail-view-atoms.ts b/src/state/explore-section/detail-view-atoms.ts index d453ff25b..f2ab66687 100644 --- a/src/state/explore-section/detail-view-atoms.ts +++ b/src/state/explore-section/detail-view-atoms.ts @@ -5,14 +5,15 @@ import { atomFamily } from 'jotai/utils'; import isEqual from 'lodash/isEqual'; import { DetailViewUrlParams } from '@/types/explore-section/application'; -import { ExtendedEntitiesType } from '@/api/entitycore/types/extended-entity-type'; import { getEntityByExtendedType } from '@/entity-configuration/domain/helpers'; +import type { TExtendedEntitiesTypeDict } from '@/api/entitycore/types/extended-entity-type'; + export const backToListPathAtom = atom(null); export const brainRegionSidebarIsCollapsedAtom = atom(true); export const detailFamily = atomFamily< - DetailViewUrlParams & { dataType: ExtendedEntitiesType }, + DetailViewUrlParams & { dataType: TExtendedEntitiesTypeDict }, Atom> >( (viewParams) => diff --git a/src/state/explore-section/details-view-atom.ts b/src/state/explore-section/details-view-atom.ts index 9bf2aa8ee..0323ccdae 100644 --- a/src/state/explore-section/details-view-atom.ts +++ b/src/state/explore-section/details-view-atom.ts @@ -5,11 +5,12 @@ import { atomFamily } from 'jotai/utils'; import isEqual from 'lodash/isEqual'; import { DetailViewUrlParams } from '@/types/explore-section/application'; -import { ExtendedEntitiesType } from '@/api/entitycore/types/extended-entity-type'; import { getEntityByExtendedType } from '@/entity-configuration/domain/helpers'; +import type { TExtendedEntitiesTypeDict } from '@/api/entitycore/types/extended-entity-type'; + export const detailFamily = atomFamily< - DetailViewUrlParams & { dataType: ExtendedEntitiesType }, + DetailViewUrlParams & { dataType: TExtendedEntitiesTypeDict }, Atom> >( (viewParams) => diff --git a/src/state/explore-section/list-view-atoms.ts b/src/state/explore-section/list-view-atoms.ts index eebcfa83d..7c1f3bfa2 100644 --- a/src/state/explore-section/list-view-atoms.ts +++ b/src/state/explore-section/list-view-atoms.ts @@ -16,7 +16,7 @@ import { getEntityByExtendedType } from '@/entity-configuration/domain/helpers'; import { EntityCoreResponse } from '@/api/entitycore/types/shared/response'; import { useUnwrappedValue } from '@/hooks/hooks'; import { - getViewDefinitionByLegacyType, + getViewDefinitionByExtendedType, ViewsDefinitionRegistry, } from '@/entity-configuration/definitions/view-defs'; import { DEFAULT_BRAIN_REGION_HIERARCHY_ID } from '@/features/brain-region-hierarchy/context'; @@ -91,7 +91,7 @@ export const activeColumnsAtom = atomFamily( export const filtersAtom = atomFamily((scope: DataAtomBinding) => { const childAtom = atomWithDefault>(() => { - const columns = getViewDefinitionByLegacyType(scope.dataType)?.columns; + const columns = getViewDefinitionByExtendedType(scope.dataType)?.columns; const fields = columns ? getFieldsDefinition(columns) : []; return [ diff --git a/src/state/morpho-viewer/index.ts b/src/state/morpho-viewer/index.ts index d3ddc6061..20cb76c0d 100644 --- a/src/state/morpho-viewer/index.ts +++ b/src/state/morpho-viewer/index.ts @@ -2,7 +2,7 @@ import { Atom, atom } from 'jotai'; import sessionAtom from '@/state/session'; import { downloadAsset } from '@/api/entitycore/queries/assets'; -import { EntityTypeEnum } from '@/api/entitycore/types'; +import { EntityTypeDict } from '@/api/entitycore/types'; import type { IReconstructionMorphology } from '@/api/entitycore/types/entities/reconstruction-morphology'; import { WorkspaceContext } from '@/types/common'; @@ -23,7 +23,7 @@ export default function createMorphologyDataAtom( // TODO: extend downloadAsset so that return type can be parameterized // as: ArrayBuffer, String, JSON, Response, etc. const arrayBuffer = await downloadAsset({ - entityType: EntityTypeEnum.ReconstructionMorphology, + entityType: EntityTypeDict.ReconstructionMorphology, entityId: morphology.id, id: asset.id, ctx, diff --git a/src/state/virtual-lab/bookmark.ts b/src/state/virtual-lab/bookmark.ts index bb5f7a536..d8fd1d2c0 100644 --- a/src/state/virtual-lab/bookmark.ts +++ b/src/state/virtual-lab/bookmark.ts @@ -3,15 +3,16 @@ import isEqual from 'lodash/isEqual'; import { VlmGetProjectBookmarksResponse } from '@/api/virtual-lab-svc/queries/types'; import { getAllBookmarksByCategory } from '@/api/virtual-lab-svc/queries/bookmark'; -import { ExtendedEntitiesType } from '@/api/entitycore/types/extended-entity-type'; import { WorkspaceContext } from '@/types/common'; +import type { TExtendedEntitiesTypeDict } from '@/api/entitycore/types/extended-entity-type'; + export const bookmarksForProjectAtomFamily = atomFamily( ({ virtualLabId, projectId, category, - }: WorkspaceContext & { category?: ExtendedEntitiesType }) => { + }: WorkspaceContext & { category?: TExtendedEntitiesTypeDict }) => { const childAtom = atomWithRefresh>(async () => { return await getAllBookmarksByCategory({ virtualLabId, projectId }, { category }); }); diff --git a/src/ui/segments/explore/entity-count.tsx b/src/ui/segments/explore/entity-count.tsx index 747c9c7c6..9a9dbd5f1 100644 --- a/src/ui/segments/explore/entity-count.tsx +++ b/src/ui/segments/explore/entity-count.tsx @@ -10,7 +10,7 @@ import { useFilteredCircuits } from '@/components/explore-section/Circuit/ListVi import { PillTabs, PillTabsList, PillTabsTrigger } from '@/ui/molecules/tabs'; import { getEntitiesCount } from '@/api/entitycore/queries/general/entity'; import { useDefaultBreakpoint } from '@/ui/hooks/create-break-point'; -import { EntityTypeEnum } from '@/api/entitycore/types/entity-type'; +import { EntityTypeDict } from '@/api/entitycore/types/entity-type'; import { useTabs } from '@/components/detail-view-tabs'; import { useWorkspace } from '@/ui/hooks/use-workspace'; import { keyBuilder } from '@/ui/use-query-keys/data'; @@ -137,7 +137,7 @@ export function EntityCount({ dataKey }: Props) { const experimentalState = useMemo( () => [ ...Object.entries(ExperimentalEntitiesTileTypes).map(([, value]) => { - if (value.type === EntityTypeEnum.ElectricalCellRecording) { + if (value.type === EntityTypeDict.ElectricalCellRecording) { return { ...value, isLoading: ephysLoading }; } return { ...value, isLoading: allLoading }; @@ -161,7 +161,7 @@ export function EntityCount({ dataKey }: Props) { <> {experimentalState.map((value) => { let count: number | null = get(allData, value.type, null); - if (value.type === EntityTypeEnum.ElectricalCellRecording) { + if (value.type === EntityTypeDict.ElectricalCellRecording) { count = ephysData?.pagination.total_items ?? null; } diff --git a/src/utils/url-builder.ts b/src/utils/url-builder.ts index 1bba4ae47..bdc18aca4 100644 --- a/src/utils/url-builder.ts +++ b/src/utils/url-builder.ts @@ -2,10 +2,10 @@ import { getEntityByCoreType, getEntityByExtendedType, } from '@/entity-configuration/domain/helpers'; -import { EntityTypeValue } from '@/api/entitycore/types/entity-type'; +import { TEntityTypeDict } from '@/api/entitycore/types/entity-type'; import type { EntitySlugValue } from '@/entity-configuration/domain/slug'; -import type { ExtendedEntitiesType } from '@/api/entitycore/types/extended-entity-type'; +import type { TExtendedEntitiesTypeDict } from '@/api/entitycore/types/extended-entity-type'; import type { WorkspaceContext } from '@/types/common'; export const baseUri = '/app/virtual-lab'; @@ -18,8 +18,8 @@ export function resolveExploreDetailsPageUrl({ }: { ctx?: Partial; entityId?: string; - dataType?: ExtendedEntitiesType; - entityType?: EntityTypeValue; + dataType?: TExtendedEntitiesTypeDict; + entityType?: TEntityTypeDict; }) { if (dataType && entityType) throw Error('Only one of dataType and entityType should be specified'); @@ -68,7 +68,7 @@ export function resolveExperimentUrl({ dataType, }: { ctx: Required; - dataType?: EntityTypeValue; + dataType?: TEntityTypeDict; entityId?: string; }) { const entityConfig = getEntityByCoreType({ type: dataType }); @@ -84,7 +84,7 @@ export function resolveExperimentUrlByExtendedType({ dataType, }: { ctx: Required; - dataType?: ExtendedEntitiesType; + dataType?: TExtendedEntitiesTypeDict; entityId?: string; }) { const entityConfig = getEntityByExtendedType({ type: dataType }); diff --git a/tests/utils/url-builder.test.ts b/tests/utils/url-builder.test.ts index 5ace5b011..f0ca1c910 100644 --- a/tests/utils/url-builder.test.ts +++ b/tests/utils/url-builder.test.ts @@ -4,25 +4,25 @@ import { resolveProjectUrl, resolveLibraryUrl, } from '../../src/utils/url-builder'; -import { ExtendedEntitiesType } from '@/api/entitycore/types/extended-entity-type'; +import { ExtendedEntitiesTypeDict } from '@/api/entitycore/types/extended-entity-type'; import { EntitySlug } from '@/entity-configuration/domain/slug'; // Mock the getEntityByLegacyType helper function vi.mock('@/entity-configuration/domain/helpers', () => ({ getEntityByLegacyType: vi.fn(({ legacyType }) => { - if (legacyType === ExtendedEntitiesType.ReconstructionMorphology) { + if (legacyType === ExtendedEntitiesTypeDict.ReconstructionMorphology) { return { slug: 'morphology', explore: { routePrefix: 'interactive/experimental' }, }; } - if (legacyType === ExtendedEntitiesType.EModel) { + if (legacyType === ExtendedEntitiesTypeDict.Emodel) { return { slug: 'e-model', explore: { routePrefix: 'model' }, }; } - if (legacyType === ExtendedEntitiesType.SingleNeuronSimulation) { + if (legacyType === ExtendedEntitiesTypeDict.SingleNeuronSimulation) { return { slug: 'simulation', explore: { routePrefix: 'simulate' }, @@ -42,7 +42,7 @@ describe('URL Builder Utils', () => { it('should build URL for morphology without workspace context', () => { const url = resolveExploreDetailsPageUrl({ entityId: 'entity-123', - dataType: ExtendedEntitiesType.ReconstructionMorphology, + dataType: ExtendedEntitiesTypeDict.ReconstructionMorphology, }); expect(url).toBe('/app/virtual-lab/explore/interactive/experimental/morphology/entity-123'); }); @@ -51,7 +51,7 @@ describe('URL Builder Utils', () => { const url = resolveExploreDetailsPageUrl({ ctx: workspaceContext, entityId: 'entity-123', - dataType: ExtendedEntitiesType.ReconstructionMorphology, + dataType: ExtendedEntitiesTypeDict.ReconstructionMorphology, }); expect(url).toBe( '/app/virtual-lab/lab/virtual-lab-1/project/project-1/explore/interactive/experimental/morphology/entity-123'