2023-04-10 15:36:59 +00:00
|
|
|
/**
|
|
|
|
* Copyright (c) HashiCorp, Inc.
|
|
|
|
* SPDX-License-Identifier: MPL-2.0
|
|
|
|
*/
|
|
|
|
|
2017-12-15 21:39:18 +00:00
|
|
|
import Component from '@ember/component';
|
|
|
|
import { computed } from '@ember/object';
|
2019-10-15 18:32:58 +00:00
|
|
|
import { computed as overridable } from 'ember-overridable-computed';
|
2017-09-19 14:47:10 +00:00
|
|
|
import moment from 'moment';
|
2020-06-10 13:49:16 +00:00
|
|
|
import { classNames, tagName } from '@ember-decorators/component';
|
|
|
|
import classic from 'ember-classic-decorator';
|
2017-09-19 14:47:10 +00:00
|
|
|
|
2020-06-10 13:49:16 +00:00
|
|
|
@classic
|
|
|
|
@tagName('ol')
|
|
|
|
@classNames('timeline')
|
|
|
|
export default class JobVersionsStream extends Component {
|
|
|
|
@overridable(() => []) versions;
|
2017-09-19 14:47:10 +00:00
|
|
|
|
|
|
|
// Passes through to the job-diff component
|
2020-06-10 13:49:16 +00:00
|
|
|
verbose = true;
|
2017-09-19 14:47:10 +00:00
|
|
|
|
2020-06-10 13:49:16 +00:00
|
|
|
@computed('versions.[]')
|
|
|
|
get annotatedVersions() {
|
|
|
|
const versions = this.versions.sortBy('submitTime').reverse();
|
2017-09-19 14:47:10 +00:00
|
|
|
return versions.map((version, index) => {
|
|
|
|
const meta = {};
|
|
|
|
|
|
|
|
if (index === 0) {
|
|
|
|
meta.showDate = true;
|
|
|
|
} else {
|
|
|
|
const previousVersion = versions.objectAt(index - 1);
|
2021-12-28 16:08:12 +00:00
|
|
|
const previousStart = moment(previousVersion.get('submitTime')).startOf(
|
|
|
|
'day'
|
|
|
|
);
|
2017-11-15 21:56:04 +00:00
|
|
|
const currentStart = moment(version.get('submitTime')).startOf('day');
|
|
|
|
if (previousStart.diff(currentStart, 'days') > 0) {
|
2017-09-19 14:47:10 +00:00
|
|
|
meta.showDate = true;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
return { version, meta };
|
|
|
|
});
|
2020-06-10 13:49:16 +00:00
|
|
|
}
|
|
|
|
}
|