提交 66727f74 编写于 作者: R Regis

change architecture - add store - make api call by default

上级 dc476fe6
//= require vue
/* global Vue, gl */
/* eslint-disable no-param-reassign */
((gl) => {
gl.VueRunnerStatus = Vue.extend({
props: ['status'],
template: `
<svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 14 14">
<g fill={{status.color}} fill-rule="evenodd">
<path d={{status.pathOne}}></path>
<path d={{status.pathTwo}}></path>
</g>
</svg>
&nbsp;{{status.text}}
`,
});
})(window.gl || (window.gl = {}));
//= require vue
//= require vue-resource
//= require ./store.js.es6
//= require ./status_data_icons.js.es6
//= require ./vue_commit_link.vue.js.es6
//= require ./pipelines.vue.js.es6
//= require vue
//= require_tree ./runnerstats
/* global Vue, gl */
/* eslint-disable no-param-reassign */
......@@ -7,10 +5,20 @@
gl.VuePipeLines = Vue.extend({
data() {
return {
endpoint: `/api/v3/projects/${this.scopeId}/pipelines`,
pipelines: [],
runnerStats: new gl.RunnerStats(),
};
},
props: ['pipelines', 'count'],
props: ['scope', 'store'],
created() {
this.store.fetchData.call(this, Vue);
},
methods: {
shortSha(pipeline) {
return pipeline.sha.slice(0, 8);
},
},
template: `
<thead>
<tr>
......@@ -25,17 +33,21 @@
<tbody v-for='pipeline in pipelines'>
<tr class="commit">
<td class="commit-link">
<a href="{{pipeline.ref}}/{{pipeline.id}}">
<span class="ci-status ci-{{pipeline.status}}">
<vue-runner-status
:status='runnerStats[pipeline.status]'
>
</vue-runner-status>
</span>
<a href="pipelines/{{pipeline.id}}">
<div v-if="pipeline.status === 'running'">
<span class="ci-status ci-{{pipeline.status}}">
running
</span>
</div>
<div v-if="pipeline.status === 'passed'">
<span class="ci-status ci-{{pipeline.status}}">
passed
</span>
</div>
</a>
</td>
<td>
<a href="{{pipeline.ref}}/{{pipeline.id}}"><span class="pipeline-id">#{{pipeline.id}}</span>
<a href="pipelines/{{pipeline.id}}"><span class="pipeline-id">#{{pipeline.id}}</span>
</a><span>by</span>
<span class="api monospace">{{pipeline.user}}</span>
</td>
......@@ -49,7 +61,7 @@
<path fill="#8F8F8F" fill-rule="evenodd" d="M28.7769836,18 C27.8675252,13.9920226 24.2831748,11 20,11 C15.7168252,11 12.1324748,13.9920226 11.2230164,18 L4.0085302,18 C2.90195036,18 2,18.8954305 2,20 C2,21.1122704 2.8992496,22 4.0085302,22 L11.2230164,22 C12.1324748,26.0079774 15.7168252,29 20,29 C24.2831748,29 27.8675252,26.0079774 28.7769836,22 L35.9914698,22 C37.0980496,22 38,21.1045695 38,20 C38,18.8877296 37.1007504,18 35.9914698,18 L28.7769836,18 L28.7769836,18 Z M20,25 C22.7614237,25 25,22.7614237 25,20 C25,17.2385763 22.7614237,15 20,15 C17.2385763,15 15,17.2385763 15,20 C15,22.7614237 17.2385763,25 20,25 L20,25 Z"></path>
</svg>
</div>
<a class="commit-id monospace" href="/gitlab-org/gitlab-ce/commit/29141ed3ea6157a60d9748921782015626a17f9e">29141ed3</a>
<a class="commit-id monospace" href="/gitlab-org/gitlab-ce/commit/29141ed3ea6157a60d9748921782015626a17f9e">{{shortSha(pipeline)}}</a>
<p class="commit-title">
<a href="mailto:james@jameslopez.es"><img class="avatar has-tooltip s20 hidden-xs" alt="James Lopez's avatar" title="James Lopez" data-container="body" src="http://www.gravatar.com/avatar/80d3b651b4be1f1db39435c2d11f1f23?s=40&amp;d=identicon"></a>
<a class="commit-row-message" href="/gitlab-org/gitlab-ce/commit/29141ed3ea6157a60d9748921782015626a17f9e">fix broken repo 500 errors in UI and added relevant specs</a>
......@@ -57,7 +69,7 @@
</td>
<td class="stage-cell">
<div class="stage-container">
<a class="has-tooltip ci-status-icon-failed" title="Build: failed" href="{{pipeline.ref}}#build"><svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 14 14">
<a class="has-tooltip ci-status-icon-failed" title="Build: failed" href="pipelines#build"><svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 14 14">
<g fill="#D22852" fill-rule="evenodd">
<path d="M12.5,7 C12.5,3.96243388 10.0375661,1.5 7,1.5 C3.96243388,1.5 1.5,3.96243388 1.5,7 C1.5,10.0375661 3.96243388,12.5 7,12.5 C10.0375661,12.5 12.5,10.0375661 12.5,7 Z M0,7 C0,3.13400675 3.13400675,0 7,0 C10.8659932,0 14,3.13400675 14,7 C14,10.8659932 10.8659932,14 7,14 C3.13400675,14 0,10.8659932 0,7 Z"></path>
<path d="M7.72916667,6.27083333 L7.72916667,4.28939247 C7.72916667,4.12531853 7.59703895,4 7.43405116,4 L6.56594884,4 C6.40541585,4 6.27083333,4.12956542 6.27083333,4.28939247 L6.27083333,6.27083333 L4.28939247,6.27083333 C4.12531853,6.27083333 4,6.40296105 4,6.56594884 L4,7.43405116 C4,7.59458415 4.12956542,7.72916667 4.28939247,7.72916667 L6.27083333,7.72916667 L6.27083333,9.71060753 C6.27083333,9.87468147 6.40296105,10 6.56594884,10 L7.43405116,10 C7.59458415,10 7.72916667,9.87043458 7.72916667,9.71060753 L7.72916667,7.72916667 L9.71060753,7.72916667 C9.87468147,7.72916667 10,7.59703895 10,7.43405116 L10,6.56594884 C10,6.40541585 9.87043458,6.27083333 9.71060753,6.27083333 L7.72916667,6.27083333 Z" transform="rotate(-45 7 7)"></path>
......@@ -66,7 +78,7 @@
</a></div>
<div class="stage-container">
<a class="has-tooltip ci-status-icon-failed" title="Prepare: failed" href="{{pipeline.ref}}#prepare"><svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 14 14">
<a class="has-tooltip ci-status-icon-failed" title="Prepare: failed" href="pipelines#prepare"><svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 14 14">
<g fill="#D22852" fill-rule="evenodd">
<path d="M12.5,7 C12.5,3.96243388 10.0375661,1.5 7,1.5 C3.96243388,1.5 1.5,3.96243388 1.5,7 C1.5,10.0375661 3.96243388,12.5 7,12.5 C10.0375661,12.5 12.5,10.0375661 12.5,7 Z M0,7 C0,3.13400675 3.13400675,0 7,0 C10.8659932,0 14,3.13400675 14,7 C14,10.8659932 10.8659932,14 7,14 C3.13400675,14 0,10.8659932 0,7 Z"></path>
<path d="M7.72916667,6.27083333 L7.72916667,4.28939247 C7.72916667,4.12531853 7.59703895,4 7.43405116,4 L6.56594884,4 C6.40541585,4 6.27083333,4.12956542 6.27083333,4.28939247 L6.27083333,6.27083333 L4.28939247,6.27083333 C4.12531853,6.27083333 4,6.40296105 4,6.56594884 L4,7.43405116 C4,7.59458415 4.12956542,7.72916667 4.28939247,7.72916667 L6.27083333,7.72916667 L6.27083333,9.71060753 C6.27083333,9.87468147 6.40296105,10 6.56594884,10 L7.43405116,10 C7.59458415,10 7.72916667,9.87043458 7.72916667,9.71060753 L7.72916667,7.72916667 L9.71060753,7.72916667 C9.87468147,7.72916667 10,7.59703895 10,7.43405116 L10,6.56594884 C10,6.40541585 9.87043458,6.27083333 9.71060753,6.27083333 L7.72916667,6.27083333 Z" transform="rotate(-45 7 7)"></path>
......@@ -75,7 +87,7 @@
</a></div>
<div class="stage-container">
<a class="has-tooltip ci-status-icon-success" title="Notify Build: success" href="{{pipeline.ref}}#notify_build"><svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 14 14">
<a class="has-tooltip ci-status-icon-success" title="Notify Build: success" href="pipelines#notify_build"><svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 14 14">
<g fill="#31AF64" fill-rule="evenodd">
<path d="M12.5,7 C12.5,3.96243388 10.0375661,1.5 7,1.5 C3.96243388,1.5 1.5,3.96243388 1.5,7 C1.5,10.0375661 3.96243388,12.5 7,12.5 C10.0375661,12.5 12.5,10.0375661 12.5,7 Z M0,7 C0,3.13400675 3.13400675,0 7,0 C10.8659932,0 14,3.13400675 14,7 C14,10.8659932 10.8659932,14 7,14 C3.13400675,14 0,10.8659932 0,7 Z"></path>
<path d="M7.29166667,7.875 L5.54840803,7.875 C5.38293028,7.875 5.25,8.00712771 5.25,8.17011551 L5.25,9.03821782 C5.25,9.19875081 5.38360183,9.33333333 5.54840803,9.33333333 L8.24853534,9.33333333 C8.52035522,9.33333333 8.75,9.11228506 8.75,8.83960819 L8.75,8.46475969 L8.75,4.07392947 C8.75,3.92144267 8.61787229,3.79166667 8.45488449,3.79166667 L7.58678218,3.79166667 C7.42624919,3.79166667 7.29166667,3.91804003 7.29166667,4.07392947 L7.29166667,7.875 Z" transform="rotate(45 7 6.563)"></path>
......@@ -84,7 +96,7 @@
</a></div>
<div class="stage-container">
<a class="has-tooltip ci-status-icon-failed" title="Post Test: failed" href="{{pipeline.ref}}#post-test"><svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 14 14">
<a class="has-tooltip ci-status-icon-failed" title="Post Test: failed" href="pipelines#post-test"><svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 14 14">
<g fill="#D22852" fill-rule="evenodd">
<path d="M12.5,7 C12.5,3.96243388 10.0375661,1.5 7,1.5 C3.96243388,1.5 1.5,3.96243388 1.5,7 C1.5,10.0375661 3.96243388,12.5 7,12.5 C10.0375661,12.5 12.5,10.0375661 12.5,7 Z M0,7 C0,3.13400675 3.13400675,0 7,0 C10.8659932,0 14,3.13400675 14,7 C14,10.8659932 10.8659932,14 7,14 C3.13400675,14 0,10.8659932 0,7 Z"></path>
<path d="M7.72916667,6.27083333 L7.72916667,4.28939247 C7.72916667,4.12531853 7.59703895,4 7.43405116,4 L6.56594884,4 C6.40541585,4 6.27083333,4.12956542 6.27083333,4.28939247 L6.27083333,6.27083333 L4.28939247,6.27083333 C4.12531853,6.27083333 4,6.40296105 4,6.56594884 L4,7.43405116 C4,7.59458415 4.12956542,7.72916667 4.28939247,7.72916667 L6.27083333,7.72916667 L6.27083333,9.71060753 C6.27083333,9.87468147 6.40296105,10 6.56594884,10 L7.43405116,10 C7.59458415,10 7.72916667,9.87043458 7.72916667,9.71060753 L7.72916667,7.72916667 L9.71060753,7.72916667 C9.87468147,7.72916667 10,7.59703895 10,7.43405116 L10,6.56594884 C10,6.40541585 9.87043458,6.27083333 9.71060753,6.27083333 L7.72916667,6.27083333 Z" transform="rotate(-45 7 7)"></path>
......@@ -93,7 +105,7 @@
</a></div>
<div class="stage-container">
<a class="has-tooltip ci-status-icon-running" title="Test: running" href="{{pipeline.ref}}#test"><svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 14 14">
<a class="has-tooltip ci-status-icon-running" title="Test: running" href="pipelines#test"><svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 14 14">
<g fill="#2D9FD8" fill-rule="evenodd">
<path d="M12.5,7 C12.5,3.96243388 10.0375661,1.5 7,1.5 C3.96243388,1.5 1.5,3.96243388 1.5,7 C1.5,10.0375661 3.96243388,12.5 7,12.5 C10.0375661,12.5 12.5,10.0375661 12.5,7 Z M0,7 C0,3.13400675 3.13400675,0 7,0 C10.8659932,0 14,3.13400675 14,7 C14,10.8659932 10.8659932,14 7,14 C3.13400675,14 0,10.8659932 0,7 Z"></path>
<path d="M7,3 C9.209139,3 11,4.790861 11,7 C11,9.209139 9.209139,11 7,11 C5.65802855,11 4.47040669,10.3391508 3.74481446,9.32513253 L7,7 L7,3 L7,3 Z"></path>
......@@ -102,7 +114,7 @@
</a></div>
<div class="stage-container">
<a class="has-tooltip ci-status-icon-failed" title="Notify Test: failed" href="{{pipeline.ref}}#notify_test"><svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 14 14">
<a class="has-tooltip ci-status-icon-failed" title="Notify Test: failed" href="pipelines#notify_test"><svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 14 14">
<g fill="#D22852" fill-rule="evenodd">
<path d="M12.5,7 C12.5,3.96243388 10.0375661,1.5 7,1.5 C3.96243388,1.5 1.5,3.96243388 1.5,7 C1.5,10.0375661 3.96243388,12.5 7,12.5 C10.0375661,12.5 12.5,10.0375661 12.5,7 Z M0,7 C0,3.13400675 3.13400675,0 7,0 C10.8659932,0 14,3.13400675 14,7 C14,10.8659932 10.8659932,14 7,14 C3.13400675,14 0,10.8659932 0,7 Z"></path>
<path d="M7.72916667,6.27083333 L7.72916667,4.28939247 C7.72916667,4.12531853 7.59703895,4 7.43405116,4 L6.56594884,4 C6.40541585,4 6.27083333,4.12956542 6.27083333,4.28939247 L6.27083333,6.27083333 L4.28939247,6.27083333 C4.12531853,6.27083333 4,6.40296105 4,6.56594884 L4,7.43405116 C4,7.59458415 4.12956542,7.72916667 4.28939247,7.72916667 L6.27083333,7.72916667 L6.27083333,9.71060753 C6.27083333,9.87468147 6.40296105,10 6.56594884,10 L7.43405116,10 C7.59458415,10 7.72916667,9.87043458 7.72916667,9.71060753 L7.72916667,7.72916667 L9.71060753,7.72916667 C9.87468147,7.72916667 10,7.59703895 10,7.43405116 L10,6.56594884 C10,6.40541585 9.87043458,6.27083333 9.71060753,6.27083333 L7.72916667,6.27083333 Z" transform="rotate(-45 7 7)"></path>
......@@ -111,7 +123,7 @@
</a></div>
<div class="stage-container">
<a class="has-tooltip ci-status-icon-skipped" title="Pages: skipped" href="{{pipeline.ref}}#pages"><svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 14 14">
<a class="has-tooltip ci-status-icon-skipped" title="Pages: skipped" href="pipelines#pages"><svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 14 14">
<g fill="#5C5C5C" fill-rule="evenodd">
<path d="M12.5,7 C12.5,3.96243388 10.0375661,1.5 7,1.5 C3.96243388,1.5 1.5,3.96243388 1.5,7 C1.5,10.0375661 3.96243388,12.5 7,12.5 C10.0375661,12.5 12.5,10.0375661 12.5,7 Z M0,7 C0,3.13400675 3.13400675,0 7,0 C10.8659932,0 14,3.13400675 14,7 C14,10.8659932 10.8659932,14 7,14 C3.13400675,14 0,10.8659932 0,7 Z"></path>
<rect width="8" height="2" x="3" y="6" transform="rotate(45 7 7)" rx=".5"></rect>
......@@ -120,7 +132,7 @@
</a></div>
<div class="stage-container">
<a class="has-tooltip ci-status-icon-canceled" title="Deploy: canceled" href="{{pipeline.ref}}#deploy"><svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 14 14">
<a class="has-tooltip ci-status-icon-canceled" title="Deploy: canceled" href="pipelines#deploy"><svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 14 14">
<g fill="#5C5C5C" fill-rule="evenodd">
<path d="M12.5,7 C12.5,3.96243388 10.0375661,1.5 7,1.5 C3.96243388,1.5 1.5,3.96243388 1.5,7 C1.5,10.0375661 3.96243388,12.5 7,12.5 C10.0375661,12.5 12.5,10.0375661 12.5,7 Z M0,7 C0,3.13400675 3.13400675,0 7,0 C10.8659932,0 14,3.13400675 14,7 C14,10.8659932 10.8659932,14 7,14 C3.13400675,14 0,10.8659932 0,7 Z"></path>
<rect width="8" height="2" x="3" y="6" transform="rotate(45 7 7)" rx=".5"></rect>
......@@ -173,7 +185,7 @@
title="Retry"
rel="nofollow"
data-method="post"
href="{{pipeline.ref}}/retry">
href="pipelines/retry">
<i class="fa fa-repeat"></i>
</a>
</div>
......
......@@ -5,7 +5,7 @@
constructor() {
return {
running: {
text: 'pending',
text: 'running',
color: '#E75E40',
pathOne: 'M12.5,7 C12.5,3.96243388 10.0375661,1.5 7,1.5 C3.96243388,1.5 1.5,3.96243388 1.5,7 C1.5,10.0375661 3.96243388,12.5 7,12.5 C10.0375661,12.5 12.5,10.0375661 12.5,7 Z M0,7 C0,3.13400675 3.13400675,0 7,0 C10.8659932,0 14,3.13400675 14,7 C14,10.8659932 10.8659932,14 7,14 C3.13400675,14 0,10.8659932 0,7 Z',
pathTwo: 'M4.69999981,5.30065012 C4.69999981,5.13460564 4.83842754,5 5.00354719,5 L5.89645243,5 C6.06409702,5 6.19999981,5.13308716 6.19999981,5.30065012 L6.19999981,8.69934988 C6.19999981,8.86539436 6.06157207,9 5.89645243,9 L5.00354719,9 C4.8359026,9 4.69999981,8.86691284 4.69999981,8.69934988 L4.69999981,5.30065012 Z M7.69999981,5.30065012 C7.69999981,5.13460564 7.83842754,5 8.00354719,5 L8.89645243,5 C9.06409702,5 9.19999981,5.13308716 9.19999981,5.30065012 L9.19999981,8.69934988 C9.19999981,8.86539436 9.06157207,9 8.89645243,9 L8.00354719,9 C7.8359026,9 7.69999981,8.86691284 7.69999981,8.69934988 L7.69999981,5.30065012 Z',
......
/* global gl */
/* eslint-disable no-param-reassign */
((gl) => {
gl.PipelineStore = class {
fetchData(Vue) {
this.$http.get(`/api/v3/projects/${this.scope}/pipelines`)
.then((response) => {
Vue.set(this, 'pipelines', JSON.parse(response.body));
}, () => {
Vue.set(this, 'pipelines', []);
});
}
};
})(window.gl || (window.gl = {}));
/* global Vue, gl */
/* eslint-disable no-param-reassign */
((gl) => {
gl.VueCommitLink = Vue.extend({
props: ['pipeline'],
template: `
<td class="commit-link">
<a href="pipelines/{{pipeline.id}}">
<div v-if="pipeline.status === 'running'">
<span class="ci-status ci-{{pipeline.status}}">
<vue-runner-running></vue-runner-running>
</span>
</div>
<div v-if="pipeline.status === 'passed'">
<span class="ci-status ci-{{pipeline.status}}">
<vue-runner-running></vue-runner-running>
</span>
</div>
<div v-if="pipeline.status === 'created'">
<span class="ci-status ci-{{pipeline.status}}">
<vue-runner-running></vue-runner-running>
</span>
</div>
<div v-if="pipeline.status === ''">
<span class="ci-status ci-{{pipeline.status}}">
<vue-runner-running></vue-runner-running>
</span>
</div>
<div v-if="pipeline.status === 'r'">
<span class="ci-status ci-{{pipeline.status}}">
<vue-runner-running></vue-runner-running>
</span>
</div>
<div v-if="pipeline.status === 'ru'">
<span class="ci-status ci-{{pipeline.status}}">
<vue-runner-running></vue-runner-running>
</span>
</div>
<div v-if="pipeline.status === 'run'">
<span class="ci-status ci-{{pipeline.status}}">
<vue-runner-running></vue-runner-running>
</span>
</div>
</a>
</td>
`,
});
})(window.gl || (window.gl = {}));
//= require_tree ./vue_pipelines_index
......@@ -47,17 +47,20 @@
%tbody.app
:javascript
Vue.component('vue-pipelines', gl.VuePipeLines);
Vue.component('vue-runner-status', gl.VueRunnerStatus);
Vue.use(VueResource);
new Vue({
var vm = new Vue({
el: ".app",
data:{
pipelines: JSON.parse('#{@pipelines.to_json}'),
count: JSON.parse('#{@pipeline_count.to_json}'),
scope: "#{@project.id}",
store: new gl.PipelineStore(),
},
components: {
'vue-commit-link': gl.VueCommitLink,
'vue-pipelines': gl.VuePipeLines,
},
template: ""
+ "<div>"
+ "<vue-pipelines :pipelines='pipelines' :count='count'></vue-pipelines>"
+ "<vue-pipelines :scope='scope' :store='store'></vue-pipelines>"
+ "</div>",
})
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册