--- # This file is licensed under the MIT License (MIT) available on # http://opensource.org/licenses/MIT. --- {% comment %} NOTICE: if you edit this template, you should also edit /quality-assurance/devsearches.html which creates a page whose links can be checked by HTML proofer Nested loops below: 1. site.devsearches: container for all searches defined in _config.yaml in the arbitrary order they should appear 2. list: a list item in devsearches; only has two elements: a. the name of the category b. an array containing the sublist items (pre-sorted) 3. sublist: a list of the items we want to display as a one-entry hash table 4. term: the term as the key [0] and the uri as the value [1] {% endcomment %} var search_data = [ {% for list in site.devsearches %}{% for item in list %} {% if forloop.first %}{% capture category_name %}{{item}}{% endcapture %} {% else %}{% for sublist in item %}{% for term in sublist %} { label: "{{term[0]}}", uri: "{{term[1]}}", category: "{{category_name}}" } {% endfor %}{% unless forloop.last %},{% endunless %}{% endfor %}{% endif %}{% endfor %}{% unless forloop.last %},{% endunless %}{% endfor %} ]; {% raw %} // code adapted from http://jqueryui.com/autocomplete/#categories // MIT license: https://jquery.org/license/ $.widget( "custom.catcomplete", $.ui.autocomplete, { _create: function() { this._super(); this.widget().menu( "option", "items", "> :not(.ui-autocomplete-category)" ); }, _renderMenu: function( ul, items ) { var that = this, currentCategory = ""; $.each( items, function( index, item ) { var li; if ( item.category != currentCategory ) { ul.append( "
  • " + item.category + "
  • " ); currentCategory = item.category; } li = that._renderItemData( ul, item ); if ( item.category ) { li.attr( "aria-label", item.category + " : " + item.label ); } }); } }); $(function() { $( "#glossary_term" ).catcomplete({ source: search_data, delay: 0, minLength: 2, autoFocus: true, select: function( event, ui ) { location.href = ui.item.uri; } }); }); {% endraw %}