blob: b8a743fc43542cfafbd068a149a8d8247016feef [file] [log] [blame]
/*
* STANDARD_RIFT_IO_COPYRIGHT
*/
import React from 'react';
import AppHeader from 'widgets/header/header.jsx';
import ConfigStore from './configStore.js';
import SkyquakeComponent from 'widgets/skyquake_container/skyquakeComponent.jsx';
import 'style/layout.scss';
import './config.scss';
import {Panel, PanelWrapper} from 'widgets/panel/panel';
import TextInput from 'widgets/form_controls/textInput.jsx';
import Button from 'widgets/button/rw.button.js';
class ConfigDashboard extends React.Component {
constructor(props) {
super(props);
this.Store = this.props.flux.stores.hasOwnProperty('ConfigStore') ? this.props.flux.stores.ConfigStore : this.props.flux.createStore(ConfigStore);
this.state = this.Store.getState();
}
componentWillMount() {
this.Store.listen(this.updateState);
this.Store.getResourceOrchestrator();
}
componentWillUnmount() {
this.Store.unlisten(this.updateState);
}
updateState = (state) => {
this.setState(state);
}
updateAccount = (e) => {
e.preventDefault();
e.stopPropagation();
this.Store.update(this.state.account);
}
render() {
let self = this;
let html;
let Account = this.state.account;
let AccountMeta = this.state.AccountMeta;
let AccountType = this.state.accountType;
let isEdit = true;
let ParamsHTML = null;
let Store = this.Store;
let Types = this.state.AccountMeta['account-types'];
let selectAccountStack = [];
let selectAccountHTML = null;
if (Account['account-type']) {
for (var i = 0; i < Types.length; i++) {
var node = Types[i];
var isSelected = (Account['account-type'] == node);
selectAccountStack.push(
<label key={i} className={"accountSelection " + (isSelected ? "accountSelection--isSelected" : "")}>
<div className={"accountSelection-overlay" + (isSelected ? "accountSelection-overlay--isSelected" : "")}></div>
<div className="accountSelection-imageWrapper">
<img src={Store.getImage(node)}/>
</div>
<input type="radio" name="account"
onChange={Store.handleAccountTypeChange} defaultChecked={node == Types[0]} value={node} />{node}
</label>
)
}
selectAccountHTML = (
<Panel className="accountForm" title="Select Account Type" no-corners>
<div className="select-type accountForm-content row" >
{selectAccountStack}
</div>
</Panel>
);
}
if (AccountMeta[AccountType] && AccountMeta[AccountType].length > 0) {
var paramsStack = [];
var optionalField = '';
for (var i = 0; i < AccountMeta[AccountType].length; i++) {
var node = AccountMeta[AccountType][i];
var value = ""
if (Account[AccountType]) {
value = Account[AccountType][node.ref]
}
paramsStack.push(
<TextInput key={node.label} className="accountForm-input" label={node.label} required={!node.optional} onChange={this.Store.handleParamChange(node)} value={value} />
);
}
ParamsHTML = (
<Panel className="create-fleet-pool accountForm" title={(isEdit ? 'Update' : 'Enter') + ' Account Details'} no-corners>
<div className="accountForm-content">
{paramsStack}
</div>
</Panel>
)
} else {
ParamsHTML = (
<Panel className="create-fleet-pool accountForm" title={(isEdit ? 'Update' : 'Enter') + ' Account Details'} no-corners>
<label style={{'marginLeft':'17px', color:'#888'}}>No Details Required</label>
</Panel>
)
}
html = (
<PanelWrapper className="column Config" style={{'alignContent': 'center', 'flexDirection': 'column'}}>
<form className="app-body create Accounts" onSubmit={this.preventDefault} onKeyDown={this.evaluateSubmit}>
<div className="noticeSubText noticeSubText_right">
* required
</div>
<div>
<Panel className="create-fleet-pool accountForm" title="Resource Orchestrator" no-corners>
<div className="accountForm-content">
<TextInput className="accountForm-input" label={"Name"} onChange={this.Store.handleNameChange} value={Account.name} />
</div>
</Panel>
{
selectAccountHTML
}
{
ParamsHTML
}
</div>
<div className="form-actions">
<Button className="light" label="Cancel" />
<Button key="4" role="button" className="update dark" label="Update" onClick={this.updateAccount} />
</div>
</form>
</PanelWrapper>
);
return html;
}
}
// onClick={this.Store.update.bind(null, Account)}
ConfigDashboard.contextTypes = {
router: React.PropTypes.object
};
export default SkyquakeComponent(ConfigDashboard);