pipeline_actions.js.es6 3.64 KB
Newer Older
Regis's avatar
Regis committed
1
/* global Vue, Flash, gl */
Regis's avatar
Regis committed
2 3 4 5
/* eslint-disable no-param-reassign */

((gl) => {
  gl.VuePipelineActions = Vue.extend({
Regis's avatar
Regis committed
6
    props: ['pipeline', 'svgs'],
Regis's avatar
Regis committed
7 8 9 10 11 12 13 14
    computed: {
      actions() {
        return this.pipeline.details.manual_actions.length > 0;
      },
      artifacts() {
        return this.pipeline.details.artifacts.length > 0;
      },
    },
15 16 17 18 19
    methods: {
      download(name) {
        return `Download ${name} artifacts`;
      },
    },
Regis's avatar
Regis committed
20
    template: `
21
      <td class="pipeline-actions hidden-xs">
Regis's avatar
Regis committed
22
        <div class="controls pull-right">
Regis's avatar
Regis committed
23 24
          <div class="btn-group inline">
            <div class="btn-group">
25
              <button
Regis's avatar
Regis committed
26
                v-if='actions'
27
                class="dropdown-toggle btn btn-default has-tooltip js-pipeline-dropdown-manual-actions"
28 29
                data-toggle="dropdown"
                title="Manual build"
30 31 32
                data-placement="top"
                data-toggle="dropdown"
                aria-label="Manual build"
33
              >
34 35 36
                <span v-html='svgs.iconPlay' aria-hidden="true"></span>
                <i class="fa fa-caret-down" aria-hidden="true"></i>
              </button>
37 38 39 40 41
              <ul class="dropdown-menu dropdown-menu-align-right">
                <li v-for='action in pipeline.details.manual_actions'>
                  <a
                    rel="nofollow"
                    data-method="post"
Regis's avatar
Regis committed
42
                    :href='action.path'
43
                  >
44 45
                    <span v-html='svgs.iconPlay' aria-hidden="true"></span>
                    <span>{{action.name}}</span>
46 47 48
                  </a>
                </li>
              </ul>
Regis's avatar
Regis committed
49 50
            </div>
            <div class="btn-group">
51
              <button
Regis's avatar
Regis committed
52
                v-if='artifacts'
53 54 55 56
                class="dropdown-toggle btn btn-default build-artifacts has-tooltip js-pipeline-dropdown-download"
                data-toggle="dropdown"
                title="Artifacts"
                data-placement="top"
57
                data-toggle="dropdown"
58
                aria-label="Artifacts"
59
              >
60 61 62
                <i class="fa fa-download" aria-hidden="true"></i>
                <i class="fa fa-caret-down" aria-hidden="true"></i>
              </button>
Regis's avatar
Regis committed
63
              <ul class="dropdown-menu dropdown-menu-align-right">
64 65 66
                <li v-for='artifact in pipeline.details.artifacts'>
                  <a
                    rel="nofollow"
Regis's avatar
Regis committed
67
                    :href='artifact.path'
68
                  >
69
                    <i class="fa fa-download" aria-hidden="true"></i>
70
                    <span>{{download(artifact.name)}}</span>
Regis's avatar
Regis committed
71 72 73 74 75 76 77
                  </a>
                </li>
              </ul>
            </div>
          </div>
          <div class="cancel-retry-btns inline">
            <a
78
              v-if='pipeline.flags.retryable'
Regis's avatar
Regis committed
79 80 81 82
              class="btn has-tooltip"
              title="Retry"
              rel="nofollow"
              data-method="post"
83 84
              data-placement="top"
              data-toggle="dropdown"
85
              :href='pipeline.retry_path'
86
              aria-label="Retry"
87
            >
88
              <i class="fa fa-repeat" aria-hidden="true"></i>
Regis's avatar
Regis committed
89
            </a>
90
            <a
91
              v-if='pipeline.flags.cancelable'
92
              class="btn btn-remove has-tooltip"
93
              title="Cancel"
94 95
              rel="nofollow"
              data-method="post"
96 97
              data-placement="top"
              data-toggle="dropdown"
98
              :href='pipeline.cancel_path'
99
              aria-label="Cancel"
100
            >
101
              <i class="fa fa-remove" aria-hidden="true"></i>
102
            </a>
Regis's avatar
Regis committed
103
          </div>
Regis's avatar
Regis committed
104
        </div>
105
      </td>
Regis's avatar
Regis committed
106 107 108
    `,
  });
})(window.gl || (window.gl = {}));