Datum facet toevoegen

Met Javascript en wat styling kun je eenvoudig een optie toevoegen om zoekresultaten in de catalogus te verfijnen op een periode.

In OPACUserJS voeg je het volgende stuk Javascript toe:

Opties voor het aanpassen van de weergave (zoals de tabel en de teksten) kun je doen aan het einde van het bestand na: //construct date slider widget

Daar kun je bijv. de kop aanpassen: <h3>Jaar van uitgave</h3> , maar ook de periode instellen. Dat doe je zowel in de tekst: div id=’date1′>1990</div> als in de parameter in de laatste regel: $(“#slider”).slider({range:true, min: 1990, max: enddate, values: [1990, enddate], stop:updateSliderValue});

Tenslotte kun je ook de styling van de tabel waarbinnen het geheel is geplaatst aanpassen:
<table style=’margin:10px 0px 10px 5px;’>

    function searchDates() {
//declare URL variables
    var url_idx, url_q, url_sb, yr, searchcat, doo, bgl, addto;
//get page URL
    var url = window.location.href;
//parse URL to get base
    var url_base = url.substring(0, url.indexOf("?"));
//parse URL on &
    var parts = url.split("&");
//init limits array and increment
    var limits = [];
    var i;
//go through each parsed part of the array and create variables and an array of limits
    for(i=0; i < parts.length; i++) {
    if(/idx=/.exec(parts[i])) {
            url_idx = /idx=(.*)/.exec(parts[i]);
    }
        else if(/q=/.exec(parts[i])) {
            url_q = /q=(.*)/.exec(parts[i]);
        }
        else if(/sort_by=/.exec(parts[i])) {
            url_sb = /sort_by=(.*)/.exec(parts[i]);
        }
        else if(/limit=/.exec(parts[i])) {
            let lim = /limit=(.*)/.exec(parts[i]);
            limits.push(lim[1]);
        }
    else if(/limit-yr=/.exec(parts[i])) {
            yr = /limit-yr=(.*)/.exec(parts[i]);
    }
        else if(/searchcat=/.exec(parts[i])) {
            searchcat = /searchcat=(.*)/.exec(parts[i]);
        }
        else if(/do=/.exec(parts[i])) {
            doo = /do=(.*)/.exec(parts[i]);
        }
        else if(/branch_group_limit=/.exec(parts[i])) {
            bgl = /branch_group_limit=(.*)/.exec(parts[i]);
        }
        else if(/addto=/.exec(parts[i])) {
            addto = /addto=(.*)/.exec(parts[i]);
        }
    }
 
    //get the dates from the slider
    var sd = $("#date1").text();
    var ed = $("#date2").text();
 
    //construct the new URL with the previous search criteria
    var newurl = url_base + "?";
    if(url_idx) {
      newurl += "idx=" + url_idx[1];
    }
    else {
      newurl += "idx=kw";
    }
    if(url_q) {
      newurl += "&q=" + url_q[1];
    }
    if(url_sb) {
      newurl += "&sort_by=" + url_sb[1];
    }
    if(searchcat) {
      newurl += "&searchcat=" + searchcat[1];
    }
    if(doo) {
      newurl += "&do=" + doo[1];
    }
    if(bgl) {
      newurl += "&branch_group_limit=" + bgl[1];
    }
    if(addto) {
      newurl += "&addto=" + addto[1];
    }
    if(limits) {
    let j;
    for(j=0; j < limits.length; j++) {
          if(limits[j].indexOf("yr") > -1) {
            continue;
          }
          else {
            newurl += "&limit=" + limits[j];
          }
    }
}
    //add the new years to the URL
    newurl += "&limit-yr=" + sd + "-" + ed;
 
    //go to the new URL
    window.location.href = newurl;
}
 
//comment below can be used for testing purposes
//document.getElementById("translControl1").value = url_idx[1] + " " + url_q[1] + " " + url_sb[1] + " " + limits[1] + " " + yr[1] + " " + searchcat[1] + " " + doo[1];
 
//construct date slider widget
if((window.location.href.indexOf("cgi-bin/koha/opac-search.pl") > -1) && (screen.width>768)){
    $(document).ready(function () {
        let d = new Date();
        let enddate = d.getFullYear();
 
        $(".menu-collapse").append("<li><h3>Jaar van uitgave</h3><div id='slider'></div><table style='margin:10px 0px 10px 5px;'><tr><td><div id='date1'>1990</div></td><td><div>tot en met </div></td><td><div id='date2'>" + enddate + "</div></td></tr></table><table><tr><td><button type='submit' onclick='searchDates()'>Kies periode</button></td></tr></table></li>");
 
        var updateSliderValue = function (event, ui) {$("#date1").text($("#slider").slider("values", 0)); $("#date2").text($("#slider").slider("values", 1));};
 
        $("#slider").slider({range:true, min: 1990, max: enddate, values: [1990, enddate], stop:updateSliderValue});
 
    });
}
div#slider {
    margin-left: 10px;
    margin-right: 30px;
}

In dit geval styling voor de marges links en rechts.