diff options
author | toasted-nutbread <toasted-nutbread@users.noreply.github.com> | 2021-10-14 21:26:53 -0400 |
---|---|---|
committer | toasted-nutbread <toasted-nutbread@users.noreply.github.com> | 2021-10-14 21:31:03 -0400 |
commit | 858fe7ae11850eaafb3e024289faf0c78e083abf (patch) | |
tree | 701390a05b3163199c06d7cf2482d13c6f61b1a2 /ext/js/display | |
parent | f6c346136297c10389897b183db4f05c07d204fa (diff) |
String frequency support (#1989)
* Restore support for string frequency values
* Add support for {value, displayValue} frequencies
* Update test data
* Improve number parsing of string frequencies
* Improve reading detection
* Expose a displayValue property for frequency information
* Update docs
* Expose displayValue to Anki note data
* Fix translator
* Update display generation
* Update test data
* Update counts
Diffstat (limited to 'ext/js/display')
-rw-r--r-- | ext/js/display/display-generator.js | 44 |
1 files changed, 36 insertions, 8 deletions
diff --git a/ext/js/display/display-generator.js b/ext/js/display/display-generator.js index fe899e53..fc377df1 100644 --- a/ext/js/display/display-generator.js +++ b/ext/js/display/display-generator.js @@ -548,18 +548,15 @@ class DisplayGenerator { this._setTextContent(node.querySelector('.tag-label-content'), dictionary); - const frequency = values.join(', '); - this._setTextContent(node.querySelector('.frequency-disambiguation-term'), term, 'ja'); this._setTextContent(node.querySelector('.frequency-disambiguation-reading'), (reading !== null ? reading : ''), 'ja'); - this._setTextContent(node.querySelector('.frequency-value'), frequency, 'ja'); + this._populateFrequencyValueList(node.querySelector('.frequency-value-list'), values); node.dataset.term = term; node.dataset.reading = reading; node.dataset.hasReading = `${reading !== null}`; node.dataset.readingIsSame = `${reading === term}`; node.dataset.dictionary = dictionary; - node.dataset.frequency = `${frequency}`; node.dataset.details = dictionary; return node; @@ -569,19 +566,50 @@ class DisplayGenerator { const {character, values} = details; const node = this._templates.instantiate('kanji-frequency-item'); - const frequency = values.join(', '); - this._setTextContent(node.querySelector('.tag-label-content'), dictionary); - this._setTextContent(node.querySelector('.frequency-value'), frequency, 'ja'); + this._populateFrequencyValueList(node.querySelector('.frequency-value-list'), values); node.dataset.character = character; node.dataset.dictionary = dictionary; - node.dataset.frequency = `${frequency}`; node.dataset.details = dictionary; return node; } + _populateFrequencyValueList(node, values) { + let fullFrequency = ''; + for (let i = 0, ii = values.length; i < ii; ++i) { + const {frequency, displayValue} = values[i]; + const frequencyString = `${frequency}`; + const text = displayValue !== null ? displayValue : frequency; + + if (i > 0) { + const node2 = document.createElement('span'); + node2.className = 'frequency-value'; + node2.dataset.frequency = `${frequency}`; + node2.textContent = ', '; + node.appendChild(node2); + fullFrequency += ', '; + } + + const node2 = document.createElement('span'); + node2.className = 'frequency-value'; + node2.dataset.frequency = frequencyString; + if (displayValue !== null) { + node2.dataset.displayValue = `${displayValue}`; + if (displayValue !== frequencyString) { + node2.title = frequencyString; + } + } + this._setTextContent(node2, text, 'ja'); + node.appendChild(node2); + + fullFrequency += text; + } + + node.dataset.frequency = fullFrequency; + } + _appendKanjiLinks(container, text) { const jp = this._japaneseUtil; let part = ''; |