diff --git a/assets/scripts/core/index.js b/assets/scripts/core/index.js index 0ce9c17..d92a24a 100644 --- a/assets/scripts/core/index.js +++ b/assets/scripts/core/index.js @@ -1 +1,2 @@ export * from './device'; +export * from './insertScript'; diff --git a/assets/scripts/core/insertScript.js b/assets/scripts/core/insertScript.js new file mode 100644 index 0000000..f97c9df --- /dev/null +++ b/assets/scripts/core/insertScript.js @@ -0,0 +1,14 @@ +export const insertScript = (id, src, onload) => { + // script is already inserted, do nothing + if (document.getElementById(id)) return; + + // insert script + const firstScriptTag = document.getElementsByTagName('script')[0]; + const scriptTag = document.createElement('script'); + scriptTag.id = id; + scriptTag.onload = onload; + scriptTag.src = src; + scriptTag.defer = true; + scriptTag.async = true; + firstScriptTag.parentNode.insertBefore(scriptTag, firstScriptTag); +}; diff --git a/assets/scripts/sections/achievements.js b/assets/scripts/sections/achievements.js new file mode 100644 index 0000000..7aa0ddc --- /dev/null +++ b/assets/scripts/sections/achievements.js @@ -0,0 +1,218 @@ +function fourColumRow(gallery, entries, i) { + let entry1 = document.createElement("div"); + entry1.classList.add("col-lg-6", "m-0", "p-0"); + entry1.appendChild(entries[i].cloneNode(true)); + entry1.children[0].classList.add("img-type-1"); + gallery.appendChild(entry1); + i++; + + let entry2 = document.createElement("div"); + entry2.classList.add("col-lg-3", "m-0", "p-0"); + entry2.appendChild(entries[i].cloneNode(true)); + entry2.children[0].classList.add("img-type-1"); + gallery.appendChild(entry2); + i++; + + let entry3 = document.createElement("div"); + entry3.classList.add("col-lg-3", "m-0", "p-0"); + entry3.appendChild(entries[i].cloneNode(true)); + entry3.children[0].classList.add("img-type-2"); + i++; + entry3.appendChild(entries[i].cloneNode(true)); + entry3.children[1].classList.add("img-type-2"); + gallery.appendChild(entry3); + i++; +} + +function fourColumnReversedRow(gallery, entries, i) { + let entry1 = document.createElement("div"); + entry1.classList.add("col-lg-3", "m-0", "p-0"); + entry1.appendChild(entries[i].cloneNode(true)); + entry1.children[0].classList.add("img-type-2"); + i++; + entry1.appendChild(entries[i].cloneNode(true)); + entry1.children[1].classList.add("img-type-2"); + gallery.appendChild(entry1); + i++; + + let entry2 = document.createElement("div"); + entry2.classList.add("col-lg-3", "m-0", "p-0"); + entry2.appendChild(entries[i].cloneNode(true)); + entry2.children[0].classList.add("img-type-1"); + gallery.appendChild(entry2); + i++; + + let entry3 = document.createElement("div"); + entry3.classList.add("col-lg-6", "m-0", "p-0"); + entry3.appendChild(entries[i].cloneNode(true)); + entry3.children[0].classList.add("img-type-1"); + gallery.appendChild(entry3); + i++; +} + +function threeColumnRow(gallery, entries, i) { + console.log(i); + let entry1 = document.createElement("div"); + entry1.classList.add("col-lg-6", "col-md-6", "m-0", "p-0"); + entry1.appendChild(entries[i].cloneNode(true)); + entry1.children[0].classList.add("img-type-1"); + gallery.appendChild(entry1); + i++; + + let entry2 = document.createElement("div"); + entry2.classList.add("col-lg-3", "col-md-3", "m-0", "p-0"); + entry2.appendChild(entries[i].cloneNode(true)); + entry2.children[0].classList.add("img-type-1"); + gallery.appendChild(entry2); + i++; + + let entry3 = document.createElement("div"); + entry3.classList.add("col-lg-3", "col-md-3", "m-0", "p-0"); + entry3.appendChild(entries[i].cloneNode(true)); + entry3.children[0].classList.add("img-type-1"); + gallery.appendChild(entry3); + i++; +} + +function threeColumnReversedRow(gallery, entries, i) { + let entry1 = document.createElement("div"); + entry1.classList.add("col-lg-3", "col-md-3", "m-0", "p-0"); + entry1.appendChild(entries[i].cloneNode(true)); + entry1.children[0].classList.add("img-type-1"); + gallery.appendChild(entry1); + i++; + + let entry2 = document.createElement("div"); + entry2.classList.add("col-lg-3", "col-md-3", "m-0", "p-0"); + entry2.appendChild(entries[i].cloneNode(true)); + entry2.children[0].classList.add("img-type-1"); + gallery.appendChild(entry2); + i++; + + let entry3 = document.createElement("div"); + entry3.classList.add("col-lg-6", "col-md-3", "m-0", "p-0"); + entry3.appendChild(entries[i].cloneNode(true)); + entry3.children[0].classList.add("img-type-1"); + gallery.appendChild(entry3); + i++; +} + +function twoColumnRow(gallery, entries, i) { + let entry1 = document.createElement("div"); + entry1.classList.add("col-6", "m-0", "p-0"); + entry1.appendChild(entries[i].cloneNode(true)); + entry1.children[0].classList.add("img-type-1"); + gallery.appendChild(entry1); + i++; + + let entry2 = document.createElement("div"); + entry2.classList.add("col-6", "m-0", "p-0"); + entry2.appendChild(entries[i].cloneNode(true)); + entry2.children[0].classList.add("img-type-1"); + gallery.appendChild(entry2); + i++; +} + +function singleColumnRow(gallery, entries, i) { + let entry1 = document.createElement("div"); + entry1.classList.add("col-12", "m-0", "p-0"); + entry1.appendChild(entries[i].cloneNode(true)); + entry1.children[0].classList.add("img-type-1"); + gallery.appendChild(entry1); + i++; +} + +function showAchievements() { + // show achievements from achievements-holder div + let gallery = document.getElementById("gallery"); + if (gallery == null) { + return + } + gallery.innerHTML = ""; + const entries = document.getElementById("achievements-holder").children; + let len = entries.length; + let i = 0; + let rowNumber = 1; + while (i < len) { + if (isLaptop) { + if (i + 4 <= len) { + if (rowNumber % 2) { + fourColumRow(gallery, entries, i); + } else { + fourColumnReversedRow(gallery, entries, i); + } + i += 4; + + } else if (i + 3 <= len) { + if (rowNumber % 2) { + threeColumnRow(gallery, entries, i); + } else { + threeColumnReversedRow(gallery, entries, i); + } + i += 3; + } else if (i + 2 <= len) { + twoColumnRow(gallery, entries, i); + i += 2; + } else { + singleColumnRow(gallery, entries, i); + i++; + } + } else if (isTablet) { + if (i + 2 <= len) { + twoColumnRow(gallery, entries, i); + i += 2; + } else { + singleColumnRow(gallery, entries, i); + i++; + } + } else { + singleColumnRow(gallery, entries, i); + i++; + } + rowNumber++; + } + + // show full image on click + let elements = document.getElementsByClassName("achievement-entry"); + len = elements.length; + for (let i = 0; i < len; i++) { + elements[i].onclick = function () { + let achievements = document.getElementsByClassName("achievement-entry"); + let len2 = achievements.length; + for (let j = 0; j < len2; j++) { + achievements[j].classList.toggle("hidden"); + } + this.classList.toggle("achievement-details"); + this.classList.toggle("hidden"); + this.parentElement.classList.toggle("col-lg-12"); + this.parentElement.classList.toggle("col-md-12"); + this.parentElement.classList.toggle("col-sm-12"); + if (this.children["SmallImage"].hasAttribute("active")) { + let mainLogo = this.children["LargeImage"].getAttribute("Style"); + this.children["LargeImage"].setAttribute("active", true); + this.children["SmallImage"].removeAttribute("active"); + + this.setAttribute("Style", mainLogo); + } else { + let mainLogo = this.children["SmallImage"].getAttribute("Style"); + this.children["SmallImage"].setAttribute("active", true); + this.children["LargeImage"].removeAttribute("active"); + this.setAttribute("Style", mainLogo); + } + + if (this.children["caption"] != undefined) { + this.children["caption"].classList.toggle("hidden"); + } + if (this.children["enlarge-icon"] != undefined) { + this.children["enlarge-icon"].classList.toggle("fa-search-plus"); + this.children["enlarge-icon"].classList.toggle("fa-times"); + } + if (this.children["achievement-title"] != undefined) { + this.children["achievement-title"].classList.toggle("hidden"); + } + } + } +} + +['DOMContentLoaded', 'resize'].forEach((event) => + document.addEventListener(event, showAchievements)); diff --git a/assets/scripts/sections/index.js b/assets/scripts/sections/index.js index 89da2dd..3589ed9 100644 --- a/assets/scripts/sections/index.js +++ b/assets/scripts/sections/index.js @@ -2,3 +2,6 @@ import './navbar'; import './sidebar'; import './education'; +import './achievements'; +import './projects'; +import './publications'; diff --git a/assets/scripts/sections/projects.js b/assets/scripts/sections/projects.js new file mode 100644 index 0000000..271a135 --- /dev/null +++ b/assets/scripts/sections/projects.js @@ -0,0 +1,18 @@ +import Filterizr from 'filterizr'; +import { insertScript } from '../core' + +document.addEventListener('DOMContentLoaded', () => { + // ================== Project cards ===================== + + // setup project filter buttons + var projectCardHolder = document.getElementById("project-card-holder"); + if (projectCardHolder != null && projectCardHolder.children.length != 0) { + new Filterizr(".filtr-projects", { + layout: 'sameWidth', + controlsSelector: '.project-filtr-control', + }); + } +}); + +// dynamically insert github buttons script. +insertScript('github-buttons', 'https://buttons.github.io/buttons.js'); diff --git a/assets/scripts/sections/publications.js b/assets/scripts/sections/publications.js new file mode 100644 index 0000000..f4106d9 --- /dev/null +++ b/assets/scripts/sections/publications.js @@ -0,0 +1,12 @@ +import Filterizr from 'filterizr'; + +document.addEventListener('DOMContentLoaded', () => { + var publicationCardHolder = document.getElementById("publication-card-holder"); + if (publicationCardHolder != null && publicationCardHolder.children.length != 0) { + new Filterizr(".filtr-publications", { + layout: 'sameWidth', + gridItemsSelector: '.pub-filtr-item', + controlsSelector: '.pub-filtr-control', + }); + } +}); diff --git a/layouts/index.html b/layouts/index.html index 4ba24a7..c54653f 100644 --- a/layouts/index.html +++ b/layouts/index.html @@ -75,12 +75,6 @@ {{ partial "scripts.html" . }} - - - - - - {{- partial "misc/support.html" . -}} diff --git a/layouts/partials/cards/project.html b/layouts/partials/cards/project.html index cdf33bf..84ba341 100644 --- a/layouts/partials/cards/project.html +++ b/layouts/partials/cards/project.html @@ -42,8 +42,9 @@ {{ end }}
{{ if .repo }} + ' - }, - heart: { - width: 12, - height: 16, - path: '' - }, - eye: { - width: 16, - height: 16, - path: '' - }, - star: { - width: 14, - height: 16, - path: '' - }, - "repo-forked": { - width: 10, - height: 16, - path: '' - }, - "issue-opened": { - width: 14, - height: 16, - path: '' - }, - "cloud-download": { - width: 16, - height: 16, - path: '' - } - }, - x = {}, - y = function (e, t) { - var o = x[e] || (x[e] = []); - if (!(o.push(t) > 1)) { - var r = p((function () { - for (delete x[e]; t = o.shift();) t.apply(null, arguments) - })); - if (i) { - var a = new n; - d(a, "abort", r), d(a, "error", r), d(a, "load", (function () { - var e; - try { - e = JSON.parse(a.responseText) - } catch (e) { - return void r(e) - } - r(200 !== a.status, e) - })), a.open("GET", e), a.send() - } else { - var l = this || window; - l._ = function (e) { - l._ = null, r(200 !== e.meta.status, e.data) - }; - var c = h(l.document)("script", { - async: !0, - src: e + (/\?/.test(e) ? "&" : "?") + "callback=_" - }), - s = function () { - l._ && l._({ - meta: {} - }) - }; - d(c, "load", s), d(c, "error", s), c.readyState && u(c, /de|m/, s), l.document.getElementsByTagName("head")[0].appendChild(c) - } - } - }, - k = function (e, t, o) { - var r = h(e.ownerDocument), - n = e.appendChild(r("style", { - type: "text/css" - })), - a = "body{margin:0}a{text-decoration:none;outline:0}.widget{display:inline-block;overflow:hidden;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Helvetica,Arial,sans-serif;font-size:0;white-space:nowrap}.btn,.social-count{position:relative;display:inline-block;height:14px;padding:2px 5px;font-size:11px;font-weight:600;line-height:14px;vertical-align:bottom;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;background-repeat:repeat-x;background-position:-1px -1px;background-size:110% 110%;border:1px solid}.btn{border-radius:.25em}.btn:not(:last-child){border-radius:.25em 0 0 .25em}.social-count{border-left:0;border-radius:0 .25em .25em 0}.widget-lg .btn,.widget-lg .social-count{height:20px;padding:3px 10px;font-size:12px;line-height:20px}.octicon{display:inline-block;vertical-align:text-top;fill:currentColor}" + function (e) { - if (null == e) return m.light; - var t = c(e, ";", ":", (function (e) { - return e.replace(/^[ \t\n\f\r]+|[ \t\n\f\r]+$/g, "") - })); - return m[b(m, t["no-preference"]) ? t["no-preference"] : "light"] + v("light", t.light) + v("dark", t.dark) - }(t["data-color-scheme"]); - n.styleSheet ? n.styleSheet.cssText = a : n.appendChild(e.ownerDocument.createTextNode(a)); - var i, l, d = r("a", { - className: "btn", - href: t.href, - target: "_blank", - rel: "noopener", - innerHTML: (i = t["data-icon"], l = /^large$/i.test(t["data-size"]) ? 16 : 14, i = ("" + i).toLowerCase().replace(/^octicon-/, ""), b(w, i) || (i = "mark-github"), '"), - "aria-label": t["aria-label"] || void 0 - }, [" ", r("span", {}, [t["data-text"] || ""])]), - s = e.appendChild(r("div", { - className: "widget" + (/^large$/i.test(t["data-size"]) ? " widget-lg" : "") - }, [d])), - f = d.hostname.split(".").reverse(); - if ("" === f[0] && f.shift(), "com" !== f[0] || "github" !== f[1]) return d.href = "#", d.target = "_self", void o(s); - var u = f.length, - g = (" /" + d.pathname).split(/\/+/); - if (((2 === u || 3 === u && "gist" === f[2]) && "archive" === g[3] || 2 === u && "releases" === g[3] && "download" === g[4] || 3 === u && "codeload" === f[2]) && (d.target = "_top"), /^true$/i.test(t["data-show-count"]) && 2 === u) { - var p, x; - if (!g[2] && g[1]) p = x = "followers"; - else if (!g[3] && g[2]) x = "stargazers_count", p = "stargazers"; - else if (g[4] || "subscription" !== g[3]) - if (g[4] || "fork" !== g[3]) { - if ("issues" !== g[3]) return void o(s); - x = "open_issues_count", p = "issues" - } else x = "forks_count", p = "network/members"; - else x = "subscribers_count", p = "watchers"; - var k = g[2] ? "/repos/" + g[1] + "/" + g[2] : "/users/" + g[1]; - y.call(this, "https://api.github.com" + k, (function (e, t) { - if (!e) { - var n = t[x]; - s.appendChild(r("a", { - className: "social-count", - href: t.html_url + "/" + p, - target: "_blank", - rel: "noopener", - "aria-label": n + " " + x.replace(/_count$/, "").replace("_", " ").slice(0, n < 2 ? -1 : void 0) + " on GitHub" - }, [("" + n).replace(/\B(?=(\d{3})+(?!\d))/g, ",")])) - } - o(s) - })) - } else o(s) - }, - C = window.devicePixelRatio || 1, - z = function (e) { - return (C > 1 ? o.ceil(o.round(e * C) / C * 2) / 2 : o.ceil(e)) || 0 - }, - F = function (e, t) { - e.style.width = t[0] + "px", e.style.height = t[1] + "px" - }, - M = function (t, r) { - if (null != t && null != r) - if (t.getAttribute && (t = function (e) { - for (var t = { - href: e.href, - title: e.title, - "aria-label": e.getAttribute("aria-label") - }, o = ["icon", "color-scheme", "text", "size", "show-count"], r = 0, n = o.length; r < n; r++) { - var a = "data-" + o[r]; - t[a] = e.getAttribute(a) - } - return null == t["data-text"] && (t["data-text"] = e.textContent || e.innerText), t - }(t)), l) { - var n = g("span", { - title: t.title || void 0 - }); - k(n.attachShadow({ - mode: "closed" - }), t, (function () { - r(n) - })) - } else { - var i = g("iframe", { - src: "javascript:0", - title: t.title || void 0, - allowtransparency: !0, - scrolling: "no", - frameBorder: 0 - }); - F(i, [0, 0]), i.style.border = "none"; - var c = function () { - var n, l = i.contentWindow; - try { - n = l.document.body - } catch (t) { - return void e.body.appendChild(i.parentNode.removeChild(i)) - } - s(i, "load", c), k.call(l, n, t, (function (e) { - var n = function (e) { - var t = e.offsetWidth, - r = e.offsetHeight; - if (e.getBoundingClientRect) { - var n = e.getBoundingClientRect(); - t = o.max(t, z(n.width)), r = o.max(r, z(n.height)) - } - return [t, r] - }(e); - i.parentNode.removeChild(i), f(i, "load", (function () { - F(i, n) - })), i.src = a + "#" + (i.name = function (e, t, o, r) { - null == t && (t = "&"), null == o && (o = "="), null == r && (r = window.encodeURIComponent); - var n = []; - for (var a in e) { - var i = e[a]; - null != i && n.push(r(a) + o + r(i)) - } - return n.join(t) - }(t)), r(i) - })) - }; - d(i, "load", c), e.body.appendChild(i) - } - }; - t.protocol + "//" + t.host + t.pathname === a ? k(e.body, c(window.name || t.hash.replace(/^#/, "")), (function () { })) : function (t) { - if (/m/.test(e.readyState) || !/g/.test(e.readyState) && !e.documentElement.doScroll) setTimeout(t); - else if (e.addEventListener) { - var o = p(t); - f(e, "DOMContentLoaded", o), f(window, "load", o) - } else u(e, /m/, t) - }((function () { - for (var t = e.querySelectorAll ? e.querySelectorAll("a.github-button") : function () { - for (var t = [], o = e.getElementsByTagName("a"), r = 0, n = o.length; r < n; r++) ~(" " + o[r].className + " ").replace(/[ \t\n\f\r]+/g, " ").indexOf(" github-button ") && t.push(o[r]); - return t - }(), o = 0, r = t.length; o < r; o++) ! function (e) { - M(e, (function (t) { - e.parentNode.replaceChild(t, e) - })) - }(t[o]) - })) -} diff --git a/static/js/home.js b/static/js/home.js deleted file mode 100644 index 9956ef8..0000000 --- a/static/js/home.js +++ /dev/null @@ -1,301 +0,0 @@ -"use strict"; - -var projectCards, publicationCards; - -(function ($) { - jQuery(document).ready(function () { - - var isMobile = false, isTablet = false, isLaptop = false; - - 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(); - - - // ================== Project cards ===================== - // Add click action on project category selector buttons - var filterButtons = document.getElementById("project-filter-buttons"); - if (filterButtons != null) { - var btns = filterButtons.children; - - for (let i = 0; i < btns.length; i++) { - btns[i].onclick = function () { - showGithubStars(btns[i].id); - } - } - } - - var projectCardHolder = document.getElementById("project-card-holder"); - if (projectCardHolder != null && projectCardHolder.children.length != 0) { - projectCards = $(".filtr-projects").filterizr( - { - layout: 'sameWidth', - controlsSelector: '.project-filtr-control', - }); - } - - // ================== Publication cards ===================== - var publicationCardHolder = document.getElementById("publication-card-holder"); - if (publicationCardHolder != null && publicationCardHolder.children.length != 0) { - publicationCards = $(".filtr-publications").filterizr( - { - layout: 'sameWidth', - gridItemsSelector: '.pub-filtr-item', - controlsSelector: '.pub-filtr-control', - }); - } - - function showGithubStars() { - // fix the github button class - // we had set it to github-button-inactive in projects holder cards so that respective javascript - // don't render it and replace respective span with shadow root - let githubButtons = document.getElementsByClassName("github-button-inactive"); - while (githubButtons.length > 0) { - if (githubButtons[0].classList != undefined) { - githubButtons[0].classList.replace("github-button-inactive", "github-button"); - } - } - // now render github button. it will call the github API and fill the respective fields - renderGithubButton(); - } - showGithubStars(); - - // =============== Achievements =========== - - function fourColumRow(gallery, entries, i) { - let entry1 = document.createElement("div"); - entry1.classList.add("col-lg-6", "m-0", "p-0"); - entry1.appendChild(entries[i].cloneNode(true)); - entry1.children[0].classList.add("img-type-1"); - gallery.appendChild(entry1); - i++; - - let entry2 = document.createElement("div"); - entry2.classList.add("col-lg-3", "m-0", "p-0"); - entry2.appendChild(entries[i].cloneNode(true)); - entry2.children[0].classList.add("img-type-1"); - gallery.appendChild(entry2); - i++; - - let entry3 = document.createElement("div"); - entry3.classList.add("col-lg-3", "m-0", "p-0"); - entry3.appendChild(entries[i].cloneNode(true)); - entry3.children[0].classList.add("img-type-2"); - i++; - entry3.appendChild(entries[i].cloneNode(true)); - entry3.children[1].classList.add("img-type-2"); - gallery.appendChild(entry3); - i++; - } - - function fourColumnReversedRow(gallery, entries, i) { - let entry1 = document.createElement("div"); - entry1.classList.add("col-lg-3", "m-0", "p-0"); - entry1.appendChild(entries[i].cloneNode(true)); - entry1.children[0].classList.add("img-type-2"); - i++; - entry1.appendChild(entries[i].cloneNode(true)); - entry1.children[1].classList.add("img-type-2"); - gallery.appendChild(entry1); - i++; - - let entry2 = document.createElement("div"); - entry2.classList.add("col-lg-3", "m-0", "p-0"); - entry2.appendChild(entries[i].cloneNode(true)); - entry2.children[0].classList.add("img-type-1"); - gallery.appendChild(entry2); - i++; - - let entry3 = document.createElement("div"); - entry3.classList.add("col-lg-6", "m-0", "p-0"); - entry3.appendChild(entries[i].cloneNode(true)); - entry3.children[0].classList.add("img-type-1"); - gallery.appendChild(entry3); - i++; - } - - function threeColumnRow(gallery, entries, i) { - console.log(i); - let entry1 = document.createElement("div"); - entry1.classList.add("col-lg-6", "col-md-6", "m-0", "p-0"); - entry1.appendChild(entries[i].cloneNode(true)); - entry1.children[0].classList.add("img-type-1"); - gallery.appendChild(entry1); - i++; - - let entry2 = document.createElement("div"); - entry2.classList.add("col-lg-3", "col-md-3", "m-0", "p-0"); - entry2.appendChild(entries[i].cloneNode(true)); - entry2.children[0].classList.add("img-type-1"); - gallery.appendChild(entry2); - i++; - - let entry3 = document.createElement("div"); - entry3.classList.add("col-lg-3", "col-md-3", "m-0", "p-0"); - entry3.appendChild(entries[i].cloneNode(true)); - entry3.children[0].classList.add("img-type-1"); - gallery.appendChild(entry3); - i++; - } - function threeColumnReversedRow(gallery, entries, i) { - let entry1 = document.createElement("div"); - entry1.classList.add("col-lg-3", "col-md-3", "m-0", "p-0"); - entry1.appendChild(entries[i].cloneNode(true)); - entry1.children[0].classList.add("img-type-1"); - gallery.appendChild(entry1); - i++; - - let entry2 = document.createElement("div"); - entry2.classList.add("col-lg-3", "col-md-3", "m-0", "p-0"); - entry2.appendChild(entries[i].cloneNode(true)); - entry2.children[0].classList.add("img-type-1"); - gallery.appendChild(entry2); - i++; - - let entry3 = document.createElement("div"); - entry3.classList.add("col-lg-6", "col-md-3", "m-0", "p-0"); - entry3.appendChild(entries[i].cloneNode(true)); - entry3.children[0].classList.add("img-type-1"); - gallery.appendChild(entry3); - i++; - } - function twoColumnRow(gallery, entries, i) { - let entry1 = document.createElement("div"); - entry1.classList.add("col-6", "m-0", "p-0"); - entry1.appendChild(entries[i].cloneNode(true)); - entry1.children[0].classList.add("img-type-1"); - gallery.appendChild(entry1); - i++; - - let entry2 = document.createElement("div"); - entry2.classList.add("col-6", "m-0", "p-0"); - entry2.appendChild(entries[i].cloneNode(true)); - entry2.children[0].classList.add("img-type-1"); - gallery.appendChild(entry2); - i++; - } - - function singleColumnRow(gallery, entries, i) { - let entry1 = document.createElement("div"); - entry1.classList.add("col-12", "m-0", "p-0"); - entry1.appendChild(entries[i].cloneNode(true)); - entry1.children[0].classList.add("img-type-1"); - gallery.appendChild(entry1); - i++; - } - - function showAchievements() { - // show achievements from achievements-holder div - let gallery = document.getElementById("gallery"); - if (gallery == null) { - return - } - gallery.innerHTML = ""; - const entries = document.getElementById("achievements-holder").children; - let len = entries.length; - let i = 0; - let rowNumber = 1; - while (i < len) { - if (isLaptop) { - if (i + 4 <= len) { - if (rowNumber % 2) { - fourColumRow(gallery, entries, i); - } else { - fourColumnReversedRow(gallery, entries, i); - } - i += 4; - - } else if (i + 3 <= len) { - if (rowNumber % 2) { - threeColumnRow(gallery, entries, i); - } else { - threeColumnReversedRow(gallery, entries, i); - } - i += 3; - } else if (i + 2 <= len) { - twoColumnRow(gallery, entries, i); - i += 2; - } else { - singleColumnRow(gallery, entries, i); - i++; - } - } else if (isTablet) { - if (i + 2 <= len) { - twoColumnRow(gallery, entries, i); - i += 2; - } else { - singleColumnRow(gallery, entries, i); - i++; - } - } else { - singleColumnRow(gallery, entries, i); - i++; - } - rowNumber++; - } - - // show full image on click - let elements = document.getElementsByClassName("achievement-entry"); - len = elements.length; - for (let i = 0; i < len; i++) { - elements[i].onclick = function () { - let achievements = document.getElementsByClassName("achievement-entry"); - let len2 = achievements.length; - for (let j = 0; j < len2; j++) { - achievements[j].classList.toggle("hidden"); - } - this.classList.toggle("achievement-details"); - this.classList.toggle("hidden"); - this.parentElement.classList.toggle("col-lg-12"); - this.parentElement.classList.toggle("col-md-12"); - this.parentElement.classList.toggle("col-sm-12"); - if (this.children["SmallImage"].hasAttribute("active")) { - let mainLogo = this.children["LargeImage"].getAttribute("Style"); - this.children["LargeImage"].setAttribute("active", true); - this.children["SmallImage"].removeAttribute("active"); - - this.setAttribute("Style", mainLogo); - } else { - let mainLogo = this.children["SmallImage"].getAttribute("Style"); - this.children["SmallImage"].setAttribute("active", true); - this.children["LargeImage"].removeAttribute("active"); - this.setAttribute("Style", mainLogo); - } - - if (this.children["caption"] != undefined) { - this.children["caption"].classList.toggle("hidden"); - } - if (this.children["enlarge-icon"] != undefined) { - this.children["enlarge-icon"].classList.toggle("fa-search-plus"); - this.children["enlarge-icon"].classList.toggle("fa-times"); - } - if (this.children["achievement-title"] != undefined) { - this.children["achievement-title"].classList.toggle("hidden"); - } - } - } - } - showAchievements(); - - // re-render custom functions on window resize - window.onresize = function () { - detectDevice(); - adjustRecentPostsHeight(); - showAchievements(); - }; - }); - -})(jQuery); diff --git a/static/js/imagesloaded.pkgd.min.js b/static/js/imagesloaded.pkgd.min.js deleted file mode 100644 index e443a77..0000000 --- a/static/js/imagesloaded.pkgd.min.js +++ /dev/null @@ -1,7 +0,0 @@ -/*! - * imagesLoaded PACKAGED v4.1.4 - * JavaScript is all like "You images are done yet or what?" - * MIT License - */ - -!function(e,t){"function"==typeof define&&define.amd?define("ev-emitter/ev-emitter",t):"object"==typeof module&&module.exports?module.exports=t():e.EvEmitter=t()}("undefined"!=typeof window?window:this,function(){function e(){}var t=e.prototype;return t.on=function(e,t){if(e&&t){var i=this._events=this._events||{},n=i[e]=i[e]||[];return n.indexOf(t)==-1&&n.push(t),this}},t.once=function(e,t){if(e&&t){this.on(e,t);var i=this._onceEvents=this._onceEvents||{},n=i[e]=i[e]||{};return n[t]=!0,this}},t.off=function(e,t){var i=this._events&&this._events[e];if(i&&i.length){var n=i.indexOf(t);return n!=-1&&i.splice(n,1),this}},t.emitEvent=function(e,t){var i=this._events&&this._events[e];if(i&&i.length){i=i.slice(0),t=t||[];for(var n=this._onceEvents&&this._onceEvents[e],o=0;o0&&i[i.length-1])&&(6===o[0]||2===o[0])){s=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]0&&i[i.length-1])&&(6===o[0]||2===o[0])){s=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]0&&i[i.length-1])&&(6===o[0]||2===o[0])){s=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]0&&i[i.length-1])&&(6===o[0]||2===o[0])){s=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]i?1:0}}(r))),o="asc"===e?i:i.reverse();this.filterItems=o},t.prototype.shuffle=function(){var t=this,e=this.getFiltered(this.options.filter);if(e.length>1){var n=this.getFiltered(this.options.filter).map(function(e){return t.filterItems.indexOf(e)}).slice(),r=void 0;do{r=d(e)}while(u(e,r));(r=d(e)).forEach(function(e,r){var i,o=n[r];t.filterItems=Object.assign([],t.filterItems,((i={})[o]=e,i))})}},t.prototype.search=function(t,e){return e?t.filter(function(t){return t.contentsMatchSearch(e)}):t},t.prototype.shouldBeFiltered=function(t,e){var n,r,i=this.options.getRaw().multifilterLogicalOperator;return Array.isArray(e)?"or"===i?!!(n=t,r=e,Array.prototype.filter.call(n,function(t){return r.includes(t)})).length:function(t,e){return t.reduce(function(t,n){return t&&e.includes(n)},!0)}(e,t):t.includes(e)},t}(),B=function(){return(B=Object.assign||function(t){for(var e,n=1,r=arguments.length;n0&&i[i.length-1])&&(6===o[0]||2===o[0])){s=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]0&&i[i.length-1])&&(6===o[0]||2===o[0])){s=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]',(i=document.createElement("img")).classList.add("Filterizr__spinner"),i.src="data:image/svg+xml;base64,"+window.btoa(r),i.alt="Spinner",i),this.styledNode=new tt(this.node,e),this.initialize()}return Object.defineProperty(t.prototype,"styles",{get:function(){return this.styledNode},enumerable:!0,configurable:!0}),t.prototype.destroy=function(){return et(this,void 0,void 0,function(){return nt(this,function(t){switch(t.label){case 0:return[4,this.styles.fadeOut()];case 1:return t.sent(),this.filterContainer.node.removeChild(this.node),[2]}})})},t.prototype.initialize=function(){this.styles.initialize(),this.filterContainer.node.appendChild(this.node)},t}(),it=n(2),ot=n.n(it);function st(t,e){return t.reduce(function(t,n){return t+n.width+e},0)}function at(t,e){return t.length?t.reduce(function(t,n){return t+n.height+e},0):0}var ut=function(){return(ut=Object.assign||function(t){for(var e,n=1,r=arguments.length;n0?t[0].h:0;for(this.root.h=o,e=0;et*o&&((i={})[o]=r,i))},{0:0}),o=e.map(function(o,s){var a=o.height,u=Math.floor(r[s]/t);return{left:e.slice(i[u],s).reduce(function(t,e){return t+e.width+n},0),top:(a+n)*u}});return{containerHeight:Object.keys(i).length*(e[0].height+n)+n,itemsPositions:o}}(t,e,r);case i.SAME_WIDTH:return function(t,e,n){var r=Math.floor(t/(e[0].width+n)),i=e.map(function(t,i){var o=t.width,s=Math.floor(i/r);return{left:(i-r*s)*(o+n),top:e.slice(0,i).filter(function(t,e){return(i-e)%r==0}).reduce(function(t,e){return t+e.height+n},0)}}),o=e.reduce(function(t,e,i){var o=e.height,s=Math.floor(i/r);return t[i-r*s]+=o+n,t},Array.apply(null,Array(r)).map(Number.prototype.valueOf,0));return{containerHeight:Math.max.apply(Math,o)+n,itemsPositions:i}}(t,e,r);case i.PACKED:return function(t,e,n){var r=new ct(t),i=e.map(function(t){var e=t.width,r=t.height;return{w:e+n,h:r+n}});r.fit(i);var o=i.map(function(t){var e=t.fit;return{left:e.x,top:e.y}});return{containerHeight:r.root.h+n,itemsPositions:o}}(t,e,r);case i.SAME_SIZE:default:return function(t,e,n){var r=Math.floor(t/(e[0].width+n)),i=e.map(function(t,e){var i=t.width,o=t.height,s=Math.floor(e/r);return{left:(e-r*s)*(i+n),top:s*(o+n)}});return{containerHeight:Math.ceil(e.length/r)*(e[0].height+n)+n,itemsPositions:i}}(t,e,r)}});function ft(t){if(!t)throw new Error("Filterizr as a jQuery plugin, requires jQuery to work. If you would prefer to use the vanilla JS version, please use the correct bundle file.");t.fn.filterizr=function(){var e="."+t.trim(this.get(0).className).replace(/\s+/g,"."),n=arguments;if(!this._fltr&&0===n.length||1===n.length&&"object"==typeof n[0]){var r=n.length>0?n[0]:v;this._fltr=new yt(e,r)}else if(n.length>=1&&"string"==typeof n[0]){var i=n[0],o=Array.prototype.slice.call(n,1),s=this._fltr;switch(i){case"filter":return s.filter.apply(s,o),this;case"insertItem":return s.insertItem.apply(s,o),this;case"removeItem":return s.removeItem.apply(s,o),this;case"toggleFilter":return s.toggleFilter.apply(s,o),this;case"sort":return s.sort.apply(s,o),this;case"shuffle":return s.shuffle.apply(s,o),this;case"search":return s.search.apply(s,o),this;case"setOptions":return s.setOptions.apply(s,o),this;case"destroy":return s.destroy.apply(s,o),delete this._fltr,this;default:throw new Error("Filterizr: "+i+" is not part of the Filterizr API. Please refer to the docs for more information.")}}return this}}var ht=function(t,e,n,r){return new(n||(n=Promise))(function(i,o){function s(t){try{u(r.next(t))}catch(t){o(t)}}function a(t){try{u(r.throw(t))}catch(t){o(t)}}function u(t){t.done?i(t.value):new n(function(e){e(t.value)}).then(s,a)}u((r=r.apply(t,e||[])).next())})},pt=function(t,e){var n,r,i,o,s={label:0,sent:function(){if(1&i[0])throw i[1];return i[1]},trys:[],ops:[]};return o={next:a(0),throw:a(1),return:a(2)},"function"==typeof Symbol&&(o[Symbol.iterator]=function(){return this}),o;function a(o){return function(a){return function(o){if(n)throw new TypeError("Generator is already executing.");for(;s;)try{if(n=1,r&&(i=2&o[0]?r.return:o[0]?r.throw||((i=r.return)&&i.call(r),0):r.next)&&!(i=i.call(r,o[1])).done)return i;switch(r=0,i&&(o=[2&o[0],i.value]),o[0]){case 0:case 1:i=o;break;case 4:return s.label++,{value:o[1],done:!1};case 5:s.label++,r=o[1],o=[0];continue;case 7:o=s.ops.pop(),s.trys.pop();continue;default:if(!(i=(i=s.trys).length>0&&i[i.length-1])&&(6===o[0]||2===o[0])){s=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]