diff options
| author | StefanVukovic99 <stefanvukovic44@gmail.com> | 2024-01-13 12:41:38 +0100 | 
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-01-13 11:41:38 +0000 | 
| commit | 273c2f22603abe563435a0f1d7a84c0d9037fe2c (patch) | |
| tree | 0fe7600db81217379fa6e06d38945f10b7aec58a /ext/js | |
| parent | 2aea9291d66fd619c484abc2ab04b4350807f308 (diff) | |
add option to disable part of speech rule check (#438)
* pos filter wip
* add part of speech filter option
* add part of speech filter option
* remove from deinflector
* update test
* remove return
* tie to dictionary
* duplicate to welcome page
* delete unused html
* fix ts
* typo
Diffstat (limited to 'ext/js')
| -rw-r--r-- | ext/js/background/backend.js | 11 | ||||
| -rw-r--r-- | ext/js/data/options-util.js | 15 | ||||
| -rw-r--r-- | ext/js/language/translator.js | 5 | ||||
| -rw-r--r-- | ext/js/pages/settings/dictionary-controller.js | 12 | 
4 files changed, 34 insertions, 9 deletions
| diff --git a/ext/js/background/backend.js b/ext/js/background/backend.js index 3f3c6063..a5a42272 100644 --- a/ext/js/background/backend.js +++ b/ext/js/background/backend.js @@ -2427,7 +2427,8 @@ export class Backend {              enabledDictionaryMap.set(mainDictionary, {                  index: enabledDictionaryMap.size,                  priority: 0, -                allowSecondarySearches: false +                allowSecondarySearches: false, +                partsOfSpeechFilter: true              });              excludeDictionaryDefinitions = new Set();              excludeDictionaryDefinitions.add(mainDictionary); @@ -2473,10 +2474,12 @@ export class Backend {          const enabledDictionaryMap = new Map();          for (const dictionary of options.dictionaries) {              if (!dictionary.enabled) { continue; } -            enabledDictionaryMap.set(dictionary.name, { +            const {name, priority, allowSecondarySearches, partsOfSpeechFilter} = dictionary; +            enabledDictionaryMap.set(name, {                  index: enabledDictionaryMap.size, -                priority: dictionary.priority, -                allowSecondarySearches: dictionary.allowSecondarySearches +                priority, +                allowSecondarySearches, +                partsOfSpeechFilter              });          }          return enabledDictionaryMap; diff --git a/ext/js/data/options-util.js b/ext/js/data/options-util.js index c6acf373..c93e261d 100644 --- a/ext/js/data/options-util.js +++ b/ext/js/data/options-util.js @@ -555,7 +555,8 @@ export class OptionsUtil {              this._updateVersion19,              this._updateVersion20,              this._updateVersion21, -            this._updateVersion22 +            this._updateVersion22, +            this._updateVersion23          ];          if (typeof targetVersion === 'number' && targetVersion < result.length) {              result.splice(targetVersion); @@ -1140,8 +1141,18 @@ export class OptionsUtil {          for (const {options: profileOptions} of options.profiles) {              profileOptions.translation.searchResolution = 'letter';          } +    } -        return options; +    /** +     * - Added dictionaries[].partsOfSpeechFilter. +     * @type {import('options-util').UpdateFunction} +     */ +    _updateVersion23(options) { +        for (const {options: profileOptions} of options.profiles) { +            for (const dictionary of profileOptions.dictionaries) { +                dictionary.partsOfSpeechFilter = true; +            } +        }      }      /** diff --git a/ext/js/language/translator.js b/ext/js/language/translator.js index 36ed8b43..5441294b 100644 --- a/ext/js/language/translator.js +++ b/ext/js/language/translator.js @@ -269,10 +269,13 @@ export class Translator {          const databaseEntries = await this._database.findTermsBulk(uniqueDeinflectionTerms, enabledDictionaryMap, matchType);          for (const databaseEntry of databaseEntries) { +            const entryDictionary = /** @type {import('translation').FindTermDictionary} */ (enabledDictionaryMap.get(databaseEntry.dictionary)); +            const partsOfSpeechFilter = entryDictionary.partsOfSpeechFilter; +              const definitionRules = Deinflector.rulesToRuleFlags(databaseEntry.rules);              for (const deinflection of uniqueDeinflectionArrays[databaseEntry.index]) {                  const deinflectionRules = deinflection.rules; -                if (deinflectionRules === 0 || (definitionRules & deinflectionRules) !== 0) { +                if (!partsOfSpeechFilter || deinflectionRules === 0 || (definitionRules & deinflectionRules) !== 0) {                      deinflection.databaseEntries.push(databaseEntry);                  }              } diff --git a/ext/js/pages/settings/dictionary-controller.js b/ext/js/pages/settings/dictionary-controller.js index 81b781da..18a802be 100644 --- a/ext/js/pages/settings/dictionary-controller.js +++ b/ext/js/pages/settings/dictionary-controller.js @@ -164,7 +164,7 @@ class DictionaryEntry {      /** */      _showDetails() { -        const {title, revision, version, prefixWildcardsSupported} = this._dictionaryInfo; +        const {title, revision, version, counts, prefixWildcardsSupported} = this._dictionaryInfo;          const modal = this._dictionaryController.modalController.getModal('dictionary-details');          if (modal === null) { return; } @@ -181,12 +181,19 @@ class DictionaryEntry {          const wildcardSupportedElement = querySelectorNotNull(modal.node, '.dictionary-prefix-wildcard-searches-supported');          /** @type {HTMLElement} */          const detailsTableElement = querySelectorNotNull(modal.node, '.dictionary-details-table'); +        /** @type {HTMLElement} */ +        const partsOfSpeechFilterSetting = querySelectorNotNull(modal.node, '.dictionary-parts-of-speech-filter-setting'); +        /** @type {HTMLElement} */ +        const partsOfSpeechFilterToggle = querySelectorNotNull(partsOfSpeechFilterSetting, '.dictionary-parts-of-speech-filter-toggle');          titleElement.textContent = title;          versionElement.textContent = `rev.${revision}`;          outdateElement.hidden = (version >= 3);          countsElement.textContent = this._counts !== null ? JSON.stringify(this._counts, null, 4) : '';          wildcardSupportedElement.checked = prefixWildcardsSupported; +        partsOfSpeechFilterSetting.hidden = !counts.terms.total; +        partsOfSpeechFilterToggle.dataset.setting = `dictionaries[${this._index}].partsOfSpeechFilter`; +          this._setupDetails(detailsTableElement);          modal.setVisible(true); @@ -513,7 +520,8 @@ export class DictionaryController {              priority: 0,              enabled,              allowSecondarySearches: false, -            definitionsCollapsible: 'not-collapsible' +            definitionsCollapsible: 'not-collapsible', +            partsOfSpeechFilter: true          };      } |