mirror of
				https://github.com/simon987/sist2.git
				synced 2025-10-31 16:06:53 +00:00 
			
		
		
		
	Re-enable path autocomplete #54
This commit is contained in:
		
							parent
							
								
									13fdbd9e69
								
							
						
					
					
						commit
						27b4e6403e
					
				| @ -10,6 +10,7 @@ | ||||
|     "path": { | ||||
|       "type": "text", | ||||
|       "analyzer": "path_analyzer", | ||||
|       "copy_to": "suggest-path", | ||||
|       "fielddata": true, | ||||
|       "fields": { | ||||
|         "nGram": { | ||||
| @ -22,6 +23,10 @@ | ||||
|         } | ||||
|       } | ||||
|     }, | ||||
|     "suggest-path": { | ||||
|       "type": "completion", | ||||
|       "analyzer": "case_insensitive_kw_analyzer" | ||||
|     }, | ||||
|     "mime": { | ||||
|       "type": "keyword" | ||||
|     }, | ||||
|  | ||||
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							| @ -22,7 +22,7 @@ | ||||
| #define EPILOG "Made by simon987 <me@simon987.net>. Released under GPL-3.0" | ||||
| 
 | ||||
| 
 | ||||
| static const char *const Version = "2.3.3"; | ||||
| static const char *const Version = "2.4.0"; | ||||
| static const char *const usage[] = { | ||||
|         "sist2 scan [OPTION]... PATH", | ||||
|         "sist2 index [OPTION]... INDEX", | ||||
|  | ||||
							
								
								
									
										4
									
								
								src/static/css/autocomplete.min.css
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										4
									
								
								src/static/css/autocomplete.min.css
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @ -0,0 +1,4 @@ | ||||
| .autocomplete-suggestions { text-align: left; cursor: default; border: 1px solid #ccc; border-top: 0; background: #fff; box-shadow: -1px 1px 3px rgba(0,0,0,.1); position: absolute; display: none; z-index: 9999; max-height: 254px; overflow: hidden; overflow-y: auto; box-sizing: border-box; } | ||||
| .autocomplete-suggestion { position: relative; padding: 0 .6em; line-height: 23px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; font-size: 1.02em; color: #333; } | ||||
| .autocomplete-suggestion b { font-weight: normal; color: #1f8dd6; } | ||||
| .autocomplete-suggestion.selected { background: #f0f0f0; } | ||||
							
								
								
									
										3
									
								
								src/static/js/auto-complete.min.js
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										3
									
								
								src/static/js/auto-complete.min.js
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							| @ -74,6 +74,41 @@ function showEsError() { | ||||
| 
 | ||||
| window.onload = () => { | ||||
|     CONF.load(); | ||||
|     new autoComplete({ | ||||
|         selector: '#pathBar', | ||||
|         minChars: 1, | ||||
|         delay: 400, | ||||
|         renderItem: function (item) { | ||||
|             return '<div class="autocomplete-suggestion" data-val="' + item + '">' + item + '</div>'; | ||||
|         }, | ||||
|         source: async function (term, suggest) { | ||||
| 
 | ||||
|             if (!CONF.options.suggestPath) { | ||||
|                 return [] | ||||
|             } | ||||
| 
 | ||||
|             term = term.toLowerCase(); | ||||
| 
 | ||||
|             const choices = await getPathChoices(); | ||||
| 
 | ||||
|             let matches = []; | ||||
|             for (let i = 0; i < choices.length; i++) { | ||||
|                 if (~choices[i].toLowerCase().indexOf(term)) { | ||||
|                     matches.push(choices[i]); | ||||
|                 } | ||||
|             } | ||||
|             suggest(matches.sort()); | ||||
|         }, | ||||
|         onSelect: function () { | ||||
|             searchDebounced(); | ||||
|         } | ||||
|     }); | ||||
|     searchBar.addEventListener("keyup", searchDebounced); | ||||
|     pathBar.addEventListener("keyup", e => { | ||||
|         if (e.key === "Enter") { | ||||
|             searchDebounced(); | ||||
|         } | ||||
|     }); | ||||
| }; | ||||
| 
 | ||||
| function toggleFuzzy() { | ||||
| @ -105,10 +140,7 @@ $.jsonPost("i").then(resp => { | ||||
| }); | ||||
| 
 | ||||
| function getDocumentInfo(id) { | ||||
|     return $.getJSON("d/" + id).fail(e => { | ||||
|         console.log(e); | ||||
|         showEsError(); | ||||
|     }) | ||||
|     return $.getJSON("d/" + id).fail(showEsError) | ||||
| } | ||||
| 
 | ||||
| function handleTreeClick(tree) { | ||||
| @ -399,8 +431,6 @@ function search(after = null) { | ||||
|         } | ||||
|     } | ||||
| 
 | ||||
|     console.log(q) | ||||
| 
 | ||||
|     $.jsonPost("es", q).then(searchResult => { | ||||
|         let hits = searchResult["hits"]["hits"]; | ||||
|         if (hits) { | ||||
| @ -443,8 +473,6 @@ let searchDebounced = _.debounce(function () { | ||||
|     search() | ||||
| }, 500); | ||||
| 
 | ||||
| searchBar.addEventListener("keyup", searchDebounced); | ||||
| pathBar.addEventListener("keyup", searchDebounced); | ||||
| 
 | ||||
| //Size slider
 | ||||
| $("#sizeSlider").ionRangeSlider({ | ||||
| @ -609,7 +637,8 @@ function createPathTree(target) { | ||||
|     let pathTree = new InspireTree({ | ||||
|         data: function (node, resolve, reject) { | ||||
|             return getNextDepth(node); | ||||
|         } | ||||
|         }, | ||||
|         sort: "text" | ||||
|     }); | ||||
| 
 | ||||
|     selectedIndices.forEach(index => { | ||||
| @ -629,3 +658,19 @@ function createPathTree(target) { | ||||
|     pathTree.on("node.click", handlePathTreeClick(pathTree)); | ||||
| } | ||||
| 
 | ||||
| function getPathChoices() { | ||||
|     return new Promise(getPaths => { | ||||
|         $.jsonPost("es", { | ||||
|             suggest: { | ||||
|                 path: { | ||||
|                     prefix: pathBar.value, | ||||
|                     completion: { | ||||
|                         field: "suggest-path", | ||||
|                         skip_duplicates: true, | ||||
|                         size: 10000 | ||||
|                     } | ||||
|                 } | ||||
|             } | ||||
|         }).then(resp => getPaths(resp["suggest"]["path"][0]["options"].map(opt => opt["_source"]["path"]))); | ||||
|     }) | ||||
| } | ||||
|  | ||||
| @ -100,6 +100,7 @@ const _defaults = { | ||||
|     treemapGroupingDepth: 3, | ||||
|     treemapColor: "PuBuGn", | ||||
|     treemapSize: "large", | ||||
|     suggestPath: true | ||||
| }; | ||||
| 
 | ||||
| function loadSettings() { | ||||
| @ -114,6 +115,7 @@ function loadSettings() { | ||||
|     $("#settingTreemapColor").val(CONF.options.treemapColor); | ||||
|     $("#settingTreemapSize").val(CONF.options.treemapSize); | ||||
|     $("#settingTreemapType").val(CONF.options.treemapType); | ||||
|     $("#settingSuggestPath").prop("checked", CONF.options.suggestPath); | ||||
| } | ||||
| 
 | ||||
| function Settings() { | ||||
| @ -155,6 +157,7 @@ function updateSettings() { | ||||
|     CONF.options.treemapColor = $("#settingTreemapColor").val(); | ||||
|     CONF.options.treemapSize = $("#settingTreemapSize").val(); | ||||
|     CONF.options.treemapType = $("#settingTreemapType").val(); | ||||
|     CONF.options.suggestPath = $("#settingSuggestPath").prop("checked"); | ||||
|     CONF.save(); | ||||
| 
 | ||||
|     if (typeof searchDebounced !== "undefined") { | ||||
|  | ||||
| @ -11,7 +11,7 @@ | ||||
| 
 | ||||
| <nav class="navbar navbar-expand-lg"> | ||||
|     <a class="navbar-brand" href="/">sist2</a> | ||||
|     <span class="badge badge-pill version">2.3.3</span> | ||||
|     <span class="badge badge-pill version">2.4.0</span> | ||||
|     <span class="tagline">Lightning-fast file system indexer and search tool </span> | ||||
|     <a class="btn ml-auto" href="/stats">Stats</a> | ||||
|     <button class="btn" type="button" data-toggle="modal" data-target="#settings" onclick="loadSettings()">Settings</button> | ||||
| @ -192,6 +192,11 @@ | ||||
|                         <label class="custom-control-label" for="settingSearchInPath">Enable matching query against document path</label> | ||||
|                     </div> | ||||
| 
 | ||||
|                     <div class="custom-control custom-checkbox"> | ||||
|                         <input type="checkbox" class="custom-control-input" id="settingSuggestPath"> | ||||
|                         <label class="custom-control-label" for="settingSuggestPath">Enable auto-complete in path filter bar</label> | ||||
|                     </div> | ||||
| 
 | ||||
|                     <label for="settingDisplay">Display</label> | ||||
|                     <select id="settingDisplay" class="form-control form-control-sm"> | ||||
|                         <option value="grid">Grid</option> | ||||
|  | ||||
| @ -10,7 +10,7 @@ | ||||
| 
 | ||||
| <nav class="navbar navbar-expand-lg"> | ||||
|     <a class="navbar-brand" href="/">sist2</a> | ||||
|     <span class="badge badge-pill version">2.3.0</span> | ||||
|     <span class="badge badge-pill version">2.4.0</span> | ||||
|     <span class="tagline">Lightning-fast file system indexer and search tool </span> | ||||
|     <a style="margin-left: auto" class="btn" href="/">Back</a> | ||||
|     <button class="btn" type="button" data-toggle="modal" data-target="#settings" | ||||
| @ -71,6 +71,11 @@ | ||||
|                     <label class="custom-control-label" for="settingFuzzy">Set fuzzy search by default</label> | ||||
|                 </div> | ||||
| 
 | ||||
|                 <div class="custom-control custom-checkbox"> | ||||
|                     <input type="checkbox" class="custom-control-input" id="settingSuggestPath"> | ||||
|                     <label class="custom-control-label" for="settingSuggestPath">Enable auto-complete in path filter bar</label> | ||||
|                 </div> | ||||
| 
 | ||||
|                 <div class="custom-control custom-checkbox"> | ||||
|                     <input type="checkbox" class="custom-control-input" id="settingSearchInPath"> | ||||
|                     <label class="custom-control-label" for="settingSearchInPath">Enable matching query against document | ||||
|  | ||||
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user