var React = require('react'); var ReactDOM = require('react-dom'); var ReactBootstrap = require('react-bootstrap'); var Col = ReactBootstrap.Col; var Tabs = ReactBootstrap.Tabs; var Tab = ReactBootstrap.Tab; var Panel = ReactBootstrap.Panel; var Modal = ReactBootstrap.Modal; var Form = ReactBootstrap.Form; var FormGroup = ReactBootstrap.FormGroup; var FormControl = ReactBootstrap.FormControl; var ControlLabel = ReactBootstrap.ControlLabel; var Checkbox = ReactBootstrap.Checkbox; var Button = ReactBootstrap.Button; var ButtonGroup = ReactBootstrap.ButtonGroup; var Combobox = require('react-widgets').Combobox; var AccountCombobox = require('./AccountCombobox'); var models = require('../models'); var Account = models.Account; var AccountType = models.AccountType; var AccountTypeList = models.AccountTypeList; class AddEditAccountModal extends React.Component { getInitialState(props) { var s = { accountid: -1, security: 1, parentaccountid: -1, type: 1, name: "", ofxurl: "", ofxorg: "", ofxfid: "", ofxuser: "", ofxbankid: "", ofxacctid: "", ofxaccttype: "CHECKING", ofxclientuid: "", ofxappid: "", ofxappver: "", ofxversion: "", ofxnoindent: false, }; if (!props) { return s; } else if (props.editAccount != null) { s.accountid = props.editAccount.AccountId; s.name = props.editAccount.Name; s.security = props.editAccount.SecurityId; s.parentaccountid = props.editAccount.ParentAccountId; s.type = props.editAccount.Type; s.ofxurl = props.editAccount.OFXURL; s.ofxorg = props.editAccount.OFXORG; s.ofxfid = props.editAccount.OFXFID; s.ofxuser = props.editAccount.OFXUser; s.ofxbankid = props.editAccount.OFXBankID; s.ofxacctid = props.editAccount.OFXAcctID; s.ofxaccttype = props.editAccount.OFXAcctType; s.ofxclientuid = props.editAccount.OFXClientUID; s.ofxappid = props.editAccount.OFXAppID; s.ofxappver = props.editAccount.OFXAppVer; s.ofxversion = props.editAccount.OFXVersion; s.ofxnoindent = props.editAccount.OFXNoIndent; } else if (props.initialParentAccount != null) { s.security = props.initialParentAccount.SecurityId; s.parentaccountid = props.initialParentAccount.AccountId; s.type = props.initialParentAccount.Type; } return s; } constructor() { super(); this.state = this.getInitialState(); this.onCancel = this.handleCancel.bind(this); this.onChange = this.handleChange.bind(this); this.onNoIndentClick = this.handleNoIndentClick.bind(this); this.onSecurityChange = this.handleSecurityChange.bind(this); this.onTypeChange = this.handleTypeChange.bind(this); this.onParentChange = this.handleParentChange.bind(this); this.onSubmit = this.handleSubmit.bind(this); } componentWillReceiveProps(nextProps) { if (nextProps.show && !this.props.show) { this.setState(this.getInitialState(nextProps)); } } handleCancel() { if (this.props.onCancel != null) this.props.onCancel(); } handleChange() { this.setState({ name: ReactDOM.findDOMNode(this.refs.name).value, ofxurl: ReactDOM.findDOMNode(this.refs.ofxurl).value, ofxorg: ReactDOM.findDOMNode(this.refs.ofxorg).value, ofxfid: ReactDOM.findDOMNode(this.refs.ofxfid).value, ofxuser: ReactDOM.findDOMNode(this.refs.ofxuser).value, ofxbankid: ReactDOM.findDOMNode(this.refs.ofxbankid).value, ofxacctid: ReactDOM.findDOMNode(this.refs.ofxacctid).value, ofxclientuid: ReactDOM.findDOMNode(this.refs.ofxclientuid).value, ofxappid: ReactDOM.findDOMNode(this.refs.ofxappid).value, ofxappver: ReactDOM.findDOMNode(this.refs.ofxappver).value, ofxversion: ReactDOM.findDOMNode(this.refs.ofxversion).value, }); if (this.state.type != AccountType.Investment) { this.setState({ ofxaccttype: ReactDOM.findDOMNode(this.refs.ofxaccttype).value, }); } } handleNoIndentClick() { this.setState({ofxnoindent: !this.state.ofxnoindent}); } handleSecurityChange(security) { if (security.hasOwnProperty('SecurityId')) this.setState({ security: security.SecurityId }); } handleTypeChange(type) { if (type.hasOwnProperty('TypeId')) this.setState({ type: type.TypeId }); } handleParentChange(parentAccount) { this.setState({parentaccountid: parentAccount.AccountId}); } handleSubmit() { var a = new Account(); if (this.props.editAccount != null) a.AccountId = this.state.accountid; a.Name = this.state.name; a.ParentAccountId = this.state.parentaccountid; a.SecurityId = this.state.security; a.Type = this.state.type; a.OFXURL = this.state.ofxurl; a.OFXORG = this.state.ofxorg; a.OFXFID = this.state.ofxfid; a.OFXUser = this.state.ofxuser; a.OFXBankID = this.state.ofxbankid; a.OFXAcctID = this.state.ofxacctid; a.OFXAcctType = this.state.ofxaccttype; a.OFXClientUID = this.state.ofxclientuid; a.OFXAppID = this.state.ofxappid; a.OFXAppVer = this.state.ofxappver; a.OFXVersion = this.state.ofxversion; a.OFXNoIndent = this.state.ofxnoindent; if (this.props.onSubmit != null) this.props.onSubmit(a); } render() { var headerText = (this.props.editAccount != null) ? "Edit" : "Create New"; var buttonText = (this.props.editAccount != null) ? "Save Changes" : "Create Account"; var rootName = (this.props.editAccount != null) ? "Top-level Account" : "New Top-level Account"; var ofxBankIdName = "Broker ID"; var ofxAcctType = []; if (this.state.type != AccountType.Investment) { ofxBankIdName = "Bank ID"; ofxAcctType = ( Account Type ); } var bankIdDisabled = (this.state.type != AccountType.Investment && this.state.ofxaccttype == "CC") ? true : false; return ( {headerText} Account
Name Parent Account Security typeof item === 'string' ? item : item.Name + " - " + item.Description} defaultValue={this.state.security} onChange={this.onSecurityChange} ref="security" /> Account Type
OFX URL ORG FID Username {ofxBankIdName} Account ID {ofxAcctType} Client UID App ID App Version OFX Version Don't indent OFX request files
); } } module.exports = AddEditAccountModal;