111 lines
3.3 KiB
JavaScript
111 lines
3.3 KiB
JavaScript
|
"use strict";
|
||
|
|
||
|
var filterizd;
|
||
|
|
||
|
var isMobile = false, isTablet = false, isLaptop = false;
|
||
|
(function ($) {
|
||
|
jQuery(document).ready(function () {
|
||
|
function detectDevice() {
|
||
|
if (window.innerWidth <= 425) {
|
||
|
isMobile = true;
|
||
|
isTablet = false;
|
||
|
isLaptop = false;
|
||
|
} else if (window.innerWidth <= 768) {
|
||
|
isMobile = false;
|
||
|
isTablet = true;
|
||
|
isLaptop = false;
|
||
|
} else {
|
||
|
isMobile = false;
|
||
|
isTablet = false;
|
||
|
isLaptop = true;
|
||
|
}
|
||
|
}
|
||
|
detectDevice();
|
||
|
|
||
|
// ======= Adjust height of the post cards =============
|
||
|
function adjustPostCardsHeight() {
|
||
|
if (!isMobile) { // no need to adjust height for mobile devices
|
||
|
let postCardHolder = document.getElementById("post-cards");
|
||
|
if (postCardHolder == null ){
|
||
|
return
|
||
|
}
|
||
|
let el = postCardHolder.children;
|
||
|
let maxHeight = 0;
|
||
|
for (let i = 0; i < el.length; i++) {
|
||
|
if (el[i].children[1].clientHeight > maxHeight) {
|
||
|
maxHeight = el[i].children[1].clientHeight;
|
||
|
}
|
||
|
}
|
||
|
for (let i = 0; i < el.length; i++) {
|
||
|
el[i].children[1].setAttribute("style", "min-height: " + maxHeight + "px;")
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
adjustPostCardsHeight();
|
||
|
|
||
|
// ============= Sidebar Tree ================
|
||
|
function buildSidebarMenu() {
|
||
|
var openedClass = "fa-minus-circle";
|
||
|
var closedClass = "fa-plus-circle";
|
||
|
// initialize top level
|
||
|
var tree = $("#tree");
|
||
|
// add expand icon to those li who has ul as children
|
||
|
tree.find("li").has("ul").each(function () {
|
||
|
var branch = $(this);
|
||
|
branch.prepend('<i class="fas ' + closedClass + '"></i>');
|
||
|
branch.on('click', function (e) {
|
||
|
if (this.children[1] == e.target) {
|
||
|
// toggle "expand" class and icon
|
||
|
branch.toggleClass("expand");
|
||
|
var icon = $(this).children('i:first');
|
||
|
icon.toggleClass(openedClass + " " + closedClass);
|
||
|
}
|
||
|
});
|
||
|
});
|
||
|
|
||
|
// remove "expnad" class from siblings of the clicked item
|
||
|
tree.find("li").on("click", function () {
|
||
|
var item = $(this);
|
||
|
var shiblings = item.siblings().each(function () {
|
||
|
var sibling = $(this);
|
||
|
if (sibling.hasClass("expand")) {
|
||
|
sibling.removeClass("expand");
|
||
|
var icon = sibling.children('i:first');
|
||
|
icon.toggleClass(openedClass + " " + closedClass);
|
||
|
}
|
||
|
});
|
||
|
});
|
||
|
|
||
|
// focus the cliked item
|
||
|
tree.find("a").on("click", function () {
|
||
|
// clear other focused link
|
||
|
tree.find("a.focused").each(function () {
|
||
|
$(this).removeClass("focused");
|
||
|
});
|
||
|
// focus cliked link
|
||
|
$(this).addClass("focused");
|
||
|
});
|
||
|
}
|
||
|
|
||
|
buildSidebarMenu();
|
||
|
// initialize filterizr
|
||
|
filterizd = $(".filtr-container").filterizr({ layout: 'sameWidth' });
|
||
|
});
|
||
|
})(jQuery);
|
||
|
|
||
|
// toggle sidebar on click
|
||
|
function toggleSidebar() {
|
||
|
document.getElementById("sidebar").classList.toggle("hide");
|
||
|
document.getElementById("content").classList.toggle("overley");
|
||
|
|
||
|
// if it is mobile device. then scroll to top.
|
||
|
if (isMobile && $("#sidebar").hasClass("hide")) {
|
||
|
document.body.scrollTop = 0;
|
||
|
document.documentElement.scrollTop = 0;
|
||
|
}
|
||
|
|
||
|
setTimeout(function () {
|
||
|
filterizd.filterizr('sort');
|
||
|
}, 300);
|
||
|
}
|