Skip to content

Commit

Permalink
front: pr comments
Browse files Browse the repository at this point in the history
  • Loading branch information
Wadjetz committed Oct 30, 2024
1 parent 65c375f commit 50b6a35
Show file tree
Hide file tree
Showing 11 changed files with 55 additions and 56 deletions.
30 changes: 10 additions & 20 deletions front/src/applications/stdcm/components/StdcmForm/StdcmConsist.tsx
Original file line number Diff line number Diff line change
@@ -1,19 +1,18 @@
import { useEffect, useMemo } from 'react';
import { useEffect } from 'react';

import { Input, ComboBox } from '@osrd-project/ui-core';
import { useTranslation } from 'react-i18next';
import { useSelector } from 'react-redux';

import useStdcmTowedRollingStock from 'applications/stdcm/hooks/useStdcmTowedRollingStock';
import type { LightRollingStockWithLiveries, TowedRollingStock } from 'common/api/osrdEditoastApi';
import { useOsrdConfActions, useOsrdConfSelectors } from 'common/osrdContext';
import { useOsrdConfActions } from 'common/osrdContext';
import SpeedLimitByTagSelector from 'common/SpeedLimitByTagSelector/SpeedLimitByTagSelector';
import { useStoreDataForSpeedLimitByTagSelector } from 'common/SpeedLimitByTagSelector/useStoreDataForSpeedLimitByTagSelector';
import RollingStock2Img from 'modules/rollingStock/components/RollingStock2Img';
import { useStoreDataForRollingStockSelector } from 'modules/rollingStock/components/RollingStockSelector/useStoreDataForRollingStockSelector';
import useFilterRollingStock from 'modules/rollingStock/hooks/useFilterRollingStock';
import useFilterTowedRollingStock from 'modules/towedRollingStock/hooks/useFilterTowedRollingStock';
import { type StdcmConfSliceActions } from 'reducers/osrdconf/stdcmConf';
import type { StdcmConfSelectors } from 'reducers/osrdconf/stdcmConf/selectors';
import { useAppDispatch } from 'store';

import StdcmCard from './StdcmCard';
Expand All @@ -39,11 +38,12 @@ const StdcmConsist = ({ disabled = false }: StdcmConfigCardProps) => {
const { speedLimitByTag, speedLimitsByTags, dispatchUpdateSpeedLimitByTag } =
useStoreDataForSpeedLimitByTagSelector({ isStdcm: true });

const { updateRollingStockID, updateTowedRollingStockID, updateLoadingGaugeType } =
const { updateRollingStockID, updateTowedRollingStockID } =
useOsrdConfActions() as StdcmConfSliceActions;
const dispatch = useAppDispatch();

const { rollingStock } = useStoreDataForRollingStockSelector();
const { towedRollingStock } = useStdcmTowedRollingStock();

const {
totalMass,
Expand All @@ -57,28 +57,20 @@ const StdcmConsist = ({ disabled = false }: StdcmConfigCardProps) => {
const { filters, searchRollingStock, searchRollingStockById, filteredRollingStockList } =
useFilterRollingStock({ isStdcm: true });

const { getTowedRollingStockID } = useOsrdConfSelectors() as StdcmConfSelectors;
const towedRollingStockID = useSelector(getTowedRollingStockID);
const {
filteredTowedRollingStockList,
searchTowedRollingStock,
searchTowedRollingStockById,
filters: towedRsFilters,
allTowedRollingStocks,
} = useFilterTowedRollingStock();

const selectedTowedRollingStock = useMemo(
() => allTowedRollingStocks.find((trs) => trs.id === towedRollingStockID),
[towedRollingStockID, allTowedRollingStocks]
);

useEffect(() => {
if (selectedTowedRollingStock) {
searchTowedRollingStock(selectedTowedRollingStock.name);
if (towedRollingStock) {
searchTowedRollingStock(towedRollingStock.name);
} else {
searchTowedRollingStock('');
}
}, [selectedTowedRollingStock]);
}, [towedRollingStock]);

const getLabel = (rs: LightRollingStockWithLiveries) => {
let res = '';
Expand Down Expand Up @@ -107,14 +99,12 @@ const StdcmConsist = ({ disabled = false }: StdcmConfigCardProps) => {
searchRollingStock(e.target.value);
if (e.target.value.trim().length === 0) {
dispatch(updateRollingStockID(undefined));
dispatch(updateLoadingGaugeType(undefined));
dispatchUpdateSpeedLimitByTag(null);
}
};

const onSelectSuggestion = (option?: LightRollingStockWithLiveries) => {
dispatch(updateRollingStockID(option?.id));
dispatch(updateLoadingGaugeType(option?.loading_gauge));
dispatchUpdateSpeedLimitByTag(null);
};

Expand Down Expand Up @@ -153,8 +143,8 @@ const StdcmConsist = ({ disabled = false }: StdcmConfigCardProps) => {
label={t('consist.towedRollingStock')}
value={towedRsFilters.text.toUpperCase()}
onClick={() => {
if (selectedTowedRollingStock?.id !== undefined) {
searchTowedRollingStockById(selectedTowedRollingStock.id);
if (towedRollingStock?.id !== undefined) {
searchTowedRollingStockById(towedRollingStock.id);
}
}}
onChange={(e) => {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -129,7 +129,9 @@ const SimulationReportSheet = ({
<Text style={styles.convoyAndRoute.convoyInfoTitles}>{t('speedLimitByTag')}</Text>
<Text style={styles.convoyAndRoute.convoyInfoData}>{speedLimitByTag || '-'}</Text>
<Text style={styles.convoyAndRoute.convoyInfoTitles}>{t('towedMaterial')}</Text>
<Text style={styles.convoyAndRoute.convoyInfoData}>-</Text>
<Text style={styles.convoyAndRoute.convoyInfoData}>
{consist?.towedRollingStock?.name ?? '-'}
</Text>
<Text style={styles.convoyAndRoute.convoyInfoTitles}>{t('maxSpeed')}</Text>
<Text style={styles.convoyAndRoute.convoyInfoData}>
{`${Math.floor(convoyMaxSpeed)} km/h`}
Expand Down
14 changes: 12 additions & 2 deletions front/src/applications/stdcm/hooks/useStdcmForm.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ import { useMemo } from 'react';

import { useSelector } from 'react-redux';

import useStdcmTowedRollingStock from 'applications/stdcm/hooks/useStdcmTowedRollingStock';
import { useOsrdConfSelectors } from 'common/osrdContext';
import { useStoreDataForRollingStockSelector } from 'modules/rollingStock/components/RollingStockSelector/useStoreDataForRollingStockSelector';
import type { StdcmConfSelectors } from 'reducers/osrdconf/stdcmConf/selectors';
Expand All @@ -12,13 +13,13 @@ import type { StdcmSimulationInputs } from '../types';
const useStdcmForm = (): StdcmSimulationInputs => {
const { getStdcmPathSteps, getSpeedLimitByTag, getTotalMass, getTotalLength, getMaxSpeed } =
useOsrdConfSelectors() as StdcmConfSelectors;

const pathSteps = useSelector(getStdcmPathSteps);
const speedLimitByTag = useSelector(getSpeedLimitByTag);
const totalMass = useSelector(getTotalMass);
const totalLength = useSelector(getTotalLength);
const maxSpeed = useSelector(getMaxSpeed);
const { rollingStock } = useStoreDataForRollingStockSelector();
const { towedRollingStock } = useStdcmTowedRollingStock();

const currentSimulationInputs = useMemo(() => {
const origin = pathSteps.at(0);
Expand All @@ -30,13 +31,22 @@ const useStdcmForm = (): StdcmSimulationInputs => {
departureTime: originArrival?.arrivalTime,
consist: {
tractionEngine: rollingStock,
towedRollingStock,
totalMass,
totalLength,
maxSpeed,
speedLimitByTag,
},
};
}, [pathSteps, rollingStock, speedLimitByTag, totalMass, totalLength, maxSpeed]);
}, [
pathSteps,
rollingStock,
towedRollingStock,
speedLimitByTag,
totalMass,
totalLength,
maxSpeed,
]);

return currentSimulationInputs;
};
Expand Down
27 changes: 27 additions & 0 deletions front/src/applications/stdcm/hooks/useStdcmTowedRollingStock.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
import { useSelector } from 'react-redux';

import { osrdEditoastApi } from 'common/api/osrdEditoastApi';
import { useOsrdConfSelectors } from 'common/osrdContext';
import type { StdcmConfSelectors } from 'reducers/osrdconf/stdcmConf/selectors';

const useStdcmTowedRollingStock = () => {
const { getTowedRollingStockID } = useOsrdConfSelectors() as StdcmConfSelectors;
const towedRollingStockId = useSelector(getTowedRollingStockID);

const { data: towedRollingStock } =
osrdEditoastApi.endpoints.getTowedRollingStockByTowedRollingStockId.useQuery(
{
towedRollingStockId: towedRollingStockId!,
},
{
skip: !towedRollingStockId,
}
);

return {
towedRollingStockId,
towedRollingStock: towedRollingStockId ? towedRollingStock : undefined,
};
};

export default useStdcmTowedRollingStock;
4 changes: 1 addition & 3 deletions front/src/applications/stdcm/utils/formatStdcmConf.ts
Original file line number Diff line number Diff line change
Expand Up @@ -60,7 +60,6 @@ export const checkStdcmConf = (
totalLength,
totalMass,
maxSpeed,
loadingGaugeType,
} = osrdconf;
let error = false;
if (pathSteps[0] === null) {
Expand Down Expand Up @@ -169,7 +168,6 @@ export const checkStdcmConf = (
totalMass,
totalLength,
maxSpeed,
loadingGaugeType,
towedRollingStockID,
margin: standardStdcmAllowance,
gridMarginBefore,
Expand Down Expand Up @@ -201,6 +199,6 @@ export const formatStdcmPayload = (
time_gap_before: toMsOrUndefined(validConfig.gridMarginAfter),
work_schedule_group_id: validConfig.workScheduleGroupId,
electrical_profile_set_id: validConfig.electricalProfileSetId,
loading_gauge_type: validConfig.loadingGaugeType,
loading_gauge_type: 'G2', // default value as the user can't select one
},
});
1 change: 0 additions & 1 deletion front/src/applications/stdcm/views/StdcmView.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -74,7 +74,6 @@ const StdcmView = () => {
updateStdcmConfigWithData({
rollingStockID: consist?.tractionEngine?.id,
towedRollingStockID: consist?.towedRollingStock?.id,
loadingGaugeType: consist?.tractionEngine?.loading_gauge,
totalLength: consist?.totalLength,
totalMass: consist?.totalMass,
maxSpeed: consist?.maxSpeed,
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import { useEffect, useState } from 'react';

import { eq } from 'lodash';
import { isEqual } from 'lodash';

import { osrdEditoastApi, type TowedRollingStock } from 'common/api/osrdEditoastApi';
import { setFailure } from 'reducers/main';
Expand All @@ -20,7 +20,7 @@ function filterTowedRollingStocks(
towedRollingStockList: TowedRollingStock[],
filters: TowedRollingStockFilters
) {
if (eq(filters, initialFilters)) return towedRollingStockList;
if (isEqual(filters, initialFilters)) return towedRollingStockList;
return towedRollingStockList.filter(({ id, name }) => {
if (filters.id !== undefined) {
return id === filters.id;
Expand All @@ -35,7 +35,6 @@ function filterTowedRollingStocks(
const useFilterTowedRollingStock = () => {
const dispatch = useAppDispatch();
const [filters, setFilters] = useState<TowedRollingStockFilters>({ text: '' });
const [searchIsLoading, setSearchIsLoading] = useState(true);
const [filteredTowedRollingStockList, setFilteredTowedRollingStockList] = useState<
TowedRollingStock[]
>([]);
Expand All @@ -51,16 +50,10 @@ const useFilterTowedRollingStock = () => {

const searchTowedRollingStock = (value: string) => {
setFilters({ ...filters, id: undefined, text: value });
setSearchIsLoading(true);
};

const searchTowedRollingStockById = (id?: number) => {
setFilters({ ...filters, id });
setSearchIsLoading(true);
};

const resetFilters = () => {
setFilters(initialFilters);
};

useEffect(() => {
Expand All @@ -73,7 +66,6 @@ const useFilterTowedRollingStock = () => {
const newFilteredTowedRollingStocks = filterTowedRollingStocks(allTowedRollingStocks, filters);
setTimeout(() => {
setFilteredTowedRollingStockList(newFilteredTowedRollingStocks);
setSearchIsLoading(false);
}, 0);
// eslint-disable-next-line react-hooks/exhaustive-deps
}, [isSuccess, filters, allTowedRollingStocks]);
Expand All @@ -82,8 +74,6 @@ const useFilterTowedRollingStock = () => {
allTowedRollingStocks,
filteredTowedRollingStockList,
filters,
searchIsLoading,
resetFilters,
searchTowedRollingStock,
searchTowedRollingStockById,
};
Expand Down
8 changes: 0 additions & 8 deletions front/src/reducers/osrdconf/stdcmConf/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -60,12 +60,6 @@ export const stdcmConfSlice = createSlice({
) {
state.towedRollingStockID = action.payload;
},
updateLoadingGaugeType(
state: Draft<OsrdStdcmConfState>,
action: PayloadAction<OsrdStdcmConfState['loadingGaugeType']>
) {
state.loadingGaugeType = action.payload;
},
updateStdcmConfigWithData(
state: Draft<OsrdStdcmConfState>,
action: PayloadAction<
Expand All @@ -78,7 +72,6 @@ export const stdcmConfSlice = createSlice({
| 'totalLength'
| 'totalMass'
| 'maxSpeed'
| 'loadingGaugeType'
>
>
) {
Expand All @@ -87,7 +80,6 @@ export const stdcmConfSlice = createSlice({
state.totalLength = action.payload.totalLength;
state.totalMass = action.payload.totalMass;
state.maxSpeed = action.payload.maxSpeed;
state.loadingGaugeType = action.payload.loadingGaugeType;
state.pathSteps = action.payload.pathSteps;
state.speedLimitByTag = action.payload.speedLimitByTag;
},
Expand Down
2 changes: 0 additions & 2 deletions front/src/reducers/osrdconf/stdcmConf/selectors.ts
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,6 @@ const buildStdcmConfSelectors = () => {
getTotalLength: makeOsrdConfSelector('totalLength'),
getMaxSpeed: makeOsrdConfSelector('maxSpeed'),
getTowedRollingStockID: makeOsrdConfSelector('towedRollingStockID'),
getMaxSpeed: makeOsrdConfSelector('maxSpeed'),
getStdcmPathSteps,
getStdcmOrigin: (state: RootState) => {
const pathSteps = getStdcmPathSteps(state);
Expand All @@ -35,7 +34,6 @@ const buildStdcmConfSelectors = () => {
}
return destination!;
},
getLoadingGaugeType: makeOsrdConfSelector('loadingGaugeType'),
};
};

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -135,11 +135,6 @@ describe('stdcmConfReducers', () => {
const state = store.getState()[stdcmConfSlice.name];
expect(state.towedRollingStockID).toEqual(11);
});
it('should handle loadingGaugeType', () => {
store.dispatch(stdcmConfSliceActions.updateLoadingGaugeType('G1'));
const state = store.getState()[stdcmConfSlice.name];
expect(state.loadingGaugeType).toEqual('G1');
});
});

describe('StdcmPathStep updates', () => {
Expand Down
2 changes: 0 additions & 2 deletions front/src/reducers/osrdconf/types.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,6 @@ import type { AllowanceValue, ArrivalTimeTypes, StdcmStopTypes } from 'applicati
import type {
Comfort,
Distribution,
LoadingGaugeType,
PathItemLocation,
ReceptionSignal,
} from 'common/api/osrdEditoastApi';
Expand Down Expand Up @@ -52,7 +51,6 @@ export interface OsrdStdcmConfState extends OsrdConfState {
totalLength?: number;
maxSpeed?: number;
towedRollingStockID?: number;
loadingGaugeType?: LoadingGaugeType;
}

export type PathStep = PathItemLocation & {
Expand Down

0 comments on commit 50b6a35

Please sign in to comment.