/** * File: simulation.js * Author: Markus Grigull * Date: 04.03.2017 * Copyright: 2017, Institute for Automation of Complex Power Systems, EONERC * This file is part of VILLASweb. All Rights Reserved. Proprietary and confidential. * Unauthorized copying of this file, via any medium is strictly prohibited. **********************************************************************************/ import React, { Component } from 'react'; import { Container } from 'flux/utils'; import { Button, Modal, Glyphicon } from 'react-bootstrap'; import SimulationStore from '../stores/simulation-store'; import SimulatorStore from '../stores/simulator-store'; import AppDispatcher from '../app-dispatcher'; 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'; class Simulation extends Component { static getStores() { return [ SimulationStore, SimulatorStore ]; } static calculateState() { return { simulations: SimulationStore.getState(), simulators: SimulatorStore.getState(), newModal: false, deleteModal: false, editModal: false, modalData: {}, modalIndex: null, simulation: {} } } componentWillMount() { AppDispatcher.dispatch({ type: 'simulations/start-load' }); AppDispatcher.dispatch({ type: 'simulators/start-load' }); } componentDidUpdate() { if (this.state.simulation._id !== this.props.params.simulation) { this.reloadSimulation(); } } reloadSimulation() { // select simulation by param id this.state.simulations.forEach((simulation) => { if (simulation._id === this.props.params.simulation) { // JSON.parse(JSON.stringify(obj)) = deep clone to make also copy of widget objects inside this.setState({ simulation: JSON.parse(JSON.stringify(simulation)) }); } }); } closeNewModal(data) { this.setState({ newModal : false }); if (data) { this.state.simulation.models.push(data); AppDispatcher.dispatch({ type: 'simulations/start-edit', data: this.state.simulation }); } } confirmDeleteModal() { // remove model from simulation var simulation = this.state.simulation; simulation.models.splice(this.state.modalIndex, 1); this.setState({ deleteModal: false, simulation: simulation }); AppDispatcher.dispatch({ type: 'simulations/start-edit', data: simulation }); } closeEditModal(data) { this.setState({ editModal : false }); if (data) { var simulation = this.state.simulation; simulation.models[this.state.modalIndex] = data; this.setState({ simulation: simulation }); AppDispatcher.dispatch({ type: 'simulations/start-edit', data: simulation }); } } getSimulatorName(id) { for (var i = 0; i < this.state.simulators.length; i++) { if (this.state.simulators[i]._id === id) { return this.state.simulators[i].name; } } return id; } render() { return (

{this.state.simulation.name}

this.getSimulatorName(id)} /> this.setState({ editModal: true, modalData: this.state.simulation.models[index], modalIndex: index })} onDelete={(index) => this.setState({ deleteModal: true, modalData: this.state.simulation.models[index], modalIndex: index })} />
this.closeNewModal(data)} simulators={this.state.simulators} /> this.closeEditModal(data)} data={this.state.modalData} simulators={this.state.simulators} /> Delete Simulation Model Are you sure you want to delete the simulation model '{this.state.modalData.name}'?
); } } export default Container.create(Simulation);