Commit 25e60f87 authored by Regis's avatar Regis

basic pagination ^_^ - will make component dynamic soon

parent e96c2ab0
...@@ -5,6 +5,7 @@ ...@@ -5,6 +5,7 @@
//= require ./store.js.es6 //= require ./store.js.es6
//= require ./pipeline_url.vue.js.es6 //= require ./pipeline_url.vue.js.es6
//= require ./vue_gl_pagination.vue.js.es6
//= require ./pipeline_head.vue.js.es6 //= require ./pipeline_head.vue.js.es6
//= require ./running_icon.vue.js.es6 //= require ./running_icon.vue.js.es6
//= require ./running.vue.js.es6 //= require ./running.vue.js.es6
......
...@@ -10,13 +10,14 @@ ...@@ -10,13 +10,14 @@
'vue-branch-commit': gl.VueBranchCommit, 'vue-branch-commit': gl.VueBranchCommit,
'vue-pipeline-url': gl.VuePipelineUrl, 'vue-pipeline-url': gl.VuePipelineUrl,
'vue-pipeline-head': gl.VuePipelineHead, 'vue-pipeline-head': gl.VuePipelineHead,
'vue-gl-pagination': gl.VueGlPagination,
}, },
data() { data() {
return { return {
pipelines: [], pipelines: [],
currentPage: '', currentPage: '',
intervalId: '', intervalId: '',
pageNum: 'page=1', pageNum: 1,
}; };
}, },
props: [ props: [
...@@ -25,50 +26,60 @@ ...@@ -25,50 +26,60 @@
], ],
created() { created() {
const url = window.location.toString(); 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); this.store.fetchDataLoop.call(this, Vue, this.pageNum);
}, },
methods: { methods: {
shortsha(pipeline) { shortsha(pipeline) {
return pipeline.sha.slice(0, 8); return pipeline.sha.slice(0, 8);
}, },
changePage() { changepage(event) {
// clearInterval(this.intervalId); this.pageNum = +event.target.innerText;
// this.store.fetchDataLoop.call(this, Vue, this.pageNum); // 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) { pipelineurl(id) {
return `pipelines/${id}`; return `pipelines/${id}`;
}, },
}, },
template: ` template: `
<div class="table-holder"> <div>
<table class="table ci-table"> <div class="table-holder">
<vue-pipeline-head></vue-pipeline-head> <table class="table ci-table">
<tbody> <vue-pipeline-head></vue-pipeline-head>
<tr class="commit" v-for='pipeline in pipelines'> <tbody>
<td class="commit-link" v-if="pipeline.status"> <tr class="commit" v-for='pipeline in pipelines'>
<vue-running-pipeline <td class="commit-link" v-if="pipeline.status">
<vue-running-pipeline
:pipeline='pipeline'
:pipelineurl='pipelineurl'
>
</vue-running-pipeline>
</td>
<vue-pipeline-url
:pipeline='pipeline' :pipeline='pipeline'
:pipelineurl='pipelineurl' :pipelineurl='pipelineurl'
> >
</vue-running-pipeline> </vue-pipeline-url>
</td> <vue-branch-commit
<vue-pipeline-url :pipeline='pipeline'
:pipeline='pipeline' :shortsha='shortsha'
:pipelineurl='pipelineurl' >
> </vue-branch-commit>
</vue-pipeline-url> <vue-stages></vue-stages>
<vue-branch-commit <td></td>
:pipeline='pipeline' <vue-pipeline-actions></vue-pipeline-actions>
:shortsha='shortsha' </tr>
> </tbody>
</vue-branch-commit> </table>
<vue-stages></vue-stages> </div>
<td></td> <vue-gl-pagination
<vue-pipeline-actions></vue-pipeline-actions> :changepage='changepage'
</tr> :pages='pipelines.length'
</tbody> >
</table> </vue-gl-pagination>
</div> </div>
`, `,
}); });
......
...@@ -3,11 +3,12 @@ ...@@ -3,11 +3,12 @@
((gl) => { ((gl) => {
const api = '/api/v3/projects'; const api = '/api/v3/projects';
const paginate = '?per_page=5&page=';
gl.PipelineStore = class { gl.PipelineStore = class {
fetchDataLoop(Vue, pageNum) { fetchDataLoop(Vue, pageNum) {
const goFetch = () => const goFetch = () =>
this.$http.get(`${api}/${this.scope}/pipelines?per_page=30&${pageNum}`) this.$http.get(`${api}/${this.scope}/pipelines${paginate}${pageNum}`)
.then((response) => { .then((response) => {
Vue.set(this, 'pipelines', JSON.parse(response.body)); Vue.set(this, 'pipelines', JSON.parse(response.body));
}, () => new Flash( }, () => new Flash(
...@@ -20,7 +21,7 @@ ...@@ -20,7 +21,7 @@
// eventually clearInterval(this.intervalId) // eventually clearInterval(this.intervalId)
this.intervalId = setInterval(() => { this.intervalId = setInterval(() => {
goFetch(); goFetch();
}, 3000); }, 30000);
} }
}; };
})(window.gl || (window.gl = {})); })(window.gl || (window.gl = {}));
/* global Vue, gl */
/* eslint-disable no-param-reassign */
((gl) => {
gl.VueGlPagination = Vue.extend({
props: [
'changepage',
'pages',
],
template: `
<div class="gl-pagination">
<ul class="pagination clearfix">
<li class="prev disabled">
<span>Prev</span>
</li>
<li class="page active">
<a @click='changepage($event)'>1</a>
</li>
<li class="page">
<a
rel="next"
@click='changepage($event)'
>
2
</a>
</li>
<li class="page">
<a @click='changepage($event)'>3</a>
</li>
<li class="page">
<a @click='changepage($event)'>4</a>
</li>
<li class="page">
<a @click='changepage($event)'>5</a>
</li>
<li class="page">
<span class="page gap">…</span>
</li>
<li class="next">
<a
rel="next"
href="pipelines?page=2"
>
Next
</a>
</li>
<li class="last">
<a href="pipelines?page=936">Last »</a>
</li>
</ul>
</div>
`,
});
})(window.gl || (window.gl = {}));
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment