/* global localStorage */ var React = require('react/addons') var Reflux = require('reflux') var Select = require('react-select') var Hq = require('../Services/Hq') var LinkedState = require('../Mixins/LinkedState') var Helper = require('../Mixins/Helper') var KeyCaster = require('../Mixins/KeyCaster') var UserStore = require('../Stores/UserStore') var getOptions = function (input, callback) { Hq.searchUser(input) .then(function (res) { callback(null, { options: res.body.map(function (user) { return { label: user.name, value: user.name } }), complete: false }) }) .catch(function (err) { console.error(err) }) } module.exports = React.createClass({ mixins: [LinkedState, Reflux.listenTo(UserStore, 'onUserChange'), Helper, KeyCaster('teamSettingsModal')], propTypes: { team: React.PropTypes.shape({ id: React.PropTypes.number, name: React.PropTypes.string, profileName: React.PropTypes.string, email: React.PropTypes.string, Members: React.PropTypes.array }), close: React.PropTypes.func }, getInitialState: function () { return { currentTab: 'teamInfo', team: this.props.team, userSubmitStatus: null, member: { name: '', role: 'member' }, updatingMember: false } }, onKeyCast: function (e) { switch (e.status) { case 'closeModal': this.props.close() break } }, onUserChange: function (res) { switch (res.status) { case 'userUpdated': var user = res.data if (user.id === this.props.team.id) { this.forceUpdate() } break } }, selectTab: function (tabName) { return function () { this.setState({currentTab: tabName}) }.bind(this) }, saveUserInfo: function () { this.setState({ userSubmitStatus: 'sending' }, function () { Hq.updateUser(this.props.team.name, this.state.team) .then(function (res) { this.setState({userSubmitStatus: 'done'}, function () { UserStore.Actions.update(res.body) this.forceUpdate() }) }.bind(this)) .catch(function (err) { console.error(err) this.setState({userSubmitStatus: 'error'}) }.bind(this)) }) }, handleMemberNameChange: function (value) { var member = this.state.member member.name = value this.setState({member: member}) }, addMember: function () { this.setState({updatingMember: true}, function () { Hq .addMember(this.props.team.name, { userName: this.state.member.name, role: this.state.member.role }) .then(function (res) { this.setState({updatingMember: false, team: res.body}) }.bind(this)) .catch(function (err) { console.error(err) this.setState({updatingMember: false}) }.bind(this)) }) }, roleChange: function (memberName) { return function (e) { var role = e.target.value this.setState({updatingMember: true}, function () { Hq .addMember(this.props.team.name, { userName: memberName, role: role }) .then(function (res) { this.setState({updatingMember: false, team: res.body}) }.bind(this)) .catch(function (err) { console.error(err) this.setState({updatingMember: false}) }.bind(this)) }) }.bind(this) }, removeMember: function (memberName) { return function () { this.setState({updatingMember: true}, function () { Hq .removeMember(this.props.team.name, { userName: memberName }) .then(function (res) { this.setState({updatingMember: false, team: res.body}) }.bind(this)) .catch(function (err) { console.error(err) this.setState({updatingMember: false}) }.bind(this)) }) }.bind(this) }, render: function () { var content switch (this.state.currentTab) { case 'teamInfo': content = this.renderTeamInfoTab() break case 'members': content = this.renderMembersTab() break } return (
| Username | Role | Control |
|---|