mirror of
https://github.com/KevinMidboe/zoff.git
synced 2025-10-29 18:00:23 +00:00
Previous/next pagination working
This commit is contained in:
7
package-lock.json
generated
7
package-lock.json
generated
@@ -2204,7 +2204,7 @@
|
||||
"dependencies": {
|
||||
"combined-stream": {
|
||||
"version": "1.0.6",
|
||||
"resolved": "http://registry.npmjs.org/combined-stream/-/combined-stream-1.0.6.tgz",
|
||||
"resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.6.tgz",
|
||||
"integrity": "sha1-cj599ugBrFYTETp+RFqbactjKBg=",
|
||||
"requires": {
|
||||
"delayed-stream": "~1.0.0"
|
||||
@@ -3863,6 +3863,11 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"mongojs-paginate": {
|
||||
"version": "1.2.0",
|
||||
"resolved": "https://registry.npmjs.org/mongojs-paginate/-/mongojs-paginate-1.2.0.tgz",
|
||||
"integrity": "sha1-Z3YjmDlByAOPyBz88lw+425iO4s="
|
||||
},
|
||||
"mongoose": {
|
||||
"version": "5.0.16",
|
||||
"resolved": "https://registry.npmjs.org/mongoose/-/mongoose-5.0.16.tgz",
|
||||
|
||||
@@ -46,6 +46,7 @@
|
||||
"jimp": "^0.2.28",
|
||||
"mongodb": "^2.2.35",
|
||||
"mongojs": "^2.5.0",
|
||||
"mongojs-paginate": "^1.2.0",
|
||||
"mongoose": "^5.0.16",
|
||||
"mpromise": "^0.5.5",
|
||||
"nodemailer": "^4.6.4",
|
||||
|
||||
@@ -383,6 +383,14 @@ li.disabled span {
|
||||
margin-top: 5px;
|
||||
}
|
||||
|
||||
.filter-pagination-container {
|
||||
display: flex;
|
||||
justify-content: space-evenly;
|
||||
padding-top: 15px;
|
||||
width: 50%;
|
||||
margin: auto;
|
||||
}
|
||||
|
||||
.extra-button{
|
||||
margin: 0 4px !important;
|
||||
padding: 0px !important;
|
||||
|
||||
@@ -21,7 +21,7 @@ function removeAllListeners() {
|
||||
socket.removeEventListener(id);
|
||||
}
|
||||
|
||||
function filterPlaylistElements() {
|
||||
function filterPlaylistElements(page) {
|
||||
Helper.ajax({
|
||||
type: "POST",
|
||||
headers: {
|
||||
@@ -30,14 +30,28 @@ function filterPlaylistElements() {
|
||||
url: "/api/search/" + chan.toLowerCase(),
|
||||
data: {
|
||||
searchQuery: document.getElementById("filtersearch_input").value,
|
||||
token: zoff_api_token
|
||||
token: zoff_api_token,
|
||||
page: page
|
||||
},
|
||||
success: function(data){
|
||||
var json = JSON.parse(data);
|
||||
document.querySelector(".filter-results").innerHTML = "";
|
||||
if(json.results.length > 0) {
|
||||
for(var i = 0; i < json.results.length; i++) {
|
||||
document.querySelector(".filter-results").innerHTML += List.generateSong(json.results[i], false, false, true, false, "block", false, true);;
|
||||
if(json.results.search_results.length > 0) {
|
||||
for(var i = 0; i < json.results.search_results.length; i++) {
|
||||
document.querySelector(".filter-results").innerHTML += List.generateSong(json.results.search_results[i], false, false, true, false, "block", false, true);;
|
||||
}
|
||||
if(json.results.next != undefined || json.results.prev != undefined) {
|
||||
document.querySelector(".filter-results").innerHTML += "<div class='filter-pagination-container'></div>"
|
||||
if(json.results.prev != undefined) {
|
||||
document.querySelector(".filter-pagination-container").innerHTML += "<a href='#' class='btn orange prev-filter' data-page='" + json.results.prev + "'>Prev</a>";
|
||||
} else {
|
||||
document.querySelector(".filter-pagination-container").innerHTML += "<a href='#' class='btn orange disabled'>Prev</a>";
|
||||
}
|
||||
if(json.results.next != undefined) {
|
||||
document.querySelector(".filter-pagination-container").innerHTML += "<a href='#' class='btn orange next-filter' data-page='" + json.results.next + "'>Next</a>";
|
||||
} else {
|
||||
document.querySelector(".filter-pagination-container").innerHTML += "<a href='#' class='btn orange disabled'>Next</a>";
|
||||
}
|
||||
}
|
||||
} else {
|
||||
toast("Couldn't find any items with those tags..", "red");
|
||||
|
||||
@@ -697,12 +697,28 @@ function addDynamicListeners() {
|
||||
|
||||
addListener("submit", "#filter-form", function(e) {
|
||||
this.preventDefault();
|
||||
filterPlaylistElements();
|
||||
filterPlaylistElements(1);
|
||||
});
|
||||
|
||||
addListener("click", ".submit-filter-search", function(e) {
|
||||
this.preventDefault();
|
||||
filterPlaylistElements();
|
||||
filterPlaylistElements(1);
|
||||
});
|
||||
|
||||
addListener("click", ".next-filter", function(e) {
|
||||
this.preventDefault();
|
||||
var page = e.getAttribute("data-page");
|
||||
page = parseInt(page);
|
||||
if(page == undefined || isNaN(page)) return;
|
||||
filterPlaylistElements(page);
|
||||
});
|
||||
|
||||
addListener("click", ".prev-filter", function(e) {
|
||||
this.preventDefault();
|
||||
var page = e.getAttribute("data-page");
|
||||
page = parseInt(page);
|
||||
if(page == undefined || isNaN(page)) return;
|
||||
filterPlaylistElements(page);
|
||||
});
|
||||
|
||||
addListener("click", ".delete-context-menu", function(e) {
|
||||
|
||||
@@ -15,6 +15,7 @@ var Search = require(pathThumbnails + '/handlers/search.js');
|
||||
var uniqid = require('uniqid');
|
||||
var Filter = require('bad-words');
|
||||
var filter = new Filter({ placeHolder: 'x'});
|
||||
var paginate = require('mongojs-paginate');
|
||||
|
||||
var _exports = {
|
||||
router: router,
|
||||
@@ -748,6 +749,10 @@ router.route('/api/search/:channel_name/').post(function(req, res) {
|
||||
} else {
|
||||
userpass = "";
|
||||
}
|
||||
var page = 1;
|
||||
if(req.body.hasOwnProperty("page") && req.body.page > 0) {
|
||||
page = req.body.page;
|
||||
}
|
||||
var searchQuery = "";
|
||||
if(req.body.searchQuery == undefined || req.body.searchQuery == "") {
|
||||
var to_send = error.formatting;
|
||||
@@ -800,13 +805,24 @@ router.route('/api/search/:channel_name/').post(function(req, res) {
|
||||
res.status(403).send(error.not_authenticated);
|
||||
return;
|
||||
}
|
||||
db.collection(channel_name).find({tags: {$regex : ".*" + searchQuery + ".*"}}, function(e, results) {
|
||||
if(results.length == 0) {
|
||||
var query = db.collection(channel_name).find({tags: {
|
||||
$regex : ".*" + searchQuery + ".*"
|
||||
}});
|
||||
paginate(query, { limit : 30, page : page }, function(err, result) {
|
||||
if(result.items.length == 0) {
|
||||
res.status(404).send(error.not_found.local);
|
||||
return;
|
||||
}
|
||||
var to_return = error.no_error;
|
||||
to_return.results = results;
|
||||
var to_return = error.no_error
|
||||
to_return.results = {};
|
||||
if(result.hasNext) {
|
||||
to_return.results.next = result.page + 1;
|
||||
}
|
||||
if(result.hasPrevious) {
|
||||
to_return.results.prev = result.page - 1;
|
||||
}
|
||||
to_return.results.search_results = result.items;
|
||||
|
||||
res.status(200).send(to_return);
|
||||
});
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user