Skip to content

Commit

Permalink
show positions switch only when available in datasets
Browse files Browse the repository at this point in the history
  • Loading branch information
j8seangel committed Jul 29, 2024
1 parent 02d2834 commit 1ba1522
Show file tree
Hide file tree
Showing 4 changed files with 44 additions and 15 deletions.
13 changes: 12 additions & 1 deletion apps/fishing-map/features/dataviews/dataviews.utils.ts
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,11 @@ import {
TEMPLATE_CLUSTERS_DATAVIEW_SLUG,
TEMPLATE_VESSEL_DATAVIEW_SLUG,
} from 'data/workspaces'
import { VesselInstanceDatasets, isPrivateDataset } from 'features/datasets/datasets.utils'
import {
VesselInstanceDatasets,
getActiveDatasetsInDataview,
isPrivateDataset,
} from 'features/datasets/datasets.utils'

// used in workspaces with encounter events layers
export const ENCOUNTER_EVENTS_SOURCE_ID = 'encounter-events'
Expand Down Expand Up @@ -281,3 +285,10 @@ export const getVesselInWorkspace = (vessels: UrlDataviewInstance[], vesselId: s
export const isBathymetryDataview = (dataview: UrlDataviewInstance) => {
return dataview.id.includes('bathymetry')
}

export const getIsPositionSupportedInDataview = (dataview: UrlDataviewInstance) => {
const datasets = getActiveDatasetsInDataview(dataview)
return datasets?.some(({ schema }) => {
return schema?.['bearing'] !== undefined
})
}
21 changes: 14 additions & 7 deletions apps/fishing-map/features/workspace/activity/ActivitySection.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@ import {
selectActivityDataviews,
selectDetectionsDataviews,
} from 'features/dataviews/selectors/dataviews.categories.selectors'
import { getIsPositionSupportedInDataview } from 'features/dataviews/dataviews.utils'
import LayerPanelContainer from '../shared/LayerPanelContainer'
import LayerPanel from './ActivityLayerPanel'
import activityStyles from './ActivitySection.module.css'
Expand All @@ -32,6 +33,10 @@ function ActivitySection(): React.ReactElement {
const { dispatchQueryParams } = useLocationConnect()
const bivariateDataviews = useSelector(selectBivariateDataviews)

const positionsSupported = dataviews.every((dataview) =>
getIsPositionSupportedInDataview(dataview)
)

const { visualizationOptions, activeVisualizationOption, onVisualizationModeChange } =
useVisualizationsOptions(DataviewCategory.Activity)

Expand Down Expand Up @@ -103,13 +108,15 @@ function ActivitySection(): React.ReactElement {
<h2 className={styles.sectionTitle}>{t('common.activity', 'Activity')}</h2>
{!readOnly && (
<div className={cx(styles.sectionButtons)}>
<VisualisationChoice
options={visualizationOptions}
testId="activity-visualizations-change"
activeOption={activeVisualizationOption}
onSelect={(option) => onVisualizationModeChange(option.id)}
className={cx({ [styles.hidden]: !hasVisibleDataviews })}
/>
{positionsSupported && (
<VisualisationChoice
options={visualizationOptions}
testId="activity-visualizations-change"
activeOption={activeVisualizationOption}
onSelect={(option) => onVisualizationModeChange(option.id)}
className={cx({ [styles.hidden]: !hasVisibleDataviews })}
/>
)}
<IconButton
icon="plus"
type="border"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@ import {
selectActivityDataviews,
selectDetectionsDataviews,
} from 'features/dataviews/selectors/dataviews.categories.selectors'
import { getIsPositionSupportedInDataview } from 'features/dataviews/dataviews.utils'
import LayerPanelContainer from '../shared/LayerPanelContainer'
import LayerPanel from '../activity/ActivityLayerPanel'
import activityStyles from '../activity/ActivitySection.module.css'
Expand All @@ -34,6 +35,10 @@ function DetectionsSection(): React.ReactElement {
const { visualizationOptions, activeVisualizationOption, onVisualizationModeChange } =
useVisualizationsOptions(DataviewCategory.Detections)

const positionsSupported = dataviews.every((dataview) =>
getIsPositionSupportedInDataview(dataview)
)

const dispatch = useAppDispatch()
const onAddLayerClick = useCallback(() => {
dispatch(setModalOpen({ id: 'layerLibrary', open: DataviewCategory.Detections }))
Expand Down Expand Up @@ -101,13 +106,15 @@ function DetectionsSection(): React.ReactElement {
<h2 className={styles.sectionTitle}>{t('common.detections', 'Detections')}</h2>
{!readOnly && (
<div className={cx(styles.sectionButtons)}>
<VisualisationChoice
options={visualizationOptions}
testId="activity-visualizations-change"
activeOption={activeVisualizationOption}
onSelect={(option) => onVisualizationModeChange(option.id)}
className={cx({ [styles.hidden]: !hasVisibleDataviews })}
/>
{positionsSupported && (
<VisualisationChoice
options={visualizationOptions}
testId="activity-visualizations-change"
activeOption={activeVisualizationOption}
onSelect={(option) => onVisualizationModeChange(option.id)}
className={cx({ [styles.hidden]: !hasVisibleDataviews })}
/>
)}
<IconButton
icon="plus"
type="border"
Expand Down
4 changes: 4 additions & 0 deletions libs/datasets-client/src/datasets.utils.ts
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,10 @@ export const removeDatasetVersion = (datasetId: string) => {
return datasetId ? datasetId?.split(':')[0] : ''
}

export const getDatasetVersion = (datasetId: string) => {
return datasetId ? datasetId?.split(':')[1] : ''
}

export function findDatasetByType(datasets = [] as Dataset[], type: DatasetTypes) {
return type ? datasets?.find((d) => d.type === type) : undefined
}
Expand Down

0 comments on commit 1ba1522

Please sign in to comment.