Skip to content

Commit

Permalink
fixup! front: select op with map when add train
Browse files Browse the repository at this point in the history
  • Loading branch information
theocrsb committed Dec 6, 2024
1 parent 2646380 commit 4042a90
Show file tree
Hide file tree
Showing 2 changed files with 46 additions and 44 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ import React, { useEffect, useState, useMemo } from 'react';

import { Select } from '@osrd-project/ui-core';
import { point } from '@turf/helpers';

import { useTranslation } from 'react-i18next';
import { IoFlag } from 'react-icons/io5';
import { RiMapPin2Fill, RiMapPin3Fill } from 'react-icons/ri';
Expand All @@ -14,16 +15,18 @@ import { useSelector } from 'react-redux';
import { editoastToEditorEntity } from 'applications/editor/data/api';
import type { TrackSectionEntity } from 'applications/editor/tools/trackEdition/types';
import { calculateDistanceAlongTrack } from 'applications/editor/tools/utils';
import { useScenarioContext } from 'applications/operationalStudies/hooks/useScenarioContext';
import type { ManageTrainSchedulePathProperties } from 'applications/operationalStudies/types';
import {
osrdEditoastApi,
type OperationalPointPart,
type OperationalPoint,
type OperationalPointReference,
type TrackReference,
} from 'common/api/osrdEditoastApi';
import { useOsrdConfActions, useOsrdConfSelectors } from 'common/osrdContext';
import { setPointIti } from 'modules/trainschedule/components/ManageTrainSchedule/ManageTrainScheduleMap/setPointIti';
import { type PathStep } from 'reducers/osrdconf/types';
import { getPointCoordinates } from 'utils/geometry';

type FeatureInfoClickType = {
displayPopup: boolean;
Expand Down Expand Up @@ -52,10 +55,14 @@ function RenderPopup({ pathProperties }: RenderPopupProps) {
return !!properties?.track_id || !!properties?.track_name;
}, [featureInfoClick]);

const { getTrackSectionsByIds } = useScenarioContext();

const [trackOffset, setTrackOffset] = useState(0);
const [trackSelected, setTrackSelected] = useState<TrackReference>();
const [selectOp, setSelectedOp] = useState<SelectOp>();
const [trackOptions, setTrackOptions] = useState<TrackReference[]>([]);
const [selectOp, setSelectedOp] = useState<any>();
const [trackOptions, setTrackOptions] = useState<(TrackReference & { coordinates: number[] })[]>(
[]
);

const [getTrackEntity] =
osrdEditoastApi.endpoints.postInfraByInfraIdObjectsAndObjectType.useLazyQuery();
Expand All @@ -70,7 +77,7 @@ function RenderPopup({ pathProperties }: RenderPopupProps) {
return;

const trackId = featureInfoClick.feature.properties.id;

console.log(trackId, 'trackId');
const result = await getTrackEntity({
infraId: infraId!,
objectType: isOperationalPoint ? 'OperationalPoint' : 'TrackSection',
Expand All @@ -82,46 +89,44 @@ function RenderPopup({ pathProperties }: RenderPopupProps) {
return;
}

let trackResults = [];

if (isOperationalPoint) {
const trackParts = result[0].railjson.parts as OperationalPointPart[];
const trackIds = trackParts.map((part) => part.track);

trackResults = await getTrackEntity({
infraId: infraId!,
objectType: 'TrackSection',
body: trackIds,
}).unwrap();

setSelectedOp({
secondary_code: result[0].railjson.extensions.sncf.ch,
uic: result[0].railjson.extensions.identifier.uic,
track_reference: trackSelected,
coordinates: featureInfoClick.coordinates.slice(0, 2),
const { parts } = result[0].railjson as OperationalPoint;
const trackIds = parts.map((part) => part.track);

const tracks = await getTrackSectionsByIds(trackIds);

const trackPartCoordinates = parts.map((step) => {
const track = tracks[step.track];

return {
coordinates: getPointCoordinates(track.geo, track.length, step.position),
track_name: track.extensions?.sncf?.track_name as string,
};
});

if (!trackResults.length) {
console.error('No track found');
return;
}
console.log(trackPartCoordinates, 'trackPartCoordinates');

// setSelectedOp({
// secondary_code: result[0].railjson.extensions.sncf.ch,
// uic: result[0].railjson.extensions.identifier.uic,
// track_reference: trackSelected,
// coordinates: featureInfoClick.coordinates.slice(0, 2),
// });

const options = trackResults.map((track) => ({
track_id: track.railjson.extensions.sncf.track_number,
track_name: track.railjson.extensions.sncf.track_name,
}));
setTrackOptions(options);
setTrackOptions(trackPartCoordinates);
}

// definir pour les points opérationnels
setTrackSelected(undefined);
const trackEntity = editoastToEditorEntity<TrackSectionEntity>(result[0], 'TrackSection');
const offset = calculateDistanceAlongTrack(
trackEntity,
point(featureInfoClick.coordinates.slice(0, 2)).geometry,
'millimeters'
);
setTrackOffset(offset);
if (!isOperationalPoint) {
// if operationnalPoint we already have coordinates
const trackEntity = editoastToEditorEntity<TrackSectionEntity>(result[0], 'TrackSection');
const offset = calculateDistanceAlongTrack(
trackEntity,
point(featureInfoClick.coordinates.slice(0, 2)).geometry,
'millimeters'
);
setTrackOffset(offset);
}
};

if (featureInfoClick.displayPopup) {
Expand All @@ -140,16 +145,16 @@ function RenderPopup({ pathProperties }: RenderPopupProps) {
const { properties: trackProperties } = featureInfoClick.feature;
const coordinates = featureInfoClick.coordinates.slice(0, 2);

console.log(trackProperties, 'trackProperties');

let pathStepProperties: PathStep;
if (isOperationalPoint && selectOp) {
console.log('if');
console.log(selectOp, 'selectedOp');
pathStepProperties = {
id: nextId(),
...selectOp,
};
console.log(pathStepProperties, 'pathStepProperties dans isOperationalPoint');
} else {
console.log('else');
pathStepProperties = {
id: nextId(),
coordinates,
Expand All @@ -165,10 +170,9 @@ function RenderPopup({ pathProperties }: RenderPopupProps) {
} as PathStep;
}

console.log(pathStepProperties, 'path render');
console.log(trackSelected, 'trackSelected');

// renvoyer UIC CH et trackReference

return (
<Popup
longitude={coordinates[0]}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,8 +23,6 @@ export function setPointIti(
store.dispatch(updateDestination(pathStep));
break;
default:
console.log('store pathStep : ', pathStep);
console.log('store pathProperties : ', pathProperties);
if (pathProperties) {
store.dispatch(addVia({ newVia: pathStep, pathProperties }));
} else {
Expand Down

0 comments on commit 4042a90

Please sign in to comment.