summaryrefslogtreecommitdiff
path: root/src/components/app/sidebars/topology/machine
diff options
context:
space:
mode:
authorGeorgios Andreadis <g.andreadis@student.tudelft.nl>2017-09-22 21:20:54 +0200
committerGeorgios Andreadis <g.andreadis@student.tudelft.nl>2017-09-23 10:06:18 +0200
commitbf7708f658cc6299a3b775afe24459b5a808c54d (patch)
tree227520267968759e2a2f1e29e6f3edfeb4e3cf8a /src/components/app/sidebars/topology/machine
parente722cf117d0e3ebac20237f96764fb08cab49a62 (diff)
Restructure component and container directories
Diffstat (limited to 'src/components/app/sidebars/topology/machine')
-rw-r--r--src/components/app/sidebars/topology/machine/BackToRackComponent.js10
-rw-r--r--src/components/app/sidebars/topology/machine/DeleteMachineComponent.js10
-rw-r--r--src/components/app/sidebars/topology/machine/MachineNameComponent.js7
-rw-r--r--src/components/app/sidebars/topology/machine/MachineSidebarComponent.js26
-rw-r--r--src/components/app/sidebars/topology/machine/UnitAddComponent.js38
-rw-r--r--src/components/app/sidebars/topology/machine/UnitComponent.js16
-rw-r--r--src/components/app/sidebars/topology/machine/UnitListComponent.js20
-rw-r--r--src/components/app/sidebars/topology/machine/UnitTabsComponent.js54
8 files changed, 181 insertions, 0 deletions
diff --git a/src/components/app/sidebars/topology/machine/BackToRackComponent.js b/src/components/app/sidebars/topology/machine/BackToRackComponent.js
new file mode 100644
index 00000000..19e33904
--- /dev/null
+++ b/src/components/app/sidebars/topology/machine/BackToRackComponent.js
@@ -0,0 +1,10 @@
+import React from "react";
+
+const BackToRackComponent = ({onClick}) => (
+ <div className="btn btn-secondary btn-block" onClick={onClick}>
+ <span className="fa fa-angle-left mr-2"/>
+ Back to rack
+ </div>
+);
+
+export default BackToRackComponent;
diff --git a/src/components/app/sidebars/topology/machine/DeleteMachineComponent.js b/src/components/app/sidebars/topology/machine/DeleteMachineComponent.js
new file mode 100644
index 00000000..7ba08352
--- /dev/null
+++ b/src/components/app/sidebars/topology/machine/DeleteMachineComponent.js
@@ -0,0 +1,10 @@
+import React from "react";
+
+const DeleteMachineComponent = ({onClick}) => (
+ <div className="btn btn-danger btn-block" onClick={onClick}>
+ <span className="fa fa-trash mr-2"/>
+ Delete this machine
+ </div>
+);
+
+export default DeleteMachineComponent;
diff --git a/src/components/app/sidebars/topology/machine/MachineNameComponent.js b/src/components/app/sidebars/topology/machine/MachineNameComponent.js
new file mode 100644
index 00000000..321e350d
--- /dev/null
+++ b/src/components/app/sidebars/topology/machine/MachineNameComponent.js
@@ -0,0 +1,7 @@
+import React from "react";
+
+const MachineNameComponent = ({position}) => (
+ <h2>Machine at slot {position}</h2>
+);
+
+export default MachineNameComponent;
diff --git a/src/components/app/sidebars/topology/machine/MachineSidebarComponent.js b/src/components/app/sidebars/topology/machine/MachineSidebarComponent.js
new file mode 100644
index 00000000..cf4db80e
--- /dev/null
+++ b/src/components/app/sidebars/topology/machine/MachineSidebarComponent.js
@@ -0,0 +1,26 @@
+import React from "react";
+import LoadBarContainer from "../../../../../containers/app/sidebars/elements/LoadBarContainer";
+import LoadChartContainer from "../../../../../containers/app/sidebars/elements/LoadChartContainer";
+import BackToRackContainer from "../../../../../containers/app/sidebars/topology/machine/BackToRackContainer";
+import DeleteMachineContainer from "../../../../../containers/app/sidebars/topology/machine/DeleteMachineContainer";
+import MachineNameContainer from "../../../../../containers/app/sidebars/topology/machine/MachineNameContainer";
+import UnitTabsContainer from "../../../../../containers/app/sidebars/topology/machine/UnitTabsContainer";
+
+const MachineSidebarComponent = ({inSimulation, machineId}) => {
+ return (
+ <div>
+ <MachineNameContainer/>
+ <BackToRackContainer/>
+ {inSimulation ?
+ <div>
+ <LoadBarContainer objectType="machine" objectId={machineId}/>
+ <LoadChartContainer objectType="machine" objectId={machineId}/>
+ </div> :
+ <DeleteMachineContainer/>
+ }
+ <UnitTabsContainer/>
+ </div>
+ );
+};
+
+export default MachineSidebarComponent;
diff --git a/src/components/app/sidebars/topology/machine/UnitAddComponent.js b/src/components/app/sidebars/topology/machine/UnitAddComponent.js
new file mode 100644
index 00000000..f16700df
--- /dev/null
+++ b/src/components/app/sidebars/topology/machine/UnitAddComponent.js
@@ -0,0 +1,38 @@
+import PropTypes from "prop-types";
+import React from "react";
+
+class UnitAddComponent extends React.Component {
+ static propTypes = {
+ units: PropTypes.array.isRequired,
+ onAdd: PropTypes.func.isRequired,
+ };
+
+ render() {
+ return (
+ <div className="form-inline">
+ <div className="form-group w-100">
+ <select
+ className="form-control w-75 mr-1"
+ ref={unitSelect => this.unitSelect = unitSelect}
+ >
+ {this.props.units.map(unit => (
+ <option value={unit.id} key={unit.id}>
+ {unit.manufacturer + " " + unit.family + " " + unit.model + " " + unit.generation}
+ </option>
+ ))}
+ </select>
+ <button
+ type="submit"
+ className="btn btn-primary"
+ onClick={() => this.props.onAdd(parseInt(this.unitSelect.value, 10))}
+ >
+ <span className="fa fa-plus mr-2"/>
+ Add
+ </button>
+ </div>
+ </div>
+ );
+ }
+}
+
+export default UnitAddComponent;
diff --git a/src/components/app/sidebars/topology/machine/UnitComponent.js b/src/components/app/sidebars/topology/machine/UnitComponent.js
new file mode 100644
index 00000000..c734f508
--- /dev/null
+++ b/src/components/app/sidebars/topology/machine/UnitComponent.js
@@ -0,0 +1,16 @@
+import React from "react";
+
+const UnitComponent = ({unit, onDelete, inSimulation}) => (
+ <li className="d-flex list-group-item justify-content-between align-items-center">
+ {unit.manufacturer + " " + unit.family + " " + unit.model + " " + unit.generation}
+ {inSimulation ?
+ undefined :
+ <span className="btn btn-outline-danger" onClick={onDelete}>
+ <span className="fa fa-trash mr-2"/>
+ Delete
+ </span>
+ }
+ </li>
+);
+
+export default UnitComponent;
diff --git a/src/components/app/sidebars/topology/machine/UnitListComponent.js b/src/components/app/sidebars/topology/machine/UnitListComponent.js
new file mode 100644
index 00000000..683f6023
--- /dev/null
+++ b/src/components/app/sidebars/topology/machine/UnitListComponent.js
@@ -0,0 +1,20 @@
+import React from "react";
+import UnitContainer from "../../../../../containers/app/sidebars/topology/machine/UnitContainer";
+
+const UnitListComponent = ({unitType, unitIds, inSimulation}) => (
+ <ul className="list-group mt-1">
+ {unitIds.length !== 0 ?
+ unitIds.map((unitId, index) => (
+ <UnitContainer unitType={unitType} unitId={unitId} index={index} key={index}/>
+ )) :
+ <div className="alert alert-info">
+ {inSimulation ?
+ <strong>No units of this type in this machine</strong> :
+ <span><strong>No units...</strong> Add some with the menu above!</span>
+ }
+ </div>
+ }
+ </ul>
+);
+
+export default UnitListComponent;
diff --git a/src/components/app/sidebars/topology/machine/UnitTabsComponent.js b/src/components/app/sidebars/topology/machine/UnitTabsComponent.js
new file mode 100644
index 00000000..2113d6d8
--- /dev/null
+++ b/src/components/app/sidebars/topology/machine/UnitTabsComponent.js
@@ -0,0 +1,54 @@
+import React from "react";
+import UnitAddContainer from "../../../../../containers/app/sidebars/topology/machine/UnitAddContainer";
+import UnitListContainer from "../../../../../containers/app/sidebars/topology/machine/UnitListContainer";
+
+const UnitTabsComponent = ({inSimulation}) => (
+ <div>
+ <ul className="nav nav-tabs mt-2 mb-1" role="tablist">
+ <li className="nav-item">
+ <a className="nav-link active" data-toggle="tab" href="#cpu-units" role="tab">CPU</a>
+ </li>
+ <li className="nav-item">
+ <a className="nav-link" data-toggle="tab" href="#gpu-units" role="tab">GPU</a>
+ </li>
+ <li className="nav-item">
+ <a className="nav-link" data-toggle="tab" href="#memory-units" role="tab">Memory</a>
+ </li>
+ <li className="nav-item">
+ <a className="nav-link" data-toggle="tab" href="#storage-units" role="tab">Storage</a>
+ </li>
+ </ul>
+ <div className="tab-content">
+ <div className="tab-pane active" id="cpu-units" role="tabpanel">
+ {inSimulation ?
+ undefined :
+ <UnitAddContainer unitType="cpu"/>
+ }
+ <UnitListContainer unitType="cpu"/>
+ </div>
+ <div className="tab-pane" id="gpu-units" role="tabpanel">
+ {inSimulation ?
+ undefined :
+ <UnitAddContainer unitType="gpu"/>
+ }
+ <UnitListContainer unitType="gpu"/>
+ </div>
+ <div className="tab-pane" id="memory-units" role="tabpanel">
+ {inSimulation ?
+ undefined :
+ <UnitAddContainer unitType="memory"/>
+ }
+ <UnitListContainer unitType="memory"/>
+ </div>
+ <div className="tab-pane" id="storage-units" role="tabpanel">
+ {inSimulation ?
+ undefined :
+ <UnitAddContainer unitType="storage"/>
+ }
+ <UnitListContainer unitType="storage"/>
+ </div>
+ </div>
+ </div>
+);
+
+export default UnitTabsComponent;