-
Notifications
You must be signed in to change notification settings - Fork 46
/
Copy pathdrawRect.ts
43 lines (39 loc) · 1.32 KB
/
drawRect.ts
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
import { Chart, ConsolidatedRouteAspect } from 'reducers/osrdsimulation/types';
/**
* Draw rect for SpaceTimeChart
*/
const drawRect = (
chart: Chart,
classes: string,
dataSimulation: ConsolidatedRouteAspect,
groupID: string,
rotate: boolean,
id: string | null = null
) => {
if (dataSimulation.time_end === null || dataSimulation.time_start === null) {
return;
}
const width = rotate
? chart.x(dataSimulation.position_end) - chart.x(dataSimulation.position_start)
: chart.x(dataSimulation.time_end) - chart.x(dataSimulation.time_start);
const height = rotate
? chart.y(dataSimulation.time_end) - chart.y(dataSimulation.time_start)
: chart.y(dataSimulation.position_end) - chart.y(dataSimulation.position_start);
const drawZone = chart.drawZone.select(`#${groupID}`);
drawZone
.append('rect')
.attr('id', id)
.attr('class', `rect zoomable ${classes}`)
.datum(dataSimulation)
.attr('fill', dataSimulation.color)
.attr('stroke-width', 1)
.attr('stroke', dataSimulation.color)
.attr('x', chart.x(rotate ? dataSimulation.position_start : dataSimulation.time_start))
.attr(
'y',
chart.y(rotate ? dataSimulation.time_start : dataSimulation.position_start) - height * -1
)
.attr('width', width)
.attr('height', height * -1);
};
export default drawRect;