diff options
| author | Pliable Pixels <pliablepixels@gmail.com> | 2017-09-21 12:49:18 -0400 |
|---|---|---|
| committer | Pliable Pixels <pliablepixels@gmail.com> | 2017-09-21 12:49:18 -0400 |
| commit | b28028ac4082842143b0f528d6bc539da6ccb419 (patch) | |
| tree | 1e26ea969a781ed8e323fca4e3c76345113fc694 /www/lib/vis/docs/js/main.js | |
| parent | 676270d21beed31d767a06c89522198c77d5d865 (diff) | |
mega changes, including updates and X
Diffstat (limited to 'www/lib/vis/docs/js/main.js')
| -rw-r--r-- | www/lib/vis/docs/js/main.js | 144 |
1 files changed, 144 insertions, 0 deletions
diff --git a/www/lib/vis/docs/js/main.js b/www/lib/vis/docs/js/main.js new file mode 100644 index 00000000..2d089b7e --- /dev/null +++ b/www/lib/vis/docs/js/main.js @@ -0,0 +1,144 @@ +$(document).ready(function() { + + vis.createBreadcrumbs($(".container.full").first()); + vis.initSiteSearch(); + vis.initKeywords(); + + $("#tipue_search_input").keyup(checkInput) + vis.typingTimeout = 0; + +}); + +function checkInput() { + if (document.getElementById("tipue_search_input").value.length > 3) { + clearTimeout(vis.typingTimeout); + vis.typingTimeout = setTimeout(function () {vis.initSiteSearch(true)},200); + } + else { + var title = document.title.replace(/(\(.+\) )/g,""); + document.title = title; + document.getElementById("search-results-wrapper").style.display = "none"; + } +} + +// namespace +var vis = {}; + +/** + * Adds a breadcrumb as first child to the specified container. + * + * @author felixhayashi + */ +vis.createBreadcrumbs = function(container) { + + // use the url to infer the path + var crumbs = location.pathname.split('/'); + + // number of ancestor directories + var stepbackIndex = crumbs.length-1; + var breadcrumbs = $.map(crumbs, function(crumb, i) { + + // first and last element of the split + if(!crumb) return; + + stepbackIndex--; + + if(/\.html$/.test(crumb)) { + + // strip the .html to make it look prettier + return "<span>" + crumb.replace(/\.html$/, "") + "</span>"; + + } else { + + // calculate the relative url + for(var ref=crumb+"/", j=0; j<stepbackIndex; j++, ref="../"+ref); + + return "<a href='" + ref + "'>" + crumb + "</a>"; + } + }).join("") || "Home"; + + // insert into the container at the beginning. + $(container).prepend("<div id=\"breadcrumbs\">" + breadcrumbs + "</div>"); + +}; + +/** + * Will load tipue search field. + * If the search has already begun, we also display the results. + * + * For information how it works: + * @see https://github.com/almende/vis/issues/909#issuecomment-120119414 + * @see https://github.com/almende/vis/issues/909#issuecomment-120397562 + * + * @author felixhayashi + */ +vis.initSiteSearch = function(dynamic) { // Added dynamic flag for live update ~ Alex + $("#tipue_search_input").tipuesearch({ + "mode": "live", + "show": 3, + },dynamic); + + + var hasSearchMessage = $("#tipue_search_content").children().length > 0; + if(hasSearchMessage) { + // show result panel + if ($("#search-results-wrapper").css("display") === 'none') { + $("#search-results-wrapper").css("display", "block"); + } + // encode the keywords that were entered by the user + var keywords = $("#tipue_search_input").val().replace(/\s/g, ","); + // add keywords to result-urls + $(".tipue_search_content_url a, .tipue_search_content_title a").each(function() { + $(this).attr("href", $(this).attr("href") + "?keywords=" + keywords); + }); + } else { + $("#search-results-wrapper").css("display", "none"); + } + +}; + +/** + * Will highlight the keywords that are passed as url get-parameters. + * All keywords are higlighted and a panel is displayed to jump to the + * first keyword found. + * + * For information how it works: + * @see https://github.com/almende/vis/issues/909#issuecomment-120119414 + * @see https://github.com/almende/vis/issues/909#issuecomment-120397562 + * + * @author felixhayashi + */ +vis.initKeywords = function() { + + // extract keywords from get-variable + var keywords = url("?keywords"); + + if(keywords) { + + // highlighting all keywords + keywords = keywords.split(","); + for(var i = 0; i < keywords.length; i++) { + $("body").highlight(keywords[i]); + } + + // nasty hack: programmatically open full options tab + // because no browser allows scrolling to hidden elements! + $("[role=presentation][targetnode=fullOptions]").click(); + $("tr.toggle:not(collapsible)").click(); + + // init keyword info panel + $("#keyword-info").css("display", "block"); + $("#keyword-count").text($(".highlight").length); + $("#keyword-jumper-button").on('click', function(event) { + event.preventDefault(); + // do not cache hits outside the handler; creates problems with prettyfy lib + // we use the first visible(!) hit at the time the button is clicked + var firstHit = $(".highlight:visible").first(); + if(firstHit.length) { + $("html, body").animate({ scrollTop: $(firstHit).offset().top }, 2000); + } + }); + + } + +};
\ No newline at end of file |
