Index: gc_lang/fr/webext/panel/lex_editor.css ================================================================== --- gc_lang/fr/webext/panel/lex_editor.css +++ gc_lang/fr/webext/panel/lex_editor.css @@ -37,10 +37,11 @@ h1 { margin: 5px 0 20px 0; color: hsl(210, 50%, 50%); font: bold 30px "Trebuchet MS", "Fira Sans", "Liberation Sans", sans-serif; + text-align: center; } h2 { margin: 5px 0 2px 0; color: hsl(0, 50%, 50%); font: bold 20px "Trebuchet MS", "Fira Sans", "Liberation Sans", sans-serif; @@ -49,10 +50,24 @@ margin: 3px 0 2px 0; color: hsl(210, 50%, 50%); font: bold 16px "Trebuchet MS", "Fira Sans", "Liberation Sans", sans-serif; } + +.main_button { + margin: 0 5px; + padding: 10px 30px; + background-color: hsl(210, 10%, 90%); + border-radius: 5px; + cursor: pointer; +} + + +#add_word_page { + display: none; +} + #editor { display: none; } #categories { @@ -177,5 +192,18 @@ #add_to_lexicon:hover { background-color: hsl(0, 60%, 40%); color: hsl(0, 60%, 70%); box-shadow: 0 0 2px hsl(0, 60%, 50%); } + + +#lexicon_page { + +} + +th { + padding: 5px 20px; + border-left: 1px solid hsl(210, 10%, 90%); +} +td { + padding: 0 20px; +} Index: gc_lang/fr/webext/panel/lex_editor.html ================================================================== --- gc_lang/fr/webext/panel/lex_editor.html +++ gc_lang/fr/webext/panel/lex_editor.html @@ -10,235 +10,256 @@

Éditeur lexical

-

Nouveau mot

- - -
- -
-
Nom, adjectif
-
Verbe
-
Adverbe
- -
- -
Prénom
-
Patronyme
-
Nom propre
- -
- -
Autre
-
- - -
- -
- Sélectionnez une catégorie. -
- -
-

Nom, adjectif

-

- - - -

-
-
-

Genre

-

-

-

-
-
-

Pluriel

-

-

-

-
-
- -

[optionnel] Autre forme (masculine, féminine, variante, etc.)

- -
-

- - - -

-
-
-

Genre

-

-

-

-
-
-

Pluriel

-

-

-

-
-
-
-
- -
-

Verbe

-
-

-
Cochez cette case si ce verbe peut s’utiliser sans complément d’objet.
-
-
-
Je dors.
Tu pars.
Elle pense.
Nous écrivons.
Vous manifestez.
Ils viennent.
-
J’appartiens à ce groupe…
-
-
-
-
-

-
Cochez cette case si ce verbe peut s’utiliser avec un complément d’objet direct (COD).
-
-
-
Je mange une pomme.
Tu donnes une bonne impression.
Elle écrit un livre.
Nous fabriquons une œuvre.
-
Je pars.
J’appartiens à…
-
-
-
-
-

-
Cochez cette case, si ce verbe peut s’utiliser avec un complément d’objet indirect (COI). Attention à ne pas confondre avec un complément de temps ou de lieu.
-
-
-
Je donne un cadeau à sa femme.
Elle appartient à ce groupe.
-
-
-
-
-
-

-
Cochez cette case si ce verbe peut s’utiliser pronominalement.
-
-
-
Je me suis trompé.
Tu t’es étonné toi-même.
Elle s’est souvenu de ses études.
Nous nous sommes égarés.
Vous vous êtes retrouvées.
Ils se sont rappelé leur enfance.
-
Je me suis venu.
tu t’es arrivé.
elle s’est marché.
nous nous sommes courus.
vous vous êtes acculés.
Elles se sont capitulées.
-
-
-
-
-

-
Cochez cette case si ce verbe ne peut s’utiliser à la première personne, mais uniquement à la troisième personne du singulier ou du pluriel.
-
-
-
Il pleut.
-
Je pleus.
-
-
-
-
-

-
Cochez cette case si ce verbe s’emploie au passé composé avec l’auxilaire “être”.
-
-
-
Je suis venu.
Je suis parti.
-
J’ai venu.
J’ai parti.
-
-
-
-
-

-
Cochez cette case si ce verbe s’emploie au passé composé avec l’auxilaire “avoir”.
-
-
-
J’ai mangé.
J’ai prié.
-
Je suis mangé.
Je suis prié.
-
-
-
-
- -
-

Adverbe

-

Les adverbes sont invariables en genre et en nombre.

-
- -
-

Prénom

-
-
-

Genre

-

-

-

-
-
-

Pluriel

-

Les prénoms sont invariables en nombre.

-
-
-
- -
-

Patronyme

-
-
-

Genre

-

-

-

-
-
-

Pluriel

-

Les noms de famille sont invariables en nombre.

-
-
-
- -
-

Nom propre

-
-
-

Genre

-

-

-

-
-
-

Pluriel

-

Les noms propres sont invariables en nombre.

-
-
-
- -
-

Autre

-

Indiquez les étiquettes grammaticales que vous voulez appliquer au mot. À utiliser seulement si vous savez ce que vous faites. Dans le cas contraire, tant pis pour vous.

-

Lemme

-

-

Étiquettes

-

-
-
-
- -
-

Mots générés

-

Forme fléchie (lemme), étiquettes

-
- -
- -
-
Ajouter au dictionnaire
-
-
- +
+
Lexique
+
Ajout
+
+ +
+

Nouveau mot

+ + +
+ +
+
Nom, adjectif
+
Verbe
+
Adverbe
+ +
+ +
Prénom
+
Patronyme
+
Nom propre
+ +
+ +
Autre
+
+ + +
+ +
+ Sélectionnez une catégorie. +
+ +
+

Nom, adjectif

+

+ + + +

+
+
+

Genre

+

+

+

+
+
+

Pluriel

+

+

+

+
+
+ +

[optionnel] Autre forme (masculine, féminine, variante, etc.)

+ +
+

+ + + +

+
+
+

Genre

+

+

+

+
+
+

Pluriel

+

+

+

+
+
+
+
+ +
+

Verbe

+
+

+
Cochez cette case si ce verbe peut s’utiliser sans complément d’objet.
+
+
+
Je dors.
Tu pars.
Elle pense.
Nous écrivons.
Vous manifestez.
Ils viennent.
+
J’appartiens à ce groupe…
+
+
+
+
+

+
Cochez cette case si ce verbe peut s’utiliser avec un complément d’objet direct (COD).
+
+
+
Je mange une pomme.
Tu donnes une bonne impression.
Elle écrit un livre.
Nous fabriquons une œuvre.
+
Je pars.
J’appartiens à…
+
+
+
+
+

+
Cochez cette case, si ce verbe peut s’utiliser avec un complément d’objet indirect (COI). Attention à ne pas confondre avec un complément de temps ou de lieu.
+
+
+
Je donne un cadeau à sa femme.
Elle appartient à ce groupe.
+
+
+
+
+
+

+
Cochez cette case si ce verbe peut s’utiliser pronominalement.
+
+
+
Je me suis trompé.
Tu t’es étonné toi-même.
Elle s’est souvenu de ses études.
Nous nous sommes égarés.
Vous vous êtes retrouvées.
Ils se sont rappelé leur enfance.
+
Je me suis venu.
tu t’es arrivé.
elle s’est marché.
nous nous sommes courus.
vous vous êtes acculés.
Elles se sont capitulées.
+
+
+
+
+

+
Cochez cette case si ce verbe ne peut s’utiliser à la première personne, mais uniquement à la troisième personne du singulier ou du pluriel.
+
+
+
Il pleut.
+
Je pleus.
+
+
+
+
+

+
Cochez cette case si ce verbe s’emploie au passé composé avec l’auxilaire “être”.
+
+
+
Je suis venu.
Je suis parti.
+
J’ai venu.
J’ai parti.
+
+
+
+
+

+
Cochez cette case si ce verbe s’emploie au passé composé avec l’auxilaire “avoir”.
+
+
+
J’ai mangé.
J’ai prié.
+
Je suis mangé.
Je suis prié.
+
+
+
+
+ +
+

Adverbe

+

Les adverbes sont invariables en genre et en nombre.

+
+ +
+

Prénom

+
+
+

Genre

+

+

+

+
+
+

Pluriel

+

Les prénoms sont invariables en nombre.

+
+
+
+ +
+

Patronyme

+
+
+

Genre

+

+

+

+
+
+

Pluriel

+

Les noms de famille sont invariables en nombre.

+
+
+
+ +
+

Nom propre

+
+
+

Genre

+

+

+

+
+
+

Pluriel

+

Les noms propres sont invariables en nombre.

+
+
+
+ +
+

Autre

+

Indiquez les étiquettes grammaticales que vous voulez appliquer au mot. À utiliser seulement si vous savez ce que vous faites. Dans le cas contraire, tant pis pour vous.

+

Lemme

+

+

Étiquettes

+

+
+
+
+ +
+

Mots générés

+

Forme fléchie (lemme), étiquettes

+
+ +
+ +
+
Ajouter au dictionnaire
+
+
+
+ +
+

Votre lexique

+ + + + + + + +
+ + +
+
Index: gc_lang/fr/webext/panel/lex_editor.js ================================================================== --- gc_lang/fr/webext/panel/lex_editor.js +++ gc_lang/fr/webext/panel/lex_editor.js @@ -1,54 +1,34 @@ // JavaScript "use strict"; -function showError (e) { - console.error(e.fileName + "\n" + e.name + "\nline: " + e.lineNumber + "\n" + e.message); -} - - -function onSelectionClick (xEvent) { +function createNode (sType, oAttr, oDataset=null) { try { - let xElem = xEvent.target; - if (xElem.id) { - if (xElem.id.startsWith("select_")) { - oPage.showSection("section_" + xElem.id.slice(7)); - oFlex.setMainTag(xElem.dataset.tag); - oFlex.update(); - } else if (xElem.id.startsWith("up_")) { - oFlex.update(); - } - } + let xNode = document.createElement(sType); + Object.assign(xNode, oAttr); + if (oDataset) { + Object.assign(xNode.dataset, oDataset); + } + return xNode; } catch (e) { showError(e); } } -function onWrite (xEvent) { - if (document.getElementById("word").value.trim() !== "") { - oPage.showEditor(); - } else { - oPage.hideEditor(); - oPage.hideActions(); - } -} - -function onWrite2 (xEvent) { - if (document.getElementById("word2").value.trim() !== "") { - oPage.showWord2(); - } else { - oPage.hideWord2(); - } +function showError (e) { + console.error(e.fileName + "\n" + e.name + "\nline: " + e.lineNumber + "\n" + e.message); } -document.getElementById("editor").addEventListener("click", onSelectionClick, false); -document.getElementById("word").addEventListener("keyup", onWrite, false); -document.getElementById("word2").addEventListener("keyup", onWrite2, false); +document.getElementById("lexicon_button").addEventListener("click", () => { oPage.showPage("lex"); }, false); +document.getElementById("add_word_button").addEventListener("click", () => { oPage.showPage("word"); }, false); +document.getElementById("editor").addEventListener("click", (xEvent) => { oPage.onSelectionClick(xEvent); }, false); +document.getElementById("word").addEventListener("keyup", () => { oPage.onWrite(); }, false); +document.getElementById("word2").addEventListener("keyup", () => { oPage.onWrite2(); }, false); document.getElementById("lemma").addEventListener("keyup", () => { oFlex.update(); }, false); document.getElementById("tags").addEventListener("keyup", () => { oFlex.update(); }, false); document.getElementById("add_to_lexicon").addEventListener("click", () => { oFlex.addToLexicon(); }, false); @@ -56,10 +36,20 @@ /* ACTIONS */ const oPage = { + + showPage: function (sPage) { + if (document.getElementById("lexicon_page").style.display == "block") { + document.getElementById("lexicon_page").style.display = "none"; + document.getElementById("add_word_page").style.display = "block"; + } else { + document.getElementById("add_word_page").style.display = "none"; + document.getElementById("lexicon_page").style.display = "block"; + } + }, showEditor: function () { document.getElementById("editor").style.display = "block"; }, @@ -118,10 +108,45 @@ } catch (e) { showError(e); } }, + + onSelectionClick: function (xEvent) { + try { + let xElem = xEvent.target; + if (xElem.id) { + if (xElem.id.startsWith("select_")) { + this.showSection("section_" + xElem.id.slice(7)); + oFlex.setMainTag(xElem.dataset.tag); + oFlex.update(); + } else if (xElem.id.startsWith("up_")) { + oFlex.update(); + } + } + } + catch (e) { + showError(e); + } + }, + + onWrite: function () { + if (document.getElementById("word").value.trim() !== "") { + this.showEditor(); + } else { + this.hideEditor(); + this.hideActions(); + } + }, + + onWrite2: function () { + if (document.getElementById("word2").value.trim() !== "") { + this.showWord2(); + } else { + this.hideWord2(); + } + }, showWord2: function () { document.getElementById("word_section2").style.display = "block"; }, @@ -201,10 +226,11 @@ break; case "V": if (!sWord.endsWith("er") && !sWord.endsWith("ir")) { break; } + sWord = sWord.toLowerCase(); let c_g = (sWord.endsWith("er")) ? "1" : "2"; let c_i = (document.getElementById("up_v_i").checked) ? "i" : "_"; let c_t = (document.getElementById("up_v_t").checked) ? "t" : "_"; let c_n = (document.getElementById("up_v_n").checked) ? "n" : "_"; let c_p = (document.getElementById("up_v_p").checked) ? "p" : "_"; @@ -215,19 +241,22 @@ if (!sVerbTag.endsWith("__") && !sVerbTag.startsWith("____")) { this.addFlexion(sWord, sWord, ":V" + c_g + "_" + sVerbTag); } break; case "W": + sWord = sWord.toLowerCase(); this.addFlexion(sWord, sWord, ":W"); break; case "M1": + sWord = sWord.slice(0,1).toUpperCase() + sWord.slice(1); sGenderTag = this.getRadioValue("genre_m1"); if (sGenderTag) { this.addFlexion(sWord, sWord, ":M1"+sGenderTag+":i"); } break; case "M2": + sWord = sWord.slice(0,1).toUpperCase() + sWord.slice(1); sGenderTag = this.getRadioValue("genre_m2"); if (sGenderTag) { this.addFlexion(sWord, sWord, ":M2"+sGenderTag+":i"); } break; @@ -292,18 +321,56 @@ addFlexions: function (lFlex) { for (let aFlex of lFlex) { this.lFlexion.push(aFlex); } + this.display(); }, load: function () { + if (bChrome) { + browser.storage.local.get("lexicon_list", this._setList); + return; + } + let xPromise = browser.storage.local.get("lexicon_list"); + xPromise.then(this._setList, showError); + }, + + _setList: function (dResult) { + console.log("LOAD"); + if (dResult.hasOwnProperty("lexicon_list")) { + this.lFlexion = dResult.lexicon_list; + } + }, + + display: function () { + let xTable = document.getElementById("table"); + let n = 0; + for (let [sFlexion, sLemma, sTags] of this.lFlexion) { + xTable.appendChild(this._createRowNode(n, sFlexion, sLemma, sTags)); + n += 1; + } + }, + + _createRowNode: function (n, sFlexion, sLemma, sTags) { + let xRowNode = createNode("tr", { id: "row_"+n }); + xRowNode.appendChild(createNode("td", { textContent: n })); + xRowNode.appendChild(createNode("td", { textContent: sFlexion })); + xRowNode.appendChild(createNode("td", { textContent: sLemma })); + xRowNode.appendChild(createNode("td", { textContent: sTags })); + return xRowNode; + }, + clearTable: function () { + let xTable = document.getElementById("table"); + while (xTable.firstChild) { + xTable.removeChild(xTable.firstChild); + } }, save: function () { - console.log(this.lFlexion); + browser.storage.local.set({ "lexicon_list": this.lFlexion }); }, build: function () { return null; },