X-Git-Url: http://nitlanguage.org diff --git a/share/nitdoc/scripts/js-facilities.js b/share/nitdoc/scripts/js-facilities.js index d67ef9c..4297dd3 100644 --- a/share/nitdoc/scripts/js-facilities.js +++ b/share/nitdoc/scripts/js-facilities.js @@ -4,7 +4,6 @@ $.expr[':'].icontains = function(obj, index, meta, stack){ return (obj.textContent.replace(/\[[0-9]+\]/g, "") || obj.innerText.replace(/\[[0-9]+\]/g, "") || jQuery(obj).text().replace(/\[[0-9]+\]/g, "") || '').toLowerCase().indexOf(meta[3].toLowerCase()) >= 0; }; - /* * Quick Search global vars */ @@ -15,7 +14,6 @@ var currentTable = null; //Hightlighted index in search result preview table var currentIndex = -1; - /* * Add folding and filtering facilities to class description page. */ @@ -24,8 +22,8 @@ $(document).ready(function() { /* * Highlight the spoted element */ - highlightBlock(currentAnchor()); - + highlightBlock(currentAnchor()); + /* * Nav block folding */ @@ -45,8 +43,8 @@ $(document).ready(function() { $(this).find("a.fold").html("+"); } $(this).nextAll().toggle(); - }) - + }) + // Insert search field $("nav.main ul") .append( @@ -134,14 +132,17 @@ $(document).ready(function() { // Escape regexp related characters in query var query = $("#search").val(); + query = query.replace(/\\/gi, "\\\\"); query = query.replace(/\[/gi, "\\["); query = query.replace(/\|/gi, "\\|"); query = query.replace(/\*/gi, "\\*"); query = query.replace(/\+/gi, "\\+"); - query = query.replace(/\\/gi, "\\\\"); query = query.replace(/\?/gi, "\\?"); query = query.replace(/\(/gi, "\\("); query = query.replace(/\)/gi, "\\)"); + query = query.replace(/&/gi, "&&"); + query = query.replace(/>/gi, ">"); + query = query.replace(/ 10) { break; @@ -187,6 +188,13 @@ $(document).ready(function() { currentTable.width($("#search").outerWidth()); $("header").append(currentTable); currentTable.offset({left: $("#search").offset().left + ($("#search").outerWidth() - currentTable.outerWidth()), top: $("#search").offset().top + $("#search").outerHeight()}); + + // Preselect first entry + if(currentTable.find("tr").length > 0) { + currentIndex = 0; + $(currentTable.find("tr")[currentIndex]).addClass("activeSearchResult"); + $("#search").focus(); + } break; } }) @@ -208,14 +216,16 @@ $(document).ready(function() { }) ) ); - - /* - * Anchors jumps - */ - $("a[href^='#']").click( function() { - var a = $(this).attr("href").replace(/#/, ""); - highlightBlock(a); - }); + + // Close quicksearch list on click + $(document).click(function(e) { + if(e.target != $("#search")[0] && e.target != $("#searchTable")[0]) { + if(currentTable != null) { + currentTable.remove(); + currentTable = null; + } + } + }); // Insert filter field $("article.filterable h2, nav.filterable h3") @@ -247,7 +257,7 @@ $(document).ready(function() { }) ) ); - + // Filter toggle between H I R in nav porperties list $("nav.properties.filterable .filter") .append( @@ -297,9 +307,9 @@ $(document).ready(function() { $(this).toggleClass("hidden"); }) - ); - - // Filter toggle between I R in + ); + + // Filter toggle between I R in $("article.properties.filterable .filter, article.classes.filterable .filter") .append( $(document.createElement("a")) @@ -332,10 +342,29 @@ $(document).ready(function() { $(this).toggleClass("hidden"); }) - ); - - //Preload filter fields with query string + ); + + /* + * Anchors jumps + */ + $("a[href*='#']").click( function() { + highlightBlock($(this).attr("href").split(/#/)[1]); + }); + + //Preload filter fields with query string preloadFilters(); + + //Copy to clipboard utility on signatures + $(".signature").each(function(){ + $(this).append( + $("") + .append($("")) + ) + }); + + var clip = new ZeroClipboard($(".copyButton"), { + moviePath: "./ZeroClipboard.swf" + } ); }); /* Parse current URL and return anchor name */ @@ -347,24 +376,24 @@ function currentAnchor() { return null; } -/* Prealod filters field using search query */ -function preloadFilters() { - // Parse URL and get query string - var search = currentAnchor(); - - if(search == null || search.indexOf("q=") == -1) - return; - +/* Prealod filters field using search query */ +function preloadFilters() { + // Parse URL and get query string + var search = currentAnchor(); + + if(search == null || search.indexOf("q=") == -1) + return; + search = search.substring(2, search.length); - - if(search == "" || search == "undefined") - return; - $(":text").val(search); - $(".filter :text") - .removeClass("notUsed") - .trigger("keyup"); - + if(search == "" || search == "undefined") + return; + + $(":text").val(search); + $(".filter :text") + .removeClass("notUsed") + .trigger("keyup"); + } /* Hightlight the spoted block */ @@ -383,4 +412,4 @@ function highlightBlock(a) { target.addClass("highlighted"); target.show(); -} \ No newline at end of file +}