Add tag filter box.
This commit is contained in:
		
							parent
							
								
									1f3e8d3e7b
								
							
						
					
					
						commit
						0c085f09b9
					
				
					 1 changed files with 53 additions and 6 deletions
				
			
		|  | @ -146,12 +146,17 @@ h2, h3 | ||||||
|             {% else %} |             {% else %} | ||||||
|             <h2>{{tag_count}} Tags</h2> |             <h2>{{tag_count}} Tags</h2> | ||||||
|             {% endif %} |             {% endif %} | ||||||
|  | 
 | ||||||
|  |             <div id="filter_box_holder"> | ||||||
|  |                 <input disabled class="enable_on_pageload entry_with_tagname_replacements" type="text" id="search_filter" placeholder="filter"/> | ||||||
|  |             </div> | ||||||
|  | 
 | ||||||
|             <ul id="tag_list"> |             <ul id="tag_list"> | ||||||
|             {% for (qualified_name, tag) in tags %} |             {% for (qualified_name, tag) in tags %} | ||||||
|                 <li> |                 <li> | ||||||
|                     {{cards.create_tag_card(tag, link="search_musts", innertext="(+)")}} |                     {{cards.create_tag_card(tag, link="search_musts", extra_classes="must_shortcut", innertext="(+)")}} | ||||||
|                     {{cards.create_tag_card(tag, link="search_forbids", innertext="(x)")}} |                     {{cards.create_tag_card(tag, link="search_forbids", extra_classes="forbid_shortcut", innertext="(x)")}} | ||||||
|                     {{cards.create_tag_card(tag, link="info", innertext=qualified_name, with_alt_description=True)-}} |                     {{cards.create_tag_card(tag, link="info", extra_classes="main_card", innertext=qualified_name, with_alt_description=True)-}} | ||||||
|                     {% if specific_tag or '.' in qualified_name -%} |                     {% if specific_tag or '.' in qualified_name -%} | ||||||
|                     <button |                     <button | ||||||
|                     class="remove_tag_button red_button button_with_confirm" |                     class="remove_tag_button red_button button_with_confirm" | ||||||
|  | @ -182,9 +187,9 @@ h2, h3 | ||||||
|                 {% if include_synonyms %} |                 {% if include_synonyms %} | ||||||
|                 {% for synonym in tag.get_synonyms()|sort %} |                 {% for synonym in tag.get_synonyms()|sort %} | ||||||
|                 <li> |                 <li> | ||||||
|                     {{-cards.create_tag_card(tag, link="search_musts", innertext="(+)")}} |                     {{-cards.create_tag_card(tag, link="search_musts", extra_classes="must_shortcut", innertext="(+)")}} | ||||||
|                     {{cards.create_tag_card(tag, link="search_forbids", innertext="(x)")}} |                     {{cards.create_tag_card(tag, link="search_forbids", extra_classes="forbid_shortcut", innertext="(x)")}} | ||||||
|                     {{cards.create_tag_card(tag, link='info', innertext=qualified_name + '+' + synonym)-}} |                     {{cards.create_tag_card(tag, link='info', extra_classes="main_card", innertext=qualified_name + '+' + synonym)-}} | ||||||
|                     <button |                     <button | ||||||
|                     class="remove_tag_button red_button button_with_confirm" |                     class="remove_tag_button red_button button_with_confirm" | ||||||
|                     data-holder-class="confirm_holder_remove_synonym" |                     data-holder-class="confirm_holder_remove_synonym" | ||||||
|  | @ -465,6 +470,48 @@ function tag_action_callback(response) | ||||||
|     } |     } | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | // FILTER BOX ////////////////////////////////////////////////////////////////////////////////////// | ||||||
|  | 
 | ||||||
|  | var search_filter_wait_for_typing; | ||||||
|  | 
 | ||||||
|  | var search_filter_hook = function(event) | ||||||
|  | { | ||||||
|  |     clearTimeout(search_filter_wait_for_typing); | ||||||
|  |     search_filter_wait_for_typing = setTimeout(function() | ||||||
|  |     { | ||||||
|  |         filter_tag_cards(search_filter_box.value); | ||||||
|  |     }, 200); | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | function filter_tag_cards(search_term) | ||||||
|  | { | ||||||
|  |     search_term = search_term.toLocaleLowerCase(); | ||||||
|  |     let tag_list = document.getElementById("tag_list"); | ||||||
|  |     tag_list.classList.add("hidden"); | ||||||
|  |     Array.from(tag_list.children).forEach(function(tag_li) | ||||||
|  |     { | ||||||
|  |         console.log(tag_li); | ||||||
|  |         let tag_card = tag_li.getElementsByClassName("main_card")[0]; | ||||||
|  |         if (tag_card === undefined) | ||||||
|  |         { | ||||||
|  |             // On specific tag pages, the add_child input is also here. | ||||||
|  |             return; | ||||||
|  |         } | ||||||
|  |         if (search_term !== "" && tag_card.innerText.indexOf(search_term) === -1) | ||||||
|  |         { | ||||||
|  |             tag_li.classList.add("hidden"); | ||||||
|  |         } | ||||||
|  |         else | ||||||
|  |         { | ||||||
|  |             tag_li.classList.remove("hidden"); | ||||||
|  |         } | ||||||
|  |     }); | ||||||
|  |     tag_list.classList.remove("hidden"); | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | var search_filter_box = document.getElementById("search_filter"); | ||||||
|  | search_filter_box.addEventListener("keyup", search_filter_hook); | ||||||
|  | 
 | ||||||
| {% if specific_tag is not none %} | {% if specific_tag is not none %} | ||||||
| rename_ed_on_open = undefined; | rename_ed_on_open = undefined; | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
		Loading…
	
		Reference in a new issue