mirror of
https://github.com/subsurface/subsurface.git
synced 2025-02-19 22:16:15 +00:00
HTML: list-lib Search must support spaces in the search string
The search result of a string consisting of separate words must be the intersection of the search results of each word. This way searching strings with spaces will be supported. Signed-off-by: Gehad elrobey <gehadelrobey@gmail.com> Signed-off-by: Miika Turkia <miika.turkia@gmail.com> Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
This commit is contained in:
parent
c7cefd421c
commit
6f6ed864bc
1 changed files with 35 additions and 13 deletions
|
@ -460,6 +460,20 @@ Set.prototype.Union = function(another_set)
|
|||
};
|
||||
};
|
||||
|
||||
Set.prototype.intersect = function(another_set)
|
||||
{
|
||||
if (another_set === null) {
|
||||
return;
|
||||
}
|
||||
var result = new Array();
|
||||
for (var i = 0; i < another_set.keys.length; i++) {
|
||||
if(this.contains(another_set.keys[i])) {
|
||||
result.push(another_set.keys[i]);
|
||||
}
|
||||
};
|
||||
this.keys = result;
|
||||
};
|
||||
|
||||
function Node(value)
|
||||
{
|
||||
this.children = new Array();
|
||||
|
@ -486,24 +500,32 @@ function SearchModules(searchfor)
|
|||
return;
|
||||
}
|
||||
|
||||
searchingModules.forEach (function(x) {
|
||||
resultKeys.Union(x.search(searchfor));
|
||||
});
|
||||
var keywords = searchfor.split(" ");
|
||||
|
||||
if (searchingModules["location"].enabled === true)
|
||||
resultKeys.Union(searchingModules["location"].search(searchfor));
|
||||
for (var i = 0; i < keywords.length; i++) {
|
||||
var keywordResult = new Set();
|
||||
|
||||
if (searchingModules["divemaster"].enabled === true)
|
||||
resultKeys.Union(searchingModules["divemaster"].search(searchfor));
|
||||
if (searchingModules["location"].enabled === true)
|
||||
keywordResult.Union(searchingModules["location"].search(keywords[i]));
|
||||
|
||||
if (searchingModules["buddy"].enabled === true)
|
||||
resultKeys.Union(searchingModules["buddy"].search(searchfor));
|
||||
if (searchingModules["divemaster"].enabled === true)
|
||||
keywordResult.Union(searchingModules["divemaster"].search(keywords[i]));
|
||||
|
||||
if (searchingModules["notes"].enabled === true)
|
||||
resultKeys.Union(searchingModules["notes"].search(searchfor));
|
||||
if (searchingModules["buddy"].enabled === true)
|
||||
keywordResult.Union(searchingModules["buddy"].search(keywords[i]));
|
||||
|
||||
if (searchingModules["tags"].enabled === true)
|
||||
resultKeys.Union(searchingModules["tags"].search(searchfor));
|
||||
if (searchingModules["notes"].enabled === true)
|
||||
keywordResult.Union(searchingModules["notes"].search(keywords[i]));
|
||||
|
||||
if (searchingModules["tags"].enabled === true)
|
||||
keywordResult.Union(searchingModules["tags"].search(keywords[i]));
|
||||
|
||||
if (resultKeys.isEmpty()) {
|
||||
resultKeys.Union(keywordResult);
|
||||
} else {
|
||||
resultKeys.intersect(keywordResult);
|
||||
}
|
||||
}
|
||||
|
||||
if (resultKeys.isEmpty()) {
|
||||
//didn't find keys
|
||||
|
|
Loading…
Add table
Reference in a new issue