summaryrefslogtreecommitdiff
path: root/frontend/src/containers/modals
diff options
context:
space:
mode:
Diffstat (limited to 'frontend/src/containers/modals')
-rw-r--r--frontend/src/containers/modals/DeleteMachineModal.js37
-rw-r--r--frontend/src/containers/modals/DeleteProfileModal.js37
-rw-r--r--frontend/src/containers/modals/DeleteRackModal.js37
-rw-r--r--frontend/src/containers/modals/DeleteRoomModal.js37
-rw-r--r--frontend/src/containers/modals/EditRackNameModal.js44
-rw-r--r--frontend/src/containers/modals/EditRoomNameModal.js42
-rw-r--r--frontend/src/containers/modals/NewExperimentModal.js39
-rw-r--r--frontend/src/containers/modals/NewSimulationModal.js37
8 files changed, 310 insertions, 0 deletions
diff --git a/frontend/src/containers/modals/DeleteMachineModal.js b/frontend/src/containers/modals/DeleteMachineModal.js
new file mode 100644
index 00000000..eba37833
--- /dev/null
+++ b/frontend/src/containers/modals/DeleteMachineModal.js
@@ -0,0 +1,37 @@
+import React from "react";
+import { connect } from "react-redux";
+import { closeDeleteMachineModal } from "../../actions/modals/topology";
+import { deleteMachine } from "../../actions/topology/machine";
+import ConfirmationModal from "../../components/modals/ConfirmationModal";
+
+const DeleteMachineModalComponent = ({ visible, callback }) => (
+ <ConfirmationModal
+ title="Delete this machine"
+ message="Are you sure you want to delete this machine?"
+ show={visible}
+ callback={callback}
+ />
+);
+
+const mapStateToProps = state => {
+ return {
+ visible: state.modals.deleteMachineModalVisible
+ };
+};
+
+const mapDispatchToProps = dispatch => {
+ return {
+ callback: isConfirmed => {
+ if (isConfirmed) {
+ dispatch(deleteMachine());
+ }
+ dispatch(closeDeleteMachineModal());
+ }
+ };
+};
+
+const DeleteMachineModal = connect(mapStateToProps, mapDispatchToProps)(
+ DeleteMachineModalComponent
+);
+
+export default DeleteMachineModal;
diff --git a/frontend/src/containers/modals/DeleteProfileModal.js b/frontend/src/containers/modals/DeleteProfileModal.js
new file mode 100644
index 00000000..674e9408
--- /dev/null
+++ b/frontend/src/containers/modals/DeleteProfileModal.js
@@ -0,0 +1,37 @@
+import React from "react";
+import { connect } from "react-redux";
+import { closeDeleteProfileModal } from "../../actions/modals/profile";
+import { deleteCurrentUser } from "../../actions/users";
+import ConfirmationModal from "../../components/modals/ConfirmationModal";
+
+const DeleteProfileModalComponent = ({ visible, callback }) => (
+ <ConfirmationModal
+ title="Delete my account"
+ message="Are you sure you want to delete your OpenDC account?"
+ show={visible}
+ callback={callback}
+ />
+);
+
+const mapStateToProps = state => {
+ return {
+ visible: state.modals.deleteProfileModalVisible
+ };
+};
+
+const mapDispatchToProps = dispatch => {
+ return {
+ callback: isConfirmed => {
+ if (isConfirmed) {
+ dispatch(deleteCurrentUser());
+ }
+ dispatch(closeDeleteProfileModal());
+ }
+ };
+};
+
+const DeleteProfileModal = connect(mapStateToProps, mapDispatchToProps)(
+ DeleteProfileModalComponent
+);
+
+export default DeleteProfileModal;
diff --git a/frontend/src/containers/modals/DeleteRackModal.js b/frontend/src/containers/modals/DeleteRackModal.js
new file mode 100644
index 00000000..41bacb37
--- /dev/null
+++ b/frontend/src/containers/modals/DeleteRackModal.js
@@ -0,0 +1,37 @@
+import React from "react";
+import { connect } from "react-redux";
+import { closeDeleteRackModal } from "../../actions/modals/topology";
+import { deleteRack } from "../../actions/topology/rack";
+import ConfirmationModal from "../../components/modals/ConfirmationModal";
+
+const DeleteRackModalComponent = ({ visible, callback }) => (
+ <ConfirmationModal
+ title="Delete this rack"
+ message="Are you sure you want to delete this rack?"
+ show={visible}
+ callback={callback}
+ />
+);
+
+const mapStateToProps = state => {
+ return {
+ visible: state.modals.deleteRackModalVisible
+ };
+};
+
+const mapDispatchToProps = dispatch => {
+ return {
+ callback: isConfirmed => {
+ if (isConfirmed) {
+ dispatch(deleteRack());
+ }
+ dispatch(closeDeleteRackModal());
+ }
+ };
+};
+
+const DeleteRackModal = connect(mapStateToProps, mapDispatchToProps)(
+ DeleteRackModalComponent
+);
+
+export default DeleteRackModal;
diff --git a/frontend/src/containers/modals/DeleteRoomModal.js b/frontend/src/containers/modals/DeleteRoomModal.js
new file mode 100644
index 00000000..339ff22c
--- /dev/null
+++ b/frontend/src/containers/modals/DeleteRoomModal.js
@@ -0,0 +1,37 @@
+import React from "react";
+import { connect } from "react-redux";
+import { closeDeleteRoomModal } from "../../actions/modals/topology";
+import { deleteRoom } from "../../actions/topology/room";
+import ConfirmationModal from "../../components/modals/ConfirmationModal";
+
+const DeleteRoomModalComponent = ({ visible, callback }) => (
+ <ConfirmationModal
+ title="Delete this room"
+ message="Are you sure you want to delete this room?"
+ show={visible}
+ callback={callback}
+ />
+);
+
+const mapStateToProps = state => {
+ return {
+ visible: state.modals.deleteRoomModalVisible
+ };
+};
+
+const mapDispatchToProps = dispatch => {
+ return {
+ callback: isConfirmed => {
+ if (isConfirmed) {
+ dispatch(deleteRoom());
+ }
+ dispatch(closeDeleteRoomModal());
+ }
+ };
+};
+
+const DeleteRoomModal = connect(mapStateToProps, mapDispatchToProps)(
+ DeleteRoomModalComponent
+);
+
+export default DeleteRoomModal;
diff --git a/frontend/src/containers/modals/EditRackNameModal.js b/frontend/src/containers/modals/EditRackNameModal.js
new file mode 100644
index 00000000..748e847b
--- /dev/null
+++ b/frontend/src/containers/modals/EditRackNameModal.js
@@ -0,0 +1,44 @@
+import React from "react";
+import { connect } from "react-redux";
+import { closeEditRackNameModal } from "../../actions/modals/topology";
+import { editRackName } from "../../actions/topology/rack";
+import TextInputModal from "../../components/modals/TextInputModal";
+
+const EditRackNameModalComponent = ({ visible, previousName, callback }) => (
+ <TextInputModal
+ title="Edit rack name"
+ label="Rack name"
+ show={visible}
+ initialValue={previousName}
+ callback={callback}
+ />
+);
+
+const mapStateToProps = state => {
+ return {
+ visible: state.modals.editRackNameModalVisible,
+ previousName:
+ state.interactionLevel.mode === "RACK"
+ ? state.objects.rack[
+ state.objects.tile[state.interactionLevel.tileId].objectId
+ ].name
+ : ""
+ };
+};
+
+const mapDispatchToProps = dispatch => {
+ return {
+ callback: name => {
+ if (name) {
+ dispatch(editRackName(name));
+ }
+ dispatch(closeEditRackNameModal());
+ }
+ };
+};
+
+const EditRackNameModal = connect(mapStateToProps, mapDispatchToProps)(
+ EditRackNameModalComponent
+);
+
+export default EditRackNameModal;
diff --git a/frontend/src/containers/modals/EditRoomNameModal.js b/frontend/src/containers/modals/EditRoomNameModal.js
new file mode 100644
index 00000000..be6c547c
--- /dev/null
+++ b/frontend/src/containers/modals/EditRoomNameModal.js
@@ -0,0 +1,42 @@
+import React from "react";
+import { connect } from "react-redux";
+import { closeEditRoomNameModal } from "../../actions/modals/topology";
+import { editRoomName } from "../../actions/topology/room";
+import TextInputModal from "../../components/modals/TextInputModal";
+
+const EditRoomNameModalComponent = ({ visible, previousName, callback }) => (
+ <TextInputModal
+ title="Edit room name"
+ label="Room name"
+ show={visible}
+ initialValue={previousName}
+ callback={callback}
+ />
+);
+
+const mapStateToProps = state => {
+ return {
+ visible: state.modals.editRoomNameModalVisible,
+ previousName:
+ state.interactionLevel.mode === "ROOM"
+ ? state.objects.room[state.interactionLevel.roomId].name
+ : ""
+ };
+};
+
+const mapDispatchToProps = dispatch => {
+ return {
+ callback: name => {
+ if (name) {
+ dispatch(editRoomName(name));
+ }
+ dispatch(closeEditRoomNameModal());
+ }
+ };
+};
+
+const EditRoomNameModal = connect(mapStateToProps, mapDispatchToProps)(
+ EditRoomNameModalComponent
+);
+
+export default EditRoomNameModal;
diff --git a/frontend/src/containers/modals/NewExperimentModal.js b/frontend/src/containers/modals/NewExperimentModal.js
new file mode 100644
index 00000000..c703c39a
--- /dev/null
+++ b/frontend/src/containers/modals/NewExperimentModal.js
@@ -0,0 +1,39 @@
+import { connect } from "react-redux";
+import { addExperiment } from "../../actions/experiments";
+import { closeNewExperimentModal } from "../../actions/modals/experiments";
+import NewExperimentModalComponent from "../../components/modals/custom-components/NewExperimentModalComponent";
+
+const mapStateToProps = state => {
+ return {
+ show: state.modals.newExperimentModalVisible,
+ paths: Object.values(state.objects.path).filter(
+ path => path.simulationId === state.currentSimulationId
+ ),
+ traces: Object.values(state.objects.trace),
+ schedulers: Object.values(state.objects.scheduler)
+ };
+};
+
+const mapDispatchToProps = dispatch => {
+ return {
+ callback: (name, pathId, traceId, schedulerName) => {
+ if (name) {
+ dispatch(
+ addExperiment({
+ name,
+ pathId,
+ traceId,
+ schedulerName
+ })
+ );
+ }
+ dispatch(closeNewExperimentModal());
+ }
+ };
+};
+
+const NewExperimentModal = connect(mapStateToProps, mapDispatchToProps)(
+ NewExperimentModalComponent
+);
+
+export default NewExperimentModal;
diff --git a/frontend/src/containers/modals/NewSimulationModal.js b/frontend/src/containers/modals/NewSimulationModal.js
new file mode 100644
index 00000000..80789cd2
--- /dev/null
+++ b/frontend/src/containers/modals/NewSimulationModal.js
@@ -0,0 +1,37 @@
+import React from "react";
+import { connect } from "react-redux";
+import { closeNewSimulationModal } from "../../actions/modals/simulations";
+import { addSimulation } from "../../actions/simulations";
+import TextInputModal from "../../components/modals/TextInputModal";
+
+const NewSimulationModalComponent = ({ visible, callback }) => (
+ <TextInputModal
+ title="New Simulation"
+ label="Simulation title"
+ show={visible}
+ callback={callback}
+ />
+);
+
+const mapStateToProps = state => {
+ return {
+ visible: state.modals.newSimulationModalVisible
+ };
+};
+
+const mapDispatchToProps = dispatch => {
+ return {
+ callback: text => {
+ if (text) {
+ dispatch(addSimulation(text));
+ }
+ dispatch(closeNewSimulationModal());
+ }
+ };
+};
+
+const NewSimulationModal = connect(mapStateToProps, mapDispatchToProps)(
+ NewSimulationModalComponent
+);
+
+export default NewSimulationModal;