diff options
| author | toasted-nutbread <toasted-nutbread@users.noreply.github.com> | 2021-07-13 20:29:53 -0400 | 
|---|---|---|
| committer | GitHub <noreply@github.com> | 2021-07-13 20:29:53 -0400 | 
| commit | d058237ba724c3fee842d90c04b1950c9efaadc0 (patch) | |
| tree | d9ec15e567693d353f37ff0158b9c792f1611ccb | |
| parent | d5320c71a6b2219039d9e3d7c7fd4381f1c6b31d (diff) | |
Duplicate scope check all models (#1810)
* Add duplicateScopeCheckAllModels option to createNote
* Add duplicateScopeCheckAllModels option
* Add setting
| -rw-r--r-- | ext/data/schemas/options-schema.json | 5 | ||||
| -rw-r--r-- | ext/js/data/anki-note-builder.js | 4 | ||||
| -rw-r--r-- | ext/js/data/options-util.js | 4 | ||||
| -rw-r--r-- | ext/js/display/display-anki.js | 5 | ||||
| -rw-r--r-- | ext/settings.html | 22 | ||||
| -rw-r--r-- | test/test-anki-note-builder.js | 1 | ||||
| -rw-r--r-- | test/test-options-util.js | 1 | 
7 files changed, 40 insertions, 2 deletions
| diff --git a/ext/data/schemas/options-schema.json b/ext/data/schemas/options-schema.json index 9bdf8747..52e5fa1f 100644 --- a/ext/data/schemas/options-schema.json +++ b/ext/data/schemas/options-schema.json @@ -812,6 +812,7 @@                                      "terms",                                      "kanji",                                      "duplicateScope", +                                    "duplicateScopeCheckAllModels",                                      "checkForDuplicates",                                      "fieldTemplates",                                      "suspendNewCards", @@ -910,6 +911,10 @@                                          "default": "collection",                                          "enum": ["collection", "deck", "deck-root"]                                      }, +                                    "duplicateScopeCheckAllModels": { +                                        "type": "boolean", +                                        "default": false +                                    },                                      "checkForDuplicates": {                                          "type": "boolean",                                          "default": true diff --git a/ext/js/data/anki-note-builder.js b/ext/js/data/anki-note-builder.js index 621816d4..4bb3ddcb 100644 --- a/ext/js/data/anki-note-builder.js +++ b/ext/js/data/anki-note-builder.js @@ -41,6 +41,7 @@ class AnkiNoteBuilder {          requirements=[],          checkForDuplicates=true,          duplicateScope='collection', +        duplicateScopeCheckAllModels=false,          resultOutputMode='split',          glossaryLayoutMode='default',          compactTags=false, @@ -98,7 +99,8 @@ class AnkiNoteBuilder {                  duplicateScope,                  duplicateScopeOptions: {                      deckName: duplicateScopeDeckName, -                    checkChildren: duplicateScopeCheckChildren +                    checkChildren: duplicateScopeCheckChildren, +                    checkAllModels: duplicateScopeCheckAllModels                  }              }          }; diff --git a/ext/js/data/options-util.js b/ext/js/data/options-util.js index 36630e2f..d131d0c6 100644 --- a/ext/js/data/options-util.js +++ b/ext/js/data/options-util.js @@ -856,7 +856,11 @@ class OptionsUtil {          //  Handlebars templates updated to use new media format.          //  Added {selection-text} field marker.          //  Added {sentence-furigana} field marker. +        //  Added anki.duplicateScopeCheckAllModels.          await this._applyAnkiFieldTemplatesPatch(options, '/data/templates/anki-field-templates-upgrade-v13.handlebars'); +        for (const profile of options.profiles) { +            profile.options.anki.duplicateScopeCheckAllModels = false; +        }          return options;      }  } diff --git a/ext/js/display/display-anki.js b/ext/js/display/display-anki.js index b08dc952..b2ed9ec3 100644 --- a/ext/js/display/display-anki.js +++ b/ext/js/display/display-anki.js @@ -42,6 +42,7 @@ class DisplayAnki {          this._glossaryLayoutMode = 'default';          this._displayTags = 'never';          this._duplicateScope = 'collection'; +        this._duplicateScopeCheckAllModels = false;          this._screenshotFormat = 'png';          this._screenshotQuality = 100;          this._scanLength = 10; @@ -142,7 +143,7 @@ class DisplayAnki {      _onOptionsUpdated({options}) {          const {              general: {resultOutputMode, glossaryLayoutMode, compactTags}, -            anki: {tags, duplicateScope, suspendNewCards, checkForDuplicates, displayTags, kanji, terms, screenshot: {format, quality}}, +            anki: {tags, duplicateScope, duplicateScopeCheckAllModels, suspendNewCards, checkForDuplicates, displayTags, kanji, terms, screenshot: {format, quality}},              scanning: {length: scanLength}          } = options; @@ -153,6 +154,7 @@ class DisplayAnki {          this._glossaryLayoutMode = glossaryLayoutMode;          this._displayTags = displayTags;          this._duplicateScope = duplicateScope; +        this._duplicateScopeCheckAllModels = duplicateScopeCheckAllModels;          this._screenshotFormat = format;          this._screenshotQuality = quality;          this._scanLength = scanLength; @@ -561,6 +563,7 @@ class DisplayAnki {              tags: this._noteTags,              checkForDuplicates: this._checkForDuplicates,              duplicateScope: this._duplicateScope, +            duplicateScopeCheckAllModels: this._duplicateScopeCheckAllModels,              resultOutputMode: this._resultOutputMode,              glossaryLayoutMode: this._glossaryLayoutMode,              compactTags: this._compactTags, diff --git a/ext/settings.html b/ext/settings.html index d392b0c0..7380b753 100644 --- a/ext/settings.html +++ b/ext/settings.html @@ -1495,6 +1495,28 @@              </div>              <div class="settings-item-children settings-item-children-group" id="anki-card-duplicate-options" hidden>                  <div class="settings-item"> +                    <div class="settings-item-inner"> +                        <div class="settings-item-left"> +                            <div class="settings-item-label"> +                                Check for duplicates across all models +                                <a class="more-toggle more-only" data-parent-distance="4">(?)</a> +                            </div> +                        </div> +                        <div class="settings-item-right"> +                            <label class="toggle"><input type="checkbox" data-setting="anki.duplicateScopeCheckAllModels"><span class="toggle-body"><span class="toggle-track"></span><span class="toggle-knob"></span></span></label> +                        </div> +                    </div> +                    <div class="settings-item-children more" hidden> +                        <p> +                            By default, duplicate checks are only performed for notes created with the same model. +                            Enabling this option will check for duplicates across <em>all</em> model types. +                        </p> +                        <p> +                            <a class="more-toggle" data-parent-distance="3">Less…</a> +                        </p> +                    </div> +                </div> +                <div class="settings-item">                      <div class="settings-item-inner settings-item-inner-wrappable">                          <div class="settings-item-left">                              <div class="settings-item-label"> diff --git a/test/test-anki-note-builder.js b/test/test-anki-note-builder.js index c7d91325..4433e3e6 100644 --- a/test/test-anki-note-builder.js +++ b/test/test-anki-note-builder.js @@ -236,6 +236,7 @@ async function getRenderResults(dictionaryEntries, type, mode, template, AnkiNot              tags: ['yomichan'],              checkForDuplicates: true,              duplicateScope: 'collection', +            duplicateScopeCheckAllModels: false,              resultOutputMode: mode,              glossaryLayoutMode: 'default',              compactTags: false diff --git a/test/test-options-util.js b/test/test-options-util.js index 5c411c23..10881af9 100644 --- a/test/test-options-util.js +++ b/test/test-options-util.js @@ -444,6 +444,7 @@ function createProfileOptionsUpdatedTestData1() {              terms: {deck: '', model: '', fields: {}},              kanji: {deck: '', model: '', fields: {}},              duplicateScope: 'collection', +            duplicateScopeCheckAllModels: false,              displayTags: 'never',              checkForDuplicates: true,              fieldTemplates: null, |