Добавлена возможность задавать префикс "%" для поискового значения.

Данный префикс позволяет вести поиск по группе подстрок, разделенных пробелами
This commit is contained in:
Book Pauk
2024-08-29 17:45:35 +07:00
parent 84ad5d6b0a
commit 57cd9be637
7 changed files with 84 additions and 21 deletions

View File

@@ -387,21 +387,34 @@ export default class BaseList {
searchValue = searchValue.toLowerCase();
//особая обработка префиксов
if (searchValue[0] == '=') {
if (searchValue[0] === '=') {
searchValue = searchValue.substring(1);
return bookValue.localeCompare(searchValue) == 0;
} else if (searchValue[0] == '*') {
} else if (searchValue[0] === '%') {
searchValue = searchValue.substring(1);
const words = searchValue.split(' ').filter(a => a);
if (!words.length)
words.push('');
for (const w of words)
if (bookValue !== emptyFieldValue && bookValue.indexOf(w) >= 0)
return true;
return false;
} else if (searchValue[0] === '*') {
searchValue = searchValue.substring(1);
return bookValue !== emptyFieldValue && bookValue.indexOf(searchValue) >= 0;
} else if (searchValue[0] == '#') {
} else if (searchValue[0] === '#') {
searchValue = searchValue.substring(1);
if (!bookValue)
return false;
return bookValue !== emptyFieldValue && !enru.has(bookValue[0]) && bookValue.indexOf(searchValue) >= 0;
} else if (searchValue[0] == '~') {//RegExp
} else if (searchValue[0] === '~') {//RegExp
searchValue = searchValue.substring(1);
const re = new RegExp(searchValue, 'i');

View File

@@ -846,8 +846,13 @@ class Search {
</li>
<br>
<li>
"*" поиск подстроки в строке. Например, для "*Александр" в поле автора, будут найдены
все авторы, имя которых содержит "Александр"
"%" поиск по группе подстрок, разделенных пробелами. Например, для "%Александр Пушкин" в поле автора, будут найдены
все авторы, имя которых содержит и "Александр", и "Пушкин" одновременно
</li>
<br>
<li>
"*" поиск подстроки в строке вместе с пробелами. Например, для "*Александр Сергеевич" в поле автора, будут найдены
все авторы, имя которых содержит "Александр Сергеевич"
</li>
<br>
<li>

View File

@@ -155,7 +155,10 @@ class SelectExtSearchDialog {
префикс "=": поиск по точному совпадению
</li>
<li>
префикс "*": поиск подстроки в строке
префикс "%": поиск по группе подстрок, разделенных пробелами
</li>
<li>
префикс "*": поиск подстроки в строке (вместе с пробелами)
</li>
<li>
префикс "#": поиск подстроки в строке, но только среди начинающихся не с латинского или кириллического символа