diff --git a/server.py b/server.py index d21795a..8f1d962 100755 --- a/server.py +++ b/server.py @@ -212,6 +212,12 @@ def content(): fullpath = os.path.join(app.config["CONTENT_DIR"], extraConfigDir) if os.path.isdir(fullpath): extraConfig = readJsonDir(fullpath) + + # picture slider! # + for section in extraConfig: + if section["picture"]: + section.update({"picture-overlay" : section["picture"][:-4] + "_g.jpg"}) + markupText = flask.Markup(flask.render_template(app.config[identifier], extraConfig=extraConfig, commonName=commonName)) else: diff --git a/static/lazyload.js b/static/lazyload.js index 4fbf505..a03732e 100644 --- a/static/lazyload.js +++ b/static/lazyload.js @@ -111,3 +111,96 @@ ms = document.getElementById("main_scrollable") window.addEventListener('scroll', refresh_handler); window.addEventListener('resize', refresh_handler); window.addEventListener('load', refresh_handler); + +function initComparisons() { + var x, i; + /* Find all elements with an "overlay" class: */ + var containers = document.getElementsByClassName("slider-container"); + x = document.getElementsByClassName("img-comp-overlay"); + console.log(x) + for (i = 0; i < containers.length; i++) { + /* Once for each "overlay" element: + pass the "overlay" element as a parameter when executing the compareImages function: */ + + var refImage = containers[i].children[2] + var testw = refImage.width + var testh = refImage.height + + containers[i].children[0].children[0].width = testw + containers[i].children[1].children[0].width = testw + containers[i].children[0].children[0].height = testh + containers[i].children[1].children[0].height = testh + + containers[i].children[0].style.opacity = 1 + containers[i].children[1].style.opacity = 1 + + compareImages(x[i], refImage); + } + function compareImages(img, refImage) { + var slider = null; + var clicked = 0; + /* Get the width and height of the img element */ + var w = img.offsetWidth; + var h = img.offsetHeight; + /* Set the width of the img element to 50%: */ + img.style.width = (w / 2) + "px"; + /* Create slider: */ + slider = document.createElement("DIV"); + slider.setAttribute("class", "img-comp-slider"); + /* Insert slider */ + img.parentElement.insertBefore(slider, img); + /* Position the slider in the middle: */ + slider.style.top = (h / 2) - (slider.offsetHeight / 2) + "px"; + slider.style.left = (w / 2) - (slider.offsetWidth / 2) + "px"; + /* Execute a function when the mouse button is pressed: */ + slider.addEventListener("mousedown", slideReady); + /* And another function when the mouse button is released: */ + window.addEventListener("mouseup", slideFinish); + /* Or touched (for touch screens: */ + slider.addEventListener("touchstart", slideReady); + /* And released (for touch screens: */ + window.addEventListener("touchend", slideFinish); + function slideReady(e) { + /* Prevent any other actions that may occur when moving over the image: */ + e.preventDefault(); + /* The slider is now clicked and ready to move: */ + clicked = 1; + /* Execute a function when the slider is moved: */ + window.addEventListener("mousemove", slideMove); + window.addEventListener("touchmove", slideMove); + } + function slideFinish() { + /* The slider is no longer clicked: */ + clicked = 0; + } + function slideMove(e) { + var pos; + /* If the slider is no longer clicked, exit this function: */ + if (clicked == 0) return false; + /* Get the cursor's x position: */ + pos = getCursorPos(e) + /* Prevent the slider from being positioned outside the image: */ + if (pos < 0) pos = 0; + if (pos > w) pos = w; + /* Execute a function that will resize the overlay image according to the cursor: */ + slide(pos); + } + function getCursorPos(e) { + var a, x = 0; + e = e || window.event; + /* Get the x positions of the image: */ + a = img.getBoundingClientRect(); + /* Calculate the cursor's x coordinate, relative to the image: */ + x = e.pageX - a.left; + /* Consider any page scrolling: */ + x = x - window.pageXOffset; + return x; + } + function slide(x) { + /* Resize the image: */ + img.style.width = x + "px"; + /* Position the slider: */ + slider.style.left = img.offsetWidth - (slider.offsetWidth / 2) + "px"; + } + } +} diff --git a/static/site.css b/static/site.css index 2aad09f..5476412 100644 --- a/static/site.css +++ b/static/site.css @@ -220,3 +220,32 @@ body { margin-top: 0 !important; } } + +.img-comp-container { + position: relative; + /*height: 100%;*/ /*should be the same height as the images*/ +} + +.img-comp-img { + position: absolute; + width: auto; + height: auto; + overflow: hidden; +} + +.img-comp-img img { + display: block; + vertical-align: middle; +} + +.img-comp-slider { + position: absolute; + z-index: 9; + cursor: ew-resize; + /*set the appearance of the slider:*/ + width: 40px; + height: 40px; + background-color: #2196F3; + opacity: 0.7; + border-radius: 50%; +}