diff options
| -rw-r--r-- | ext/bg/js/settings-dictionaries.js | 17 | 
1 files changed, 16 insertions, 1 deletions
| diff --git a/ext/bg/js/settings-dictionaries.js b/ext/bg/js/settings-dictionaries.js index 786fcbd5..921e0813 100644 --- a/ext/bg/js/settings-dictionaries.js +++ b/ext/bg/js/settings-dictionaries.js @@ -48,6 +48,8 @@ class SettingsDictionaryListUI {              }          } +        this.updateDictionaryOrder(); +          const titles = this.dictionaryEntries.map(e => e.dictionaryInfo.title);          const removeKeys = Object.keys(this.optionsDictionaries).filter(key => titles.indexOf(key) < 0);          if (removeKeys.length >= 0) { @@ -76,7 +78,6 @@ class SettingsDictionaryListUI {          }          const content = document.importNode(this.template.content, true).firstChild; -        this.container.appendChild(content);          this.dictionaryEntries.push(new SettingsDictionaryEntryUI(this, dictionaryInfo, content, optionsDictionary)); @@ -125,6 +126,18 @@ class SettingsDictionaryListUI {          }      } +    updateDictionaryOrder() { +        const sortInfo = this.dictionaryEntries.map((e, i) => [e, i]); +        sortInfo.sort((a, b) => { +            const i = b[0].optionsDictionary.priority - a[0].optionsDictionary.priority; +            return (i !== 0 ? i : a[1] - b[1]); +        }); + +        for (const [e] of sortInfo) { +            this.container.appendChild(e.content); +        } +    } +      save() {          // Overwrite      } @@ -268,6 +281,8 @@ class SettingsDictionaryEntryUI {          }          e.target.value = `${value}`; + +        this.parent.updateDictionaryOrder();      }      onDeleteButtonClicked(e) { |