Added spinner animation to replace save button when uploading a new profile picture

Этот коммит содержится в:
Reed Garmsen
2015-07-31 14:06:00 -07:00
родитель cef628c1d1
Коммит 344ab98139
2 изменённых файлов: 9 добавлений и 4 удалений

Просмотреть файл

@@ -44,7 +44,11 @@ module.exports = React.createClass({
{server_error} {server_error}
{client_error} {client_error}
<span className='btn btn-sm btn-primary btn-file sel-btn'>Select<input ref='input' accept='.jpg,.png,.bmp' type='file' onChange={this.props.pictureChange}/></span> <span className='btn btn-sm btn-primary btn-file sel-btn'>Select<input ref='input' accept='.jpg,.png,.bmp' type='file' onChange={this.props.pictureChange}/></span>
{!this.props.loadingPicture ?
<a className={this.props.submitActive ? 'btn btn-sm btn-primary' : 'btn btn-sm btn-inactive disabled'} onClick={this.props.submit}>Save</a> <a className={this.props.submitActive ? 'btn btn-sm btn-primary' : 'btn btn-sm btn-inactive disabled'} onClick={this.props.submit}>Save</a>
:
<img className="spinner" src="/static/images/load.gif"/>
}
<a className='btn btn-sm theme' href='#' onClick={self.props.updateSection}>Cancel</a> <a className='btn btn-sm theme' href='#' onClick={self.props.updateSection}>Cancel</a>
</li> </li>
</ul> </ul>

Просмотреть файл

@@ -748,6 +748,7 @@ var GeneralTab = React.createClass({
var formData = new FormData(); var formData = new FormData();
formData.append('image', picture, picture.name); formData.append('image', picture, picture.name);
this.setState({loadingPicture: true});
client.uploadProfileImage(formData, client.uploadProfileImage(formData,
function() { function() {
@@ -783,7 +784,6 @@ var GeneralTab = React.createClass({
this.submitActive = true; this.submitActive = true;
this.setState({client_error: null}); this.setState({client_error: null});
} else { } else {
this.setState({picture: null}); this.setState({picture: null});
} }
@@ -811,7 +811,7 @@ var GeneralTab = React.createClass({
var user = this.props.user; var user = this.props.user;
return {username: user.username, first_name: user.first_name, last_name: user.last_name, nickname: user.nickname, return {username: user.username, first_name: user.first_name, last_name: user.last_name, nickname: user.nickname,
email: user.email, picture: null }; email: user.email, picture: null, loadingPicture: false};
}, },
render: function() { render: function() {
var user = this.props.user; var user = this.props.user;
@@ -1002,6 +1002,7 @@ var GeneralTab = React.createClass({
picture={this.state.picture} picture={this.state.picture}
pictureChange={this.updatePicture} pictureChange={this.updatePicture}
submitActive={this.submitActive} submitActive={this.submitActive}
loadingPicture={this.state.loadingPicture}
/> />
); );
} else { } else {