--- /dev/null
+/*
+ * 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);