Skip to content

Commit

Permalink
refactor(frontend): tooltip hover descriptions (#52)
Browse files Browse the repository at this point in the history
Move hover descriptions to `src/config`, so that each map layer has `config/{layer}/{layer}HoverDescription`.`
  • Loading branch information
eatyourgreens authored Jul 1, 2024
1 parent 797cc85 commit 799bfc5
Show file tree
Hide file tree
Showing 6 changed files with 34 additions and 18 deletions.
20 changes: 20 additions & 0 deletions frontend/src/config/assets/AssetHoverDescription.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
import { FC } from 'react';

import { InteractionTarget, VectorTarget } from 'state/interactions/use-interactions';
import { VectorHoverDescription } from 'map/tooltip/content/VectorHoverDescription';

export const AssetHoverDescription: FC<{ hoveredObject: InteractionTarget<VectorTarget> }> = ({
hoveredObject,
}) => {
const {
viewLayer,
target: { feature },
} = hoveredObject;

return (
<VectorHoverDescription
viewLayer={viewLayer}
feature={feature}
/>
);
};
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ import {
droughtRegionsColorSpecState,
droughtRegionsFieldSpecState,
} from 'state/layers/modules/drought';
import { DataDescription } from '../DataDescription';
import { DataDescription } from 'map/tooltip/DataDescription';

const DroughtRiskDescription: FC<{
hoveredObject: InteractionTarget<VectorTarget>;
Expand Down
11 changes: 5 additions & 6 deletions frontend/src/config/interaction-groups.ts
Original file line number Diff line number Diff line change
Expand Up @@ -6,12 +6,11 @@ import {
RasterTarget,
} from 'state/interactions/use-interactions';

import { AssetHoverDescription } from './assets/AssetHoverDescription';
import { HazardHoverDescription } from './hazards/HazardHoverDescription';

import { VectorHoverDescription } from 'map/tooltip/content/VectorHoverDescription';
import { RegionHoverDescription } from 'map/tooltip/content/RegionHoverDescription';
import { SolutionHoverDescription } from 'map/tooltip/content/SolutionHoverDescription';
import { DroughtHoverDescription } from 'map/tooltip/content/DroughtHoverDescription';
import { SolutionHoverDescription } from './solutions/SolutionHoverDescription';
import { RegionHoverDescription } from './regions/RegionHoverDescription';
import { DroughtHoverDescription } from './drought/DroughtHoverDescription';

export const INTERACTION_GROUPS = new Map<string, InteractionGroupConfig>([
[
Expand Down Expand Up @@ -69,7 +68,7 @@ export const tooltipLayers: Map<string, FC<{ hoveredObject: MapDataLayer }>> = n
string,
FC<{ hoveredObject: MapDataLayer }>
>([
['assets', VectorHoverDescription],
['assets', AssetHoverDescription],
['hazards', HazardHoverDescription],
['regions', RegionHoverDescription],
['solutions', SolutionHoverDescription],
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { REGIONS_METADATA } from '../../../config/regions/metadata';
import { REGIONS_METADATA } from './metadata';
import { InteractionTarget, VectorTarget } from 'state/interactions/use-interactions';
import { useRecoilValue } from 'recoil';
import { showPopulationState } from 'state/regions';
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,8 @@ import startCase from 'lodash/startCase';
import { FC } from 'react';
import { habitatColorMap } from 'state/layers/modules/marine';
import { landuseColorMap } from 'state/layers/modules/terrestrial';
import { DataDescription } from '../DataDescription';
import { ColorBox } from './ColorBox';
import { DataDescription } from 'map/tooltip/DataDescription';
import { ColorBox } from 'map/tooltip/content/ColorBox';

const slopeFieldSpec = {
fieldGroup: 'properties',
Expand Down
13 changes: 5 additions & 8 deletions frontend/src/map/tooltip/content/VectorHoverDescription.tsx
Original file line number Diff line number Diff line change
@@ -1,21 +1,18 @@
import { Typography } from '@mui/material';
import { NETWORKS_METADATA } from 'config/networks/metadata';
import { DataItem } from 'details/features/detail-components';
import { InteractionTarget, VectorTarget } from 'state/interactions/use-interactions';
import { VectorTarget } from 'state/interactions/use-interactions';
import { FC } from 'react';
import { useRecoilValue } from 'recoil';
import { singleViewLayerParamsState } from 'state/layers/view-layers-params';
import { DataDescription } from '../DataDescription';
import { ColorBox } from './ColorBox';
import { ViewLayer } from 'lib/data-map/view-layers';

export const VectorHoverDescription: FC<{
hoveredObject: InteractionTarget<VectorTarget>;
}> = ({ hoveredObject }) => {
const {
viewLayer,
target: { feature },
} = hoveredObject;

viewLayer: ViewLayer;
feature: VectorTarget['feature'];
}> = ({ viewLayer, feature }) => {
const layerParams = useRecoilValue(singleViewLayerParamsState(viewLayer.id));
const { styleParams } = layerParams;
const { colorMap } = styleParams ?? {};
Expand Down

0 comments on commit 799bfc5

Please sign in to comment.