Работа над расширенным поиском
This commit is contained in:
@@ -89,6 +89,11 @@ Options:
|
|||||||
// 0 - отключить таймаут, время доступа по паролю не ограничено
|
// 0 - отключить таймаут, время доступа по паролю не ограничено
|
||||||
"accessTimeout": 0,
|
"accessTimeout": 0,
|
||||||
|
|
||||||
|
// включить(true)/выключить(false) возможность расширенного поиска (раздел "</>")
|
||||||
|
// расширенный поиск не оптимизирован, поэтому может сильно нагружать сервер
|
||||||
|
// чтобы ускорить поиск, увеличьте параметр dbCacheSize
|
||||||
|
"extendedSearch": true,
|
||||||
|
|
||||||
// содержимое кнопки-ссылки "(читать)", если не задано - кнопка "(читать)" не показывается
|
// содержимое кнопки-ссылки "(читать)", если не задано - кнопка "(читать)" не показывается
|
||||||
// пример: "https://omnireader.ru/#/reader?url=${DOWNLOAD_LINK}"
|
// пример: "https://omnireader.ru/#/reader?url=${DOWNLOAD_LINK}"
|
||||||
// на место ${DOWNLOAD_LINK} будет подставлена ссылка на скачивание файла книги
|
// на место ${DOWNLOAD_LINK} будет подставлена ссылка на скачивание файла книги
|
||||||
|
|||||||
@@ -17,6 +17,7 @@
|
|||||||
class="q-mt-xs" style="width: 150px;" :label="`(${f.type}) ${f.field}`"
|
class="q-mt-xs" style="width: 150px;" :label="`(${f.type}) ${f.field}`"
|
||||||
:bg-color="bgColor[f.field] || 'white'"
|
:bg-color="bgColor[f.field] || 'white'"
|
||||||
stack-label outlined dense clearable
|
stack-label outlined dense clearable
|
||||||
|
@keypress="onKeyPress"
|
||||||
>
|
>
|
||||||
<q-tooltip v-if="search[f.field]" :delay="500" anchor="bottom middle" content-style="font-size: 80%" max-width="400px">
|
<q-tooltip v-if="search[f.field]" :delay="500" anchor="bottom middle" content-style="font-size: 80%" max-width="400px">
|
||||||
{{ search[f.field] }}
|
{{ search[f.field] }}
|
||||||
@@ -125,6 +126,11 @@ class SelectExtSearchDialog {
|
|||||||
this.error = error.join('<br>');
|
this.error = error.join('<br>');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
onKeyPress(event) {
|
||||||
|
if (event.code == 'Enter')
|
||||||
|
this.apply();
|
||||||
|
}
|
||||||
|
|
||||||
apply() {
|
apply() {
|
||||||
this.validate();
|
this.validate();
|
||||||
if (!this.error) {
|
if (!this.error) {
|
||||||
|
|||||||
@@ -547,20 +547,22 @@ class DbSearcher {
|
|||||||
if (bookIds === null) {
|
if (bookIds === null) {
|
||||||
const db = this.db;
|
const db = this.db;
|
||||||
const filterBySearch = (bookField, searchValue) => {
|
const filterBySearch = (bookField, searchValue) => {
|
||||||
|
searchValue = searchValue.toLowerCase();
|
||||||
//особая обработка префиксов
|
//особая обработка префиксов
|
||||||
if (searchValue[0] == '=') {
|
if (searchValue[0] == '=') {
|
||||||
searchValue = searchValue.substring(1);
|
searchValue = searchValue.substring(1);
|
||||||
return `(row.${bookField}.localeCompare(${db.esc(searchValue)}) === 0)`;
|
return `(row.${bookField}.toLowerCase().localeCompare(${db.esc(searchValue)}) === 0)`;
|
||||||
} else if (searchValue[0] == '*') {
|
} else if (searchValue[0] == '*') {
|
||||||
searchValue = searchValue.substring(1);
|
searchValue = searchValue.substring(1);
|
||||||
return `(row.${bookField} && row.${bookField}.indexOf(${db.esc(searchValue)}) >= 0)`;
|
return `(row.${bookField} && row.${bookField}.toLowerCase().indexOf(${db.esc(searchValue)}) >= 0)`;
|
||||||
} else if (searchValue[0] == '#') {
|
} else if (searchValue[0] == '#') {
|
||||||
|
|
||||||
//searchValue = searchValue.substring(1);
|
//searchValue = searchValue.substring(1);
|
||||||
//return !bookValue || (bookValue !== emptyFieldValue && !enru.has(bookValue[0]) && bookValue.indexOf(searchValue) >= 0);
|
//return !bookValue || (bookValue !== emptyFieldValue && !enru.has(bookValue[0]) && bookValue.indexOf(searchValue) >= 0);
|
||||||
return 'true';
|
return 'true';
|
||||||
} else {
|
} else {
|
||||||
return `(row.${bookField}.localeCompare(${db.esc(searchValue)}) >= 0 && row.${bookField}.localeCompare(${db.esc(searchValue)} + ${db.esc(maxUtf8Char)}) <= 0)`;
|
return `(row.${bookField}.toLowerCase().localeCompare(${db.esc(searchValue)}) >= 0 ` +
|
||||||
|
`&& row.${bookField}.toLowerCase().localeCompare(${db.esc(searchValue)} + ${db.esc(maxUtf8Char)}) <= 0)`;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user