Skip to content
This repository has been archived by the owner on May 4, 2024. It is now read-only.

Commit

Permalink
test-graph-view | integration with dev + split rework
Browse files Browse the repository at this point in the history
  • Loading branch information
marcosantiagomuro committed Oct 8, 2023
1 parent 58d656f commit 13d7d06
Show file tree
Hide file tree
Showing 6 changed files with 104 additions and 21 deletions.
2 changes: 1 addition & 1 deletion frontend/src/Components/RoadConditions/ConditionsMap.tsx
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import MapWrapper from '../Map/MapWrapper';
import { FC } from 'react';
import '../../css/road_conditions.css';
import '../../css/road_details.css';
import ForceMapUpdate from '../Map/ForceMapUpdate';

interface Props {
Expand Down
10 changes: 8 additions & 2 deletions frontend/src/Components/RoadDetails/MapArea.tsx
Original file line number Diff line number Diff line change
@@ -1,15 +1,21 @@
import React from 'react';
import ImageGallery from './ImageGallery';
import MapWrapper from '../Map/MapWrapper';
import ForceMapUpdate from '../Map/ForceMapUpdate';

interface Props {
triggerUpdate: number;
}
/**
* The map area op the road details(road inspect) page
*/
const MapArea: React.FC = () => {
const MapArea: React.FC<Props> = ({ triggerUpdate }) => {
return (
<div className="map-area">
<div className="map_area" style={{ height: '100%' }}>
<MapWrapper></MapWrapper>
<MapWrapper>
<ForceMapUpdate triggerUpdate={triggerUpdate} />
</MapWrapper>
</div>
<div className="imageGallery_container">
<ImageGallery /> {/* Use the imageGallery component */}
Expand Down
13 changes: 0 additions & 13 deletions frontend/src/css/road_conditions.css

This file was deleted.

8 changes: 8 additions & 0 deletions frontend/src/css/road_details.css
Original file line number Diff line number Diff line change
Expand Up @@ -81,6 +81,14 @@
transition: 0.4s;
}

.road-conditions-graph {
position: relative;
width: 100vw;
display: flex;
justify-content: center;
align-items: center;
}

/* Style to change the background color when switched on */
input:checked + .slider {
background-color: #4caf50;
Expand Down
2 changes: 1 addition & 1 deletion frontend/src/pages/RoadConditions.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ import { GraphProvider } from '../context/GraphContext';
import Split from 'react-split';

import '../css/split.css';
import '../css/road_conditions.css';
import '../css/road_details.css';
import { useEffect, useState } from 'react';
import { getConditionsWay } from '../queries/conditions';

Expand Down
90 changes: 86 additions & 4 deletions frontend/src/pages/RoadDetails.tsx
Original file line number Diff line number Diff line change
@@ -1,19 +1,101 @@
import { useState } from 'react';
import { useEffect, useState } from 'react';

import '../css/road_details.css'; // Import the CSS file
import MapArea from '../Components/RoadDetails/MapArea';
import RoadImage from '../Components/RoadDetails/RoadImage';
import TopBar from '../Components/RoadDetails/TopBar';
import Split from 'react-split';
import ConditionsGraph from '../Components/RoadConditions/ConditionsGraph';
import { ChartData } from 'chart.js';
import { getConditionsWay } from '../queries/conditions';
import '../css/split.css';

const RoadDetails = () => {
const [showMapImageMode, setShowRoadImageMode] = useState(false);
const [wayData, setWayData] =
useState<ChartData<'scatter', number[], number>>();
const [triggerUpdate, setTriggerUpdate] = useState<number>(0);
const [splitElement, setSplitElement] = useState<React.ReactNode>(
<Split
className="split"
direction="vertical"
sizes={[45, 55]}
minSize={150}
snapOffset={10}
onDragEnd={() => {
setTriggerUpdate((prev) => prev + 1);
}}
// dragInterval={50}
>
{showMapImageMode ? (
<RoadImage />
) : (
<MapArea triggerUpdate={triggerUpdate} />
)}
<ConditionsGraph data={wayData} />
</Split>,
);

useEffect(() => {
console.log('showMapImageMode has been changed');
setSplitElement(
<Split
className="split"
direction="vertical"
sizes={[45, 55]}
minSize={150}
snapOffset={10}
onDragEnd={() => {
setTriggerUpdate((prev) => prev + 1);
}}
>
{showMapImageMode ? (
<RoadImage />
) : (
<MapArea triggerUpdate={triggerUpdate} />
)}
<ConditionsGraph data={wayData} />
</Split>,
);
}, [showMapImageMode, wayData, triggerUpdate]);

useEffect(() => {
getConditionsWay('0cba0666-d75e-45bd-9da6-62ef0fe9544c', (wc) => {
console.log(wc);
setWayData({
labels: wc.map((p) => p.way_dist * 100),
datasets: [
{
//@ts-ignore
type: 'line' as const,
label: 'KPI',
borderColor: 'rgb(255, 99, 132)',
borderWidth: 2,
fill: false,
tension: 0.2,
data: wc.map((p) => p.KPI),
yAxisID: 'KPI',
},
{
//@ts-ignore
type: 'line' as const,
label: 'DI',
borderColor: 'rgb(120, 245, 23)',
borderWidth: 2,
fill: false,
tension: 0.2,
data: wc.map((p) => p.DI),
yAxisID: 'DI',
},
],
});
});
}, []);

return (
<div>
<TopBar isToggleOn={setShowRoadImageMode} />
{showMapImageMode ? <RoadImage /> : <MapArea />}
{/* TODO: putting plots here */}
<div className="plot-area">{/* Content for the plot area */}</div>
{splitElement}
</div>
);
};
Expand Down

0 comments on commit 13d7d06

Please sign in to comment.