Skip to content

Commit 26c04f3

Browse files
committed
front: redesign top left of the scenario page
Signed-off-by: theocrsb <[email protected]>
1 parent 3180906 commit 26c04f3

File tree

8 files changed

+210
-125
lines changed

8 files changed

+210
-125
lines changed

front/public/locales/en/operationalStudies/scenario.json

+3-2
Original file line numberDiff line numberDiff line change
@@ -15,9 +15,10 @@
1515
"filterPlaceholder": "Filter, tags",
1616
"advancedFiltersPlaceholder": "Filter by family, serie, detail",
1717
"infraLoadingState": "{{step}}/7",
18+
"infrastructure": "Infrastructure",
1819
"lessDetails": "less details",
19-
"macroscopic": "Macroscopic",
20-
"microscopic": "Microscopic",
20+
"macroscopic": "MACRO",
21+
"microscopic": "MICRO",
2122
"modifyScenario": "Modify scenario",
2223
"moreDetails": "more details",
2324
"noElectricalProfileSet": "No electrical profile",

front/public/locales/fr/operationalStudies/scenario.json

+3-2
Original file line numberDiff line numberDiff line change
@@ -14,9 +14,10 @@
1414
},
1515
"filterPlaceholder": "Filtre, étiquettes",
1616
"infraLoadingState": "{{step}}/7",
17+
"infrastructure": "Infrastructure",
1718
"lessDetails": "moins de détails",
18-
"macroscopic": "Macroscopique",
19-
"microscopic": "Microscopique",
19+
"macroscopic": "MACRO",
20+
"microscopic": "MICRO",
2021
"modifyScenario": "Modifier le scénario",
2122
"moreDetails": "plus de détails",
2223
"noElectricalProfileSet": "Pas de profil électrique",

front/src/applications/operationalStudies/components/MicroMacroSwitch.tsx

+4-4
Original file line numberDiff line numberDiff line change
@@ -9,18 +9,18 @@ type MicroMacroSwitchProps = {
99
const MicroMacroSwitch = ({ isMacro, setIsMacro }: MicroMacroSwitchProps) => {
1010
const { t } = useTranslation('operationalStudies/scenario');
1111
return (
12-
<div className="tabs-container">
13-
<div className="tabs">
12+
<div className="micro-macro-container">
13+
<div className="micro-macro-buttons">
1414
<div
15-
className={cx('tab', { active: !isMacro })}
15+
className={cx('micro-button', { active: !isMacro })}
1616
role="button"
1717
tabIndex={0}
1818
onClick={() => setIsMacro(false)}
1919
>
2020
{t('microscopic')}
2121
</div>
2222
<div
23-
className={cx('tab', { active: isMacro })}
23+
className={cx('macro-button', { active: isMacro })}
2424
role="button"
2525
tabIndex={0}
2626
onClick={() => setIsMacro(true)}

front/src/applications/operationalStudies/components/Scenario/ScenarioDescription.tsx

+28-32
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,7 @@
11
import { ChevronLeft, Pencil } from '@osrd-project/ui-icons';
22
import { useTranslation } from 'react-i18next';
3-
import { GiElectric } from 'react-icons/gi';
43

54
import InfraLoadingState from 'applications/operationalStudies/components/Scenario/InfraLoadingState';
6-
import infraLogo from 'assets/pictures/components/tracks.svg';
75
import type { InfraWithState, ScenarioResponse } from 'common/api/osrdEditoastApi';
86
import { useModal } from 'common/BootstrapSNCF/ModalSNCF';
97
import AddAndEditScenarioModal from 'modules/scenario/components/AddOrEditScenarioModal';
@@ -25,14 +23,30 @@ const ScenarioDescription = ({
2523
const { openModal } = useModal();
2624

2725
return (
28-
<div className="scenario-details">
26+
<div>
2927
<div className="scenario-details-name">
3028
<span className="flex-grow-1 scenario-name text-truncate" title={scenario.name}>
3129
{scenario.name}
3230
</span>
31+
</div>
32+
33+
<div className="scenario-description">
34+
{scenario.description && (
35+
<div className="scenario-details-description">{scenario.description}</div>
36+
)}
37+
<div className="flex justify-end">
38+
<button
39+
type="button"
40+
className="scenario-collapse-button"
41+
aria-label={t('toggleTimetable')}
42+
onClick={() => collapseTimetable()}
43+
>
44+
<ChevronLeft />
45+
</button>
46+
</div>
3347
<button
3448
data-testid="editScenario"
35-
className="scenario-details-modify-button"
49+
className="update-scenario"
3650
type="button"
3751
aria-label={t('editScenario')}
3852
onClick={() =>
@@ -46,34 +60,17 @@ const ScenarioDescription = ({
4660
>
4761
<Pencil />
4862
</button>
49-
<button
50-
type="button"
51-
className="scenario-details-modify-button"
52-
aria-label={t('toggleTimetable')}
53-
onClick={() => collapseTimetable()}
54-
>
55-
<ChevronLeft />
56-
</button>
5763
</div>
58-
<div className="row">
59-
<div className="col-md-6">
60-
<div className="scenario-details-infra-name">
61-
<img src={infraLogo} alt="Infra logo" className="infra-logo mr-2" />
62-
{infra && <InfraLoadingState infra={infra} />}
63-
<span className="scenario-infra-name">{scenario.infra_name}</span>
64-
<small className="ml-auto text-muted">ID {scenario.infra_id}</small>
65-
</div>
66-
</div>
67-
<div className="col-md-6">
68-
<div className="scenario-details-electrical-profile-set">
69-
<span className="mr-2">
70-
<GiElectric />
71-
</span>
72-
{scenario.electrical_profile_set_id
73-
? scenario.electrical_profile_set_id
74-
: t('noElectricalProfileSet')}
75-
</div>
76-
</div>
64+
<div className="scenario-details-electrical-profile-set">
65+
{scenario.electrical_profile_set_id
66+
? scenario.electrical_profile_set_id
67+
: t('noElectricalProfileSet')}
68+
</div>
69+
70+
<div className="scenario-details-infra-name">
71+
{t('infrastructure')} :&nbsp;{infra && <InfraLoadingState infra={infra} />}
72+
<span className="scenario-infra-name">{scenario.infra_name}</span>&nbsp;| ID{' '}
73+
{scenario.infra_id}
7774
</div>
7875
{infra &&
7976
infra.state === 'TRANSIENT_ERROR' &&
@@ -89,7 +86,6 @@ const ScenarioDescription = ({
8986
{infra && infra.state === 'ERROR' && (
9087
<div className="scenario-details-infra-error mt-1">{t('errorMessages.hardErrorInfra')}</div>
9188
)}
92-
<div className="scenario-details-description">{scenario.description}</div>
9389
</div>
9490
);
9591
};

front/src/modules/trainschedule/components/Timetable/Timetable.tsx

+8-17
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import { useMemo, useState } from 'react';
22

3-
import { Alert, Download, Plus } from '@osrd-project/ui-icons';
3+
import { Alert } from '@osrd-project/ui-icons';
44
import cx from 'classnames';
55
import { compact } from 'lodash';
66
import { useTranslation } from 'react-i18next';
@@ -99,34 +99,25 @@ const Timetable = ({
9999
<div className="scenario-timetable">
100100
<div className="scenario-timetable-addtrains-buttons">
101101
<button
102-
className="btn btn-secondary btn-sm"
103-
type="button"
104-
data-testid="scenarios-import-train-schedule-button"
105-
onClick={() => setDisplayTrainScheduleManagement(MANAGE_TRAIN_SCHEDULE_TYPES.import)}
106-
>
107-
<span className="mr-2">
108-
<Download />
109-
</span>
110-
{t('timetable.importTrainSchedule')}
111-
</button>
112-
<button
113-
className="btn btn-primary btn-sm"
114102
type="button"
115103
data-testid="scenarios-add-train-schedule-button"
116104
onClick={() => {
117105
setDisplayTrainScheduleManagement(MANAGE_TRAIN_SCHEDULE_TYPES.add);
118106
}}
119107
>
120-
<span className="mr-2">
121-
<Plus />
122-
</span>
123108
{t('timetable.addTrainSchedule')}
124109
</button>
110+
<button
111+
type="button"
112+
data-testid="scenarios-import-train-schedule-button"
113+
onClick={() => setDisplayTrainScheduleManagement(MANAGE_TRAIN_SCHEDULE_TYPES.import)}
114+
>
115+
{t('timetable.importTrainSchedule')}
116+
</button>
125117
</div>
126118
<div
127119
className={cx('scenario-timetable-trains', {
128120
expanded: conflictsListExpanded,
129-
'with-details': showTrainDetails,
130121
})}
131122
>
132123
<TimetableToolbar

front/src/styles/scss/_variables.scss

+4
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,11 @@ $colors: (
4040
'error5': #ffeeed,
4141
'error60': #d91c1c,
4242
'error80': #6b0000,
43+
'grey20': #d3d1cf,
44+
'grey40': #94918e,
45+
'grey50': #797671,
4346
'grey60': #5c5955,
47+
'grey90': #1f1b17,
4448
'grey80': #312e2b,
4549
'primary60': #1844ef,
4650
'primary80': #1f0f96,

0 commit comments

Comments
 (0)