diff --git a/static/js/index.advanced-search-form.js b/static/js/index.advanced-search-form.js
index f918d58..06e6a24 100644
--- a/static/js/index.advanced-search-form.js
+++ b/static/js/index.advanced-search-form.js
@@ -84,7 +84,7 @@ var searchGroups = $("div#search-groups");
$(".search-group#selected ." + fieldId).datepicker();
}
else
- $("div.search-group#selected ." + fieldId).remove()
+ $("div.search-group#selected #" + fieldId).remove()
});
}());
@@ -97,16 +97,55 @@ function createSearchGroupInput(fieldId){
return [
"
"
].join("");
}
+/*
+ * Create a query from advanced-search groups.
+ */
function assembleQuery(){
var groups = searchGroups.children(".search-group");
var groupQueries = [];
- for(var group = 0; group < groups.length; group++)
- console.log(group);
+ for(var group = 0; group < groups.length; group++){
+ var inputs = groups[group].querySelectorAll("input[type=text]");
+ var groupQuery = []
+ for(var field = 0; field < inputs.length; field++)
+ if(inputs[field].value.length > 0)
+ groupQuery.push(genFieldQueryString(inputs[field]));
+
+ groupQueries.push(groupQuery.join(" AND "));
+ }
+
+ // console.log(groupQueries.join(" OR "));
+}
+
+/*
+ * Generate a processed query string for an input field's value.
+ *
+ * @param field An `input[type=text]` DOM element.
+ */
+function genFieldQueryString(field){
+ var terms = field.value.replace(/\\/g, "\\\\").replace(/\"/g, "\\\"");
+ if(field.value.indexOf('"') >= 0)
+ return '"' + field.getAttribute("name") + ":" + terms + '"';
+ return terms;
}
+
+(function testQueryStringGeneration(){
+ var sampleStrings = [
+ "A B",
+ "A \\ B",
+ '"A \\" B"',
+ '"A \\" B" C D "A B"',
+ ];
+ for(var string = 0; string < sampleStrings.length; string++)
+ console.log([
+ (sampleStrings[string] + " ").slice(0, 12),
+ ":",
+ " " + genFieldQueryString($("").val(sampleStrings[string])[0])
+ ].join(""));
+})();
diff --git a/templates/index.html b/templates/index.html
index 8a29071..a1f6633 100644
--- a/templates/index.html
+++ b/templates/index.html
@@ -84,11 +84,17 @@
+
+
+
+