diff --git a/front/src/applications/stdcmV2/components/StdcmConsist.tsx b/front/src/applications/stdcmV2/components/StdcmConsist.tsx index de712595a6b..6eda5a1b752 100644 --- a/front/src/applications/stdcmV2/components/StdcmConsist.tsx +++ b/front/src/applications/stdcmV2/components/StdcmConsist.tsx @@ -41,7 +41,7 @@ const StdcmConsist = ({ setCurrentSimulationInputs, disabled = false }: StdcmCon const { rollingStock } = useStoreDataForRollingStockSelector(); const { filters, searchRollingStock, searchRollingStockById, filteredRollingStockList } = - useFilterRollingStock(); + useFilterRollingStock({ isStdcm: true }); const getLabel = (rs: LightRollingStockWithLiveries) => { let res = ''; diff --git a/front/src/assets/rollingStock/freightRollingStocks.ts b/front/src/assets/rollingStock/freightRollingStocks.ts new file mode 100644 index 00000000000..df4e305e683 --- /dev/null +++ b/front/src/assets/rollingStock/freightRollingStocks.ts @@ -0,0 +1,113 @@ +const FREIGHT_ROLLING_STOCKS = [ + '7200GH', + '15000', + '22200G', + '26000US', + '27000US', + '37000US', + '60000US', + 'TC64700', + '67400A', + '69400US', + '75000US', + '75300US', + '75400US', + 'EU4000US', + 'JT42US', + '27000UM', + '60000UM', + '67400AUM', + '75000UM', + '75300UM', + '75400UM', + 'EU4000UM', + '1CLASS92', + '1G1206', + '1GA3000C', + '20200G', + '20200P', + '22200BM', + '22200GS', + '22200IR2', + '22200IRS', + '25100', + '25150', + '25200REV', + '25500100', + '25500G', + '27000', + '2CFL3000', + '2CLASS92', + '2G1206', + '2SNCBT13', + '2Y8000GG', + '2Y8000PP', + '316500', + '36000MUX', + '36000US', + '63001A', + '63109A', + '63500A', + '63500ACH', + '65000A', + '6500G', + '6500P', + '6500V160', + '65500A', + '66000A', + '66400A', + '66700', + '67000BP', + '67200UM', + '67200US', + '67300AG', + '68000B', + '71000A', + '72000TGV', + '72001BG', + '7200GS', + '7200PH', + '72021BG', + '72021BP', + '7400P', + '8100', + '8100A100', + '8500G', + '8500P100', + '9200', + 'CFD2001', + 'CFD550', + 'CFL1600', + 'CFL1800', + 'CFL3600', + 'CFLBB850', + 'CFLBB900', + 'CFTA825', + 'DBBR185', + 'DE18UM', + 'DE18US', + 'G1000US', + 'G1206UM', + 'G1206US', + 'G2000US', + 'PE6500', + 'PE7200', + 'PE8500', + 'PE8500P2', + 'PE9200', + 'SA16500G', + 'SNCB20', + 'SNCB27', + 'SNCBHL12', + 'SNCBT13', + 'TRAXF140', + 'Y6200A', + 'Y7100A', + 'Y7400A', + 'Y7400B', + 'Y8000AG', + 'Y8000AP', + 'Y9000US', +]; + +export default FREIGHT_ROLLING_STOCKS; diff --git a/front/src/modules/rollingStock/hooks/useFilterRollingStock.tsx b/front/src/modules/rollingStock/hooks/useFilterRollingStock.tsx index f330ed4af60..8db17146fb1 100644 --- a/front/src/modules/rollingStock/hooks/useFilterRollingStock.tsx +++ b/front/src/modules/rollingStock/hooks/useFilterRollingStock.tsx @@ -1,5 +1,6 @@ -import { useState, useEffect } from 'react'; +import { useState, useEffect, useMemo } from 'react'; +import FREIGHT_ROLLING_STOCKS from 'assets/rollingStock/freightRollingStocks'; import { osrdEditoastApi } from 'common/api/osrdEditoastApi'; import type { LightRollingStock, LightRollingStockWithLiveries } from 'common/api/osrdEditoastApi'; import { setFailure } from 'reducers/main'; @@ -129,7 +130,7 @@ export function computeFilter(filter: RollingStockFilterKeys, filters: RollingSt }; } -export default function useFilterRollingStock() { +const useFilterRollingStock = ({ isStdcm } = { isStdcm: false }) => { const dispatch = useAppDispatch(); const [filters, setFilters] = useState(initialFilters); @@ -143,10 +144,19 @@ export default function useFilterRollingStock() { pageSize: 1000, }); + const usefulRollingStocks = useMemo( + () => + isStdcm + ? allRollingStocks.filter((rs) => FREIGHT_ROLLING_STOCKS.includes(rs.name)) + : allRollingStocks, + [isStdcm, allRollingStocks] + ); + const [searchIsLoading, setSearchIsLoading] = useState(true); - const [filteredRollingStockList, setFilteredRollingStockList] = - useState(allRollingStocks); + const [filteredRollingStockList, setFilteredRollingStockList] = useState< + LightRollingStockWithLiveries[] + >([]); const searchRollingStock = (value: string) => { setFilters({ ...filters, id: undefined, text: value }); @@ -174,18 +184,18 @@ export default function useFilterRollingStock() { }, [isError]); useEffect(() => { - const newFilteredRollingStock = filterRollingStocks(allRollingStocks, filters); + const newFilteredRollingStock = filterRollingStocks(usefulRollingStocks, filters); setFilteredRollingStockList(newFilteredRollingStock); }, [isSuccess]); useEffect(() => { - const newFilteredRollingStock = filterRollingStocks(allRollingStocks, filters); + const newFilteredRollingStock = filterRollingStocks(usefulRollingStocks, filters); setTimeout(() => { setFilteredRollingStockList(newFilteredRollingStock); setSearchIsLoading(false); }, 0); // eslint-disable-next-line react-hooks/exhaustive-deps - }, [filters, allRollingStocks]); + }, [filters, usefulRollingStocks]); return { filteredRollingStockList, @@ -196,4 +206,6 @@ export default function useFilterRollingStock() { searchRollingStockById, toggleFilter, }; -} +}; + +export default useFilterRollingStock;