re-wired a lot of the application - need a few more API values

This commit is contained in:
Regis 2016-11-10 12:22:16 -07:00
parent 729fd54802
commit 1a5027a03d
12 changed files with 85 additions and 165 deletions

View file

@ -3,10 +3,13 @@
((gl) => {
gl.VueBranchCommit = Vue.extend({
props: ['pipeline', 'shortsha'],
methods: {
commiturl(sha) {
return `./commit/${sha}`;
props: ['pipeline'],
computed: {
mailto() {
return `mailto:${this.pipeline.commit.author_email}`;
},
alt() {
return `${this.pipeline.commit.author_name}'s avatar`
},
},
template: `
@ -14,7 +17,7 @@
<div class="icon-container">
<i class="fa fa-code-fork"></i>
</div>
<a class="monospace branch-name" href="./commits/master">master</a>
<a class="monospace branch-name" href="./commits/master">{{pipeline.ref.name}}</a>
<div class="icon-container commit-icon">
<svg xmlns="http://www.w3.org/2000/svg" width="40" height="40" viewBox="0 0 40 40">
<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>
@ -22,36 +25,28 @@
</div>
<a
class="commit-id monospace"
:href='commiturl(pipeline.sha)'
:href='pipeline.commit.commit_url'
>
{{shortsha(pipeline)}}
{{pipeline.commit.short_id}}
</a>
<p class="commit-title">
<a
href="mailto:james@jameslopez.es"
:href='mailto'
>
<!--
need Author Name
need Plural Version of Author Name: Rails has this built in
need gravatar HASH for author
need authors email
-->
<!-- still need gravatar url -->
<img
class="avatar has-tooltip s20 hidden-xs"
alt="James Lopez's avatar"
title="James Lopez"
:alt='alt'
:title='pipeline.commit.author_name'
data-container="body"
src="http://www.gravatar.com/avatar/80d3b651b4be1f1db39435c2d11f1f23?s=40&amp;d=identicon"
>
</a>
<a
class="commit-row-message"
:href='commiturl(pipeline.sha)'
:href='pipeline.commit.commit_url'
>
<!--
need commit message/title for SHA
-->
fix broken repo 500 errors in UI and added relevant specs
{{pipeline.commit.title}}
</a>
</p>
</td>

View file

@ -6,6 +6,7 @@
//= require ./store.js.es6
//= require ./pipeline_url.js.es6
//= require ./pipeline_head.js.es6
//= require ./stage.js.es6
//= require ./stages.js.es6
//= require ./pipeline_actions.js.es6
//= require ./branch_commit.js.es6

View file

@ -8,15 +8,20 @@
},
props: [
'pipeline',
'pipelineurl',
],
computed: {
user() {
if (!this.pipeline.user) return 'API';
return this.pipeline.user;
},
},
template: `
<td>
<a :href='pipelineurl(pipeline.id)'>
<a :href='pipeline.url'>
<span class="pipeline-id">#{{pipeline.id}}</span>
</a>
<span>by</span>
<span class="api monospace">{{pipeline.user}}</span>
<span class="api monospace">{{user}}</span>
</td>
`,
});

View file

@ -44,12 +44,8 @@
window.history.pushState({}, null, `?p=${this.pagenum}`);
clearInterval(this.intervalId);
debugger
this.store.fetchDataLoop.call(this, Vue, this.pagenum, this.scope);
},
pipelineurl(id) {
return `pipelines/${id}`;
},
},
template: `
<div>
@ -58,22 +54,10 @@
<vue-pipeline-head></vue-pipeline-head>
<tbody>
<tr class="commit" v-for='pipeline in pipelines'>
<vue-status-scope
:scope='pipeline'
:scopeurl='pipelineurl'
>
</vue-status-scope>
<vue-pipeline-url
:pipeline='pipeline'
:pipelineurl='pipelineurl'
>
</vue-pipeline-url>
<vue-branch-commit
:pipeline='pipeline'
:shortsha='pipeline.commit.shortsha'
>
</vue-branch-commit>
<vue-stages></vue-stages>
<vue-status-scope :pipeline='pipeline'></vue-status-scope>
<vue-pipeline-url :pipeline='pipeline'></vue-pipeline-url>
<vue-branch-commit :pipeline='pipeline'></vue-branch-commit>
<vue-stages :pipeline='pipeline'></vue-stages>
<vue-time-ago :pipeline='pipeline'></vue-time-ago>
<vue-pipeline-actions></vue-pipeline-actions>
</tr>

View file

@ -0,0 +1,31 @@
/* global Vue, gl */
/* eslint-disable no-param-reassign */
((gl) => {
gl.VueStage = Vue.extend({
components: {
'running-icon': gl.VueRunningIcon,
'pending-icon': gl.VuePendingIcon,
'failed-icon': gl.VueFailedIcon,
'success-icon': gl.VueSuccessIcon,
},
props: ['stage'],
computed: {
buildStatus() {
return `Build: ${this.stage.status}`;
},
},
template: `
<a
class="has-tooltip ci-status-icon-failed"
:title='buildStatus'
:href='stage.url'
>
<running-icon v-if='stage.status === "running"'></running-icon>
<success-icon v-if='stage.status === "success"'></success-icon>
<failed-icon v-if='stage.status === "failed"'></failed-icon>
<pending-icon v-if='stage.status === "pending"'></pending-icon>
</a>
`,
});
})(window.gl || (window.gl = {}));

View file

@ -3,106 +3,17 @@
((gl) => {
gl.VueStages = Vue.extend({
components: {
'vue-stage': gl.VueStage,
},
props: ['pipeline'],
template: `
<td class="stage-cell">
<!--
Need Stages Array:
ex: stage status per element as well as build name
Why I need it:
title="Prepare: failed" href="pipelines#prepare"
title="Notify Build: success" href="pipelines#notify_build"
title="Post Test: failed" href="pipelines#post-test"
How I would solve it once I have the data:
title="Prepare: {{stage.status}}"
href="pipelines#{{stage.title}}"
this way I can pass it as a prop to
ex:
<td class="stage-cell" v-for='stage in pipelines.stages'>
<vue-stage :stage='stage'>
</td>
-->
<div class="stage-container">
<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>
</g>
</svg>
</a>
</div>
<div class="stage-container">
<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>
</g>
</svg>
</a>
</div>
<div class="stage-container">
<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>
</g>
</svg>
</a>
</div>
<div class="stage-container">
<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>
</g>
</svg>
</a>
</div>
<div class="stage-container">
<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>
</g>
</svg>
</a>
</div>
<div class="stage-container">
<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>
</g>
</svg>
</a>
</div>
<div class="stage-container">
<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>
</g>
</svg>
</a>
</div>
<div class="stage-container">
<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>
</g>
</svg>
</a>
<div
class="stage-container"
v-for='stage in pipeline.details.stages'
>
<vue-stage :stage='stage'></vue-stage>
</div>
</td>
`,

View file

@ -7,8 +7,8 @@
const goFetch = () =>
this.$http.get(`${url}?page=${pageNum}`)
.then((response) => {
const res = JSON.parse(response.body);
debugger
const res = JSON.parse(response.body)
Vue.set(this, 'pipelines', res.pipelines);
}, () => new Flash(
'Something went wrong on our end.'

View file

@ -24,7 +24,7 @@
finishdate() {
const date = new Date(
new Date(
this.pipeline.finished_at
this.pipeline.details.finished_at
).getTime() - new Date(
this.pipeline.started_at
).getTime()
@ -51,7 +51,7 @@
options.timeZoneName = 'short';
const finished = this.pipeline.finished_at;
const finished = this.pipeline.details.finished_at;
if (!finished) return false;

View file

@ -7,12 +7,11 @@
'vue-failed-icon': gl.VueFailedIcon,
},
props: [
'scope',
'scopeurl',
'pipeline',
],
template: `
<td class="commit-link">
<a :href='scopeurl(scope.id)'>
<a :href='pipeline.url'>
<span class="ci-status ci-failed">
<vue-failed-icon></vue-failed-icon>
&nbsp;failed

View file

@ -7,12 +7,11 @@
'vue-pending-icon': gl.VuePendingIcon,
},
props: [
'scope',
'scopeurl',
'pipeline',
],
template: `
<td class="commit-link">
<a :href='scopeurl(scope.id)'>
<a :href='pipeline.url'>
<span class="ci-status ci-pending">
<vue-pending-icon></vue-pending-icon>
&nbsp;pending

View file

@ -7,12 +7,11 @@
'vue-running-icon': gl.VueRunningIcon,
},
props: [
'scope',
'scopeurl',
'pipeline',
],
template: `
<td class="commit-link">
<a :href='scopeurl(scope.id)'>
<a :href='pipeline.url'>
<span class="ci-status ci-running">
<vue-running-icon></vue-running-icon>
&nbsp;running

View file

@ -9,27 +9,23 @@
'vue-failed-scope': gl.VueFailedScope,
},
props: [
'scope',
'scopeurl',
'pipeline',
],
template: `
<td class="commit-link">
<vue-running-scope
v-if="scope.status === 'running'"
:scope='scope'
:scopeurl='scopeurl'
v-if="pipeline.details.status === 'running'"
:pipeline='pipeline'
>
</vue-running-scope>
<vue-pending-scope
v-if="scope.status === 'pending'"
:scope='scope'
:scopeurl='scopeurl'
v-if="pipeline.details.status === 'pending'"
:pipeline='pipeline'
>
</vue-pending-scope>
<vue-failed-scope
v-if="scope.status === 'failed'"
:scope='scope'
:scopeurl='scopeurl'
v-if="pipeline.details.status === 'failed'"
:pipeline='pipeline'
>
</vue-failed-scope>
</td>