diff options
author | toasted-nutbread <toasted-nutbread@users.noreply.github.com> | 2020-11-08 13:25:07 -0500 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-11-08 13:25:07 -0500 |
commit | 6081e3bef0b6c557896dbc09338e0b963d7f6e4c (patch) | |
tree | 3dd83a63a80238d33e0369864ff4ee4c5312a6a0 /ext/bg | |
parent | 8dc961a61f1526067c6b29882e802de02c8b0327 (diff) |
Make query parser mode select in the base HTML (#1009)
Diffstat (limited to 'ext/bg')
-rw-r--r-- | ext/bg/js/query-parser.js | 39 | ||||
-rw-r--r-- | ext/bg/search.html | 5 |
2 files changed, 28 insertions, 16 deletions
diff --git a/ext/bg/js/query-parser.js b/ext/bg/js/query-parser.js index 698a5cfe..0c7b381f 100644 --- a/ext/bg/js/query-parser.js +++ b/ext/bg/js/query-parser.js @@ -29,7 +29,8 @@ class QueryParser extends EventDispatcher { this._documentUtil = documentUtil; this._parseResults = []; this._queryParser = document.querySelector('#query-parser-content'); - this._queryParserSelect = document.querySelector('#query-parser-select-container'); + this._queryParserModeContainer = document.querySelector('#query-parser-mode-container'); + this._queryParserModeSelect = document.querySelector('#query-parser-mode-select'); this._textScanner = new TextScanner({ node: this._queryParser, ignoreElements: () => [], @@ -45,6 +46,7 @@ class QueryParser extends EventDispatcher { prepare() { this._textScanner.prepare(); this._textScanner.on('searched', this._onSearched.bind(this)); + this._queryParserModeSelect.addEventListener('change', this._onParserChange.bind(this), false); } setOptions({selectedParser, termSpacing, scanning}) { @@ -94,7 +96,7 @@ class QueryParser extends EventDispatcher { } _onParserChange(e) { - const value = e.target.value; + const value = e.currentTarget.value; this._setSelectedParser(value); } @@ -128,13 +130,11 @@ class QueryParser extends EventDispatcher { } _renderParserSelect() { - this._queryParserSelect.textContent = ''; - if (this._parseResults.length > 1) { - const selectedParser = this._selectedParser; - const select = this._createParserSelect(this._parseResults, selectedParser); - select.addEventListener('change', this._onParserChange.bind(this)); - this._queryParserSelect.appendChild(select); + const visible = (this._parseResults.length > 1); + if (visible) { + this._updateParserModeSelect(this._queryParserModeSelect, this._parseResults, this._selectedParser); } + this._queryParserModeContainer.hidden = !visible; } _renderParseResult() { @@ -144,12 +144,13 @@ class QueryParser extends EventDispatcher { this._queryParser.appendChild(this._createParseResult(parseResult.content, false)); } - _createParserSelect(parseResults, selectedParser) { - const select = document.createElement('select'); - select.className = 'query-parser-select form-control'; + _updateParserModeSelect(select, parseResults, selectedParser) { + const fragment = document.createDocumentFragment(); + + let index = 0; + let selectedIndex = -1; for (const parseResult of parseResults) { const option = document.createElement('option'); - option.className = 'query-parser-select-option'; option.value = parseResult.id; switch (parseResult.source) { case 'scanning-parser': @@ -159,13 +160,21 @@ class QueryParser extends EventDispatcher { option.textContent = `MeCab: ${parseResult.dictionary}`; break; default: - option.textContent = 'Unrecognized dictionary'; + option.textContent = `Unknown source: ${parseResult.source}`; break; } option.defaultSelected = selectedParser === parseResult.id; - select.appendChild(option); + fragment.appendChild(option); + + if (selectedParser === parseResult.id) { + selectedIndex = index; + } + ++index; } - return select; + + select.textContent = ''; + select.appendChild(fragment); + select.selectedIndex = selectedIndex; } _createParseResult(terms, preview) { diff --git a/ext/bg/search.html b/ext/bg/search.html index bb5dc421..29594eae 100644 --- a/ext/bg/search.html +++ b/ext/bg/search.html @@ -32,6 +32,10 @@ <label class="toggle"><input type="checkbox" id="clipboard-monitor-enable"><span class="toggle-body"><span class="toggle-track"></span><span class="toggle-knob"></span></span></label> <span class="search-option-label">Clipboard monitor</span> </label> + <div class="search-option" id="query-parser-mode-container" hidden> + <span class="search-option-pre-label">Parser:</span> + <select id="query-parser-mode-select"></select> + </div> </div> <div class="search-textbox-container"> <textarea id="search-textbox" placeholder="Input a term, expression, sentence, or block of text" autocomplete="false" autofocus></textarea> @@ -42,7 +46,6 @@ <div id="spinner" hidden><img src="/mixed/img/spinner.gif"></div> <div class="scan-disable" id="query-parser-container"> - <div id="query-parser-select-container"></div> <div id="query-parser-content"></div> </div> |