From 723af3ea8b3d9e85240bbdd5a3eb1e1aeaf50b7b Mon Sep 17 00:00:00 2001 From: Book Pauk Date: Sun, 23 Oct 2022 19:26:59 +0700 Subject: [PATCH] =?UTF-8?q?=D0=9F=D0=BE=D0=BF=D1=80=D0=B0=D0=B2=D0=BA?= =?UTF-8?q?=D0=B8=20=D0=B1=D0=B0=D0=B3=D0=BE=D0=B2=20=D0=BF=D0=BE=D0=B8?= =?UTF-8?q?=D1=81=D0=BA=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- client/components/Search/Search.vue | 7 ++++--- server/core/DbSearcher.js | 2 +- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/client/components/Search/Search.vue b/client/components/Search/Search.vue index 853302b..50561ef 100644 --- a/client/components/Search/Search.vue +++ b/client/components/Search/Search.vue @@ -1145,6 +1145,9 @@ class Search { if (!searchValue) return true; + if (!bookValue) + bookValue = emptyFieldValue; + bookValue = bookValue.toLowerCase(); searchValue = searchValue.toLowerCase(); @@ -1156,13 +1159,11 @@ class Search { } else if (searchValue[0] == '*') { searchValue = searchValue.substring(1); - return bookValue.indexOf(searchValue) >= 0; + return bookValue !== emptyFieldValue && bookValue.indexOf(searchValue) >= 0; } else if (searchValue[0] == '#') { searchValue = searchValue.substring(1); return !bookValue || (bookValue !== emptyFieldValue && !enru.has(bookValue[0]) && bookValue.indexOf(searchValue) >= 0); - } else if (searchValue[0] == '?') { - return bookValue == '' || bookValue.indexOf(searchValue) == 0; } else { //where = `@dirtyIndexLR('value', ${db.esc(a)}, ${db.esc(a + maxUtf8Char)})`; return bookValue.localeCompare(searchValue) >= 0 && bookValue.localeCompare(searchValue + maxUtf8Char) <= 0; diff --git a/server/core/DbSearcher.js b/server/core/DbSearcher.js index 5d9cc2e..f4e24f6 100644 --- a/server/core/DbSearcher.js +++ b/server/core/DbSearcher.js @@ -41,7 +41,7 @@ class DbSearcher { where = `@dirtyIndexLR('value', ${db.esc(a)}, ${db.esc(a)})`; } else if (a[0] == '*') { a = a.substring(1); - where = `@indexIter('value', (v) => (v.indexOf(${db.esc(a)}) >= 0) )`; + where = `@indexIter('value', (v) => (v !== ${db.esc(emptyFieldValue)} && v.indexOf(${db.esc(a)}) >= 0) )`; } else if (a[0] == '#') { a = a.substring(1); where = `@indexIter('value', (v) => {