From f46acfc7abd72342bbd07cd9e87b0d5a3740a8b6 Mon Sep 17 00:00:00 2001 From: Regis Date: Tue, 25 Oct 2016 16:00:38 -0600 Subject: integrate vue components, use intance variables to pass data to vue --- app/assets/javascripts/pipeline.vue.js.es6 | 14 +++++++++++++ app/assets/javascripts/pipelines.vue.js.es6 | 31 +++++++++++++++++++++++++++++ 2 files changed, 45 insertions(+) create mode 100644 app/assets/javascripts/pipeline.vue.js.es6 create mode 100644 app/assets/javascripts/pipelines.vue.js.es6 (limited to 'app/assets') diff --git a/app/assets/javascripts/pipeline.vue.js.es6 b/app/assets/javascripts/pipeline.vue.js.es6 new file mode 100644 index 00000000000..959d7be32fa --- /dev/null +++ b/app/assets/javascripts/pipeline.vue.js.es6 @@ -0,0 +1,14 @@ +//= require vue + +(gl => { + gl.VuePipeLine = Vue.extend({ + props: ['pipeline'], + template: ` +
+ + {{ pipeline.status }} + +
+ ` + }) +})(window.gl || (window.gl = {})) diff --git a/app/assets/javascripts/pipelines.vue.js.es6 b/app/assets/javascripts/pipelines.vue.js.es6 new file mode 100644 index 00000000000..8cf0558d94b --- /dev/null +++ b/app/assets/javascripts/pipelines.vue.js.es6 @@ -0,0 +1,31 @@ +//= require vue + +(gl => { + gl.VuePipeLines = Vue.extend({ + props: ['pipelines', 'count'], + template: ` +
+ + + + + + + + + + +
+ +
+ +
StatusPipelineCommitStages
+
+ `, + computed: { + pipes() { + return this.pipelines + } + } + }) +})(window.gl || (window.gl = {})) -- cgit v1.2.1 From 243717c0cc3172d50e4ca5c0be567bfd599b4d90 Mon Sep 17 00:00:00 2001 From: Regis Date: Tue, 25 Oct 2016 16:42:55 -0600 Subject: conditional show --- app/assets/javascripts/pipelines.vue.js.es6 | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) (limited to 'app/assets') diff --git a/app/assets/javascripts/pipelines.vue.js.es6 b/app/assets/javascripts/pipelines.vue.js.es6 index 8cf0558d94b..e98c8816dfd 100644 --- a/app/assets/javascripts/pipelines.vue.js.es6 +++ b/app/assets/javascripts/pipelines.vue.js.es6 @@ -4,7 +4,12 @@ gl.VuePipeLines = Vue.extend({ props: ['pipelines', 'count'], template: ` -
+
+
+ No pipelines to show +
+
+
-- cgit v1.2.1 From d858c54879c61afde2df07e96e31c96b8a9f9586 Mon Sep 17 00:00:00 2001 From: Regis Date: Wed, 26 Oct 2016 12:43:58 -0600 Subject: conform to eslint --- app/assets/javascripts/pipeline.vue.js.es6 | 10 ++++++---- app/assets/javascripts/pipelines.vue.js.es6 | 14 ++++++++------ 2 files changed, 14 insertions(+), 10 deletions(-) (limited to 'app/assets') diff --git a/app/assets/javascripts/pipeline.vue.js.es6 b/app/assets/javascripts/pipeline.vue.js.es6 index 959d7be32fa..7e9da71b6ab 100644 --- a/app/assets/javascripts/pipeline.vue.js.es6 +++ b/app/assets/javascripts/pipeline.vue.js.es6 @@ -1,6 +1,8 @@ //= require vue +/* global Vue, gl */ +/* eslint-disable no-param-reassign */ -(gl => { +((gl) => { gl.VuePipeLine = Vue.extend({ props: ['pipeline'], template: ` @@ -9,6 +11,6 @@ {{ pipeline.status }} - ` - }) -})(window.gl || (window.gl = {})) + `, + }); +})(window.gl || (window.gl = {})); diff --git a/app/assets/javascripts/pipelines.vue.js.es6 b/app/assets/javascripts/pipelines.vue.js.es6 index e98c8816dfd..50ecf28394d 100644 --- a/app/assets/javascripts/pipelines.vue.js.es6 +++ b/app/assets/javascripts/pipelines.vue.js.es6 @@ -1,6 +1,8 @@ //= require vue +/* global Vue, gl */ +/* eslint-disable no-param-reassign */ -(gl => { +((gl) => { gl.VuePipeLines = Vue.extend({ props: ['pipelines', 'count'], template: ` @@ -29,8 +31,8 @@ `, computed: { pipes() { - return this.pipelines - } - } - }) -})(window.gl || (window.gl = {})) + return this.pipelines; + }, + }, + }); +})(window.gl || (window.gl = {})); -- cgit v1.2.1 From 50b4c2dc0f2844c7017a352a1df0b919f2bcc51d Mon Sep 17 00:00:00 2001 From: Regis Date: Thu, 27 Oct 2016 15:53:29 -0600 Subject: getting somewhere - now need to fix loop --- app/assets/javascripts/pipelines.vue.js.es6 | 182 +++++++++++++++++++++++++--- 1 file changed, 162 insertions(+), 20 deletions(-) (limited to 'app/assets') diff --git a/app/assets/javascripts/pipelines.vue.js.es6 b/app/assets/javascripts/pipelines.vue.js.es6 index 50ecf28394d..cf3f7a729eb 100644 --- a/app/assets/javascripts/pipelines.vue.js.es6 +++ b/app/assets/javascripts/pipelines.vue.js.es6 @@ -6,28 +6,170 @@ gl.VuePipeLines = Vue.extend({ props: ['pipelines', 'count'], template: ` -
-
- No pipelines to show -
-
-
-
Status
- - - - - - - - - -
- +
+ + + + + + + + +
+
+ + + + + + -
StatusPipelineCommitStages
StatusPipelineCommitStages
+ #30 + by + API + +
+ +
+ master +
+ + + +
+ 29141ed3 +

+ + fix broken repo 500 errors in UI and added relevant specs +

+
+ + + + + + + + + +
-
+ + `, computed: { pipes() { -- cgit v1.2.1 From 02c2ef89e9bb5f86e1fd1c3f188befea480908c1 Mon Sep 17 00:00:00 2001 From: Regis Date: Thu, 27 Oct 2016 16:18:55 -0600 Subject: fixed loop - move on to make components --- app/assets/javascripts/pipelines.vue.js.es6 | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) (limited to 'app/assets') diff --git a/app/assets/javascripts/pipelines.vue.js.es6 b/app/assets/javascripts/pipelines.vue.js.es6 index cf3f7a729eb..4d6b00553cf 100644 --- a/app/assets/javascripts/pipelines.vue.js.es6 +++ b/app/assets/javascripts/pipelines.vue.js.es6 @@ -14,8 +14,7 @@ - -
+ @@ -168,7 +167,6 @@
- `, computed: { -- cgit v1.2.1 From 89823100b7cf37944ab8061a68e08afd46dcfc59 Mon Sep 17 00:00:00 2001 From: Regis Date: Thu, 27 Oct 2016 16:24:33 -0600 Subject: formatting --- app/assets/javascripts/pipelines.vue.js.es6 | 302 ++++++++++++++-------------- 1 file changed, 152 insertions(+), 150 deletions(-) (limited to 'app/assets') diff --git a/app/assets/javascripts/pipelines.vue.js.es6 b/app/assets/javascripts/pipelines.vue.js.es6 index 4d6b00553cf..e20bdf8e992 100644 --- a/app/assets/javascripts/pipelines.vue.js.es6 +++ b/app/assets/javascripts/pipelines.vue.js.es6 @@ -7,166 +7,168 @@ props: ['pipelines', 'count'], template: ` - Status - Pipeline - Commit - Stages - - - + + Status + Pipeline + Commit + Stages + + + + - - - - - - - - - -  failed - - - - - #30 - by - API - - -
- -
- master -
- - - + + + + + + + + + +  {{pipeline.status}} + + + + + #30 + by + API + + +
+
- 29141ed3 -

- - fix broken repo 500 errors in UI and added relevant specs -

- - - + + + + + + + `, computed: { -- cgit v1.2.1 From 0208d6008f7d154615b510d7060c37ff5698a5e4 Mon Sep 17 00:00:00 2001 From: Regis Date: Thu, 27 Oct 2016 16:32:39 -0600 Subject: id is dynamic --- app/assets/javascripts/pipelines.vue.js.es6 | 23 ++++++++++++----------- 1 file changed, 12 insertions(+), 11 deletions(-) (limited to 'app/assets') diff --git a/app/assets/javascripts/pipelines.vue.js.es6 b/app/assets/javascripts/pipelines.vue.js.es6 index e20bdf8e992..26a3bc2d65f 100644 --- a/app/assets/javascripts/pipelines.vue.js.es6 +++ b/app/assets/javascripts/pipelines.vue.js.es6 @@ -19,7 +19,7 @@ - + @@ -31,7 +31,7 @@ - #30 + #{{pipeline.id}} by API @@ -53,7 +53,7 @@
@@ -173,6 +173,7 @@ `, computed: { pipes() { + console.log(this.pipelines); return this.pipelines; }, }, -- cgit v1.2.1 From dc476fe6ff1c55a992fce8483b9f8a4762e302fa Mon Sep 17 00:00:00 2001 From: Regis Date: Sat, 29 Oct 2016 13:50:08 -0600 Subject: stashing --- app/assets/javascripts/pipeline.vue.js.es6 | 16 ------- app/assets/javascripts/pipelines.vue.js.es6 | 59 ++++++++++++++----------- app/assets/javascripts/runnerstats/index.js.es6 | 56 +++++++++++++++++++++++ app/assets/javascripts/status_svg.vue.js.es6 | 18 ++++++++ 4 files changed, 106 insertions(+), 43 deletions(-) delete mode 100644 app/assets/javascripts/pipeline.vue.js.es6 create mode 100644 app/assets/javascripts/runnerstats/index.js.es6 create mode 100644 app/assets/javascripts/status_svg.vue.js.es6 (limited to 'app/assets') diff --git a/app/assets/javascripts/pipeline.vue.js.es6 b/app/assets/javascripts/pipeline.vue.js.es6 deleted file mode 100644 index 7e9da71b6ab..00000000000 --- a/app/assets/javascripts/pipeline.vue.js.es6 +++ /dev/null @@ -1,16 +0,0 @@ -//= require vue -/* global Vue, gl */ -/* eslint-disable no-param-reassign */ - -((gl) => { - gl.VuePipeLine = Vue.extend({ - props: ['pipeline'], - template: ` -
- - {{ pipeline.status }} - -
- `, - }); -})(window.gl || (window.gl = {})); diff --git a/app/assets/javascripts/pipelines.vue.js.es6 b/app/assets/javascripts/pipelines.vue.js.es6 index 26a3bc2d65f..1bd30feaf9e 100644 --- a/app/assets/javascripts/pipelines.vue.js.es6 +++ b/app/assets/javascripts/pipelines.vue.js.es6 @@ -1,9 +1,15 @@ //= require vue +//= require_tree ./runnerstats /* global Vue, gl */ /* eslint-disable no-param-reassign */ ((gl) => { gl.VuePipeLines = Vue.extend({ + data() { + return { + runnerStats: new gl.RunnerStats(), + }; + }, props: ['pipelines', 'count'], template: ` @@ -19,21 +25,19 @@ - - - - - - - -  {{pipeline.status}} - + + + + + - #{{pipeline.id}} + #{{pipeline.id}} by - API + {{pipeline.user}} + + + + `, - computed: { - pipes() { - console.log(this.pipelines); - return this.pipelines; - }, - }, }); })(window.gl || (window.gl = {})); diff --git a/app/assets/javascripts/runnerstats/index.js.es6 b/app/assets/javascripts/runnerstats/index.js.es6 new file mode 100644 index 00000000000..35f95f3a811 --- /dev/null +++ b/app/assets/javascripts/runnerstats/index.js.es6 @@ -0,0 +1,56 @@ +/* eslint-disable no-param-reassign */ + +((gl) => { + gl.RunnerStats = class { + constructor() { + return { + running: { + text: 'pending', + 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', + }, + passed: ` + + + + + + + + passed + `, + failed: ` + + + + + + +  failed + `, + created: ` +  created + `, + skipped: ` + + + + + + +  skipped + `, + pending: ` + + + + + + +  pending + `, + }; + } + }; +})(window.gl || (window.gl = {})); diff --git a/app/assets/javascripts/status_svg.vue.js.es6 b/app/assets/javascripts/status_svg.vue.js.es6 new file mode 100644 index 00000000000..0af35ba6f3a --- /dev/null +++ b/app/assets/javascripts/status_svg.vue.js.es6 @@ -0,0 +1,18 @@ +//= require vue +/* global Vue, gl */ +/* eslint-disable no-param-reassign */ + +((gl) => { + gl.VueRunnerStatus = Vue.extend({ + props: ['status'], + template: ` + + + + + + +  {{status.text}} + `, + }); +})(window.gl || (window.gl = {})); -- cgit v1.2.1 From 66727f74b806a978c4bf76a8e9bd4b86c6443651 Mon Sep 17 00:00:00 2001 From: Regis Date: Sun, 30 Oct 2016 01:28:57 -0600 Subject: change architecture - add store - make api call by default --- app/assets/javascripts/pipelines.vue.js.es6 | 186 ------------------- app/assets/javascripts/runnerstats/index.js.es6 | 56 ------ app/assets/javascripts/status_svg.vue.js.es6 | 18 -- .../javascripts/vue_pipelines_index/index.js.es6 | 7 + .../vue_pipelines_index/pipelines.vue.js.es6 | 198 +++++++++++++++++++++ .../vue_pipelines_index/status_data_icons.js.es6 | 56 ++++++ .../javascripts/vue_pipelines_index/store.js.es6 | 15 ++ .../vue_pipelines_index/vue_commit_link.vue.js.es6 | 50 ++++++ app/assets/javascripts/vue_pipelines_loader.js.es6 | 1 + 9 files changed, 327 insertions(+), 260 deletions(-) delete mode 100644 app/assets/javascripts/pipelines.vue.js.es6 delete mode 100644 app/assets/javascripts/runnerstats/index.js.es6 delete mode 100644 app/assets/javascripts/status_svg.vue.js.es6 create mode 100644 app/assets/javascripts/vue_pipelines_index/index.js.es6 create mode 100644 app/assets/javascripts/vue_pipelines_index/pipelines.vue.js.es6 create mode 100644 app/assets/javascripts/vue_pipelines_index/status_data_icons.js.es6 create mode 100644 app/assets/javascripts/vue_pipelines_index/store.js.es6 create mode 100644 app/assets/javascripts/vue_pipelines_index/vue_commit_link.vue.js.es6 create mode 100644 app/assets/javascripts/vue_pipelines_loader.js.es6 (limited to 'app/assets') diff --git a/app/assets/javascripts/pipelines.vue.js.es6 b/app/assets/javascripts/pipelines.vue.js.es6 deleted file mode 100644 index 1bd30feaf9e..00000000000 --- a/app/assets/javascripts/pipelines.vue.js.es6 +++ /dev/null @@ -1,186 +0,0 @@ -//= require vue -//= require_tree ./runnerstats -/* global Vue, gl */ -/* eslint-disable no-param-reassign */ - -((gl) => { - gl.VuePipeLines = Vue.extend({ - data() { - return { - runnerStats: new gl.RunnerStats(), - }; - }, - props: ['pipelines', 'count'], - template: ` - - - Status - Pipeline - Commit - Stages - - - - - - - - - - - - - - - - #{{pipeline.id}} - by - {{pipeline.user}} - - -
- -
- master -
- - - -
- 29141ed3 -

- - fix broken repo 500 errors in UI and added relevant specs -

- - - - - - - - - - - - - - - - - - - `, - }); -})(window.gl || (window.gl = {})); diff --git a/app/assets/javascripts/runnerstats/index.js.es6 b/app/assets/javascripts/runnerstats/index.js.es6 deleted file mode 100644 index 35f95f3a811..00000000000 --- a/app/assets/javascripts/runnerstats/index.js.es6 +++ /dev/null @@ -1,56 +0,0 @@ -/* eslint-disable no-param-reassign */ - -((gl) => { - gl.RunnerStats = class { - constructor() { - return { - running: { - text: 'pending', - 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', - }, - passed: ` - - - - - - - - passed - `, - failed: ` - - - - - - -  failed - `, - created: ` -  created - `, - skipped: ` - - - - - - -  skipped - `, - pending: ` - - - - - - -  pending - `, - }; - } - }; -})(window.gl || (window.gl = {})); diff --git a/app/assets/javascripts/status_svg.vue.js.es6 b/app/assets/javascripts/status_svg.vue.js.es6 deleted file mode 100644 index 0af35ba6f3a..00000000000 --- a/app/assets/javascripts/status_svg.vue.js.es6 +++ /dev/null @@ -1,18 +0,0 @@ -//= require vue -/* global Vue, gl */ -/* eslint-disable no-param-reassign */ - -((gl) => { - gl.VueRunnerStatus = Vue.extend({ - props: ['status'], - template: ` - - - - - - -  {{status.text}} - `, - }); -})(window.gl || (window.gl = {})); diff --git a/app/assets/javascripts/vue_pipelines_index/index.js.es6 b/app/assets/javascripts/vue_pipelines_index/index.js.es6 new file mode 100644 index 00000000000..3657d9c5b0d --- /dev/null +++ b/app/assets/javascripts/vue_pipelines_index/index.js.es6 @@ -0,0 +1,7 @@ +//= 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 diff --git a/app/assets/javascripts/vue_pipelines_index/pipelines.vue.js.es6 b/app/assets/javascripts/vue_pipelines_index/pipelines.vue.js.es6 new file mode 100644 index 00000000000..424b29ae527 --- /dev/null +++ b/app/assets/javascripts/vue_pipelines_index/pipelines.vue.js.es6 @@ -0,0 +1,198 @@ +/* global Vue, gl */ +/* eslint-disable no-param-reassign */ + +((gl) => { + gl.VuePipeLines = Vue.extend({ + data() { + return { + endpoint: `/api/v3/projects/${this.scopeId}/pipelines`, + pipelines: [], + runnerStats: new gl.RunnerStats(), + }; + }, + props: ['scope', 'store'], + created() { + this.store.fetchData.call(this, Vue); + }, + methods: { + shortSha(pipeline) { + return pipeline.sha.slice(0, 8); + }, + }, + template: ` + + + Status + Pipeline + Commit + Stages + + + + + + + + +
+ + running + +
+
+ + passed + +
+
+ + + #{{pipeline.id}} + by + {{pipeline.user}} + + +
+ +
+ master +
+ + + +
+ {{shortSha(pipeline)}} +

+ + fix broken repo 500 errors in UI and added relevant specs +

+ + + + + + + + + + + + + + + + + + + `, + }); +})(window.gl || (window.gl = {})); diff --git a/app/assets/javascripts/vue_pipelines_index/status_data_icons.js.es6 b/app/assets/javascripts/vue_pipelines_index/status_data_icons.js.es6 new file mode 100644 index 00000000000..b4e0c07a665 --- /dev/null +++ b/app/assets/javascripts/vue_pipelines_index/status_data_icons.js.es6 @@ -0,0 +1,56 @@ +/* eslint-disable no-param-reassign */ + +((gl) => { + gl.RunnerStats = class { + constructor() { + return { + running: { + 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', + }, + passed: ` + + + + + + + + passed + `, + failed: ` + + + + + + +  failed + `, + created: ` +  created + `, + skipped: ` + + + + + + +  skipped + `, + pending: ` + + + + + + +  pending + `, + }; + } + }; +})(window.gl || (window.gl = {})); diff --git a/app/assets/javascripts/vue_pipelines_index/store.js.es6 b/app/assets/javascripts/vue_pipelines_index/store.js.es6 new file mode 100644 index 00000000000..3f03bb31068 --- /dev/null +++ b/app/assets/javascripts/vue_pipelines_index/store.js.es6 @@ -0,0 +1,15 @@ +/* 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 = {})); diff --git a/app/assets/javascripts/vue_pipelines_index/vue_commit_link.vue.js.es6 b/app/assets/javascripts/vue_pipelines_index/vue_commit_link.vue.js.es6 new file mode 100644 index 00000000000..9e2ef8993a2 --- /dev/null +++ b/app/assets/javascripts/vue_pipelines_index/vue_commit_link.vue.js.es6 @@ -0,0 +1,50 @@ + +/* global Vue, gl */ +/* eslint-disable no-param-reassign */ + +((gl) => { + gl.VueCommitLink = Vue.extend({ + props: ['pipeline'], + template: ` + + +
+ + + +
+
+ + + +
+
+ + + +
+
+ + + +
+
+ + + +
+
+ + + +
+
+ + + +
+
+ + `, + }); +})(window.gl || (window.gl = {})); diff --git a/app/assets/javascripts/vue_pipelines_loader.js.es6 b/app/assets/javascripts/vue_pipelines_loader.js.es6 new file mode 100644 index 00000000000..1b8ba72b697 --- /dev/null +++ b/app/assets/javascripts/vue_pipelines_loader.js.es6 @@ -0,0 +1 @@ +//= require_tree ./vue_pipelines_index -- cgit v1.2.1 From 8658c9788370f1d7ab63270e3dcac423c27d38c5 Mon Sep 17 00:00:00 2001 From: Regis Date: Sun, 30 Oct 2016 01:31:59 -0600 Subject: remove uneeded endpoint data key --- app/assets/javascripts/vue_pipelines_index/pipelines.vue.js.es6 | 1 - 1 file changed, 1 deletion(-) (limited to 'app/assets') diff --git a/app/assets/javascripts/vue_pipelines_index/pipelines.vue.js.es6 b/app/assets/javascripts/vue_pipelines_index/pipelines.vue.js.es6 index 424b29ae527..2847fa024d9 100644 --- a/app/assets/javascripts/vue_pipelines_index/pipelines.vue.js.es6 +++ b/app/assets/javascripts/vue_pipelines_index/pipelines.vue.js.es6 @@ -5,7 +5,6 @@ gl.VuePipeLines = Vue.extend({ data() { return { - endpoint: `/api/v3/projects/${this.scopeId}/pipelines`, pipelines: [], runnerStats: new gl.RunnerStats(), }; -- cgit v1.2.1 From 308e0eb554cbd271cbcbc13e8f795ae08c2af62c Mon Sep 17 00:00:00 2001 From: Regis Date: Sun, 30 Oct 2016 01:45:55 -0600 Subject: have polling working --- app/assets/javascripts/vue_pipelines_index/store.js.es6 | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) (limited to 'app/assets') diff --git a/app/assets/javascripts/vue_pipelines_index/store.js.es6 b/app/assets/javascripts/vue_pipelines_index/store.js.es6 index 3f03bb31068..aca603cf756 100644 --- a/app/assets/javascripts/vue_pipelines_index/store.js.es6 +++ b/app/assets/javascripts/vue_pipelines_index/store.js.es6 @@ -4,12 +4,17 @@ ((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)); + const goFetch = vue => + this.$http.get(`/api/v3/projects/${this.scope}/pipelines`) + .then((response) => { + vue.set(this, 'pipelines', JSON.parse(response.body)); }, () => { - Vue.set(this, 'pipelines', []); + vue.set(this, 'pipelines', []); }); + + goFetch(Vue); + + setInterval(() => { console.log('DID IT'); goFetch(Vue) }, 3000); } }; })(window.gl || (window.gl = {})); -- cgit v1.2.1 From b4d8cb0cf031d6817952709ab90d27d9f23c04a5 Mon Sep 17 00:00:00 2001 From: Regis Date: Sun, 30 Oct 2016 01:48:26 -0600 Subject: changed fetchData to fetchDataLoop - ensured '#created' is part of Vue1 and Vue2 --- app/assets/javascripts/vue_pipelines_index/pipelines.vue.js.es6 | 2 +- app/assets/javascripts/vue_pipelines_index/store.js.es6 | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) (limited to 'app/assets') diff --git a/app/assets/javascripts/vue_pipelines_index/pipelines.vue.js.es6 b/app/assets/javascripts/vue_pipelines_index/pipelines.vue.js.es6 index 2847fa024d9..8036febd593 100644 --- a/app/assets/javascripts/vue_pipelines_index/pipelines.vue.js.es6 +++ b/app/assets/javascripts/vue_pipelines_index/pipelines.vue.js.es6 @@ -11,7 +11,7 @@ }, props: ['scope', 'store'], created() { - this.store.fetchData.call(this, Vue); + this.store.fetchDataLoop.call(this, Vue); }, methods: { shortSha(pipeline) { diff --git a/app/assets/javascripts/vue_pipelines_index/store.js.es6 b/app/assets/javascripts/vue_pipelines_index/store.js.es6 index aca603cf756..6abd160f9a4 100644 --- a/app/assets/javascripts/vue_pipelines_index/store.js.es6 +++ b/app/assets/javascripts/vue_pipelines_index/store.js.es6 @@ -3,7 +3,7 @@ ((gl) => { gl.PipelineStore = class { - fetchData(Vue) { + fetchDataLoop(Vue) { const goFetch = vue => this.$http.get(`/api/v3/projects/${this.scope}/pipelines`) .then((response) => { -- cgit v1.2.1 From ae90118e1dfaaf6db890b4bfa00bc45cf287fa21 Mon Sep 17 00:00:00 2001 From: Regis Date: Sun, 30 Oct 2016 01:50:11 -0600 Subject: formatting - eslint --- app/assets/javascripts/vue_pipelines_index/store.js.es6 | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) (limited to 'app/assets') diff --git a/app/assets/javascripts/vue_pipelines_index/store.js.es6 b/app/assets/javascripts/vue_pipelines_index/store.js.es6 index 6abd160f9a4..7479caf107d 100644 --- a/app/assets/javascripts/vue_pipelines_index/store.js.es6 +++ b/app/assets/javascripts/vue_pipelines_index/store.js.es6 @@ -14,7 +14,10 @@ goFetch(Vue); - setInterval(() => { console.log('DID IT'); goFetch(Vue) }, 3000); + setInterval(() => { + console.log('DID IT'); + goFetch(Vue); + }, 3000); } }; })(window.gl || (window.gl = {})); -- cgit v1.2.1 From 384ea58f72d73c858769b22c81e5345e9e3e09bc Mon Sep 17 00:00:00 2001 From: Regis Date: Sun, 30 Oct 2016 14:46:31 -0600 Subject: change to more component like structure for reusable components --- .../javascripts/vue_pipelines_index/index.js.es6 | 3 +- .../vue_pipelines_index/pipelines.vue.js.es6 | 31 ++++++-------- .../vue_pipelines_index/running.vue.js.es6 | 25 +++++++++++ .../vue_pipelines_index/running_icon.vue.js.es6 | 13 ++++++ .../javascripts/vue_pipelines_index/store.js.es6 | 1 - .../vue_pipelines_index/vue_commit_link.vue.js.es6 | 50 ---------------------- 6 files changed, 54 insertions(+), 69 deletions(-) create mode 100644 app/assets/javascripts/vue_pipelines_index/running.vue.js.es6 create mode 100644 app/assets/javascripts/vue_pipelines_index/running_icon.vue.js.es6 delete mode 100644 app/assets/javascripts/vue_pipelines_index/vue_commit_link.vue.js.es6 (limited to 'app/assets') diff --git a/app/assets/javascripts/vue_pipelines_index/index.js.es6 b/app/assets/javascripts/vue_pipelines_index/index.js.es6 index 3657d9c5b0d..36661553444 100644 --- a/app/assets/javascripts/vue_pipelines_index/index.js.es6 +++ b/app/assets/javascripts/vue_pipelines_index/index.js.es6 @@ -2,6 +2,7 @@ //= require vue-resource //= require ./store.js.es6 +//= require ./running_icon.vue.js.es6 +//= require ./running.vue.js.es6 //= require ./status_data_icons.js.es6 -//= require ./vue_commit_link.vue.js.es6 //= require ./pipelines.vue.js.es6 diff --git a/app/assets/javascripts/vue_pipelines_index/pipelines.vue.js.es6 b/app/assets/javascripts/vue_pipelines_index/pipelines.vue.js.es6 index 8036febd593..ba6ef3011ab 100644 --- a/app/assets/javascripts/vue_pipelines_index/pipelines.vue.js.es6 +++ b/app/assets/javascripts/vue_pipelines_index/pipelines.vue.js.es6 @@ -3,13 +3,19 @@ ((gl) => { gl.VuePipeLines = Vue.extend({ + components: { + 'vue-running-pipeline': gl.VueRunningPipeline, + }, data() { return { pipelines: [], runnerStats: new gl.RunnerStats(), }; }, - props: ['scope', 'store'], + props: [ + 'scope', + 'store', + ], created() { this.store.fetchDataLoop.call(this, Vue); }, @@ -31,24 +37,15 @@ - - -
- - running - -
-
- - passed - -
-
+ + - #{{pipeline.id}} - by - {{pipeline.user}} + + #{{pipeline.id}} + + by + {{pipeline.user}}
diff --git a/app/assets/javascripts/vue_pipelines_index/running.vue.js.es6 b/app/assets/javascripts/vue_pipelines_index/running.vue.js.es6 new file mode 100644 index 00000000000..5edf8403bd9 --- /dev/null +++ b/app/assets/javascripts/vue_pipelines_index/running.vue.js.es6 @@ -0,0 +1,25 @@ +/* global Vue, gl */ +/* eslint-disable no-param-reassign */ + +((gl) => { + gl.VueRunningPipeline = Vue.extend({ + components: { + 'vue-running-icon': gl.VueRunningIcon, + }, + props: [ + 'pipe', + ], + template: ` + + + + + + +  running + + + + `, + }); +})(window.gl || (window.gl = {})); diff --git a/app/assets/javascripts/vue_pipelines_index/running_icon.vue.js.es6 b/app/assets/javascripts/vue_pipelines_index/running_icon.vue.js.es6 new file mode 100644 index 00000000000..c37f213525c --- /dev/null +++ b/app/assets/javascripts/vue_pipelines_index/running_icon.vue.js.es6 @@ -0,0 +1,13 @@ +/* global Vue, gl */ +/* eslint-disable no-param-reassign */ + +((gl) => { + gl.VueRunningIcon = Vue.extend({ + template: ` + + + + + `, + }); +})(window.gl || (window.gl = {})); diff --git a/app/assets/javascripts/vue_pipelines_index/store.js.es6 b/app/assets/javascripts/vue_pipelines_index/store.js.es6 index 7479caf107d..38797f85f0a 100644 --- a/app/assets/javascripts/vue_pipelines_index/store.js.es6 +++ b/app/assets/javascripts/vue_pipelines_index/store.js.es6 @@ -13,7 +13,6 @@ }); goFetch(Vue); - setInterval(() => { console.log('DID IT'); goFetch(Vue); diff --git a/app/assets/javascripts/vue_pipelines_index/vue_commit_link.vue.js.es6 b/app/assets/javascripts/vue_pipelines_index/vue_commit_link.vue.js.es6 deleted file mode 100644 index 9e2ef8993a2..00000000000 --- a/app/assets/javascripts/vue_pipelines_index/vue_commit_link.vue.js.es6 +++ /dev/null @@ -1,50 +0,0 @@ - -/* global Vue, gl */ -/* eslint-disable no-param-reassign */ - -((gl) => { - gl.VueCommitLink = Vue.extend({ - props: ['pipeline'], - template: ` - - -
- - - -
-
- - - -
-
- - - -
-
- - - -
-
- - - -
-
- - - -
-
- - - -
-
- - `, - }); -})(window.gl || (window.gl = {})); -- cgit v1.2.1 From c373706f2f188672ba24b2a545b6a50e374dd316 Mon Sep 17 00:00:00 2001 From: Regis Date: Sun, 30 Oct 2016 15:16:42 -0600 Subject: remove singleton in favor of components --- .../vue_pipelines_index/status_data_icons.js.es6 | 56 ---------------------- 1 file changed, 56 deletions(-) delete mode 100644 app/assets/javascripts/vue_pipelines_index/status_data_icons.js.es6 (limited to 'app/assets') diff --git a/app/assets/javascripts/vue_pipelines_index/status_data_icons.js.es6 b/app/assets/javascripts/vue_pipelines_index/status_data_icons.js.es6 deleted file mode 100644 index b4e0c07a665..00000000000 --- a/app/assets/javascripts/vue_pipelines_index/status_data_icons.js.es6 +++ /dev/null @@ -1,56 +0,0 @@ -/* eslint-disable no-param-reassign */ - -((gl) => { - gl.RunnerStats = class { - constructor() { - return { - running: { - 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', - }, - passed: ` - - - - - - - - passed - `, - failed: ` - - - - - - -  failed - `, - created: ` -  created - `, - skipped: ` - - - - - - -  skipped - `, - pending: ` - - - - - - -  pending - `, - }; - } - }; -})(window.gl || (window.gl = {})); -- cgit v1.2.1 From 23b9a99fccd956a3bdc5adbd299b277fdd727d9b Mon Sep 17 00:00:00 2001 From: Regis Date: Sun, 30 Oct 2016 15:23:13 -0600 Subject: will discuss what to do on error at a later time --- app/assets/javascripts/vue_pipelines_index/store.js.es6 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'app/assets') diff --git a/app/assets/javascripts/vue_pipelines_index/store.js.es6 b/app/assets/javascripts/vue_pipelines_index/store.js.es6 index 38797f85f0a..f1cd991994d 100644 --- a/app/assets/javascripts/vue_pipelines_index/store.js.es6 +++ b/app/assets/javascripts/vue_pipelines_index/store.js.es6 @@ -9,7 +9,7 @@ .then((response) => { vue.set(this, 'pipelines', JSON.parse(response.body)); }, () => { - vue.set(this, 'pipelines', []); + console.error('API Error for Pipelines'); }); goFetch(Vue); -- cgit v1.2.1 From 1439b9b8d688e5650be565bd6ffe890ba4393c82 Mon Sep 17 00:00:00 2001 From: Regis Date: Sun, 30 Oct 2016 22:11:57 -0600 Subject: can grab commits prior to pipelines - might need more custom API --- .../javascripts/vue_pipelines_index/index.js.es6 | 1 - .../vue_pipelines_index/pipelines.vue.js.es6 | 27 ++++++++++++++++++---- .../javascripts/vue_pipelines_index/store.js.es6 | 21 +++++++++++++++-- 3 files changed, 42 insertions(+), 7 deletions(-) (limited to 'app/assets') diff --git a/app/assets/javascripts/vue_pipelines_index/index.js.es6 b/app/assets/javascripts/vue_pipelines_index/index.js.es6 index 36661553444..fcf91107da5 100644 --- a/app/assets/javascripts/vue_pipelines_index/index.js.es6 +++ b/app/assets/javascripts/vue_pipelines_index/index.js.es6 @@ -4,5 +4,4 @@ //= require ./store.js.es6 //= require ./running_icon.vue.js.es6 //= require ./running.vue.js.es6 -//= require ./status_data_icons.js.es6 //= require ./pipelines.vue.js.es6 diff --git a/app/assets/javascripts/vue_pipelines_index/pipelines.vue.js.es6 b/app/assets/javascripts/vue_pipelines_index/pipelines.vue.js.es6 index ba6ef3011ab..1ff7b117223 100644 --- a/app/assets/javascripts/vue_pipelines_index/pipelines.vue.js.es6 +++ b/app/assets/javascripts/vue_pipelines_index/pipelines.vue.js.es6 @@ -9,7 +9,7 @@ data() { return { pipelines: [], - runnerStats: new gl.RunnerStats(), + commits: [], }; }, props: [ @@ -17,6 +17,7 @@ 'store', ], created() { + this.store.fetchCommits.call(this, Vue); this.store.fetchDataLoop.call(this, Vue); }, methods: { @@ -57,10 +58,28 @@
- {{shortSha(pipeline)}} + {{shortSha(pipeline)}} +

- - fix broken repo 500 errors in UI and added relevant specs + + + + + fix broken repo 500 errors in UI and added relevant specs +

diff --git a/app/assets/javascripts/vue_pipelines_index/store.js.es6 b/app/assets/javascripts/vue_pipelines_index/store.js.es6 index f1cd991994d..f9e802714df 100644 --- a/app/assets/javascripts/vue_pipelines_index/store.js.es6 +++ b/app/assets/javascripts/vue_pipelines_index/store.js.es6 @@ -12,11 +12,28 @@ console.error('API Error for Pipelines'); }); - goFetch(Vue); setInterval(() => { console.log('DID IT'); goFetch(Vue); - }, 3000); + }, 30000); + } + + fetchCommits(vue) { + const goFetch = vueSet => + this.$http.get(`/api/v3/projects/${this.scope}/pipelines`) + .then((response) => { + vueSet.set(this, 'pipelines', JSON.parse(response.body)); + }, () => { + console.error('API Error for Pipelines'); + }); + + this.$http.get(`/api/v3/projects/${this.scope}/repository/commits`) + .then((response) => { + vue.set(this, 'commits', JSON.parse(response.body)); + }, () => { + console.error('API Error for Pipelines'); + }) + .then(() => goFetch(vue)); } }; })(window.gl || (window.gl = {})); -- cgit v1.2.1 From 2caf62d1a22d39f312c7306c408e40120ec362db Mon Sep 17 00:00:00 2001 From: Regis Date: Sun, 30 Oct 2016 22:22:08 -0600 Subject: refactor --- .../javascripts/vue_pipelines_index/store.js.es6 | 28 ++++++++-------------- 1 file changed, 10 insertions(+), 18 deletions(-) (limited to 'app/assets') diff --git a/app/assets/javascripts/vue_pipelines_index/store.js.es6 b/app/assets/javascripts/vue_pipelines_index/store.js.es6 index f9e802714df..046ec342478 100644 --- a/app/assets/javascripts/vue_pipelines_index/store.js.es6 +++ b/app/assets/javascripts/vue_pipelines_index/store.js.es6 @@ -2,38 +2,30 @@ /* eslint-disable no-param-reassign */ ((gl) => { + const goFetch = (that, vue) => + that.$http.get(`/api/v3/projects/${that.scope}/pipelines`) + .then((response) => { + vue.set(that, 'pipelines', JSON.parse(response.body)); + }, () => { + console.error('API Error for Pipelines'); + }); + gl.PipelineStore = class { fetchDataLoop(Vue) { - const goFetch = vue => - this.$http.get(`/api/v3/projects/${this.scope}/pipelines`) - .then((response) => { - vue.set(this, 'pipelines', JSON.parse(response.body)); - }, () => { - console.error('API Error for Pipelines'); - }); - setInterval(() => { console.log('DID IT'); - goFetch(Vue); + goFetch(this, Vue); }, 30000); } fetchCommits(vue) { - const goFetch = vueSet => - this.$http.get(`/api/v3/projects/${this.scope}/pipelines`) - .then((response) => { - vueSet.set(this, 'pipelines', JSON.parse(response.body)); - }, () => { - console.error('API Error for Pipelines'); - }); - this.$http.get(`/api/v3/projects/${this.scope}/repository/commits`) .then((response) => { vue.set(this, 'commits', JSON.parse(response.body)); }, () => { console.error('API Error for Pipelines'); }) - .then(() => goFetch(vue)); + .then(() => goFetch(this, vue)); } }; })(window.gl || (window.gl = {})); -- cgit v1.2.1 From cbd1303bec800dbacf2769ffb4f7ec63f4035eaf Mon Sep 17 00:00:00 2001 From: selfup Date: Mon, 31 Oct 2016 00:55:10 -0600 Subject: relative sha paths for commits --- app/assets/javascripts/vue_pipelines_index/pipelines.vue.js.es6 | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'app/assets') diff --git a/app/assets/javascripts/vue_pipelines_index/pipelines.vue.js.es6 b/app/assets/javascripts/vue_pipelines_index/pipelines.vue.js.es6 index 1ff7b117223..7bfd49344ca 100644 --- a/app/assets/javascripts/vue_pipelines_index/pipelines.vue.js.es6 +++ b/app/assets/javascripts/vue_pipelines_index/pipelines.vue.js.es6 @@ -60,7 +60,7 @@ {{shortSha(pipeline)}} + href="./commit/{{pipeline.sha}}">{{shortSha(pipeline)}}

fix broken repo 500 errors in UI and added relevant specs -- cgit v1.2.1 From c32c77a095a4fb5cebb6db47fa031e1f8752031e Mon Sep 17 00:00:00 2001 From: selfup Date: Mon, 31 Oct 2016 01:15:29 -0600 Subject: pagination exists - will become dynamic soon --- app/assets/javascripts/vue_pipelines_index/store.js.es6 | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'app/assets') diff --git a/app/assets/javascripts/vue_pipelines_index/store.js.es6 b/app/assets/javascripts/vue_pipelines_index/store.js.es6 index 046ec342478..6a909f74e53 100644 --- a/app/assets/javascripts/vue_pipelines_index/store.js.es6 +++ b/app/assets/javascripts/vue_pipelines_index/store.js.es6 @@ -3,7 +3,7 @@ ((gl) => { const goFetch = (that, vue) => - that.$http.get(`/api/v3/projects/${that.scope}/pipelines`) + that.$http.get(`/api/v3/projects/${that.scope}/pipelines?per_page=5&page=1`) .then((response) => { vue.set(that, 'pipelines', JSON.parse(response.body)); }, () => { @@ -19,7 +19,7 @@ } fetchCommits(vue) { - this.$http.get(`/api/v3/projects/${this.scope}/repository/commits`) + this.$http.get(`/api/v3/projects/${this.scope}/repository/commits?per_page=5&page=1`) .then((response) => { vue.set(this, 'commits', JSON.parse(response.body)); }, () => { -- cgit v1.2.1 From a42140d08fea03acf406c64db5de67beee4b8107 Mon Sep 17 00:00:00 2001 From: Regis Date: Mon, 31 Oct 2016 13:02:34 -0600 Subject: page specific js - remove inline js - refactor --- .../javascripts/vue_pipelines_index/index.js.es6 | 23 ++++++++++++++++++++++ .../vue_pipelines_index/pipelines.vue.js.es6 | 8 ++++++++ .../javascripts/vue_pipelines_index/store.js.es6 | 13 +++++++++--- app/assets/javascripts/vue_pipelines_loader.js.es6 | 1 - 4 files changed, 41 insertions(+), 4 deletions(-) delete mode 100644 app/assets/javascripts/vue_pipelines_loader.js.es6 (limited to 'app/assets') diff --git a/app/assets/javascripts/vue_pipelines_index/index.js.es6 b/app/assets/javascripts/vue_pipelines_index/index.js.es6 index fcf91107da5..4b69c4d4c7d 100644 --- a/app/assets/javascripts/vue_pipelines_index/index.js.es6 +++ b/app/assets/javascripts/vue_pipelines_index/index.js.es6 @@ -1,3 +1,5 @@ +/* global Vue, VueResource, gl */ + //= require vue //= require vue-resource @@ -5,3 +7,24 @@ //= require ./running_icon.vue.js.es6 //= require ./running.vue.js.es6 //= require ./pipelines.vue.js.es6 + +(() => { + const project = document.querySelector('.table-holder'); + + Vue.use(VueResource); + + new Vue({ + el: '.vue-pipelines-index', + data: { + scope: project.dataset.projectId, + store: new gl.PipelineStore(), + }, + components: { + 'vue-pipelines': gl.VuePipeLines, + }, + template: '' + + '

' + + "" + + '
', + }); +})(); diff --git a/app/assets/javascripts/vue_pipelines_index/pipelines.vue.js.es6 b/app/assets/javascripts/vue_pipelines_index/pipelines.vue.js.es6 index 7bfd49344ca..021a5ca8743 100644 --- a/app/assets/javascripts/vue_pipelines_index/pipelines.vue.js.es6 +++ b/app/assets/javascripts/vue_pipelines_index/pipelines.vue.js.es6 @@ -10,6 +10,8 @@ return { pipelines: [], commits: [], + currentPage: '', + intervalId: '', }; }, props: [ @@ -24,6 +26,11 @@ shortSha(pipeline) { return pipeline.sha.slice(0, 8); }, + changePage() { + // clearInterval(this.intervalId); + // this.store.fetchCommits.call(this, Vue); + // this.store.fetchDataLoop.call(this, Vue); + }, }, template: ` @@ -52,6 +59,7 @@
+ master
diff --git a/app/assets/javascripts/vue_pipelines_index/store.js.es6 b/app/assets/javascripts/vue_pipelines_index/store.js.es6 index 6a909f74e53..bdba9575013 100644 --- a/app/assets/javascripts/vue_pipelines_index/store.js.es6 +++ b/app/assets/javascripts/vue_pipelines_index/store.js.es6 @@ -2,8 +2,12 @@ /* eslint-disable no-param-reassign */ ((gl) => { + const api = '/api/v3/projects'; + const goFetch = (that, vue) => - that.$http.get(`/api/v3/projects/${that.scope}/pipelines?per_page=5&page=1`) + that.$http.get( + `${api}/${that.scope}/pipelines?per_page=5&page=1` + ) .then((response) => { vue.set(that, 'pipelines', JSON.parse(response.body)); }, () => { @@ -12,14 +16,17 @@ gl.PipelineStore = class { fetchDataLoop(Vue) { - setInterval(() => { + // eventually clearInterval(this.intervalId) + this.intervalId = setInterval(() => { console.log('DID IT'); goFetch(this, Vue); }, 30000); } fetchCommits(vue) { - this.$http.get(`/api/v3/projects/${this.scope}/repository/commits?per_page=5&page=1`) + this.$http.get( + `${api}/${this.scope}/repository/commits?per_page=5&page=1` + ) .then((response) => { vue.set(this, 'commits', JSON.parse(response.body)); }, () => { diff --git a/app/assets/javascripts/vue_pipelines_loader.js.es6 b/app/assets/javascripts/vue_pipelines_loader.js.es6 deleted file mode 100644 index 1b8ba72b697..00000000000 --- a/app/assets/javascripts/vue_pipelines_loader.js.es6 +++ /dev/null @@ -1 +0,0 @@ -//= require_tree ./vue_pipelines_index -- cgit v1.2.1 From 87d4d235683f5a40acec6c73116f1217caece5c2 Mon Sep 17 00:00:00 2001 From: Regis Date: Mon, 31 Oct 2016 15:06:25 -0600 Subject: remove commit endpoint callprep for backend api to be updated or new endpoint to be built --- .../vue_pipelines_index/pipelines.vue.js.es6 | 2 -- .../javascripts/vue_pipelines_index/store.js.es6 | 36 ++++++++-------------- 2 files changed, 13 insertions(+), 25 deletions(-) (limited to 'app/assets') diff --git a/app/assets/javascripts/vue_pipelines_index/pipelines.vue.js.es6 b/app/assets/javascripts/vue_pipelines_index/pipelines.vue.js.es6 index 021a5ca8743..c1a2ac3292e 100644 --- a/app/assets/javascripts/vue_pipelines_index/pipelines.vue.js.es6 +++ b/app/assets/javascripts/vue_pipelines_index/pipelines.vue.js.es6 @@ -9,7 +9,6 @@ data() { return { pipelines: [], - commits: [], currentPage: '', intervalId: '', }; @@ -19,7 +18,6 @@ 'store', ], created() { - this.store.fetchCommits.call(this, Vue); this.store.fetchDataLoop.call(this, Vue); }, methods: { diff --git a/app/assets/javascripts/vue_pipelines_index/store.js.es6 b/app/assets/javascripts/vue_pipelines_index/store.js.es6 index bdba9575013..06282744d8b 100644 --- a/app/assets/javascripts/vue_pipelines_index/store.js.es6 +++ b/app/assets/javascripts/vue_pipelines_index/store.js.es6 @@ -4,35 +4,25 @@ ((gl) => { const api = '/api/v3/projects'; - const goFetch = (that, vue) => - that.$http.get( - `${api}/${that.scope}/pipelines?per_page=5&page=1` - ) - .then((response) => { - vue.set(that, 'pipelines', JSON.parse(response.body)); - }, () => { - console.error('API Error for Pipelines'); - }); - gl.PipelineStore = class { fetchDataLoop(Vue) { + const goFetch = () => + this.$http.get( + `${api}/${this.scope}/pipelines?per_page=5&page=1` + ) + .then((response) => { + Vue.set(this, 'pipelines', JSON.parse(response.body)); + }, () => { + console.error('API Error for Pipelines'); + }); + + goFetch(); + // eventually clearInterval(this.intervalId) this.intervalId = setInterval(() => { console.log('DID IT'); - goFetch(this, Vue); + goFetch(); }, 30000); } - - fetchCommits(vue) { - this.$http.get( - `${api}/${this.scope}/repository/commits?per_page=5&page=1` - ) - .then((response) => { - vue.set(this, 'commits', JSON.parse(response.body)); - }, () => { - console.error('API Error for Pipelines'); - }) - .then(() => goFetch(this, vue)); - } }; })(window.gl || (window.gl = {})); -- cgit v1.2.1 From 257146032e1340701772097cfe7e4b29b7b56c97 Mon Sep 17 00:00:00 2001 From: Regis Date: Mon, 31 Oct 2016 15:51:24 -0600 Subject: begin pagination logic - add Flash to error - refactor --- app/assets/javascripts/vue_pipelines_index/index.js.es6 | 2 +- .../javascripts/vue_pipelines_index/pipelines.vue.js.es6 | 9 ++++++--- app/assets/javascripts/vue_pipelines_index/store.js.es6 | 16 ++++++---------- 3 files changed, 13 insertions(+), 14 deletions(-) (limited to 'app/assets') diff --git a/app/assets/javascripts/vue_pipelines_index/index.js.es6 b/app/assets/javascripts/vue_pipelines_index/index.js.es6 index 4b69c4d4c7d..015716b0540 100644 --- a/app/assets/javascripts/vue_pipelines_index/index.js.es6 +++ b/app/assets/javascripts/vue_pipelines_index/index.js.es6 @@ -13,7 +13,7 @@ Vue.use(VueResource); - new Vue({ + return new Vue({ el: '.vue-pipelines-index', data: { scope: project.dataset.projectId, diff --git a/app/assets/javascripts/vue_pipelines_index/pipelines.vue.js.es6 b/app/assets/javascripts/vue_pipelines_index/pipelines.vue.js.es6 index c1a2ac3292e..a209b9d0532 100644 --- a/app/assets/javascripts/vue_pipelines_index/pipelines.vue.js.es6 +++ b/app/assets/javascripts/vue_pipelines_index/pipelines.vue.js.es6 @@ -11,6 +11,7 @@ pipelines: [], currentPage: '', intervalId: '', + pageNum: 'page=1', }; }, props: [ @@ -18,7 +19,10 @@ 'store', ], created() { - this.store.fetchDataLoop.call(this, Vue); + const url = window.location.href; + if (url.includes('?')) this.pageNum = url.split('?')[1]; + // now fetch page appropriate data + this.store.fetchDataLoop.call(this, Vue, this.pageNum); }, methods: { shortSha(pipeline) { @@ -26,8 +30,7 @@ }, changePage() { // clearInterval(this.intervalId); - // this.store.fetchCommits.call(this, Vue); - // this.store.fetchDataLoop.call(this, Vue); + // this.store.fetchDataLoop.call(this, Vue, this.pageNum); }, }, template: ` diff --git a/app/assets/javascripts/vue_pipelines_index/store.js.es6 b/app/assets/javascripts/vue_pipelines_index/store.js.es6 index 06282744d8b..17f530a8ca2 100644 --- a/app/assets/javascripts/vue_pipelines_index/store.js.es6 +++ b/app/assets/javascripts/vue_pipelines_index/store.js.es6 @@ -1,28 +1,24 @@ -/* global gl */ +/* global gl, Flash */ /* eslint-disable no-param-reassign */ ((gl) => { const api = '/api/v3/projects'; gl.PipelineStore = class { - fetchDataLoop(Vue) { + fetchDataLoop(Vue, pageNum) { const goFetch = () => - this.$http.get( - `${api}/${this.scope}/pipelines?per_page=5&page=1` - ) + this.$http.get(`${api}/${this.scope}/pipelines?per_page=30&${pageNum}`) .then((response) => { Vue.set(this, 'pipelines', JSON.parse(response.body)); - }, () => { - console.error('API Error for Pipelines'); - }); + }, () => new Flash('Something went wrong on our end.')); + // inital fetch and then start timeout loop goFetch(); // eventually clearInterval(this.intervalId) this.intervalId = setInterval(() => { - console.log('DID IT'); goFetch(); - }, 30000); + }, 60000); } }; })(window.gl || (window.gl = {})); -- cgit v1.2.1 From c2d6969c97bf4c524c58722c2c5f0e4dba139e45 Mon Sep 17 00:00:00 2001 From: Regis Date: Mon, 31 Oct 2016 16:10:50 -0600 Subject: formatting --- app/assets/javascripts/vue_pipelines_index/store.js.es6 | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) (limited to 'app/assets') diff --git a/app/assets/javascripts/vue_pipelines_index/store.js.es6 b/app/assets/javascripts/vue_pipelines_index/store.js.es6 index 17f530a8ca2..789e8e791b6 100644 --- a/app/assets/javascripts/vue_pipelines_index/store.js.es6 +++ b/app/assets/javascripts/vue_pipelines_index/store.js.es6 @@ -10,7 +10,9 @@ this.$http.get(`${api}/${this.scope}/pipelines?per_page=30&${pageNum}`) .then((response) => { Vue.set(this, 'pipelines', JSON.parse(response.body)); - }, () => new Flash('Something went wrong on our end.')); + }, () => new Flash( + 'Something went wrong on our end.' + )); // inital fetch and then start timeout loop goFetch(); -- cgit v1.2.1 From ae4eacadf35fec8db8d7c316dcc8fe8d0f57535b Mon Sep 17 00:00:00 2001 From: Regis Date: Mon, 31 Oct 2016 16:45:25 -0600 Subject: fix styling by removing main div --- app/assets/javascripts/vue_pipelines_index/index.js.es6 | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) (limited to 'app/assets') diff --git a/app/assets/javascripts/vue_pipelines_index/index.js.es6 b/app/assets/javascripts/vue_pipelines_index/index.js.es6 index 015716b0540..35f78656856 100644 --- a/app/assets/javascripts/vue_pipelines_index/index.js.es6 +++ b/app/assets/javascripts/vue_pipelines_index/index.js.es6 @@ -22,9 +22,8 @@ components: { 'vue-pipelines': gl.VuePipeLines, }, - template: '' - + '
' - + "" - + '
', + template: ` + + `, }); })(); -- cgit v1.2.1 From c659ffcbc52c433879c4108276175f28f1105e6f Mon Sep 17 00:00:00 2001 From: Regis Date: Mon, 31 Oct 2016 17:17:29 -0600 Subject: breaking more HTML out of template --- .../javascripts/vue_pipelines_index/index.js.es6 | 4 +- .../vue_pipelines_index/pipelines.vue.js.es6 | 167 ++++++--------------- .../vue_pipelines_index/stages.vue.js.es6 | 83 ++++++++++ 3 files changed, 134 insertions(+), 120 deletions(-) create mode 100644 app/assets/javascripts/vue_pipelines_index/stages.vue.js.es6 (limited to 'app/assets') diff --git a/app/assets/javascripts/vue_pipelines_index/index.js.es6 b/app/assets/javascripts/vue_pipelines_index/index.js.es6 index 35f78656856..c7a5204c7d6 100644 --- a/app/assets/javascripts/vue_pipelines_index/index.js.es6 +++ b/app/assets/javascripts/vue_pipelines_index/index.js.es6 @@ -6,15 +6,17 @@ //= require ./store.js.es6 //= require ./running_icon.vue.js.es6 //= require ./running.vue.js.es6 +//= require ./stages.vue.js.es6 //= require ./pipelines.vue.js.es6 (() => { const project = document.querySelector('.table-holder'); Vue.use(VueResource); + // Vue.config.silent = true; return new Vue({ - el: '.vue-pipelines-index', + el: '#vue-pipelines-index', data: { scope: project.dataset.projectId, store: new gl.PipelineStore(), diff --git a/app/assets/javascripts/vue_pipelines_index/pipelines.vue.js.es6 b/app/assets/javascripts/vue_pipelines_index/pipelines.vue.js.es6 index a209b9d0532..34b8ceecd29 100644 --- a/app/assets/javascripts/vue_pipelines_index/pipelines.vue.js.es6 +++ b/app/assets/javascripts/vue_pipelines_index/pipelines.vue.js.es6 @@ -5,6 +5,7 @@ gl.VuePipeLines = Vue.extend({ components: { 'vue-running-pipeline': gl.VueRunningPipeline, + 'vue-stages': gl.VueStages, }, data() { return { @@ -92,128 +93,56 @@

- - - - - - - - - - + + - diff --git a/app/assets/javascripts/vue_pipelines_index/stages.vue.js.es6 b/app/assets/javascripts/vue_pipelines_index/stages.vue.js.es6 new file mode 100644 index 00000000000..0baf90dcf60 --- /dev/null +++ b/app/assets/javascripts/vue_pipelines_index/stages.vue.js.es6 @@ -0,0 +1,83 @@ +/* global Vue, gl */ +/* eslint-disable no-param-reassign */ + +((gl) => { + gl.VueStages = Vue.extend({ + template: ` + + + + + + + + + `, + }); +})(window.gl || (window.gl = {})); -- cgit v1.2.1 From 13f11b470e0b94da082099ca32f8850dbce01b19 Mon Sep 17 00:00:00 2001 From: Regis Date: Tue, 1 Nov 2016 10:38:17 -0600 Subject: add comments on data needed from API to help extract into components --- .../vue_pipelines_index/pipelines.vue.js.es6 | 43 +++++++++++++++++++--- 1 file changed, 38 insertions(+), 5 deletions(-) (limited to 'app/assets') diff --git a/app/assets/javascripts/vue_pipelines_index/pipelines.vue.js.es6 b/app/assets/javascripts/vue_pipelines_index/pipelines.vue.js.es6 index 34b8ceecd29..6d6c866c449 100644 --- a/app/assets/javascripts/vue_pipelines_index/pipelines.vue.js.es6 +++ b/app/assets/javascripts/vue_pipelines_index/pipelines.vue.js.es6 @@ -61,8 +61,10 @@
- - master + + master
@@ -76,6 +78,12 @@ + + fix broken repo 500 errors in UI and added relevant specs

+ @@ -108,7 +135,10 @@
+ + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + `, }); -- cgit v1.2.1 From 5ba83d961a7cf8bebea9f9e9814354be769041e9 Mon Sep 17 00:00:00 2001 From: Regis Date: Tue, 1 Nov 2016 18:48:45 -0600 Subject: extracted Commit Column to vue component --- .../vue_pipelines_index/branch_commit.vue.js.es6 | 54 ++++++++++++++++++++++ .../javascripts/vue_pipelines_index/index.js.es6 | 1 + .../vue_pipelines_index/pipelines.vue.js.es6 | 52 +++------------------ 3 files changed, 62 insertions(+), 45 deletions(-) create mode 100644 app/assets/javascripts/vue_pipelines_index/branch_commit.vue.js.es6 (limited to 'app/assets') diff --git a/app/assets/javascripts/vue_pipelines_index/branch_commit.vue.js.es6 b/app/assets/javascripts/vue_pipelines_index/branch_commit.vue.js.es6 new file mode 100644 index 00000000000..46cbf706d97 --- /dev/null +++ b/app/assets/javascripts/vue_pipelines_index/branch_commit.vue.js.es6 @@ -0,0 +1,54 @@ +/* global Vue, gl */ +/* eslint-disable no-param-reassign */ + +((gl) => { + gl.VueBranchCommit = Vue.extend({ + props: ['pipeline', 'shortsha'], + template: ` +
+ +
+ + master +
+ + + +
+ {{shortsha(pipeline)}} + +

+ + + + + + + fix broken repo 500 errors in UI and added relevant specs + +

+ `, + }); +})(window.gl || (window.gl = {})); diff --git a/app/assets/javascripts/vue_pipelines_index/index.js.es6 b/app/assets/javascripts/vue_pipelines_index/index.js.es6 index 4450fde4103..14a4a5d9b1d 100644 --- a/app/assets/javascripts/vue_pipelines_index/index.js.es6 +++ b/app/assets/javascripts/vue_pipelines_index/index.js.es6 @@ -8,6 +8,7 @@ //= require ./running.vue.js.es6 //= require ./stages.vue.js.es6 //= require ./pipeline_actions.vue.js.es6 +//= require ./branch_commit.vue.js.es6 //= require ./pipelines.vue.js.es6 (() => { diff --git a/app/assets/javascripts/vue_pipelines_index/pipelines.vue.js.es6 b/app/assets/javascripts/vue_pipelines_index/pipelines.vue.js.es6 index 16da8b8f423..0b1c2c33ca0 100644 --- a/app/assets/javascripts/vue_pipelines_index/pipelines.vue.js.es6 +++ b/app/assets/javascripts/vue_pipelines_index/pipelines.vue.js.es6 @@ -7,6 +7,7 @@ 'vue-running-pipeline': gl.VueRunningPipeline, 'vue-stages': gl.VueStages, 'vue-pipeline-actions': gl.VuePipelineActions, + 'vue-branch-commit': gl.VueBranchCommit, }, data() { return { @@ -27,7 +28,7 @@ this.store.fetchDataLoop.call(this, Vue, this.pageNum); }, methods: { - shortSha(pipeline) { + shortsha(pipeline) { return pipeline.sha.slice(0, 8); }, changePage() { @@ -61,50 +62,11 @@ {{pipeline.user}} -
- -
- - master -
- - - -
- {{shortSha(pipeline)}} - -

- - - - - - - fix broken repo 500 errors in UI and added relevant specs - -

+ + + master +
+ + +
- - master -
- - - -
- {{shortsha(pipeline)}} - -

- - - - - - fix broken repo 500 errors in UI and added relevant specs + {{shortsha(pipeline)}} -

+

+ + + + + + + fix broken repo 500 errors in UI and added relevant specs + +

+ `, }); })(window.gl || (window.gl = {})); diff --git a/app/assets/javascripts/vue_pipelines_index/index.js.es6 b/app/assets/javascripts/vue_pipelines_index/index.js.es6 index 14a4a5d9b1d..b8bcfdb30c3 100644 --- a/app/assets/javascripts/vue_pipelines_index/index.js.es6 +++ b/app/assets/javascripts/vue_pipelines_index/index.js.es6 @@ -4,6 +4,8 @@ //= require vue-resource //= require ./store.js.es6 +//= require ./pipeline_url.vue.js.es6 +//= require ./pipeline_head.vue.js.es6 //= require ./running_icon.vue.js.es6 //= require ./running.vue.js.es6 //= require ./stages.vue.js.es6 diff --git a/app/assets/javascripts/vue_pipelines_index/pipeline_actions.vue.js.es6 b/app/assets/javascripts/vue_pipelines_index/pipeline_actions.vue.js.es6 index aa1069cff9f..a6ff2f10ccf 100644 --- a/app/assets/javascripts/vue_pipelines_index/pipeline_actions.vue.js.es6 +++ b/app/assets/javascripts/vue_pipelines_index/pipeline_actions.vue.js.es6 @@ -5,6 +5,7 @@ gl.VuePipelineActions = Vue.extend({ // props: ['builds'], template: ` +
@@ -71,6 +72,7 @@
+ `, }); })(window.gl || (window.gl = {})); diff --git a/app/assets/javascripts/vue_pipelines_index/pipeline_head.vue.js.es6 b/app/assets/javascripts/vue_pipelines_index/pipeline_head.vue.js.es6 new file mode 100644 index 00000000000..2ead571aa9f --- /dev/null +++ b/app/assets/javascripts/vue_pipelines_index/pipeline_head.vue.js.es6 @@ -0,0 +1,26 @@ +/* global Vue, gl */ +/* eslint-disable no-param-reassign */ + +((gl) => { + gl.VuePipelineHead = Vue.extend({ + components: { + 'vue-running-icon': gl.VueRunningIcon, + }, + props: [ + 'pipeline', + 'pipelineurl', + ], + template: ` + + + Status + Pipeline + Commit + Stages + + + + + `, + }); +})(window.gl || (window.gl = {})); diff --git a/app/assets/javascripts/vue_pipelines_index/pipeline_url.vue.js.es6 b/app/assets/javascripts/vue_pipelines_index/pipeline_url.vue.js.es6 new file mode 100644 index 00000000000..148fe58d9ce --- /dev/null +++ b/app/assets/javascripts/vue_pipelines_index/pipeline_url.vue.js.es6 @@ -0,0 +1,23 @@ +/* global Vue, gl */ +/* eslint-disable no-param-reassign */ + +((gl) => { + gl.VuePipelineUrl = Vue.extend({ + components: { + 'vue-running-icon': gl.VueRunningIcon, + }, + props: [ + 'pipeline', + 'pipelineurl', + ], + template: ` + + + #{{pipeline.id}} + + by + {{pipeline.user}} + + `, + }); +})(window.gl || (window.gl = {})); diff --git a/app/assets/javascripts/vue_pipelines_index/pipelines.vue.js.es6 b/app/assets/javascripts/vue_pipelines_index/pipelines.vue.js.es6 index bdb52b21b20..86c18ace09e 100644 --- a/app/assets/javascripts/vue_pipelines_index/pipelines.vue.js.es6 +++ b/app/assets/javascripts/vue_pipelines_index/pipelines.vue.js.es6 @@ -1,5 +1,5 @@ /* global Vue, gl */ -/* eslint-disable no-param-reassign */ +/* eslint-disable no-param-reassign, no-bitwise*/ ((gl) => { gl.VuePipeLines = Vue.extend({ @@ -8,6 +8,8 @@ 'vue-stages': gl.VueStages, 'vue-pipeline-actions': gl.VuePipelineActions, 'vue-branch-commit': gl.VueBranchCommit, + 'vue-pipeline-url': gl.VuePipelineUrl, + 'vue-pipeline-head': gl.VuePipelineHead, }, data() { return { @@ -22,11 +24,8 @@ 'store', ], created() { - // ** `.includes` does not work in PhantomJS ** - - // const url = window.location.toString(); - // if (url.includes('?')) this.pageNum = url.split('?')[1]; - // now fetch page appropriate data + const url = window.location.toString(); + if (~url.indexOf('?')) this.pageNum = url.split('?')[1]; this.store.fetchDataLoop.call(this, Vue, this.pageNum); }, methods: { @@ -37,66 +36,36 @@ // clearInterval(this.intervalId); // this.store.fetchDataLoop.call(this, Vue, this.pageNum); }, + pipelineurl(id) { + return `pipelines/${id}`; + }, }, template: `
- - - - - - - - - - - - - - - + + - + + + + + - +
StatusPipelineCommitStages
- - #{{pipeline.id}} - - by - {{pipeline.user}} - - +
- - +
diff --git a/app/assets/javascripts/vue_pipelines_index/running.vue.js.es6 b/app/assets/javascripts/vue_pipelines_index/running.vue.js.es6 index 5edf8403bd9..8d18f5f3aa3 100644 --- a/app/assets/javascripts/vue_pipelines_index/running.vue.js.es6 +++ b/app/assets/javascripts/vue_pipelines_index/running.vue.js.es6 @@ -7,11 +7,12 @@ 'vue-running-icon': gl.VueRunningIcon, }, props: [ - 'pipe', + 'pipeline', + 'pipelineurl', ], template: ` - + diff --git a/app/assets/javascripts/vue_pipelines_index/stages.vue.js.es6 b/app/assets/javascripts/vue_pipelines_index/stages.vue.js.es6 index 400eb0e4d3f..da8c9280486 100644 --- a/app/assets/javascripts/vue_pipelines_index/stages.vue.js.es6 +++ b/app/assets/javascripts/vue_pipelines_index/stages.vue.js.es6 @@ -4,86 +4,107 @@ ((gl) => { gl.VueStages = Vue.extend({ template: ` - - - - - - - - + + + + + + + + + + + `, }); })(window.gl || (window.gl = {})); -- cgit v1.2.1 From 25e60f879fc21e55902ad5c069a5de0a3e340db7 Mon Sep 17 00:00:00 2001 From: Regis Date: Wed, 2 Nov 2016 18:54:04 -0600 Subject: basic pagination ^_^ - will make component dynamic soon --- .../javascripts/vue_pipelines_index/index.js.es6 | 1 + .../vue_pipelines_index/pipelines.vue.js.es6 | 71 +++++++++++++--------- .../javascripts/vue_pipelines_index/store.js.es6 | 5 +- .../vue_gl_pagination.vue.js.es6 | 54 ++++++++++++++++ 4 files changed, 99 insertions(+), 32 deletions(-) create mode 100644 app/assets/javascripts/vue_pipelines_index/vue_gl_pagination.vue.js.es6 (limited to 'app/assets') diff --git a/app/assets/javascripts/vue_pipelines_index/index.js.es6 b/app/assets/javascripts/vue_pipelines_index/index.js.es6 index b8bcfdb30c3..6ecbc1ba8ff 100644 --- a/app/assets/javascripts/vue_pipelines_index/index.js.es6 +++ b/app/assets/javascripts/vue_pipelines_index/index.js.es6 @@ -5,6 +5,7 @@ //= require ./store.js.es6 //= require ./pipeline_url.vue.js.es6 +//= require ./vue_gl_pagination.vue.js.es6 //= require ./pipeline_head.vue.js.es6 //= require ./running_icon.vue.js.es6 //= require ./running.vue.js.es6 diff --git a/app/assets/javascripts/vue_pipelines_index/pipelines.vue.js.es6 b/app/assets/javascripts/vue_pipelines_index/pipelines.vue.js.es6 index 86c18ace09e..4706ea61c8e 100644 --- a/app/assets/javascripts/vue_pipelines_index/pipelines.vue.js.es6 +++ b/app/assets/javascripts/vue_pipelines_index/pipelines.vue.js.es6 @@ -10,13 +10,14 @@ 'vue-branch-commit': gl.VueBranchCommit, 'vue-pipeline-url': gl.VuePipelineUrl, 'vue-pipeline-head': gl.VuePipelineHead, + 'vue-gl-pagination': gl.VueGlPagination, }, data() { return { pipelines: [], currentPage: '', intervalId: '', - pageNum: 'page=1', + pageNum: 1, }; }, props: [ @@ -25,50 +26,60 @@ ], created() { const url = window.location.toString(); - if (~url.indexOf('?')) this.pageNum = url.split('?')[1]; + if (~url.indexOf('?')) this.pageNum = url.split('?')[1].split('=')[1]; this.store.fetchDataLoop.call(this, Vue, this.pageNum); }, methods: { shortsha(pipeline) { return pipeline.sha.slice(0, 8); }, - changePage() { - // clearInterval(this.intervalId); - // this.store.fetchDataLoop.call(this, Vue, this.pageNum); + changepage(event) { + this.pageNum = +event.target.innerText; + // use p instead of page to avoid rails tyring to make an actual request + window.history.pushState({}, null, `?p=${this.pageNum}`); + clearInterval(this.intervalId); + this.store.fetchDataLoop.call(this, Vue, this.pageNum); }, pipelineurl(id) { return `pipelines/${id}`; }, }, template: ` -
- - - - - + + + +
+
+ +
`, }); diff --git a/app/assets/javascripts/vue_pipelines_index/store.js.es6 b/app/assets/javascripts/vue_pipelines_index/store.js.es6 index 66cb989030a..bf5fba45194 100644 --- a/app/assets/javascripts/vue_pipelines_index/store.js.es6 +++ b/app/assets/javascripts/vue_pipelines_index/store.js.es6 @@ -3,11 +3,12 @@ ((gl) => { const api = '/api/v3/projects'; + const paginate = '?per_page=5&page='; gl.PipelineStore = class { fetchDataLoop(Vue, pageNum) { const goFetch = () => - this.$http.get(`${api}/${this.scope}/pipelines?per_page=30&${pageNum}`) + this.$http.get(`${api}/${this.scope}/pipelines${paginate}${pageNum}`) .then((response) => { Vue.set(this, 'pipelines', JSON.parse(response.body)); }, () => new Flash( @@ -20,7 +21,7 @@ // eventually clearInterval(this.intervalId) this.intervalId = setInterval(() => { goFetch(); - }, 3000); + }, 30000); } }; })(window.gl || (window.gl = {})); diff --git a/app/assets/javascripts/vue_pipelines_index/vue_gl_pagination.vue.js.es6 b/app/assets/javascripts/vue_pipelines_index/vue_gl_pagination.vue.js.es6 new file mode 100644 index 00000000000..29d4a4df511 --- /dev/null +++ b/app/assets/javascripts/vue_pipelines_index/vue_gl_pagination.vue.js.es6 @@ -0,0 +1,54 @@ +/* global Vue, gl */ +/* eslint-disable no-param-reassign */ + +((gl) => { + gl.VueGlPagination = Vue.extend({ + props: [ + 'changepage', + 'pages', + ], + template: ` +
+ +
+ `, + }); +})(window.gl || (window.gl = {})); -- cgit v1.2.1 From c249fb2ee9b522d02f49eee9734a1d6665d01e14 Mon Sep 17 00:00:00 2001 From: Regis Date: Wed, 2 Nov 2016 22:14:46 -0600 Subject: formatting --- app/assets/javascripts/vue_pipelines_index/running.vue.js.es6 | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) (limited to 'app/assets') diff --git a/app/assets/javascripts/vue_pipelines_index/running.vue.js.es6 b/app/assets/javascripts/vue_pipelines_index/running.vue.js.es6 index 8d18f5f3aa3..e363cb3c14e 100644 --- a/app/assets/javascripts/vue_pipelines_index/running.vue.js.es6 +++ b/app/assets/javascripts/vue_pipelines_index/running.vue.js.es6 @@ -14,7 +14,12 @@ - +  running -- cgit v1.2.1 From 77b0d6058ead2f42200c8a69dcd0e31561deae9e Mon Sep 17 00:00:00 2001 From: Regis Date: Wed, 2 Nov 2016 22:41:51 -0600 Subject: count passing through - last page known --- app/assets/javascripts/vue_pipelines_index/index.js.es6 | 9 +++++++-- app/assets/javascripts/vue_pipelines_index/pipelines.vue.js.es6 | 2 ++ .../javascripts/vue_pipelines_index/vue_gl_pagination.vue.js.es6 | 9 ++++++++- 3 files changed, 17 insertions(+), 3 deletions(-) (limited to 'app/assets') diff --git a/app/assets/javascripts/vue_pipelines_index/index.js.es6 b/app/assets/javascripts/vue_pipelines_index/index.js.es6 index 6ecbc1ba8ff..4e335ca1d13 100644 --- a/app/assets/javascripts/vue_pipelines_index/index.js.es6 +++ b/app/assets/javascripts/vue_pipelines_index/index.js.es6 @@ -18,12 +18,12 @@ const project = document.querySelector('.pipelines'); Vue.use(VueResource); - // Vue.config.silent = true; return new Vue({ el: '.vue-pipelines-index', data: { scope: project.dataset.projectId, + count: project.dataset.count, store: new gl.PipelineStore(), }, components: { @@ -31,7 +31,12 @@ }, template: `
- + +
`, }); diff --git a/app/assets/javascripts/vue_pipelines_index/pipelines.vue.js.es6 b/app/assets/javascripts/vue_pipelines_index/pipelines.vue.js.es6 index 4706ea61c8e..2f3bdc7a2a9 100644 --- a/app/assets/javascripts/vue_pipelines_index/pipelines.vue.js.es6 +++ b/app/assets/javascripts/vue_pipelines_index/pipelines.vue.js.es6 @@ -23,6 +23,7 @@ props: [ 'scope', 'store', + 'count', ], created() { const url = window.location.toString(); @@ -78,6 +79,7 @@
diff --git a/app/assets/javascripts/vue_pipelines_index/vue_gl_pagination.vue.js.es6 b/app/assets/javascripts/vue_pipelines_index/vue_gl_pagination.vue.js.es6 index 29d4a4df511..977d0e2b240 100644 --- a/app/assets/javascripts/vue_pipelines_index/vue_gl_pagination.vue.js.es6 +++ b/app/assets/javascripts/vue_pipelines_index/vue_gl_pagination.vue.js.es6 @@ -6,7 +6,14 @@ props: [ 'changepage', 'pages', + 'count', ], + computed: { + lastpage() { + const lastPage = Math.ceil(+this.count / 5); + return `pipelines?page=${lastPage}`; + }, + }, template: ` -- cgit v1.2.1 From 64e8ab95be436ccd22e087f39774b93ce6e4eeba Mon Sep 17 00:00:00 2001 From: Regis Date: Thu, 3 Nov 2016 11:20:15 -0600 Subject: pagination logic almost complete - active and inactive elements next - page gap not working --- .../vue_pipelines_index/pipelines.vue.js.es6 | 13 ++-- .../vue_gl_pagination.vue.js.es6 | 74 ++++++++++++---------- 2 files changed, 47 insertions(+), 40 deletions(-) (limited to 'app/assets') diff --git a/app/assets/javascripts/vue_pipelines_index/pipelines.vue.js.es6 b/app/assets/javascripts/vue_pipelines_index/pipelines.vue.js.es6 index 2f3bdc7a2a9..77923e68004 100644 --- a/app/assets/javascripts/vue_pipelines_index/pipelines.vue.js.es6 +++ b/app/assets/javascripts/vue_pipelines_index/pipelines.vue.js.es6 @@ -17,7 +17,7 @@ pipelines: [], currentPage: '', intervalId: '', - pageNum: 1, + pagenum: 1, }; }, props: [ @@ -27,19 +27,19 @@ ], created() { const url = window.location.toString(); - if (~url.indexOf('?')) this.pageNum = url.split('?')[1].split('=')[1]; - this.store.fetchDataLoop.call(this, Vue, this.pageNum); + if (~url.indexOf('?')) this.pagenum = url.split('?')[1].split('=')[1]; + this.store.fetchDataLoop.call(this, Vue, this.pagenum); }, methods: { shortsha(pipeline) { return pipeline.sha.slice(0, 8); }, changepage(event) { - this.pageNum = +event.target.innerText; + this.pagenum = +event.target.innerText; // use p instead of page to avoid rails tyring to make an actual request - window.history.pushState({}, null, `?p=${this.pageNum}`); + window.history.pushState({}, null, `?p=${this.pagenum}`); clearInterval(this.intervalId); - this.store.fetchDataLoop.call(this, Vue, this.pageNum); + this.store.fetchDataLoop.call(this, Vue, this.pagenum); }, pipelineurl(id) { return `pipelines/${id}`; @@ -77,6 +77,7 @@ { gl.VueGlPagination = Vue.extend({ + data() { + return { + last: Math.ceil(+this.count / 5), + }; + }, props: [ 'changepage', 'pages', 'count', + 'pagenum', ], + methods: { + pagenumberstatus(n) { + if (n - 1 === +this.pagenum) return 'page active'; + return ''; + }, + }, computed: { lastpage() { - const lastPage = Math.ceil(+this.count / 5); - return `pipelines?page=${lastPage}`; + return `pipelines?p=${this.last}`; + }, + upcount() { + return +this.last + 1; + }, + prev() { + if (this.pagenum === 1) return 1; + return this.pagenum - 1; + }, + next() { + if (this.pagenum === this.last) return `pipelines?p=${this.pagenum}`; + return `pipelines?p=${this.pagenum + 1}`; }, }, template: `
-
    -
  • {{(n - 1)}}
  • - +
  • + +
  • -
  • - Last » +
  • + Last »
-- cgit v1.2.1 From 4d8314ae0f07549b4e77f3aca8a2e3a84f80cb9b Mon Sep 17 00:00:00 2001 From: Regis Date: Thu, 3 Nov 2016 11:34:18 -0600 Subject: move last to computed --- .../vue_pipelines_index/vue_gl_pagination.vue.js.es6 | 13 ++++--------- 1 file changed, 4 insertions(+), 9 deletions(-) (limited to 'app/assets') diff --git a/app/assets/javascripts/vue_pipelines_index/vue_gl_pagination.vue.js.es6 b/app/assets/javascripts/vue_pipelines_index/vue_gl_pagination.vue.js.es6 index 48efa4bd57e..5f9e47bf3b2 100644 --- a/app/assets/javascripts/vue_pipelines_index/vue_gl_pagination.vue.js.es6 +++ b/app/assets/javascripts/vue_pipelines_index/vue_gl_pagination.vue.js.es6 @@ -3,11 +3,6 @@ ((gl) => { gl.VueGlPagination = Vue.extend({ - data() { - return { - last: Math.ceil(+this.count / 5), - }; - }, props: [ 'changepage', 'pages', @@ -21,6 +16,9 @@ }, }, computed: { + last() { + return Math.ceil(+this.count / 5) + }, lastpage() { return `pipelines?p=${this.last}`; }, @@ -38,10 +36,7 @@ }, template: `
-
    +
      -- cgit v1.2.1 From ea71e327f17c57e42d86717479a34af160d73d8e Mon Sep 17 00:00:00 2001 From: Regis Date: Thu, 3 Nov 2016 11:42:12 -0600 Subject: page gap works --- .../javascripts/vue_pipelines_index/vue_gl_pagination.vue.js.es6 | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'app/assets') diff --git a/app/assets/javascripts/vue_pipelines_index/vue_gl_pagination.vue.js.es6 b/app/assets/javascripts/vue_pipelines_index/vue_gl_pagination.vue.js.es6 index 5f9e47bf3b2..84b75b469f0 100644 --- a/app/assets/javascripts/vue_pipelines_index/vue_gl_pagination.vue.js.es6 +++ b/app/assets/javascripts/vue_pipelines_index/vue_gl_pagination.vue.js.es6 @@ -11,7 +11,7 @@ ], methods: { pagenumberstatus(n) { - if (n - 1 === +this.pagenum) return 'page active'; + if (n - 1 === +this.pagenum) return 'active'; return ''; }, }, @@ -43,8 +43,8 @@
    • {{(n - 1)}}
    • -
    • - +
    • +
    • {{(n - 1)}}
    • +
    • diff --git a/app/assets/javascripts/vue_pipelinesindex/store.js.es6 b/app/assets/javascripts/vue_pipelinesindex/store.js.es6 new file mode 100644 index 00000000000..bf5fba45194 --- /dev/null +++ b/app/assets/javascripts/vue_pipelinesindex/store.js.es6 @@ -0,0 +1,27 @@ +/* global gl, Flash */ +/* eslint-disable no-param-reassign */ + +((gl) => { + const api = '/api/v3/projects'; + const paginate = '?per_page=5&page='; + + gl.PipelineStore = class { + fetchDataLoop(Vue, pageNum) { + const goFetch = () => + this.$http.get(`${api}/${this.scope}/pipelines${paginate}${pageNum}`) + .then((response) => { + Vue.set(this, 'pipelines', JSON.parse(response.body)); + }, () => new Flash( + 'Something went wrong on our end.' + )); + + // inital fetch and then start timeout loop + goFetch(); + + // eventually clearInterval(this.intervalId) + this.intervalId = setInterval(() => { + goFetch(); + }, 30000); + } + }; +})(window.gl || (window.gl = {})); -- cgit v1.2.1 From 18ff82c6a6949aa4c4b4efa77fc6e08e856eb79a Mon Sep 17 00:00:00 2001 From: Regis Date: Fri, 4 Nov 2016 09:56:45 -0600 Subject: remove extra dir when debugging eslint --- .../javascripts/vue_pipelinesindex/store.js.es6 | 27 ---------------------- 1 file changed, 27 deletions(-) delete mode 100644 app/assets/javascripts/vue_pipelinesindex/store.js.es6 (limited to 'app/assets') diff --git a/app/assets/javascripts/vue_pipelinesindex/store.js.es6 b/app/assets/javascripts/vue_pipelinesindex/store.js.es6 deleted file mode 100644 index bf5fba45194..00000000000 --- a/app/assets/javascripts/vue_pipelinesindex/store.js.es6 +++ /dev/null @@ -1,27 +0,0 @@ -/* global gl, Flash */ -/* eslint-disable no-param-reassign */ - -((gl) => { - const api = '/api/v3/projects'; - const paginate = '?per_page=5&page='; - - gl.PipelineStore = class { - fetchDataLoop(Vue, pageNum) { - const goFetch = () => - this.$http.get(`${api}/${this.scope}/pipelines${paginate}${pageNum}`) - .then((response) => { - Vue.set(this, 'pipelines', JSON.parse(response.body)); - }, () => new Flash( - 'Something went wrong on our end.' - )); - - // inital fetch and then start timeout loop - goFetch(); - - // eventually clearInterval(this.intervalId) - this.intervalId = setInterval(() => { - goFetch(); - }, 30000); - } - }; -})(window.gl || (window.gl = {})); -- cgit v1.2.1 From 45992dc98c027701b8c187ef50ad9afaf6e8e052 Mon Sep 17 00:00:00 2001 From: Regis Date: Fri, 4 Nov 2016 11:25:50 -0600 Subject: rename files for eslint --- .../vue_pipelines_index/branch_commit.js.es6 | 63 ++++++++++++ .../vue_pipelines_index/branch_commit.vue.js.es6 | 63 ------------ .../vue_pipelines_index/gl_pagination.js.es6 | 64 ++++++++++++ .../vue_pipelines_index/pipeline_actions.js.es6 | 78 +++++++++++++++ .../pipeline_actions.vue.js.es6 | 78 --------------- .../vue_pipelines_index/pipeline_head.js.es6 | 26 +++++ .../vue_pipelines_index/pipeline_head.vue.js.es6 | 26 ----- .../vue_pipelines_index/pipeline_url.js.es6 | 23 +++++ .../vue_pipelines_index/pipeline_url.vue.js.es6 | 23 ----- .../vue_pipelines_index/pipelines.js.es6 | 89 +++++++++++++++++ .../vue_pipelines_index/pipelines.vue.js.es6 | 89 ----------------- .../javascripts/vue_pipelines_index/running.js.es6 | 31 ++++++ .../vue_pipelines_index/running.vue.js.es6 | 31 ------ .../vue_pipelines_index/running_icon.js.es6 | 13 +++ .../vue_pipelines_index/running_icon.vue.js.es6 | 13 --- .../javascripts/vue_pipelines_index/stages.js.es6 | 110 +++++++++++++++++++++ .../vue_pipelines_index/stages.vue.js.es6 | 110 --------------------- .../vue_gl_pagination.vue.js.es6 | 64 ------------ 18 files changed, 497 insertions(+), 497 deletions(-) create mode 100644 app/assets/javascripts/vue_pipelines_index/branch_commit.js.es6 delete mode 100644 app/assets/javascripts/vue_pipelines_index/branch_commit.vue.js.es6 create mode 100644 app/assets/javascripts/vue_pipelines_index/gl_pagination.js.es6 create mode 100644 app/assets/javascripts/vue_pipelines_index/pipeline_actions.js.es6 delete mode 100644 app/assets/javascripts/vue_pipelines_index/pipeline_actions.vue.js.es6 create mode 100644 app/assets/javascripts/vue_pipelines_index/pipeline_head.js.es6 delete mode 100644 app/assets/javascripts/vue_pipelines_index/pipeline_head.vue.js.es6 create mode 100644 app/assets/javascripts/vue_pipelines_index/pipeline_url.js.es6 delete mode 100644 app/assets/javascripts/vue_pipelines_index/pipeline_url.vue.js.es6 create mode 100644 app/assets/javascripts/vue_pipelines_index/pipelines.js.es6 delete mode 100644 app/assets/javascripts/vue_pipelines_index/pipelines.vue.js.es6 create mode 100644 app/assets/javascripts/vue_pipelines_index/running.js.es6 delete mode 100644 app/assets/javascripts/vue_pipelines_index/running.vue.js.es6 create mode 100644 app/assets/javascripts/vue_pipelines_index/running_icon.js.es6 delete mode 100644 app/assets/javascripts/vue_pipelines_index/running_icon.vue.js.es6 create mode 100644 app/assets/javascripts/vue_pipelines_index/stages.js.es6 delete mode 100644 app/assets/javascripts/vue_pipelines_index/stages.vue.js.es6 delete mode 100644 app/assets/javascripts/vue_pipelines_index/vue_gl_pagination.vue.js.es6 (limited to 'app/assets') diff --git a/app/assets/javascripts/vue_pipelines_index/branch_commit.js.es6 b/app/assets/javascripts/vue_pipelines_index/branch_commit.js.es6 new file mode 100644 index 00000000000..ee8b1234697 --- /dev/null +++ b/app/assets/javascripts/vue_pipelines_index/branch_commit.js.es6 @@ -0,0 +1,63 @@ +/* global Vue, gl */ +/* eslint-disable no-param-reassign */ + +((gl) => { + gl.VueBranchCommit = Vue.extend({ + props: ['pipeline', 'shortsha'], + methods: { + commiturl(sha) { + return `./commit/${sha}`; + }, + }, + template: ` + +
      + +
      + + master +
      + + + +
      + + {{shortsha(pipeline)}} + +

      + + + + + + + fix broken repo 500 errors in UI and added relevant specs + +

      + + `, + }); +})(window.gl || (window.gl = {})); diff --git a/app/assets/javascripts/vue_pipelines_index/branch_commit.vue.js.es6 b/app/assets/javascripts/vue_pipelines_index/branch_commit.vue.js.es6 deleted file mode 100644 index ee8b1234697..00000000000 --- a/app/assets/javascripts/vue_pipelines_index/branch_commit.vue.js.es6 +++ /dev/null @@ -1,63 +0,0 @@ -/* global Vue, gl */ -/* eslint-disable no-param-reassign */ - -((gl) => { - gl.VueBranchCommit = Vue.extend({ - props: ['pipeline', 'shortsha'], - methods: { - commiturl(sha) { - return `./commit/${sha}`; - }, - }, - template: ` - -
      - -
      - - master -
      - - - -
      - - {{shortsha(pipeline)}} - -

      - - - - - - - fix broken repo 500 errors in UI and added relevant specs - -

      - - `, - }); -})(window.gl || (window.gl = {})); diff --git a/app/assets/javascripts/vue_pipelines_index/gl_pagination.js.es6 b/app/assets/javascripts/vue_pipelines_index/gl_pagination.js.es6 new file mode 100644 index 00000000000..84d908f8e52 --- /dev/null +++ b/app/assets/javascripts/vue_pipelines_index/gl_pagination.js.es6 @@ -0,0 +1,64 @@ +/* global Vue, gl */ +/* eslint-disable no-param-reassign */ + +((gl) => { + gl.VueGlPagination = Vue.extend({ + props: [ + 'changepage', + 'pages', + 'count', + 'pagenum', + ], + methods: { + pagenumberstatus(n) { + if (n - 1 === +this.pagenum) return 'active'; + return ''; + }, + }, + computed: { + last() { + return Math.ceil(+this.count / 5); + }, + lastpage() { + return `pipelines?p=${this.last}`; + }, + upcount() { + return +this.last + 1; + }, + prev() { + if (this.pagenum === 1) return 1; + return this.pagenum - 1; + }, + next() { + if (this.pagenum === this.last) return `pipelines?p=${this.pagenum}`; + return `pipelines?p=${this.pagenum + 1}`; + }, + }, + template: ` +
      + +
      + `, + }); +})(window.gl || (window.gl = {})); diff --git a/app/assets/javascripts/vue_pipelines_index/pipeline_actions.js.es6 b/app/assets/javascripts/vue_pipelines_index/pipeline_actions.js.es6 new file mode 100644 index 00000000000..a6ff2f10ccf --- /dev/null +++ b/app/assets/javascripts/vue_pipelines_index/pipeline_actions.js.es6 @@ -0,0 +1,78 @@ +/* global Vue, gl */ +/* eslint-disable no-param-reassign */ + +((gl) => { + gl.VuePipelineActions = Vue.extend({ + // props: ['builds'], + template: ` + + + + `, + }); +})(window.gl || (window.gl = {})); diff --git a/app/assets/javascripts/vue_pipelines_index/pipeline_actions.vue.js.es6 b/app/assets/javascripts/vue_pipelines_index/pipeline_actions.vue.js.es6 deleted file mode 100644 index a6ff2f10ccf..00000000000 --- a/app/assets/javascripts/vue_pipelines_index/pipeline_actions.vue.js.es6 +++ /dev/null @@ -1,78 +0,0 @@ -/* global Vue, gl */ -/* eslint-disable no-param-reassign */ - -((gl) => { - gl.VuePipelineActions = Vue.extend({ - // props: ['builds'], - template: ` - - - - `, - }); -})(window.gl || (window.gl = {})); diff --git a/app/assets/javascripts/vue_pipelines_index/pipeline_head.js.es6 b/app/assets/javascripts/vue_pipelines_index/pipeline_head.js.es6 new file mode 100644 index 00000000000..2ead571aa9f --- /dev/null +++ b/app/assets/javascripts/vue_pipelines_index/pipeline_head.js.es6 @@ -0,0 +1,26 @@ +/* global Vue, gl */ +/* eslint-disable no-param-reassign */ + +((gl) => { + gl.VuePipelineHead = Vue.extend({ + components: { + 'vue-running-icon': gl.VueRunningIcon, + }, + props: [ + 'pipeline', + 'pipelineurl', + ], + template: ` + + + Status + Pipeline + Commit + Stages + + + + + `, + }); +})(window.gl || (window.gl = {})); diff --git a/app/assets/javascripts/vue_pipelines_index/pipeline_head.vue.js.es6 b/app/assets/javascripts/vue_pipelines_index/pipeline_head.vue.js.es6 deleted file mode 100644 index 2ead571aa9f..00000000000 --- a/app/assets/javascripts/vue_pipelines_index/pipeline_head.vue.js.es6 +++ /dev/null @@ -1,26 +0,0 @@ -/* global Vue, gl */ -/* eslint-disable no-param-reassign */ - -((gl) => { - gl.VuePipelineHead = Vue.extend({ - components: { - 'vue-running-icon': gl.VueRunningIcon, - }, - props: [ - 'pipeline', - 'pipelineurl', - ], - template: ` - - - Status - Pipeline - Commit - Stages - - - - - `, - }); -})(window.gl || (window.gl = {})); diff --git a/app/assets/javascripts/vue_pipelines_index/pipeline_url.js.es6 b/app/assets/javascripts/vue_pipelines_index/pipeline_url.js.es6 new file mode 100644 index 00000000000..148fe58d9ce --- /dev/null +++ b/app/assets/javascripts/vue_pipelines_index/pipeline_url.js.es6 @@ -0,0 +1,23 @@ +/* global Vue, gl */ +/* eslint-disable no-param-reassign */ + +((gl) => { + gl.VuePipelineUrl = Vue.extend({ + components: { + 'vue-running-icon': gl.VueRunningIcon, + }, + props: [ + 'pipeline', + 'pipelineurl', + ], + template: ` + + + #{{pipeline.id}} + + by + {{pipeline.user}} + + `, + }); +})(window.gl || (window.gl = {})); diff --git a/app/assets/javascripts/vue_pipelines_index/pipeline_url.vue.js.es6 b/app/assets/javascripts/vue_pipelines_index/pipeline_url.vue.js.es6 deleted file mode 100644 index 148fe58d9ce..00000000000 --- a/app/assets/javascripts/vue_pipelines_index/pipeline_url.vue.js.es6 +++ /dev/null @@ -1,23 +0,0 @@ -/* global Vue, gl */ -/* eslint-disable no-param-reassign */ - -((gl) => { - gl.VuePipelineUrl = Vue.extend({ - components: { - 'vue-running-icon': gl.VueRunningIcon, - }, - props: [ - 'pipeline', - 'pipelineurl', - ], - template: ` - - - #{{pipeline.id}} - - by - {{pipeline.user}} - - `, - }); -})(window.gl || (window.gl = {})); diff --git a/app/assets/javascripts/vue_pipelines_index/pipelines.js.es6 b/app/assets/javascripts/vue_pipelines_index/pipelines.js.es6 new file mode 100644 index 00000000000..a1d472cc464 --- /dev/null +++ b/app/assets/javascripts/vue_pipelines_index/pipelines.js.es6 @@ -0,0 +1,89 @@ +/* global Vue, gl */ +/* eslint-disable no-param-reassign, no-bitwise*/ + +((gl) => { + gl.VuePipeLines = Vue.extend({ + components: { + 'vue-running-pipeline': gl.VueRunningPipeline, + 'vue-stages': gl.VueStages, + 'vue-pipeline-actions': gl.VuePipelineActions, + 'vue-branch-commit': gl.VueBranchCommit, + 'vue-pipeline-url': gl.VuePipelineUrl, + 'vue-pipeline-head': gl.VuePipelineHead, + 'vue-gl-pagination': gl.VueGlPagination, + }, + data() { + return { + pipelines: [], + currentPage: '', + intervalId: '', + pagenum: 1, + }; + }, + props: [ + 'scope', + 'store', + 'count', + ], + created() { + const url = window.location.toString(); + if (~url.indexOf('?')) this.pagenum = url.split('?')[1].split('=')[1]; + this.store.fetchDataLoop.call(this, Vue, this.pagenum); + }, + methods: { + shortsha(pipeline) { + return pipeline.sha.slice(0, 8); + }, + changepage(event, last) { + if (last) this.pagenum = +last; + if (!last) this.pagenum = +event.target.innerText; + // use p instead of page to avoid rails tyring to make an actual request + window.history.pushState({}, null, `?p=${this.pagenum}`); + clearInterval(this.intervalId); + this.store.fetchDataLoop.call(this, Vue, this.pagenum); + }, + pipelineurl(id) { + return `pipelines/${id}`; + }, + }, + template: ` +
      +
      + + + + + + + + + + + + + + +
      +
      + + +
      + `, + }); +})(window.gl || (window.gl = {})); diff --git a/app/assets/javascripts/vue_pipelines_index/pipelines.vue.js.es6 b/app/assets/javascripts/vue_pipelines_index/pipelines.vue.js.es6 deleted file mode 100644 index a1d472cc464..00000000000 --- a/app/assets/javascripts/vue_pipelines_index/pipelines.vue.js.es6 +++ /dev/null @@ -1,89 +0,0 @@ -/* global Vue, gl */ -/* eslint-disable no-param-reassign, no-bitwise*/ - -((gl) => { - gl.VuePipeLines = Vue.extend({ - components: { - 'vue-running-pipeline': gl.VueRunningPipeline, - 'vue-stages': gl.VueStages, - 'vue-pipeline-actions': gl.VuePipelineActions, - 'vue-branch-commit': gl.VueBranchCommit, - 'vue-pipeline-url': gl.VuePipelineUrl, - 'vue-pipeline-head': gl.VuePipelineHead, - 'vue-gl-pagination': gl.VueGlPagination, - }, - data() { - return { - pipelines: [], - currentPage: '', - intervalId: '', - pagenum: 1, - }; - }, - props: [ - 'scope', - 'store', - 'count', - ], - created() { - const url = window.location.toString(); - if (~url.indexOf('?')) this.pagenum = url.split('?')[1].split('=')[1]; - this.store.fetchDataLoop.call(this, Vue, this.pagenum); - }, - methods: { - shortsha(pipeline) { - return pipeline.sha.slice(0, 8); - }, - changepage(event, last) { - if (last) this.pagenum = +last; - if (!last) this.pagenum = +event.target.innerText; - // use p instead of page to avoid rails tyring to make an actual request - window.history.pushState({}, null, `?p=${this.pagenum}`); - clearInterval(this.intervalId); - this.store.fetchDataLoop.call(this, Vue, this.pagenum); - }, - pipelineurl(id) { - return `pipelines/${id}`; - }, - }, - template: ` -
      -
      - - - - - - - - - - - - - - -
      -
      - - -
      - `, - }); -})(window.gl || (window.gl = {})); diff --git a/app/assets/javascripts/vue_pipelines_index/running.js.es6 b/app/assets/javascripts/vue_pipelines_index/running.js.es6 new file mode 100644 index 00000000000..e363cb3c14e --- /dev/null +++ b/app/assets/javascripts/vue_pipelines_index/running.js.es6 @@ -0,0 +1,31 @@ +/* global Vue, gl */ +/* eslint-disable no-param-reassign */ + +((gl) => { + gl.VueRunningPipeline = Vue.extend({ + components: { + 'vue-running-icon': gl.VueRunningIcon, + }, + props: [ + 'pipeline', + 'pipelineurl', + ], + template: ` + + + + + + +  running + + + + `, + }); +})(window.gl || (window.gl = {})); diff --git a/app/assets/javascripts/vue_pipelines_index/running.vue.js.es6 b/app/assets/javascripts/vue_pipelines_index/running.vue.js.es6 deleted file mode 100644 index e363cb3c14e..00000000000 --- a/app/assets/javascripts/vue_pipelines_index/running.vue.js.es6 +++ /dev/null @@ -1,31 +0,0 @@ -/* global Vue, gl */ -/* eslint-disable no-param-reassign */ - -((gl) => { - gl.VueRunningPipeline = Vue.extend({ - components: { - 'vue-running-icon': gl.VueRunningIcon, - }, - props: [ - 'pipeline', - 'pipelineurl', - ], - template: ` - - - - - - -  running - - - - `, - }); -})(window.gl || (window.gl = {})); diff --git a/app/assets/javascripts/vue_pipelines_index/running_icon.js.es6 b/app/assets/javascripts/vue_pipelines_index/running_icon.js.es6 new file mode 100644 index 00000000000..c37f213525c --- /dev/null +++ b/app/assets/javascripts/vue_pipelines_index/running_icon.js.es6 @@ -0,0 +1,13 @@ +/* global Vue, gl */ +/* eslint-disable no-param-reassign */ + +((gl) => { + gl.VueRunningIcon = Vue.extend({ + template: ` + + + + + `, + }); +})(window.gl || (window.gl = {})); diff --git a/app/assets/javascripts/vue_pipelines_index/running_icon.vue.js.es6 b/app/assets/javascripts/vue_pipelines_index/running_icon.vue.js.es6 deleted file mode 100644 index c37f213525c..00000000000 --- a/app/assets/javascripts/vue_pipelines_index/running_icon.vue.js.es6 +++ /dev/null @@ -1,13 +0,0 @@ -/* global Vue, gl */ -/* eslint-disable no-param-reassign */ - -((gl) => { - gl.VueRunningIcon = Vue.extend({ - template: ` - - - - - `, - }); -})(window.gl || (window.gl = {})); diff --git a/app/assets/javascripts/vue_pipelines_index/stages.js.es6 b/app/assets/javascripts/vue_pipelines_index/stages.js.es6 new file mode 100644 index 00000000000..da8c9280486 --- /dev/null +++ b/app/assets/javascripts/vue_pipelines_index/stages.js.es6 @@ -0,0 +1,110 @@ +/* global Vue, gl */ +/* eslint-disable no-param-reassign */ + +((gl) => { + gl.VueStages = Vue.extend({ + template: ` + + + + + + + + + + + + `, + }); +})(window.gl || (window.gl = {})); diff --git a/app/assets/javascripts/vue_pipelines_index/stages.vue.js.es6 b/app/assets/javascripts/vue_pipelines_index/stages.vue.js.es6 deleted file mode 100644 index da8c9280486..00000000000 --- a/app/assets/javascripts/vue_pipelines_index/stages.vue.js.es6 +++ /dev/null @@ -1,110 +0,0 @@ -/* global Vue, gl */ -/* eslint-disable no-param-reassign */ - -((gl) => { - gl.VueStages = Vue.extend({ - template: ` - - - - - - - - - - - - `, - }); -})(window.gl || (window.gl = {})); diff --git a/app/assets/javascripts/vue_pipelines_index/vue_gl_pagination.vue.js.es6 b/app/assets/javascripts/vue_pipelines_index/vue_gl_pagination.vue.js.es6 deleted file mode 100644 index 84d908f8e52..00000000000 --- a/app/assets/javascripts/vue_pipelines_index/vue_gl_pagination.vue.js.es6 +++ /dev/null @@ -1,64 +0,0 @@ -/* global Vue, gl */ -/* eslint-disable no-param-reassign */ - -((gl) => { - gl.VueGlPagination = Vue.extend({ - props: [ - 'changepage', - 'pages', - 'count', - 'pagenum', - ], - methods: { - pagenumberstatus(n) { - if (n - 1 === +this.pagenum) return 'active'; - return ''; - }, - }, - computed: { - last() { - return Math.ceil(+this.count / 5); - }, - lastpage() { - return `pipelines?p=${this.last}`; - }, - upcount() { - return +this.last + 1; - }, - prev() { - if (this.pagenum === 1) return 1; - return this.pagenum - 1; - }, - next() { - if (this.pagenum === this.last) return `pipelines?p=${this.pagenum}`; - return `pipelines?p=${this.pagenum + 1}`; - }, - }, - template: ` -
      - -
      - `, - }); -})(window.gl || (window.gl = {})); -- cgit v1.2.1 From 35066c8558398e5d2dc096801b93e5c693e080fd Mon Sep 17 00:00:00 2001 From: Regis Date: Sat, 5 Nov 2016 16:36:33 -0600 Subject: making reusable status and status icons components --- app/assets/javascripts/svg_icons/index.js.es6 | 38 +++++++++++++++++ app/assets/javascripts/vue_icons/index.js.es6 | 49 ++++++++++++++++++++++ .../javascripts/vue_pipelines_index/index.js.es6 | 22 +++++----- .../vue_pipelines_index/pipelines.js.es6 | 13 +++--- .../javascripts/vue_pipelines_index/running.js.es6 | 31 -------------- .../vue_pipelines_index/running_icon.js.es6 | 13 ------ .../javascripts/vue_pipelines_index/store.js.es6 | 9 ++++ .../javascripts/vue_pipelines_status/failed.js.es6 | 24 +++++++++++ .../javascripts/vue_pipelines_status/index.js.es6 | 4 ++ .../vue_pipelines_status/pending.js.es6 | 24 +++++++++++ .../vue_pipelines_status/running.js.es6 | 24 +++++++++++ .../javascripts/vue_pipelines_status/status.js.es6 | 38 +++++++++++++++++ 12 files changed, 227 insertions(+), 62 deletions(-) create mode 100644 app/assets/javascripts/svg_icons/index.js.es6 create mode 100644 app/assets/javascripts/vue_icons/index.js.es6 delete mode 100644 app/assets/javascripts/vue_pipelines_index/running.js.es6 delete mode 100644 app/assets/javascripts/vue_pipelines_index/running_icon.js.es6 create mode 100644 app/assets/javascripts/vue_pipelines_status/failed.js.es6 create mode 100644 app/assets/javascripts/vue_pipelines_status/index.js.es6 create mode 100644 app/assets/javascripts/vue_pipelines_status/pending.js.es6 create mode 100644 app/assets/javascripts/vue_pipelines_status/running.js.es6 create mode 100644 app/assets/javascripts/vue_pipelines_status/status.js.es6 (limited to 'app/assets') diff --git a/app/assets/javascripts/svg_icons/index.js.es6 b/app/assets/javascripts/svg_icons/index.js.es6 new file mode 100644 index 00000000000..b84c5f85a01 --- /dev/null +++ b/app/assets/javascripts/svg_icons/index.js.es6 @@ -0,0 +1,38 @@ +//= require vue +/* global Vue, gl */ +/* eslint-disable no-param-reassign */ + +((gl) => { + gl.VueRunningIcon = Vue.extend({ + template: ` + + + + + + + `, + }); + + gl.VuePendingIcon = Vue.extend({ + template: ` + + + + + + + `, + }); + + gl.VueSuccessIcon = Vue.extend({ + template: ` + + + + + + + `, + }); +})(window.gl || (window.gl = {})); diff --git a/app/assets/javascripts/vue_icons/index.js.es6 b/app/assets/javascripts/vue_icons/index.js.es6 new file mode 100644 index 00000000000..413f9b45393 --- /dev/null +++ b/app/assets/javascripts/vue_icons/index.js.es6 @@ -0,0 +1,49 @@ +//= require vue +/* global Vue, gl */ +/* eslint-disable no-param-reassign */ + +((gl) => { + gl.VueRunningIcon = Vue.extend({ + template: ` + + + + + + + `, + }); + + gl.VuePendingIcon = Vue.extend({ + template: ` + + + + + + + `, + }); + + gl.VueSuccessIcon = Vue.extend({ + template: ` + + + + + + + `, + }); + + gl.VueFailedIcon = Vue.extend({ + template: ` + + + + + + + `, + }); +})(window.gl || (window.gl = {})); diff --git a/app/assets/javascripts/vue_pipelines_index/index.js.es6 b/app/assets/javascripts/vue_pipelines_index/index.js.es6 index ecdb3e397c2..0ba043ef612 100644 --- a/app/assets/javascripts/vue_pipelines_index/index.js.es6 +++ b/app/assets/javascripts/vue_pipelines_index/index.js.es6 @@ -1,21 +1,21 @@ /* global Vue, VueResource, gl */ +/* eslint-disable no-bitwise*/ -//= require vue //= require vue-resource //= require ./store.js.es6 -//= require ./pipeline_url.vue.js.es6 -//= require ./vue_gl_pagination.vue.js.es6 -//= require ./pipeline_head.vue.js.es6 -//= require ./running_icon.vue.js.es6 -//= require ./running.vue.js.es6 -//= require ./stages.vue.js.es6 -//= require ./pipeline_actions.vue.js.es6 -//= require ./branch_commit.vue.js.es6 -//= require ./pipelines.vue.js.es6 +//= require ./pipeline_url.js.es6 +//= require ./gl_pagination.js.es6 +//= require ./pipeline_head.js.es6 +//= require ./stages.js.es6 +//= require ./pipeline_actions.js.es6 +//= require ./branch_commit.js.es6 +//= require ./pipelines.js.es6 (() => { - if (~window.location.href.indexOf('scope')) return null; + const url = window.location.href; + if (~url.indexOf('scope')) return null; + const project = document.querySelector('.pipelines'); Vue.use(VueResource); diff --git a/app/assets/javascripts/vue_pipelines_index/pipelines.js.es6 b/app/assets/javascripts/vue_pipelines_index/pipelines.js.es6 index a1d472cc464..6cc516d025f 100644 --- a/app/assets/javascripts/vue_pipelines_index/pipelines.js.es6 +++ b/app/assets/javascripts/vue_pipelines_index/pipelines.js.es6 @@ -11,6 +11,7 @@ 'vue-pipeline-url': gl.VuePipelineUrl, 'vue-pipeline-head': gl.VuePipelineHead, 'vue-gl-pagination': gl.VueGlPagination, + 'vue-status-pipeline': gl.VueStatusPipeline, }, data() { return { @@ -53,13 +54,11 @@ - - - - + + { - gl.VueRunningPipeline = Vue.extend({ - components: { - 'vue-running-icon': gl.VueRunningIcon, - }, - props: [ - 'pipeline', - 'pipelineurl', - ], - template: ` - - - - - - -  running - - - - `, - }); -})(window.gl || (window.gl = {})); diff --git a/app/assets/javascripts/vue_pipelines_index/running_icon.js.es6 b/app/assets/javascripts/vue_pipelines_index/running_icon.js.es6 deleted file mode 100644 index c37f213525c..00000000000 --- a/app/assets/javascripts/vue_pipelines_index/running_icon.js.es6 +++ /dev/null @@ -1,13 +0,0 @@ -/* global Vue, gl */ -/* eslint-disable no-param-reassign */ - -((gl) => { - gl.VueRunningIcon = Vue.extend({ - template: ` - - - - - `, - }); -})(window.gl || (window.gl = {})); diff --git a/app/assets/javascripts/vue_pipelines_index/store.js.es6 b/app/assets/javascripts/vue_pipelines_index/store.js.es6 index 89982b11b31..b4bdc27ede3 100644 --- a/app/assets/javascripts/vue_pipelines_index/store.js.es6 +++ b/app/assets/javascripts/vue_pipelines_index/store.js.es6 @@ -23,5 +23,14 @@ goFetch(); }, 60000); } + + fetchSvg(type, icon) { + this.$http.get(`/shared/icons/${icon}`) + .then((response) => { + this[type] = JSON.parse(response.body); + }, () => new Flash( + 'Something went wrong on our end.' + )); + } }; })(window.gl || (window.gl = {})); diff --git a/app/assets/javascripts/vue_pipelines_status/failed.js.es6 b/app/assets/javascripts/vue_pipelines_status/failed.js.es6 new file mode 100644 index 00000000000..33050186fe5 --- /dev/null +++ b/app/assets/javascripts/vue_pipelines_status/failed.js.es6 @@ -0,0 +1,24 @@ +/* global Vue, gl */ +/* eslint-disable no-param-reassign */ + +((gl) => { + gl.VueFailedPipeline = Vue.extend({ + components: { + 'vue-failed-icon': gl.VuePendingIcon, + }, + props: [ + 'pipeline', + 'pipelineurl', + ], + template: ` + + + + +  failed + + + + `, + }); +})(window.gl || (window.gl = {})); diff --git a/app/assets/javascripts/vue_pipelines_status/index.js.es6 b/app/assets/javascripts/vue_pipelines_status/index.js.es6 new file mode 100644 index 00000000000..cea02b5d6af --- /dev/null +++ b/app/assets/javascripts/vue_pipelines_status/index.js.es6 @@ -0,0 +1,4 @@ +//= require ./pending.js.es6 +//= require ./failed.js.es6 +//= require ./running.js.es6 +//= require ./status.js.es6 diff --git a/app/assets/javascripts/vue_pipelines_status/pending.js.es6 b/app/assets/javascripts/vue_pipelines_status/pending.js.es6 new file mode 100644 index 00000000000..4c4a5ade09d --- /dev/null +++ b/app/assets/javascripts/vue_pipelines_status/pending.js.es6 @@ -0,0 +1,24 @@ +/* global Vue, gl */ +/* eslint-disable no-param-reassign */ + +((gl) => { + gl.VuePendingPipeline = Vue.extend({ + components: { + 'vue-pending-icon': gl.VuePendingIcon, + }, + props: [ + 'pipeline', + 'pipelineurl', + ], + template: ` + + + + +  pending + + + + `, + }); +})(window.gl || (window.gl = {})); \ No newline at end of file diff --git a/app/assets/javascripts/vue_pipelines_status/running.js.es6 b/app/assets/javascripts/vue_pipelines_status/running.js.es6 new file mode 100644 index 00000000000..af8480f4795 --- /dev/null +++ b/app/assets/javascripts/vue_pipelines_status/running.js.es6 @@ -0,0 +1,24 @@ +/* global Vue, gl */ +/* eslint-disable no-param-reassign */ + +((gl) => { + gl.VueRunningPipeline = Vue.extend({ + components: { + 'vue-running-icon': gl.VueRunningIcon, + }, + props: [ + 'pipeline', + 'pipelineurl', + ], + template: ` + + + + +  running + + + + `, + }); +})(window.gl || (window.gl = {})); diff --git a/app/assets/javascripts/vue_pipelines_status/status.js.es6 b/app/assets/javascripts/vue_pipelines_status/status.js.es6 new file mode 100644 index 00000000000..043468ea538 --- /dev/null +++ b/app/assets/javascripts/vue_pipelines_status/status.js.es6 @@ -0,0 +1,38 @@ +/* global Vue, gl */ +/* eslint-disable no-param-reassign */ + +((gl) => { + gl.VueStatusPipeline = Vue.extend({ + components: { + 'vue-running-pipeline': gl.VueRunningPipeline, + 'vue-pending-pipeline': gl.VuePendingPipeline, + 'vue-failed-pipeline': gl.VueFailedPipeline, + }, + props: [ + 'pipeline', + 'pipelineurl', + ], + template: ` + + + + + + + + + `, + }); +})(window.gl || (window.gl = {})); -- cgit v1.2.1 From 905f7391e76deb92f787f3701224214bd2b4663b Mon Sep 17 00:00:00 2001 From: Regis Date: Sat, 5 Nov 2016 16:43:21 -0600 Subject: status icon and status components dynamic by scope --- .../vue_pipelines_index/pipelines.js.es6 | 10 +++--- .../javascripts/vue_pipelines_status/failed.js.es6 | 8 ++--- .../vue_pipelines_status/pending.js.es6 | 8 ++--- .../vue_pipelines_status/running.js.es6 | 8 ++--- .../javascripts/vue_pipelines_status/status.js.es6 | 42 +++++++++++----------- 5 files changed, 38 insertions(+), 38 deletions(-) (limited to 'app/assets') diff --git a/app/assets/javascripts/vue_pipelines_index/pipelines.js.es6 b/app/assets/javascripts/vue_pipelines_index/pipelines.js.es6 index 6cc516d025f..30f8806fdf2 100644 --- a/app/assets/javascripts/vue_pipelines_index/pipelines.js.es6 +++ b/app/assets/javascripts/vue_pipelines_index/pipelines.js.es6 @@ -11,7 +11,7 @@ 'vue-pipeline-url': gl.VuePipelineUrl, 'vue-pipeline-head': gl.VuePipelineHead, 'vue-gl-pagination': gl.VueGlPagination, - 'vue-status-pipeline': gl.VueStatusPipeline, + 'vue-status-scope': gl.VueStatusScope, }, data() { return { @@ -54,11 +54,11 @@ - - + { - gl.VueFailedPipeline = Vue.extend({ + gl.VueFailedScope = Vue.extend({ components: { 'vue-failed-icon': gl.VuePendingIcon, }, props: [ - 'pipeline', - 'pipelineurl', + 'scope', + 'scopeurl', ], template: ` - +  failed diff --git a/app/assets/javascripts/vue_pipelines_status/pending.js.es6 b/app/assets/javascripts/vue_pipelines_status/pending.js.es6 index 4c4a5ade09d..1742e52a2bb 100644 --- a/app/assets/javascripts/vue_pipelines_status/pending.js.es6 +++ b/app/assets/javascripts/vue_pipelines_status/pending.js.es6 @@ -2,17 +2,17 @@ /* eslint-disable no-param-reassign */ ((gl) => { - gl.VuePendingPipeline = Vue.extend({ + gl.VuePendingScope = Vue.extend({ components: { 'vue-pending-icon': gl.VuePendingIcon, }, props: [ - 'pipeline', - 'pipelineurl', + 'scope', + 'scopeurl', ], template: ` - +  pending diff --git a/app/assets/javascripts/vue_pipelines_status/running.js.es6 b/app/assets/javascripts/vue_pipelines_status/running.js.es6 index af8480f4795..bc2b2b0b1e9 100644 --- a/app/assets/javascripts/vue_pipelines_status/running.js.es6 +++ b/app/assets/javascripts/vue_pipelines_status/running.js.es6 @@ -2,17 +2,17 @@ /* eslint-disable no-param-reassign */ ((gl) => { - gl.VueRunningPipeline = Vue.extend({ + gl.VueRunningScope = Vue.extend({ components: { 'vue-running-icon': gl.VueRunningIcon, }, props: [ - 'pipeline', - 'pipelineurl', + 'scope', + 'scopeurl', ], template: ` - +  running diff --git a/app/assets/javascripts/vue_pipelines_status/status.js.es6 b/app/assets/javascripts/vue_pipelines_status/status.js.es6 index 043468ea538..6695b600488 100644 --- a/app/assets/javascripts/vue_pipelines_status/status.js.es6 +++ b/app/assets/javascripts/vue_pipelines_status/status.js.es6 @@ -2,36 +2,36 @@ /* eslint-disable no-param-reassign */ ((gl) => { - gl.VueStatusPipeline = Vue.extend({ + gl.VueStatusScope = Vue.extend({ components: { - 'vue-running-pipeline': gl.VueRunningPipeline, - 'vue-pending-pipeline': gl.VuePendingPipeline, - 'vue-failed-pipeline': gl.VueFailedPipeline, + 'vue-running-scope': gl.VueRunningScope, + 'vue-pending-scope': gl.VuePendingScope, + 'vue-failed-scope': gl.VueFailedScope, }, props: [ - 'pipeline', - 'pipelineurl', + 'scope', + 'scopeurl', ], template: ` - - - + - - + - + `, }); -- cgit v1.2.1 From f140da6b55013c1170285be84cf1f53b23bfe67e Mon Sep 17 00:00:00 2001 From: Regis Date: Sat, 5 Nov 2016 16:50:18 -0600 Subject: remove files/folders --- app/assets/javascripts/svg_icons/index.js.es6 | 38 --------------------------- 1 file changed, 38 deletions(-) delete mode 100644 app/assets/javascripts/svg_icons/index.js.es6 (limited to 'app/assets') diff --git a/app/assets/javascripts/svg_icons/index.js.es6 b/app/assets/javascripts/svg_icons/index.js.es6 deleted file mode 100644 index b84c5f85a01..00000000000 --- a/app/assets/javascripts/svg_icons/index.js.es6 +++ /dev/null @@ -1,38 +0,0 @@ -//= require vue -/* global Vue, gl */ -/* eslint-disable no-param-reassign */ - -((gl) => { - gl.VueRunningIcon = Vue.extend({ - template: ` - - - - - - - `, - }); - - gl.VuePendingIcon = Vue.extend({ - template: ` - - - - - - - `, - }); - - gl.VueSuccessIcon = Vue.extend({ - template: ` - - - - - - - `, - }); -})(window.gl || (window.gl = {})); -- cgit v1.2.1 From 0c9a4c14209c16d14d856fdb3b5e88c917232c6c Mon Sep 17 00:00:00 2001 From: Regis Date: Sun, 6 Nov 2016 11:17:18 -0700 Subject: icon and status comps - pagination logic almost done --- .../javascripts/vue_pipeline_status/failed.js.es6 | 24 ++++++++++++++ .../javascripts/vue_pipeline_status/pending.js.es6 | 24 ++++++++++++++ .../javascripts/vue_pipeline_status/running.js.es6 | 24 ++++++++++++++ .../javascripts/vue_pipeline_status/status.js.es6 | 38 ++++++++++++++++++++++ .../vue_pipelines_index/gl_pagination.js.es6 | 24 +++++++------- .../vue_pipelines_index/pipelines.js.es6 | 10 +++--- 6 files changed, 129 insertions(+), 15 deletions(-) create mode 100644 app/assets/javascripts/vue_pipeline_status/failed.js.es6 create mode 100644 app/assets/javascripts/vue_pipeline_status/pending.js.es6 create mode 100644 app/assets/javascripts/vue_pipeline_status/running.js.es6 create mode 100644 app/assets/javascripts/vue_pipeline_status/status.js.es6 (limited to 'app/assets') diff --git a/app/assets/javascripts/vue_pipeline_status/failed.js.es6 b/app/assets/javascripts/vue_pipeline_status/failed.js.es6 new file mode 100644 index 00000000000..33050186fe5 --- /dev/null +++ b/app/assets/javascripts/vue_pipeline_status/failed.js.es6 @@ -0,0 +1,24 @@ +/* global Vue, gl */ +/* eslint-disable no-param-reassign */ + +((gl) => { + gl.VueFailedPipeline = Vue.extend({ + components: { + 'vue-failed-icon': gl.VuePendingIcon, + }, + props: [ + 'pipeline', + 'pipelineurl', + ], + template: ` + + + + +  failed + + + + `, + }); +})(window.gl || (window.gl = {})); diff --git a/app/assets/javascripts/vue_pipeline_status/pending.js.es6 b/app/assets/javascripts/vue_pipeline_status/pending.js.es6 new file mode 100644 index 00000000000..bd2a1d0a496 --- /dev/null +++ b/app/assets/javascripts/vue_pipeline_status/pending.js.es6 @@ -0,0 +1,24 @@ +/* global Vue, gl */ +/* eslint-disable no-param-reassign */ + +((gl) => { + gl.VuePendingPipeline = Vue.extend({ + components: { + 'vue-pending-icon': gl.VuePendingIcon, + }, + props: [ + 'pipeline', + 'pipelineurl', + ], + template: ` + + + + +  pending + + + + `, + }); +})(window.gl || (window.gl = {})); diff --git a/app/assets/javascripts/vue_pipeline_status/running.js.es6 b/app/assets/javascripts/vue_pipeline_status/running.js.es6 new file mode 100644 index 00000000000..af8480f4795 --- /dev/null +++ b/app/assets/javascripts/vue_pipeline_status/running.js.es6 @@ -0,0 +1,24 @@ +/* global Vue, gl */ +/* eslint-disable no-param-reassign */ + +((gl) => { + gl.VueRunningPipeline = Vue.extend({ + components: { + 'vue-running-icon': gl.VueRunningIcon, + }, + props: [ + 'pipeline', + 'pipelineurl', + ], + template: ` + + + + +  running + + + + `, + }); +})(window.gl || (window.gl = {})); diff --git a/app/assets/javascripts/vue_pipeline_status/status.js.es6 b/app/assets/javascripts/vue_pipeline_status/status.js.es6 new file mode 100644 index 00000000000..043468ea538 --- /dev/null +++ b/app/assets/javascripts/vue_pipeline_status/status.js.es6 @@ -0,0 +1,38 @@ +/* global Vue, gl */ +/* eslint-disable no-param-reassign */ + +((gl) => { + gl.VueStatusPipeline = Vue.extend({ + components: { + 'vue-running-pipeline': gl.VueRunningPipeline, + 'vue-pending-pipeline': gl.VuePendingPipeline, + 'vue-failed-pipeline': gl.VueFailedPipeline, + }, + props: [ + 'pipeline', + 'pipelineurl', + ], + template: ` + + + + + + + + + `, + }); +})(window.gl || (window.gl = {})); diff --git a/app/assets/javascripts/vue_pipelines_index/gl_pagination.js.es6 b/app/assets/javascripts/vue_pipelines_index/gl_pagination.js.es6 index 84d908f8e52..d4b31649f9b 100644 --- a/app/assets/javascripts/vue_pipelines_index/gl_pagination.js.es6 +++ b/app/assets/javascripts/vue_pipelines_index/gl_pagination.js.es6 @@ -14,6 +14,10 @@ if (n - 1 === +this.pagenum) return 'active'; return ''; }, + prevstatus() { + if (+this.pagenum > 1) return ''; + return 'prev disabled'; + }, }, computed: { last() { @@ -29,33 +33,31 @@ if (this.pagenum === 1) return 1; return this.pagenum - 1; }, - next() { - if (this.pagenum === this.last) return `pipelines?p=${this.pagenum}`; - return `pipelines?p=${this.pagenum + 1}`; - }, }, template: `
      diff --git a/app/assets/javascripts/vue_pipelines_index/pipelines.js.es6 b/app/assets/javascripts/vue_pipelines_index/pipelines.js.es6 index 30f8806fdf2..b5c451ab221 100644 --- a/app/assets/javascripts/vue_pipelines_index/pipelines.js.es6 +++ b/app/assets/javascripts/vue_pipelines_index/pipelines.js.es6 @@ -35,10 +35,12 @@ shortsha(pipeline) { return pipeline.sha.slice(0, 8); }, - changepage(event, last) { - if (last) this.pagenum = +last; - if (!last) this.pagenum = +event.target.innerText; - // use p instead of page to avoid rails tyring to make an actual request + changepage(event, page = {}) { + if (page) this.pagenum = +event.target.innerText; + if (page.last) this.pagenum = +page.last; + if (page.where) this.pagenum = +page.next; + + // use p instead of page to avoid making an actual request window.history.pushState({}, null, `?p=${this.pagenum}`); clearInterval(this.intervalId); this.store.fetchDataLoop.call(this, Vue, this.pagenum); -- cgit v1.2.1 From 91a22eb6c537bea870bd14db81b36e6b19044b62 Mon Sep 17 00:00:00 2001 From: Regis Date: Sun, 6 Nov 2016 11:23:21 -0700 Subject: remove extra folder --- .../javascripts/vue_pipeline_status/failed.js.es6 | 24 -------------- .../javascripts/vue_pipeline_status/pending.js.es6 | 24 -------------- .../javascripts/vue_pipeline_status/running.js.es6 | 24 -------------- .../javascripts/vue_pipeline_status/status.js.es6 | 38 ---------------------- 4 files changed, 110 deletions(-) delete mode 100644 app/assets/javascripts/vue_pipeline_status/failed.js.es6 delete mode 100644 app/assets/javascripts/vue_pipeline_status/pending.js.es6 delete mode 100644 app/assets/javascripts/vue_pipeline_status/running.js.es6 delete mode 100644 app/assets/javascripts/vue_pipeline_status/status.js.es6 (limited to 'app/assets') diff --git a/app/assets/javascripts/vue_pipeline_status/failed.js.es6 b/app/assets/javascripts/vue_pipeline_status/failed.js.es6 deleted file mode 100644 index 33050186fe5..00000000000 --- a/app/assets/javascripts/vue_pipeline_status/failed.js.es6 +++ /dev/null @@ -1,24 +0,0 @@ -/* global Vue, gl */ -/* eslint-disable no-param-reassign */ - -((gl) => { - gl.VueFailedPipeline = Vue.extend({ - components: { - 'vue-failed-icon': gl.VuePendingIcon, - }, - props: [ - 'pipeline', - 'pipelineurl', - ], - template: ` - - - - -  failed - - - - `, - }); -})(window.gl || (window.gl = {})); diff --git a/app/assets/javascripts/vue_pipeline_status/pending.js.es6 b/app/assets/javascripts/vue_pipeline_status/pending.js.es6 deleted file mode 100644 index bd2a1d0a496..00000000000 --- a/app/assets/javascripts/vue_pipeline_status/pending.js.es6 +++ /dev/null @@ -1,24 +0,0 @@ -/* global Vue, gl */ -/* eslint-disable no-param-reassign */ - -((gl) => { - gl.VuePendingPipeline = Vue.extend({ - components: { - 'vue-pending-icon': gl.VuePendingIcon, - }, - props: [ - 'pipeline', - 'pipelineurl', - ], - template: ` - - - - -  pending - - - - `, - }); -})(window.gl || (window.gl = {})); diff --git a/app/assets/javascripts/vue_pipeline_status/running.js.es6 b/app/assets/javascripts/vue_pipeline_status/running.js.es6 deleted file mode 100644 index af8480f4795..00000000000 --- a/app/assets/javascripts/vue_pipeline_status/running.js.es6 +++ /dev/null @@ -1,24 +0,0 @@ -/* global Vue, gl */ -/* eslint-disable no-param-reassign */ - -((gl) => { - gl.VueRunningPipeline = Vue.extend({ - components: { - 'vue-running-icon': gl.VueRunningIcon, - }, - props: [ - 'pipeline', - 'pipelineurl', - ], - template: ` - - - - -  running - - - - `, - }); -})(window.gl || (window.gl = {})); diff --git a/app/assets/javascripts/vue_pipeline_status/status.js.es6 b/app/assets/javascripts/vue_pipeline_status/status.js.es6 deleted file mode 100644 index 043468ea538..00000000000 --- a/app/assets/javascripts/vue_pipeline_status/status.js.es6 +++ /dev/null @@ -1,38 +0,0 @@ -/* global Vue, gl */ -/* eslint-disable no-param-reassign */ - -((gl) => { - gl.VueStatusPipeline = Vue.extend({ - components: { - 'vue-running-pipeline': gl.VueRunningPipeline, - 'vue-pending-pipeline': gl.VuePendingPipeline, - 'vue-failed-pipeline': gl.VueFailedPipeline, - }, - props: [ - 'pipeline', - 'pipelineurl', - ], - template: ` - - - - - - - - - `, - }); -})(window.gl || (window.gl = {})); -- cgit v1.2.1 From fd10ff30bbd4b24889fc0c79fbe35af95f9b5666 Mon Sep 17 00:00:00 2001 From: Regis Date: Sun, 6 Nov 2016 11:27:27 -0700 Subject: extract pagination into own folder and precompile in application.rb --- app/assets/javascripts/vue_pagination/index.js.es6 | 66 ++++++++++++++++++++++ .../vue_pipelines_index/gl_pagination.js.es6 | 66 ---------------------- .../javascripts/vue_pipelines_index/index.js.es6 | 1 - 3 files changed, 66 insertions(+), 67 deletions(-) create mode 100644 app/assets/javascripts/vue_pagination/index.js.es6 delete mode 100644 app/assets/javascripts/vue_pipelines_index/gl_pagination.js.es6 (limited to 'app/assets') diff --git a/app/assets/javascripts/vue_pagination/index.js.es6 b/app/assets/javascripts/vue_pagination/index.js.es6 new file mode 100644 index 00000000000..d4b31649f9b --- /dev/null +++ b/app/assets/javascripts/vue_pagination/index.js.es6 @@ -0,0 +1,66 @@ +/* global Vue, gl */ +/* eslint-disable no-param-reassign */ + +((gl) => { + gl.VueGlPagination = Vue.extend({ + props: [ + 'changepage', + 'pages', + 'count', + 'pagenum', + ], + methods: { + pagenumberstatus(n) { + if (n - 1 === +this.pagenum) return 'active'; + return ''; + }, + prevstatus() { + if (+this.pagenum > 1) return ''; + return 'prev disabled'; + }, + }, + computed: { + last() { + return Math.ceil(+this.count / 5); + }, + lastpage() { + return `pipelines?p=${this.last}`; + }, + upcount() { + return +this.last + 1; + }, + prev() { + if (this.pagenum === 1) return 1; + return this.pagenum - 1; + }, + }, + template: ` +
      +
        +
      • + Prev +
      • +
      • + {{(n - 1)}} +
      • + +
      • + +
      • + +
      • + Last » +
      • +
      +
      + `, + }); +})(window.gl || (window.gl = {})); diff --git a/app/assets/javascripts/vue_pipelines_index/gl_pagination.js.es6 b/app/assets/javascripts/vue_pipelines_index/gl_pagination.js.es6 deleted file mode 100644 index d4b31649f9b..00000000000 --- a/app/assets/javascripts/vue_pipelines_index/gl_pagination.js.es6 +++ /dev/null @@ -1,66 +0,0 @@ -/* global Vue, gl */ -/* eslint-disable no-param-reassign */ - -((gl) => { - gl.VueGlPagination = Vue.extend({ - props: [ - 'changepage', - 'pages', - 'count', - 'pagenum', - ], - methods: { - pagenumberstatus(n) { - if (n - 1 === +this.pagenum) return 'active'; - return ''; - }, - prevstatus() { - if (+this.pagenum > 1) return ''; - return 'prev disabled'; - }, - }, - computed: { - last() { - return Math.ceil(+this.count / 5); - }, - lastpage() { - return `pipelines?p=${this.last}`; - }, - upcount() { - return +this.last + 1; - }, - prev() { - if (this.pagenum === 1) return 1; - return this.pagenum - 1; - }, - }, - template: ` -
      -
        -
      • - Prev -
      • -
      • - {{(n - 1)}} -
      • - -
      • - -
      • - -
      • - Last » -
      • -
      -
      - `, - }); -})(window.gl || (window.gl = {})); diff --git a/app/assets/javascripts/vue_pipelines_index/index.js.es6 b/app/assets/javascripts/vue_pipelines_index/index.js.es6 index 0ba043ef612..f7657879ac4 100644 --- a/app/assets/javascripts/vue_pipelines_index/index.js.es6 +++ b/app/assets/javascripts/vue_pipelines_index/index.js.es6 @@ -5,7 +5,6 @@ //= require ./store.js.es6 //= require ./pipeline_url.js.es6 -//= require ./gl_pagination.js.es6 //= require ./pipeline_head.js.es6 //= require ./stages.js.es6 //= require ./pipeline_actions.js.es6 -- cgit v1.2.1 From be146a4f0cfa26995748e6c086139cfcacfa613b Mon Sep 17 00:00:00 2001 From: Regis Date: Sun, 6 Nov 2016 13:35:29 -0700 Subject: remove svg api call - more progress on pagination --- app/assets/javascripts/vue_pagination/index.js.es6 | 45 +++++++++++++++------- .../javascripts/vue_pipelines_index/index.js.es6 | 2 +- .../vue_pipelines_index/pipelines.js.es6 | 4 +- .../javascripts/vue_pipelines_index/store.js.es6 | 9 ----- 4 files changed, 35 insertions(+), 25 deletions(-) (limited to 'app/assets') diff --git a/app/assets/javascripts/vue_pagination/index.js.es6 b/app/assets/javascripts/vue_pagination/index.js.es6 index d4b31649f9b..2665b2bd2c5 100644 --- a/app/assets/javascripts/vue_pagination/index.js.es6 +++ b/app/assets/javascripts/vue_pagination/index.js.es6 @@ -3,14 +3,19 @@ ((gl) => { gl.VueGlPagination = Vue.extend({ + data() { + return { + nslice: +this.pagenum, + }; + }, props: [ 'changepage', - 'pages', 'count', 'pagenum', ], methods: { pagenumberstatus(n) { + console.log(n, this.nslice); if (n - 1 === +this.pagenum) return 'active'; return ''; }, @@ -20,35 +25,46 @@ }, }, computed: { + paginationsection() { + if (this.last < 6 && this.pagenum < 6) { + const pageArray = [...Array(6).keys()]; + pageArray.shift(); + return pageArray.slice(0, this.upcount); + } + const section = [...Array(this.upcount).keys()]; + section.shift(); + this.nslice = +this.pagenum; + return section.slice(+this.pagenum, +this.pagenum + 5); + }, last() { return Math.ceil(+this.count / 5); }, - lastpage() { - return `pipelines?p=${this.last}`; - }, upcount() { return +this.last + 1; }, - prev() { - if (this.pagenum === 1) return 1; - return this.pagenum - 1; + endspread() { + if (+this.pagenum < this.last && +this.pagenum > 5) return true; + return false + }, + begspread() { + if (+this.pagenum > 5 && +this.pagenum < this.last) return true; + return false }, }, template: `
      -
        -
      • +
          +
        • Prev
        • -
        • +
        • {{(n - 1)}}
        • -
        • +
        • +
        • + +
        • - Last » + Last »
      diff --git a/app/assets/javascripts/vue_pipelines_index/index.js.es6 b/app/assets/javascripts/vue_pipelines_index/index.js.es6 index f7657879ac4..1aea0820208 100644 --- a/app/assets/javascripts/vue_pipelines_index/index.js.es6 +++ b/app/assets/javascripts/vue_pipelines_index/index.js.es6 @@ -34,7 +34,7 @@
diff --git a/app/assets/javascripts/vue_pipelines_index/pipelines.js.es6 b/app/assets/javascripts/vue_pipelines_index/pipelines.js.es6 index b5c451ab221..3ab336f0e6d 100644 --- a/app/assets/javascripts/vue_pipelines_index/pipelines.js.es6 +++ b/app/assets/javascripts/vue_pipelines_index/pipelines.js.es6 @@ -37,8 +37,8 @@ }, changepage(event, page = {}) { if (page) this.pagenum = +event.target.innerText; - if (page.last) this.pagenum = +page.last; - if (page.where) this.pagenum = +page.next; + if (page.where) this.pagenum = +page.where; + if (page.where) this.pagenum = +page.where; // use p instead of page to avoid making an actual request window.history.pushState({}, null, `?p=${this.pagenum}`); diff --git a/app/assets/javascripts/vue_pipelines_index/store.js.es6 b/app/assets/javascripts/vue_pipelines_index/store.js.es6 index b4bdc27ede3..89982b11b31 100644 --- a/app/assets/javascripts/vue_pipelines_index/store.js.es6 +++ b/app/assets/javascripts/vue_pipelines_index/store.js.es6 @@ -23,14 +23,5 @@ goFetch(); }, 60000); } - - fetchSvg(type, icon) { - this.$http.get(`/shared/icons/${icon}`) - .then((response) => { - this[type] = JSON.parse(response.body); - }, () => new Flash( - 'Something went wrong on our end.' - )); - } }; })(window.gl || (window.gl = {})); -- cgit v1.2.1 From 286b96f02501db38535f8a1e5f9b8a15bfafe5a6 Mon Sep 17 00:00:00 2001 From: Regis Date: Sun, 6 Nov 2016 13:56:08 -0700 Subject: a lot more progress on pagination :) --- app/assets/javascripts/vue_pagination/index.js.es6 | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) (limited to 'app/assets') diff --git a/app/assets/javascripts/vue_pagination/index.js.es6 b/app/assets/javascripts/vue_pagination/index.js.es6 index 2665b2bd2c5..a6a8dd93480 100644 --- a/app/assets/javascripts/vue_pagination/index.js.es6 +++ b/app/assets/javascripts/vue_pagination/index.js.es6 @@ -34,6 +34,7 @@ const section = [...Array(this.upcount).keys()]; section.shift(); this.nslice = +this.pagenum; + this.endcount = +this.pagenum + 5; return section.slice(+this.pagenum, +this.pagenum + 5); }, last() { @@ -44,17 +45,17 @@ }, endspread() { if (+this.pagenum < this.last && +this.pagenum > 5) return true; - return false + return false; }, begspread() { if (+this.pagenum > 5 && +this.pagenum < this.last) return true; - return false + return false; }, }, template: `
    -
  • +
  • Prev
  • @@ -67,15 +68,15 @@
  • -
  • -
  • +
  • Last »
-- cgit v1.2.1 From fa2f052ba78d4cdbc8d1800da25f5cc8041f655e Mon Sep 17 00:00:00 2001 From: Regis Date: Sun, 6 Nov 2016 14:00:36 -0700 Subject: formatting --- app/assets/javascripts/vue_pagination/index.js.es6 | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) (limited to 'app/assets') diff --git a/app/assets/javascripts/vue_pagination/index.js.es6 b/app/assets/javascripts/vue_pagination/index.js.es6 index a6a8dd93480..73232b45b81 100644 --- a/app/assets/javascripts/vue_pagination/index.js.es6 +++ b/app/assets/javascripts/vue_pagination/index.js.es6 @@ -15,7 +15,6 @@ ], methods: { pagenumberstatus(n) { - console.log(n, this.nslice); if (n - 1 === +this.pagenum) return 'active'; return ''; }, @@ -68,7 +67,10 @@
  • -
  • -
  • +
  • Last »
  • -- cgit v1.2.1 From 31af345b476f0995888dc1e75bcabc95def2aba2 Mon Sep 17 00:00:00 2001 From: Regis Date: Mon, 7 Nov 2016 14:16:57 -0700 Subject: fix prev button being misplaced --- app/assets/javascripts/vue_pagination/index.js.es6 | 31 +++++++++++----------- .../javascripts/vue_pipelines_index/index.js.es6 | 2 +- 2 files changed, 17 insertions(+), 16 deletions(-) (limited to 'app/assets') diff --git a/app/assets/javascripts/vue_pagination/index.js.es6 b/app/assets/javascripts/vue_pagination/index.js.es6 index 73232b45b81..88a2c5567a1 100644 --- a/app/assets/javascripts/vue_pagination/index.js.es6 +++ b/app/assets/javascripts/vue_pagination/index.js.es6 @@ -3,16 +3,16 @@ ((gl) => { gl.VueGlPagination = Vue.extend({ - data() { - return { - nslice: +this.pagenum, - }; - }, props: [ 'changepage', 'count', 'pagenum', ], + data() { + return { + nslice: +this.pagenum, + }; + }, methods: { pagenumberstatus(n) { if (n - 1 === +this.pagenum) return 'active'; @@ -24,17 +24,20 @@ }, }, computed: { + dynamicpage() { + const section = [...Array(this.upcount).keys()]; + section.shift(); + this.nslice = +this.pagenum; + this.endcount = +this.pagenum + 5; + return section.slice(+this.pagenum, +this.pagenum + 5); + }, paginationsection() { if (this.last < 6 && this.pagenum < 6) { const pageArray = [...Array(6).keys()]; pageArray.shift(); return pageArray.slice(0, this.upcount); } - const section = [...Array(this.upcount).keys()]; - section.shift(); - this.nslice = +this.pagenum; - this.endcount = +this.pagenum + 5; - return section.slice(+this.pagenum, +this.pagenum + 5); + return this.dynamicpage; }, last() { return Math.ceil(+this.count / 5); @@ -54,7 +57,7 @@ template: `
      -
    • +
    • Prev
    • @@ -71,16 +74,14 @@ class="next" v-if='(n === upcount || n === endcount) && pagenum !== last' > - - Next - + Next
    • Last »
    • diff --git a/app/assets/javascripts/vue_pipelines_index/index.js.es6 b/app/assets/javascripts/vue_pipelines_index/index.js.es6 index 1aea0820208..f7657879ac4 100644 --- a/app/assets/javascripts/vue_pipelines_index/index.js.es6 +++ b/app/assets/javascripts/vue_pipelines_index/index.js.es6 @@ -34,7 +34,7 @@
    -- cgit v1.2.1 From b0e6d0788625ae4a1e522c33496c06b4cdd53020 Mon Sep 17 00:00:00 2001 From: Regis Date: Mon, 7 Nov 2016 14:43:11 -0700 Subject: end dot logic complete --- app/assets/javascripts/vue_pagination/index.js.es6 | 26 +++++++++++++--------- .../javascripts/vue_pipelines_index/index.js.es6 | 2 +- 2 files changed, 16 insertions(+), 12 deletions(-) (limited to 'app/assets') diff --git a/app/assets/javascripts/vue_pagination/index.js.es6 b/app/assets/javascripts/vue_pagination/index.js.es6 index 88a2c5567a1..71031c4d76d 100644 --- a/app/assets/javascripts/vue_pagination/index.js.es6 +++ b/app/assets/javascripts/vue_pagination/index.js.es6 @@ -29,7 +29,12 @@ section.shift(); this.nslice = +this.pagenum; this.endcount = +this.pagenum + 5; - return section.slice(+this.pagenum, +this.pagenum + 5); + if (+this.pagenum + 5 <= this.last) { + return section.slice(+this.pagenum, +this.pagenum + 5); + } + if (+this.pagenum + 5 > this.last) { + return section.slice(this.last - 5, this.last); + } }, paginationsection() { if (this.last < 6 && this.pagenum < 6) { @@ -46,7 +51,7 @@ return +this.last + 1; }, endspread() { - if (+this.pagenum < this.last && +this.pagenum > 5) return true; + if (+this.pagenum < this.last) return true; return false; }, begspread() { @@ -57,17 +62,19 @@ template: `
      -
    • +
    • Prev
    • +
    • + +
    • {{(n - 1)}}
    • - -
    • +
    • Next
    • -
    • - -
    -- cgit v1.2.1 From e95a2b156b181145c98a790edd924e90cca3f3ee Mon Sep 17 00:00:00 2001 From: Regis Date: Mon, 7 Nov 2016 23:56:02 -0700 Subject: remove use of spread operator - attempt render function --- app/assets/javascripts/vue_pagination/index.js.es6 | 36 +++++++++++++++++++--- .../vue_pipelines_index/pipelines.js.es6 | 1 - 2 files changed, 32 insertions(+), 5 deletions(-) (limited to 'app/assets') diff --git a/app/assets/javascripts/vue_pagination/index.js.es6 b/app/assets/javascripts/vue_pagination/index.js.es6 index 71031c4d76d..7703901e113 100644 --- a/app/assets/javascripts/vue_pagination/index.js.es6 +++ b/app/assets/javascripts/vue_pagination/index.js.es6 @@ -11,6 +11,7 @@ data() { return { nslice: +this.pagenum, + endcount: this.last, }; }, methods: { @@ -20,12 +21,15 @@ }, prevstatus() { if (+this.pagenum > 1) return ''; - return 'prev disabled'; + return 'disabled'; + }, + createSection(n) { + return Array.from(Array(n)).map((e, i) => i); }, }, computed: { dynamicpage() { - const section = [...Array(this.upcount).keys()]; + const section = this.createSection(this.upcount); section.shift(); this.nslice = +this.pagenum; this.endcount = +this.pagenum + 5; @@ -38,7 +42,7 @@ }, paginationsection() { if (this.last < 6 && this.pagenum < 6) { - const pageArray = [...Array(6).keys()]; + const pageArray = this.createSection(6); pageArray.shift(); return pageArray.slice(0, this.upcount); } @@ -81,7 +85,7 @@ class="next" v-if='(n === upcount || n === endcount) && pagenum !== last' > - Next + Next
  • `, + // render(createElement) { + // return createElement('div', { + // class: { + // 'gl-pagination': true, + // }, + // }, [createElement('ul', { + // class: { + // pagination: true, + // clearfix: true, + // }, + // }, this.paginationsection.map((e, i) => { + // if (!i) return createElement('li', [createElement('span', { + // class: { + // prev: this.prevstatus, + // }, + // }, 'Prev')]); + // if (i) { + // return createElement('li', + // [createElement('span', i)] + // ); + // } + // })), + // ]); + // }, }); })(window.gl || (window.gl = {})); diff --git a/app/assets/javascripts/vue_pipelines_index/pipelines.js.es6 b/app/assets/javascripts/vue_pipelines_index/pipelines.js.es6 index 3ab336f0e6d..4ef9fca6474 100644 --- a/app/assets/javascripts/vue_pipelines_index/pipelines.js.es6 +++ b/app/assets/javascripts/vue_pipelines_index/pipelines.js.es6 @@ -40,7 +40,6 @@ if (page.where) this.pagenum = +page.where; if (page.where) this.pagenum = +page.where; - // use p instead of page to avoid making an actual request window.history.pushState({}, null, `?p=${this.pagenum}`); clearInterval(this.intervalId); this.store.fetchDataLoop.call(this, Vue, this.pagenum); -- cgit v1.2.1 From cdbbce17cb0f83895183d342fa27e0ee015f58bb Mon Sep 17 00:00:00 2001 From: Regis Date: Tue, 8 Nov 2016 12:23:29 -0700 Subject: cleanup --- app/assets/javascripts/vue_pagination/index.js.es6 | 115 ++++----------------- .../javascripts/vue_pipelines_index/index.js.es6 | 2 +- .../vue_pipelines_index/pipeline_head.js.es6 | 7 -- .../vue_pipelines_index/pipelines.js.es6 | 10 +- .../javascripts/vue_pipelines_index/store.js.es6 | 2 +- .../javascripts/vue_pipelines_status/failed.js.es6 | 2 +- 6 files changed, 27 insertions(+), 111 deletions(-) (limited to 'app/assets') diff --git a/app/assets/javascripts/vue_pagination/index.js.es6 b/app/assets/javascripts/vue_pagination/index.js.es6 index 7703901e113..dce1c86ffa2 100644 --- a/app/assets/javascripts/vue_pagination/index.js.es6 +++ b/app/assets/javascripts/vue_pagination/index.js.es6 @@ -8,117 +8,38 @@ 'count', 'pagenum', ], - data() { - return { - nslice: +this.pagenum, - endcount: this.last, - }; - }, methods: { pagenumberstatus(n) { if (n - 1 === +this.pagenum) return 'active'; return ''; }, - prevstatus() { - if (+this.pagenum > 1) return ''; - return 'disabled'; - }, - createSection(n) { - return Array.from(Array(n)).map((e, i) => i); - }, + createSection(n) { return Array.from(Array(n)).map((e, i) => i); }, }, computed: { - dynamicpage() { - const section = this.createSection(this.upcount); - section.shift(); - this.nslice = +this.pagenum; - this.endcount = +this.pagenum + 5; - if (+this.pagenum + 5 <= this.last) { - return section.slice(+this.pagenum, +this.pagenum + 5); - } - if (+this.pagenum + 5 > this.last) { - return section.slice(this.last - 5, this.last); - } - }, - paginationsection() { - if (this.last < 6 && this.pagenum < 6) { - const pageArray = this.createSection(6); - pageArray.shift(); - return pageArray.slice(0, this.upcount); - } - return this.dynamicpage; - }, - last() { - return Math.ceil(+this.count / 5); - }, - upcount() { - return +this.last + 1; - }, - endspread() { - if (+this.pagenum < this.last) return true; - return false; - }, - begspread() { - if (+this.pagenum > 5 && +this.pagenum < this.last) return true; - return false; + last() { return Math.ceil(+this.count / 5); }, + getItems() { + const items = []; + const pages = this.createSection(+this.last + 1); + pages.shift(); + + if (+this.pagenum !== 1) items.push({ text: 'Prev' }); + + pages.forEach(i => items.push({ text: i })); + + if (+this.pagenum < this.last) items.push({ text: 'Next' }); + if (+this.pagenum !== this.last) items.push({ text: 'Last »' }); + + return items; }, }, template: `
    -
      -
    • - Prev -
    • -
    • - -
    • -
    • - {{(n - 1)}} -
    • -
    • - -
    • - -
    • - Last » +
        +
      • + {{item.text}}
    `, - // render(createElement) { - // return createElement('div', { - // class: { - // 'gl-pagination': true, - // }, - // }, [createElement('ul', { - // class: { - // pagination: true, - // clearfix: true, - // }, - // }, this.paginationsection.map((e, i) => { - // if (!i) return createElement('li', [createElement('span', { - // class: { - // prev: this.prevstatus, - // }, - // }, 'Prev')]); - // if (i) { - // return createElement('li', - // [createElement('span', i)] - // ); - // } - // })), - // ]); - // }, }); })(window.gl || (window.gl = {})); diff --git a/app/assets/javascripts/vue_pipelines_index/index.js.es6 b/app/assets/javascripts/vue_pipelines_index/index.js.es6 index 1aea0820208..f7657879ac4 100644 --- a/app/assets/javascripts/vue_pipelines_index/index.js.es6 +++ b/app/assets/javascripts/vue_pipelines_index/index.js.es6 @@ -34,7 +34,7 @@ diff --git a/app/assets/javascripts/vue_pipelines_index/pipeline_head.js.es6 b/app/assets/javascripts/vue_pipelines_index/pipeline_head.js.es6 index 2ead571aa9f..510e54f3a6f 100644 --- a/app/assets/javascripts/vue_pipelines_index/pipeline_head.js.es6 +++ b/app/assets/javascripts/vue_pipelines_index/pipeline_head.js.es6 @@ -3,13 +3,6 @@ ((gl) => { gl.VuePipelineHead = Vue.extend({ - components: { - 'vue-running-icon': gl.VueRunningIcon, - }, - props: [ - 'pipeline', - 'pipelineurl', - ], template: ` diff --git a/app/assets/javascripts/vue_pipelines_index/pipelines.js.es6 b/app/assets/javascripts/vue_pipelines_index/pipelines.js.es6 index 4ef9fca6474..ecb07af9a32 100644 --- a/app/assets/javascripts/vue_pipelines_index/pipelines.js.es6 +++ b/app/assets/javascripts/vue_pipelines_index/pipelines.js.es6 @@ -35,10 +35,12 @@ shortsha(pipeline) { return pipeline.sha.slice(0, 8); }, - changepage(event, page = {}) { - if (page) this.pagenum = +event.target.innerText; - if (page.where) this.pagenum = +page.where; - if (page.where) this.pagenum = +page.where; + changepage(event, last) { + const text = event.target.innerText; + if (typeof +text === 'number') this.pagenum = +text; + if (text === 'Last »') this.pagenum = last; + if (text === 'Next') this.pagnum = +this.pagenum + 1; + if (text === 'Prev') this.pagenum = +this.pagenum - 1; window.history.pushState({}, null, `?p=${this.pagenum}`); clearInterval(this.intervalId); diff --git a/app/assets/javascripts/vue_pipelines_index/store.js.es6 b/app/assets/javascripts/vue_pipelines_index/store.js.es6 index 89982b11b31..d4b0c79f225 100644 --- a/app/assets/javascripts/vue_pipelines_index/store.js.es6 +++ b/app/assets/javascripts/vue_pipelines_index/store.js.es6 @@ -21,7 +21,7 @@ // eventually clearInterval(this.intervalId) this.intervalId = setInterval(() => { goFetch(); - }, 60000); + }, 3000); } }; })(window.gl || (window.gl = {})); diff --git a/app/assets/javascripts/vue_pipelines_status/failed.js.es6 b/app/assets/javascripts/vue_pipelines_status/failed.js.es6 index 92373e12c25..a877cfc688e 100644 --- a/app/assets/javascripts/vue_pipelines_status/failed.js.es6 +++ b/app/assets/javascripts/vue_pipelines_status/failed.js.es6 @@ -4,7 +4,7 @@ ((gl) => { gl.VueFailedScope = Vue.extend({ components: { - 'vue-failed-icon': gl.VuePendingIcon, + 'vue-failed-icon': gl.VueFailedIcon, }, props: [ 'scope', -- cgit v1.2.1 From 4dd82e1d49d5dc1958c2425d1d052645638c2274 Mon Sep 17 00:00:00 2001 From: Regis Date: Tue, 8 Nov 2016 12:31:41 -0700 Subject: fix changepage logic --- app/assets/javascripts/vue_pipelines_index/pipelines.js.es6 | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'app/assets') diff --git a/app/assets/javascripts/vue_pipelines_index/pipelines.js.es6 b/app/assets/javascripts/vue_pipelines_index/pipelines.js.es6 index ecb07af9a32..2c26b0a2bc7 100644 --- a/app/assets/javascripts/vue_pipelines_index/pipelines.js.es6 +++ b/app/assets/javascripts/vue_pipelines_index/pipelines.js.es6 @@ -37,9 +37,9 @@ }, changepage(event, last) { const text = event.target.innerText; - if (typeof +text === 'number') this.pagenum = +text; + if (typeof text === 'number') this.pagenum = +text; if (text === 'Last »') this.pagenum = last; - if (text === 'Next') this.pagnum = +this.pagenum + 1; + if (text === 'Next') this.pagenum = +this.pagenum + 1; if (text === 'Prev') this.pagenum = +this.pagenum - 1; window.history.pushState({}, null, `?p=${this.pagenum}`); -- cgit v1.2.1 From 39a8f1aaf4c05764045de5fcdacd52af2406c152 Mon Sep 17 00:00:00 2001 From: Regis Date: Tue, 8 Nov 2016 13:04:30 -0700 Subject: regex for number check --- app/assets/javascripts/vue_pagination/index.js.es6 | 17 +++++++++++------ .../javascripts/vue_pipelines_index/pipelines.js.es6 | 2 +- 2 files changed, 12 insertions(+), 7 deletions(-) (limited to 'app/assets') diff --git a/app/assets/javascripts/vue_pagination/index.js.es6 b/app/assets/javascripts/vue_pagination/index.js.es6 index dce1c86ffa2..8dabfef3b95 100644 --- a/app/assets/javascripts/vue_pagination/index.js.es6 +++ b/app/assets/javascripts/vue_pagination/index.js.es6 @@ -9,9 +9,14 @@ 'pagenum', ], methods: { - pagenumberstatus(n) { - if (n - 1 === +this.pagenum) return 'active'; - return ''; + pagestatus(n) { + if (n - 1 === +this.pagenum) return true; + return false; + }, + prevstatus(index) { + if (index > 0) return false; + if (+this.pagenum < 2) return true; + return false; }, createSection(n) { return Array.from(Array(n)).map((e, i) => i); }, }, @@ -22,7 +27,7 @@ const pages = this.createSection(+this.last + 1); pages.shift(); - if (+this.pagenum !== 1) items.push({ text: 'Prev' }); + items.push({ text: 'Prev', class: this.prevstatus() }); pages.forEach(i => items.push({ text: i })); @@ -34,8 +39,8 @@ }, template: `
    -
    + Date: Thu, 10 Nov 2016 21:18:33 -0700 Subject: conditional action buttons - spans for pipeline tags --- .../vue_pipelines_index/pipeline_actions.js.es6 | 14 ++++++++++++-- .../javascripts/vue_pipelines_index/pipeline_url.js.es6 | 16 ++++++++++++++++ 2 files changed, 28 insertions(+), 2 deletions(-) (limited to 'app/assets') diff --git a/app/assets/javascripts/vue_pipelines_index/pipeline_actions.js.es6 b/app/assets/javascripts/vue_pipelines_index/pipeline_actions.js.es6 index 0b469e8ffb6..583069aea2a 100644 --- a/app/assets/javascripts/vue_pipelines_index/pipeline_actions.js.es6 +++ b/app/assets/javascripts/vue_pipelines_index/pipeline_actions.js.es6 @@ -24,7 +24,12 @@
    - + diff --git a/app/assets/javascripts/vue_pipelines_index/pipeline_url.js.es6 b/app/assets/javascripts/vue_pipelines_index/pipeline_url.js.es6 index d0cbf99a344..9ebbe3ccf9e 100644 --- a/app/assets/javascripts/vue_pipelines_index/pipeline_url.js.es6 +++ b/app/assets/javascripts/vue_pipelines_index/pipeline_url.js.es6 @@ -22,6 +22,22 @@ by {{user}} + + latest + + + yaml invalid + `, }); -- cgit v1.2.1 From df1b15e327877066364271384975a8307d5f6c22 Mon Sep 17 00:00:00 2001 From: Regis Date: Thu, 10 Nov 2016 22:21:09 -0700 Subject: loading icon - rename component keys --- .../vue_pipelines_index/pipelines.js.es6 | 28 ++++++++++++++-------- .../javascripts/vue_pipelines_index/store.js.es6 | 2 +- 2 files changed, 19 insertions(+), 11 deletions(-) (limited to 'app/assets') diff --git a/app/assets/javascripts/vue_pipelines_index/pipelines.js.es6 b/app/assets/javascripts/vue_pipelines_index/pipelines.js.es6 index 7dcc319390e..421e4111187 100644 --- a/app/assets/javascripts/vue_pipelines_index/pipelines.js.es6 +++ b/app/assets/javascripts/vue_pipelines_index/pipelines.js.es6 @@ -4,15 +4,15 @@ ((gl) => { gl.VuePipeLines = Vue.extend({ components: { - 'running-pipeline': gl.VueRunningPipeline, - 'stages': gl.VueStages, - 'pipeline-actions': gl.VuePipelineActions, - 'branch-commit': gl.VueBranchCommit, - 'pipeline-url': gl.VuePipelineUrl, - 'pipeline-head': gl.VuePipelineHead, - 'gl-pagination': gl.VueGlPagination, - 'status-scope': gl.VueStatusScope, - 'time-ago': gl.VueTimeAgo, + runningPipeline: gl.VueRunningPipeline, + pipelineActions: gl.VuePipelineActions, + stages: gl.VueStages, + branchCommit: gl.VueBranchCommit, + pipelineUrl: gl.VuePipelineUrl, + pipelineHead: gl.VuePipelineHead, + glPagination: gl.VueGlPagination, + statusScope: gl.VueStatusScope, + timeAgo: gl.VueTimeAgo, }, data() { return { @@ -24,6 +24,7 @@ all: 0, running_or_pending: 0, }, + pageRequest: false, }; }, props: [ @@ -47,12 +48,16 @@ window.history.pushState({}, null, `?p=${this.pagenum}`); clearInterval(this.intervalId); + this.pageRequest = true; this.store.fetchDataLoop.call(this, Vue, this.pagenum, this.scope); }, }, template: `
    -
    +
    + +
    +
    @@ -67,6 +72,9 @@
    +
    + +
    { const res = JSON.parse(response.body); - debugger Vue.set(this, 'updatedAt', res.updated_at); Vue.set(this, 'pipelines', res.pipelines); Vue.set(this, 'count', res.count); + this.pageRequest = false; }, () => new Flash( 'Something went wrong on our end.' )); -- cgit v1.2.1 From 31e34715bf62993a42ca7636edf1408891b0595b Mon Sep 17 00:00:00 2001 From: Regis Date: Fri, 11 Nov 2016 12:05:07 -0700 Subject: scoped polyfill for now --- .../javascripts/vue_pipelines_index/index.js.es6 | 1 + .../vue_pipelines_index/object_assign.js.es6 | 30 ++++++++++++++++++++++ 2 files changed, 31 insertions(+) create mode 100644 app/assets/javascripts/vue_pipelines_index/object_assign.js.es6 (limited to 'app/assets') diff --git a/app/assets/javascripts/vue_pipelines_index/index.js.es6 b/app/assets/javascripts/vue_pipelines_index/index.js.es6 index 3a7842f305b..ab53b12d3d0 100644 --- a/app/assets/javascripts/vue_pipelines_index/index.js.es6 +++ b/app/assets/javascripts/vue_pipelines_index/index.js.es6 @@ -3,6 +3,7 @@ //= require vue-resource +//= require ./object_assign.js.es6 //= require ./store.js.es6 //= require ./pipeline_url.js.es6 //= require ./pipeline_head.js.es6 diff --git a/app/assets/javascripts/vue_pipelines_index/object_assign.js.es6 b/app/assets/javascripts/vue_pipelines_index/object_assign.js.es6 new file mode 100644 index 00000000000..05a5a7da1c3 --- /dev/null +++ b/app/assets/javascripts/vue_pipelines_index/object_assign.js.es6 @@ -0,0 +1,30 @@ +/* eslint-disable */ + +/* global Vue, gl */ +/* eslint-disable no-param-reassign */ +(() => { + if (typeof Object.assign != 'function') { + (function () { + Object.assign = function (target) { + 'use strict'; + // We must check against these specific cases. + if (target === undefined || target === null) { + throw new TypeError('Cannot convert undefined or null to object'); + } + + var output = Object(target); + for (var index = 1; index < arguments.length; index++) { + var source = arguments[index]; + if (source !== undefined && source !== null) { + for (var nextKey in source) { + if (source.hasOwnProperty(nextKey)) { + output[nextKey] = source[nextKey]; + } + } + } + } + return output; + }; + })(); + } +})(); -- cgit v1.2.1 From b64ee664a69eaa0474a8befeb2379e948eb647cb Mon Sep 17 00:00:00 2001 From: Regis Date: Fri, 11 Nov 2016 12:25:10 -0700 Subject: add stuck icon --- app/assets/javascripts/vue_pipelines_index/pipeline_url.js.es6 | 6 ++++++ 1 file changed, 6 insertions(+) (limited to 'app/assets') diff --git a/app/assets/javascripts/vue_pipelines_index/pipeline_url.js.es6 b/app/assets/javascripts/vue_pipelines_index/pipeline_url.js.es6 index 9ebbe3ccf9e..efeef974960 100644 --- a/app/assets/javascripts/vue_pipelines_index/pipeline_url.js.es6 +++ b/app/assets/javascripts/vue_pipelines_index/pipeline_url.js.es6 @@ -38,6 +38,12 @@ > yaml invalid + + stuck + `, }); -- cgit v1.2.1 From af4459e5314b8d7d054995e6cf244e91feacf78a Mon Sep 17 00:00:00 2001 From: Regis Date: Fri, 11 Nov 2016 12:35:57 -0700 Subject: update stage icons with created --- app/assets/javascripts/vue_icons/index.js.es6 | 9 +++++++++ .../javascripts/vue_pipelines_index/stage.js.es6 | 7 ++++++- .../vue_pipelines_status/created.js.es6 | 23 ++++++++++++++++++++++ 3 files changed, 38 insertions(+), 1 deletion(-) create mode 100644 app/assets/javascripts/vue_pipelines_status/created.js.es6 (limited to 'app/assets') diff --git a/app/assets/javascripts/vue_icons/index.js.es6 b/app/assets/javascripts/vue_icons/index.js.es6 index 413f9b45393..66b4a58a4c0 100644 --- a/app/assets/javascripts/vue_icons/index.js.es6 +++ b/app/assets/javascripts/vue_icons/index.js.es6 @@ -46,4 +46,13 @@ `, }); + + gl.VueCreatedIcon = Vue.extend({ + template: ` + + + + + `, + }); })(window.gl || (window.gl = {})); diff --git a/app/assets/javascripts/vue_pipelines_index/stage.js.es6 b/app/assets/javascripts/vue_pipelines_index/stage.js.es6 index f983226a4ce..8a77f213b7f 100644 --- a/app/assets/javascripts/vue_pipelines_index/stage.js.es6 +++ b/app/assets/javascripts/vue_pipelines_index/stage.js.es6 @@ -8,16 +8,20 @@ 'pending-icon': gl.VuePendingIcon, 'failed-icon': gl.VueFailedIcon, 'success-icon': gl.VueSuccessIcon, + 'created-icon': gl.VueCreatedIcon, }, props: ['stage'], computed: { buildStatus() { return `Build: ${this.stage.status}`; }, + tooltip() { + return `has-tooltip ci-status-icon-${this.stage.status}`; + }, }, template: ` @@ -25,6 +29,7 @@ + `, }); diff --git a/app/assets/javascripts/vue_pipelines_status/created.js.es6 b/app/assets/javascripts/vue_pipelines_status/created.js.es6 new file mode 100644 index 00000000000..b74566b7341 --- /dev/null +++ b/app/assets/javascripts/vue_pipelines_status/created.js.es6 @@ -0,0 +1,23 @@ +/* global Vue, gl */ +/* eslint-disable no-param-reassign */ + +((gl) => { + gl.VueCreatedScope = Vue.extend({ + components: { + 'vue-created-icon': gl.VueCreatedIcon, + }, + props: [ + 'pipeline', + ], + template: ` + + + + +  failed + + + + `, + }); +})(window.gl || (window.gl = {})); -- cgit v1.2.1 From e5af16a3e097a6e7ea79c3120b2cc95c64b769ac Mon Sep 17 00:00:00 2001 From: Regis Date: Fri, 11 Nov 2016 12:37:24 -0700 Subject: add created to pipeline scope status --- app/assets/javascripts/vue_pipelines_status/status.js.es6 | 6 ++++++ 1 file changed, 6 insertions(+) (limited to 'app/assets') diff --git a/app/assets/javascripts/vue_pipelines_status/status.js.es6 b/app/assets/javascripts/vue_pipelines_status/status.js.es6 index 3f8cb1164ec..394c6349b91 100644 --- a/app/assets/javascripts/vue_pipelines_status/status.js.es6 +++ b/app/assets/javascripts/vue_pipelines_status/status.js.es6 @@ -7,6 +7,7 @@ 'vue-running-scope': gl.VueRunningScope, 'vue-pending-scope': gl.VuePendingScope, 'vue-failed-scope': gl.VueFailedScope, + 'vue-created-scope': gl.VueCreatedScope, }, props: [ 'pipeline', @@ -28,6 +29,11 @@ :pipeline='pipeline' > + + `, }); -- cgit v1.2.1 From 35c8e533c05a68feacc52cf8b8e173ef6290c641 Mon Sep 17 00:00:00 2001 From: Regis Date: Fri, 11 Nov 2016 12:40:29 -0700 Subject: created component instead of failed --- app/assets/javascripts/vue_pipelines_status/status.js.es6 | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'app/assets') diff --git a/app/assets/javascripts/vue_pipelines_status/status.js.es6 b/app/assets/javascripts/vue_pipelines_status/status.js.es6 index 394c6349b91..0a722ba7ca5 100644 --- a/app/assets/javascripts/vue_pipelines_status/status.js.es6 +++ b/app/assets/javascripts/vue_pipelines_status/status.js.es6 @@ -29,11 +29,11 @@ :pipeline='pipeline' > - - + `, }); -- cgit v1.2.1 From 04a4520c2d389bae4358c9429aa22cf3a53ba9a2 Mon Sep 17 00:00:00 2001 From: Regis Date: Sat, 12 Nov 2016 01:57:23 -0700 Subject: fix cancel url - clearInterval on refresh and page close - fix branch url --- app/assets/javascripts/vue_pipelines_index/branch_commit.js.es6 | 2 +- app/assets/javascripts/vue_pipelines_index/pipeline_actions.js.es6 | 4 ++-- app/assets/javascripts/vue_pipelines_index/pipelines.js.es6 | 4 ++-- app/assets/javascripts/vue_pipelines_index/store.js.es6 | 6 +++++- 4 files changed, 10 insertions(+), 6 deletions(-) (limited to 'app/assets') diff --git a/app/assets/javascripts/vue_pipelines_index/branch_commit.js.es6 b/app/assets/javascripts/vue_pipelines_index/branch_commit.js.es6 index e1f404befa1..43bad6e36e7 100644 --- a/app/assets/javascripts/vue_pipelines_index/branch_commit.js.es6 +++ b/app/assets/javascripts/vue_pipelines_index/branch_commit.js.es6 @@ -20,7 +20,7 @@ {{pipeline.ref.name}} diff --git a/app/assets/javascripts/vue_pipelines_index/pipeline_actions.js.es6 b/app/assets/javascripts/vue_pipelines_index/pipeline_actions.js.es6 index 583069aea2a..c86b49c15fa 100644 --- a/app/assets/javascripts/vue_pipelines_index/pipeline_actions.js.es6 +++ b/app/assets/javascripts/vue_pipelines_index/pipeline_actions.js.es6 @@ -80,7 +80,7 @@
    diff --git a/app/assets/javascripts/vue_pipelines_index/pipelines.js.es6 b/app/assets/javascripts/vue_pipelines_index/pipelines.js.es6 index 421e4111187..7872e7d4ac6 100644 --- a/app/assets/javascripts/vue_pipelines_index/pipelines.js.es6 +++ b/app/assets/javascripts/vue_pipelines_index/pipelines.js.es6 @@ -37,8 +37,8 @@ this.store.fetchDataLoop.call(this, Vue, this.pagenum, this.scope); }, methods: { - changepage(event, last) { - const text = event.target.innerText; + changepage(e, last) { + const text = e.target.innerText; if (text === '...') return; if (/^-?[\d.]+(?:e-?\d+)?$/.test(text)) this.pagenum = +text; if (text === 'Last >>') this.pagenum = last; diff --git a/app/assets/javascripts/vue_pipelines_index/store.js.es6 b/app/assets/javascripts/vue_pipelines_index/store.js.es6 index d00e30760a8..861df939451 100644 --- a/app/assets/javascripts/vue_pipelines_index/store.js.es6 +++ b/app/assets/javascripts/vue_pipelines_index/store.js.es6 @@ -53,8 +53,12 @@ goFetch(); this.intervalId = setInterval(() => { - goUpdate(); + if (this.updatedAt) goUpdate(); }, 3000); + + window.onbeforeunload = function removePipelineInterval() { + clearInterval(this.intervalId); + }; } }; })(window.gl || (window.gl = {})); -- cgit v1.2.1 From 7748282996d7754a342b5956b1a277a54a9b26f5 Mon Sep 17 00:00:00 2001 From: Regis Date: Sat, 12 Nov 2016 02:00:35 -0700 Subject: better comment [ci skip] --- app/assets/javascripts/vue_pipelines_index/time_ago.js.es6 | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) (limited to 'app/assets') diff --git a/app/assets/javascripts/vue_pipelines_index/time_ago.js.es6 b/app/assets/javascripts/vue_pipelines_index/time_ago.js.es6 index 2fbfa486f88..159c7585580 100644 --- a/app/assets/javascripts/vue_pipelines_index/time_ago.js.es6 +++ b/app/assets/javascripts/vue_pipelines_index/time_ago.js.es6 @@ -21,8 +21,8 @@ }, }, computed: { + // need started_at or created_at for finish and running finishdate() { - // need started_at or created_at here const date = new Date( new Date( this.pipeline.details.finished_at @@ -35,7 +35,6 @@ ); }, runningdate() { - // need started_at or created_at at here const date = new Date( new Date().getTime() - new Date(this.pipeline.started_at).getTime() ); -- cgit v1.2.1 From a3c93ee8ad2caae0d7ace8c4a0c796840209f20e Mon Sep 17 00:00:00 2001 From: Regis Date: Sat, 12 Nov 2016 03:21:00 -0700 Subject: waiting for api changes --- .../vue_pipelines_index/branch_commit.js.es6 | 8 ++++++-- .../javascripts/vue_pipelines_index/time_ago.js.es6 | 18 ++++++++---------- 2 files changed, 14 insertions(+), 12 deletions(-) (limited to 'app/assets') diff --git a/app/assets/javascripts/vue_pipelines_index/branch_commit.js.es6 b/app/assets/javascripts/vue_pipelines_index/branch_commit.js.es6 index 43bad6e36e7..b594d08e96d 100644 --- a/app/assets/javascripts/vue_pipelines_index/branch_commit.js.es6 +++ b/app/assets/javascripts/vue_pipelines_index/branch_commit.js.es6 @@ -11,13 +11,17 @@ alt() { return `${this.pipeline.commit.author_name}'s avatar`; }, + avatarUrl() { + const author = this.pipeline.commit.author; + if (author) return author.avatar_url; + return this.pipeline.commit.author_gravatar_url; + }, }, template: `
    -
    - {{duration}} + {{duration()}}

    -

    +

    -- cgit v1.2.1 From 4f290de7c14131f9241834136ae4f0b7de0aa394 Mon Sep 17 00:00:00 2001 From: Regis Date: Mon, 14 Nov 2016 09:58:20 -0700 Subject: add cancelled icon --- app/assets/javascripts/vue_icons/index.js.es6 | 11 +++++++++++ .../javascripts/vue_pipelines_index/stage.js.es6 | 2 ++ .../vue_pipelines_status/canceled.js.es6 | 23 ++++++++++++++++++++++ .../javascripts/vue_pipelines_status/index.js.es6 | 1 + .../javascripts/vue_pipelines_status/status.js.es6 | 6 ++++++ 5 files changed, 43 insertions(+) create mode 100644 app/assets/javascripts/vue_pipelines_status/canceled.js.es6 (limited to 'app/assets') diff --git a/app/assets/javascripts/vue_icons/index.js.es6 b/app/assets/javascripts/vue_icons/index.js.es6 index 66b4a58a4c0..b7da80a6377 100644 --- a/app/assets/javascripts/vue_icons/index.js.es6 +++ b/app/assets/javascripts/vue_icons/index.js.es6 @@ -55,4 +55,15 @@ `, }); + + gl.VueCanceledIcon = Vue.extend({ + template: ` + + + + + + + `, + }); })(window.gl || (window.gl = {})); diff --git a/app/assets/javascripts/vue_pipelines_index/stage.js.es6 b/app/assets/javascripts/vue_pipelines_index/stage.js.es6 index 8a77f213b7f..e5f9178a796 100644 --- a/app/assets/javascripts/vue_pipelines_index/stage.js.es6 +++ b/app/assets/javascripts/vue_pipelines_index/stage.js.es6 @@ -9,6 +9,7 @@ 'failed-icon': gl.VueFailedIcon, 'success-icon': gl.VueSuccessIcon, 'created-icon': gl.VueCreatedIcon, + 'canceled-icon': gl.VueCanceledIcon, }, props: ['stage'], computed: { @@ -30,6 +31,7 @@ +
    `, }); diff --git a/app/assets/javascripts/vue_pipelines_status/canceled.js.es6 b/app/assets/javascripts/vue_pipelines_status/canceled.js.es6 new file mode 100644 index 00000000000..ed677fea93c --- /dev/null +++ b/app/assets/javascripts/vue_pipelines_status/canceled.js.es6 @@ -0,0 +1,23 @@ +/* global Vue, gl */ +/* eslint-disable no-param-reassign */ + +((gl) => { + gl.VueCanceledScope = Vue.extend({ + components: { + 'vue-canceled-icon': gl.VueCanceledIcon, + }, + props: [ + 'pipeline', + ], + template: ` + + + + +  cancelled + + + + `, + }); +})(window.gl || (window.gl = {})); diff --git a/app/assets/javascripts/vue_pipelines_status/index.js.es6 b/app/assets/javascripts/vue_pipelines_status/index.js.es6 index cea02b5d6af..ab2755eb323 100644 --- a/app/assets/javascripts/vue_pipelines_status/index.js.es6 +++ b/app/assets/javascripts/vue_pipelines_status/index.js.es6 @@ -1,4 +1,5 @@ //= require ./pending.js.es6 //= require ./failed.js.es6 //= require ./running.js.es6 +//= require ./canceled.js.es6 //= require ./status.js.es6 diff --git a/app/assets/javascripts/vue_pipelines_status/status.js.es6 b/app/assets/javascripts/vue_pipelines_status/status.js.es6 index 0a722ba7ca5..8732337c3ef 100644 --- a/app/assets/javascripts/vue_pipelines_status/status.js.es6 +++ b/app/assets/javascripts/vue_pipelines_status/status.js.es6 @@ -8,6 +8,7 @@ 'vue-pending-scope': gl.VuePendingScope, 'vue-failed-scope': gl.VueFailedScope, 'vue-created-scope': gl.VueCreatedScope, + 'vue-canceled-scope': gl.VueCanceledScope, }, props: [ 'pipeline', @@ -34,6 +35,11 @@ :pipeline='pipeline' > + + `, }); -- cgit v1.2.1 From 2d1effb11e74883ed16e3577fcdfc05d2692c12e Mon Sep 17 00:00:00 2001 From: Regis Date: Mon, 14 Nov 2016 10:08:14 -0700 Subject: change class name for css to take effect --- app/assets/javascripts/vue_pipelines_status/canceled.js.es6 | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'app/assets') diff --git a/app/assets/javascripts/vue_pipelines_status/canceled.js.es6 b/app/assets/javascripts/vue_pipelines_status/canceled.js.es6 index ed677fea93c..20ca8ad5ebb 100644 --- a/app/assets/javascripts/vue_pipelines_status/canceled.js.es6 +++ b/app/assets/javascripts/vue_pipelines_status/canceled.js.es6 @@ -12,9 +12,9 @@ template: ` - + -  cancelled +  canceled -- cgit v1.2.1 From 40a503650e319cefb285c63f8cbfc39f3422a837 Mon Sep 17 00:00:00 2001 From: Regis Date: Mon, 14 Nov 2016 12:43:08 -0700 Subject: more progress --- app/assets/javascripts/vue_icons/index.js.es6 | 21 ++++++++++++++++++++ .../vue_pipelines_index/pipeline_actions.js.es6 | 2 +- .../vue_pipelines_index/time_ago.js.es6 | 1 - .../javascripts/vue_pipelines_status/index.js.es6 | 2 ++ .../vue_pipelines_status/skipped.js.es6 | 23 ++++++++++++++++++++++ .../javascripts/vue_pipelines_status/status.js.es6 | 6 ++++++ .../vue_pipelines_status/unstable.js.es6 | 23 ++++++++++++++++++++++ 7 files changed, 76 insertions(+), 2 deletions(-) create mode 100644 app/assets/javascripts/vue_pipelines_status/skipped.js.es6 create mode 100644 app/assets/javascripts/vue_pipelines_status/unstable.js.es6 (limited to 'app/assets') diff --git a/app/assets/javascripts/vue_icons/index.js.es6 b/app/assets/javascripts/vue_icons/index.js.es6 index b7da80a6377..84a19348862 100644 --- a/app/assets/javascripts/vue_icons/index.js.es6 +++ b/app/assets/javascripts/vue_icons/index.js.es6 @@ -66,4 +66,25 @@ `, }); + + gl.VueSkippedIcon = Vue.extend({ + template: ` + + + + + + `, + }); + + gl.VueUnstableIcon = Vue.extend({ + template: ` + + + + + + { + gl.VueSkippedScope = Vue.extend({ + components: { + 'vue-skipped-icon': gl.VueSkippedIcon, + }, + props: [ + 'pipeline', + ], + template: ` + + + + +  skipped + + + + `, + }); +})(window.gl || (window.gl = {})); \ No newline at end of file diff --git a/app/assets/javascripts/vue_pipelines_status/status.js.es6 b/app/assets/javascripts/vue_pipelines_status/status.js.es6 index 8732337c3ef..dfef19e21da 100644 --- a/app/assets/javascripts/vue_pipelines_status/status.js.es6 +++ b/app/assets/javascripts/vue_pipelines_status/status.js.es6 @@ -9,6 +9,7 @@ 'vue-failed-scope': gl.VueFailedScope, 'vue-created-scope': gl.VueCreatedScope, 'vue-canceled-scope': gl.VueCanceledScope, + 'vue-unstable-scope': gl.VueUnstableScope, }, props: [ 'pipeline', @@ -40,6 +41,11 @@ :pipeline='pipeline' > + + `, }); diff --git a/app/assets/javascripts/vue_pipelines_status/unstable.js.es6 b/app/assets/javascripts/vue_pipelines_status/unstable.js.es6 new file mode 100644 index 00000000000..27fd29b9d80 --- /dev/null +++ b/app/assets/javascripts/vue_pipelines_status/unstable.js.es6 @@ -0,0 +1,23 @@ +/* global Vue, gl */ +/* eslint-disable no-param-reassign */ + +((gl) => { + gl.VueUnstableScope = Vue.extend({ + components: { + 'vue-unstable-icon': gl.VueUnstableIcon, + }, + props: [ + 'pipeline', + ], + template: ` + + + + +  unstable + + + + `, + }); +})(window.gl || (window.gl = {})); -- cgit v1.2.1 From fa1a99a17388c3880e84385255566d776960cf4c Mon Sep 17 00:00:00 2001 From: Regis Date: Mon, 14 Nov 2016 12:44:50 -0700 Subject: rid of extra api calls --- .../javascripts/vue_pipelines_index/pipeline_actions.js.es6 | 9 --------- 1 file changed, 9 deletions(-) (limited to 'app/assets') diff --git a/app/assets/javascripts/vue_pipelines_index/pipeline_actions.js.es6 b/app/assets/javascripts/vue_pipelines_index/pipeline_actions.js.es6 index d1519ec83f7..223fcce62d8 100644 --- a/app/assets/javascripts/vue_pipelines_index/pipeline_actions.js.es6 +++ b/app/assets/javascripts/vue_pipelines_index/pipeline_actions.js.es6 @@ -10,14 +10,6 @@ download(name) { return `Download ${name} artifacts`; }, - // retry(e) { - // e.preventDefault(); - // this.$http.post(this.pipeline.retry_url, { - // pipeline: { id: this.pipeline.id }, - // }) - // .then(() => {}) - // .catch(() => new Flash('Something went wrong on our end.')); - // }, }, template: ` @@ -78,7 +70,6 @@
    - Date: Tue, 15 Nov 2016 07:53:46 -0700 Subject: prep for testing - update all pipeline api response attributes --- .../javascripts/vue_pipelines_index/index.js.es6 | 2 +- .../vue_pipelines_index/pipeline_actions.js.es6 | 4 ++-- .../javascripts/vue_pipelines_index/store.js.es6 | 19 ++++++++++++++++++- 3 files changed, 21 insertions(+), 4 deletions(-) (limited to 'app/assets') diff --git a/app/assets/javascripts/vue_pipelines_index/index.js.es6 b/app/assets/javascripts/vue_pipelines_index/index.js.es6 index ab53b12d3d0..90c8b47062c 100644 --- a/app/assets/javascripts/vue_pipelines_index/index.js.es6 +++ b/app/assets/javascripts/vue_pipelines_index/index.js.es6 @@ -1,5 +1,5 @@ /* global Vue, VueResource, gl */ -/* eslint-disable no-bitwise*/ +/* eslint-disable no-bitwise, no-plusplus*/ //= require vue-resource diff --git a/app/assets/javascripts/vue_pipelines_index/pipeline_actions.js.es6 b/app/assets/javascripts/vue_pipelines_index/pipeline_actions.js.es6 index 223fcce62d8..1e81862ec83 100644 --- a/app/assets/javascripts/vue_pipelines_index/pipeline_actions.js.es6 +++ b/app/assets/javascripts/vue_pipelines_index/pipeline_actions.js.es6 @@ -33,7 +33,7 @@ diff --git a/app/assets/javascripts/vue_pipelines_index/store.js.es6 b/app/assets/javascripts/vue_pipelines_index/store.js.es6 index d8058386898..c1c153b0604 100644 --- a/app/assets/javascripts/vue_pipelines_index/store.js.es6 +++ b/app/assets/javascripts/vue_pipelines_index/store.js.es6 @@ -35,7 +35,7 @@ gl.PipelineStore = class { fetchDataLoop(Vue, pageNum, url) { Vue.activeResources = 0; - const updateNumberOfPipelines = (total, running) => { + const updatePipelineNums = (total, running) => { document.querySelector('.js-totalbuilds-count').innerHTML = total; document.querySelector('.js-running-count').innerHTML = running; }; @@ -55,7 +55,7 @@ Vue.set(this, 'updatedAt', res.updated_at); Vue.set(this, 'pipelines', res.pipelines); Vue.set(this, 'count', res.count); - updateNumberOfPipelines(this.count.all, this.count.running_or_pending); + updatePipelineNums(this.count.all, this.count.running_or_pending); this.pageRequest = false; Vue.activeResources -= 1; }, () => new Flash( @@ -70,7 +70,7 @@ Vue.set(this, 'updatedAt', res.updated_at); Vue.set(this, 'pipelines', p.updatePipelines(res)); Vue.set(this, 'count', res.count); - updateNumberOfPipelines(this.count.all, this.count.running_or_pending); + updatePipelineNums(this.count.all, this.count.running_or_pending); Vue.activeResources -= 1; }, () => new Flash( 'Something went wrong on our end.' -- cgit v1.2.1 From fc5eb253dbd1fac0674c1a164847dabfd1229c9e Mon Sep 17 00:00:00 2001 From: Regis Date: Thu, 17 Nov 2016 12:06:45 -0700 Subject: refactor store --- app/assets/javascripts/vue_pipelines_index/store.js.es6 | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) (limited to 'app/assets') diff --git a/app/assets/javascripts/vue_pipelines_index/store.js.es6 b/app/assets/javascripts/vue_pipelines_index/store.js.es6 index c1c153b0604..8226aef9c05 100644 --- a/app/assets/javascripts/vue_pipelines_index/store.js.es6 +++ b/app/assets/javascripts/vue_pipelines_index/store.js.es6 @@ -34,7 +34,13 @@ gl.PipelineStore = class { fetchDataLoop(Vue, pageNum, url) { - Vue.activeResources = 0; + const setVueResources = () => { Vue.activeResources = 1; }; + const resetVueResources = () => { Vue.activeResources = 0; }; + const addToVueResources = () => { Vue.activeResources += 1; }; + const subtractFromVueResources = () => { Vue.activeResources -= 1; }; + + resetVueResources(); // set Vue.resources to 0 + const updatePipelineNums = (total, running) => { document.querySelector('.js-totalbuilds-count').innerHTML = total; document.querySelector('.js-running-count').innerHTML = running; @@ -42,9 +48,9 @@ const resourceChecker = () => { if (Vue.activeResources === 0) { - Vue.activeResources = 1; + setVueResources(); } else { - Vue.activeResources += 1; + addToVueResources(); } }; @@ -57,7 +63,7 @@ Vue.set(this, 'count', res.count); updatePipelineNums(this.count.all, this.count.running_or_pending); this.pageRequest = false; - Vue.activeResources -= 1; + subtractFromVueResources(); }, () => new Flash( 'Something went wrong on our end.' )); @@ -71,7 +77,7 @@ Vue.set(this, 'pipelines', p.updatePipelines(res)); Vue.set(this, 'count', res.count); updatePipelineNums(this.count.all, this.count.running_or_pending); - Vue.activeResources -= 1; + subtractFromVueResources(); }, () => new Flash( 'Something went wrong on our end.' )); -- cgit v1.2.1 From 398be9cadd5c50c1de3d31facba7e62d54437f37 Mon Sep 17 00:00:00 2001 From: Regis Date: Fri, 18 Nov 2016 08:10:32 -0600 Subject: performance and diff updates --- app/assets/javascripts/vue_pipelines_index/store.js.es6 | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'app/assets') diff --git a/app/assets/javascripts/vue_pipelines_index/store.js.es6 b/app/assets/javascripts/vue_pipelines_index/store.js.es6 index 8226aef9c05..053a068396f 100644 --- a/app/assets/javascripts/vue_pipelines_index/store.js.es6 +++ b/app/assets/javascripts/vue_pipelines_index/store.js.es6 @@ -7,7 +7,7 @@ this.pipelines = pipelines; this.updateClone = (update, newPipe) => { update.forEach((pipe) => { - if (pipe.id === newPipe.id) pipe = Object.assign(pipe, newPipe); + if (pipe.id === newPipe.id) pipe = Object.assign({}, pipe, newPipe); }); }; } @@ -20,7 +20,7 @@ } updatePipelines(apiResponse) { - const update = this.pipelines.map(e => e); + const update = this.pipelines.slice(0); apiResponse.pipelines.forEach((newPipe) => { if (newPipe.commit) { update.unshift(newPipe); -- cgit v1.2.1 From 061b4dd82a0736cf9b92d4633c3ef5af61a11cc3 Mon Sep 17 00:00:00 2001 From: Regis Date: Fri, 18 Nov 2016 11:33:51 -0600 Subject: much more performant pageSlicer - [ci skip] --- app/assets/javascripts/vue_pipelines_index/store.js.es6 | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) (limited to 'app/assets') diff --git a/app/assets/javascripts/vue_pipelines_index/store.js.es6 b/app/assets/javascripts/vue_pipelines_index/store.js.es6 index 053a068396f..396114e05b6 100644 --- a/app/assets/javascripts/vue_pipelines_index/store.js.es6 +++ b/app/assets/javascripts/vue_pipelines_index/store.js.es6 @@ -13,10 +13,8 @@ } currentPageSlicer(update) { - const length = update.length; - if (this.pipelines.length === update.length) return update; if (update.length <= 30) return update; - return update.slice(0, (length - 1)); + return update.slice(0, 29); } updatePipelines(apiResponse) { -- cgit v1.2.1 From 758cdf54fe61ff7e62c9e3aac70819fb824a8b5c Mon Sep 17 00:00:00 2001 From: Regis Date: Fri, 18 Nov 2016 11:35:35 -0600 Subject: no this - define in constructor - [ci skip] --- app/assets/javascripts/vue_pipelines_index/store.js.es6 | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) (limited to 'app/assets') diff --git a/app/assets/javascripts/vue_pipelines_index/store.js.es6 b/app/assets/javascripts/vue_pipelines_index/store.js.es6 index 396114e05b6..ffe6292782a 100644 --- a/app/assets/javascripts/vue_pipelines_index/store.js.es6 +++ b/app/assets/javascripts/vue_pipelines_index/store.js.es6 @@ -10,11 +10,10 @@ if (pipe.id === newPipe.id) pipe = Object.assign({}, pipe, newPipe); }); }; - } - - currentPageSlicer(update) { - if (update.length <= 30) return update; - return update.slice(0, 29); + this.currentPageSlicer = (update) => { + if (update.length <= 30) return update; + return update.slice(0, 29); + }; } updatePipelines(apiResponse) { -- cgit v1.2.1 From d0a5428a3865f59814528fd950a1e00ccb65af3d Mon Sep 17 00:00:00 2001 From: Regis Date: Fri, 18 Nov 2016 16:26:49 -0600 Subject: constant variable hardcoding --- app/assets/javascripts/vue_pagination/index.js.es6 | 32 ++++++++++++++-------- .../javascripts/vue_pipelines_index/index.js.es6 | 2 +- .../vue_pipelines_index/pipelines.js.es6 | 18 ++++++++---- .../javascripts/vue_pipelines_index/store.js.es6 | 7 +++-- 4 files changed, 39 insertions(+), 20 deletions(-) (limited to 'app/assets') diff --git a/app/assets/javascripts/vue_pagination/index.js.es6 b/app/assets/javascripts/vue_pagination/index.js.es6 index 5f844ae8923..4f83671e83d 100644 --- a/app/assets/javascripts/vue_pagination/index.js.es6 +++ b/app/assets/javascripts/vue_pagination/index.js.es6 @@ -2,6 +2,14 @@ /* eslint-disable no-param-reassign, no-plusplus */ ((gl) => { + const PAGINATION_SIZE = 30; + const PAGINATION_UI_BUTTON_LIMIT = 4; + const SPREAD = '...'; + const PREV = 'Prev'; + const NEXT = 'Next'; + const FIRST = '<< First'; + const LAST = 'Last >>'; + gl.VueGlPagination = Vue.extend({ props: [ 'changepage', @@ -10,40 +18,42 @@ ], computed: { last() { - return Math.ceil(+this.count / 30); + return Math.ceil(+this.count / PAGINATION_SIZE); }, getItems() { const total = +this.last; const page = +this.pagenum; const items = []; - if (page > 1) items.push({ title: '<< First', where: 1 }); + if (page > 1) items.push({ title: FIRST, where: 1 }); if (page > 1) { - items.push({ title: 'Prev', where: page - 1 }); + items.push({ title: PREV, where: page - 1 }); } else { - items.push({ title: 'Prev', where: page - 1, disabled: true }); + items.push({ title: PREV, where: page - 1, disabled: true }); } - if (page > 6) items.push({ title: '...', separator: true }); + if (page > 6) items.push({ title: SPREAD, separator: true }); - const start = Math.max(page - 4, 1); - const end = Math.min(page + 4, total); + const start = Math.max(page - PAGINATION_UI_BUTTON_LIMIT, 1); + const end = Math.min(page + PAGINATION_UI_BUTTON_LIMIT, total); for (let i = start; i <= end; i++) { const isActive = i === page; items.push({ title: i, active: isActive, where: i }); } - if (total - page > 4) items.push({ title: '...', separator: true }); + if (total - page > PAGINATION_UI_BUTTON_LIMIT) { + items.push({ title: SPREAD, separator: true }); + } if (page === total) { - items.push({ title: 'Next', where: page + 1, disabled: true }); + items.push({ title: NEXT, where: page + 1, disabled: true }); } else if (total - page >= 1) { - items.push({ title: 'Next', where: page + 1 }); + items.push({ title: NEXT, where: page + 1 }); } - if (total - page >= 1) items.push({ title: 'Last >>', where: total }); + if (total - page >= 1) items.push({ title: LAST, where: total }); return items; }, diff --git a/app/assets/javascripts/vue_pipelines_index/index.js.es6 b/app/assets/javascripts/vue_pipelines_index/index.js.es6 index 57afce34c2b..1584345098c 100644 --- a/app/assets/javascripts/vue_pipelines_index/index.js.es6 +++ b/app/assets/javascripts/vue_pipelines_index/index.js.es6 @@ -29,7 +29,7 @@ store: new gl.PipelineStore(), }, components: { - 'vue-pipelines': gl.VuePipeLines, + 'vue-pipelines': gl.VuePipelines, }, template: `
    diff --git a/app/assets/javascripts/vue_pipelines_index/pipelines.js.es6 b/app/assets/javascripts/vue_pipelines_index/pipelines.js.es6 index b86a4c6f81b..09c480457c4 100644 --- a/app/assets/javascripts/vue_pipelines_index/pipelines.js.es6 +++ b/app/assets/javascripts/vue_pipelines_index/pipelines.js.es6 @@ -2,7 +2,13 @@ /* eslint-disable no-param-reassign, no-bitwise*/ ((gl) => { - gl.VuePipeLines = Vue.extend({ + const SPREAD = '...'; + const PREV = 'Prev'; + const NEXT = 'Next'; + const FIRST = '<< First'; + const LAST = 'Last >>'; + + gl.VuePipelines = Vue.extend({ components: { runningPipeline: gl.VueRunningPipeline, pipelineActions: gl.VuePipelineActions, @@ -41,12 +47,12 @@ methods: { changepage(e, last) { const text = e.target.innerText; - if (text === '...') return; + if (text === SPREAD) return; if (/^-?[\d.]+(?:e-?\d+)?$/.test(text)) this.pagenum = +text; - if (text === 'Last >>') this.pagenum = last; - if (text === 'Next') this.pagenum = +this.pagenum + 1; - if (text === 'Prev') this.pagenum = +this.pagenum - 1; - if (text === '<< First') this.pagenum = 1; + if (text === LAST) this.pagenum = last; + if (text === NEXT) this.pagenum = +this.pagenum + 1; + if (text === PREV) this.pagenum = +this.pagenum - 1; + if (text === FIRST) this.pagenum = 1; window.history.pushState({}, null, `?p=${this.pagenum}`); clearInterval(this.intervalId); diff --git a/app/assets/javascripts/vue_pipelines_index/store.js.es6 b/app/assets/javascripts/vue_pipelines_index/store.js.es6 index ffe6292782a..ada99b67f26 100644 --- a/app/assets/javascripts/vue_pipelines_index/store.js.es6 +++ b/app/assets/javascripts/vue_pipelines_index/store.js.es6 @@ -2,6 +2,9 @@ /* eslint-disable no-param-reassign */ ((gl) => { + const PAGINATION_LIMIT = 31; + const SLICE_LIMIT = 29; + class PipelineUpdater { constructor(pipelines) { this.pipelines = pipelines; @@ -11,8 +14,8 @@ }); }; this.currentPageSlicer = (update) => { - if (update.length <= 30) return update; - return update.slice(0, 29); + if (update.length < PAGINATION_LIMIT) return update; + return update.slice(0, SLICE_LIMIT); }; } -- cgit v1.2.1 From ff4edf37f3d8e7742292db6d5e50ba6f599950ff Mon Sep 17 00:00:00 2001 From: Regis Date: Fri, 18 Nov 2016 16:33:41 -0600 Subject: this.count as only param for updatePipelineNums - [ci skip] --- app/assets/javascripts/vue_pipelines_index/store.js.es6 | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) (limited to 'app/assets') diff --git a/app/assets/javascripts/vue_pipelines_index/store.js.es6 b/app/assets/javascripts/vue_pipelines_index/store.js.es6 index ada99b67f26..0bf59823c11 100644 --- a/app/assets/javascripts/vue_pipelines_index/store.js.es6 +++ b/app/assets/javascripts/vue_pipelines_index/store.js.es6 @@ -41,8 +41,11 @@ resetVueResources(); // set Vue.resources to 0 - const updatePipelineNums = (total, running) => { - document.querySelector('.js-totalbuilds-count').innerHTML = total; + const updatePipelineNums = (count) => { + const { all } = count; + // cannot define non camel case, so not using destructuring for running + const running = count.running_or_pending; + document.querySelector('.js-totalbuilds-count').innerHTML = all; document.querySelector('.js-running-count').innerHTML = running; }; @@ -61,7 +64,7 @@ Vue.set(this, 'updatedAt', res.updated_at); Vue.set(this, 'pipelines', res.pipelines); Vue.set(this, 'count', res.count); - updatePipelineNums(this.count.all, this.count.running_or_pending); + updatePipelineNums(this.count); this.pageRequest = false; subtractFromVueResources(); }, () => new Flash( @@ -76,7 +79,7 @@ Vue.set(this, 'updatedAt', res.updated_at); Vue.set(this, 'pipelines', p.updatePipelines(res)); Vue.set(this, 'count', res.count); - updatePipelineNums(this.count.all, this.count.running_or_pending); + updatePipelineNums(this.count); subtractFromVueResources(); }, () => new Flash( 'Something went wrong on our end.' -- cgit v1.2.1 From cb35c5e1c9172a566e88ecc3be13fd35b6c3b8d0 Mon Sep 17 00:00:00 2001 From: Regis Date: Tue, 22 Nov 2016 13:36:45 -0600 Subject: stashing for now --- app/assets/javascripts/vue_pipelines_index/index.js.es6 | 2 ++ .../javascripts/vue_pipelines_index/pipelines.js.es6 | 17 +++++++++++++++-- 2 files changed, 17 insertions(+), 2 deletions(-) (limited to 'app/assets') diff --git a/app/assets/javascripts/vue_pipelines_index/index.js.es6 b/app/assets/javascripts/vue_pipelines_index/index.js.es6 index 1584345098c..2bd8d5d327f 100644 --- a/app/assets/javascripts/vue_pipelines_index/index.js.es6 +++ b/app/assets/javascripts/vue_pipelines_index/index.js.es6 @@ -1,6 +1,8 @@ /* global Vue, VueResource, gl */ /* eslint-disable no-bitwise, no-plusplus*/ +/*= require vue_common_component/commit */ + //= require vue-resource //= require ./object_assign.js.es6 diff --git a/app/assets/javascripts/vue_pipelines_index/pipelines.js.es6 b/app/assets/javascripts/vue_pipelines_index/pipelines.js.es6 index 09c480457c4..fd843844c7c 100644 --- a/app/assets/javascripts/vue_pipelines_index/pipelines.js.es6 +++ b/app/assets/javascripts/vue_pipelines_index/pipelines.js.es6 @@ -13,7 +13,7 @@ runningPipeline: gl.VueRunningPipeline, pipelineActions: gl.VuePipelineActions, stages: gl.VueStages, - branchCommit: gl.VueBranchCommit, + commit: gl.CommitComponent, pipelineUrl: gl.VuePipelineUrl, pipelineHead: gl.VuePipelineHead, glPagination: gl.VueGlPagination, @@ -59,6 +59,11 @@ this.pageRequest = true; this.store.fetchDataLoop.call(this, Vue, this.pagenum, this.scope); }, + author(pipeline) { + const author = pipeline.commit.author; + if (author) return author; + return ({}); + }, }, template: `
    @@ -72,7 +77,15 @@ - + + -- cgit v1.2.1 From 76ef4f02c36a3ca8f118e57d47f795000fa481f5 Mon Sep 17 00:00:00 2001 From: Regis Date: Tue, 22 Nov 2016 15:36:21 -0600 Subject: diff updates from API to DOM --- app/assets/javascripts/vue_pipelines_index/store.js.es6 | 17 +++++------------ 1 file changed, 5 insertions(+), 12 deletions(-) (limited to 'app/assets') diff --git a/app/assets/javascripts/vue_pipelines_index/store.js.es6 b/app/assets/javascripts/vue_pipelines_index/store.js.es6 index 0bf59823c11..16c4197dd66 100644 --- a/app/assets/javascripts/vue_pipelines_index/store.js.es6 +++ b/app/assets/javascripts/vue_pipelines_index/store.js.es6 @@ -8,27 +8,20 @@ class PipelineUpdater { constructor(pipelines) { this.pipelines = pipelines; - this.updateClone = (update, newPipe) => { - update.forEach((pipe) => { - if (pipe.id === newPipe.id) pipe = Object.assign({}, pipe, newPipe); - }); - }; - this.currentPageSlicer = (update) => { - if (update.length < PAGINATION_LIMIT) return update; - return update.slice(0, SLICE_LIMIT); - }; } updatePipelines(apiResponse) { const update = this.pipelines.slice(0); - apiResponse.pipelines.forEach((newPipe) => { + apiResponse.pipelines.forEach((newPipe, i) => { if (newPipe.commit) { update.unshift(newPipe); } else { - this.updateClone(update, newPipe); + const newMerge = Object.assign({}, update[i], newPipe); + update[i] = newMerge; } }); - return this.currentPageSlicer(update); + if (update.length < PAGINATION_LIMIT) return update; + return update.slice(0, SLICE_LIMIT); } } -- cgit v1.2.1 From d15a0b68643f09be4f8e61b45c479a200575c245 Mon Sep 17 00:00:00 2001 From: Regis Date: Tue, 22 Nov 2016 15:37:51 -0600 Subject: slight cleanup [ci skip] --- app/assets/javascripts/vue_pipelines_index/store.js.es6 | 1 - 1 file changed, 1 deletion(-) (limited to 'app/assets') diff --git a/app/assets/javascripts/vue_pipelines_index/store.js.es6 b/app/assets/javascripts/vue_pipelines_index/store.js.es6 index 16c4197dd66..836a6be9a40 100644 --- a/app/assets/javascripts/vue_pipelines_index/store.js.es6 +++ b/app/assets/javascripts/vue_pipelines_index/store.js.es6 @@ -36,7 +36,6 @@ const updatePipelineNums = (count) => { const { all } = count; - // cannot define non camel case, so not using destructuring for running const running = count.running_or_pending; document.querySelector('.js-totalbuilds-count').innerHTML = all; document.querySelector('.js-running-count').innerHTML = running; -- cgit v1.2.1 From ce2750e095ededa37087e2ba10f75ae7eb465584 Mon Sep 17 00:00:00 2001 From: Regis Date: Wed, 23 Nov 2016 10:52:21 -0600 Subject: refactor - rename - simple behavior for time_ago --- .../vue_pipelines_index/pipelines.js.es6 | 2 +- .../javascripts/vue_pipelines_index/store.js.es6 | 25 +++++++++++----------- .../vue_pipelines_index/time_ago.js.es6 | 17 +++++++++++---- 3 files changed, 27 insertions(+), 17 deletions(-) (limited to 'app/assets') diff --git a/app/assets/javascripts/vue_pipelines_index/pipelines.js.es6 b/app/assets/javascripts/vue_pipelines_index/pipelines.js.es6 index fd843844c7c..1c8e98f3865 100644 --- a/app/assets/javascripts/vue_pipelines_index/pipelines.js.es6 +++ b/app/assets/javascripts/vue_pipelines_index/pipelines.js.es6 @@ -78,7 +78,7 @@ { if (newPipe.commit) { - update.unshift(newPipe); + diffData.unshift(newPipe); } else { - const newMerge = Object.assign({}, update[i], newPipe); - update[i] = newMerge; + const newMerge = Object.assign({}, diffData[i], newPipe); + diffData[i] = newMerge; } }); - if (update.length < PAGINATION_LIMIT) return update; - return update.slice(0, SLICE_LIMIT); + if (diffData.length < PAGINATION_LIMIT) return diffData; + return diffData.slice(0, SLICE_LIMIT); } } @@ -36,6 +36,7 @@ const updatePipelineNums = (count) => { const { all } = count; + // cannot define non camel case, so not using destructuring for running const running = count.running_or_pending; document.querySelector('.js-totalbuilds-count').innerHTML = all; document.querySelector('.js-running-count').innerHTML = running; @@ -67,9 +68,9 @@ this.$http.get(`${url}?page=${pageNum}&updated_at=${this.updatedAt}`) .then((response) => { const res = JSON.parse(response.body); - const p = new PipelineUpdater(this.pipelines); + const p = new RealtimePaginationUpdater(this.pipelines); Vue.set(this, 'updatedAt', res.updated_at); - Vue.set(this, 'pipelines', p.updatePipelines(res)); + Vue.set(this, 'pipelines', p.updatePageDiff(res)); Vue.set(this, 'count', res.count); updatePipelineNums(this.count); subtractFromVueResources(); diff --git a/app/assets/javascripts/vue_pipelines_index/time_ago.js.es6 b/app/assets/javascripts/vue_pipelines_index/time_ago.js.es6 index 8eb25efe344..1d0da41ebbd 100644 --- a/app/assets/javascripts/vue_pipelines_index/time_ago.js.es6 +++ b/app/assets/javascripts/vue_pipelines_index/time_ago.js.es6 @@ -5,6 +5,11 @@ props: [ 'pipeline', ], + computed: { + localTimeFinished() { + return gl.utils.formatDate(this.pipeline.details.finished_at); + }, + }, methods: { formatSection(section) { if (`${section}`.split('').length <= 1) return `0${section}`; @@ -58,13 +63,17 @@ }; }, duration() { - if (this.timeStopped()) return this.finishdate(); - return this.runningdate(); + // if (this.timeStopped()) return this.finishdate(); + // return this.runningdate(); + const { duration } = this.pipeline.details; + if (duration === 0) return '00:00:00'; + if (duration !== null) return duration; + return false; }, }, template: ` -

    +

    {{timeStopped().words}} -- cgit v1.2.1 From 8a2be66b04c1bd6368425d75239ebf0611a07f0f Mon Sep 17 00:00:00 2001 From: Regis Date: Wed, 23 Nov 2016 10:54:52 -0600 Subject: clean up on time_ago [ci skip] --- .../vue_pipelines_index/time_ago.js.es6 | 35 ---------------------- 1 file changed, 35 deletions(-) (limited to 'app/assets') diff --git a/app/assets/javascripts/vue_pipelines_index/time_ago.js.es6 b/app/assets/javascripts/vue_pipelines_index/time_ago.js.es6 index 1d0da41ebbd..496065dbedc 100644 --- a/app/assets/javascripts/vue_pipelines_index/time_ago.js.es6 +++ b/app/assets/javascripts/vue_pipelines_index/time_ago.js.es6 @@ -11,39 +11,6 @@ }, }, methods: { - formatSection(section) { - if (`${section}`.split('').length <= 1) return `0${section}`; - return `${section}`; - }, - hours(date) { - return this.formatSection(date.getHours()); - }, - minutes(date) { - return this.formatSection(date.getMinutes()); - }, - seconds(date) { - return this.formatSection(date.getSeconds()); - }, - finishdate() { - const date = new Date( - new Date( - this.pipeline.details.finished_at - ).getTime() - new Date( - this.pipeline.created_at - ).getTime() - ); - return ( - `${this.hours(date)}:${this.minutes(date)}:${this.seconds(date)}` - ); - }, - runningdate() { - const date = new Date( - new Date().getTime() - new Date(this.pipeline.created_at).getTime() - ); - return ( - `${this.hours(date)}:${this.minutes(date)}:${this.seconds(date)}` - ); - }, timeStopped() { const options = { weekday: 'long', @@ -63,8 +30,6 @@ }; }, duration() { - // if (this.timeStopped()) return this.finishdate(); - // return this.runningdate(); const { duration } = this.pipeline.details; if (duration === 0) return '00:00:00'; if (duration !== null) return duration; -- cgit v1.2.1 From 8856d5a869939f8c5fdba827eb1c02d68bd6b162 Mon Sep 17 00:00:00 2001 From: Regis Date: Tue, 29 Nov 2016 09:43:08 -0600 Subject: turn off diff updates - wrap commit comp in td --- .../vue_pipelines_index/pipelines.js.es6 | 22 ++++++++++++---------- .../javascripts/vue_pipelines_index/store.js.es6 | 20 ++++++++++---------- 2 files changed, 22 insertions(+), 20 deletions(-) (limited to 'app/assets') diff --git a/app/assets/javascripts/vue_pipelines_index/pipelines.js.es6 b/app/assets/javascripts/vue_pipelines_index/pipelines.js.es6 index 1c8e98f3865..006e38505e2 100644 --- a/app/assets/javascripts/vue_pipelines_index/pipelines.js.es6 +++ b/app/assets/javascripts/vue_pipelines_index/pipelines.js.es6 @@ -55,7 +55,7 @@ if (text === FIRST) this.pagenum = 1; window.history.pushState({}, null, `?p=${this.pagenum}`); - clearInterval(this.intervalId); + // clearInterval(this.intervalId); this.pageRequest = true; this.store.fetchDataLoop.call(this, Vue, this.pagenum, this.scope); }, @@ -77,15 +77,17 @@
    - - + + + + diff --git a/app/assets/javascripts/vue_pipelines_index/store.js.es6 b/app/assets/javascripts/vue_pipelines_index/store.js.es6 index c5eca3c1289..a46bdc47491 100644 --- a/app/assets/javascripts/vue_pipelines_index/store.js.es6 +++ b/app/assets/javascripts/vue_pipelines_index/store.js.es6 @@ -81,17 +81,17 @@ resourceChecker(); goFetch(); - this.intervalId = setInterval(() => { - if (this.updatedAt) { - resourceChecker(); - if (Vue.activeResources > 1) return; - goUpdate(); - } - }, 3000); + // this.intervalId = setInterval(() => { + // if (this.updatedAt) { + // resourceChecker(); + // if (Vue.activeResources > 1) return; + // goUpdate(); + // } + // }, 3000); - window.onbeforeunload = function removePipelineInterval() { - clearInterval(this.intervalId); - }; + // window.onbeforeunload = function removePipelineInterval() { + // clearInterval(this.intervalId); + // }; } }; })(window.gl || (window.gl = {})); -- cgit v1.2.1 From 1f50b3fed927bca38335bcd77b9ea69e82a0d2c1 Mon Sep 17 00:00:00 2001 From: Regis Date: Tue, 29 Nov 2016 19:19:03 -0600 Subject: render valid user props for pipeline user --- app/assets/javascripts/vue_pipelines_index/pipeline_url.js.es6 | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) (limited to 'app/assets') diff --git a/app/assets/javascripts/vue_pipelines_index/pipeline_url.js.es6 b/app/assets/javascripts/vue_pipelines_index/pipeline_url.js.es6 index 94c51ad77fa..e11f68bbd36 100644 --- a/app/assets/javascripts/vue_pipelines_index/pipeline_url.js.es6 +++ b/app/assets/javascripts/vue_pipelines_index/pipeline_url.js.es6 @@ -11,7 +11,8 @@ ], computed: { user() { - if (!this.pipeline.user === null) return true; + // debugger + if (this.pipeline.user) return true; return false; }, }, @@ -23,14 +24,14 @@
    by Date: Tue, 29 Nov 2016 19:19:22 -0600 Subject: rid off debugger comment [ci skip] --- app/assets/javascripts/vue_pipelines_index/pipeline_url.js.es6 | 1 - 1 file changed, 1 deletion(-) (limited to 'app/assets') diff --git a/app/assets/javascripts/vue_pipelines_index/pipeline_url.js.es6 b/app/assets/javascripts/vue_pipelines_index/pipeline_url.js.es6 index e11f68bbd36..d9602b4209d 100644 --- a/app/assets/javascripts/vue_pipelines_index/pipeline_url.js.es6 +++ b/app/assets/javascripts/vue_pipelines_index/pipeline_url.js.es6 @@ -11,7 +11,6 @@ ], computed: { user() { - // debugger if (this.pipeline.user) return true; return false; }, -- cgit v1.2.1 From 649d1eb23073543ceed995124c1cb67aabb8bfc2 Mon Sep 17 00:00:00 2001 From: Regis Date: Tue, 29 Nov 2016 20:44:00 -0600 Subject: new line for skipped - use logic gate for REALTIME true or false --- .../vue_pipelines_index/pipelines.js.es6 | 3 ++- .../javascripts/vue_pipelines_index/store.js.es6 | 23 ++++++++++++---------- .../vue_pipelines_status/skipped.js.es6 | 2 +- 3 files changed, 16 insertions(+), 12 deletions(-) (limited to 'app/assets') diff --git a/app/assets/javascripts/vue_pipelines_index/pipelines.js.es6 b/app/assets/javascripts/vue_pipelines_index/pipelines.js.es6 index 006e38505e2..477d59ad2c3 100644 --- a/app/assets/javascripts/vue_pipelines_index/pipelines.js.es6 +++ b/app/assets/javascripts/vue_pipelines_index/pipelines.js.es6 @@ -2,6 +2,7 @@ /* eslint-disable no-param-reassign, no-bitwise*/ ((gl) => { + const REALTIME = false; const SPREAD = '...'; const PREV = 'Prev'; const NEXT = 'Next'; @@ -55,7 +56,7 @@ if (text === FIRST) this.pagenum = 1; window.history.pushState({}, null, `?p=${this.pagenum}`); - // clearInterval(this.intervalId); + if (REALTIME) clearInterval(this.intervalId); this.pageRequest = true; this.store.fetchDataLoop.call(this, Vue, this.pagenum, this.scope); }, diff --git a/app/assets/javascripts/vue_pipelines_index/store.js.es6 b/app/assets/javascripts/vue_pipelines_index/store.js.es6 index a46bdc47491..3ec627d24d0 100644 --- a/app/assets/javascripts/vue_pipelines_index/store.js.es6 +++ b/app/assets/javascripts/vue_pipelines_index/store.js.es6 @@ -2,6 +2,7 @@ /* eslint-disable no-param-reassign */ ((gl) => { + const REALTIME = false; const PAGINATION_LIMIT = 31; const SLICE_LIMIT = 29; @@ -81,17 +82,19 @@ resourceChecker(); goFetch(); - // this.intervalId = setInterval(() => { - // if (this.updatedAt) { - // resourceChecker(); - // if (Vue.activeResources > 1) return; - // goUpdate(); - // } - // }, 3000); + if (REALTIME) { + this.intervalId = setInterval(() => { + if (this.updatedAt) { + resourceChecker(); + if (Vue.activeResources > 1) return; + goUpdate(); + } + }, 3000); - // window.onbeforeunload = function removePipelineInterval() { - // clearInterval(this.intervalId); - // }; + window.onbeforeunload = function removePipelineInterval() { + clearInterval(this.intervalId); + }; + } } }; })(window.gl || (window.gl = {})); diff --git a/app/assets/javascripts/vue_pipelines_status/skipped.js.es6 b/app/assets/javascripts/vue_pipelines_status/skipped.js.es6 index 92d53c4a87e..da904010607 100644 --- a/app/assets/javascripts/vue_pipelines_status/skipped.js.es6 +++ b/app/assets/javascripts/vue_pipelines_status/skipped.js.es6 @@ -20,4 +20,4 @@ `, }); -})(window.gl || (window.gl = {})); \ No newline at end of file +})(window.gl || (window.gl = {})); -- cgit v1.2.1 From d11a298cd5ff9888f15e14efe2313f1445051618 Mon Sep 17 00:00:00 2001 From: Regis Date: Wed, 30 Nov 2016 02:23:51 -0600 Subject: on focus - blur - and page closed -- intervals are taken care of for time ago and realtime --- .../vue_pipelines_index/pipelines.js.es6 | 10 +++++- .../javascripts/vue_pipelines_index/store.js.es6 | 35 ++++++++++++++----- .../vue_pipelines_index/time_ago.js.es6 | 40 +++++++++++++++++----- 3 files changed, 67 insertions(+), 18 deletions(-) (limited to 'app/assets') diff --git a/app/assets/javascripts/vue_pipelines_index/pipelines.js.es6 b/app/assets/javascripts/vue_pipelines_index/pipelines.js.es6 index 477d59ad2c3..b4cdc5080a6 100644 --- a/app/assets/javascripts/vue_pipelines_index/pipelines.js.es6 +++ b/app/assets/javascripts/vue_pipelines_index/pipelines.js.es6 @@ -24,6 +24,7 @@ data() { return { pipelines: [], + allTimeIntervals: [], intervalId: '', updatedAt: '', pagenum: 1, @@ -65,6 +66,9 @@ if (author) return author; return ({}); }, + addTimeInterval(id, that) { + this.allTimeIntervals.push({ id: id, component: that }); + }, }, template: `

    @@ -90,7 +94,11 @@ - + + diff --git a/app/assets/javascripts/vue_pipelines_index/store.js.es6 b/app/assets/javascripts/vue_pipelines_index/store.js.es6 index 3ec627d24d0..359eab3f6c8 100644 --- a/app/assets/javascripts/vue_pipelines_index/store.js.es6 +++ b/app/assets/javascripts/vue_pipelines_index/store.js.es6 @@ -2,7 +2,7 @@ /* eslint-disable no-param-reassign */ ((gl) => { - const REALTIME = false; + const REALTIME = true; const PAGINATION_LIMIT = 31; const SLICE_LIMIT = 29; @@ -33,11 +33,10 @@ const addToVueResources = () => { Vue.activeResources += 1; }; const subtractFromVueResources = () => { Vue.activeResources -= 1; }; - resetVueResources(); // set Vue.resources to 0 + resetVueResources(); const updatePipelineNums = (count) => { const { all } = count; - // cannot define non camel case, so not using destructuring for running const running = count.running_or_pending; document.querySelector('.js-totalbuilds-count').innerHTML = all; document.querySelector('.js-running-count').innerHTML = running; @@ -82,7 +81,7 @@ resourceChecker(); goFetch(); - if (REALTIME) { + const poller = () => { this.intervalId = setInterval(() => { if (this.updatedAt) { resourceChecker(); @@ -90,11 +89,31 @@ goUpdate(); } }, 3000); + }; + + if (REALTIME) poller(); + + const removePipelineInterval = () => { + this.allTimeIntervals.forEach(e => clearInterval(e.id)); + if (REALTIME) clearInterval(this.intervalId); + }; + + const startIntervalLoops = () => { + this.allTimeIntervals.forEach(e => e.component.startInterval()); + if (REALTIME) poller(); + }; - window.onbeforeunload = function removePipelineInterval() { - clearInterval(this.intervalId); - }; - } + window.onbeforeunload = function onClose() { + removePipelineInterval(); + }; + + window.onblur = function remove() { + removePipelineInterval(); + }; + + window.onfocus = function start() { + startIntervalLoops(); + }; } }; })(window.gl || (window.gl = {})); diff --git a/app/assets/javascripts/vue_pipelines_index/time_ago.js.es6 b/app/assets/javascripts/vue_pipelines_index/time_ago.js.es6 index 496065dbedc..505b1ee3490 100644 --- a/app/assets/javascripts/vue_pipelines_index/time_ago.js.es6 +++ b/app/assets/javascripts/vue_pipelines_index/time_ago.js.es6 @@ -1,17 +1,35 @@ /* global Vue, gl */ /* eslint-disable no-param-reassign */ ((gl) => { + const REALTIME = false; + gl.VueTimeAgo = Vue.extend({ + data() { + return { + timeInterval: '', + currentTime: new Date(), + }; + }, props: [ 'pipeline', + 'addTimeInterval', ], + created() { + if (!REALTIME) { + this.timeInterval = setInterval(() => { + this.currentTime = new Date(); + }, 1000); + + this.addTimeInterval(this.timeInterval, this); + } + }, computed: { localTimeFinished() { return gl.utils.formatDate(this.pipeline.details.finished_at); }, - }, - methods: { timeStopped() { + const changeTime = this.currentTime; + const options = { weekday: 'long', year: 'numeric', @@ -23,18 +41,22 @@ const finished = this.pipeline.details.finished_at; - if (!finished) return false; - - return { - words: gl.utils.getTimeago().format(finished), - }; + if (!finished && changeTime) return false; + return ({ words: gl.utils.getTimeago().format(finished) }); }, + }, + methods: { duration() { const { duration } = this.pipeline.details; if (duration === 0) return '00:00:00'; if (duration !== null) return duration; return false; }, + startInterval() { + this.timeInterval = setInterval(() => { + this.currentTime = new Date(); + }, 1000); + }, }, template: ` @@ -51,7 +73,7 @@ {{duration()}}

    -

    +

    -- cgit v1.2.1 From 874a7e8d20dfead42ae957ea8746b20a1446dcea Mon Sep 17 00:00:00 2001 From: Regis Date: Wed, 30 Nov 2016 02:27:05 -0600 Subject: turned off REALTIME - time ago blur and focus still good --- app/assets/javascripts/vue_pipelines_index/store.js.es6 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'app/assets') diff --git a/app/assets/javascripts/vue_pipelines_index/store.js.es6 b/app/assets/javascripts/vue_pipelines_index/store.js.es6 index 359eab3f6c8..6d023a45b21 100644 --- a/app/assets/javascripts/vue_pipelines_index/store.js.es6 +++ b/app/assets/javascripts/vue_pipelines_index/store.js.es6 @@ -2,7 +2,7 @@ /* eslint-disable no-param-reassign */ ((gl) => { - const REALTIME = true; + const REALTIME = false; const PAGINATION_LIMIT = 31; const SLICE_LIMIT = 29; -- cgit v1.2.1 From fd9adc78824500928465d82c691fdd76e290672d Mon Sep 17 00:00:00 2001 From: Regis Date: Wed, 30 Nov 2016 02:30:03 -0600 Subject: eslint calm [ci skip] --- app/assets/javascripts/vue_pipelines_index/pipelines.js.es6 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'app/assets') diff --git a/app/assets/javascripts/vue_pipelines_index/pipelines.js.es6 b/app/assets/javascripts/vue_pipelines_index/pipelines.js.es6 index b4cdc5080a6..6ef335ab398 100644 --- a/app/assets/javascripts/vue_pipelines_index/pipelines.js.es6 +++ b/app/assets/javascripts/vue_pipelines_index/pipelines.js.es6 @@ -67,7 +67,7 @@ return ({}); }, addTimeInterval(id, that) { - this.allTimeIntervals.push({ id: id, component: that }); + this.allTimeIntervals.push({ id, component: that }); }, }, template: ` -- cgit v1.2.1 From 81ae6c7d0a38bb66289c5d83239255ce5cdfcea5 Mon Sep 17 00:00:00 2001 From: Regis Date: Wed, 30 Nov 2016 09:29:31 -0700 Subject: fire timeago interval no matter what --- app/assets/javascripts/vue_pipelines_index/time_ago.js.es6 | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) (limited to 'app/assets') diff --git a/app/assets/javascripts/vue_pipelines_index/time_ago.js.es6 b/app/assets/javascripts/vue_pipelines_index/time_ago.js.es6 index 505b1ee3490..c078e9459f0 100644 --- a/app/assets/javascripts/vue_pipelines_index/time_ago.js.es6 +++ b/app/assets/javascripts/vue_pipelines_index/time_ago.js.es6 @@ -1,8 +1,6 @@ /* global Vue, gl */ /* eslint-disable no-param-reassign */ ((gl) => { - const REALTIME = false; - gl.VueTimeAgo = Vue.extend({ data() { return { @@ -15,13 +13,11 @@ 'addTimeInterval', ], created() { - if (!REALTIME) { - this.timeInterval = setInterval(() => { - this.currentTime = new Date(); - }, 1000); + this.timeInterval = setInterval(() => { + this.currentTime = new Date(); + }, 1000); - this.addTimeInterval(this.timeInterval, this); - } + this.addTimeInterval(this.timeInterval, this); }, computed: { localTimeFinished() { -- cgit v1.2.1 From 6eb3728490cbf33ea3e401653a5da0ab290c6f52 Mon Sep 17 00:00:00 2001 From: Regis Date: Wed, 30 Nov 2016 09:30:06 -0700 Subject: format - [ci skip] --- app/assets/javascripts/vue_pipelines_index/time_ago.js.es6 | 4 ---- 1 file changed, 4 deletions(-) (limited to 'app/assets') diff --git a/app/assets/javascripts/vue_pipelines_index/time_ago.js.es6 b/app/assets/javascripts/vue_pipelines_index/time_ago.js.es6 index c078e9459f0..de6eec9bc5b 100644 --- a/app/assets/javascripts/vue_pipelines_index/time_ago.js.es6 +++ b/app/assets/javascripts/vue_pipelines_index/time_ago.js.es6 @@ -25,18 +25,14 @@ }, timeStopped() { const changeTime = this.currentTime; - const options = { weekday: 'long', year: 'numeric', month: 'short', day: 'numeric', }; - options.timeZoneName = 'short'; - const finished = this.pipeline.details.finished_at; - if (!finished && changeTime) return false; return ({ words: gl.utils.getTimeago().format(finished) }); }, -- cgit v1.2.1 From 3acee982037b1328df29dc867c83b83746f33e44 Mon Sep 17 00:00:00 2001 From: Regis Date: Thu, 1 Dec 2016 15:02:26 -0700 Subject: update styling for loading icon --- app/assets/javascripts/vue_pipelines_index/pipelines.js.es6 | 4 ++-- app/assets/stylesheets/pages/pipelines.scss | 5 +++++ 2 files changed, 7 insertions(+), 2 deletions(-) (limited to 'app/assets') diff --git a/app/assets/javascripts/vue_pipelines_index/pipelines.js.es6 b/app/assets/javascripts/vue_pipelines_index/pipelines.js.es6 index 6ef335ab398..61af9799ca4 100644 --- a/app/assets/javascripts/vue_pipelines_index/pipelines.js.es6 +++ b/app/assets/javascripts/vue_pipelines_index/pipelines.js.es6 @@ -72,7 +72,7 @@ }, template: `
    -
    +
    @@ -104,7 +104,7 @@
    -
    +
    Date: Thu, 1 Dec 2016 16:07:30 -0700 Subject: get commit component to render needed info - work on SVG loading next --- .../vue_pipelines_index/pipelines.js.es6 | 16 +++++-- .../javascripts/vue_pipelines_index/store.js.es6 | 54 +--------------------- 2 files changed, 13 insertions(+), 57 deletions(-) (limited to 'app/assets') diff --git a/app/assets/javascripts/vue_pipelines_index/pipelines.js.es6 b/app/assets/javascripts/vue_pipelines_index/pipelines.js.es6 index 61af9799ca4..e02c7dc528e 100644 --- a/app/assets/javascripts/vue_pipelines_index/pipelines.js.es6 +++ b/app/assets/javascripts/vue_pipelines_index/pipelines.js.es6 @@ -62,9 +62,17 @@ this.store.fetchDataLoop.call(this, Vue, this.pagenum, this.scope); }, author(pipeline) { - const author = pipeline.commit.author; + const { commit } = pipeline; + const author = commit.author; if (author) return author; - return ({}); + + const nonUser = { + avatar_url: commit.author_gravatar_url, + web_url: `mailto:${commit.author_email}`, + username: commit.author_name, + }; + + return nonUser; }, addTimeInterval(id, that) { this.allTimeIntervals.push({ id, component: that }); @@ -85,7 +93,7 @@
    { - const REALTIME = false; - const PAGINATION_LIMIT = 31; - const SLICE_LIMIT = 29; - - class RealtimePaginationUpdater { - constructor(pageData) { - this.pageData = pageData; - } - - updatePageDiff(apiResponse) { - const diffData = this.pageData.slice(0); - apiResponse.pipelines.forEach((newPipe, i) => { - if (newPipe.commit) { - diffData.unshift(newPipe); - } else { - const newMerge = Object.assign({}, diffData[i], newPipe); - diffData[i] = newMerge; - } - }); - if (diffData.length < PAGINATION_LIMIT) return diffData; - return diffData.slice(0, SLICE_LIMIT); - } - } - gl.PipelineStore = class { fetchDataLoop(Vue, pageNum, url) { const setVueResources = () => { Vue.activeResources = 1; }; @@ -61,46 +37,18 @@ this.pageRequest = false; subtractFromVueResources(); }, () => new Flash( - 'Something went wrong on our end.' - )); - - const goUpdate = () => - this.$http.get(`${url}?page=${pageNum}&updated_at=${this.updatedAt}`) - .then((response) => { - const res = JSON.parse(response.body); - const p = new RealtimePaginationUpdater(this.pipelines); - Vue.set(this, 'updatedAt', res.updated_at); - Vue.set(this, 'pipelines', p.updatePageDiff(res)); - Vue.set(this, 'count', res.count); - updatePipelineNums(this.count); - subtractFromVueResources(); - }, () => new Flash( - 'Something went wrong on our end.' + 'Something went wrong on our end.', )); resourceChecker(); goFetch(); - const poller = () => { - this.intervalId = setInterval(() => { - if (this.updatedAt) { - resourceChecker(); - if (Vue.activeResources > 1) return; - goUpdate(); - } - }, 3000); - }; - - if (REALTIME) poller(); - const removePipelineInterval = () => { this.allTimeIntervals.forEach(e => clearInterval(e.id)); - if (REALTIME) clearInterval(this.intervalId); }; const startIntervalLoops = () => { this.allTimeIntervals.forEach(e => e.component.startInterval()); - if (REALTIME) poller(); }; window.onbeforeunload = function onClose() { -- cgit v1.2.1 From 1e7f91f2d611b80e7537a56aefc3e31452eaf273 Mon Sep 17 00:00:00 2001 From: Regis Date: Thu, 1 Dec 2016 16:23:47 -0700 Subject: remove 30% width for commit column --- app/assets/stylesheets/pages/pipelines.scss | 2 -- 1 file changed, 2 deletions(-) (limited to 'app/assets') diff --git a/app/assets/stylesheets/pages/pipelines.scss b/app/assets/stylesheets/pages/pipelines.scss index 3b8d2268437..0002c57cb13 100644 --- a/app/assets/stylesheets/pages/pipelines.scss +++ b/app/assets/stylesheets/pages/pipelines.scss @@ -33,8 +33,6 @@ } .branch-commit { - width: 30%; - .branch-name { max-width: 195px; } -- cgit v1.2.1 From c55ba05228c719bf1e05818fb91200b3d60da990 Mon Sep 17 00:00:00 2001 From: Regis Date: Thu, 1 Dec 2016 18:08:34 -0700 Subject: add svg to pipeline index haml - prep for commit comp change - [ci skip] --- app/assets/javascripts/vue_pipelines_index/pipelines.js.es6 | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) (limited to 'app/assets') diff --git a/app/assets/javascripts/vue_pipelines_index/pipelines.js.es6 b/app/assets/javascripts/vue_pipelines_index/pipelines.js.es6 index e02c7dc528e..2e126434ea5 100644 --- a/app/assets/javascripts/vue_pipelines_index/pipelines.js.es6 +++ b/app/assets/javascripts/vue_pipelines_index/pipelines.js.es6 @@ -74,6 +74,15 @@ return nonUser; }, + ref(pipeline) { + const { ref } = pipeline; + const commitRef = { + name: ref.name, + tag: ref['tag?'], + ref_url: ref.url, + }; + return commitRef; + }, addTimeInterval(id, that) { this.allTimeIntervals.push({ id, component: that }); }, @@ -92,10 +101,10 @@ -- cgit v1.2.1 From a96499cf3cc8189e9f4e7f450b175b5a0ab001af Mon Sep 17 00:00:00 2001 From: Regis Date: Fri, 2 Dec 2016 10:18:23 -0700 Subject: reduce heavy references --- app/assets/javascripts/vue_pipelines_index/pipelines.js.es6 | 4 ++-- app/assets/javascripts/vue_pipelines_index/store.js.es6 | 2 +- app/assets/javascripts/vue_pipelines_index/time_ago.js.es6 | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) (limited to 'app/assets') diff --git a/app/assets/javascripts/vue_pipelines_index/pipelines.js.es6 b/app/assets/javascripts/vue_pipelines_index/pipelines.js.es6 index 2e126434ea5..9c27cb60615 100644 --- a/app/assets/javascripts/vue_pipelines_index/pipelines.js.es6 +++ b/app/assets/javascripts/vue_pipelines_index/pipelines.js.es6 @@ -83,8 +83,8 @@ }; return commitRef; }, - addTimeInterval(id, that) { - this.allTimeIntervals.push({ id, component: that }); + addTimeInterval(id, start) { + this.allTimeIntervals.push({ id, start }); }, }, template: ` diff --git a/app/assets/javascripts/vue_pipelines_index/store.js.es6 b/app/assets/javascripts/vue_pipelines_index/store.js.es6 index 2dc1fd571f1..5f07617a602 100644 --- a/app/assets/javascripts/vue_pipelines_index/store.js.es6 +++ b/app/assets/javascripts/vue_pipelines_index/store.js.es6 @@ -48,7 +48,7 @@ }; const startIntervalLoops = () => { - this.allTimeIntervals.forEach(e => e.component.startInterval()); + this.allTimeIntervals.forEach(e => e.start()); }; window.onbeforeunload = function onClose() { diff --git a/app/assets/javascripts/vue_pipelines_index/time_ago.js.es6 b/app/assets/javascripts/vue_pipelines_index/time_ago.js.es6 index de6eec9bc5b..8aae777e9f1 100644 --- a/app/assets/javascripts/vue_pipelines_index/time_ago.js.es6 +++ b/app/assets/javascripts/vue_pipelines_index/time_ago.js.es6 @@ -17,7 +17,7 @@ this.currentTime = new Date(); }, 1000); - this.addTimeInterval(this.timeInterval, this); + this.addTimeInterval(this.timeInterval, this.startInterval); }, computed: { localTimeFinished() { -- cgit v1.2.1 From 18b559c9be5cf903569f01ae878ed71415b8a1a8 Mon Sep 17 00:00:00 2001 From: Regis Date: Fri, 2 Dec 2016 11:42:26 -0700 Subject: deal with preventing DDOS --- .../javascripts/vue_pipelines_index/store.js.es6 | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) (limited to 'app/assets') diff --git a/app/assets/javascripts/vue_pipelines_index/store.js.es6 b/app/assets/javascripts/vue_pipelines_index/store.js.es6 index 5f07617a602..ca537a9c20d 100644 --- a/app/assets/javascripts/vue_pipelines_index/store.js.es6 +++ b/app/assets/javascripts/vue_pipelines_index/store.js.es6 @@ -43,7 +43,7 @@ resourceChecker(); goFetch(); - const removePipelineInterval = () => { + const removePipelineIntervals = () => { this.allTimeIntervals.forEach(e => clearInterval(e.id)); }; @@ -51,17 +51,18 @@ this.allTimeIntervals.forEach(e => e.start()); }; - window.onbeforeunload = function onClose() { - removePipelineInterval(); + const removeAll = () => { + removePipelineIntervals(); + window.removeEventListener('beforeunload', () => {}); + window.removeEventListener('focus', () => {}); + window.removeEventListener('blur', () => {}); + document.removeEventListener('page:fetch', () => {}); }; - window.onblur = function remove() { - removePipelineInterval(); - }; - - window.onfocus = function start() { - startIntervalLoops(); - }; + window.addEventListener('beforeunload', removePipelineIntervals); + window.addEventListener('focus', startIntervalLoops); + window.addEventListener('blur', removePipelineIntervals); + document.addEventListener('page:fetch', removeAll); } }; })(window.gl || (window.gl = {})); -- cgit v1.2.1 From 004a9c6bccb840b97616d25c0ff24a8de62ff496 Mon Sep 17 00:00:00 2001 From: Regis Date: Fri, 2 Dec 2016 11:52:20 -0700 Subject: change to new prop for commit component - [ci skip] --- app/assets/javascripts/vue_pipelines_index/pipelines.js.es6 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'app/assets') diff --git a/app/assets/javascripts/vue_pipelines_index/pipelines.js.es6 b/app/assets/javascripts/vue_pipelines_index/pipelines.js.es6 index 9c27cb60615..656ac0a25f1 100644 --- a/app/assets/javascripts/vue_pipelines_index/pipelines.js.es6 +++ b/app/assets/javascripts/vue_pipelines_index/pipelines.js.es6 @@ -101,10 +101,10 @@ -- cgit v1.2.1 From d6061b739b7f27d9b7ee9f6ff1e7a635c7bac0b3 Mon Sep 17 00:00:00 2001 From: Regis Date: Fri, 2 Dec 2016 15:05:01 -0700 Subject: much simpler time logic - clean up - [ci skip] --- .../vue_pipelines_index/pipelines.js.es6 | 6 ++-- .../javascripts/vue_pipelines_index/store.js.es6 | 33 ++++++++++++++-------- .../vue_pipelines_index/time_ago.js.es6 | 15 ++-------- 3 files changed, 26 insertions(+), 28 deletions(-) (limited to 'app/assets') diff --git a/app/assets/javascripts/vue_pipelines_index/pipelines.js.es6 b/app/assets/javascripts/vue_pipelines_index/pipelines.js.es6 index 656ac0a25f1..bba9a82e6ec 100644 --- a/app/assets/javascripts/vue_pipelines_index/pipelines.js.es6 +++ b/app/assets/javascripts/vue_pipelines_index/pipelines.js.es6 @@ -2,7 +2,6 @@ /* eslint-disable no-param-reassign, no-bitwise*/ ((gl) => { - const REALTIME = false; const SPREAD = '...'; const PREV = 'Prev'; const NEXT = 'Next'; @@ -24,7 +23,7 @@ data() { return { pipelines: [], - allTimeIntervals: [], + timeLoopInterval: '', intervalId: '', updatedAt: '', pagenum: 1, @@ -57,7 +56,7 @@ if (text === FIRST) this.pagenum = 1; window.history.pushState({}, null, `?p=${this.pagenum}`); - if (REALTIME) clearInterval(this.intervalId); + clearInterval(this.timeLoopInterval); this.pageRequest = true; this.store.fetchDataLoop.call(this, Vue, this.pagenum, this.scope); }, @@ -113,7 +112,6 @@ diff --git a/app/assets/javascripts/vue_pipelines_index/store.js.es6 b/app/assets/javascripts/vue_pipelines_index/store.js.es6 index ca537a9c20d..1a473c51521 100644 --- a/app/assets/javascripts/vue_pipelines_index/store.js.es6 +++ b/app/assets/javascripts/vue_pipelines_index/store.js.es6 @@ -1,5 +1,5 @@ /* global gl, Flash */ -/* eslint-disable no-param-reassign */ +/* eslint-disable no-param-reassign, no-underscore-dangle */ ((gl) => { gl.PipelineStore = class { @@ -43,25 +43,36 @@ resourceChecker(); goFetch(); - const removePipelineIntervals = () => { - this.allTimeIntervals.forEach(e => clearInterval(e.id)); + const startTimeLoops = () => { + this.timeLoopInterval = setInterval(() => { + console.log('TIME LOOP'); + this.$children + .filter(e => e.$options._componentTag === 'time-ago') + .forEach(e => e.changeTime()); + }, 1000); + }; + + startTimeLoops(); + + const removeTimeIntervals = () => { + clearInterval(this.timeLoopInterval); }; const startIntervalLoops = () => { - this.allTimeIntervals.forEach(e => e.start()); + startTimeLoops(); }; const removeAll = () => { - removePipelineIntervals(); - window.removeEventListener('beforeunload', () => {}); - window.removeEventListener('focus', () => {}); - window.removeEventListener('blur', () => {}); - document.removeEventListener('page:fetch', () => {}); + removeTimeIntervals(); + window.removeEventListener('beforeunload', removeTimeIntervals); + window.removeEventListener('focus', startIntervalLoops); + window.removeEventListener('blur', removeTimeIntervals); + document.removeEventListener('page:fetch', removeTimeIntervals); }; - window.addEventListener('beforeunload', removePipelineIntervals); + window.addEventListener('beforeunload', removeTimeIntervals); window.addEventListener('focus', startIntervalLoops); - window.addEventListener('blur', removePipelineIntervals); + window.addEventListener('blur', removeTimeIntervals); document.addEventListener('page:fetch', removeAll); } }; diff --git a/app/assets/javascripts/vue_pipelines_index/time_ago.js.es6 b/app/assets/javascripts/vue_pipelines_index/time_ago.js.es6 index 8aae777e9f1..33a1744fa82 100644 --- a/app/assets/javascripts/vue_pipelines_index/time_ago.js.es6 +++ b/app/assets/javascripts/vue_pipelines_index/time_ago.js.es6 @@ -4,21 +4,12 @@ gl.VueTimeAgo = Vue.extend({ data() { return { - timeInterval: '', currentTime: new Date(), }; }, props: [ 'pipeline', - 'addTimeInterval', ], - created() { - this.timeInterval = setInterval(() => { - this.currentTime = new Date(); - }, 1000); - - this.addTimeInterval(this.timeInterval, this.startInterval); - }, computed: { localTimeFinished() { return gl.utils.formatDate(this.pipeline.details.finished_at); @@ -44,10 +35,8 @@ if (duration !== null) return duration; return false; }, - startInterval() { - this.timeInterval = setInterval(() => { - this.currentTime = new Date(); - }, 1000); + changeTime() { + this.currentTime = new Date(); }, }, template: ` -- cgit v1.2.1 From cd111ffabd36c44ec2fd9c52d5c35e7cdc936c67 Mon Sep 17 00:00:00 2001 From: Regis Date: Fri, 2 Dec 2016 15:10:31 -0700 Subject: anon callbacks since intervals removed in function prior - [ci skip] --- app/assets/javascripts/vue_pipelines_index/store.js.es6 | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) (limited to 'app/assets') diff --git a/app/assets/javascripts/vue_pipelines_index/store.js.es6 b/app/assets/javascripts/vue_pipelines_index/store.js.es6 index 1a473c51521..79bf56b5f69 100644 --- a/app/assets/javascripts/vue_pipelines_index/store.js.es6 +++ b/app/assets/javascripts/vue_pipelines_index/store.js.es6 @@ -45,7 +45,6 @@ const startTimeLoops = () => { this.timeLoopInterval = setInterval(() => { - console.log('TIME LOOP'); this.$children .filter(e => e.$options._componentTag === 'time-ago') .forEach(e => e.changeTime()); @@ -64,10 +63,10 @@ const removeAll = () => { removeTimeIntervals(); - window.removeEventListener('beforeunload', removeTimeIntervals); - window.removeEventListener('focus', startIntervalLoops); - window.removeEventListener('blur', removeTimeIntervals); - document.removeEventListener('page:fetch', removeTimeIntervals); + window.removeEventListener('beforeunload', () => {}); + window.removeEventListener('focus', () => {}); + window.removeEventListener('blur', () => {}); + document.removeEventListener('page:fetch', () => {}); }; window.addEventListener('beforeunload', removeTimeIntervals); -- cgit v1.2.1 From 312c504f618513a87d817cad74c059506fac7a49 Mon Sep 17 00:00:00 2001 From: Regis Date: Mon, 5 Dec 2016 13:17:23 -0700 Subject: can render all tabs for pipelines - remove uneeded properties - [ci skip] --- .../javascripts/vue_pipelines_index/index.js.es6 | 46 +++++++++++----------- .../vue_pipelines_index/pipelines.js.es6 | 30 +++++++++++--- .../javascripts/vue_pipelines_index/store.js.es6 | 5 +-- 3 files changed, 50 insertions(+), 31 deletions(-) (limited to 'app/assets') diff --git a/app/assets/javascripts/vue_pipelines_index/index.js.es6 b/app/assets/javascripts/vue_pipelines_index/index.js.es6 index 2bd8d5d327f..1e4ee8875fb 100644 --- a/app/assets/javascripts/vue_pipelines_index/index.js.es6 +++ b/app/assets/javascripts/vue_pipelines_index/index.js.es6 @@ -17,30 +17,32 @@ //= require ./pipelines.js.es6 (() => { - const url = window.location.href; - if (~url.indexOf('scope') && !~url.indexOf('scope=pipelines')) return null; - const project = document.querySelector('.pipelines'); + const entry = document.querySelector('.vue-pipelines-index'); Vue.use(VueResource); - return new Vue({ - el: '.vue-pipelines-index', - data: { - scope: project.dataset.url, - store: new gl.PipelineStore(), - }, - components: { - 'vue-pipelines': gl.VuePipelines, - }, - template: ` -
    - - -
    - `, - }); + if (entry) { + return new Vue({ + el: entry, + data: { + scope: project.dataset.url, + store: new gl.PipelineStore(), + }, + components: { + 'vue-pipelines': gl.VuePipelines, + }, + template: ` +
    + + +
    + `, + }); + } + + return null; })(); diff --git a/app/assets/javascripts/vue_pipelines_index/pipelines.js.es6 b/app/assets/javascripts/vue_pipelines_index/pipelines.js.es6 index bba9a82e6ec..1fd3a2a4d99 100644 --- a/app/assets/javascripts/vue_pipelines_index/pipelines.js.es6 +++ b/app/assets/javascripts/vue_pipelines_index/pipelines.js.es6 @@ -8,6 +8,16 @@ const FIRST = '<< First'; const LAST = 'Last >>'; + const getParameterByName = (name) => { + const url = window.location.href; + name = name.replace(/[[\]]/g, '\\$&'); + const regex = new RegExp(`[?&]${name}(=([^&#]*)|&|#|$)`); + const results = regex.exec(url); + if (!results) return null; + if (!results[2]) return ''; + return decodeURIComponent(results[2].replace(/\+/g, ' ')); + }; + gl.VuePipelines = Vue.extend({ components: { runningPipeline: gl.VueRunningPipeline, @@ -25,8 +35,8 @@ pipelines: [], timeLoopInterval: '', intervalId: '', - updatedAt: '', pagenum: 1, + apiScope: 'all', count: { all: 0, running_or_pending: 0, @@ -39,11 +49,19 @@ 'store', ], created() { - const url = window.location.toString(); - if (~url.indexOf('?') && !~url.indexOf('scope=pipelines')) { - this.pagenum = url.split('?')[1].split('=')[1]; - } - this.store.fetchDataLoop.call(this, Vue, this.pagenum, this.scope); + const pagenum = getParameterByName('p'); + const scope = getParameterByName('scope'); + + if (pagenum) this.pagenum = pagenum; + if (scope) this.apiScope = scope; + + this.store.fetchDataLoop.call( + this, + Vue, + this.pagenum, + this.scope, + this.apiScope, + ); }, methods: { changepage(e, last) { diff --git a/app/assets/javascripts/vue_pipelines_index/store.js.es6 b/app/assets/javascripts/vue_pipelines_index/store.js.es6 index 79bf56b5f69..93e4a640012 100644 --- a/app/assets/javascripts/vue_pipelines_index/store.js.es6 +++ b/app/assets/javascripts/vue_pipelines_index/store.js.es6 @@ -3,7 +3,7 @@ ((gl) => { gl.PipelineStore = class { - fetchDataLoop(Vue, pageNum, url) { + fetchDataLoop(Vue, pageNum, url, apiScope) { const setVueResources = () => { Vue.activeResources = 1; }; const resetVueResources = () => { Vue.activeResources = 0; }; const addToVueResources = () => { Vue.activeResources += 1; }; @@ -27,10 +27,9 @@ }; const goFetch = () => - this.$http.get(`${url}?page=${pageNum}`) + this.$http.get(`${url}?scope=${apiScope}&page=${pageNum}`) .then((response) => { const res = JSON.parse(response.body); - Vue.set(this, 'updatedAt', res.updated_at); Vue.set(this, 'pipelines', res.pipelines); Vue.set(this, 'count', res.count); updatePipelineNums(this.count); -- cgit v1.2.1 From a0055435438e956b09bb92b6bbf618fbf005e46c Mon Sep 17 00:00:00 2001 From: Regis Date: Mon, 5 Dec 2016 15:52:02 -0700 Subject: tried css only approach didn't work for now - adding all icons to stages --- app/assets/javascripts/vue_icons/index.js.es6 | 55 ++++------------------ .../javascripts/vue_pipelines_index/stage.js.es6 | 4 ++ 2 files changed, 13 insertions(+), 46 deletions(-) (limited to 'app/assets') diff --git a/app/assets/javascripts/vue_icons/index.js.es6 b/app/assets/javascripts/vue_icons/index.js.es6 index 84a19348862..6ddf8592cbe 100644 --- a/app/assets/javascripts/vue_icons/index.js.es6 +++ b/app/assets/javascripts/vue_icons/index.js.es6 @@ -5,86 +5,49 @@ ((gl) => { gl.VueRunningIcon = Vue.extend({ template: ` - - - - - - + `, }); gl.VuePendingIcon = Vue.extend({ template: ` - - - - - - + `, }); gl.VueSuccessIcon = Vue.extend({ template: ` - - - - - - + `, }); gl.VueFailedIcon = Vue.extend({ template: ` - - - - - - + `, }); gl.VueCreatedIcon = Vue.extend({ template: ` - - - - + `, }); gl.VueCanceledIcon = Vue.extend({ template: ` - - - - - - + `, }); gl.VueSkippedIcon = Vue.extend({ template: ` - - - - - + `, }); - gl.VueUnstableIcon = Vue.extend({ + gl.VueWarningIcon = Vue.extend({ template: ` - - - - - - `, }); })(window.gl || (window.gl = {})); diff --git a/app/assets/javascripts/vue_pipelines_index/stage.js.es6 b/app/assets/javascripts/vue_pipelines_index/stage.js.es6 index e5f9178a796..38b993d4b51 100644 --- a/app/assets/javascripts/vue_pipelines_index/stage.js.es6 +++ b/app/assets/javascripts/vue_pipelines_index/stage.js.es6 @@ -10,6 +10,8 @@ 'success-icon': gl.VueSuccessIcon, 'created-icon': gl.VueCreatedIcon, 'canceled-icon': gl.VueCanceledIcon, + 'warning-icon': gl.VueWarningIcon, + 'skipped-icon': gl.VueSkippedIcon, }, props: ['stage'], computed: { @@ -32,6 +34,8 @@ + + `, }); -- cgit v1.2.1 From cc198c1f94520e756ac08ddb4c8bef6a75962cda Mon Sep 17 00:00:00 2001 From: Regis Date: Mon, 5 Dec 2016 16:01:49 -0700 Subject: change unstable to warning [ci skip] --- .../vue_pipelines_status/unstable.js.es6 | 23 ---------------------- .../vue_pipelines_status/warning.js.es6 | 23 ++++++++++++++++++++++ 2 files changed, 23 insertions(+), 23 deletions(-) delete mode 100644 app/assets/javascripts/vue_pipelines_status/unstable.js.es6 create mode 100644 app/assets/javascripts/vue_pipelines_status/warning.js.es6 (limited to 'app/assets') diff --git a/app/assets/javascripts/vue_pipelines_status/unstable.js.es6 b/app/assets/javascripts/vue_pipelines_status/unstable.js.es6 deleted file mode 100644 index 27fd29b9d80..00000000000 --- a/app/assets/javascripts/vue_pipelines_status/unstable.js.es6 +++ /dev/null @@ -1,23 +0,0 @@ -/* global Vue, gl */ -/* eslint-disable no-param-reassign */ - -((gl) => { - gl.VueUnstableScope = Vue.extend({ - components: { - 'vue-unstable-icon': gl.VueUnstableIcon, - }, - props: [ - 'pipeline', - ], - template: ` - - - - -  unstable - - - - `, - }); -})(window.gl || (window.gl = {})); diff --git a/app/assets/javascripts/vue_pipelines_status/warning.js.es6 b/app/assets/javascripts/vue_pipelines_status/warning.js.es6 new file mode 100644 index 00000000000..1a8b70d82f1 --- /dev/null +++ b/app/assets/javascripts/vue_pipelines_status/warning.js.es6 @@ -0,0 +1,23 @@ +/* global Vue, gl */ +/* eslint-disable no-param-reassign */ + +((gl) => { + gl.VueWarningScope = Vue.extend({ + components: { + 'vue-warning-icon': gl.VueWarningIcon, + }, + props: [ + 'pipeline', + ], + template: ` + + + + +  warning + + + + `, + }); +})(window.gl || (window.gl = {})); -- cgit v1.2.1 From bdd6b841b0369fcadbcd375905c37476415fa100 Mon Sep 17 00:00:00 2001 From: Regis Date: Mon, 5 Dec 2016 16:20:34 -0700 Subject: require correct file [ci skip] --- app/assets/javascripts/vue_pipelines_status/index.js.es6 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'app/assets') diff --git a/app/assets/javascripts/vue_pipelines_status/index.js.es6 b/app/assets/javascripts/vue_pipelines_status/index.js.es6 index 712ac2644e5..c48b4adb661 100644 --- a/app/assets/javascripts/vue_pipelines_status/index.js.es6 +++ b/app/assets/javascripts/vue_pipelines_status/index.js.es6 @@ -3,5 +3,5 @@ //= require ./running.js.es6 //= require ./canceled.js.es6 //= require ./status.js.es6 -//= require ./unstable.js.es6 +//= require ./warning.js.es6 //= require ./skipped.js.es6 -- cgit v1.2.1 From 62b3b28b0b1522ff57e76b1a68fb2c77e0930abe Mon Sep 17 00:00:00 2001 From: Regis Date: Tue, 6 Dec 2016 09:03:45 -0700 Subject: remove all files related to Vue SVG rendering - use dynamic svg loading --- app/assets/javascripts/vue_icons/index.js.es6 | 53 ---------------------- .../javascripts/vue_pipelines_index/index.js.es6 | 1 + .../javascripts/vue_pipelines_index/stage.js.es6 | 25 +++------- .../javascripts/vue_pipelines_index/status.js.es6 | 34 ++++++++++++++ .../vue_pipelines_status/canceled.js.es6 | 23 ---------- .../vue_pipelines_status/created.js.es6 | 23 ---------- .../javascripts/vue_pipelines_status/failed.js.es6 | 23 ---------- .../javascripts/vue_pipelines_status/index.js.es6 | 7 --- .../vue_pipelines_status/pending.js.es6 | 23 ---------- .../vue_pipelines_status/running.js.es6 | 23 ---------- .../vue_pipelines_status/skipped.js.es6 | 23 ---------- .../javascripts/vue_pipelines_status/status.js.es6 | 52 --------------------- .../vue_pipelines_status/warning.js.es6 | 23 ---------- 13 files changed, 42 insertions(+), 291 deletions(-) delete mode 100644 app/assets/javascripts/vue_icons/index.js.es6 create mode 100644 app/assets/javascripts/vue_pipelines_index/status.js.es6 delete mode 100644 app/assets/javascripts/vue_pipelines_status/canceled.js.es6 delete mode 100644 app/assets/javascripts/vue_pipelines_status/created.js.es6 delete mode 100644 app/assets/javascripts/vue_pipelines_status/failed.js.es6 delete mode 100644 app/assets/javascripts/vue_pipelines_status/index.js.es6 delete mode 100644 app/assets/javascripts/vue_pipelines_status/pending.js.es6 delete mode 100644 app/assets/javascripts/vue_pipelines_status/running.js.es6 delete mode 100644 app/assets/javascripts/vue_pipelines_status/skipped.js.es6 delete mode 100644 app/assets/javascripts/vue_pipelines_status/status.js.es6 delete mode 100644 app/assets/javascripts/vue_pipelines_status/warning.js.es6 (limited to 'app/assets') diff --git a/app/assets/javascripts/vue_icons/index.js.es6 b/app/assets/javascripts/vue_icons/index.js.es6 deleted file mode 100644 index 6ddf8592cbe..00000000000 --- a/app/assets/javascripts/vue_icons/index.js.es6 +++ /dev/null @@ -1,53 +0,0 @@ -//= require vue -/* global Vue, gl */ -/* eslint-disable no-param-reassign */ - -((gl) => { - gl.VueRunningIcon = Vue.extend({ - template: ` - - `, - }); - - gl.VuePendingIcon = Vue.extend({ - template: ` - - `, - }); - - gl.VueSuccessIcon = Vue.extend({ - template: ` - - `, - }); - - gl.VueFailedIcon = Vue.extend({ - template: ` - - `, - }); - - gl.VueCreatedIcon = Vue.extend({ - template: ` - - `, - }); - - gl.VueCanceledIcon = Vue.extend({ - template: ` - - `, - }); - - gl.VueSkippedIcon = Vue.extend({ - template: ` - - `, - }); - - gl.VueWarningIcon = Vue.extend({ - template: ` - - `, - }); -})(window.gl || (window.gl = {})); diff --git a/app/assets/javascripts/vue_pipelines_index/index.js.es6 b/app/assets/javascripts/vue_pipelines_index/index.js.es6 index 1e4ee8875fb..c454d8672b3 100644 --- a/app/assets/javascripts/vue_pipelines_index/index.js.es6 +++ b/app/assets/javascripts/vue_pipelines_index/index.js.es6 @@ -6,6 +6,7 @@ //= require vue-resource //= require ./object_assign.js.es6 +//= require ./status.js.es6 //= require ./store.js.es6 //= require ./pipeline_url.js.es6 //= require ./pipeline_head.js.es6 diff --git a/app/assets/javascripts/vue_pipelines_index/stage.js.es6 b/app/assets/javascripts/vue_pipelines_index/stage.js.es6 index 38b993d4b51..d8e3f1c3dcd 100644 --- a/app/assets/javascripts/vue_pipelines_index/stage.js.es6 +++ b/app/assets/javascripts/vue_pipelines_index/stage.js.es6 @@ -3,16 +3,6 @@ ((gl) => { gl.VueStage = Vue.extend({ - components: { - 'running-icon': gl.VueRunningIcon, - 'pending-icon': gl.VuePendingIcon, - 'failed-icon': gl.VueFailedIcon, - 'success-icon': gl.VueSuccessIcon, - 'created-icon': gl.VueCreatedIcon, - 'canceled-icon': gl.VueCanceledIcon, - 'warning-icon': gl.VueWarningIcon, - 'skipped-icon': gl.VueSkippedIcon, - }, props: ['stage'], computed: { buildStatus() { @@ -21,21 +11,20 @@ tooltip() { return `has-tooltip ci-status-icon-${this.stage.status}`; }, + svg() { + return document + .querySelector( + `.${this.stage.status}-icon-svg.hidden`, + ).innerHTML; + }, }, template: ` - - - - - - - - `, }); diff --git a/app/assets/javascripts/vue_pipelines_index/status.js.es6 b/app/assets/javascripts/vue_pipelines_index/status.js.es6 new file mode 100644 index 00000000000..bbdc357035f --- /dev/null +++ b/app/assets/javascripts/vue_pipelines_index/status.js.es6 @@ -0,0 +1,34 @@ +/* global Vue, gl */ +/* eslint-disable no-param-reassign */ + +((gl) => { + gl.VueStatusScope = Vue.extend({ + props: [ + 'pipeline', + ], + computed: { + cssClasses() { + const cssObject = {}; + cssObject['ci-status'] = true; + cssObject[`ci-${this.pipeline.details.status}`] = true; + return cssObject; + }, + svg() { + return document + .querySelector( + `.${this.pipeline.details.status}-icon-svg.hidden`, + ).innerHTML; + }, + }, + template: ` + + + + +  {{pipeline.details.status}} + + + + `, + }); +})(window.gl || (window.gl = {})); diff --git a/app/assets/javascripts/vue_pipelines_status/canceled.js.es6 b/app/assets/javascripts/vue_pipelines_status/canceled.js.es6 deleted file mode 100644 index 20ca8ad5ebb..00000000000 --- a/app/assets/javascripts/vue_pipelines_status/canceled.js.es6 +++ /dev/null @@ -1,23 +0,0 @@ -/* global Vue, gl */ -/* eslint-disable no-param-reassign */ - -((gl) => { - gl.VueCanceledScope = Vue.extend({ - components: { - 'vue-canceled-icon': gl.VueCanceledIcon, - }, - props: [ - 'pipeline', - ], - template: ` - - - - -  canceled - - - - `, - }); -})(window.gl || (window.gl = {})); diff --git a/app/assets/javascripts/vue_pipelines_status/created.js.es6 b/app/assets/javascripts/vue_pipelines_status/created.js.es6 deleted file mode 100644 index b74566b7341..00000000000 --- a/app/assets/javascripts/vue_pipelines_status/created.js.es6 +++ /dev/null @@ -1,23 +0,0 @@ -/* global Vue, gl */ -/* eslint-disable no-param-reassign */ - -((gl) => { - gl.VueCreatedScope = Vue.extend({ - components: { - 'vue-created-icon': gl.VueCreatedIcon, - }, - props: [ - 'pipeline', - ], - template: ` - - - - -  failed - - - - `, - }); -})(window.gl || (window.gl = {})); diff --git a/app/assets/javascripts/vue_pipelines_status/failed.js.es6 b/app/assets/javascripts/vue_pipelines_status/failed.js.es6 deleted file mode 100644 index 0988e2c04ab..00000000000 --- a/app/assets/javascripts/vue_pipelines_status/failed.js.es6 +++ /dev/null @@ -1,23 +0,0 @@ -/* global Vue, gl */ -/* eslint-disable no-param-reassign */ - -((gl) => { - gl.VueFailedScope = Vue.extend({ - components: { - 'vue-failed-icon': gl.VueFailedIcon, - }, - props: [ - 'pipeline', - ], - template: ` - - - - -  failed - - - - `, - }); -})(window.gl || (window.gl = {})); diff --git a/app/assets/javascripts/vue_pipelines_status/index.js.es6 b/app/assets/javascripts/vue_pipelines_status/index.js.es6 deleted file mode 100644 index c48b4adb661..00000000000 --- a/app/assets/javascripts/vue_pipelines_status/index.js.es6 +++ /dev/null @@ -1,7 +0,0 @@ -//= require ./pending.js.es6 -//= require ./failed.js.es6 -//= require ./running.js.es6 -//= require ./canceled.js.es6 -//= require ./status.js.es6 -//= require ./warning.js.es6 -//= require ./skipped.js.es6 diff --git a/app/assets/javascripts/vue_pipelines_status/pending.js.es6 b/app/assets/javascripts/vue_pipelines_status/pending.js.es6 deleted file mode 100644 index 579c6f71a2e..00000000000 --- a/app/assets/javascripts/vue_pipelines_status/pending.js.es6 +++ /dev/null @@ -1,23 +0,0 @@ -/* global Vue, gl */ -/* eslint-disable no-param-reassign */ - -((gl) => { - gl.VuePendingScope = Vue.extend({ - components: { - 'vue-pending-icon': gl.VuePendingIcon, - }, - props: [ - 'pipeline', - ], - template: ` - - - - -  pending - - - - `, - }); -})(window.gl || (window.gl = {})); diff --git a/app/assets/javascripts/vue_pipelines_status/running.js.es6 b/app/assets/javascripts/vue_pipelines_status/running.js.es6 deleted file mode 100644 index 57274422b15..00000000000 --- a/app/assets/javascripts/vue_pipelines_status/running.js.es6 +++ /dev/null @@ -1,23 +0,0 @@ -/* global Vue, gl */ -/* eslint-disable no-param-reassign */ - -((gl) => { - gl.VueRunningScope = Vue.extend({ - components: { - 'vue-running-icon': gl.VueRunningIcon, - }, - props: [ - 'pipeline', - ], - template: ` - - - - -  running - - - - `, - }); -})(window.gl || (window.gl = {})); diff --git a/app/assets/javascripts/vue_pipelines_status/skipped.js.es6 b/app/assets/javascripts/vue_pipelines_status/skipped.js.es6 deleted file mode 100644 index da904010607..00000000000 --- a/app/assets/javascripts/vue_pipelines_status/skipped.js.es6 +++ /dev/null @@ -1,23 +0,0 @@ -/* global Vue, gl */ -/* eslint-disable no-param-reassign */ - -((gl) => { - gl.VueSkippedScope = Vue.extend({ - components: { - 'vue-skipped-icon': gl.VueSkippedIcon, - }, - props: [ - 'pipeline', - ], - template: ` - - - - -  skipped - - - - `, - }); -})(window.gl || (window.gl = {})); diff --git a/app/assets/javascripts/vue_pipelines_status/status.js.es6 b/app/assets/javascripts/vue_pipelines_status/status.js.es6 deleted file mode 100644 index dfef19e21da..00000000000 --- a/app/assets/javascripts/vue_pipelines_status/status.js.es6 +++ /dev/null @@ -1,52 +0,0 @@ -/* global Vue, gl */ -/* eslint-disable no-param-reassign */ - -((gl) => { - gl.VueStatusScope = Vue.extend({ - components: { - 'vue-running-scope': gl.VueRunningScope, - 'vue-pending-scope': gl.VuePendingScope, - 'vue-failed-scope': gl.VueFailedScope, - 'vue-created-scope': gl.VueCreatedScope, - 'vue-canceled-scope': gl.VueCanceledScope, - 'vue-unstable-scope': gl.VueUnstableScope, - }, - props: [ - 'pipeline', - ], - template: ` - - - - - - - - - - - - - - - `, - }); -})(window.gl || (window.gl = {})); diff --git a/app/assets/javascripts/vue_pipelines_status/warning.js.es6 b/app/assets/javascripts/vue_pipelines_status/warning.js.es6 deleted file mode 100644 index 1a8b70d82f1..00000000000 --- a/app/assets/javascripts/vue_pipelines_status/warning.js.es6 +++ /dev/null @@ -1,23 +0,0 @@ -/* global Vue, gl */ -/* eslint-disable no-param-reassign */ - -((gl) => { - gl.VueWarningScope = Vue.extend({ - components: { - 'vue-warning-icon': gl.VueWarningIcon, - }, - props: [ - 'pipeline', - ], - template: ` - - - - -  warning - - - - `, - }); -})(window.gl || (window.gl = {})); -- cgit v1.2.1 From e9e498fdc75e257bf97ba6e02c9196fe662d49e1 Mon Sep 17 00:00:00 2001 From: Regis Date: Tue, 6 Dec 2016 13:08:37 -0700 Subject: no need for running icon comp --- app/assets/javascripts/vue_pipelines_index/pipeline_url.js.es6 | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) (limited to 'app/assets') diff --git a/app/assets/javascripts/vue_pipelines_index/pipeline_url.js.es6 b/app/assets/javascripts/vue_pipelines_index/pipeline_url.js.es6 index d9602b4209d..99ecdf3fed0 100644 --- a/app/assets/javascripts/vue_pipelines_index/pipeline_url.js.es6 +++ b/app/assets/javascripts/vue_pipelines_index/pipeline_url.js.es6 @@ -3,9 +3,6 @@ ((gl) => { gl.VuePipelineUrl = Vue.extend({ - components: { - 'vue-running-icon': gl.VueRunningIcon, - }, props: [ 'pipeline', ], @@ -56,7 +53,7 @@ yaml invalid stuck -- cgit v1.2.1 From 840ee74ef65eba0d9704b6a8ed4535b38c8d2675 Mon Sep 17 00:00:00 2001 From: Regis Date: Tue, 6 Dec 2016 22:33:27 -0700 Subject: remove unused components and polyfill - use interceptor for vue resource --- .../vue_pipelines_index/branch_commit.js.es6 | 64 ---------------------- .../javascripts/vue_pipelines_index/index.js.es6 | 3 +- .../vue_pipelines_index/interceptor.js.es6 | 8 +++ .../vue_pipelines_index/object_assign.js.es6 | 30 ---------- .../javascripts/vue_pipelines_index/store.js.es6 | 17 ------ 5 files changed, 9 insertions(+), 113 deletions(-) delete mode 100644 app/assets/javascripts/vue_pipelines_index/branch_commit.js.es6 create mode 100644 app/assets/javascripts/vue_pipelines_index/interceptor.js.es6 delete mode 100644 app/assets/javascripts/vue_pipelines_index/object_assign.js.es6 (limited to 'app/assets') diff --git a/app/assets/javascripts/vue_pipelines_index/branch_commit.js.es6 b/app/assets/javascripts/vue_pipelines_index/branch_commit.js.es6 deleted file mode 100644 index 6bebbd221fe..00000000000 --- a/app/assets/javascripts/vue_pipelines_index/branch_commit.js.es6 +++ /dev/null @@ -1,64 +0,0 @@ -/* global Vue, gl */ -/* eslint-disable no-param-reassign */ - -((gl) => { - gl.VueBranchCommit = Vue.extend({ - props: ['pipeline'], - computed: { - mailto() { - return `mailto:${this.pipeline.commit.author_email}`; - }, - alt() { - return `${this.pipeline.commit.author_name}'s avatar`; - }, - avatarUrl() { - const author = this.pipeline.commit.author; - if (author) return author.avatar_url; - return this.pipeline.commit.author_gravatar_url; - }, - }, - template: ` - -
    - -
    - - {{pipeline.ref.name}} - -
    - - - -
    - - {{pipeline.commit.short_id}} - -

    - - - - - - {{pipeline.commit.title}} - -

    - - `, - }); -})(window.gl || (window.gl = {})); diff --git a/app/assets/javascripts/vue_pipelines_index/index.js.es6 b/app/assets/javascripts/vue_pipelines_index/index.js.es6 index c454d8672b3..25f5c796a60 100644 --- a/app/assets/javascripts/vue_pipelines_index/index.js.es6 +++ b/app/assets/javascripts/vue_pipelines_index/index.js.es6 @@ -5,7 +5,7 @@ //= require vue-resource -//= require ./object_assign.js.es6 +//= require ./interceptor.js.es6 //= require ./status.js.es6 //= require ./store.js.es6 //= require ./pipeline_url.js.es6 @@ -13,7 +13,6 @@ //= require ./stage.js.es6 //= require ./stages.js.es6 //= require ./pipeline_actions.js.es6 -//= require ./branch_commit.js.es6 //= require ./time_ago.js.es6 //= require ./pipelines.js.es6 diff --git a/app/assets/javascripts/vue_pipelines_index/interceptor.js.es6 b/app/assets/javascripts/vue_pipelines_index/interceptor.js.es6 new file mode 100644 index 00000000000..80f137ca12e --- /dev/null +++ b/app/assets/javascripts/vue_pipelines_index/interceptor.js.es6 @@ -0,0 +1,8 @@ +/* eslint-disable */ +Vue.http.interceptors.push((request, next) => { + Vue.activeResources = Vue.activeResources ? Vue.activeResources + 1 : 1; + + next(function (response) { + Vue.activeResources--; + }); +}); diff --git a/app/assets/javascripts/vue_pipelines_index/object_assign.js.es6 b/app/assets/javascripts/vue_pipelines_index/object_assign.js.es6 deleted file mode 100644 index 05a5a7da1c3..00000000000 --- a/app/assets/javascripts/vue_pipelines_index/object_assign.js.es6 +++ /dev/null @@ -1,30 +0,0 @@ -/* eslint-disable */ - -/* global Vue, gl */ -/* eslint-disable no-param-reassign */ -(() => { - if (typeof Object.assign != 'function') { - (function () { - Object.assign = function (target) { - 'use strict'; - // We must check against these specific cases. - if (target === undefined || target === null) { - throw new TypeError('Cannot convert undefined or null to object'); - } - - var output = Object(target); - for (var index = 1; index < arguments.length; index++) { - var source = arguments[index]; - if (source !== undefined && source !== null) { - for (var nextKey in source) { - if (source.hasOwnProperty(nextKey)) { - output[nextKey] = source[nextKey]; - } - } - } - } - return output; - }; - })(); - } -})(); diff --git a/app/assets/javascripts/vue_pipelines_index/store.js.es6 b/app/assets/javascripts/vue_pipelines_index/store.js.es6 index 93e4a640012..49b77454314 100644 --- a/app/assets/javascripts/vue_pipelines_index/store.js.es6 +++ b/app/assets/javascripts/vue_pipelines_index/store.js.es6 @@ -4,13 +4,6 @@ ((gl) => { gl.PipelineStore = class { fetchDataLoop(Vue, pageNum, url, apiScope) { - const setVueResources = () => { Vue.activeResources = 1; }; - const resetVueResources = () => { Vue.activeResources = 0; }; - const addToVueResources = () => { Vue.activeResources += 1; }; - const subtractFromVueResources = () => { Vue.activeResources -= 1; }; - - resetVueResources(); - const updatePipelineNums = (count) => { const { all } = count; const running = count.running_or_pending; @@ -18,14 +11,6 @@ document.querySelector('.js-running-count').innerHTML = running; }; - const resourceChecker = () => { - if (Vue.activeResources === 0) { - setVueResources(); - } else { - addToVueResources(); - } - }; - const goFetch = () => this.$http.get(`${url}?scope=${apiScope}&page=${pageNum}`) .then((response) => { @@ -34,12 +19,10 @@ Vue.set(this, 'count', res.count); updatePipelineNums(this.count); this.pageRequest = false; - subtractFromVueResources(); }, () => new Flash( 'Something went wrong on our end.', )); - resourceChecker(); goFetch(); const startTimeLoops = () => { -- cgit v1.2.1 From e86c5570fbfd1d5276eb67b16303599fc747a7a0 Mon Sep 17 00:00:00 2001 From: Regis Date: Wed, 7 Dec 2016 09:51:51 -0700 Subject: fix status for svg's on status column --- app/assets/javascripts/vue_pipelines_index/status.js.es6 | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'app/assets') diff --git a/app/assets/javascripts/vue_pipelines_index/status.js.es6 b/app/assets/javascripts/vue_pipelines_index/status.js.es6 index bbdc357035f..ed65841e6a7 100644 --- a/app/assets/javascripts/vue_pipelines_index/status.js.es6 +++ b/app/assets/javascripts/vue_pipelines_index/status.js.es6 @@ -10,13 +10,13 @@ cssClasses() { const cssObject = {}; cssObject['ci-status'] = true; - cssObject[`ci-${this.pipeline.details.status}`] = true; + cssObject[`ci-${this.pipeline.details.status.text}`] = true; return cssObject; }, svg() { return document .querySelector( - `.${this.pipeline.details.status}-icon-svg.hidden`, + `.${this.pipeline.details.status.text}-icon-svg.hidden`, ).innerHTML; }, }, @@ -25,7 +25,7 @@ -  {{pipeline.details.status}} +  {{pipeline.details.status.text}} -- cgit v1.2.1 From c9b6392452f586eafc08605b71f6c696a5ca12d7 Mon Sep 17 00:00:00 2001 From: Regis Date: Wed, 7 Dec 2016 10:05:39 -0700 Subject: conform to status object for svg icon names --- app/assets/javascripts/vue_pipelines_index/stage.js.es6 | 2 +- app/assets/javascripts/vue_pipelines_index/status.js.es6 | 6 ++---- 2 files changed, 3 insertions(+), 5 deletions(-) (limited to 'app/assets') diff --git a/app/assets/javascripts/vue_pipelines_index/stage.js.es6 b/app/assets/javascripts/vue_pipelines_index/stage.js.es6 index d8e3f1c3dcd..b313317b0bb 100644 --- a/app/assets/javascripts/vue_pipelines_index/stage.js.es6 +++ b/app/assets/javascripts/vue_pipelines_index/stage.js.es6 @@ -14,7 +14,7 @@ svg() { return document .querySelector( - `.${this.stage.status}-icon-svg.hidden`, + `.icon_status_${this.stage.status}`, ).innerHTML; }, }, diff --git a/app/assets/javascripts/vue_pipelines_index/status.js.es6 b/app/assets/javascripts/vue_pipelines_index/status.js.es6 index ed65841e6a7..2f362d0c69e 100644 --- a/app/assets/javascripts/vue_pipelines_index/status.js.es6 +++ b/app/assets/javascripts/vue_pipelines_index/status.js.es6 @@ -15,14 +15,12 @@ }, svg() { return document - .querySelector( - `.${this.pipeline.details.status.text}-icon-svg.hidden`, - ).innerHTML; + .querySelector(`.${this.pipeline.details.status.icon}`).innerHTML; }, }, template: ` - +  {{pipeline.details.status.text}} -- cgit v1.2.1 From 64b66c9a8327b9309f6bad6402a36a795f957fd1 Mon Sep 17 00:00:00 2001 From: Regis Date: Wed, 7 Dec 2016 13:35:26 -0700 Subject: use API values for pagination --- app/assets/javascripts/vue_pagination/index.js.es6 | 31 +++++++++++----------- .../vue_pipelines_index/pipelines.js.es6 | 14 +++++----- .../javascripts/vue_pipelines_index/store.js.es6 | 15 +++++++++++ 3 files changed, 39 insertions(+), 21 deletions(-) (limited to 'app/assets') diff --git a/app/assets/javascripts/vue_pagination/index.js.es6 b/app/assets/javascripts/vue_pagination/index.js.es6 index 4f83671e83d..961f7101fb1 100644 --- a/app/assets/javascripts/vue_pagination/index.js.es6 +++ b/app/assets/javascripts/vue_pagination/index.js.es6 @@ -2,7 +2,6 @@ /* eslint-disable no-param-reassign, no-plusplus */ ((gl) => { - const PAGINATION_SIZE = 30; const PAGINATION_UI_BUTTON_LIMIT = 4; const SPREAD = '...'; const PREV = 'Prev'; @@ -13,24 +12,26 @@ gl.VueGlPagination = Vue.extend({ props: [ 'changepage', - 'count', - 'pagenum', + 'pageInfo', ], computed: { - last() { - return Math.ceil(+this.count / PAGINATION_SIZE); + prev() { + return this.pageInfo.previousPage; + }, + next() { + return this.pageInfo.nextPage; }, getItems() { - const total = +this.last; - const page = +this.pagenum; + const total = this.pageInfo.totalPages; + const page = this.pageInfo.page; const items = []; - if (page > 1) items.push({ title: FIRST, where: 1 }); + if (page > 1) items.push({ title: FIRST }); if (page > 1) { - items.push({ title: PREV, where: page - 1 }); + items.push({ title: PREV }); } else { - items.push({ title: PREV, where: page - 1, disabled: true }); + items.push({ title: PREV, disabled: true }); } if (page > 6) items.push({ title: SPREAD, separator: true }); @@ -40,7 +41,7 @@ for (let i = start; i <= end; i++) { const isActive = i === page; - items.push({ title: i, active: isActive, where: i }); + items.push({ title: i, active: isActive }); } if (total - page > PAGINATION_UI_BUTTON_LIMIT) { @@ -48,12 +49,12 @@ } if (page === total) { - items.push({ title: NEXT, where: page + 1, disabled: true }); + items.push({ title: NEXT, disabled: true }); } else if (total - page >= 1) { - items.push({ title: NEXT, where: page + 1 }); + items.push({ title: NEXT }); } - if (total - page >= 1) items.push({ title: LAST, where: total }); + if (total - page >= 1) items.push({ title: LAST }); return items; }, @@ -69,7 +70,7 @@ }' > {{item.title}} diff --git a/app/assets/javascripts/vue_pipelines_index/pipelines.js.es6 b/app/assets/javascripts/vue_pipelines_index/pipelines.js.es6 index 1fd3a2a4d99..3f35c07b628 100644 --- a/app/assets/javascripts/vue_pipelines_index/pipelines.js.es6 +++ b/app/assets/javascripts/vue_pipelines_index/pipelines.js.es6 @@ -35,8 +35,8 @@ pipelines: [], timeLoopInterval: '', intervalId: '', - pagenum: 1, apiScope: 'all', + pageInfo: {}, count: { all: 0, running_or_pending: 0, @@ -64,13 +64,14 @@ ); }, methods: { - changepage(e, last) { + changepage(e) { const text = e.target.innerText; + const { totalPages, nextPage, previousPage } = this.pageInfo; if (text === SPREAD) return; if (/^-?[\d.]+(?:e-?\d+)?$/.test(text)) this.pagenum = +text; - if (text === LAST) this.pagenum = last; - if (text === NEXT) this.pagenum = +this.pagenum + 1; - if (text === PREV) this.pagenum = +this.pagenum - 1; + if (text === LAST) this.pagenum = totalPages; + if (text === NEXT) this.pagenum = nextPage; + if (text === PREV) this.pagenum = previousPage; if (text === FIRST) this.pagenum = 1; window.history.pushState({}, null, `?p=${this.pagenum}`); @@ -141,10 +142,11 @@
    diff --git a/app/assets/javascripts/vue_pipelines_index/store.js.es6 b/app/assets/javascripts/vue_pipelines_index/store.js.es6 index 49b77454314..7d8316d6d20 100644 --- a/app/assets/javascripts/vue_pipelines_index/store.js.es6 +++ b/app/assets/javascripts/vue_pipelines_index/store.js.es6 @@ -2,6 +2,17 @@ /* eslint-disable no-param-reassign, no-underscore-dangle */ ((gl) => { + const pageValues = (headers) => { + const values = {}; + values.perPage = +headers['X-Per-Page']; + values.page = +headers['X-Page']; + values.total = +headers['X-Total']; + values.totalPages = +headers['X-Total-Pages']; + values.nextPage = +headers['X-Next-Page']; + values.previousPage = +headers['X-Prev-Page']; + return values; + }; + gl.PipelineStore = class { fetchDataLoop(Vue, pageNum, url, apiScope) { const updatePipelineNums = (count) => { @@ -14,9 +25,13 @@ const goFetch = () => this.$http.get(`${url}?scope=${apiScope}&page=${pageNum}`) .then((response) => { + const pageInfo = pageValues(response.headers); + Vue.set(this, 'pageInfo', pageInfo); + const res = JSON.parse(response.body); Vue.set(this, 'pipelines', res.pipelines); Vue.set(this, 'count', res.count); + updatePipelineNums(this.count); this.pageRequest = false; }, () => new Flash( -- cgit v1.2.1 From 813be933969956acd1ce401dce90a4c552a6f9d3 Mon Sep 17 00:00:00 2001 From: Regis Date: Wed, 7 Dec 2016 15:20:30 -0700 Subject: default to page 1 if url is clean --- app/assets/javascripts/vue_pipelines_index/pipelines.js.es6 | 1 + 1 file changed, 1 insertion(+) (limited to 'app/assets') diff --git a/app/assets/javascripts/vue_pipelines_index/pipelines.js.es6 b/app/assets/javascripts/vue_pipelines_index/pipelines.js.es6 index 3f35c07b628..9f7e71dbee9 100644 --- a/app/assets/javascripts/vue_pipelines_index/pipelines.js.es6 +++ b/app/assets/javascripts/vue_pipelines_index/pipelines.js.es6 @@ -37,6 +37,7 @@ intervalId: '', apiScope: 'all', pageInfo: {}, + pagenum: 1, count: { all: 0, running_or_pending: 0, -- cgit v1.2.1 From 20f74fe7ca6388a2dcc72231e84ed2945d6c4444 Mon Sep 17 00:00:00 2001 From: Regis Date: Thu, 8 Dec 2016 10:03:53 -0700 Subject: make Vue render with null commit object - handle scope and page in different tabs --- .../vue_pipelines_index/pipelines.js.es6 | 38 ++++++++++++++++++---- 1 file changed, 31 insertions(+), 7 deletions(-) (limited to 'app/assets') diff --git a/app/assets/javascripts/vue_pipelines_index/pipelines.js.es6 b/app/assets/javascripts/vue_pipelines_index/pipelines.js.es6 index 9f7e71dbee9..090ceb67593 100644 --- a/app/assets/javascripts/vue_pipelines_index/pipelines.js.es6 +++ b/app/assets/javascripts/vue_pipelines_index/pipelines.js.es6 @@ -66,6 +66,8 @@ }, methods: { changepage(e) { + const scope = getParameterByName('scope'); + if (scope) this.apiScope = scope; const text = e.target.innerText; const { totalPages, nextPage, previousPage } = this.pageInfo; if (text === SPREAD) return; @@ -74,14 +76,21 @@ if (text === NEXT) this.pagenum = nextPage; if (text === PREV) this.pagenum = previousPage; if (text === FIRST) this.pagenum = 1; - - window.history.pushState({}, null, `?p=${this.pagenum}`); + window.history.pushState({}, null, `?scope=${this.apiScope}&p=${this.pagenum}`); clearInterval(this.timeLoopInterval); this.pageRequest = true; - this.store.fetchDataLoop.call(this, Vue, this.pagenum, this.scope); + this.store.fetchDataLoop.call(this, Vue, this.pagenum, this.scope, this.apiScope); }, author(pipeline) { const { commit } = pipeline; + if (!commit) { + return ({ + avatar_url: '', + web_url: '', + username: '', + }); + } + const author = commit.author; if (author) return author; @@ -105,6 +114,21 @@ addTimeInterval(id, start) { this.allTimeIntervals.push({ id, start }); }, + commitTitle(pipeline) { + const { commit } = pipeline; + if (commit) return commit.title; + return ''; + }, + commitSha(pipeline) { + const { commit } = pipeline; + if (commit) return commit.short_id; + return ''; + }, + commitUrl(pipeline) { + const { commit } = pipeline; + if (commit) return commit.commit_url; + return ''; + }, }, template: `
    @@ -122,10 +146,10 @@ @@ -143,7 +167,7 @@
    Date: Thu, 8 Dec 2016 11:05:20 -0700 Subject: bunch of blocked tests now passing - moving on --- .../vue_pipelines_index/pipelines.js.es6 | 70 +++++----------------- 1 file changed, 15 insertions(+), 55 deletions(-) (limited to 'app/assets') diff --git a/app/assets/javascripts/vue_pipelines_index/pipelines.js.es6 b/app/assets/javascripts/vue_pipelines_index/pipelines.js.es6 index 090ceb67593..2c18b6cc7e5 100644 --- a/app/assets/javascripts/vue_pipelines_index/pipelines.js.es6 +++ b/app/assets/javascripts/vue_pipelines_index/pipelines.js.es6 @@ -38,31 +38,17 @@ apiScope: 'all', pageInfo: {}, pagenum: 1, - count: { - all: 0, - running_or_pending: 0, - }, + count: { all: 0, running_or_pending: 0 }, pageRequest: false, }; }, - props: [ - 'scope', - 'store', - ], + props: ['scope', 'store'], created() { const pagenum = getParameterByName('p'); const scope = getParameterByName('scope'); - if (pagenum) this.pagenum = pagenum; if (scope) this.apiScope = scope; - - this.store.fetchDataLoop.call( - this, - Vue, - this.pagenum, - this.scope, - this.apiScope, - ); + this.store.fetchDataLoop.call(this, Vue, this.pagenum, this.scope, this.apiScope); }, methods: { changepage(e) { @@ -82,51 +68,28 @@ this.store.fetchDataLoop.call(this, Vue, this.pagenum, this.scope, this.apiScope); }, author(pipeline) { - const { commit } = pipeline; - if (!commit) { - return ({ - avatar_url: '', - web_url: '', - username: '', - }); - } - - const author = commit.author; - if (author) return author; - - const nonUser = { - avatar_url: commit.author_gravatar_url, - web_url: `mailto:${commit.author_email}`, - username: commit.author_name, - }; - - return nonUser; + if (!pipeline.commit) return ({ avatar_url: '', web_url: '', username: '' }); + if (pipeline.commit.author) return pipeline.commit.author; + return ({ + avatar_url: pipeline.commit.author_gravatar_url, + web_url: `mailto:${pipeline.commit.author_email}`, + username: pipeline.commit.author_name, + }); }, ref(pipeline) { const { ref } = pipeline; - const commitRef = { - name: ref.name, - tag: ref['tag?'], - ref_url: ref.url, - }; - return commitRef; - }, - addTimeInterval(id, start) { - this.allTimeIntervals.push({ id, start }); + return ({ name: ref.name, tag: ref['tag?'], ref_url: ref.url }); }, commitTitle(pipeline) { - const { commit } = pipeline; - if (commit) return commit.title; + if (pipeline.commit) return pipeline.commit.title; return ''; }, commitSha(pipeline) { - const { commit } = pipeline; - if (commit) return commit.short_id; + if (pipeline.commit) return pipeline.commit.short_id; return ''; }, commitUrl(pipeline) { - const { commit } = pipeline; - if (commit) return commit.commit_url; + if (pipeline.commit) return pipeline.commit.commit_url; return ''; }, }, @@ -154,10 +117,7 @@ - - + -- cgit v1.2.1 From aa74a704ca43334fa521ff99696513012ebee66c Mon Sep 17 00:00:00 2001 From: Regis Date: Thu, 8 Dec 2016 11:22:05 -0700 Subject: first manual build test passing --- app/assets/javascripts/vue_pipelines_index/pipeline_actions.js.es6 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'app/assets') diff --git a/app/assets/javascripts/vue_pipelines_index/pipeline_actions.js.es6 b/app/assets/javascripts/vue_pipelines_index/pipeline_actions.js.es6 index e99e65d50b8..fe1db7aae29 100644 --- a/app/assets/javascripts/vue_pipelines_index/pipeline_actions.js.es6 +++ b/app/assets/javascripts/vue_pipelines_index/pipeline_actions.js.es6 @@ -20,8 +20,8 @@ v-if='pipeline.details.manual_actions.length > 0' class="dropdown-toggle btn btn-default" data-toggle="dropdown" - type="button" title="Manual build" + alt="Manual Build" > Date: Thu, 8 Dec 2016 11:35:39 -0700 Subject: tests don't see Manual build link --- app/assets/javascripts/vue_pipelines_index/pipeline_actions.js.es6 | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'app/assets') diff --git a/app/assets/javascripts/vue_pipelines_index/pipeline_actions.js.es6 b/app/assets/javascripts/vue_pipelines_index/pipeline_actions.js.es6 index fe1db7aae29..1c7fa994900 100644 --- a/app/assets/javascripts/vue_pipelines_index/pipeline_actions.js.es6 +++ b/app/assets/javascripts/vue_pipelines_index/pipeline_actions.js.es6 @@ -23,7 +23,7 @@ title="Manual build" alt="Manual Build" > - + - + Date: Thu, 8 Dec 2016 16:18:24 -0700 Subject: add passed scope to adhere to dynamic api response --- app/assets/stylesheets/pages/status.scss | 14 ++++++++++++++ 1 file changed, 14 insertions(+) (limited to 'app/assets') diff --git a/app/assets/stylesheets/pages/status.scss b/app/assets/stylesheets/pages/status.scss index 5084b466722..c77995b8fb6 100644 --- a/app/assets/stylesheets/pages/status.scss +++ b/app/assets/stylesheets/pages/status.scss @@ -47,6 +47,20 @@ } } + &.ci-passed, + &.ci-passed_with_warnings { + color: $gl-success; + border-color: $gl-success; + + &:not(span):hover { + background-color: rgba( $gl-success, .07); + } + + svg { + fill: $gl-success; + } + } + &.ci-info { color: $gl-info; border-color: $gl-info; -- cgit v1.2.1 From bff8e5bad99ccf515133a82576ca38165de0624c Mon Sep 17 00:00:00 2001 From: Regis Date: Thu, 8 Dec 2016 17:37:00 -0700 Subject: add change page logic to pagination component - add first test for pagination --- app/assets/javascripts/vue_pagination/index.js.es6 | 32 +++++++++++++++++++++- .../vue_pipelines_index/pipelines.js.es6 | 24 +++------------- 2 files changed, 35 insertions(+), 21 deletions(-) (limited to 'app/assets') diff --git a/app/assets/javascripts/vue_pagination/index.js.es6 b/app/assets/javascripts/vue_pagination/index.js.es6 index 961f7101fb1..ed2357b5d9e 100644 --- a/app/assets/javascripts/vue_pagination/index.js.es6 +++ b/app/assets/javascripts/vue_pagination/index.js.es6 @@ -9,11 +9,41 @@ const FIRST = '<< First'; const LAST = 'Last >>'; + const getParameterByName = (name) => { + const url = window.location.href; + name = name.replace(/[[\]]/g, '\\$&'); + const regex = new RegExp(`[?&]${name}(=([^&#]*)|&|#|$)`); + const results = regex.exec(url); + if (!results) return null; + if (!results[2]) return ''; + return decodeURIComponent(results[2].replace(/\+/g, ' ')); + }; + gl.VueGlPagination = Vue.extend({ props: [ - 'changepage', + 'change', 'pageInfo', ], + methods: { + changepage(e) { + let pagenum = this.pageInfo.page; + let apiScope = getParameterByName('scope'); + + if (!apiScope) apiScope = 'all'; + + const text = e.target.innerText; + const { totalPages, nextPage, previousPage } = this.pageInfo; + + if (text === SPREAD) return; + if (/^-?[\d.]+(?:e-?\d+)?$/.test(text)) pagenum = +text; + if (text === LAST) pagenum = totalPages; + if (text === NEXT) pagenum = nextPage; + if (text === PREV) pagenum = previousPage; + if (text === FIRST) pagenum = 1; + + this.change(pagenum, apiScope); + }, + }, computed: { prev() { return this.pageInfo.previousPage; diff --git a/app/assets/javascripts/vue_pipelines_index/pipelines.js.es6 b/app/assets/javascripts/vue_pipelines_index/pipelines.js.es6 index 2c18b6cc7e5..ac889bb2d9f 100644 --- a/app/assets/javascripts/vue_pipelines_index/pipelines.js.es6 +++ b/app/assets/javascripts/vue_pipelines_index/pipelines.js.es6 @@ -2,12 +2,6 @@ /* eslint-disable no-param-reassign, no-bitwise*/ ((gl) => { - const SPREAD = '...'; - const PREV = 'Prev'; - const NEXT = 'Next'; - const FIRST = '<< First'; - const LAST = 'Last >>'; - const getParameterByName = (name) => { const url = window.location.href; name = name.replace(/[[\]]/g, '\\$&'); @@ -51,21 +45,11 @@ this.store.fetchDataLoop.call(this, Vue, this.pagenum, this.scope, this.apiScope); }, methods: { - changepage(e) { - const scope = getParameterByName('scope'); - if (scope) this.apiScope = scope; - const text = e.target.innerText; - const { totalPages, nextPage, previousPage } = this.pageInfo; - if (text === SPREAD) return; - if (/^-?[\d.]+(?:e-?\d+)?$/.test(text)) this.pagenum = +text; - if (text === LAST) this.pagenum = totalPages; - if (text === NEXT) this.pagenum = nextPage; - if (text === PREV) this.pagenum = previousPage; - if (text === FIRST) this.pagenum = 1; - window.history.pushState({}, null, `?scope=${this.apiScope}&p=${this.pagenum}`); + change(pagenum, apiScope) { + window.history.pushState({}, null, `?scope=${apiScope}&p=${pagenum}`); clearInterval(this.timeLoopInterval); this.pageRequest = true; - this.store.fetchDataLoop.call(this, Vue, this.pagenum, this.scope, this.apiScope); + this.store.fetchDataLoop.call(this, Vue, pagenum, this.scope, apiScope); }, author(pipeline) { if (!pipeline.commit) return ({ avatar_url: '', web_url: '', username: '' }); @@ -129,7 +113,7 @@ -- cgit v1.2.1 From 2ecb65b8c4a3fc277925938e691621e34c449664 Mon Sep 17 00:00:00 2001 From: Regis Date: Thu, 8 Dec 2016 17:41:59 -0700 Subject: extract param helper to pagination dir --- app/assets/javascripts/vue_pagination/index.js.es6 | 14 +++----------- app/assets/javascripts/vue_pagination/param_helper.js.es6 | 13 +++++++++++++ .../javascripts/vue_pipelines_index/pipelines.js.es6 | 14 ++------------ 3 files changed, 18 insertions(+), 23 deletions(-) create mode 100644 app/assets/javascripts/vue_pagination/param_helper.js.es6 (limited to 'app/assets') diff --git a/app/assets/javascripts/vue_pagination/index.js.es6 b/app/assets/javascripts/vue_pagination/index.js.es6 index ed2357b5d9e..f0f0b54dd2b 100644 --- a/app/assets/javascripts/vue_pagination/index.js.es6 +++ b/app/assets/javascripts/vue_pagination/index.js.es6 @@ -1,6 +1,8 @@ /* global Vue, gl */ /* eslint-disable no-param-reassign, no-plusplus */ +//= require ./param_helper.js.es6 + ((gl) => { const PAGINATION_UI_BUTTON_LIMIT = 4; const SPREAD = '...'; @@ -9,16 +11,6 @@ const FIRST = '<< First'; const LAST = 'Last >>'; - const getParameterByName = (name) => { - const url = window.location.href; - name = name.replace(/[[\]]/g, '\\$&'); - const regex = new RegExp(`[?&]${name}(=([^&#]*)|&|#|$)`); - const results = regex.exec(url); - if (!results) return null; - if (!results[2]) return ''; - return decodeURIComponent(results[2].replace(/\+/g, ' ')); - }; - gl.VueGlPagination = Vue.extend({ props: [ 'change', @@ -27,7 +19,7 @@ methods: { changepage(e) { let pagenum = this.pageInfo.page; - let apiScope = getParameterByName('scope'); + let apiScope = gl.getParameterByName('scope'); if (!apiScope) apiScope = 'all'; diff --git a/app/assets/javascripts/vue_pagination/param_helper.js.es6 b/app/assets/javascripts/vue_pagination/param_helper.js.es6 new file mode 100644 index 00000000000..4c684f96e9e --- /dev/null +++ b/app/assets/javascripts/vue_pagination/param_helper.js.es6 @@ -0,0 +1,13 @@ +/* eslint-disable no-param-reassign */ + +((w) => { + w.getParameterByName = (name) => { + const url = window.location.href; + name = name.replace(/[[\]]/g, '\\$&'); + const regex = new RegExp(`[?&]${name}(=([^&#]*)|&|#|$)`); + const results = regex.exec(url); + if (!results) return null; + if (!results[2]) return ''; + return decodeURIComponent(results[2].replace(/\+/g, ' ')); + }; +})(window.gl || (window.gl = {})); diff --git a/app/assets/javascripts/vue_pipelines_index/pipelines.js.es6 b/app/assets/javascripts/vue_pipelines_index/pipelines.js.es6 index ac889bb2d9f..2fdcaf3e16c 100644 --- a/app/assets/javascripts/vue_pipelines_index/pipelines.js.es6 +++ b/app/assets/javascripts/vue_pipelines_index/pipelines.js.es6 @@ -2,16 +2,6 @@ /* eslint-disable no-param-reassign, no-bitwise*/ ((gl) => { - const getParameterByName = (name) => { - const url = window.location.href; - name = name.replace(/[[\]]/g, '\\$&'); - const regex = new RegExp(`[?&]${name}(=([^&#]*)|&|#|$)`); - const results = regex.exec(url); - if (!results) return null; - if (!results[2]) return ''; - return decodeURIComponent(results[2].replace(/\+/g, ' ')); - }; - gl.VuePipelines = Vue.extend({ components: { runningPipeline: gl.VueRunningPipeline, @@ -38,8 +28,8 @@ }, props: ['scope', 'store'], created() { - const pagenum = getParameterByName('p'); - const scope = getParameterByName('scope'); + const pagenum = gl.getParameterByName('p'); + const scope = gl.getParameterByName('scope'); if (pagenum) this.pagenum = pagenum; if (scope) this.apiScope = scope; this.store.fetchDataLoop.call(this, Vue, this.pagenum, this.scope, this.apiScope); -- cgit v1.2.1 From 63c3ba7ae084919e237d444c942f26093ac51da0 Mon Sep 17 00:00:00 2001 From: "Luke \"Jared\" Bennett" Date: Tue, 22 Nov 2016 02:09:56 +0000 Subject: Created shared/visibility_select and merged with feature permissions ui Fixed up nested padding and added dynamic text js Added padding and tests --- app/assets/javascripts/dispatcher.js.es6 | 1 + app/assets/javascripts/visibility_select.js.es6 | 29 +++++++++++++++++++++++++ app/assets/stylesheets/pages/projects.scss | 12 ++++++++++ 3 files changed, 42 insertions(+) create mode 100644 app/assets/javascripts/visibility_select.js.es6 (limited to 'app/assets') diff --git a/app/assets/javascripts/dispatcher.js.es6 b/app/assets/javascripts/dispatcher.js.es6 index 413117c2226..237a7dab5e9 100644 --- a/app/assets/javascripts/dispatcher.js.es6 +++ b/app/assets/javascripts/dispatcher.js.es6 @@ -262,6 +262,7 @@ case 'edit': shortcut_handler = new ShortcutsNavigation(); new ProjectNew(); + new gl.VisibilitySelect(); break; case 'new': new ProjectNew(); diff --git a/app/assets/javascripts/visibility_select.js.es6 b/app/assets/javascripts/visibility_select.js.es6 new file mode 100644 index 00000000000..a2f8a2395c1 --- /dev/null +++ b/app/assets/javascripts/visibility_select.js.es6 @@ -0,0 +1,29 @@ +(() => { + const global = window.gl || (window.gl = {}); + + const VISIBILITY_DESCRIPTIONS = { + 0: 'Project access must be granted explicitly to each user.', + 10: 'Project access must be granted explicitly to each user.', + 20: 'The project can be cloned without any authentication.', + }; + + class VisibilitySelect { + constructor() { + this.visibilitySelect = document.querySelector('.js-visibility-select'); + this.helpBlock = this.visibilitySelect.querySelector('.help-block'); + this.select = this.visibilitySelect.querySelector('select'); + if (this.select) { + this.visibilityChanged(); + this.select.addEventListener('change', this.visibilityChanged.bind(this)); + } else { + this.helpBlock.textContent = this.visibilitySelect.querySelector('.js-locked').dataset.helpBlock; + } + } + + visibilityChanged() { + this.helpBlock.innerText = VISIBILITY_DESCRIPTIONS[this.select.value]; + } + } + + global.VisibilitySelect = VisibilitySelect; +})(); diff --git a/app/assets/stylesheets/pages/projects.scss b/app/assets/stylesheets/pages/projects.scss index 72b6685d940..dcb327a67c6 100644 --- a/app/assets/stylesheets/pages/projects.scss +++ b/app/assets/stylesheets/pages/projects.scss @@ -15,10 +15,22 @@ .new_project, .edit-project { + .visibility-select-container { + padding-left: 26px; + + @media(max-width: $screen-md-min) { + padding-left: 15px; + } + } + fieldset { &.features { + .header { + padding-top: $gl-vert-padding; + } + .label-light { margin-bottom: 0; } -- cgit v1.2.1 From 26b0fe8d2e16adf4106859ed578dd2352cde412b Mon Sep 17 00:00:00 2001 From: Annabel Dunstone Gray Date: Tue, 22 Nov 2016 07:51:49 -0700 Subject: Align permissions options --- app/assets/javascripts/visibility_select.js.es6 | 2 +- app/assets/stylesheets/pages/projects.scss | 36 +++++++++++-------------- 2 files changed, 16 insertions(+), 22 deletions(-) (limited to 'app/assets') diff --git a/app/assets/javascripts/visibility_select.js.es6 b/app/assets/javascripts/visibility_select.js.es6 index a2f8a2395c1..e846e7ead77 100644 --- a/app/assets/javascripts/visibility_select.js.es6 +++ b/app/assets/javascripts/visibility_select.js.es6 @@ -3,7 +3,7 @@ const VISIBILITY_DESCRIPTIONS = { 0: 'Project access must be granted explicitly to each user.', - 10: 'Project access must be granted explicitly to each user.', + 10: 'This project can be cloned by any logged in user.', 20: 'The project can be cloned without any authentication.', }; diff --git a/app/assets/stylesheets/pages/projects.scss b/app/assets/stylesheets/pages/projects.scss index dcb327a67c6..74b058ac94a 100644 --- a/app/assets/stylesheets/pages/projects.scss +++ b/app/assets/stylesheets/pages/projects.scss @@ -15,29 +15,17 @@ .new_project, .edit-project { - .visibility-select-container { - padding-left: 26px; - - @media(max-width: $screen-md-min) { - padding-left: 15px; + .sharing-and-permissions { + .header { + padding-top: $gl-vert-padding; } - } - - fieldset { - - &.features { - .header { - padding-top: $gl-vert-padding; - } - - .label-light { - margin-bottom: 0; - } + .label-light { + margin-bottom: 0; + } - .help-block { - margin-top: 0; - } + .help-block { + margin-top: 0; } .form-group { @@ -876,10 +864,16 @@ pre.light-well { } } -.project-feature-nested { +.project-feature { @media (min-width: $screen-sm-min) { padding-left: 45px; } + + &.nested { + @media (min-width: $screen-sm-min) { + padding-left: 90px; + } + } } .project-repo-select { -- cgit v1.2.1 From 2c9bb135057f4fea43aa0be5b94354f288d5070f Mon Sep 17 00:00:00 2001 From: "Luke \"Jared\" Bennett" Date: Tue, 22 Nov 2016 17:16:30 +0000 Subject: Fixed tests Grab permissions description from backend Review changes Added unit tests --- app/assets/javascripts/dispatcher.js.es6 | 1 - app/assets/javascripts/project_new.js | 10 ++++++++ app/assets/javascripts/visibility_select.js.es6 | 32 ++++++++++++------------- app/assets/stylesheets/pages/projects.scss | 2 ++ 4 files changed, 27 insertions(+), 18 deletions(-) (limited to 'app/assets') diff --git a/app/assets/javascripts/dispatcher.js.es6 b/app/assets/javascripts/dispatcher.js.es6 index 237a7dab5e9..413117c2226 100644 --- a/app/assets/javascripts/dispatcher.js.es6 +++ b/app/assets/javascripts/dispatcher.js.es6 @@ -262,7 +262,6 @@ case 'edit': shortcut_handler = new ShortcutsNavigation(); new ProjectNew(); - new gl.VisibilitySelect(); break; case 'new': new ProjectNew(); diff --git a/app/assets/javascripts/project_new.js b/app/assets/javascripts/project_new.js index 7fc611d0dad..86d57d97eae 100644 --- a/app/assets/javascripts/project_new.js +++ b/app/assets/javascripts/project_new.js @@ -14,11 +14,21 @@ return $('.save-project-loader').show(); }; })(this)); + + this.initVisibilitySelect(); + this.toggleSettings(); this.toggleSettingsOnclick(); this.toggleRepoVisibility(); } + ProjectNew.prototype.initVisibilitySelect = function() { + const visibilityContainer = document.querySelector('.js-visibility-select'); + if (!visibilityContainer) return; + const visibilitySelect = new gl.VisibilitySelect(visibilityContainer); + visibilitySelect.init(); + }; + ProjectNew.prototype.toggleSettings = function() { var self = this; diff --git a/app/assets/javascripts/visibility_select.js.es6 b/app/assets/javascripts/visibility_select.js.es6 index e846e7ead77..f712d7ba930 100644 --- a/app/assets/javascripts/visibility_select.js.es6 +++ b/app/assets/javascripts/visibility_select.js.es6 @@ -1,29 +1,27 @@ (() => { - const global = window.gl || (window.gl = {}); - - const VISIBILITY_DESCRIPTIONS = { - 0: 'Project access must be granted explicitly to each user.', - 10: 'This project can be cloned by any logged in user.', - 20: 'The project can be cloned without any authentication.', - }; + const gl = window.gl || (window.gl = {}); class VisibilitySelect { - constructor() { - this.visibilitySelect = document.querySelector('.js-visibility-select'); - this.helpBlock = this.visibilitySelect.querySelector('.help-block'); - this.select = this.visibilitySelect.querySelector('select'); + constructor(container) { + if (!container) throw new Error('VisibilitySelect requires a container element as argument 1'); + this.container = container; + this.helpBlock = this.container.querySelector('.help-block'); + this.select = this.container.querySelector('select'); + } + + init() { if (this.select) { - this.visibilityChanged(); - this.select.addEventListener('change', this.visibilityChanged.bind(this)); + this.updateHelpText(); + this.select.addEventListener('change', this.updateHelpText.bind(this)); } else { - this.helpBlock.textContent = this.visibilitySelect.querySelector('.js-locked').dataset.helpBlock; + this.helpBlock.textContent = this.container.querySelector('.js-locked').dataset.helpBlock; } } - visibilityChanged() { - this.helpBlock.innerText = VISIBILITY_DESCRIPTIONS[this.select.value]; + updateHelpText() { + this.helpBlock.textContent = this.select.querySelector('option:checked').dataset.description; } } - global.VisibilitySelect = VisibilitySelect; + gl.VisibilitySelect = VisibilitySelect; })(); diff --git a/app/assets/stylesheets/pages/projects.scss b/app/assets/stylesheets/pages/projects.scss index 74b058ac94a..726e5c115b8 100644 --- a/app/assets/stylesheets/pages/projects.scss +++ b/app/assets/stylesheets/pages/projects.scss @@ -865,6 +865,8 @@ pre.light-well { } .project-feature { + padding-top: 10px; + @media (min-width: $screen-sm-min) { padding-left: 45px; } -- cgit v1.2.1 From 07c6c8e0a1438f745f9f420b24a66a05a76c4272 Mon Sep 17 00:00:00 2001 From: Regis Date: Mon, 12 Dec 2016 11:59:22 -0700 Subject: stages render correctly and use new status object --- app/assets/javascripts/vue_pipelines_index/stage.js.es6 | 9 +++------ app/assets/stylesheets/pages/icons.scss | 8 ++++++++ 2 files changed, 11 insertions(+), 6 deletions(-) (limited to 'app/assets') diff --git a/app/assets/javascripts/vue_pipelines_index/stage.js.es6 b/app/assets/javascripts/vue_pipelines_index/stage.js.es6 index b313317b0bb..3761977d5db 100644 --- a/app/assets/javascripts/vue_pipelines_index/stage.js.es6 +++ b/app/assets/javascripts/vue_pipelines_index/stage.js.es6 @@ -6,16 +6,13 @@ props: ['stage'], computed: { buildStatus() { - return `Build: ${this.stage.status}`; + return `Build: ${this.stage.status.label}`; }, tooltip() { - return `has-tooltip ci-status-icon-${this.stage.status}`; + return `has-tooltip ci-status-icon-${this.stage.status.label}`; }, svg() { - return document - .querySelector( - `.icon_status_${this.stage.status}`, - ).innerHTML; + return document.querySelector(`.${this.stage.status.icon}`).innerHTML; }, }, template: ` diff --git a/app/assets/stylesheets/pages/icons.scss b/app/assets/stylesheets/pages/icons.scss index 226bd2ead31..8210208cbf6 100644 --- a/app/assets/stylesheets/pages/icons.scss +++ b/app/assets/stylesheets/pages/icons.scss @@ -6,6 +6,14 @@ } } +.ci-status-icon-passed { + color: $gl-success; + + svg { + fill: $gl-success; + } +} + .ci-status-icon-failed { color: $gl-danger; -- cgit v1.2.1 From 562df3a3fb6d41c83180b3b3c519920c9e156de5 Mon Sep 17 00:00:00 2001 From: Regis Date: Mon, 12 Dec 2016 12:11:28 -0700 Subject: pass svg as prop to commit component --- app/assets/javascripts/vue_pipelines_index/index.js.es6 | 3 +++ app/assets/javascripts/vue_pipelines_index/pipelines.js.es6 | 9 +++++---- 2 files changed, 8 insertions(+), 4 deletions(-) (limited to 'app/assets') diff --git a/app/assets/javascripts/vue_pipelines_index/index.js.es6 b/app/assets/javascripts/vue_pipelines_index/index.js.es6 index 25f5c796a60..ced3e8f2602 100644 --- a/app/assets/javascripts/vue_pipelines_index/index.js.es6 +++ b/app/assets/javascripts/vue_pipelines_index/index.js.es6 @@ -19,6 +19,7 @@ (() => { const project = document.querySelector('.pipelines'); const entry = document.querySelector('.vue-pipelines-index'); + const svgs = document.querySelector('.pipeline-svgs'); Vue.use(VueResource); @@ -28,6 +29,7 @@ data: { scope: project.dataset.url, store: new gl.PipelineStore(), + svgs: svgs.dataset, }, components: { 'vue-pipelines': gl.VuePipelines, @@ -37,6 +39,7 @@
    diff --git a/app/assets/javascripts/vue_pipelines_index/pipelines.js.es6 b/app/assets/javascripts/vue_pipelines_index/pipelines.js.es6 index 2fdcaf3e16c..37fe6c29c5a 100644 --- a/app/assets/javascripts/vue_pipelines_index/pipelines.js.es6 +++ b/app/assets/javascripts/vue_pipelines_index/pipelines.js.es6 @@ -26,7 +26,7 @@ pageRequest: false, }; }, - props: ['scope', 'store'], + props: ['scope', 'store', 'svgs'], created() { const pagenum = gl.getParameterByName('p'); const scope = gl.getParameterByName('scope'); @@ -81,12 +81,13 @@ -- cgit v1.2.1 From 13798c003eb7c2f2f6ccc1ec5a8728b1ed1a130e Mon Sep 17 00:00:00 2001 From: Regis Date: Tue, 13 Dec 2016 09:54:18 -0700 Subject: dynamic API consumption for SVGs --- .../javascripts/vue_pipelines_index/pipelines.js.es6 | 17 +++++++++++++++-- app/assets/javascripts/vue_pipelines_index/stage.js.es6 | 4 ++-- .../javascripts/vue_pipelines_index/stages.js.es6 | 4 ++-- 3 files changed, 19 insertions(+), 6 deletions(-) (limited to 'app/assets') diff --git a/app/assets/javascripts/vue_pipelines_index/pipelines.js.es6 b/app/assets/javascripts/vue_pipelines_index/pipelines.js.es6 index 37fe6c29c5a..a2b12554494 100644 --- a/app/assets/javascripts/vue_pipelines_index/pipelines.js.es6 +++ b/app/assets/javascripts/vue_pipelines_index/pipelines.js.es6 @@ -66,6 +66,9 @@ if (pipeline.commit) return pipeline.commit.commit_url; return ''; }, + match(string) { + return string.replace(/_([a-z])/g, (m, w) => w.toUpperCase()); + }, }, template: `
    @@ -77,7 +80,12 @@ - + + - + + diff --git a/app/assets/javascripts/vue_pipelines_index/stage.js.es6 b/app/assets/javascripts/vue_pipelines_index/stage.js.es6 index 3761977d5db..7821ed62bd5 100644 --- a/app/assets/javascripts/vue_pipelines_index/stage.js.es6 +++ b/app/assets/javascripts/vue_pipelines_index/stage.js.es6 @@ -3,7 +3,7 @@ ((gl) => { gl.VueStage = Vue.extend({ - props: ['stage'], + props: ['stage', 'svgs', 'match'], computed: { buildStatus() { return `Build: ${this.stage.status.label}`; @@ -12,7 +12,7 @@ return `has-tooltip ci-status-icon-${this.stage.status.label}`; }, svg() { - return document.querySelector(`.${this.stage.status.icon}`).innerHTML; + return this.svgs[this.match(this.stage.status.icon)]; }, }, template: ` diff --git a/app/assets/javascripts/vue_pipelines_index/stages.js.es6 b/app/assets/javascripts/vue_pipelines_index/stages.js.es6 index f91c44174de..d7dda9294cd 100644 --- a/app/assets/javascripts/vue_pipelines_index/stages.js.es6 +++ b/app/assets/javascripts/vue_pipelines_index/stages.js.es6 @@ -6,14 +6,14 @@ components: { 'vue-stage': gl.VueStage, }, - props: ['pipeline'], + props: ['pipeline', 'svgs', 'match'], template: `
    - +
    `, -- cgit v1.2.1 From 1f99283519bd9a009e38464e5029d460fe1e290d Mon Sep 17 00:00:00 2001 From: Regis Date: Tue, 13 Dec 2016 10:27:34 -0700 Subject: status dynamic --- app/assets/javascripts/vue_pipelines_index/status.js.es6 | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) (limited to 'app/assets') diff --git a/app/assets/javascripts/vue_pipelines_index/status.js.es6 b/app/assets/javascripts/vue_pipelines_index/status.js.es6 index 2f362d0c69e..fd145f5e066 100644 --- a/app/assets/javascripts/vue_pipelines_index/status.js.es6 +++ b/app/assets/javascripts/vue_pipelines_index/status.js.es6 @@ -4,7 +4,7 @@ ((gl) => { gl.VueStatusScope = Vue.extend({ props: [ - 'pipeline', + 'pipeline', 'svgs', 'match', ], computed: { cssClasses() { @@ -14,8 +14,7 @@ return cssObject; }, svg() { - return document - .querySelector(`.${this.pipeline.details.status.icon}`).innerHTML; + return this.svgs[this.match(this.pipeline.details.status.icon)]; }, }, template: ` -- cgit v1.2.1 From 7d2ca647df50f66eba40654b0d52fd8a9aa0d30d Mon Sep 17 00:00:00 2001 From: Regis Date: Tue, 13 Dec 2016 10:31:09 -0700 Subject: stage icon link --- app/assets/javascripts/vue_pipelines_index/stage.js.es6 | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'app/assets') diff --git a/app/assets/javascripts/vue_pipelines_index/stage.js.es6 b/app/assets/javascripts/vue_pipelines_index/stage.js.es6 index 7821ed62bd5..9a2aa5af2b4 100644 --- a/app/assets/javascripts/vue_pipelines_index/stage.js.es6 +++ b/app/assets/javascripts/vue_pipelines_index/stage.js.es6 @@ -12,6 +12,7 @@ return `has-tooltip ci-status-icon-${this.stage.status.label}`; }, svg() { + // debugger return this.svgs[this.match(this.stage.status.icon)]; }, }, @@ -19,7 +20,7 @@
    -- cgit v1.2.1 From f9db61fa7c596816367345de948fc6c92a1eabbe Mon Sep 17 00:00:00 2001 From: Regis Date: Tue, 13 Dec 2016 10:38:51 -0700 Subject: add more tests for pagination --- app/assets/javascripts/vue_pipelines_index/stage.js.es6 | 1 - 1 file changed, 1 deletion(-) (limited to 'app/assets') diff --git a/app/assets/javascripts/vue_pipelines_index/stage.js.es6 b/app/assets/javascripts/vue_pipelines_index/stage.js.es6 index 9a2aa5af2b4..7fcf575b17f 100644 --- a/app/assets/javascripts/vue_pipelines_index/stage.js.es6 +++ b/app/assets/javascripts/vue_pipelines_index/stage.js.es6 @@ -12,7 +12,6 @@ return `has-tooltip ci-status-icon-${this.stage.status.label}`; }, svg() { - // debugger return this.svgs[this.match(this.stage.status.icon)]; }, }, -- cgit v1.2.1 From 01c8499a791a9179a0ae875ad26a1fa125e7fe4c Mon Sep 17 00:00:00 2001 From: Filipa Lacerda Date: Tue, 13 Dec 2016 22:37:16 +0000 Subject: Fix broken rspec tests --- app/assets/javascripts/vue_pipelines_index/pipeline_actions.js.es6 | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'app/assets') diff --git a/app/assets/javascripts/vue_pipelines_index/pipeline_actions.js.es6 b/app/assets/javascripts/vue_pipelines_index/pipeline_actions.js.es6 index 1c7fa994900..24640ba5fb8 100644 --- a/app/assets/javascripts/vue_pipelines_index/pipeline_actions.js.es6 +++ b/app/assets/javascripts/vue_pipelines_index/pipeline_actions.js.es6 @@ -18,7 +18,7 @@ -- cgit v1.2.1 From 192d003ad1e33c09eab24fdf145c733a23ba94aa Mon Sep 17 00:00:00 2001 From: Regis Date: Thu, 15 Dec 2016 09:30:44 -0700 Subject: add comment about complex regex in pagination --- app/assets/javascripts/vue_pagination/index.js.es6 | 2 ++ 1 file changed, 2 insertions(+) (limited to 'app/assets') diff --git a/app/assets/javascripts/vue_pagination/index.js.es6 b/app/assets/javascripts/vue_pagination/index.js.es6 index b1de0faade8..db9b81065cc 100644 --- a/app/assets/javascripts/vue_pagination/index.js.es6 +++ b/app/assets/javascripts/vue_pagination/index.js.es6 @@ -27,6 +27,8 @@ const { totalPages, nextPage, previousPage } = this.pageInfo; if (text === SPREAD) return; + // the regex here is to read if the string coming in will become a valid string + // had issues with parsing using `+` because `typeof NaN === 'number'` if (/^-?[\d.]+(?:e-?\d+)?$/.test(text)) pagenum = +text; if (text === LAST) pagenum = totalPages; if (text === NEXT) pagenum = nextPage; -- cgit v1.2.1 From 0dcd30b4a8ea9a10f2db6506c91bcf005a697186 Mon Sep 17 00:00:00 2001 From: Regis Date: Thu, 15 Dec 2016 09:33:46 -0700 Subject: fix comment formatting --- app/assets/javascripts/vue_pagination/index.js.es6 | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) (limited to 'app/assets') diff --git a/app/assets/javascripts/vue_pagination/index.js.es6 b/app/assets/javascripts/vue_pagination/index.js.es6 index db9b81065cc..872c2b11a11 100644 --- a/app/assets/javascripts/vue_pagination/index.js.es6 +++ b/app/assets/javascripts/vue_pagination/index.js.es6 @@ -27,8 +27,10 @@ const { totalPages, nextPage, previousPage } = this.pageInfo; if (text === SPREAD) return; - // the regex here is to read if the string coming in will become a valid string - // had issues with parsing using `+` because `typeof NaN === 'number'` + /** + the regex here is to read if the string coming in will become a valid number + had issues with parsing using `+` because `typeof NaN === 'number'` + */ if (/^-?[\d.]+(?:e-?\d+)?$/.test(text)) pagenum = +text; if (text === LAST) pagenum = totalPages; if (text === NEXT) pagenum = nextPage; -- cgit v1.2.1 From 0380fdb4206fb0c589a40adda1e1c72520e35394 Mon Sep 17 00:00:00 2001 From: Regis Date: Thu, 15 Dec 2016 09:40:40 -0700 Subject: cache timeAgo object --- app/assets/javascripts/vue_pipelines_index/time_ago.js.es6 | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) (limited to 'app/assets') diff --git a/app/assets/javascripts/vue_pipelines_index/time_ago.js.es6 b/app/assets/javascripts/vue_pipelines_index/time_ago.js.es6 index 33a1744fa82..be3cd41594c 100644 --- a/app/assets/javascripts/vue_pipelines_index/time_ago.js.es6 +++ b/app/assets/javascripts/vue_pipelines_index/time_ago.js.es6 @@ -11,6 +11,9 @@ 'pipeline', ], computed: { + timeAgo() { + return gl.utils.getTimeago(); + }, localTimeFinished() { return gl.utils.formatDate(this.pipeline.details.finished_at); }, @@ -25,7 +28,7 @@ options.timeZoneName = 'short'; const finished = this.pipeline.details.finished_at; if (!finished && changeTime) return false; - return ({ words: gl.utils.getTimeago().format(finished) }); + return ({ words: this.timeAgo.format(finished) }); }, }, methods: { -- cgit v1.2.1 From 696864eacd88f771839b24a0ceb34cbd346048d1 Mon Sep 17 00:00:00 2001 From: Regis Date: Thu, 15 Dec 2016 10:00:30 -0700 Subject: remove need for complex regex in pagination - add else if --- app/assets/javascripts/vue_pagination/index.js.es6 | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) (limited to 'app/assets') diff --git a/app/assets/javascripts/vue_pagination/index.js.es6 b/app/assets/javascripts/vue_pagination/index.js.es6 index 872c2b11a11..54c7ae9b510 100644 --- a/app/assets/javascripts/vue_pagination/index.js.es6 +++ b/app/assets/javascripts/vue_pagination/index.js.es6 @@ -26,16 +26,23 @@ const text = e.target.innerText; const { totalPages, nextPage, previousPage } = this.pageInfo; - if (text === SPREAD) return; /** the regex here is to read if the string coming in will become a valid number had issues with parsing using `+` because `typeof NaN === 'number'` */ - if (/^-?[\d.]+(?:e-?\d+)?$/.test(text)) pagenum = +text; - if (text === LAST) pagenum = totalPages; - if (text === NEXT) pagenum = nextPage; - if (text === PREV) pagenum = previousPage; - if (text === FIRST) pagenum = 1; + if (text === SPREAD) { + return; + } else if (text === LAST) { + pagenum = totalPages; + } else if (text === NEXT) { + pagenum = nextPage; + } else if (text === PREV) { + pagenum = previousPage; + } else if (text === FIRST) { + pagenum = 1; + } else { + pagenum = +text; + } this.change(pagenum, apiScope); }, -- cgit v1.2.1 From 5151b15c71d9d9805b060f4f47c00c4f72516296 Mon Sep 17 00:00:00 2001 From: Regis Date: Thu, 15 Dec 2016 10:04:26 -0700 Subject: comments on turbolinks event handling --- app/assets/javascripts/vue_pagination/index.js.es6 | 4 ---- app/assets/javascripts/vue_pipelines_index/store.js.es6 | 4 ++++ 2 files changed, 4 insertions(+), 4 deletions(-) (limited to 'app/assets') diff --git a/app/assets/javascripts/vue_pagination/index.js.es6 b/app/assets/javascripts/vue_pagination/index.js.es6 index 54c7ae9b510..25d1af664b3 100644 --- a/app/assets/javascripts/vue_pagination/index.js.es6 +++ b/app/assets/javascripts/vue_pagination/index.js.es6 @@ -26,10 +26,6 @@ const text = e.target.innerText; const { totalPages, nextPage, previousPage } = this.pageInfo; - /** - the regex here is to read if the string coming in will become a valid number - had issues with parsing using `+` because `typeof NaN === 'number'` - */ if (text === SPREAD) { return; } else if (text === LAST) { diff --git a/app/assets/javascripts/vue_pipelines_index/store.js.es6 b/app/assets/javascripts/vue_pipelines_index/store.js.es6 index 7d8316d6d20..619fd094996 100644 --- a/app/assets/javascripts/vue_pipelines_index/store.js.es6 +++ b/app/assets/javascripts/vue_pipelines_index/store.js.es6 @@ -63,12 +63,16 @@ window.removeEventListener('beforeunload', () => {}); window.removeEventListener('focus', () => {}); window.removeEventListener('blur', () => {}); + + // turbolinks event handler document.removeEventListener('page:fetch', () => {}); }; window.addEventListener('beforeunload', removeTimeIntervals); window.addEventListener('focus', startIntervalLoops); window.addEventListener('blur', removeTimeIntervals); + + // turbolinks event handler document.addEventListener('page:fetch', removeAll); } }; -- cgit v1.2.1 From 3f21b9573313445b18df999b554e002bc05635c2 Mon Sep 17 00:00:00 2001 From: Regis Date: Thu, 15 Dec 2016 10:12:39 -0700 Subject: change to 'Latest pipeline for this branch' --- app/assets/javascripts/vue_pipelines_index/pipeline_url.js.es6 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'app/assets') diff --git a/app/assets/javascripts/vue_pipelines_index/pipeline_url.js.es6 b/app/assets/javascripts/vue_pipelines_index/pipeline_url.js.es6 index 99ecdf3fed0..bf24392b82f 100644 --- a/app/assets/javascripts/vue_pipelines_index/pipeline_url.js.es6 +++ b/app/assets/javascripts/vue_pipelines_index/pipeline_url.js.es6 @@ -40,7 +40,7 @@ v-if='pipeline.flags.latest === true' class="label label-success has-tooltip" title="" - data-original-title="Latest build for this branch" + data-original-title="Latest pipeline for this branch" > latest -- cgit v1.2.1 From 2dfb7e882626f41d3a1b5b4c2e30038079c7a1bc Mon Sep 17 00:00:00 2001 From: Regis Date: Thu, 15 Dec 2016 10:21:45 -0700 Subject: pageNum is now camelCased --- app/assets/javascripts/vue_pagination/index.js.es6 | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) (limited to 'app/assets') diff --git a/app/assets/javascripts/vue_pagination/index.js.es6 b/app/assets/javascripts/vue_pagination/index.js.es6 index 25d1af664b3..712fa8442bc 100644 --- a/app/assets/javascripts/vue_pagination/index.js.es6 +++ b/app/assets/javascripts/vue_pagination/index.js.es6 @@ -18,7 +18,7 @@ ], methods: { changePage(e) { - let pagenum = this.pageInfo.page; + let pageNum = this.pageInfo.page; let apiScope = gl.getParameterByName('scope'); if (!apiScope) apiScope = 'all'; @@ -29,18 +29,18 @@ if (text === SPREAD) { return; } else if (text === LAST) { - pagenum = totalPages; + pageNum = totalPages; } else if (text === NEXT) { - pagenum = nextPage; + pageNum = nextPage; } else if (text === PREV) { - pagenum = previousPage; + pageNum = previousPage; } else if (text === FIRST) { - pagenum = 1; + pageNum = 1; } else { - pagenum = +text; + pageNum = +text; } - this.change(pagenum, apiScope); + this.change(pageNum, apiScope); }, }, computed: { -- cgit v1.2.1 From 40f433125e5747deb434e17669127cde250a6585 Mon Sep 17 00:00:00 2001 From: Regis Date: Thu, 15 Dec 2016 10:28:17 -0700 Subject: strict props for easier re-use --- app/assets/javascripts/vue_pagination/index.js.es6 | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) (limited to 'app/assets') diff --git a/app/assets/javascripts/vue_pagination/index.js.es6 b/app/assets/javascripts/vue_pagination/index.js.es6 index 712fa8442bc..54407c5ceef 100644 --- a/app/assets/javascripts/vue_pagination/index.js.es6 +++ b/app/assets/javascripts/vue_pagination/index.js.es6 @@ -12,10 +12,16 @@ const LAST = 'Last >>'; gl.VueGlPagination = Vue.extend({ - props: [ - 'change', - 'pageInfo', - ], + props: { + change: { + type: Function, + required: true, + }, + pageInfo: { + type: Object, + required: true, + }, + }, methods: { changePage(e) { let pageNum = this.pageInfo.page; -- cgit v1.2.1 From 9eed507dafbfdd09fcd51b970d633ba0fd764d78 Mon Sep 17 00:00:00 2001 From: Regis Date: Thu, 15 Dec 2016 10:32:44 -0700 Subject: add examples of what the props need to be --- app/assets/javascripts/vue_pagination/index.js.es6 | 35 ++++++++++++++++++++++ 1 file changed, 35 insertions(+) (limited to 'app/assets') diff --git a/app/assets/javascripts/vue_pagination/index.js.es6 b/app/assets/javascripts/vue_pagination/index.js.es6 index 54407c5ceef..3889e6d6d28 100644 --- a/app/assets/javascripts/vue_pagination/index.js.es6 +++ b/app/assets/javascripts/vue_pagination/index.js.es6 @@ -13,10 +13,45 @@ gl.VueGlPagination = Vue.extend({ props: { + + /** + This function will take the information given by the pagination component + And make a new API call from the parent + + Here is an example `change` method: + + change(pagenum, apiScope) { + window.history.pushState({}, null, `?scope=${apiScope}&p=${pagenum}`); + clearInterval(this.timeLoopInterval); + this.pageRequest = true; + this.store.fetchDataLoop.call(this, Vue, pagenum, this.scope, apiScope); + }, + */ + change: { type: Function, required: true, }, + + /** + pageInfo will come from the headers of the API call + in the `.then` clause of the VueResource API call + there should be a function that contructs the pageInfo for this component + + This is an example: + + const pageInfo = (headers) => { + const values = {}; + values.perPage = +headers['X-Per-Page']; + values.page = +headers['X-Page']; + values.total = +headers['X-Total']; + values.totalPages = +headers['X-Total-Pages']; + values.nextPage = +headers['X-Next-Page']; + values.previousPage = +headers['X-Prev-Page']; + return values; + }; + */ + pageInfo: { type: Object, required: true, -- cgit v1.2.1 From 27a4aef5848d36b38c861c952a098f85562a31df Mon Sep 17 00:00:00 2001 From: Regis Date: Thu, 15 Dec 2016 14:46:35 -0700 Subject: use boards interceptor --- app/assets/javascripts/vue_pipelines_index/index.js.es6 | 3 ++- app/assets/javascripts/vue_pipelines_index/interceptor.js.es6 | 8 -------- 2 files changed, 2 insertions(+), 9 deletions(-) delete mode 100644 app/assets/javascripts/vue_pipelines_index/interceptor.js.es6 (limited to 'app/assets') diff --git a/app/assets/javascripts/vue_pipelines_index/index.js.es6 b/app/assets/javascripts/vue_pipelines_index/index.js.es6 index ced3e8f2602..8f3e211aac8 100644 --- a/app/assets/javascripts/vue_pipelines_index/index.js.es6 +++ b/app/assets/javascripts/vue_pipelines_index/index.js.es6 @@ -5,7 +5,8 @@ //= require vue-resource -//= require ./interceptor.js.es6 +/*= require boards/vue_resource_interceptor */ + //= require ./status.js.es6 //= require ./store.js.es6 //= require ./pipeline_url.js.es6 diff --git a/app/assets/javascripts/vue_pipelines_index/interceptor.js.es6 b/app/assets/javascripts/vue_pipelines_index/interceptor.js.es6 deleted file mode 100644 index 80f137ca12e..00000000000 --- a/app/assets/javascripts/vue_pipelines_index/interceptor.js.es6 +++ /dev/null @@ -1,8 +0,0 @@ -/* eslint-disable */ -Vue.http.interceptors.push((request, next) => { - Vue.activeResources = Vue.activeResources ? Vue.activeResources + 1 : 1; - - next(function (response) { - Vue.activeResources--; - }); -}); -- cgit v1.2.1 From db43813aa0118852d7529b9ec856d6cca19540ad Mon Sep 17 00:00:00 2001 From: Regis Date: Fri, 16 Dec 2016 15:37:18 -0700 Subject: add CONST and one line a tag in pagination - add request to false in store handler --- app/assets/javascripts/vue_pagination/index.js.es6 | 9 +++------ app/assets/javascripts/vue_pipelines_index/index.js.es6 | 14 ++++++-------- app/assets/javascripts/vue_pipelines_index/store.js.es6 | 7 ++++--- 3 files changed, 13 insertions(+), 17 deletions(-) (limited to 'app/assets') diff --git a/app/assets/javascripts/vue_pagination/index.js.es6 b/app/assets/javascripts/vue_pagination/index.js.es6 index 3889e6d6d28..6aeb6d3b37b 100644 --- a/app/assets/javascripts/vue_pagination/index.js.es6 +++ b/app/assets/javascripts/vue_pagination/index.js.es6 @@ -5,6 +5,7 @@ ((gl) => { const PAGINATION_UI_BUTTON_LIMIT = 4; + const UI_LIMIT = 6; const SPREAD = '...'; const PREV = 'Prev'; const NEXT = 'Next'; @@ -104,7 +105,7 @@ items.push({ title: PREV, disabled: true }); } - if (page > 6) items.push({ title: SPREAD, separator: true }); + if (page > UI_LIMIT) items.push({ title: SPREAD, separator: true }); const start = Math.max(page - PAGINATION_UI_BUTTON_LIMIT, 1); const end = Math.min(page + PAGINATION_UI_BUTTON_LIMIT, total); @@ -139,11 +140,7 @@ disabled: item.disabled }' > - - {{item.title}} - + {{item.title}}
    diff --git a/app/assets/javascripts/vue_pipelines_index/index.js.es6 b/app/assets/javascripts/vue_pipelines_index/index.js.es6 index 8f3e211aac8..bad24ce41d0 100644 --- a/app/assets/javascripts/vue_pipelines_index/index.js.es6 +++ b/app/assets/javascripts/vue_pipelines_index/index.js.es6 @@ -36,14 +36,12 @@ 'vue-pipelines': gl.VuePipelines, }, template: ` -
    - - -
    + + `, }); } diff --git a/app/assets/javascripts/vue_pipelines_index/store.js.es6 b/app/assets/javascripts/vue_pipelines_index/store.js.es6 index 619fd094996..46c27b1c38a 100644 --- a/app/assets/javascripts/vue_pipelines_index/store.js.es6 +++ b/app/assets/javascripts/vue_pipelines_index/store.js.es6 @@ -34,9 +34,10 @@ updatePipelineNums(this.count); this.pageRequest = false; - }, () => new Flash( - 'Something went wrong on our end.', - )); + }, () => { + this.pageRequest = false; + return new Flash('Something went wrong on our end.'); + }); goFetch(); -- cgit v1.2.1 From b08f92928058b395d2d6666b13ccb113bd78efbf Mon Sep 17 00:00:00 2001 From: Regis Date: Fri, 16 Dec 2016 15:42:05 -0700 Subject: interval event handlers - keep page:fetch listener null --- app/assets/javascripts/vue_pipelines_index/store.js.es6 | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) (limited to 'app/assets') diff --git a/app/assets/javascripts/vue_pipelines_index/store.js.es6 b/app/assets/javascripts/vue_pipelines_index/store.js.es6 index 46c27b1c38a..3cd31dbffe7 100644 --- a/app/assets/javascripts/vue_pipelines_index/store.js.es6 +++ b/app/assets/javascripts/vue_pipelines_index/store.js.es6 @@ -60,10 +60,9 @@ }; const removeAll = () => { - removeTimeIntervals(); - window.removeEventListener('beforeunload', () => {}); - window.removeEventListener('focus', () => {}); - window.removeEventListener('blur', () => {}); + window.removeEventListener('beforeunload', removeTimeIntervals); + window.removeEventListener('focus', startIntervalLoops); + window.removeEventListener('blur', removeTimeIntervals); // turbolinks event handler document.removeEventListener('page:fetch', () => {}); -- cgit v1.2.1 From 1e237c9f906460ee13155ee63f91f42bb8f93d3a Mon Sep 17 00:00:00 2001 From: Regis Date: Fri, 16 Dec 2016 15:46:15 -0700 Subject: computed for actions and artifacts --- .../javascripts/vue_pipelines_index/pipeline_actions.js.es6 | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) (limited to 'app/assets') diff --git a/app/assets/javascripts/vue_pipelines_index/pipeline_actions.js.es6 b/app/assets/javascripts/vue_pipelines_index/pipeline_actions.js.es6 index 24640ba5fb8..491403c8b59 100644 --- a/app/assets/javascripts/vue_pipelines_index/pipeline_actions.js.es6 +++ b/app/assets/javascripts/vue_pipelines_index/pipeline_actions.js.es6 @@ -6,6 +6,14 @@ props: [ 'pipeline', ], + computed: { + actions() { + return this.pipeline.details.manual_actions.length > 0; + }, + artifacts() { + return this.pipeline.details.artifacts.length > 0; + }, + }, methods: { download(name) { return `Download ${name} artifacts`; @@ -17,7 +25,7 @@
    Date: Fri, 16 Dec 2016 15:48:24 -0700 Subject: fix v-ifs in pipeline_url --- app/assets/javascripts/vue_pipelines_index/pipeline_url.js.es6 | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'app/assets') diff --git a/app/assets/javascripts/vue_pipelines_index/pipeline_url.js.es6 b/app/assets/javascripts/vue_pipelines_index/pipeline_url.js.es6 index bf24392b82f..87e516d2f14 100644 --- a/app/assets/javascripts/vue_pipelines_index/pipeline_url.js.es6 +++ b/app/assets/javascripts/vue_pipelines_index/pipeline_url.js.es6 @@ -37,7 +37,7 @@ API stuck -- cgit v1.2.1 From 0b207930e0196d025e893ab2228682c38f364903 Mon Sep 17 00:00:00 2001 From: Regis Date: Fri, 16 Dec 2016 15:50:28 -0700 Subject: refactor pageValues --- .../javascripts/vue_pipelines_index/store.js.es6 | 18 ++++++++---------- 1 file changed, 8 insertions(+), 10 deletions(-) (limited to 'app/assets') diff --git a/app/assets/javascripts/vue_pipelines_index/store.js.es6 b/app/assets/javascripts/vue_pipelines_index/store.js.es6 index 3cd31dbffe7..04fde27af58 100644 --- a/app/assets/javascripts/vue_pipelines_index/store.js.es6 +++ b/app/assets/javascripts/vue_pipelines_index/store.js.es6 @@ -2,16 +2,14 @@ /* eslint-disable no-param-reassign, no-underscore-dangle */ ((gl) => { - const pageValues = (headers) => { - const values = {}; - values.perPage = +headers['X-Per-Page']; - values.page = +headers['X-Page']; - values.total = +headers['X-Total']; - values.totalPages = +headers['X-Total-Pages']; - values.nextPage = +headers['X-Next-Page']; - values.previousPage = +headers['X-Prev-Page']; - return values; - }; + const pageValues = headers => ({ + perPage: +headers['X-Per-Page'], + page: +headers['X-Page'], + total: +headers['X-Total'], + totalPages: +headers['X-Total-Pages'], + nextPage: +headers['X-Next-Page'], + previousPage: +headers['X-Prev-Page'], + }); gl.PipelineStore = class { fetchDataLoop(Vue, pageNum, url, apiScope) { -- cgit v1.2.1 From 4c620d6b136d3b294e0935a8d13ba102761393e1 Mon Sep 17 00:00:00 2001 From: Regis Date: Fri, 16 Dec 2016 15:50:56 -0700 Subject: change example function in pagination component --- app/assets/javascripts/vue_pagination/index.js.es6 | 18 ++++++++---------- 1 file changed, 8 insertions(+), 10 deletions(-) (limited to 'app/assets') diff --git a/app/assets/javascripts/vue_pagination/index.js.es6 b/app/assets/javascripts/vue_pagination/index.js.es6 index 6aeb6d3b37b..7df15f9d4af 100644 --- a/app/assets/javascripts/vue_pagination/index.js.es6 +++ b/app/assets/javascripts/vue_pagination/index.js.es6 @@ -41,16 +41,14 @@ This is an example: - const pageInfo = (headers) => { - const values = {}; - values.perPage = +headers['X-Per-Page']; - values.page = +headers['X-Page']; - values.total = +headers['X-Total']; - values.totalPages = +headers['X-Total-Pages']; - values.nextPage = +headers['X-Next-Page']; - values.previousPage = +headers['X-Prev-Page']; - return values; - }; + const pageInfo = headers => ({ + perPage: +headers['X-Per-Page'], + page: +headers['X-Page'], + total: +headers['X-Total'], + totalPages: +headers['X-Total-Pages'], + nextPage: +headers['X-Next-Page'], + previousPage: +headers['X-Prev-Page'], + }); */ pageInfo: { -- cgit v1.2.1 From 715461a9bc74ad732872577e506ff00703fd108c Mon Sep 17 00:00:00 2001 From: Regis Date: Fri, 16 Dec 2016 15:59:13 -0700 Subject: pipline user for pipeline_url refactor --- app/assets/javascripts/vue_pipelines_index/pipeline_url.js.es6 | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) (limited to 'app/assets') diff --git a/app/assets/javascripts/vue_pipelines_index/pipeline_url.js.es6 b/app/assets/javascripts/vue_pipelines_index/pipeline_url.js.es6 index 87e516d2f14..96baef32a9f 100644 --- a/app/assets/javascripts/vue_pipelines_index/pipeline_url.js.es6 +++ b/app/assets/javascripts/vue_pipelines_index/pipeline_url.js.es6 @@ -8,8 +8,7 @@ ], computed: { user() { - if (this.pipeline.user) return true; - return false; + return !!this.pipeline.user; }, }, template: ` -- cgit v1.2.1 From e8b55c51d87e06825f2ea27e2ce32f810ff2fb20 Mon Sep 17 00:00:00 2001 From: Regis Date: Fri, 16 Dec 2016 16:03:01 -0700 Subject: refactor commitSha - commitUrl - commitTitle in pipelines.js.es6 --- app/assets/javascripts/vue_pipelines_index/pipelines.js.es6 | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) (limited to 'app/assets') diff --git a/app/assets/javascripts/vue_pipelines_index/pipelines.js.es6 b/app/assets/javascripts/vue_pipelines_index/pipelines.js.es6 index a2b12554494..4a907eec681 100644 --- a/app/assets/javascripts/vue_pipelines_index/pipelines.js.es6 +++ b/app/assets/javascripts/vue_pipelines_index/pipelines.js.es6 @@ -55,16 +55,13 @@ return ({ name: ref.name, tag: ref['tag?'], ref_url: ref.url }); }, commitTitle(pipeline) { - if (pipeline.commit) return pipeline.commit.title; - return ''; + return pipeline.commit ? pipeline.commit.title : ''; }, commitSha(pipeline) { - if (pipeline.commit) return pipeline.commit.short_id; - return ''; + return pipeline.commit ? pipeline.commit.short_id : ''; }, commitUrl(pipeline) { - if (pipeline.commit) return pipeline.commit.commit_url; - return ''; + return pipeline.commit ? pipeline.commit.commit_url : ''; }, match(string) { return string.replace(/_([a-z])/g, (m, w) => w.toUpperCase()); -- cgit v1.2.1 From e98cdf4b2070c27da76cfa4ba3d5e2022ff08b19 Mon Sep 17 00:00:00 2001 From: Regis Date: Fri, 16 Dec 2016 16:12:52 -0700 Subject: all svgs from index haml --- .../vue_pipelines_index/pipeline_actions.js.es6 | 20 +++----------------- .../javascripts/vue_pipelines_index/pipelines.js.es6 | 4 ++-- .../javascripts/vue_pipelines_index/time_ago.js.es6 | 15 ++------------- 3 files changed, 7 insertions(+), 32 deletions(-) (limited to 'app/assets') diff --git a/app/assets/javascripts/vue_pipelines_index/pipeline_actions.js.es6 b/app/assets/javascripts/vue_pipelines_index/pipeline_actions.js.es6 index 491403c8b59..b568d3a75a2 100644 --- a/app/assets/javascripts/vue_pipelines_index/pipeline_actions.js.es6 +++ b/app/assets/javascripts/vue_pipelines_index/pipeline_actions.js.es6 @@ -3,9 +3,7 @@ ((gl) => { gl.VuePipelineActions = Vue.extend({ - props: [ - 'pipeline', - ], + props: ['pipeline', 'svgs'], computed: { actions() { return this.pipeline.details.manual_actions.length > 0; @@ -31,13 +29,7 @@ title="Manual build" alt="Manual Build" > - - - - +
    -- cgit v1.2.1 From 6a7af99a42a13d87cd4c8c2ea757464d2b0f9ce4 Mon Sep 17 00:00:00 2001 From: Regis Date: Wed, 21 Dec 2016 17:30:27 -0700 Subject: changed label to group for css --- app/assets/javascripts/vue_pipelines_index/stage.js.es6 | 2 +- app/assets/javascripts/vue_pipelines_index/status.js.es6 | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) (limited to 'app/assets') diff --git a/app/assets/javascripts/vue_pipelines_index/stage.js.es6 b/app/assets/javascripts/vue_pipelines_index/stage.js.es6 index 7fcf575b17f..d214092f412 100644 --- a/app/assets/javascripts/vue_pipelines_index/stage.js.es6 +++ b/app/assets/javascripts/vue_pipelines_index/stage.js.es6 @@ -9,7 +9,7 @@ return `Build: ${this.stage.status.label}`; }, tooltip() { - return `has-tooltip ci-status-icon-${this.stage.status.label}`; + return `has-tooltip ci-status-icon-${this.stage.status.group}`; }, svg() { return this.svgs[this.match(this.stage.status.icon)]; diff --git a/app/assets/javascripts/vue_pipelines_index/status.js.es6 b/app/assets/javascripts/vue_pipelines_index/status.js.es6 index fd145f5e066..55efb8ebae4 100644 --- a/app/assets/javascripts/vue_pipelines_index/status.js.es6 +++ b/app/assets/javascripts/vue_pipelines_index/status.js.es6 @@ -10,7 +10,7 @@ cssClasses() { const cssObject = {}; cssObject['ci-status'] = true; - cssObject[`ci-${this.pipeline.details.status.text}`] = true; + cssObject[`ci-${this.pipeline.details.status.group}`] = true; return cssObject; }, svg() { -- cgit v1.2.1 From 2d1218991c1cd5b7b56e15ccc8d7c47d4b8e6cd0 Mon Sep 17 00:00:00 2001 From: Regis Date: Wed, 21 Dec 2016 18:06:23 -0700 Subject: use path instead of url for commit ref and pipeline url --- app/assets/javascripts/vue_pipelines_index/pipeline_url.js.es6 | 2 +- app/assets/javascripts/vue_pipelines_index/pipelines.js.es6 | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) (limited to 'app/assets') diff --git a/app/assets/javascripts/vue_pipelines_index/pipeline_url.js.es6 b/app/assets/javascripts/vue_pipelines_index/pipeline_url.js.es6 index 96baef32a9f..92c343e33da 100644 --- a/app/assets/javascripts/vue_pipelines_index/pipeline_url.js.es6 +++ b/app/assets/javascripts/vue_pipelines_index/pipeline_url.js.es6 @@ -13,7 +13,7 @@ }, template: ` - + #{{pipeline.id}} by diff --git a/app/assets/javascripts/vue_pipelines_index/pipelines.js.es6 b/app/assets/javascripts/vue_pipelines_index/pipelines.js.es6 index b82d8f1a0db..a16c1e5bef9 100644 --- a/app/assets/javascripts/vue_pipelines_index/pipelines.js.es6 +++ b/app/assets/javascripts/vue_pipelines_index/pipelines.js.es6 @@ -52,7 +52,7 @@ }, ref(pipeline) { const { ref } = pipeline; - return ({ name: ref.name, tag: ref['tag?'], ref_url: ref.url }); + return ({ name: ref.name, tag: ref.tag, ref_url: ref.path }); }, commitTitle(pipeline) { return pipeline.commit ? pipeline.commit.title : ''; @@ -61,7 +61,7 @@ return pipeline.commit ? pipeline.commit.short_id : ''; }, commitUrl(pipeline) { - return pipeline.commit ? pipeline.commit.commit_url : ''; + return pipeline.commit ? pipeline.commit.commit_path : ''; }, match(string) { return string.replace(/_([a-z])/g, (m, w) => w.toUpperCase()); -- cgit v1.2.1 From c0e5e69f9dc778bfe60e8362b72866413672c06f Mon Sep 17 00:00:00 2001 From: Regis Date: Fri, 23 Dec 2016 16:23:19 -0700 Subject: fix manual build tests --- app/assets/javascripts/vue_pipelines_index/pipeline_actions.js.es6 | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'app/assets') diff --git a/app/assets/javascripts/vue_pipelines_index/pipeline_actions.js.es6 b/app/assets/javascripts/vue_pipelines_index/pipeline_actions.js.es6 index 65aa3ff07d2..f658cfd077c 100644 --- a/app/assets/javascripts/vue_pipelines_index/pipeline_actions.js.es6 +++ b/app/assets/javascripts/vue_pipelines_index/pipeline_actions.js.es6 @@ -37,7 +37,7 @@ @@ -60,7 +60,7 @@
  • {{download(artifact.name)}} -- cgit v1.2.1 From 115536fbfa9904cef459bb735d29f20756887ebe Mon Sep 17 00:00:00 2001 From: Regis Date: Fri, 23 Dec 2016 16:28:37 -0700 Subject: use flags for retry and cancel logic --- app/assets/javascripts/vue_pipelines_index/pipeline_actions.js.es6 | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'app/assets') diff --git a/app/assets/javascripts/vue_pipelines_index/pipeline_actions.js.es6 b/app/assets/javascripts/vue_pipelines_index/pipeline_actions.js.es6 index f658cfd077c..ad5cb30cc42 100644 --- a/app/assets/javascripts/vue_pipelines_index/pipeline_actions.js.es6 +++ b/app/assets/javascripts/vue_pipelines_index/pipeline_actions.js.es6 @@ -71,7 +71,7 @@
  • Date: Fri, 23 Dec 2016 16:54:03 -0700 Subject: get rid of nested spans in status component --- app/assets/javascripts/vue_pipelines_index/status.js.es6 | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) (limited to 'app/assets') diff --git a/app/assets/javascripts/vue_pipelines_index/status.js.es6 b/app/assets/javascripts/vue_pipelines_index/status.js.es6 index 55efb8ebae4..f8decb17ca8 100644 --- a/app/assets/javascripts/vue_pipelines_index/status.js.es6 +++ b/app/assets/javascripts/vue_pipelines_index/status.js.es6 @@ -19,11 +19,8 @@ }, template: ` - - - -  {{pipeline.details.status.text}} - + + `, -- cgit v1.2.1 From e56254d38ab4a3c3deeacadbc2388b76d932805d Mon Sep 17 00:00:00 2001 From: Regis Date: Sat, 24 Dec 2016 14:04:17 -0700 Subject: remove use of span for svg and status text --- app/assets/javascripts/vue_pipelines_index/status.js.es6 | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) (limited to 'app/assets') diff --git a/app/assets/javascripts/vue_pipelines_index/status.js.es6 b/app/assets/javascripts/vue_pipelines_index/status.js.es6 index f8decb17ca8..edb24ced080 100644 --- a/app/assets/javascripts/vue_pipelines_index/status.js.es6 +++ b/app/assets/javascripts/vue_pipelines_index/status.js.es6 @@ -18,9 +18,12 @@ }, }, template: ` - - - + + `, -- cgit v1.2.1 From 725ba04e0376c8909e75448f4407eca0fba6c807 Mon Sep 17 00:00:00 2001 From: Regis Date: Mon, 26 Dec 2016 14:24:15 -0700 Subject: wip --- .../javascripts/vue_pipelines_index/stage.js.es6 | 56 +++++++++++++++++++--- 1 file changed, 49 insertions(+), 7 deletions(-) (limited to 'app/assets') diff --git a/app/assets/javascripts/vue_pipelines_index/stage.js.es6 b/app/assets/javascripts/vue_pipelines_index/stage.js.es6 index d214092f412..42d237cb2cc 100644 --- a/app/assets/javascripts/vue_pipelines_index/stage.js.es6 +++ b/app/assets/javascripts/vue_pipelines_index/stage.js.es6 @@ -3,6 +3,12 @@ ((gl) => { gl.VueStage = Vue.extend({ + data() { + return { + request: false, + builds: '
      ', + }; + }, props: ['stage', 'svgs', 'match'], computed: { buildStatus() { @@ -14,15 +20,51 @@ svg() { return this.svgs[this.match(this.stage.status.icon)]; }, + spanClass() { + return `ci-status-icon ci-status-icon-${this.stage.status.group}`; + }, }, template: ` - - +
      + +
      `, }); })(window.gl || (window.gl = {})); -- cgit v1.2.1 From 9b5bbf0a343d7730f08b61112d73579025f2208b Mon Sep 17 00:00:00 2001 From: Regis Date: Mon, 26 Dec 2016 14:34:03 -0700 Subject: add api call - get mock url next --- app/assets/javascripts/vue_pipelines_index/stage.js.es6 | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) (limited to 'app/assets') diff --git a/app/assets/javascripts/vue_pipelines_index/stage.js.es6 b/app/assets/javascripts/vue_pipelines_index/stage.js.es6 index 42d237cb2cc..d5f7194979b 100644 --- a/app/assets/javascripts/vue_pipelines_index/stage.js.es6 +++ b/app/assets/javascripts/vue_pipelines_index/stage.js.es6 @@ -1,4 +1,4 @@ -/* global Vue, gl */ +/* global Vue, Flash, gl */ /* eslint-disable no-param-reassign */ ((gl) => { @@ -23,6 +23,17 @@ spanClass() { return `ci-status-icon ci-status-icon-${this.stage.status.group}`; }, + methods: { + fetchBuilds() { + this.$http.get(this.stage.status.endpoint) + .then((response) => { + Vue.set(this, 'builds', response.html); + Vue.set(this, 'response', true); + }, () => new Flash( + 'Something went wrong on our end.', + )); + }, + }, }, template: `
      -- cgit v1.2.1 From 8a7f58d21337b8858ae8e3e57f052eed1026687f Mon Sep 17 00:00:00 2001 From: Regis Date: Mon, 26 Dec 2016 14:59:48 -0700 Subject: mini-graph shows up from API call - need to fix state bugs --- .../javascripts/vue_pipelines_index/stage.js.es6 | 36 ++++++++++++++-------- 1 file changed, 24 insertions(+), 12 deletions(-) (limited to 'app/assets') diff --git a/app/assets/javascripts/vue_pipelines_index/stage.js.es6 b/app/assets/javascripts/vue_pipelines_index/stage.js.es6 index d5f7194979b..944f84f7880 100644 --- a/app/assets/javascripts/vue_pipelines_index/stage.js.es6 +++ b/app/assets/javascripts/vue_pipelines_index/stage.js.es6 @@ -10,7 +10,28 @@ }; }, props: ['stage', 'svgs', 'match'], + methods: { + fetchBuilds() { + this.$http.get(this.endpoint) + .then((response) => { + this.builds = JSON.parse(response.body).html; + this.request = true; + }, () => new Flash( + 'Something went wrong on our end.', + )); + }, + clearState() { + this.response = false; + this.builds = '
        '; + }, + }, computed: { + endpoint() { + return '/gitlab-org/gitlab-shell/pipelines/121/stage?stage=deploy'; + }, + stageTitle() { + return 'deploy: running'; + }, buildStatus() { return `Build: ${this.stage.status.label}`; }, @@ -23,26 +44,17 @@ spanClass() { return `ci-status-icon ci-status-icon-${this.stage.status.group}`; }, - methods: { - fetchBuilds() { - this.$http.get(this.stage.status.endpoint) - .then((response) => { - Vue.set(this, 'builds', response.html); - Vue.set(this, 'response', true); - }, () => new Flash( - 'Something went wrong on our end.', - )); - }, - }, }, template: `
        -- cgit v1.2.1 From c9fad91d042453530bdb886f6df5ed3b7a2b7f8f Mon Sep 17 00:00:00 2001 From: Regis Date: Mon, 26 Dec 2016 15:29:03 -0700 Subject: remove v-if to let spinner show --- app/assets/javascripts/vue_pipelines_index/stage.js.es6 | 1 - 1 file changed, 1 deletion(-) (limited to 'app/assets') diff --git a/app/assets/javascripts/vue_pipelines_index/stage.js.es6 b/app/assets/javascripts/vue_pipelines_index/stage.js.es6 index 5fcfae2375c..fe8e94ac7a7 100644 --- a/app/assets/javascripts/vue_pipelines_index/stage.js.es6 +++ b/app/assets/javascripts/vue_pipelines_index/stage.js.es6 @@ -84,7 +84,6 @@
        -- cgit v1.2.1 From e077cebe5003ff93671a147aad8266e5b0dbd04d Mon Sep 17 00:00:00 2001 From: Regis Date: Mon, 26 Dec 2016 16:09:27 -0700 Subject: add borderless svgs --- app/assets/javascripts/vue_pipelines_index/stage.js.es6 | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) (limited to 'app/assets') diff --git a/app/assets/javascripts/vue_pipelines_index/stage.js.es6 b/app/assets/javascripts/vue_pipelines_index/stage.js.es6 index fe8e94ac7a7..b7da52ad01b 100644 --- a/app/assets/javascripts/vue_pipelines_index/stage.js.es6 +++ b/app/assets/javascripts/vue_pipelines_index/stage.js.es6 @@ -16,9 +16,7 @@ this.$http.get(this.endpoint) .then((response) => { this.request = true; - setTimeout(() => { - this.builds = JSON.parse(response.body).html; - }, 100); + this.builds = JSON.parse(response.body).html; }, () => new Flash( 'Something went wrong on our end.', )); @@ -30,8 +28,7 @@ }, computed: { buildsOrSpinner() { - if (this.request) return this.builds; - return this.spinner; + return this.request ? this.builds : this.spinner; }, dropdownClass() { if (this.request) return 'js-builds-dropdown-container'; @@ -50,7 +47,9 @@ return `has-tooltip ci-status-icon-${this.stage.status.group}`; }, svg() { - return this.svgs[this.match(this.stage.status.icon)]; + const icon = this.stage.status.icon; + icon.replace('icon', 'stageIcon'); + return this.svgs[this.match(icon)]; }, spanClass() { return `ci-status-icon ci-status-icon-${this.stage.status.group}`; @@ -58,10 +57,10 @@ }, template: `
        + +
        `, }); -- cgit v1.2.1 From 6a110c00b52b0e312f06249c5fd597f39ababe87 Mon Sep 17 00:00:00 2001 From: Regis Date: Tue, 27 Dec 2016 11:15:19 -0700 Subject: hook up new API key values to stage dropdown mini graph in vue --- app/assets/javascripts/vue_pipelines_index/stage.js.es6 | 10 ++-------- 1 file changed, 2 insertions(+), 8 deletions(-) (limited to 'app/assets') diff --git a/app/assets/javascripts/vue_pipelines_index/stage.js.es6 b/app/assets/javascripts/vue_pipelines_index/stage.js.es6 index b7da52ad01b..026fba80ca2 100644 --- a/app/assets/javascripts/vue_pipelines_index/stage.js.es6 +++ b/app/assets/javascripts/vue_pipelines_index/stage.js.es6 @@ -13,7 +13,7 @@ props: ['stage', 'svgs', 'match'], methods: { fetchBuilds() { - this.$http.get(this.endpoint) + this.$http.get(this.stage.dropdown_path) .then((response) => { this.request = true; this.builds = JSON.parse(response.body).html; @@ -34,12 +34,6 @@ if (this.request) return 'js-builds-dropdown-container'; return 'js-builds-dropdown-loading builds-dropdown-loading'; }, - endpoint() { - return '/gitlab-org/gitlab-shell/pipelines/121/stage?stage=deploy'; - }, - stageTitle() { - return 'deploy: running'; - }, buildStatus() { return `Build: ${this.stage.status.label}`; }, @@ -63,7 +57,7 @@ @click='fetchBuilds' class="has-tooltip builds-dropdown js-builds-dropdown-button" data-placement="top" - :title='stageTitle' + :title='stage.title' data-toggle="dropdown" type="button" > -- cgit v1.2.1 From 5e558af7a0cb77f58271b02039966ecf6c8df84c Mon Sep 17 00:00:00 2001 From: Regis Date: Tue, 27 Dec 2016 11:42:55 -0700 Subject: remove mini-graph js from dispatcher for pipelines:index --- app/assets/javascripts/dispatcher.js.es6 | 5 ----- 1 file changed, 5 deletions(-) (limited to 'app/assets') diff --git a/app/assets/javascripts/dispatcher.js.es6 b/app/assets/javascripts/dispatcher.js.es6 index a118003617d..6a84f52d8df 100644 --- a/app/assets/javascripts/dispatcher.js.es6 +++ b/app/assets/javascripts/dispatcher.js.es6 @@ -173,11 +173,6 @@ new TreeView(); } break; - case 'projects:pipelines:index': - // new gl.MiniPipelineGraph({ - // container: '.js-pipeline-table', - // }); - break; case 'projects:pipelines:builds': case 'projects:pipelines:show': const { controllerAction } = document.querySelector('.js-pipeline-container').dataset; -- cgit v1.2.1 From 75bddd01d0b611fcd45e8a9789e7f8e650e5850b Mon Sep 17 00:00:00 2001 From: Regis Date: Tue, 27 Dec 2016 12:24:11 -0700 Subject: avoid making multiple calls on blur on collapse click events --- app/assets/javascripts/vue_pipelines_index/stage.js.es6 | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) (limited to 'app/assets') diff --git a/app/assets/javascripts/vue_pipelines_index/stage.js.es6 b/app/assets/javascripts/vue_pipelines_index/stage.js.es6 index 026fba80ca2..920ae5dac9a 100644 --- a/app/assets/javascripts/vue_pipelines_index/stage.js.es6 +++ b/app/assets/javascripts/vue_pipelines_index/stage.js.es6 @@ -13,7 +13,13 @@ props: ['stage', 'svgs', 'match'], methods: { fetchBuilds() { - this.$http.get(this.stage.dropdown_path) + if (this.request) { + this.request = false; + this.builds = ''; + return null; + } + + return this.$http.get(this.stage.dropdown_path) .then((response) => { this.request = true; this.builds = JSON.parse(response.body).html; @@ -55,6 +61,7 @@