Display loading indicator for entire application, rather than

individual components.
This commit is contained in:
John Furrow
2016-03-19 20:17:37 +01:00
parent c3d6bee205
commit ff728429d8
13 changed files with 203 additions and 30 deletions
@@ -9,6 +9,7 @@ import format from '../../util/formatData';
import LineChart from '../ui/LineChart';
import LoadingIndicator from '../ui/LoadingIndicator';
import TransferDataStore from '../../stores/TransferDataStore';
import UIStore from '../../stores/UIStore';
import Upload from '../icons/Upload';
const METHODS_TO_BIND = [
@@ -34,6 +35,7 @@ class ClientStats extends React.Component {
}
componentDidMount() {
UIStore.registerDependency(['transfer-data', 'transfer-history']);
this.setState({
sidebarWidth: ReactDOM.findDOMNode(this).offsetWidth
});
@@ -72,6 +74,10 @@ class ClientStats extends React.Component {
transferDataRequestError: false,
transferDataRequestSuccess: true
});
if (!UIStore.hasSatisfiedDependencies()) {
UIStore.satisfyDependency('transfer-data');
}
}
onTransferHistoryRequestSuccess() {
@@ -80,6 +86,10 @@ class ClientStats extends React.Component {
transferHistoryRequestSuccess: true
});
}
if (!UIStore.hasSatisfiedDependencies()) {
UIStore.satisfyDependency('transfer-history');
}
}
render() {
@@ -146,19 +156,10 @@ class ClientStats extends React.Component {
);
}
let transitionGroupClasses = classnames('client-stats sidebar__item', {
'is-loading': this.isLoading()
})
return (
<CSSTransitionGroup
className={transitionGroupClasses}
component="div"
transitionEnterTimeout={3000}
transitionLeaveTimeout={3000}
transitionName="transfer-data">
<div className="client-stats sidebar__item">
{content}
</CSSTransitionGroup>
</div>
);
}