nitdoc: remove `require.js` dependency
[nit.git] / share / nitdoc / js / plugins / filtering.js
index 1bb6e20..fa0f12e 100644 (file)
-/* This file is part of NIT ( http://www.nitlanguage.org ).\r
-\r
-   Licensed under the Apache License, Version 2.0 (the "License");\r
-   you may not use this file except in compliance with the License.\r
-   You may obtain a copy of the License at\r
-\r
-   http://www.apache.org/licenses/LICENSE-2.0\r
-\r
-   Unless required by applicable law or agreed to in writing, software\r
-   distributed under the License is distributed on an "AS IS" BASIS,\r
-   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
-   See the License for the specific language governing permissions and\r
-   limitations under the License.\r
-\r
-   Documentation generator for the nit language.\r
-   Generate API documentation in HTML format from nit source code.\r
-*/\r
-\r
-/*\r
- * Nitdoc Filtering\r
- *\r
- * Allow user to filter sidebar entries and search page\r
- */\r
-define([\r
-       "jquery",\r
-       'jQueryUI',\r
-       "utils"\r
-], function($, UI, Utils) {\r
-\r
-       var Filtering = {\r
-\r
-               // Allow user to filter sidebar box entries by name\r
-               enableSidebarTextFilters: function(filterSelector) {\r
-                       var div = $(document.createElement("div"))\r
-                       .addClass("nitdoc-ui-filter")\r
-                       .append(\r
-                               $(document.createElement("input"))\r
-                               .addClass("nitdoc-ui-filter-field")\r
-                               .addClass("nitdoc-ui-filter-field-notused")\r
-                               .attr("type", "text")\r
-                               .attr("value",  "filter...")\r
-                               .keyup(function() {\r
-                                       var box = $(this).parents("nav.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
-                       this.preloadSidebarTextFilters();\r
-               },\r
-\r
-               // Prealod filters using search query\r
-               preloadSidebarTextFilters: function() {\r
-                       var anchor = 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-filter input:text")\r
-                       .val(query)\r
-                       .removeClass("nitdoc-ui-notused")\r
-                       .trigger("keyup");\r
-               },\r
-\r
-               // Allow user to filter side bar box entries by Introduced/Refined/inHerited type\r
-               enableSidebarTypeFilters: function(filterSelector) {\r
-                       var box = $(filterSelector);\r
-                       var types = {};\r
-\r
-                       box.find("li").each(function() {\r
-                               var span = $(this).find("span:first");\r
-                               if(!types[span.html()]) types[span.html()] = {\r
-                                       title: span.attr("title"),\r
-                                       class: $(this).attr("class")\r
-                               }\r
-                       });\r
-\r
-                       for(var type in types) {\r
-                               var a = $(document.createElement("a"))\r
-                               .addClass("nitdoc-ui-filter-link")\r
-                               .html(type)\r
-                               .attr("title", "Hide " + types[type].title)\r
-                               .attr("data-filter-class", types[type].class)\r
-                               .toggle(\r
-                                       function() {\r
-                                               var hclass = $(this).attr("data-filter-class");\r
-                                               $(this).parents(filterSelector).find("li." + hclass).hide();\r
-                                               $(this).addClass("nitdoc-ui-filter-hidden")\r
-                                       },\r
-                                       function() {\r
-                                               var hclass = $(this).attr("data-filter-class");\r
-                                               $(this).parents(filterSelector).find("li." + hclass).show();\r
-                                               $(this).removeClass("nitdoc-ui-filter-hidden")\r
-                                       }\r
-                               )\r
-                               $(filterSelector).find(".nitdoc-ui-filter").append(a);\r
-                       }\r
-               },\r
-\r
-               // Allow user to filter sidebar box entries by name\r
-               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
-                       this.preloadSearchPageField();\r
-               },\r
-\r
-               // Prealod filter using search query\r
-               preloadSearchPageField: function() {\r
-                       var anchor = 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
-\r
-       Filtering.enableSidebarTextFilters("nav.filterable h3");\r
-       Filtering.enableSidebarTypeFilters("nav.filterable");\r
-       Filtering.enableSearchPageField(".content.fullpage h1:contains('Search')");\r
-\r
-       return Filtering;\r
-});\r
+/* This file is part of NIT ( http://www.nitlanguage.org ).
+
+   Licensed under the Apache License, Version 2.0 (the "License");
+   you may not use this file except in compliance with the License.
+   You may obtain a copy of the License at
+
+   http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+
+   Documentation generator for the nit language.
+   Generate API documentation in HTML format from nit source code.
+*/
+
+/*
+ * Nitdoc Filtering
+ *
+ * Allow user to filter sidebar entries and search page
+ */
+var Filtering = {
+
+       // Allow user to filter sidebar box entries by name
+       enableSidebarTextFilters: function(filterSelector) {
+               var div = $(document.createElement("div"))
+               .addClass("nitdoc-ui-filter")
+               .append(
+                       $(document.createElement("input"))
+                       .addClass("nitdoc-ui-filter-field")
+                       .addClass("nitdoc-ui-filter-field-notused")
+                       .attr("type", "text")
+                       .attr("value",  "filter...")
+                       .keyup(function() {
+                               var box = $(this).parents("nav.filterable");
+                               var value = $(this).val();
+                               box.find("ul li:not(:icontains('" + value + "'))").hide();
+                               box.find("ul li:icontains('" + value + "')").show();
+                       })
+                       .focusout(function() {
+                               if($(this).val() == "") {
+                                       $(this).addClass("nitdoc-ui-filter-field-notused");
+                                       $(this).val("filter...");
+                               }
+                       })
+                       .focusin(function() {
+                               if($(this).val() == "filter...") {
+                                       $(this).removeClass("nitdoc-ui-filter-field-notused");
+                                       $(this).val("");
+                               }
+                       })
+               );
+               $(filterSelector).after(div);
+               this.preloadSidebarTextFilters();
+       },
+
+       // Prealod filters using search query
+       preloadSidebarTextFilters: function() {
+               var anchor = Utils.extractAnchor(document.location.hash);
+               if(!anchor || anchor.indexOf("q=") == -1) return;
+
+               var query = anchor.substring(2);
+               if(!query) return;
+
+               $(".nitdoc-ui-filter input:text")
+               .val(query)
+               .removeClass("nitdoc-ui-notused")
+               .trigger("keyup");
+       },
+
+       // Allow user to filter side bar box entries by Introduced/Refined/inHerited type
+       enableSidebarTypeFilters: function(filterSelector) {
+               var box = $(filterSelector);
+               var types = {};
+
+               box.find("li").each(function() {
+                       var span = $(this).find("span:first");
+                       if(!types[span.html()]) types[span.html()] = {
+                               title: span.attr("title"),
+                               class: $(this).attr("class")
+                       }
+               });
+
+               for(var type in types) {
+                       var a = $(document.createElement("a"))
+                       .addClass("nitdoc-ui-filter-link")
+                       .html(type)
+                       .attr("title", "Hide " + types[type].title)
+                       .attr("data-filter-class", types[type].class)
+                       .toggle(
+                               function() {
+                                       var hclass = $(this).attr("data-filter-class");
+                                       $(this).parents(filterSelector).find("li." + hclass).hide();
+                                       $(this).addClass("nitdoc-ui-filter-hidden")
+                               },
+                               function() {
+                                       var hclass = $(this).attr("data-filter-class");
+                                       $(this).parents(filterSelector).find("li." + hclass).show();
+                                       $(this).removeClass("nitdoc-ui-filter-hidden")
+                               }
+                       )
+                       $(filterSelector).find(".nitdoc-ui-filter").append(a);
+               }
+       },
+
+       // Allow user to filter sidebar box entries by name
+       enableSearchPageField: function(filterSelector) {
+               var div = $(document.createElement("div"))
+               .addClass("nitdoc-ui-searchpage-filter")
+               .append(
+                       $(document.createElement("input"))
+                       .addClass("nitdoc-ui-searchpage-field")
+                       .addClass("nitdoc-ui-filter-field-notused")
+                       .attr("type", "text")
+                       .attr("value",  "filter...")
+                       .keyup(function() {
+                               var box = $(this).parents(".content.fullpage").find("article.filterable");
+                               var value = $(this).val();
+                               box.find("ul li:not(:icontains('" + value + "'))").hide();
+                               box.find("ul li:icontains('" + value + "')").show();
+                       })
+                       .focusout(function() {
+                               if($(this).val() == "") {
+                                       $(this).addClass("nitdoc-ui-filter-field-notused");
+                                       $(this).val("filter...");
+                               }
+                       })
+                       .focusin(function() {
+                               if($(this).val() == "filter...") {
+                                       $(this).removeClass("nitdoc-ui-filter-field-notused");
+                                       $(this).val("");
+                               }
+                       })
+               );
+               $(filterSelector).after(div);
+               this.preloadSearchPageField();
+       },
+
+       // Prealod filter using search query
+       preloadSearchPageField: function() {
+               var anchor = Utils.extractAnchor(document.location.hash);
+               if(!anchor || anchor.indexOf("q=") == -1) return;
+
+               var query = anchor.substring(2);
+               if(!query) return;
+
+               $(".nitdoc-ui-searchpage-field")
+               .val(query)
+               .removeClass("nitdoc-ui-notused")
+               .trigger("keyup");
+       }
+};
+
+Filtering.enableSidebarTextFilters("nav.filterable h3");
+Filtering.enableSidebarTypeFilters("nav.filterable");
+Filtering.enableSearchPageField(".content.fullpage h1:contains('Search')");