diff options
Diffstat (limited to 'ext/js/display/display-generator.js')
-rw-r--r-- | ext/js/display/display-generator.js | 138 |
1 files changed, 69 insertions, 69 deletions
diff --git a/ext/js/display/display-generator.js b/ext/js/display/display-generator.js index 724bec9c..32699ec7 100644 --- a/ext/js/display/display-generator.js +++ b/ext/js/display/display-generator.js @@ -50,56 +50,56 @@ class DisplayGenerator { document.head.appendChild(t); } - createTermEntry(details) { + createTermEntry(dictionaryEntry) { const node = this._templates.instantiate('term-entry'); - const expressionsContainer = node.querySelector('.expression-list'); - const reasonsContainer = node.querySelector('.inflection-list'); + const headwordsContainer = node.querySelector('.expression-list'); + const inflectionsContainer = node.querySelector('.inflection-list'); const pitchesContainer = node.querySelector('.pitch-accent-group-list'); const frequencyGroupListContainer = node.querySelector('.frequency-group-list'); const definitionsContainer = node.querySelector('.definition-list'); const termTagsContainer = node.querySelector('.expression-list-tag-list'); - const {headwords: expressions, type, inflections: reasons, definitions, frequencies, pronunciations} = details; - const pitches = DictionaryDataUtil.getPitchAccentInfos(details); + const {headwords, type, inflections, definitions, frequencies, pronunciations} = dictionaryEntry; + const pitches = DictionaryDataUtil.getPitchAccentInfos(dictionaryEntry); const pitchCount = pitches.reduce((i, v) => i + v.pitches.length, 0); - const groupedFrequencies = DictionaryDataUtil.groupTermFrequencies(details); - const termTags = DictionaryDataUtil.groupTermTags(details); + const groupedFrequencies = DictionaryDataUtil.groupTermFrequencies(dictionaryEntry); + const termTags = DictionaryDataUtil.groupTermTags(dictionaryEntry); - const uniqueExpressions = new Set(); + const uniqueTerms = new Set(); const uniqueReadings = new Set(); - for (const {term: expression, reading} of expressions) { - uniqueExpressions.add(expression); + for (const {term, reading} of headwords) { + uniqueTerms.add(term); uniqueReadings.add(reading); } node.dataset.format = type; - node.dataset.expressionCount = `${expressions.length}`; + node.dataset.expressionCount = `${headwords.length}`; node.dataset.definitionCount = `${definitions.length}`; node.dataset.pitchAccentDictionaryCount = `${pitches.length}`; node.dataset.pitchAccentCount = `${pitchCount}`; - node.dataset.uniqueExpressionCount = `${uniqueExpressions.size}`; + node.dataset.uniqueExpressionCount = `${uniqueTerms.size}`; node.dataset.uniqueReadingCount = `${uniqueReadings.size}`; node.dataset.frequencyCount = `${frequencies.length}`; node.dataset.groupedFrequencyCount = `${groupedFrequencies.length}`; - for (let i = 0, ii = expressions.length; i < ii; ++i) { - const node2 = this._createTermExpression(expressions[i], i, pronunciations); + for (let i = 0, ii = headwords.length; i < ii; ++i) { + const node2 = this._createTermHeadword(headwords[i], i, pronunciations); node2.dataset.index = `${i}`; - expressionsContainer.appendChild(node2); + headwordsContainer.appendChild(node2); } - expressionsContainer.dataset.count = `${expressions.length}`; + headwordsContainer.dataset.count = `${headwords.length}`; - this._appendMultiple(reasonsContainer, this._createTermReason.bind(this), reasons); + this._appendMultiple(inflectionsContainer, this._createTermInflection.bind(this), inflections); this._appendMultiple(frequencyGroupListContainer, this._createFrequencyGroup.bind(this), groupedFrequencies, false); this._appendMultiple(pitchesContainer, this._createPitches.bind(this), pitches); - this._appendMultiple(termTagsContainer, this._createTermTag.bind(this), termTags, expressions.length); + this._appendMultiple(termTagsContainer, this._createTermTag.bind(this), termTags, headwords.length); - for (const expression of uniqueExpressions) { - termTagsContainer.appendChild(this._createSearchTag(expression)); + for (const term of uniqueTerms) { + termTagsContainer.appendChild(this._createSearchTag(term)); } for (const reading of uniqueReadings) { - if (uniqueExpressions.has(reading)) { continue; } + if (uniqueTerms.has(reading)) { continue; } termTagsContainer.appendChild(this._createSearchTag(reading)); } @@ -117,7 +117,7 @@ class DisplayGenerator { dictionaryTag.name = dictionary; } - const node2 = this._createTermDefinitionItem(definition, dictionaryTag, expressions, uniqueExpressions, uniqueReadings); + const node2 = this._createTermDefinition(definition, dictionaryTag, headwords, uniqueTerms, uniqueReadings); node2.dataset.index = `${i}`; definitionsContainer.appendChild(node2); } @@ -126,13 +126,13 @@ class DisplayGenerator { return node; } - createKanjiEntry(details) { + createKanjiEntry(dictionaryEntry) { const node = this._templates.instantiate('kanji-entry'); const glyphContainer = node.querySelector('.kanji-glyph'); const frequencyGroupListContainer = node.querySelector('.frequency-group-list'); const tagContainer = node.querySelector('.kanji-tag-list'); - const glossaryContainer = node.querySelector('.kanji-glossary-list'); + const definitionsContainer = node.querySelector('.kanji-glossary-list'); const chineseReadingsContainer = node.querySelector('.kanji-readings-chinese'); const japaneseReadingsContainer = node.querySelector('.kanji-readings-japanese'); const statisticsContainer = node.querySelector('.kanji-statistics'); @@ -140,21 +140,21 @@ class DisplayGenerator { const codepointsContainer = node.querySelector('.kanji-codepoints'); const dictionaryIndicesContainer = node.querySelector('.kanji-dictionary-indices'); - this._setTextContent(glyphContainer, details.character, 'ja'); - const groupedFrequencies = DictionaryDataUtil.groupKanjiFrequencies(details.frequencies); + this._setTextContent(glyphContainer, dictionaryEntry.character, 'ja'); + const groupedFrequencies = DictionaryDataUtil.groupKanjiFrequencies(dictionaryEntry.frequencies); - const dictionaryTag = this._createDictionaryTag(details.dictionary); + const dictionaryTag = this._createDictionaryTag(dictionaryEntry.dictionary); this._appendMultiple(frequencyGroupListContainer, this._createFrequencyGroup.bind(this), groupedFrequencies, true); - this._appendMultiple(tagContainer, this._createTag.bind(this), [...details.tags, dictionaryTag]); - this._appendMultiple(glossaryContainer, this._createKanjiGlossaryItem.bind(this), details.definitions); - this._appendMultiple(chineseReadingsContainer, this._createKanjiReading.bind(this), details.onyomi); - this._appendMultiple(japaneseReadingsContainer, this._createKanjiReading.bind(this), details.kunyomi); + this._appendMultiple(tagContainer, this._createTag.bind(this), [...dictionaryEntry.tags, dictionaryTag]); + this._appendMultiple(definitionsContainer, this._createKanjiDefinition.bind(this), dictionaryEntry.definitions); + this._appendMultiple(chineseReadingsContainer, this._createKanjiReading.bind(this), dictionaryEntry.onyomi); + this._appendMultiple(japaneseReadingsContainer, this._createKanjiReading.bind(this), dictionaryEntry.kunyomi); - statisticsContainer.appendChild(this._createKanjiInfoTable(details.stats.misc)); - classificationsContainer.appendChild(this._createKanjiInfoTable(details.stats.class)); - codepointsContainer.appendChild(this._createKanjiInfoTable(details.stats.code)); - dictionaryIndicesContainer.appendChild(this._createKanjiInfoTable(details.stats.index)); + statisticsContainer.appendChild(this._createKanjiInfoTable(dictionaryEntry.stats.misc)); + classificationsContainer.appendChild(this._createKanjiInfoTable(dictionaryEntry.stats.class)); + codepointsContainer.appendChild(this._createKanjiInfoTable(dictionaryEntry.stats.code)); + dictionaryIndicesContainer.appendChild(this._createKanjiInfoTable(dictionaryEntry.stats.index)); return node; } @@ -235,20 +235,20 @@ class DisplayGenerator { // Private - _createTermExpression(headword, headwordIndex, pronunciations) { - const {term: expression, reading, tags: termTags} = headword; + _createTermHeadword(headword, headwordIndex, pronunciations) { + const {term, reading, tags} = headword; const searchQueries = []; - if (expression) { searchQueries.push(expression); } + if (term) { searchQueries.push(term); } if (reading) { searchQueries.push(reading); } const node = this._templates.instantiate('expression'); - const expressionContainer = node.querySelector('.expression-text'); + const termContainer = node.querySelector('.expression-text'); const tagContainer = node.querySelector('.expression-tag-list'); - node.dataset.readingIsSame = `${reading === expression}`; - node.dataset.frequency = DictionaryDataUtil.getTermFrequency(termTags); + node.dataset.readingIsSame = `${reading === term}`; + node.dataset.frequency = DictionaryDataUtil.getTermFrequency(tags); const {wordClasses} = headword; const pitchAccentCategories = this._getPitchAccentCategories(reading, pronunciations, wordClasses, headwordIndex); @@ -261,61 +261,61 @@ class DisplayGenerator { this._setTextContent(node.querySelector('.expression-reading'), reading); - this._appendFurigana(expressionContainer, expression, reading, this._appendKanjiLinks.bind(this)); - this._appendMultiple(tagContainer, this._createTag.bind(this), termTags); + this._appendFurigana(termContainer, term, reading, this._appendKanjiLinks.bind(this)); + this._appendMultiple(tagContainer, this._createTag.bind(this), tags); this._appendMultiple(tagContainer, this._createSearchTag.bind(this), searchQueries); return node; } - _createTermReason(reason) { + _createTermInflection(inflection) { const fragment = this._templates.instantiateFragment('inflection'); const node = fragment.querySelector('.inflection'); - this._setTextContent(node, reason); - node.dataset.reason = reason; + this._setTextContent(node, inflection); + node.dataset.reason = inflection; return fragment; } - _createTermDefinitionItem(details, dictionaryTag, headwords, uniqueTerms, uniqueReadings) { - const {dictionary, tags, headwordIndices, entries} = details; + _createTermDefinition(definition, dictionaryTag, headwords, uniqueTerms, uniqueReadings) { + const {dictionary, tags, headwordIndices, entries} = definition; const disambiguations = DictionaryDataUtil.getDisambiguations(headwords, headwordIndices, uniqueTerms, uniqueReadings); const node = this._templates.instantiate('definition-item'); const tagListContainer = node.querySelector('.definition-tag-list'); const onlyListContainer = node.querySelector('.definition-disambiguation-list'); - const glossaryContainer = node.querySelector('.glossary-list'); + const entriesContainer = node.querySelector('.glossary-list'); node.dataset.dictionary = dictionary; this._appendMultiple(tagListContainer, this._createTag.bind(this), [...tags, dictionaryTag]); this._appendMultiple(onlyListContainer, this._createTermDisambiguation.bind(this), disambiguations); - this._appendMultiple(glossaryContainer, this._createTermGlossaryItem.bind(this), entries, dictionary); + this._appendMultiple(entriesContainer, this._createTermDefinitionEntry.bind(this), entries, dictionary); return node; } - _createTermGlossaryItem(glossary, dictionary) { - if (typeof glossary === 'string') { - return this._createTermGlossaryItemText(glossary); - } else if (typeof glossary === 'object' && glossary !== null) { - switch (glossary.type) { + _createTermDefinitionEntry(entry, dictionary) { + if (typeof entry === 'string') { + return this._createTermDefinitionEntryText(entry); + } else if (typeof entry === 'object' && entry !== null) { + switch (entry.type) { case 'image': - return this._createTermGlossaryItemImage(glossary, dictionary); + return this._createTermDefinitionEntryImage(entry, dictionary); } } return null; } - _createTermGlossaryItemText(glossary) { + _createTermDefinitionEntryText(text) { const node = this._templates.instantiate('glossary-item'); const container = node.querySelector('.glossary'); - this._setMultilineTextContent(container, glossary); + this._setMultilineTextContent(container, text); return node; } - _createTermGlossaryItemImage(data, dictionary) { + _createTermDefinitionEntryImage(data, dictionary) { const {path, width, height, preferredWidth, preferredHeight, title, description, pixelated} = data; const usedWidth = ( @@ -391,10 +391,10 @@ class DisplayGenerator { return node; } - _createKanjiGlossaryItem(glossary) { + _createKanjiDefinition(text) { const node = this._templates.instantiate('kanji-glossary-item'); const container = node.querySelector('.kanji-glossary'); - this._setMultilineTextContent(container, glossary); + this._setMultilineTextContent(container, text); return node; } @@ -431,8 +431,8 @@ class DisplayGenerator { return this._templates.instantiate('kanji-info-table-empty'); } - _createTag(details) { - const {content, name, category, redundant} = details; + _createTag(tag) { + const {content, name, category, redundant} = tag; const node = this._templates.instantiate('tag'); const inner = node.querySelector('.tag-label-content'); @@ -448,8 +448,8 @@ class DisplayGenerator { return node; } - _createTermTag(details, totalHeadwordCount) { - const {tag, headwordIndices} = details; + _createTermTag(tagInfo, totalHeadwordCount) { + const {tag, headwordIndices} = tagInfo; const node = this._createTag(tag); node.dataset.headwords = headwordIndices.join(' '); node.dataset.totalExpressionCount = `${totalHeadwordCount}`; @@ -547,10 +547,10 @@ class DisplayGenerator { _createPitchAccentDisambiguations(container, exclusiveTerms, exclusiveReadings) { const templateName = 'pitch-accent-disambiguation'; - for (const exclusiveExpression of exclusiveTerms) { + for (const term of exclusiveTerms) { const node = this._templates.instantiate(templateName); node.dataset.type = 'expression'; - this._setTextContent(node, exclusiveExpression, 'ja'); + this._setTextContent(node, term, 'ja'); container.appendChild(node); } @@ -712,9 +712,9 @@ class DisplayGenerator { return count; } - _appendFurigana(container, expression, reading, addText) { + _appendFurigana(container, term, reading, addText) { container.lang = 'ja'; - const segments = this._japaneseUtil.distributeFurigana(expression, reading); + const segments = this._japaneseUtil.distributeFurigana(term, reading); for (const {text, furigana} of segments) { if (furigana) { const ruby = document.createElement('ruby'); |