time_ago.js.es6 2.41 KB
Newer Older
Regis's avatar
Regis committed
1 2 3 4
/* global Vue, gl */
/* eslint-disable no-param-reassign */
((gl) => {
  gl.VueTimeAgo = Vue.extend({
5 6 7 8 9
    data() {
      return {
        currentTime: new Date(),
      };
    },
Regis's avatar
Regis committed
10 11 12
    props: [
      'pipeline',
    ],
13 14 15 16
    computed: {
      localTimeFinished() {
        return gl.utils.formatDate(this.pipeline.details.finished_at);
      },
Regis's avatar
Regis committed
17
      timeStopped() {
18
        const changeTime = this.currentTime;
Regis's avatar
Regis committed
19 20 21 22 23 24 25
        const options = {
          weekday: 'long',
          year: 'numeric',
          month: 'short',
          day: 'numeric',
        };
        options.timeZoneName = 'short';
26
        const finished = this.pipeline.details.finished_at;
27 28
        if (!finished && changeTime) return false;
        return ({ words: gl.utils.getTimeago().format(finished) });
Regis's avatar
Regis committed
29
      },
30 31
    },
    methods: {
Regis's avatar
Regis committed
32
      duration() {
33 34 35 36
        const { duration } = this.pipeline.details;
        if (duration === 0) return '00:00:00';
        if (duration !== null) return duration;
        return false;
Regis's avatar
Regis committed
37
      },
38 39
      changeTime() {
        this.currentTime = new Date();
40
      },
Regis's avatar
Regis committed
41 42 43
    },
    template: `
      <td>
44
        <p class="duration" v-if='duration()'>
Regis's avatar
Regis committed
45 46 47 48 49 50 51 52 53 54
          <svg
            xmlns="http://www.w3.org/2000/svg"
            width="40"
            height="40"
            viewBox="0 0 40 40"
          >
            <g fill="#8F8F8F" fill-rule="evenodd">
              <path d="M29.513 10.134A15.922 15.922 0 0 0 23 7.28V6h2.993C26.55 6 27 5.552 27 5V2a1 1 0 0 0-1.007-1H14.007C13.45 1 13 1.448 13 2v3a1 1 0 0 0 1.007 1H17v1.28C9.597 8.686 4 15.19 4 23c0 8.837 7.163 16 16 16s16-7.163 16-16c0-3.461-1.099-6.665-2.967-9.283l1.327-1.58a2.498 2.498 0 0 0-.303-3.53 2.499 2.499 0 0 0-3.528.315l-1.016 1.212zM20 34c6.075 0 11-4.925 11-11s-4.925-11-11-11S9 16.925 9 23s4.925 11 11 11z"></path><path d="M19 21h-4.002c-.552 0-.998.452-.998 1.01v1.98c0 .567.447 1.01.998 1.01h7.004c.274 0 .521-.111.701-.291a.979.979 0 0 0 .297-.704v-8.01c0-.54-.452-.995-1.01-.995h-1.98a.997.997 0 0 0-1.01.995V21z"></path>
            </g>
          </svg>
Regis's avatar
Regis committed
55
          {{duration()}}
Regis's avatar
Regis committed
56
        </p>
57
        <p class="finished-at" v-if='timeStopped'>
Regis's avatar
Regis committed
58 59 60 61 62
          <i class="fa fa-calendar"></i>
          <time
            data-toggle="tooltip"
            data-placement="top"
            data-container="body"
63
            :data-original-title='localTimeFinished'
Regis's avatar
Regis committed
64
          >
65
            {{timeStopped.words}}
Regis's avatar
Regis committed
66 67 68 69 70 71
          </time>
        </p>
      </td>
    `,
  });
})(window.gl || (window.gl = {}));