diff options
| author | Georgios Andreadis <g.andreadis@student.tudelft.nl> | 2017-09-22 21:20:54 +0200 |
|---|---|---|
| committer | Georgios Andreadis <g.andreadis@student.tudelft.nl> | 2017-09-23 10:06:18 +0200 |
| commit | bf7708f658cc6299a3b775afe24459b5a808c54d (patch) | |
| tree | 227520267968759e2a2f1e29e6f3edfeb4e3cf8a /src/components/app/sidebars/simulation | |
| parent | e722cf117d0e3ebac20237f96764fb08cab49a62 (diff) | |
Restructure component and container directories
Diffstat (limited to 'src/components/app/sidebars/simulation')
6 files changed, 137 insertions, 0 deletions
diff --git a/src/components/app/sidebars/simulation/ExperimentMetadataComponent.js b/src/components/app/sidebars/simulation/ExperimentMetadataComponent.js new file mode 100644 index 00000000..3649045b --- /dev/null +++ b/src/components/app/sidebars/simulation/ExperimentMetadataComponent.js @@ -0,0 +1,12 @@ +import React from "react"; + +const ExperimentMetadataComponent = ({experimentName, pathName, traceName, schedulerName}) => ( + <div> + <h2>{experimentName}</h2> + <p>Path: <strong>{pathName}</strong></p> + <p>Trace: <strong>{traceName}</strong></p> + <p>Scheduler: <strong>{schedulerName}</strong></p> + </div> +); + +export default ExperimentMetadataComponent; diff --git a/src/components/app/sidebars/simulation/LoadMetricComponent.js b/src/components/app/sidebars/simulation/LoadMetricComponent.js new file mode 100644 index 00000000..e72e6b67 --- /dev/null +++ b/src/components/app/sidebars/simulation/LoadMetricComponent.js @@ -0,0 +1,33 @@ +import React from "react"; +import {SIM_HIGH_COLOR, SIM_LOW_COLOR, SIM_MID_HIGH_COLOR, SIM_MID_LOW_COLOR} from "../../../../util/colors"; +import {LOAD_NAME_MAP} from "../../../../util/simulation-load"; + +const LoadMetricComponent = ({loadMetric}) => ( + <div> + <div>Colors represent <strong>{LOAD_NAME_MAP[loadMetric]}</strong></div> + <div className="btn-group mb-2" style={{display: "flex"}}> + <span + className="btn btn-secondary" + style={{backgroundColor: SIM_LOW_COLOR, flex: 1}} + title="0-25%" + /> + <span + className="btn btn-secondary" + style={{backgroundColor: SIM_MID_LOW_COLOR, flex: 1}} + title="25-50%" + /> + <span + className="btn btn-secondary" + style={{backgroundColor: SIM_MID_HIGH_COLOR, flex: 1}} + title="50-75%" + /> + <span + className="btn btn-secondary" + style={{backgroundColor: SIM_HIGH_COLOR, flex: 1}} + title="75-100%" + /> + </div> + </div> +); + +export default LoadMetricComponent; diff --git a/src/components/app/sidebars/simulation/SimulationSidebarComponent.js b/src/components/app/sidebars/simulation/SimulationSidebarComponent.js new file mode 100644 index 00000000..92651dfc --- /dev/null +++ b/src/components/app/sidebars/simulation/SimulationSidebarComponent.js @@ -0,0 +1,22 @@ +import React from "react"; +import ExperimentMetadataContainer from "../../../../containers/app/sidebars/simulation/ExperimentMetadataContainer"; +import LoadMetricContainer from "../../../../containers/app/sidebars/simulation/LoadMetricContainer"; +import TraceContainer from "../../../../containers/app/sidebars/simulation/TraceContainer"; +import Sidebar from "../Sidebar"; +import "./SimulationSidebarComponent.css"; + +const SimulationSidebarComponent = () => { + return ( + <Sidebar isRight={false}> + <div className="simulation-sidebar-container flex-column"> + <ExperimentMetadataContainer/> + <LoadMetricContainer/> + <div className="trace-container"> + <TraceContainer/> + </div> + </div> + </Sidebar> + ); +}; + +export default SimulationSidebarComponent; diff --git a/src/components/app/sidebars/simulation/SimulationSidebarComponent.sass b/src/components/app/sidebars/simulation/SimulationSidebarComponent.sass new file mode 100644 index 00000000..82af97fa --- /dev/null +++ b/src/components/app/sidebars/simulation/SimulationSidebarComponent.sass @@ -0,0 +1,8 @@ +.simulation-sidebar-container + display: flex + height: 100% + max-height: 100% + +.trace-container + flex: 1 + overflow-y: scroll diff --git a/src/components/app/sidebars/simulation/TaskComponent.js b/src/components/app/sidebars/simulation/TaskComponent.js new file mode 100644 index 00000000..f7f65817 --- /dev/null +++ b/src/components/app/sidebars/simulation/TaskComponent.js @@ -0,0 +1,42 @@ +import approx from "approximate-number"; +import React from "react"; +import {convertSecondsToFormattedTime} from "../../../../util/date-time"; + +const TaskComponent = ({task, flopsLeft}) => { + let stateInfo; + + if (flopsLeft === task.totalFlopCount) { + stateInfo = ( + <div> + <span className="fa fa-hourglass-half mr-2"/> + Waiting + </div> + ); + } else if (flopsLeft > 0) { + stateInfo = ( + <div> + <span className="fa fa-refresh mr-2"/> + Running ({approx(task.totalFlopCount - flopsLeft)} / {approx(task.totalFlopCount)} FLOPS) + </div> + ); + } else { + stateInfo = ( + <div> + <span className="fa fa-check mr-2"/> + Completed + </div> + ); + } + + return ( + <li className="list-group-item flex-column align-items-start"> + <div className="d-flex w-100 justify-content-between"> + <h5 className="mb-1">{approx(task.totalFlopCount)} FLOPS</h5> + <small>Starts at {convertSecondsToFormattedTime(task.startTick)}</small> + </div> + {stateInfo} + </li> + ); +}; + +export default TaskComponent; diff --git a/src/components/app/sidebars/simulation/TraceComponent.js b/src/components/app/sidebars/simulation/TraceComponent.js new file mode 100644 index 00000000..b43a8cea --- /dev/null +++ b/src/components/app/sidebars/simulation/TraceComponent.js @@ -0,0 +1,20 @@ +import React from "react"; +import TaskContainer from "../../../../containers/app/sidebars/simulation/TaskContainer"; + +const TraceComponent = ({jobs}) => ( + <div> + <h3>Trace</h3> + {jobs.map(job => ( + <div key={job.id}> + <h4>Job: {job.name}</h4> + <ul className="list-group"> + {job.taskIds.map(taskId => ( + <TaskContainer taskId={taskId} key={taskId}/> + ))} + </ul> + </div> + ))} + </div> +); + +export default TraceComponent; |
