diff --git a/src/components/dialog/delete-dialog.js b/src/components/dialog/delete-dialog.js new file mode 100644 index 0000000..13ece5e --- /dev/null +++ b/src/components/dialog/delete-dialog.js @@ -0,0 +1,52 @@ +/** + * File: edit-user.js + * Author: Ricardo Hernandez-Montoya + * Date: 02.05.2017 + * + * This file is part of VILLASweb. + * + * VILLASweb is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * VILLASweb is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with VILLASweb. If not, see . + ******************************************************************************/ + +import React from 'react'; +import { Button, Modal } from 'react-bootstrap'; + +class DeleteDialog extends React.Component { + onModalKeyPress = (event) => { + if (event.key === 'Enter') { + event.preventDefault(); + + this.props.onClose(false); + } + } + + render() { + return this.props.onClose(false)} onKeyPress={this.onModalKeyPress}> + + Delete {this.props.title} + + + + Are you sure you want to delete the {this.props.title} '{this.props.name}'? + + + + + + + ; + } +} + +export default DeleteDialog; diff --git a/src/containers/project.js b/src/containers/project.js index df39dce..359fcfd 100644 --- a/src/containers/project.js +++ b/src/containers/project.js @@ -21,7 +21,7 @@ import React, { Component } from 'react'; import { Container } from 'flux/utils'; -import { Button, Modal, Glyphicon } from 'react-bootstrap'; +import { Button, Glyphicon } from 'react-bootstrap'; import FileSaver from 'file-saver'; import AppDispatcher from '../app-dispatcher'; @@ -36,6 +36,8 @@ import NewVisualzationDialog from '../components/dialog/new-visualization'; import EditVisualizationDialog from '../components/dialog/edit-visualization'; import ImportVisualizationDialog from '../components/dialog/import-visualization'; +import DeleteDialog from '../components/dialog/delete-dialog'; + class Visualizations extends Component { static getStores() { return [ ProjectStore, VisualizationStore, UserStore, SimulationStore ]; @@ -113,9 +115,13 @@ class Visualizations extends Component { this.setState({ newModal: false }); } - confirmDeleteModal() { + closeDeleteModal = confirmDelete => { this.setState({ deleteModal: false }); + if (confirmDelete === false) { + return; + } + AppDispatcher.dispatch({ type: 'visualizations/start-remove', data: this.state.modalData, @@ -206,20 +212,7 @@ class Visualizations extends Component { this.closeEditModal(data)} visualization={this.state.modalData} /> this.closeImportModal(data)} simulation={this.state.simulation} /> - this.setState({ deleteModal: false })} onKeyPress={this.onModalKeyPress}> - - Delete Visualization - - - - Are you sure you want to delete the visualization '{this.state.modalData.name}'? - - - - - - - + ); } diff --git a/src/containers/projects.js b/src/containers/projects.js index 1f02f80..37cb384 100644 --- a/src/containers/projects.js +++ b/src/containers/projects.js @@ -21,7 +21,7 @@ import React from 'react'; import { Container } from 'flux/utils'; -import { Button, Modal, Glyphicon } from 'react-bootstrap'; +import { Button, Glyphicon } from 'react-bootstrap'; import AppDispatcher from '../app-dispatcher'; import ProjectStore from '../stores/project-store'; @@ -33,6 +33,8 @@ import TableColumn from '../components/table-column'; import NewProjectDialog from '../components/dialog/new-project'; import EditProjectDialog from '../components/dialog/edit-project'; +import DeleteDialog from '../components/dialog/delete-dialog'; + class Projects extends React.Component { static getStores() { return [ ProjectStore, SimulationStore, UserStore ]; @@ -75,9 +77,13 @@ class Projects extends React.Component { } } - confirmDeleteModal() { + closeDeleteModal = confirmDelete => { this.setState({ deleteModal: false }); + if (confirmDelete === false) { + return; + } + AppDispatcher.dispatch({ type: 'projects/start-remove', data: this.state.modalData, @@ -143,20 +149,7 @@ class Projects extends React.Component { this.closeNewModal(data)} simulations={this.state.simulations} /> this.closeEditModal(data)} project={this.state.modalData} simulations={this.state.simulations} /> - this.setState({ deleteModal: false })} onKeyPress={this.onModalKeyPress}> - - Delete Project - - - - Are you sure you want to delete the project '{this.state.modalData.name}'? - - - - - - - + ); } diff --git a/src/containers/simulation.js b/src/containers/simulation.js index 00a6916..4c45e6b 100644 --- a/src/containers/simulation.js +++ b/src/containers/simulation.js @@ -21,7 +21,7 @@ import React from 'react'; import { Container } from 'flux/utils'; -import { Button, Modal, Glyphicon } from 'react-bootstrap'; +import { Button, Glyphicon } from 'react-bootstrap'; import FileSaver from 'file-saver'; import SimulationStore from '../stores/simulation-store'; @@ -34,7 +34,9 @@ import TableColumn from '../components/table-column'; import NewSimulationModelDialog from '../components/dialog/new-simulation-model'; import EditSimulationModelDialog from '../components/dialog/edit-simulation-model'; import ImportSimulationModelDialog from '../components/dialog/import-simulation-model'; + import SimulatorAction from '../components/simulator-action'; +import DeleteDialog from '../components/dialog/delete-dialog'; class Simulation extends React.Component { static getStores() { @@ -102,12 +104,19 @@ class Simulation extends React.Component { } } - confirmDeleteModal() { + closeDeleteModal = confirmDelete => { + console.log('closeDeleteModal called'); + + if (confirmDelete === false) { + this.setState({ deleteModal: false }); + return; + } + // remove model from simulation - var simulation = this.state.simulation; + const simulation = this.state.simulation; simulation.models.splice(this.state.modalIndex, 1); - this.setState({ deleteModal: false, simulation: simulation }); + this.setState({ deleteModal: false, simulation }); AppDispatcher.dispatch({ type: 'simulations/start-edit', @@ -168,14 +177,6 @@ class Simulation extends React.Component { FileSaver.saveAs(blob, 'simulation model - ' + simulationModel.name + '.json'); } - onModalKeyPress = (event) => { - if (event.key === 'Enter') { - event.preventDefault(); - - this.confirmDeleteModal(); - } - } - onSimulationModelChecked(index, event) { const selectedSimulationModels = this.state.selectedSimulationModels; for (let key in selectedSimulationModels) { @@ -263,24 +264,11 @@ class Simulation extends React.Component { - this.closeNewModal(data)} simulators={this.state.simulators} /> - this.closeEditModal(data)} data={this.state.modalData} simulators={this.state.simulators} /> + this.closeNewModal(data)} simulators={this.state.simulators} /> + this.closeEditModal(data)} data={this.state.modalData} simulators={this.state.simulators} /> this.closeImportModal(data)} simulators={this.state.simulators} /> - this.setState({ deleteModal: false })} onKeyPress={this.onModalKeyPress}> - - Delete Simulation Model - - - - Are you sure you want to delete the simulation model '{this.state.modalData.name}'? - - - - - - - + ); } diff --git a/src/containers/simulations.js b/src/containers/simulations.js index d762bb9..17319fc 100644 --- a/src/containers/simulations.js +++ b/src/containers/simulations.js @@ -21,7 +21,7 @@ import React, { Component } from 'react'; import { Container } from 'flux/utils'; -import { Button, Modal, Glyphicon } from 'react-bootstrap'; +import { Button, Glyphicon } from 'react-bootstrap'; import FileSaver from 'file-saver'; import AppDispatcher from '../app-dispatcher'; @@ -34,7 +34,9 @@ import TableColumn from '../components/table-column'; import NewSimulationDialog from '../components/dialog/new-simulation'; import EditSimulationDialog from '../components/dialog/edit-simulation'; import ImportSimulationDialog from '../components/dialog/import-simulation'; + import SimulatorAction from '../components/simulator-action'; +import DeleteDialog from '../components/dialog/delete-dialog'; class Simulations extends Component { static getStores() { @@ -89,9 +91,13 @@ class Simulations extends Component { this.setState({ deleteModal: true, modalSimulation: deleteSimulation }); } - confirmDeleteModal() { + closeDeleteModal = confirmDelete => { this.setState({ deleteModal: false }); + if (confirmDelete === false) { + return; + } + AppDispatcher.dispatch({ type: 'simulations/start-remove', data: this.state.modalSimulation, @@ -251,20 +257,7 @@ class Simulations extends Component { this.closeEditModal(data)} simulation={this.state.modalSimulation} /> this.closeImportModal(data)} nodes={this.state.nodes} /> - this.setState({ deleteModal: false })} onKeyPress={this.onModalKeyPress}> - - Delete Simulation - - - - Are you sure you want to delete the simulation '{this.state.modalSimulation.name}'? - - - - - - - + ); } diff --git a/src/containers/simulators.js b/src/containers/simulators.js index 36f21dd..37402eb 100644 --- a/src/containers/simulators.js +++ b/src/containers/simulators.js @@ -21,7 +21,7 @@ import React, { Component } from 'react'; import { Container } from 'flux/utils'; -import { Button, Modal, Glyphicon } from 'react-bootstrap'; +import { Button, Glyphicon } from 'react-bootstrap'; import FileSaver from 'file-saver'; import _ from 'lodash'; @@ -34,7 +34,9 @@ import TableColumn from '../components/table-column'; import NewSimulatorDialog from '../components/dialog/new-simulator'; import EditSimulatorDialog from '../components/dialog/edit-simulator'; import ImportSimulatorDialog from '../components/dialog/import-simulator'; + import SimulatorAction from '../components/simulator-action'; +import DeleteDialog from '../components/dialog/delete-dialog'; class Simulators extends Component { static getStores() { @@ -88,9 +90,13 @@ class Simulators extends Component { } } - confirmDeleteModal() { + closeDeleteModal = confirmDelete => { this.setState({ deleteModal: false }); + if (confirmDelete === false) { + return; + } + AppDispatcher.dispatch({ type: 'simulators/start-remove', data: this.state.modalSimulator, @@ -196,20 +202,7 @@ class Simulators extends Component { this.closeEditModal(data)} simulator={this.state.modalSimulator} /> this.closeImportModal(data)} /> - this.setState({ deleteModal: false })} onKeyPress={this.onModalKeyPress}> - - Delete Simulator - - - - Are you sure you want to delete the simulator'{_.get(this.state.modalSimulator, 'properties.name') || _.get(this.state.modalSimulator, 'rawProperties.name') || 'Unknown'}'? - - - - - - - + ); } diff --git a/src/containers/users.js b/src/containers/users.js index fd742b7..edf4162 100644 --- a/src/containers/users.js +++ b/src/containers/users.js @@ -21,7 +21,7 @@ import React, { Component } from 'react'; import { Container } from 'flux/utils'; -import { Button, Modal, Glyphicon } from 'react-bootstrap'; +import { Button, Glyphicon } from 'react-bootstrap'; import AppDispatcher from '../app-dispatcher'; import UserStore from '../stores/user-store'; @@ -32,6 +32,8 @@ import TableColumn from '../components/table-column'; import NewUserDialog from '../components/dialog/new-user'; import EditUserDialog from '../components/dialog/edit-user'; +import DeleteDialog from '../components/dialog/delete-dialog'; + class Users extends Component { static getStores() { return [ UserStore, UsersStore ]; @@ -72,9 +74,13 @@ class Users extends Component { } } - confirmDeleteModal() { + closeDeleteModal = confirmDelete => { this.setState({ deleteModal: false }); + if (confirmDelete === false) { + return; + } + AppDispatcher.dispatch({ type: 'users/start-remove', data: this.state.modalData, @@ -124,23 +130,9 @@ class Users extends Component { this.closeNewModal(data)} /> - this.closeEditModal(data)} user={this.state.modalData} /> - this.setState({ deleteModal: falseĀ })} onKeyPress={this.onModalKeyPress}> - - Delete user - - - - Are you sure you want to delete the user '{this.state.modalData.username}'? - - - - - - - + ); }