var React = require('react'); var ReactDOM = require('react-dom'); var ReactBootstrap = require('react-bootstrap'); var Modal = ReactBootstrap.Modal; var Button = ReactBootstrap.Button; var ButtonGroup = ReactBootstrap.ButtonGroup; var Form = ReactBootstrap.Form; var FormGroup = ReactBootstrap.FormGroup; var FormControl = ReactBootstrap.FormControl; var ControlLabel = ReactBootstrap.ControlLabel; var Col = ReactBootstrap.Col; var Combobox = require('react-widgets').Combobox; var models = require('../models'); var User = models.User; class AccountSettingsModal extends React.Component { _getInitialState(props) { return { error: "", name: props ? props.user.Name: "", username: props ? props.user.Username : "", email: props ? props.user.Email : "", defaultCurrency: props ? props.user.DefaultCurrency : "", password: models.BogusPassword, confirm_password: models.BogusPassword, passwordChanged: false, initial_password: models.BogusPassword }; } constructor() { super(); this.state = this._getInitialState(); this.onCancel = this.handleCancel.bind(this); this.onChange = this.handleChange.bind(this); this.onSelectCurrency = this.handleSelectCurrency.bind(this); this.onSubmit = this.handleSubmit.bind(this); } componentWillReceiveProps(nextProps) { if (nextProps.show && !this.props.show) { this.setState(this._getInitialState(nextProps)); } } passwordValidationState() { if (this.state.passwordChanged) { if (this.state.password.length >= 10) return "success"; else if (this.state.password.length >= 6) return "warning"; else return "error"; } } confirmPasswordValidationState() { if (this.state.confirm_password.length > 0) { if (this.state.confirm_password == this.state.password) return "success"; else return "error"; } } handleCancel() { if (this.props.onCancel != null) this.props.onCancel(); } handleChange() { if (ReactDOM.findDOMNode(this.refs.password).value != this.state.initial_password) this.setState({passwordChanged: true}); this.setState({ name: ReactDOM.findDOMNode(this.refs.name).value, username: ReactDOM.findDOMNode(this.refs.username).value, email: ReactDOM.findDOMNode(this.refs.email).value, password: ReactDOM.findDOMNode(this.refs.password).value, confirm_password: ReactDOM.findDOMNode(this.refs.confirm_password).value }); } handleSelectCurrency(security) { if (security.hasOwnProperty('SecurityId')) { this.setState({ defaultCurrency: security.SecurityId }); } } handleSubmit(e) { var u = new User(); e.preventDefault(); u.UserId = this.props.user.UserId; u.Name = this.state.name; u.Username = this.state.username; u.Email = this.state.email; u.DefaultCurrency = this.state.defaultCurrency; if (this.state.passwordChanged) { u.Password = this.state.password; if (u.Password != this.state.confirm_password) { this.setState({error: "Error: password do not match"}); return; } } else { u.Password = models.BogusPassword; } this.props.onUpdateUser(u); this.props.onSubmit(); } render() { return ( Edit Account Settings {this.state.error}
Name Username Email Default Currency item == undefined || typeof item === 'string' ? item : item.Name + " - " + item.Description} defaultValue={this.state.defaultCurrency} onChange={this.onSelectCurrency} suggest filter='contains' ref="security" /> Password Confirm Password
); } } module.exports = AccountSettingsModal;