bouquins-bchs/index.js
2017-01-01 17:05:17 +01:00

66 lines
1.5 KiB
JavaScript

var app = new Vue({
el: '#app',
data: {
books: [],
booksCount: 0,
page: 1,
perpage: 20
},
methods: {
sendQuery: function(url, error, success) {
var xmh = new XMLHttpRequest();
var v;
xmh.onreadystatechange = function() {
v = xmh.responseText;
if (xmh.readyState === 4 && xmh.status === 200) {
var res;
try {
res = JSON.parse(v);
} catch (err) {
if (null !== error)
error(err.name, err.message);
}
if (null !== success)
success(res);
} else if (xmh.readyState === 4) {
if (null !== error)
error(xmh.status, v);
}
};
xmh.open('GET', url, true);
xmh.send(null);
},
stdError: function(code, resp) {
console.log('ERROR ' + code + ': ' + resp);
},
indexSuccess: function(resp) {
this.booksCount = resp.count;
},
loadIndex: function() {
this.sendQuery('cgi-bin/bouquins/index', this.stdError, this.indexSuccess);
},
booksSuccess: function(resp) {
this.books = resp;
},
prevPage: function() {
if (this.page > 1) {
this.page--;
this.loadBooks();
}
},
nextPage: function() {
this.page++;
this.loadBooks();
},
loadBooks: function() {
this.sendQuery('cgi-bin/bouquins/books?page=' + this.page + '&perpage=' + this.perpage,
this.stdError, this.booksSuccess);
}
},
mounted: function() {
this.loadIndex();
}
})