summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--theme/list_lib.js48
1 files changed, 35 insertions, 13 deletions
diff --git a/theme/list_lib.js b/theme/list_lib.js
index 6ba366043..dd7be94a9 100644
--- a/theme/list_lib.js
+++ b/theme/list_lib.js
@@ -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(" ");
+
+ for (var i = 0; i < keywords.length; i++) {
+ var keywordResult = new Set();
+
+ if (searchingModules["location"].enabled === true)
+ keywordResult.Union(searchingModules["location"].search(keywords[i]));
- if (searchingModules["location"].enabled === true)
- resultKeys.Union(searchingModules["location"].search(searchfor));
+ if (searchingModules["divemaster"].enabled === true)
+ keywordResult.Union(searchingModules["divemaster"].search(keywords[i]));
- if (searchingModules["divemaster"].enabled === true)
- resultKeys.Union(searchingModules["divemaster"].search(searchfor));
+ if (searchingModules["buddy"].enabled === true)
+ keywordResult.Union(searchingModules["buddy"].search(keywords[i]));
- if (searchingModules["buddy"].enabled === true)
- resultKeys.Union(searchingModules["buddy"].search(searchfor));
+ if (searchingModules["notes"].enabled === true)
+ keywordResult.Union(searchingModules["notes"].search(keywords[i]));
- if (searchingModules["notes"].enabled === true)
- resultKeys.Union(searchingModules["notes"].search(searchfor));
+ if (searchingModules["tags"].enabled === true)
+ keywordResult.Union(searchingModules["tags"].search(keywords[i]));
- if (searchingModules["tags"].enabled === true)
- resultKeys.Union(searchingModules["tags"].search(searchfor));
+ if (resultKeys.isEmpty()) {
+ resultKeys.Union(keywordResult);
+ } else {
+ resultKeys.intersect(keywordResult);
+ }
+ }
if (resultKeys.isEmpty()) {
//didn't find keys