From 53873910c2ccc302417db815a213d51298c7741b Mon Sep 17 00:00:00 2001 From: Book Pauk Date: Mon, 3 Oct 2022 16:50:51 +0700 Subject: [PATCH] =?UTF-8?q?=D0=A3=D0=BB=D1=83=D1=87=D1=88=D0=B5=D0=BD?= =?UTF-8?q?=D0=B8=D0=B5=20=D1=84=D0=B8=D0=BB=D1=8C=D1=82=D1=80=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- server/core/DbCreator.js | 20 ++++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) diff --git a/server/core/DbCreator.js b/server/core/DbCreator.js index a071f64..58cf44a 100644 --- a/server/core/DbCreator.js +++ b/server/core/DbCreator.js @@ -70,11 +70,17 @@ class DbCreator { callback({recsLoaded}); let chunkNum = 0; - //фильтр по авторам + //фильтр const inpxFilter = await this.loadInpxFilter(); - let filterAuthor = () => true; + let filter = () => true; if (inpxFilter) { - filterAuthor = (author) => { + + let recFilter = () => true; + if (inpxFilter.filter) + recFilter = new Function(`'use strict'; return ${inpxFilter.filter}`)(); + + filter = (rec) => { + let author = rec.author; if (!author) author = emptyFieldValue; @@ -92,7 +98,9 @@ class DbCreator { } } - return (!inpxFilter.includeSet || inpxFilter.includeSet.has(author)) && !excluded + return recFilter(rec) + && (!inpxFilter.includeSet || inpxFilter.includeSet.has(author)) + && !excluded ; }; } @@ -124,8 +132,8 @@ class DbCreator { const parsedCallback = async(chunk) => { let filtered = false; for (const rec of chunk) { - //сначала фильтр по авторам - if (!filterAuthor(rec.author)) { + //сначала фильтр + if (!filter(rec)) { rec.id = 0; filtered = true; continue;