upvoting suppression by local storage now works, there is a bug however with the entries loaded o startup

This commit is contained in:
J-Klinke 2024-07-03 11:27:49 +02:00
parent 20eda5931a
commit 6d34b8c388
3 changed files with 16 additions and 18 deletions

View File

@ -1,4 +1,4 @@
import {searchBarTimeout, searchSection, lastQuery, votedIDs} from "./main.js" import {searchBarTimeout, searchSection, lastQuery} from "./main.js"
import Dataset from "./dataset.js" import Dataset from "./dataset.js"
export function fetchQuery(fetchString, clearResults) { export function fetchQuery(fetchString, clearResults) {
@ -24,12 +24,9 @@ function parseContent(content, clearResults) {
Array.from(searchSection.querySelectorAll(".datasets .dataset")).forEach(e => e.remove()); Array.from(searchSection.querySelectorAll(".datasets .dataset")).forEach(e => e.remove());
} }
for (const dataset of datasets) { for (const dataset of datasets) {
if (votedIDs.has(dataset.getID())) { console.log(dataset) //TODO: remove
searchSection.querySelector(".datasets").appendChild(dataset.createDatasetHTMLElement(false,)); searchSection.querySelector(".datasets")
} else { .appendChild(dataset.createDatasetHTMLElement(dataset.getID()));
searchSection.querySelector(".datasets").appendChild(dataset.createDatasetHTMLElement());
} }
} }
}
} }

View File

@ -1,4 +1,4 @@
import { vote } from "./main.js"; import { vote, votedIDs } from "./main.js";
export default class Dataset { export default class Dataset {
#abstract; #abstract;
@ -29,18 +29,20 @@ export default class Dataset {
this.#votes = votes; this.#votes = votes;
} }
createDatasetHTMLElement(votable, isUpVoted) { createDatasetHTMLElement(entryID) {
let template = document.querySelector("#dataset-template"); let template = document.querySelector("#dataset-template");
const clone = template.content.cloneNode(true); const clone = template.content.cloneNode(true);
clone.querySelector(".dataset").dataset.id = this.#id; clone.querySelector(".dataset").dataset.id = this.#id;
clone.querySelector("h3").innerText = this.#title; clone.querySelector("h3").innerText = this.#title;
clone.querySelector("p").innerText = this.#description; clone.querySelector("p").innerText = this.#description;
clone.querySelector("span").innerText = this.#upvotes; clone.querySelector("span").innerText = this.#upvotes;
if (!votable) {
let votedButton = clone.querySelector(isUpVoted? ".upvote-btn":".downvote-btn"); // depending on whether the button has been up/downvoted, its according button get disabled and hidden
if (votedIDs.has(entryID)) {
let votedButton = clone.querySelector(votedIDs.get(entryID)? ".upvote-btn":".downvote-btn");
votedButton.classList.add("isVoted"); votedButton.classList.add("isVoted");
votedButton.disabled = true; votedButton.disabled = true;
let notVotedButton = clone.querySelector(isUpVoted? ".downvote-btn":".upvote-btn"); let notVotedButton = clone.querySelector(votedIDs.get(entryID)? ".downvote-btn":".upvote-btn");
notVotedButton.style.visibility = "hidden"; notVotedButton.style.visibility = "hidden";
} }

View File

@ -89,7 +89,7 @@ for (const downvoteButton of downvoteButtons) {
// functions of the main page // functions of the main page
function navigateToAdd() { function navigateToAdd() {
window.location.href = "/add"; window.location.href = "/add"; //TODO: move to EventListner?
} }
function getFilterQuery() { function getFilterQuery() {
@ -154,7 +154,6 @@ export function vote(entryID, up) {
votedButton.disabled = true; votedButton.disabled = true;
let notVotedButton = dataSet.querySelector(up? ".downvote-btn":".upvote-btn"); let notVotedButton = dataSet.querySelector(up? ".downvote-btn":".upvote-btn");
notVotedButton.style.visibility = "hidden"; notVotedButton.style.visibility = "hidden";
console.log(dataSet.getAttribute("data-id"));
votedIDs.set(dataSet.getAttribute("data-id"), up); votedIDs.set(dataSet.getAttribute("data-id"), up);
}); });
@ -202,8 +201,8 @@ function fetchInitialEntries() {
.then((data) => { .then((data) => {
const datasets = data.content.map(dataset => new Dataset(dataset)); const datasets = data.content.map(dataset => new Dataset(dataset));
for (const dataset of datasets) { for (const dataset of datasets) {
//dataSets.add(dataset); document.querySelector("#recents .datasets")
document.querySelector("#recents .datasets").appendChild(dataset.createDatasetHTMLElement()); .appendChild(dataset.createDatasetHTMLElement(dataset.getID()));
} }
}); });
@ -215,8 +214,8 @@ function fetchInitialEntries() {
.then(resp => resp.json()) .then(resp => resp.json())
.then((data) => { .then((data) => {
let dataset = new Dataset(data.content[0]); let dataset = new Dataset(data.content[0]);
//dataSets.add(dataset); document.querySelector("#top .datasets")
document.querySelector("#top .datasets").appendChild(dataset.createDatasetHTMLElement()); .appendChild(dataset.createDatasetHTMLElement(dataset.getID()));
}); });
} }