-
Notifications
You must be signed in to change notification settings - Fork 46
/
Copy pathRollingStockSelector.tsx
94 lines (90 loc) · 3.21 KB
/
RollingStockSelector.tsx
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
import React, { useRef } from 'react';
import RollingStockModal from 'modules/rollingStock/components/RollingStockSelector/RollingStockModal';
import icon from 'assets/pictures/components/train.svg';
import {
comfort2pictogram,
RollingStockInfo,
} from 'modules/rollingStock/components/RollingStockSelector/RollingStockHelpers';
import { useModal } from 'common/BootstrapSNCF/ModalSNCF';
import { RollingStockComfortType, RollingStock } from 'common/api/osrdEditoastApi';
type RollingStockProps = {
rollingStockSelected?: RollingStock;
rollingStockComfort?: RollingStockComfortType;
image?: JSX.Element;
comfort?: string;
comfortType?: string;
choice?: string;
condensed?: boolean;
};
const RollingStockSelector = ({
rollingStockSelected,
rollingStockComfort,
image,
comfort,
comfortType,
choice,
condensed,
}: RollingStockProps) => {
const { openModal } = useModal();
const ref2scroll = useRef<HTMLDivElement>(null);
return (
<div className="osrd-config-item mb-2">
<div
className="osrd-config-item-container osrd-config-item-clickable"
data-testid="rollingstock-selector"
onClick={() => {
openModal(<RollingStockModal ref2scroll={ref2scroll} />, 'lg');
}}
role="button"
tabIndex={0}
>
{rollingStockSelected !== undefined && rollingStockSelected !== null ? (
<div className="rollingstock-selector-minicard">
{condensed ? (
<div className="d-flex align-items-center font-weight-bold">
<RollingStockInfo
rollingStock={rollingStockSelected}
showMiddle={false}
showSeries={false}
/>
<div className="rollingstock-container-img ml-4">
<div className="rollingstock-img d-flex align-items-center">{image}</div>
</div>
<span className="mx-2">{comfort2pictogram(rollingStockComfort)}</span>
</div>
) : (
<>
<RollingStockInfo
rollingStock={rollingStockSelected}
showMiddle={false}
showEnd={false}
/>
<div className="rollingstock-container-img">
<div className="rollingstock-img">{image}</div>
</div>
<div className="rollingstock-minicard-end">
<span className="rollingstock-info-comfort text-uppercase small">
<span className="text-uppercase font-weight-bold">{comfort}</span>
<span className="mx-2">{comfort2pictogram(rollingStockComfort)}</span>
{comfortType}
</span>
<RollingStockInfo
rollingStock={rollingStockSelected}
showMiddle={false}
showSeries={false}
/>
</div>
</>
)}
</div>
) : (
<div className="d-flex align-items-center">
<img width="32px" className="mr-2" src={icon} alt="infraIcon" />
{choice}
</div>
)}
</div>
</div>
);
};
export default RollingStockSelector;