list.vue 2.8 KB
Newer Older
P
Phil Hughes 已提交
1
<script>
P
Phil Hughes 已提交
2
import { mapActions, mapGetters, mapState } from 'vuex';
P
Phil Hughes 已提交
3
import LoadingIcon from '../../../vue_shared/components/loading_icon.vue';
P
Phil Hughes 已提交
4
import Icon from '../../../vue_shared/components/icon.vue';
P
Phil Hughes 已提交
5
import CiIcon from '../../../vue_shared/components/ci_icon.vue';
P
Phil Hughes 已提交
6 7 8
import Tabs from '../../../vue_shared/components/tabs/tabs';
import Tab from '../../../vue_shared/components/tabs/tab.vue';
import JobsList from '../jobs/list.vue';
P
Phil Hughes 已提交
9 10 11 12

export default {
  components: {
    LoadingIcon,
P
Phil Hughes 已提交
13
    Icon,
P
Phil Hughes 已提交
14
    CiIcon,
P
Phil Hughes 已提交
15 16
    Tabs,
    Tab,
P
Phil Hughes 已提交
17
    JobsList,
P
Phil Hughes 已提交
18 19
  },
  computed: {
P
Phil Hughes 已提交
20
    ...mapGetters('pipelines', ['jobsCount', 'failedJobsCount', 'failedStages', 'pipelineFailed']),
P
Phil Hughes 已提交
21
    ...mapState('pipelines', ['isLoadingPipeline', 'latestPipeline', 'stages', 'isLoadingJobs']),
P
Phil Hughes 已提交
22
  },
P
Phil Hughes 已提交
23
  created() {
24
    this.fetchLatestPipeline();
P
Phil Hughes 已提交
25 26
  },
  methods: {
27
    ...mapActions('pipelines', ['fetchLatestPipeline']),
P
Phil Hughes 已提交
28 29 30 31 32
  },
};
</script>

<template>
P
Phil Hughes 已提交
33
  <div class="ide-pipeline">
P
Phil Hughes 已提交
34
    <loading-icon
P
Phil Hughes 已提交
35
      v-if="isLoadingPipeline && !latestPipeline"
P
Phil Hughes 已提交
36 37 38 39
      class="prepend-top-default"
      size="2"
    />
    <template v-else-if="latestPipeline">
P
Phil Hughes 已提交
40 41 42 43
      <header
        class="ide-tree-header ide-pipeline-header"
      >
        <ci-icon
44
          :status="latestPipeline.details.status"
P
Phil Hughes 已提交
45
          :size="24"
P
Phil Hughes 已提交
46 47 48 49 50 51
        />
        <span class="prepend-left-8">
          <strong>
            Pipeline
          </strong>
          <a
P
Phil Hughes 已提交
52
            :href="latestPipeline.path"
P
Phil Hughes 已提交
53
            target="_blank"
P
Phil Hughes 已提交
54
            class="ide-external-link"
P
Phil Hughes 已提交
55 56
          >
            #{{ latestPipeline.id }}
P
Phil Hughes 已提交
57 58 59 60
            <icon
              name="external-link"
              :size="12"
            />
P
Phil Hughes 已提交
61 62 63
          </a>
        </span>
      </header>
P
Phil Hughes 已提交
64
      <tabs class="ide-pipeline-list">
P
Phil Hughes 已提交
65 66 67
        <tab
          :active="!pipelineFailed"
        >
P
Phil Hughes 已提交
68 69 70
          <template slot="title">
            Jobs
            <span
71
              v-if="jobsCount"
P
Phil Hughes 已提交
72
              class="badge badge-pill"
P
Phil Hughes 已提交
73 74 75 76 77 78 79 80 81
            >
              {{ jobsCount }}
            </span>
          </template>
          <jobs-list
            :loading="isLoadingJobs"
            :stages="stages"
          />
        </tab>
P
Phil Hughes 已提交
82 83 84
        <tab
          :active="pipelineFailed"
        >
P
Phil Hughes 已提交
85 86 87
          <template slot="title">
            Failed Jobs
            <span
88
              v-if="failedJobsCount"
P
Phil Hughes 已提交
89
              class="badge badge-pill"
P
Phil Hughes 已提交
90 91 92 93 94 95 96 97 98 99
            >
              {{ failedJobsCount }}
            </span>
          </template>
          <jobs-list
            :loading="isLoadingJobs"
            :stages="failedStages"
          />
        </tab>
      </tabs>
P
Phil Hughes 已提交
100 101 102 103
    </template>
  </div>
</template>

P
Phil Hughes 已提交
104 105 106 107 108 109 110 111 112 113 114 115
<style scoped>
.ide-pipeline {
  display: flex;
  flex-direction: column;
}

.ide-pipeline-list {
  flex: 1;
  overflow: auto;
}

.ide-pipeline-header {
116
  min-height: 50px;
P
Phil Hughes 已提交
117 118 119 120
  padding-left: 16px;
  padding-right: 16px;
}

P
Phil Hughes 已提交
121 122 123
.ide-pipeline-header .ci-status-icon {
  display: flex;
}
P
Phil Hughes 已提交
124
</style>