'use strict'; const remote = require('electron').remote; const settings = require('./common/settings'); var SettingsPage = React.createClass({ getInitialState: function() { return { teams: [] }; }, componentDidMount: function() { var config = settings.readFileSync(this.props.configFile); this.setState({ teams: config.teams }) }, handleTeamsChange: function(teams) { this.setState({ teams: teams }); }, handleOK: function() { var config = { teams: this.state.teams, version: 1 }; settings.writeFileSync(this.props.configFile, config); window.location = './index.html'; }, handleCancel: function() { window.location = './index.html'; }, render: function() { return (
); } }); var TeamList = React.createClass({ handleTeamChange: function(index, team) { var teams = this.props.teams; teams[index] = team; this.props.onTeamsChange(teams); }, handleNewTeamAdd: function(team) { var teams = this.props.teams; teams.push(team); this.props.onTeamsChange(teams); }, render: function() { var thisObj = this; var teamNodes = this.props.teams.map(function(team, i) { var handleTeamChange = function(team) { thisObj.handleTeamChange(i, team); }; return (
  • ); }); return (
      { teamNodes }
    ); } }); var TeamItem = React.createClass({ handleNameChange: function(e) { this.props.onTeamChange({ name: e.target.value, url: this.props.url }); }, handleURLChange: function(e) { this.props.onTeamChange({ name: this.props.name, url: e.target.value }); }, render: function() { return (
    ); } }); var NewTeamItem = React.createClass({ getInitialState: function() { return { name: '', url: '' }; }, handleNewTeamAdd: function() { this.props.onNewTeamAdd({ name: this.state.name, url: this.state.url }); this.setState(this.getInitialState()); }, handleNameChange: function(e) { this.setState({ name: e.target.value }); }, handleURLChange: function(e) { this.setState({ url: e.target.value }); }, render: function() { return (
    ); } }); var configFile = remote.getGlobal('config-file'); ReactDOM.render( , document.getElementById('content') );