blob: afe484e95f2c21dfdd47668125511f5f6fc59099 [file] [log] [blame]
import React from 'react';
import Breadcrumb from 'components/Breadcrumb';
import Loading from 'components/Loading';
import UpdateConfig from 'components/UpdateConfig';
import UpdateDetails from 'components/UpdateDetails';
import { isInProgressUpdate } from 'utils/Update';
export default class Update extends React.Component {
constructor(props) {
super(props);
this.state = { loading: true };
}
componentWillMount() {
this.fetchUpdateDetails();
}
componentWillUpdate(nextProps, nextState) {
if (!nextState.loading && isInProgressUpdate(nextState.update)) {
// refetch update details in 60 seconds
setTimeout(() => { this.fetchUpdateDetails(); }, 60000);
}
}
fetchUpdateDetails() {
const { role, environment, name, uid } = this.props.match.params;
const job = new JobKey();
job.role = role;
job.environment = environment;
job.name = name;
const key = new JobUpdateKey();
key.job = job;
key.id = uid;
const query = new JobUpdateQuery();
query.key = key;
const that = this;
this.props.api.getJobUpdateDetails(null, query, (response) => {
const update = response.result.getJobUpdateDetailsResult.detailsList[0];
that.setState({ cluster: response.serverInfo.clusterName, loading: false, update });
});
}
render() {
const { role, environment, name, uid } = this.props.match.params;
if (this.state.loading) {
return <Loading />;
}
return (<div className='update-page'>
<Breadcrumb
cluster={this.state.cluster}
env={environment}
name={name}
role={role}
update={uid} />
<UpdateDetails update={this.state.update} />
<UpdateConfig update={this.state.update} />
</div>);
}
}