All files / ee/app/assets/javascripts/license_compliance/components pipeline_info.vue

100% Statements 10/10
62.5% Branches 5/8
100% Functions 3/3
100% Lines 10/10

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55  1x   1x 1x                                           6x 6x       6x     6x   6x     6x           21x                  
<script>
import { GlSafeHtmlDirective as SafeHtml } from '@gitlab/ui';
import { escape } from 'lodash';
import { s__, sprintf } from '~/locale';
import TimeAgoTooltip from '~/vue_shared/components/time_ago_tooltip.vue';
 
export default {
  name: 'PipelineInfo',
  components: {
    TimeAgoTooltip,
  },
  directives: {
    SafeHtml,
  },
  props: {
    path: {
      required: true,
      type: String,
    },
    timestamp: {
      required: true,
      type: String,
    },
  },
  computed: {
    pipelineText() {
      const { path } = this;
      const body = s__(
        'Licenses|Displays licenses detected in the project, based on the %{linkStart}latest successful%{linkEnd} scan',
      );
 
      const linkStart = path
        ? `<a href="${escape(path)}" target="_blank" rel="noopener noreferrer">`
        : '';
      const linkEnd = path ? '</a>' : '';
 
      return sprintf(body, { linkStart, linkEnd }, false);
    },
    hasFullPipelineText() {
      return Boolean(this.path && this.timestamp);
    },
  },
};
</script>
 
<template>
  <span v-if="hasFullPipelineText">
    <span v-safe-html="pipelineText"></span>
    <span>•</span>
    <time-ago-tooltip :time="timestamp" />
  </span>
 
  <span v-else v-safe-html="pipelineText"></span>
</template>