forked from slonk/bingus-blog
40 lines
984 B
JavaScript
40 lines
984 B
JavaScript
let form = document.getElementById("sort");
|
|
let posts = document.getElementById("posts");
|
|
|
|
let postsName = document.createElement("div");
|
|
|
|
function initialSort(source, target) {
|
|
let posts = [];
|
|
for (let post of source.children) {
|
|
let title = post.firstElementChild.innerText;
|
|
posts.push([title, post.cloneNode(true)]);
|
|
}
|
|
posts.sort(([a, _1], [b, _2]) => a.toLocaleLowerCase() > b.toLocaleLowerCase());
|
|
for (let [_, post] of posts) {
|
|
target.appendChild(post);
|
|
}
|
|
}
|
|
|
|
function sort(by) {
|
|
console.log("sorting by", by);
|
|
switch (by) {
|
|
case "date":
|
|
posts.style.display = "block";
|
|
postsName.style.display = "none";
|
|
break;
|
|
case "name":
|
|
postsName.style.display = "block";
|
|
posts.style.display = "none";
|
|
break;
|
|
}
|
|
}
|
|
|
|
function handleSort() {
|
|
if (!form) return;
|
|
for (let el of form.sort) el.addEventListener("change", () => sort(form.sort.value));
|
|
}
|
|
|
|
initialSort(posts, postsName);
|
|
posts.parentNode.appendChild(postsName);
|
|
handleSort();
|
|
sort(form.sort.value);
|