diff options
Diffstat (limited to 'ext')
| -rw-r--r-- | ext/bg/js/settings.js | 46 | 
1 files changed, 27 insertions, 19 deletions
| diff --git a/ext/bg/js/settings.js b/ext/bg/js/settings.js index f48afa2c..b187fd33 100644 --- a/ext/bg/js/settings.js +++ b/ext/bg/js/settings.js @@ -49,7 +49,7 @@ async function formRead() {      optionsNew.anki.sentenceExt = parseInt($('#sentence-detection-extent').val(), 10);      optionsNew.anki.server = $('#interface-server').val(); -    if (optionsOld.anki.enable && !$('#anki-error').is(':visible')) { +    if (optionsOld.anki.enable && !ankiErrorShown()) {          optionsNew.anki.terms.deck = $('#anki-terms-deck').val();          optionsNew.anki.terms.model = $('#anki-terms-model').val();          optionsNew.anki.terms.fields = ankiFieldsToDict($('#terms .anki-field-value')); @@ -69,7 +69,7 @@ async function formRead() {      return {optionsNew, optionsOld};  } -function updateVisibility(options) { +function formUpdateVisibility(options) {      const general = $('#anki-general');      if (options.anki.enable) {          general.show(); @@ -94,7 +94,7 @@ function updateVisibility(options) {      }  } -async function onOptionsChanged(e) { (async () => { +async function onFormOptionsChanged(e) { (async () => {      if (!e.originalEvent && !e.isTrigger) {          return;      } @@ -106,7 +106,7 @@ async function onOptionsChanged(e) { (async () => {          const {optionsNew, optionsOld} = await formRead();          await optionsSave(optionsNew); -        updateVisibility(optionsNew); +        formUpdateVisibility(optionsNew);          const ankiUpdated =              optionsNew.anki.enable !== optionsOld.anki.enable || @@ -153,7 +153,7 @@ function onReady() {(async () => {      $('#generate-html-cards').prop('checked', options.anki.htmlCards);      $('#sentence-detection-extent').val(options.anki.sentenceExt);      $('#interface-server').val(options.anki.server); -    $('input, select').not('.anki-model').change(onOptionsChanged); +    $('input, select').not('.anki-model').change(onFormOptionsChanged);      $('.anki-model').change(onAnkiModelChanged);      try { @@ -168,7 +168,7 @@ function onReady() {(async () => {          ankiErrorShow(e);      } -    updateVisibility(options); +    formUpdateVisibility(options);  })();}  $(document).ready(onReady); @@ -235,11 +235,11 @@ async function dictionaryGroupsPopulate(options) {          dictGroups.append($(dictHtml));      } -    updateVisibility(options); +    formUpdateVisibility(options);      $('.dict-enabled, .dict-priority').change(e => {          dictionaryGroupsSort(); -        onOptionsChanged(e); +        onFormOptionsChanged(e);      });  } @@ -322,6 +322,10 @@ function ankiErrorShow(error) {      }  } +function ankiErrorShown() { +    return $('#anki-error').is(':visible'); +} +  function ankiFieldsToDict(selection) {      const result = {};      selection.each((index, element) => { @@ -333,6 +337,11 @@ function ankiFieldsToDict(selection) {  async function ankiDeckAndModelPopulate(options) {      const ankiFormat = $('#anki-format').hide(); +    const ankiTermsModel = $('#anki-terms-model').val(options.anki.terms.model); +    const ankiKanjiModel = $('#anki-kanji-model').val(options.anki.kanji.model); + +    $('#anki-terms-deck').val(options.anki.terms.deck); +    $('#anki-kanji-deck').val(options.anki.kanji.deck);      const deckNames = await instAnki().getDeckNames();      const ankiDeck = $('.anki-deck'); @@ -344,11 +353,8 @@ async function ankiDeckAndModelPopulate(options) {      ankiModel.find('option').remove();      modelNames.sort().forEach(name => ankiModel.append($('<option/>', {value: name, text: name}))); -    $('#anki-terms-deck').val(options.anki.terms.deck); -    await ankiFieldsPopulate($('#anki-terms-model').val(options.anki.terms.model), options); - -    $('#anki-kanji-deck').val(options.anki.kanji.deck); -    await ankiFieldsPopulate($('#anki-kanji-model').val(options.anki.kanji.model), options); +    await ankiFieldsPopulate(ankiTermsModel, options); +    await ankiFieldsPopulate(ankiKanjiModel, options);      ankiFormat.show();  } @@ -397,12 +403,14 @@ async function ankiFieldsPopulate(element, options) {          container.append($(html));      } -    tab.find('.anki-field-value').change(onOptionsChanged); -    tab.find('.marker-link').click(e => { -        e.preventDefault(); -        const link = e.target; -        $(link).closest('.input-group').find('.anki-field-value').val(`{${link.text}}`).trigger('change'); -    }); +    tab.find('.anki-field-value').change(onFormOptionsChanged); +    tab.find('.marker-link').click(onAnkiMarkerClicked); +} + +function onAnkiMarkerClicked(e) { +    e.preventDefault(); +    const link = e.target; +    $(link).closest('.input-group').find('.anki-field-value').val(`{${link.text}}`).trigger('change');  }  function onAnkiModelChanged(e) { (async () => { |