nitdoc: Replace old nitdoc by nitdoc_ni
[nit.git] / share / nitdoc / scripts / Nitdoc.UI.js
similarity index 75%
rename from share/ni_nitdoc/scripts/Nitdoc.UI.js
rename to share/nitdoc/scripts/Nitdoc.UI.js
index 5988f06..5b8d004 100644 (file)
@@ -149,12 +149,60 @@ Nitdoc.UI = function() {
                }\r
        }\r
 \r
+       // Allow user to filter sidebar box entries by name\r
+       var enableSearchPageField = function(filterSelector) {\r
+               var div = $(document.createElement("div"))\r
+               .addClass("nitdoc-ui-searchpage-filter")\r
+               .append(\r
+                       $(document.createElement("input"))\r
+                       .addClass("nitdoc-ui-searchpage-field")\r
+                       .addClass("nitdoc-ui-filter-field-notused")\r
+                       .attr("type", "text")\r
+                       .attr("value",  "filter...")\r
+                       .keyup(function() {\r
+                               var box = $(this).parents(".content.fullpage").find("article.filterable");\r
+                               var value = $(this).val();\r
+                               box.find("ul li:not(:icontains('" + value + "'))").hide();\r
+                               box.find("ul li:icontains('" + value + "')").show();\r
+                       })\r
+                       .focusout(function() {\r
+                               if($(this).val() == "") {\r
+                                       $(this).addClass("nitdoc-ui-filter-field-notused");\r
+                                       $(this).val("filter...");\r
+                               }\r
+                       })\r
+                       .focusin(function() {\r
+                               if($(this).val() == "filter...") {\r
+                                       $(this).removeClass("nitdoc-ui-filter-field-notused");\r
+                                       $(this).val("");\r
+                               }\r
+                       })\r
+               );\r
+               $(filterSelector).after(div);\r
+               preloadSearchPageField();\r
+       }\r
+\r
+       // Prealod filter using search query\r
+       var preloadSearchPageField = function() {\r
+               var anchor = Nitdoc.Utils.extractAnchor(document.location.hash);\r
+               if(!anchor || anchor.indexOf("q=") == -1) return;\r
+\r
+               var query = anchor.substring(2);\r
+               if(!query) return;\r
+\r
+               $(".nitdoc-ui-searchpage-field")\r
+               .val(query)\r
+               .removeClass("nitdoc-ui-notused")\r
+               .trigger("keyup");\r
+       }\r
+\r
        // Public interface\r
        var ui = {\r
                enableFolding: enableFolding,\r
                enableCopyToClipboard: enableCopyToClipboard,\r
                enableSidebarTextFilters: enableSidebarTextFilters,\r
-               enableSidebarTypeFilters: enableSidebarTypeFilters\r
+               enableSidebarTypeFilters: enableSidebarTypeFilters,\r
+               enableSearchPageField: enableSearchPageField\r
        };\r
 \r
        return ui;\r
@@ -166,6 +214,7 @@ $(document).ready(function() {
        Nitdoc.UI.enableCopyToClipboard(".signature");\r
        Nitdoc.UI.enableSidebarTextFilters("nav.filterable h3");\r
        Nitdoc.UI.enableSidebarTypeFilters("nav.filterable");\r
+       Nitdoc.UI.enableSearchPageField(".content.fullpage h1:contains('Search')");\r
 });\r
 \r
 /*\r
@@ -198,5 +247,3 @@ $.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;\r
 };\r
 \r
-//rename file\r
-//commit\r