ui/lib/pipeline/addon/components/build-step/component.js

52 lines
1.3 KiB
JavaScript

import Component from '@ember/component';
import { once } from '@ember/runloop';
import { set, get, computed } from '@ember/object';
import C from 'shared/utils/pipeline-constants';
export default Component.extend({
dateNow: null,
dateInterval: null,
didInsertElement() {
this._super(...arguments);
once(this, this.setupInterval);
},
willDestroyElement() {
this._super(...arguments);
var interval = get(this, 'dateInterval');
interval && window.clearInterval(interval);
},
actions: {
showLogs(stageIndex, stepIndex) {
if ( !get(this, 'notRun') ) {
if (this.logKeyChanged) {
this.logKeyChanged(stageIndex, stepIndex);
}
}
},
},
waiting: computed('step.state', function() {
return get(this, 'step.state') === C.STATES.WAITING || get(this, 'step.state') === C.STATES.SKIPPED || !get(this, 'step.state');
}),
building: computed('step.state', function() {
return get(this, 'step.state') === C.STATES.BUILDING;
}),
notRun: computed('activity.executionState', 'step.state', function() {
return get(this, 'activity.executionState') === C.STATES.FAILED && !get(this, 'step.state');
}),
setupInterval() {
var interval = window.setInterval(() => {
set(this, 'dateNow', Date.now())
}, 1000);
set(this, 'dateInterval', interval);
},
});