Skip to content
Snippets Groups Projects
Commit efcc96b3 authored by florian's avatar florian
Browse files

ENH: Split google-like query at spaces and join with AND

parent db8cf933
No related branches found
No related tags found
2 merge requests!77REL: prepare release 0.8.0,!76F google split at space
......@@ -1410,7 +1410,11 @@ var queryForm = new function () {
return;
}
if (!(value.startsWith("FIND") || value.startsWith("COUNT") || value.startsWith("SELECT"))) {
queryField.value = "FIND ENTITY WHICH HAS A PROPERTY LIKE '*" + queryField.value + "*'";
// split words in query field at space and create query fragments
var words = queryField.value.split(" ").map(word => `A PROPERTY LIKE '*${word}*'`);
var query_string = "FIND ENTITY WHICH HAS ";
// send a query that combines all fragments with an AND
queryField.value = query_string + words.join(" AND ");
}
setter(queryField.value);
......
......@@ -1160,7 +1160,7 @@ QUnit.test("restoreLastQuery", function (assert) {
QUnit.test("bindOnClick", function (assert) {
assert.ok(queryForm.bindOnClick, "available");
var done = assert.async(2);
var done = assert.async(3);
queryForm.redirect = function (a, b) {
done();
};
......@@ -1191,19 +1191,29 @@ QUnit.test("bindOnClick", function (assert) {
assert.equal(storage(), undefined, "after1: storage still empty.");
// test the click handler of the button
form.query.value = "free text";
// test the click handler of the button, first without spaces ...
form.query.value = "freetext";
assert.equal(storage(), undefined, "before2: storage empty.");
form.getElementsByClassName("caosdb-search-btn")[0].onclick();
assert.equal(storage(), "FIND ENTITY WHICH HAS A PROPERTY LIKE '*free text*'", "after2: storage not empty.");
assert.equal(storage(), "FIND ENTITY WHICH HAS A PROPERTY LIKE '*freetext*'", "after2: storage not empty.");
// test the form submit handler analogously
form.query.value = "free text 2";
form.query.value = "freetext2";
$("body").append(form);
$(form).append(submitButton);
submitButton.click();
assert.equal(storage(), "FIND ENTITY WHICH HAS A PROPERTY LIKE '*free text 2*'", "after3: storage not empty.");
assert.equal(storage(), "FIND ENTITY WHICH HAS A PROPERTY LIKE '*freetext2*'", "after3: storage not empty.");
$(form).remove();
// ... then with spaces
form.query.value = "free text 3";
$("body").append(form);
$(form).append(submitButton);
submitButton.click();
assert.equal(storage(), "FIND ENTITY WHICH HAS A PROPERTY LIKE '*free*' AND A PROPERTY LIKE '*text*' AND A PROPERTY LIKE '*3*'", "after4: storage not empty.");
$(form).remove();
})
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment