Работа над расширенным поиском
This commit is contained in:
@@ -235,6 +235,10 @@ class Api {
|
||||
return await this.request({action: 'search', from, query}, 30);
|
||||
}
|
||||
|
||||
async bookSearch(query) {
|
||||
return await this.request({action: 'bookSearch', query}, 30);
|
||||
}
|
||||
|
||||
async getAuthorBookList(authorId) {
|
||||
return await this.request({action: 'get-author-book-list', authorId});
|
||||
}
|
||||
|
||||
@@ -256,6 +256,7 @@ const route2component = {
|
||||
'author': {component: 'AuthorList', label: 'Авторы'},
|
||||
'series': {component: 'SeriesList', label: 'Серии'},
|
||||
'title': {component: 'TitleList', label: 'Книги'},
|
||||
'extended': {component: 'TitleList', label: 'Расширенный поиск'},
|
||||
};
|
||||
|
||||
const componentOptions = {
|
||||
@@ -529,7 +530,13 @@ class Search {
|
||||
get listOptions() {
|
||||
const result = [];
|
||||
for (const [route, rec] of Object.entries(route2component))
|
||||
result.push({label: rec.label, value: route});
|
||||
if (route == 'extended') {
|
||||
if (this.config.extendedSearch) {
|
||||
result.push({value: route, icon: 'la la-code', size: '10px'});
|
||||
}
|
||||
} else {
|
||||
result.push({label: rec.label, value: route, icon: rec.icon});
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
@@ -8,6 +8,7 @@ const myRoutes = [
|
||||
['/author', Search],
|
||||
['/series', Search],
|
||||
['/title', Search],
|
||||
['/extended', Search],
|
||||
['/:pathMatch(.*)*', null, null, '/'],
|
||||
];
|
||||
|
||||
|
||||
@@ -87,6 +87,8 @@ class WebSocketController {
|
||||
await this.getWorkerState(req, ws); break;
|
||||
case 'search':
|
||||
await this.search(req, ws); break;
|
||||
case 'bookSearch':
|
||||
await this.bookSearch(req, ws); break;
|
||||
case 'get-author-book-list':
|
||||
await this.getAuthorBookList(req, ws); break;
|
||||
case 'get-author-series-list':
|
||||
@@ -165,6 +167,17 @@ class WebSocketController {
|
||||
this.send(result, req, ws);
|
||||
}
|
||||
|
||||
async bookSearch(req, ws) {
|
||||
if (!this.config.extendedSearch)
|
||||
throw new Error('config.extendedSearch disabled');
|
||||
if (!req.query)
|
||||
throw new Error(`query is empty`);
|
||||
|
||||
const result = await this.webWorker.bookSearch(req.query);
|
||||
|
||||
this.send(result, req, ws);
|
||||
}
|
||||
|
||||
async getAuthorBookList(req, ws) {
|
||||
const result = await this.webWorker.getAuthorBookList(req.authorId);
|
||||
|
||||
|
||||
@@ -268,6 +268,17 @@ class WebWorker {
|
||||
return result;
|
||||
}
|
||||
|
||||
async bookSearch(query) {
|
||||
this.checkMyState();
|
||||
|
||||
const result = await this.dbSearcher.bookSearch(query);
|
||||
|
||||
const config = await this.dbConfig();
|
||||
result.inpxHash = (config.inpxHash ? config.inpxHash : '');
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
async opdsQuery(from, query) {
|
||||
this.checkMyState();
|
||||
|
||||
|
||||
Reference in New Issue
Block a user