github.com/hernad/nomad@v1.6.112/ui/app/components/job-deployments-stream.js (about)

     1  /**
     2   * Copyright (c) HashiCorp, Inc.
     3   * SPDX-License-Identifier: MPL-2.0
     4   */
     5  
     6  import Component from '@ember/component';
     7  import { computed } from '@ember/object';
     8  import { computed as overridable } from 'ember-overridable-computed';
     9  import moment from 'moment';
    10  import { classNames, tagName } from '@ember-decorators/component';
    11  import classic from 'ember-classic-decorator';
    12  
    13  @classic
    14  @tagName('ol')
    15  @classNames('timeline')
    16  export default class JobDeploymentsStream extends Component {
    17    @overridable(() => []) deployments;
    18  
    19    @computed('deployments.@each.versionSubmitTime')
    20    get sortedDeployments() {
    21      return this.deployments.sortBy('versionSubmitTime').reverse();
    22    }
    23  
    24    @computed('sortedDeployments.@each.version')
    25    get annotatedDeployments() {
    26      const deployments = this.sortedDeployments;
    27      return deployments.map((deployment, index) => {
    28        const meta = {};
    29  
    30        if (index === 0) {
    31          meta.showDate = true;
    32        } else {
    33          const previousDeployment = deployments.objectAt(index - 1);
    34          const previousSubmitTime = previousDeployment.get('version.submitTime');
    35          const submitTime = deployment.get('submitTime');
    36          if (
    37            submitTime &&
    38            previousSubmitTime &&
    39            moment(previousSubmitTime)
    40              .startOf('day')
    41              .diff(moment(submitTime).startOf('day'), 'days') > 0
    42          ) {
    43            meta.showDate = true;
    44          }
    45        }
    46  
    47        return { deployment, meta };
    48      });
    49    }
    50  }