1- import React , { useState , useEffect } from 'react'
1+ import React , { useState } from 'react'
2+ import 'jsoneditor-react/es/editor.min.css'
23import { useSocket } from './hooks/useSocket.js'
4+
35import Map from './Map.jsx'
4- import PlaybackOptions from './components/PlaybackOptions'
56import Loading from './components/Loading'
6- import styled from 'styled-components'
7- import ResetIcon from './icons/svg/resetIcon.svg'
8- import TransparentButton from './components/TransparentButton'
9- import SideMenu from './components/SideMenu'
10-
11- const Wrapper = styled . div `
12- position: absolute;
13- z-index: 2;
14- bottom: 3rem;
15- left: 11.3rem;
16- `
7+ import PlaybackOptions from './components/PlaybackOptions'
8+ import ResetExperiment from './components/ResetExperiment'
9+ import EditExperimentModal from './components/EditExperimentModal'
10+ import Logo from './components/Logo'
11+ import ExperimentDoneModal from './components/ExperimentDoneModal/index.jsx'
1712
1813const App = ( ) => {
1914 const [ activeCar , setActiveCar ] = useState ( null )
@@ -30,9 +25,12 @@ const App = () => {
3025 const [ commercialAreasLayer , setCommercialAreasLayer ] = useState ( false )
3126 const [ busLineLayer , setBusLineLayer ] = useState ( true )
3227 const [ kommunLayer , setKommunLayer ] = useState ( true )
33- const [ newParameters , setNewParameters ] = useState ( { } )
28+ const [ experimentParameters , setExperimentParameters ] = useState ( { } )
3429 const [ currentParameters , setCurrentParameters ] = useState ( { } )
3530 const [ fleets , setFleets ] = useState ( { } )
31+ const [ showEditExperimentModal , setShowEditExperimentModal ] = useState ( false )
32+ const [ showExperimentDoneModal , setShowExperimentDoneModal ] = useState ( false )
33+ const [ previousExperimentId , setPreviousExperimentId ] = useState ( null )
3634
3735 const [ connected , setConnected ] = useState ( false )
3836
@@ -61,12 +59,13 @@ const App = () => {
6159 setBusLineLayer,
6260 }
6361
64- const newExperiment = ( ) => {
65- socket . emit ( 'experimentParameters' , newParameters )
62+ const restartSimulation = ( ) => {
63+ setShowEditExperimentModal ( false )
64+ socket . emit ( 'experimentParameters' , experimentParameters )
6665 }
6766
68- useSocket ( 'reset ' , ( ) => {
69- console . log ( 'received reset ' )
67+ useSocket ( 'init ' , ( ) => {
68+ console . log ( 'Init experiment ' )
7069 setBookings ( [ ] )
7170 setPassengers ( [ ] )
7271 setCars ( [ ] )
@@ -78,6 +77,12 @@ const App = () => {
7877 socket . emit ( 'speed' , speed ) // reset speed on server
7978 } )
8079
80+ useSocket ( 'reset' , ( ) => {
81+ console . log ( 'Reset experiment' )
82+ setPreviousExperimentId ( experimentParameters . id )
83+ setShowExperimentDoneModal ( true )
84+ } )
85+
8186 function upsert ( array , object , idProperty = 'id' , deep = false ) {
8287 const currentIndex = array . findIndex (
8388 ( k ) => k [ idProperty ] === object [ idProperty ]
@@ -183,7 +188,11 @@ const App = () => {
183188 } )
184189
185190 useSocket ( 'parameters' , ( currentParameters ) => {
186- console . log ( 'new experimentId' , currentParameters . id )
191+ console . log ( 'ExperimentId' , currentParameters . id )
192+
193+ if ( ! previousExperimentId ) {
194+ setPreviousExperimentId ( currentParameters . id )
195+ }
187196
188197 setCurrentParameters ( currentParameters )
189198 const layerSetFunctions = {
@@ -206,10 +215,8 @@ const App = () => {
206215 }
207216 } )
208217
209- console . log ( currentParameters )
210218 setFleets ( currentParameters . fleets )
211-
212- setNewParameters ( currentParameters )
219+ setExperimentParameters ( currentParameters )
213220 } )
214221 const [ passengers , setPassengers ] = React . useState ( [ ] )
215222 useSocket ( 'passengers' , ( passengers ) => {
@@ -257,27 +264,18 @@ const App = () => {
257264 setConnected ( true )
258265 } )
259266
267+ /**
268+ * Update the fleets part of the parameters.
269+ */
270+ const saveFleets = ( updatedJson ) => {
271+ setExperimentParameters ( { ...experimentParameters , fleets : updatedJson } )
272+ }
273+
260274 return (
261275 < >
262- < Wrapper >
263- < TransparentButton onClick = { ( ) => resetSimulation ( ) } >
264- < img src = { ResetIcon } alt = "Reset" />
265- </ TransparentButton >
266- </ Wrapper >
267- < SideMenu
268- activeLayers = { activeLayers }
269- currentParameters = { currentParameters }
270- newParameters = { newParameters }
271- newExperiment = { newExperiment }
272- setNewParameters = { setNewParameters }
273- fleets = { fleets }
274- />
276+ < Logo />
275277
276- < PlaybackOptions
277- onPause = { onPause }
278- onPlay = { onPlay }
279- onSpeedChange = { onSpeedChange }
280- />
278+ { /* Loader. */ }
281279 { ( ! connected || reset || ! cars . length || ! bookings . length ) && (
282280 < Loading
283281 connected = { connected }
@@ -290,6 +288,34 @@ const App = () => {
290288 parameters = { currentParameters }
291289 />
292290 ) }
291+
292+ { /* Playback controls. */ }
293+ < PlaybackOptions
294+ onPause = { onPause }
295+ onPlay = { onPlay }
296+ onSpeedChange = { onSpeedChange }
297+ />
298+
299+ { /* Reset experiment button. */ }
300+ < ResetExperiment resetSimulation = { resetSimulation } />
301+
302+ { /* Edit experiment modal. */ }
303+ < EditExperimentModal
304+ fleets = { fleets }
305+ show = { showEditExperimentModal }
306+ setShow = { setShowEditExperimentModal }
307+ restartSimulation = { restartSimulation }
308+ saveFleets = { saveFleets }
309+ />
310+
311+ { /* Experiment done modal. */ }
312+ < ExperimentDoneModal
313+ experimentId = { previousExperimentId }
314+ show = { showExperimentDoneModal }
315+ setShow = { setShowExperimentDoneModal }
316+ />
317+
318+ { /* Map. */ }
293319 < Map
294320 activeLayers = { activeLayers }
295321 passengers = { passengers }
@@ -303,6 +329,9 @@ const App = () => {
303329 time = { time }
304330 setActiveCar = { setActiveCar }
305331 lineShapes = { lineShapes }
332+ showEditExperimentModal = { showEditExperimentModal }
333+ setShowEditExperimentModal = { setShowEditExperimentModal }
334+ experimentId = { currentParameters . id }
306335 />
307336 </ >
308337 )
0 commit comments