Skip to content

Commit

Permalink
fix: bidirectional term adding for glossary is made persistent (#41)
Browse files Browse the repository at this point in the history
  • Loading branch information
Fevol committed Feb 20, 2023
1 parent 4fa280c commit e11b861
Show file tree
Hide file tree
Showing 3 changed files with 16 additions and 11 deletions.
1 change: 1 addition & 0 deletions src/constants.ts
Original file line number Diff line number Diff line change
Expand Up @@ -56,6 +56,7 @@ export const DEFAULT_SETTINGS: TranslatorPluginSettings = {
glossary_preference: 'online',
case_insensitive_glossary: false,
enable_animations: true,
glossary_bidirectional: false,

quicksettings_default: [
"change-service",
Expand Down
5 changes: 5 additions & 0 deletions src/types.ts
Original file line number Diff line number Diff line change
Expand Up @@ -145,6 +145,11 @@ export interface TranslatorPluginSettings {
* Users that the user has set for the plugin
*/
hotkeys: TranslatorHotKey[];

/**
* Store term in glossary for both translation directions
*/
glossary_bidirectional: boolean;
}

/**
Expand Down
21 changes: 10 additions & 11 deletions src/ui/translator-components/settings-tabs/GlossarySettings.svelte
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,6 @@
let old_row = [];
let new_row: string[] = ["", ""];
let add_both_directions = false;
let filter_text = "";
let sort_direction = -1;
let translator: DummyTranslate;
Expand All @@ -54,7 +53,7 @@
$: {
language_pair = source_language + '_' + target_language;
reverse_language_pair = target_language + source_language;
reverse_language_pair = target_language + '_' + source_language;
glossary.source_language = source_language;
glossary.target_language = target_language;
updateGlossary();
Expand Down Expand Up @@ -144,7 +143,7 @@
let duplicate_row = glossaries[language_pair].find((row) => row[0] === new_row[0]);
let reverse_duplicate_row: string[];
if (add_both_directions)
if ($settings.glossary_bidirectional)
reverse_duplicate_row = glossaries[reverse_language_pair].find((row) => row[0] === new_row[1]);
if (duplicate_row || reverse_duplicate_row) {
Expand All @@ -169,11 +168,11 @@
async () => {
if (duplicate_row)
glossaries[language_pair].splice(glossaries[language_pair].indexOf(duplicate_row), 1);
if (add_both_directions && reverse_duplicate_row)
if ($settings.glossary_bidirectional && reverse_duplicate_row)
glossaries[reverse_language_pair] = glossaries[reverse_language_pair].filter((row) => row[0] !== reverse_duplicate_row[0]);
glossaries[language_pair] = [...glossaries[language_pair], [...new_row]];
if (add_both_directions)
if ($settings.glossary_bidirectional)
glossaries[reverse_language_pair] = [...glossaries[reverse_language_pair], [new_row[1], new_row[0]]];
new_row = ["", ""];
Expand All @@ -183,7 +182,7 @@
).open();
} else {
glossaries[language_pair] = [...glossaries[language_pair], [...new_row]];
if (add_both_directions)
if ($settings.glossary_bidirectional)
glossaries[reverse_language_pair] = [...glossaries[reverse_language_pair], [new_row[1], new_row[0]]];
new_row = ["", ""];
updateGlossary();
Expand All @@ -199,7 +198,7 @@
function deleteRow(row) {
glossaries[language_pair] = glossaries[language_pair].filter(r => r != row);
updateGlossary();
if (add_both_directions)
if ($settings.glossary_bidirectional)
glossaries[reverse_language_pair] = glossaries[reverse_language_pair].filter(r => r[0] != row[1] && r[1] != row[0]);
}
Expand Down Expand Up @@ -237,7 +236,7 @@
return;
}
}
} else if (add_both_directions) {
} else if ($settings.glossary_bidirectional) {
// If reverse links should be checked too, check if value of updated row is duplicate in reverse glossary
let reverse_duplicate_rows = glossaries[reverse_language_pair].filter(r => r[0] === row[1]);
if (reverse_duplicate_rows)
Expand All @@ -260,7 +259,7 @@
async () => {
if (duplicate_row) {
glossaries[language_pair] = glossaries[language_pair].filter(r => r !== duplicate_row);
if (add_both_directions) {
if ($settings.glossary_bidirectional) {
glossaries[reverse_language_pair] = glossaries[reverse_language_pair]
.map(r => r[0] === old_row[1] && r[1] === old_row[0] ? [row[1], row[0]] : r);
}
Expand All @@ -277,7 +276,7 @@
},
).open();
glossaries[language_pair] = glossaries[language_pair].map(r => r === row ? old_row : r);
} else if (add_both_directions) {
} else if ($settings.glossary_bidirectional) {
glossaries[reverse_language_pair] = glossaries[reverse_language_pair]
.map(r => r[0] === old_row[1] && r[1] === old_row[0] ? [row[1], row[0]] : r);
}
Expand All @@ -291,7 +290,7 @@
description="When a glossary entry is added or updated,<br>an entry will be added or updated for the reverse language pair as well"
type="toggle"
>
<Toggle slot="control" value={add_both_directions} onChange={() => add_both_directions = !add_both_directions}/>
<Toggle slot="control" value={$settings.glossary_bidirectional} onChange={() => $settings.glossary_bidirectional = !$settings.glossary_bidirectional}/>
</SettingItem>

<div class="translator-flex-row-element translator-glossary-settings">
Expand Down

0 comments on commit e11b861

Please sign in to comment.