$.urlParam = function(name){ var results = new RegExp('[\?&]' + name + '=([^]*)').exec(window.location.href); if (results==null) { return null; } return decodeURI(results[1]) || 0; } theme = 0; humor = []; liked = false; likelist = []; function modHumor (catId, catDef, amount = 0) { console.log(catId, catDef, amount) let cf = humor.filter( el => el.catId === catId); // category found if (cf.length == 1) { cf[0].amount += amount; }else{ humor.push({ catId: catId, catDef: catDef, amount: amount }) } } function printHumor(){ $("#score-content").hide("fast",function(){ let htmlContent = ""; for (let i = 0 ; i < humor.length; i++){ htmlContent += ""; } $("#score-content").html(htmlContent); $("#score-content").show("fast"); }); } let jokeClass = { cur_joke: {}, get: (id) => { return new Promise((resolve,reject) => { $.getJSON(`/joke/${id}`).done(function ( data ) { resolve(data.data) }).fail(function ( err ) { reject(err); }) }) }, getRnd: () => { return new Promise((resolve,reject) => { $.getJSON(`/jokes/getRand/`).done(function ( data ) { resolve(data.data) }).fail(function ( err ) { reject(err); }) }) }, up: (id) => { return new Promise((resolve,reject) => { $.getJSON(`/joke/${id}/upvote`).done(function ( data ) { resolve(data.data) }).fail(function ( err ) { reject(err); }) }) }, down: (id) => { return new Promise((resolve,reject) => { $.getJSON(`/joke/${id}/downvote`).done(function ( data ) { resolve(data.data) }).fail(function ( err ) { reject(err); }) }) }, } function setLikeButton(state){ console.log(state) if (state){ $('.cmd-like').removeClass('heart-da').addClass('heart-en'); }else{ $('.cmd-like').removeClass('heart-en').addClass('heart-da'); } } async function getWitz(action = 0,id = -1){ switch(action){ case 0: jokeClass.cur_joke = await jokeClass.getRnd(); break; case 1: jokeClass.cur_joke = await jokeClass.up(id); break; case 2: jokeClass.cur_joke = await jokeClass.down(id); break; case 3: jokeClass.cur_joke = await jokeClass.get(id); break; } liked = (likelist.includes(jokeClass.cur_joke.id)) setLikeButton(liked); $("#content").hide("fast", function () { $("#joke-title").text(jokeClass.cur_joke.category); $("#joke-source").text(jokeClass.cur_joke.author); $("#joke-text").html(jokeClass.cur_joke.text); $("#content").show("fast"); }); } $('.cmd-next').click(function() { modHumor(jokeClass.cur_joke.categoryId,jokeClass.cur_joke.category,-50); getWitz(2,jokeClass.cur_joke.id); printHumor(); }); $('.cmd-more').click(function() { modHumor(jokeClass.cur_joke.categoryId,jokeClass.cur_joke.category,50); getWitz(1,jokeClass.cur_joke.id); printHumor(); }); $('.cmd-like').click(function() { liked = !liked; setLikeButton(liked); if (liked && !likelist.includes(jokeClass.cur_joke.id)){ likelist.push(jokeClass.cur_joke.id); }else{ likelist = likelist.filter(el => el !== jokeClass.cur_joke.id); } console.log(likelist) }); $('.cmd-likes').click(function() { renderFavList(); $('.popup-bg-likes').fadeIn('fast'); }); $('.cmd-close-likes').click(function() { $('.popup-bg-likes').fadeOut('fast'); }); async function renderFavList (){ let html = ""; for (let i = 0; i < likelist.length ; i++){ let joke = await jokeClass.get(likelist[i]); console.log(joke) html += renderFavJoke(joke); } $("#favList").html(html) for (let i = 0; i < likelist.length ; i++){ $(`#like-remove-${likelist[i]}`).click(function() { $(`#liked-joke-${likelist[i]}`).fadeOut('fast'); likelist = likelist.filter(el => el !== likelist[i]); renderFavList(); }); } } function renderFavJoke(joke){ let template = $("#j-template").html(); template = template.replace("{{category}}",joke.category) template = template.replace("{{author}}",joke.author) template = template.replace("{{text}}",joke.text) template = template.replace("{{id}}",joke.id) const final = (`