Skip to content
Snippets Groups Projects
Select Git revision
  • c46b0b6801f0c580309ffbb4163e5cd3da0a99e2
  • master default protected
  • aca
  • improve_README
  • v1.2.0
  • v1.1.1 protected
  • v1.1.0 protected
  • v1.0.0 protected
8 results

M2E_compute_louvain_communities.py

Blame
  • simulation-details.js 3.37 KiB
    import React from 'react';
    
    import timeDDHHMMSS from '../../utility/time-filter.js';
    import { EXPERIMENT_STATE } from '../../services/experiments/experiment-constants.js';
    import ExperimentExecutionService from '../../services/experiments/execution/experiment-execution-service.js';
    
    import './simulation-details.css';
    
    export default class SimulationDetails extends React.Component {
      constructor() {
        super();
    
        this.state = {
          simUptimes: [],
          titleButtonStop: ''
        };
      }
    
      componentDidMount() {
        this.updateSimUptimes();
        this.intervalUpdateSimUptimes = setInterval(() => {
          this.updateSimUptimes();
        }, 1000);
      }
    
      componentWillUnmount() {
        this.intervalUpdateSimUptimes && clearInterval(this.intervalUpdateSimUptimes);
      }
    
      isJoinDisabled(simulation) {
        return simulation.runningSimulation.state === EXPERIMENT_STATE.CREATED ||
          simulation.stopping;
      }
    
      isStopDisabled(simulation) {
        let disabled = simulation.stopping;
        if (disabled) {
          this.titleButtonStop = 'Sorry, you don\'t have sufficient rights to stop the simulation.';
        }
        else {
          this.titleButtonStop = '';
        }
    
        return disabled;
      }
    
      updateSimUptimes() {
        this.setState({
          simUptimes: this.props.simulations.map(sim => {
            return (Date.now() - Date.parse(sim.runningSimulation.creationDate)) / 1000;
          })
        });
      }
    
      render() {
        //console.info(this.props.simulations);
        return (
          <div className='simulations-details-wrapper'>
            <div className='table-row table-header'>
              <div>Server</div>
              <div>Creator</div>
              <div>Uptime</div>
              <div>Status</div>
              <div>Actions</div>
            </div>
    
            {this.props.simulations.map((simulation, index) => {
              return (
                <div key={simulation.runningSimulation.simulationID} className='table-row'>
                  <div>{simulation.server}</div>
                  <div>{simulation.runningSimulation.owner}</div>
                  <div>{timeDDHHMMSS(this.state.simUptimes[index])}</div>
                  <div>{simulation.runningSimulation.state}</div>
                  <div>
                    {/* Join button enabled provided simulation state is consistent */}
                    <button /*analytics-on analytics-event="Join" analytics-category="Experiment"
                      ng-click="(simulation.runningSimulation.state === STATE.CREATED) ||
                        simulation.stopping || joinExperiment(simulation, exp);"*/
                      type="button" className="btn btn-default"
                      disabled={this.isJoinDisabled(simulation)}>
                      Join »
                    </button>
                    {/* Stop button enabled provided simulation state is consistent */}
                    <button /*analytics-on analytics-event="Stop" analytics-category="Experiment"*/
                      onClick={() => ExperimentExecutionService.instance.stopExperiment(simulation)}
                      type="button" className="btn btn-default"
                      disabled={this.isStopDisabled(simulation)}
                      title={this.state.titleButtonStop}>
                      <i className="fa fa-spinner fa-spin" ng-if="simulation.stopping"></i> Stop
                    </button>
                  </div>
                </div>
              );
            })
            }
    
            <div className='table-row'>
              <button className='table-column-last'>Stop All</button>
            </div>
          </div >
        );
      }
    }