diff --git a/src/components/dialog/import-simulation-model.js b/src/components/dialog/import-simulation-model.js index e21557f..c2ce502 100644 --- a/src/components/dialog/import-simulation-model.js +++ b/src/components/dialog/import-simulation-model.js @@ -186,4 +186,4 @@ class ImportSimulationModelDialog extends React.Component { } } -export default ImportSimulationModelDialog; \ No newline at end of file +export default ImportSimulationModelDialog; diff --git a/src/containers/simulation.js b/src/containers/simulation.js index 32faa96..a2b2d99 100644 --- a/src/containers/simulation.js +++ b/src/containers/simulation.js @@ -21,7 +21,8 @@ import React from 'react'; import { Container } from 'flux/utils'; -import { Button, Modal, Glyphicon } from 'react-bootstrap'; +import { Button, Modal, Glyphicon, FormControl, FormGroup, Form } from 'react-bootstrap'; +import FileSaver from 'file-saver'; import SimulationStore from '../stores/simulation-store'; import NodeStore from '../stores/node-store'; @@ -32,6 +33,7 @@ import Table from '../components/table'; 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'; class Simulation extends React.Component { static getStores() { @@ -47,6 +49,7 @@ class Simulation extends React.Component { newModal: false, deleteModal: false, editModal: false, + importModal: false, modalData: {}, modalIndex: null, @@ -146,6 +149,42 @@ class Simulation extends React.Component { } } + exportSimulationModel(data) { + // filter properties + var model = Object.assign({}, data); + + // get simulator name + this.state.simulators.forEach(simulator => { + if (simulator._id === model.simulator) { + model.simulator = simulator.name; + } + }); + + // show save dialog + const blob = new Blob([JSON.stringify(model, null, 2)], { type: 'application/json' }); + FileSaver.saveAs(blob, model.name + '.json'); + } + + loadFile(fileList) { + // get file + const file = fileList[0]; + if (!file.type.match('application/json')) { + return; + } + + // create file reader + var reader = new FileReader(); + var self = this; + + reader.onload = function(event) { + // read simulation model + const simulationModel = JSON.parse(event.target.result); + self.setState({ importModal: true, modalData: simulationModel }); + }; + + reader.readAsText(file); + } + render() { return (