nci/static/js/app/components/common/progress/index.js

35 lines
764 B
JavaScript

'use strict';
define([
'underscore',
'react',
'templates/app/components/common/progress/index'
], function(_, React, template) {
return React.createClass({
render: template,
_computePercent: function() {
var build = this.props.build;
return Math.round((Date.now() - build.startDate) /
build.project.avgBuildDuration * 100);
},
componentDidMount: function() {
var self = this;
var updateCallback = function() {
if (self.props.build.status === 'in-progress') {
if (self.isMounted()) {
self.setState({percent: self._computePercent()});
_.delay(updateCallback, 100);
}
}
};
updateCallback();
},
getInitialState: function() {
return {
percent: this._computePercent()
}
}
});
});