-
Notifications
You must be signed in to change notification settings - Fork 46
/
Copy pathSignals.tsx
63 lines (55 loc) · 1.93 KB
/
Signals.tsx
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
import { isNil } from 'lodash';
import { Source, type MapRef } from 'react-map-gl/maplibre';
import { useSelector } from 'react-redux';
import { MAP_URL } from 'common/Map/const';
import getMastLayerProps from 'common/Map/Layers/mastLayerProps';
import OrderedLayer from 'common/Map/Layers/OrderedLayer';
import type { SignalContext } from 'common/Map/Layers/types';
import { getLayersSettings, getMapStyle } from 'reducers/map/selectors';
import type { Theme } from 'types';
import { getPointLayerProps, getSignalLayerProps } from './geoSignalsLayers';
import getKPLabelLayerProps from './getKPLabelLayerProps';
interface PlatformProps {
colors: Theme;
sourceTable: string;
hovered?: { id: string; layer: string };
mapRef?: React.RefObject<MapRef>;
layerOrder: number;
infraID: number | undefined;
}
const Signals = ({ colors, sourceTable, layerOrder, infraID }: PlatformProps) => {
const mapStyle = useSelector(getMapStyle);
const layersSettings = useSelector(getLayersSettings);
const prefix = mapStyle === 'blueprint' ? 'SCHB ' : '';
const context: SignalContext = {
prefix,
colors,
sourceTable,
sidePropertyName: 'extensions_sncf_side',
minzoom: 12,
};
if (!layersSettings.signals || isNil(infraID)) return null;
return (
<Source
promoteId="id"
type="vector"
url={`${MAP_URL}/layer/${sourceTable}/mvt/geo/?infra=${infraID}`}
>
<OrderedLayer {...getMastLayerProps(context)} layerOrder={layerOrder} />
<OrderedLayer {...getPointLayerProps(context)} layerOrder={layerOrder} />
<OrderedLayer
{...getKPLabelLayerProps({
bottomOffset: 6.5,
colors,
PKFieldName: 'extensions_sncf_kp',
minzoom: 12,
isSignalisation: true,
sourceTable,
})}
layerOrder={layerOrder}
/>
<OrderedLayer {...getSignalLayerProps(context)} layerOrder={layerOrder} />
</Source>
);
};
export default Signals;