Skip to content

Commit

Permalink
- replace actions/selectors from old reducer by the new slices one. R…
Browse files Browse the repository at this point in the history
…ebase dev

- fix osrdConfContext

- add mapInfraID in map store

- add infraID in props TracksGeographic

- add infraID in props common/Map/Layers/Routes

- add infraID in props common/Map/Layers/OperationalPoints

- add infraID in props common/Map/Layers/Catenaries

- add infraID in props BufferStops, Detectors, LineSearchLayer, NeutralSections, Signals, SpeedLimits, Switches, SNCF_PSL

- add infraID in props common/Map/Layers/GeoJSONs and add editorInfraID in editor slice

- remove eslint warning

- create commonState builder

- change osrdConfContext to osrdContext

- create mapViewer slice

- fix eslint error

- fix error after rebase

- add test mapViewer

- fix review's comments

front: change type snakeCase to PascalCase and extends InfraStateType to StdcmConf and OperationalStudyConf

front: create and use useOsrdConfSelector

front: create and use useInfraID

front: create and use useOsrdConfActions

front: create and use useUpdateInfraID

front: move featureInfoClick from infra reducer to osrdConf reducer

front: rename/harmonize

front: remove stdcmMode from store

front: fix

front: remove unnecessary condition

front: typo
  • Loading branch information
kmer2016 committed Dec 29, 2023
1 parent c2cbdfe commit 9d1478e
Show file tree
Hide file tree
Showing 133 changed files with 2,357 additions and 2,612 deletions.
26 changes: 16 additions & 10 deletions front/src/applications/editor/Editor.tsx
Original file line number Diff line number Diff line change
@@ -1,18 +1,17 @@
import cx from 'classnames';
import { isNil, toInteger } from 'lodash';
import React, { useCallback, useEffect, useMemo, useRef, useState } from 'react';
import { useDispatch, useSelector } from 'react-redux';
import { useNavigate, useParams } from 'react-router-dom';
import { useTranslation } from 'react-i18next';
import { useNavigate, useParams } from 'react-router-dom';
import cx from 'classnames';
import { isNil, toInteger } from 'lodash';

import 'applications/editor/Editor.scss';
import 'common/Map/Map.scss';

import { getInfraID } from 'reducers/osrdconf/selectors';
import type { EditorSliceActions } from 'reducers/editor';
import { getIsLoading } from 'reducers/main/mainSelector';
import { LoaderState } from 'common/Loader';
import { loadDataModel, selectLayers, updateTotalsIssue } from 'reducers/editor';
import { updateInfraID } from 'reducers/osrdconf';
import { loadDataModel, updateTotalsIssue } from 'reducers/editor';
import { updateViewport } from 'reducers/map';
import { useModal } from 'common/BootstrapSNCF/ModalSNCF';
import { useSwitchTypes } from 'applications/editor/tools/switchEdition/types';
Expand All @@ -30,7 +29,8 @@ import TOOL_TYPES from 'applications/editor/tools/toolTypes';
import type { CommonToolState } from 'applications/editor/tools/commonToolState';
import type { EditorState } from 'applications/editor/tools/types';
import type { MapRef } from 'react-map-gl/maplibre';
import type {
import { useInfraID, useOsrdActions } from 'common/osrdContext';
import {
EditorContextType,
ExtendedEditorContextType,
FullTool,
Expand All @@ -43,14 +43,16 @@ const Editor = () => {
const { t } = useTranslation();
const dispatch = useDispatch();
const navigate = useNavigate();
const { register } = useKeyboardShortcuts();
const { openModal, closeModal } = useModal();
const { updateInfraID, selectLayers } = useOsrdActions() as EditorSliceActions;
const mapRef = useRef<MapRef>(null);
const { urlInfra } = useParams();
const infraID = useSelector(getInfraID);
const infraID = useInfraID();
const isLoading = useSelector(getIsLoading);
const editorState = useSelector((state: { editor: EditorState }) => state.editor);
const switchTypes = useSwitchTypes(infraID);
const { register } = useKeyboardShortcuts();

/* eslint-disable @typescript-eslint/no-explicit-any */
const [toolAndState, setToolAndState] = useState<FullTool<any>>({
tool: TOOLS[TOOL_TYPES.SELECTION],
Expand All @@ -67,7 +69,10 @@ const Editor = () => {
const switchTool = useCallback(
({ toolType, toolState }: switchProps) => {
const tool = TOOLS[toolType];
const state = { ...tool.getInitialState({ infraID, switchTypes }), ...(toolState || {}) };
const state = {
...tool.getInitialState({ infraID, switchTypes }),
...(toolState || {}),
};
setToolAndState({
tool,
state,
Expand Down Expand Up @@ -304,6 +309,7 @@ const Editor = () => {
toolState: toolAndState.state,
activeTool: toolAndState.tool,
setToolState,
infraID,
}}
/>
{isSearchToolOpened && (
Expand Down
5 changes: 2 additions & 3 deletions front/src/applications/editor/Home.tsx
Original file line number Diff line number Diff line change
@@ -1,18 +1,17 @@
import React, { useEffect } from 'react';
import { useTranslation } from 'react-i18next';
import { useSelector } from 'react-redux';
import { Route, Routes } from 'react-router-dom';
import { GoLock } from 'react-icons/go';

import NavBarSNCF from 'common/BootstrapSNCF/NavBarSNCF';
import { osrdEditoastApi } from 'common/api/osrdEditoastApi';
import { getInfraID } from 'reducers/osrdconf/selectors';
import { ModalProvider } from 'common/BootstrapSNCF/ModalSNCF/ModalProvider';
import { useInfraID } from 'common/osrdContext';
import Editor from './Editor';

export default function HomeEditorUnplugged() {
const { t } = useTranslation(['home/home', 'referenceMap']);
const infraID = useSelector(getInfraID);
const infraID = useInfraID();
const [getInfraById, { data: infra }] = osrdEditoastApi.endpoints.getInfraById.useLazyQuery({});

/**
Expand Down
9 changes: 6 additions & 3 deletions front/src/applications/editor/Map.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,6 @@ import VirtualLayers from 'modules/simulationResult/components/SimulationResults
import EditorContext from 'applications/editor/context';
import { CUSTOM_ATTRIBUTION } from 'common/Map/const';
import { getEntity } from 'applications/editor/data/api';
import { getInfraID } from 'reducers/osrdconf/selectors';
import { getMapMouseEventNearestFeature } from 'utils/mapHelper';
import { getMap, getShowOSM, getTerrain3DExaggeration } from 'reducers/map/selectors';
import { LAYER_GROUPS_ORDER, LAYERS } from 'config/layerOrder';
Expand Down Expand Up @@ -55,6 +54,7 @@ interface MapProps<S extends CommonToolState = CommonToolState> {
viewport: Viewport;
setViewport: (newViewport: Partial<Viewport>, updateRouter?: boolean) => void;
mapRef: React.RefObject<MapRef>;
infraID: number | undefined;
}

interface MapState {
Expand All @@ -72,6 +72,7 @@ const MapUnplugged = ({
viewport,
setViewport,
children,
infraID,
}: PropsWithChildren<MapProps>) => {
const dispatch = useDispatch();
const mapBlankStyle = useMapBlankStyle();
Expand All @@ -81,7 +82,6 @@ const MapUnplugged = ({
isHovering: false,
});
const context = useContext(EditorContext) as EditorContextType<CommonToolState>;
const infraID = useSelector(getInfraID);
const switchTypes = useSwitchTypes(infraID);
const editorState = useSelector((state: { editor: EditorState }) => state.editor);
const showOSM = useSelector(getShowOSM);
Expand Down Expand Up @@ -303,7 +303,10 @@ const MapUnplugged = ({
</>
)}

<LineSearchLayer layerOrder={LAYER_GROUPS_ORDER[LAYERS.LINE_SEARCH.GROUP]} />
<LineSearchLayer
layerOrder={LAYER_GROUPS_ORDER[LAYERS.LINE_SEARCH.GROUP]}
infraID={infraID}
/>

<PlatformsLayer
colors={colors[mapStyle]}
Expand Down
7 changes: 3 additions & 4 deletions front/src/applications/editor/components/EntityError.tsx
Original file line number Diff line number Diff line change
@@ -1,18 +1,17 @@
import React, { FC, useMemo } from 'react';
import { useSelector } from 'react-redux';
import { useTranslation } from 'react-i18next';
import cx from 'classnames';
import { BsExclamationOctagon } from 'react-icons/bs';
import { isNil, uniqueId } from 'lodash';

import { EditorEntity } from 'types';
import type { EditorEntity } from 'types';
import { useInfraID } from 'common/osrdContext';
import { osrdEditoastApi } from 'common/api/osrdEditoastApi';
import { getInfraID } from 'reducers/osrdconf/selectors';
import { InfraErrorLine } from './InfraErrors/InfraError';

const EntityError: FC<{ entity: EditorEntity; className?: string }> = ({ entity, className }) => {
const { t } = useTranslation();
const infraID = useSelector(getInfraID);
const infraID = useInfraID();
const { data } = osrdEditoastApi.endpoints.getInfraByIdErrors.useQuery(
{
// Infra can be undefined, but in this case the query is skipped
Expand Down
8 changes: 4 additions & 4 deletions front/src/applications/editor/components/EntitySumUp.tsx
Original file line number Diff line number Diff line change
@@ -1,13 +1,14 @@
import React, { FC, useEffect, useState } from 'react';
import { useTranslation } from 'react-i18next';
import { flatMap, forEach, isNumber, uniq } from 'lodash';
import { useDispatch, useSelector } from 'react-redux';
import { useDispatch } from 'react-redux';
import { Dispatch } from 'redux';
import { TFunction } from 'i18next';
import cx from 'classnames';

import { LoaderFill } from 'common/Loader';
import {
import { useInfraID } from 'common/osrdContext';
import type {
BufferStopEntity,
CatenaryEntity,
EditorEntity,
Expand All @@ -18,7 +19,6 @@ import {
TrackSectionEntity,
} from 'types';
import { getSpeedSectionsNameString } from 'common/Map/Layers/SpeedLimits';
import { getInfraID } from 'reducers/osrdconf/selectors';
import { EditoastType } from '../tools/types';
import { NEW_ENTITY_ID } from '../data/utils';
import { getEntities, getEntity } from '../data/api';
Expand Down Expand Up @@ -302,7 +302,7 @@ const EntitySumUp: FC<
> = ({ entity, id, objType, classes, status, error }) => {
const dispatch = useDispatch();
const { t } = useTranslation();
const infraID = useSelector(getInfraID);
const infraID = useInfraID();
const [state, setState] = useState<
| { type: 'idle' }
| { type: 'loading' }
Expand Down
Original file line number Diff line number Diff line change
@@ -1,20 +1,21 @@
import React, { useState } from 'react';
import { useDispatch, useSelector } from 'react-redux';
import { useDispatch } from 'react-redux';
import { useTranslation } from 'react-i18next';

import { ConfirmModal, useModal } from 'common/BootstrapSNCF/ModalSNCF';
import { osrdEditoastApi } from 'common/api/osrdEditoastApi';
import { OPERATION_TYPE } from 'applications/editor/tools/types';

import Loader from 'common/Loader';
import { useInfraID } from 'common/osrdContext';
import { osrdEditoastApi } from 'common/api/osrdEditoastApi';
import { ConfirmModal, useModal } from 'common/BootstrapSNCF/ModalSNCF';

import { saveOperations } from 'reducers/editor';
import { getInfraID } from 'reducers/osrdconf/selectors';
import { OPERATION_TYPE } from 'applications/editor/tools/types';

const InfraErrorCorrectorModal = () => {
const { t } = useTranslation();
const dispatch = useDispatch();
const { closeModal } = useModal();

const infraId = useSelector(getInfraID);
const infraId = useInfraID();
const [isSaving, setIsSaving] = useState(false);

const { data: infraAutoFixes, isLoading } =
Expand Down
Original file line number Diff line number Diff line change
@@ -1,19 +1,19 @@
import React, { FC } from 'react';
import { useSelector } from 'react-redux';
import { useTranslation } from 'react-i18next';

import { Modal } from 'common/BootstrapSNCF/ModalSNCF';
import { useInfraID } from 'common/osrdContext';

import InfraErrorsList from './InfraErrorsList';
import { InfraError } from './types';
import { getInfraID } from '../../../../reducers/osrdconf/selectors';
import type { InfraError } from './types';

interface InfraErrorsModalProps {
onErrorClick: (infraId: number, item: InfraError) => void | Promise<void>;
}

const InfraErrorsModal: FC<InfraErrorsModalProps> = ({ onErrorClick }) => {
const { t } = useTranslation();
const infraID = useSelector(getInfraID);
const infraID = useInfraID();

return (
<Modal title={t('Editor.infra-errors.modal.title', { id: infraID })}>
Expand Down
29 changes: 16 additions & 13 deletions front/src/applications/editor/components/LayersModal.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -3,27 +3,30 @@ import { useDispatch, useSelector } from 'react-redux';
import { groupBy, mapKeys, mapValues, sum, isString, isArray, uniq } from 'lodash';
import { useTranslation } from 'react-i18next';
import { MdSpeed } from 'react-icons/md';
import { GiElectric } from 'react-icons/gi';
import { TbRectangleVerticalFilled } from 'react-icons/tb';

import bufferStopIcon from 'assets/pictures/layersicons/bufferstop.svg';
import { EDITOAST_TO_LAYER_DICT } from 'applications/editor/tools/types';
import type { LayerType, EditoastType } from 'applications/editor/tools/types';
import type { EditorEntity } from 'types';

import pslsIcon from 'assets/pictures/layersicons/layer_tivs.svg';
import switchesIcon from 'assets/pictures/layersicons/switches.svg';
import detectorsIcon from 'assets/pictures/layersicons/detectors.svg';
import trackSectionsIcon from 'assets/pictures/layersicons/layer_adv.svg';
import signalsIcon from 'assets/pictures/layersicons/layer_signal.svg';
import pslsIcon from 'assets/pictures/layersicons/layer_tivs.svg';
import bufferStopIcon from 'assets/pictures/layersicons/bufferstop.svg';
import trackSectionsIcon from 'assets/pictures/layersicons/layer_adv.svg';

import SwitchSNCF from 'common/BootstrapSNCF/SwitchSNCF/SwitchSNCF';
import { useInfraID } from 'common/osrdContext';
import { Modal } from 'common/BootstrapSNCF/ModalSNCF';
import { osrdEditoastApi } from 'common/api/osrdEditoastApi';
import SwitchSNCF from 'common/BootstrapSNCF/SwitchSNCF/SwitchSNCF';
import MapSettingsMapStyle from 'common/Map/Settings/MapSettingsMapStyle';
import MapSettingsBackgroundSwitches from 'common/Map/Settings/MapSettingsBackgroundSwitches';
import { GiElectric } from 'react-icons/gi';
import { LayerType, EDITOAST_TO_LAYER_DICT, EditoastType } from 'applications/editor/tools/types';
import { selectLayers } from 'reducers/editor';
import { EditorEntity } from 'types';

import { getMap } from 'reducers/map/selectors';
import { getInfraID } from 'reducers/osrdconf/selectors';
import { osrdEditoastApi } from 'common/api/osrdEditoastApi';
import { updateLayersSettings } from 'reducers/map';
import MapSettingsMapStyle from 'common/Map/Settings/MapSettingsMapStyle';
import { editorSliceActions } from 'reducers/editor';

export const LAYERS: Array<{ layers: LayerType[]; icon: string | JSX.Element }> = [
{ layers: ['track_sections'], icon: trackSectionsIcon },
Expand Down Expand Up @@ -56,7 +59,7 @@ const LayersModal: FC<LayersModalProps> = ({
const { t } = useTranslation();
const { layersSettings } = useSelector(getMap);
const [selectedLayers, setSelectedLayers] = useState<Set<LayerType>>(initialLayers);
const infraID = useSelector(getInfraID);
const infraID = useInfraID();

const { data: speedLimitTags } = osrdEditoastApi.endpoints.getInfraByIdSpeedLimitTags.useQuery({
id: infraID as number,
Expand Down Expand Up @@ -138,7 +141,7 @@ const LayersModal: FC<LayersModalProps> = ({
return result;
}, new Set(selectedLayers));
setSelectedLayers(newSelectedLayersList);
dispatch(selectLayers(newSelectedLayersList));
dispatch(editorSliceActions.selectLayers(newSelectedLayersList));
onChange({ newLayers: newSelectedLayersList });
}}
name={`editor-layer-${layerKey}`}
Expand Down
32 changes: 18 additions & 14 deletions front/src/applications/editor/nav.tsx
Original file line number Diff line number Diff line change
@@ -1,23 +1,27 @@
import React from 'react';
import { Dispatch } from 'redux';
import { MapRef } from 'react-map-gl/maplibre';
import { NavigateFunction } from 'react-router-dom';
import { IconType } from 'react-icons';
import { BsExclamationOctagon, BsSliders2 } from 'react-icons/bs';
import { FaRegCompass } from 'react-icons/fa';
import { GiRailway } from 'react-icons/gi';
import { FaRegCompass } from 'react-icons/fa';
import { GoSearch, GoZoomIn, GoZoomOut } from 'react-icons/go';
import { BsExclamationOctagon, BsSliders2 } from 'react-icons/bs';
import { isNil } from 'lodash';
import { NavigateFunction } from 'react-router-dom';
import { MapRef } from 'react-map-gl/maplibre';

import { Viewport } from 'reducers/map';
import { selectLayers } from 'reducers/editor';
import { Shortcut } from 'utils/hooks/useKeyboardShortcuts';
import { ModalContextType } from 'common/BootstrapSNCF/ModalSNCF/ModalProvider';
import type { Shortcut } from 'utils/hooks/useKeyboardShortcuts';

import LayersModal from 'applications/editor/components/LayersModal';
import { EDITOAST_TO_LAYER_DICT } from 'applications/editor/tools/types';
import { SelectionState } from 'applications/editor/tools/selection/types';
import type { EditorState, EditoastType } from 'applications/editor/tools/types';
import type { EditorContextType, Tool } from 'applications/editor/tools/editorContextTypes';

import InfraSelectorModal from 'common/InfraSelector/InfraSelectorModal';
import { GoSearch, GoZoomIn, GoZoomOut } from 'react-icons/go';
import { EditorState, EDITOAST_TO_LAYER_DICT, EditoastType } from './tools/types';
import LayersModal from './components/LayersModal';
import { SelectionState } from './tools/selection/types';
import { EditorContextType, Tool } from './tools/editorContextTypes';
import type { ModalContextType } from 'common/BootstrapSNCF/ModalSNCF/ModalProvider';

import type { Viewport } from 'reducers/map';
import { editorSliceActions } from 'reducers/editor';

const ZOOM_DEFAULT = 5;
const ZOOM_DELTA = 1.5;
Expand Down Expand Up @@ -154,7 +158,7 @@ const NavButtons: NavButton[][] = [
const newSet = new Set(editorState.editorLayers);
if (newSet.has('errors')) newSet.delete('errors');
else newSet.add('errors');
dispatch(selectLayers(newSet));
dispatch(editorSliceActions.selectLayers(newSet));
},
},
],
Expand Down
Loading

0 comments on commit 9d1478e

Please sign in to comment.