Duplicate scope check all models (#1810)

* Add duplicateScopeCheckAllModels option to createNote

* Add duplicateScopeCheckAllModels option

* Add setting
This commit is contained in:
toasted-nutbread 2021-07-13 20:29:53 -04:00 committed by GitHub
parent d5320c71a6
commit d058237ba7
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
7 changed files with 40 additions and 2 deletions

View File

@ -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

View File

@ -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
}
}
};

View File

@ -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;
}
}

View File

@ -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,

View File

@ -1494,6 +1494,28 @@
</div>
</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&hellip;</a>
</p>
</div>
</div>
<div class="settings-item">
<div class="settings-item-inner settings-item-inner-wrappable">
<div class="settings-item-left">

View File

@ -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

View File

@ -444,6 +444,7 @@ function createProfileOptionsUpdatedTestData1() {
terms: {deck: '', model: '', fields: {}},
kanji: {deck: '', model: '', fields: {}},
duplicateScope: 'collection',
duplicateScopeCheckAllModels: false,
displayTags: 'never',
checkForDuplicates: true,
fieldTemplates: null,