Index: gc_lang/fr/modules-js/lexicographe.js ================================================================== --- gc_lang/fr/modules-js/lexicographe.js +++ gc_lang/fr/modules-js/lexicographe.js @@ -347,10 +347,21 @@ } } } return aElem; } + + generateInfoForTokenList (lToken) { + let aElem = []; + for (let oToken of lToken) { + let aRes = this.getInfoForToken(oToken); + if (aRes) { + aElem.push(aRes); + } + } + return aElem; + } getListOfTokensReduc (sText, bInfo=true) { let aTokenList = this.getListOfTokens(sText.replace("'", "’").trim(), false); let iKey = 0; let aElem = []; @@ -375,29 +386,31 @@ } } } if (sMorphLoc) { - let sWord = ''; + let sValue = ''; for (let oTokenWord of aTokenTempList) { - sWord += oTokenWord.sValue+' '; + sValue += oTokenWord.sValue+' '; } let oTokenLocution = { 'nStart': aTokenTempList[0].nStart, 'nEnd': aTokenTempList[aTokenTempList.length-1].nEnd, 'sType': "LOC", - 'sValue': sWord.replace('’ ','’').trim() + 'sValue': sValue.replace('’ ','’').trim(), + 'aSubToken': aTokenTempList }; if (bInfo) { let aFormatedTag = []; - for (let sTagMulti of sMorphLoc.split('|') ){ - aFormatedTag.push( this._formatTags(sTagMulti).replace(/( \(él.\))/g,'') ); + for (let sTagLoc of sMorphLoc.split('|') ){ + aFormatedTag.push( this._formatTags(sTagLoc).replace(/( \(él.\))/g,'') ); } aElem.push({ sType: oTokenLocution.sType, sValue: oTokenLocution.sValue, - aLabel: aFormatedTag + aLabel: aFormatedTag, + aSubElem: this.generateInfoForTokenList(aTokenTempList) }); } else { aElem.push(oTokenLocution); } iKey = iKey + aTokenTempList.length; Index: gc_lang/fr/webext/content_scripts/panel_lxg.css ================================================================== --- gc_lang/fr/webext/content_scripts/panel_lxg.css +++ gc_lang/fr/webext/content_scripts/panel_lxg.css @@ -33,10 +33,19 @@ font-size: 20px; } .grammalecte_lxg_token_block { margin: 4px 0; +} +.grammalecte_lxg_token_subblock { + margin: 2px 0 2px 20px; + padding: 5px; + border-left: 4px solid hsl(210, 50%, 50%); + background-color: hsl(210, 10%, 90%); +} +.grammalecte_lxg_token_descr { + padding: 2px; } .grammalecte_lxg_token { display: inline-block; background-color: hsl(150, 0%, 50%); color: hsl(0, 0%, 96%); Index: gc_lang/fr/webext/content_scripts/panel_lxg.js ================================================================== --- gc_lang/fr/webext/content_scripts/panel_lxg.js +++ gc_lang/fr/webext/content_scripts/panel_lxg.js @@ -27,44 +27,62 @@ addMessage (sMessage) { let xNode = oGrammalecte.createNode("div", {className: "grammalecte_panel_message", textContent: sMessage}); this._xContentNode.appendChild(xNode); } - addListOfTokens (lTokens) { + addListOfTokens (lToken) { try { - if (lTokens) { + if (lToken) { this._nCount += 1; - let xNodeDiv = oGrammalecte.createNode("div", {className: "grammalecte_lxg_list_of_tokens"}); - xNodeDiv.appendChild(oGrammalecte.createNode("div", {className: "grammalecte_lxg_list_num", textContent: this._nCount})); - for (let oToken of lTokens) { - xNodeDiv.appendChild(this._createTokenNode(oToken)); + let xTokenList = oGrammalecte.createNode("div", {className: "grammalecte_lxg_list_of_tokens"}); + xTokenList.appendChild(oGrammalecte.createNode("div", {className: "grammalecte_lxg_list_num", textContent: this._nCount})); + for (let oToken of lToken) { + xTokenList.appendChild(this._createTokenBlock(oToken)); + } + this._xContentNode.appendChild(xTokenList); + } + } + catch (e) { + showError(e); + } + } + + _createTokenBlock (oToken) { + let xTokenBlock = oGrammalecte.createNode("div", {className: "grammalecte_lxg_token_block"}); + xTokenBlock.appendChild(this._createTokenDescr(oToken)); + if (oToken.aSubElem) { + let xSubBlock = oGrammalecte.createNode("div", {className: "grammalecte_lxg_token_subblock"}); + for (let oSubElem of oToken.aSubElem) { + xSubBlock.appendChild(this._createTokenDescr(oSubElem)); + } + xTokenBlock.appendChild(xSubBlock); + } + return xTokenBlock; + } + + _createTokenDescr (oToken) { + try { + let xTokenDescr = oGrammalecte.createNode("div", {className: "grammalecte_lxg_token_descr"}); + xTokenDescr.appendChild(oGrammalecte.createNode("div", {className: "grammalecte_lxg_token grammalecte_lxg_token_" + oToken.sType, textContent: oToken.sValue})); + xTokenDescr.appendChild(oGrammalecte.createNode("div", {className: "grammalecte_lxg_token_colon", textContent: ":"})); + if (oToken.aLabel.length === 1) { + xTokenDescr.appendChild(document.createTextNode(oToken.aLabel[0])); + } else { + let xMorphList = oGrammalecte.createNode("div", {className: "grammalecte_lxg_morph_list"}); + for (let sLabel of oToken.aLabel) { + xMorphList.appendChild(oGrammalecte.createNode("div", {className: "grammalecte_lxg_morph_elem", textContent: "• " + sLabel})); } - this._xContentNode.appendChild(xNodeDiv); + xTokenDescr.appendChild(xMorphList); } + return xTokenDescr; } catch (e) { showError(e); } } - _createTokenNode (oToken) { - let xTokenNode = oGrammalecte.createNode("div", {className: "grammalecte_lxg_token_block"}); - xTokenNode.appendChild(oGrammalecte.createNode("div", {className: "grammalecte_lxg_token grammalecte_lxg_token_" + oToken.sType, textContent: oToken.sValue})); - xTokenNode.appendChild(oGrammalecte.createNode("div", {className: "grammalecte_lxg_token_colon", textContent: ":"})); - if (oToken.aLabel.length === 1) { - xTokenNode.appendChild(document.createTextNode(oToken.aLabel[0])); - } else { - let xTokenList = oGrammalecte.createNode("div", {className: "grammalecte_lxg_morph_list"}); - for (let sLabel of oToken.aLabel) { - xTokenList.appendChild(oGrammalecte.createNode("div", {className: "grammalecte_lxg_morph_elem", textContent: "• " + sLabel})); - } - xTokenNode.appendChild(xTokenList); - } - return xTokenNode; - } - setHidden (sClass, bHidden) { for (let xNode of document.getElementsByClassName(sClass)) { xNode.hidden = bHidden; } } }