15429: Escapes the underscore char so it can be used as a literal.
authorLucas Di Pentima <ldipentima@veritasgenetics.com>
Thu, 17 Oct 2019 14:09:22 +0000 (11:09 -0300)
committerLucas Di Pentima <ldipentima@veritasgenetics.com>
Thu, 17 Oct 2019 14:09:22 +0000 (11:09 -0300)
Arvados-DCO-1.1-Signed-off-by: Lucas Di Pentima <ldipentima@veritasgenetics.com>

apps/workbench/app/assets/javascripts/ilike_filters.js

index d2b549a53508b69941a082424a135de51ba2f15d..4f5cd48e1fa6e08a2a2740da329513a25846be7c 100644 (file)
@@ -12,6 +12,7 @@
 // "foo"     => [["any", "ilike", "%foo%"]]
 // "foo.bar" => [["any", "ilike", "%foo.bar%"]]                         // "." is a word char in ilike queries
 // "foo/b-r" => [["any", "ilike", "%foo/b-r%"]]                         // "/" and "-", too
+// "foo_bar" => [["any", "ilike", "%foo\\_bar%"]                        // "_" should be escaped so it can be used as a literal
 // "foo bar" => [["any", "ilike", "%foo%"], ["any", "ilike", "%bar%"]]
 // "foo|bar" => [["any", "ilike", "%foo%"], ["any", "ilike", "%bar%"]]
 // " oo|bar" => [["any", "ilike", "%oo%"], ["any", "ilike", "%bar%"]]
@@ -19,7 +20,7 @@
 // " "       => []
 // null      => []
 window.ilike_filters = function(q) {
-    q = (q || '').replace(/[^-\w\.\/]+/g, ' ').trim()
+    q = (q || '').replace(/[^-\w\.\/]+/g, ' ').trim().replace(/_/g, '\\_')
     if (q == '')
         return []
     return q.split(" ").map(function(term) {