123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117 |
- // JavaScript
- "use strict";
- var oGrammalecteAPI = {
- // Thes script might be reloaded, don’t use const or let.
- // functions callable from within pages
- // to be sent to the content-cript via an event “GrammalecteCall”
- sVersion: "1.0",
- generateNodeId: function (xNode) {
- xNode.id = "grammalecte_generated_id_" + Date.now().toString(36) + "_" + this._random(0, 1000000).toString(10);
- console.log("[Grammalecte API] generated id:", xNode.id);
- return xNode.id;
- },
- _random: function (nMin, nMax) {
- return Math.floor(Math.random() * (nMax - nMin + 1) + nMin);
- },
- openPanelForNode: function (vNode) {
- // Parameter: a HTML node or the identifier of a HTML node
- if (vNode instanceof HTMLElement) {
- let sNodeId = vNode.id || this.generateNodeId(vNode);
- let xEvent = new CustomEvent("GrammalecteCall", { detail: JSON.stringify({sCommand: "openPanelForNode", sNodeId: sNodeId}) });
- document.dispatchEvent(xEvent);
- }
- else if (typeof(vNode) === "string" && document.getElementById(vNode)) {
- let xEvent = new CustomEvent("GrammalecteCall", { detail: JSON.stringify({sCommand: "openPanelForNode", sNodeId: vNode}) });
- document.dispatchEvent(xEvent);
- }
- else {
- console.log("[Grammalecte API] Error: parameter is not a HTML node with an identifier.");
- }
- },
- openPanelForText: function (sText, vNode=null) {
- // Parameter: text to analyze, and optionaly a node to send results to.
- if (typeof(sText) === "string") {
- let sNodeId = "";
- if (vNode instanceof HTMLElement) {
- sNodeId = vNode.id || this.generateNodeId(vNode);
- }
- else if (typeof(vNode) === "string" && document.getElementById(vNode)) {
- sNodeId = vNode;
- }
- else {
- console.log("[Grammalecte API] No node identifier. No event, no result will be sent.")
- }
- let xEvent = new CustomEvent("GrammalecteCall", { detail: JSON.stringify({sCommand: "openPanelForText", sText: sText, sNodeId: sNodeId}) });
- document.dispatchEvent(xEvent);
- } else {
- console.log("[Grammalecte API] Error: parameter is not a text.");
- }
- },
- parseNode: function (vNode) {
- /* Parameter: a HTML node (with a identifier) or the identifier of a HTML node.
- The result will be sent as an event “GrammalecteResult” to the node.
- */
- if (vNode instanceof HTMLElement) {
- let sNodeId = vNode.id || this.generateNodeId(vNode);
- let xEvent = new CustomEvent("GrammalecteCall", { detail: JSON.stringify({sCommand: "parseNode", sNodeId: sNodeId}) });
- document.dispatchEvent(xEvent);
- }
- else if (typeof(vNode) === "string" && document.getElementById(vNode)) {
- let xEvent = new CustomEvent("GrammalecteCall", { detail: JSON.stringify({sCommand: "parseNode", sNodeId: vNode}) });
- document.dispatchEvent(xEvent);
- }
- else {
- console.log("[Grammalecte API] Error: parameter is not a HTML node with an identifier.");
- }
- },
- parseText: function (sText, vNode) {
- // Parameter: text to analyze, and a node to send results to.
- if (typeof(sText) === "string") {
- if (vNode instanceof HTMLElement) {
- let sNodeId = vNode.id || this.generateNodeId(vNode);
- let xEvent = new CustomEvent("GrammalecteCall", { detail: JSON.stringify({sCommand: "parseText", sText: sText, sNodeId: sNodeId}) });
- document.dispatchEvent(xEvent);
- }
- else if (typeof(vNode) === "string" && document.getElementById(vNode)) {
- let xEvent = new CustomEvent("GrammalecteCall", { detail: JSON.stringify({sCommand: "parseText", sText: sText, sNodeId: vNode}) });
- document.dispatchEvent(xEvent);
- }
- else {
- console.log("[Grammalecte API] Error: parameter is not a HTML node with an identifier.");
- }
- } else {
- console.log("[Grammalecte API] Error: parameter is not a text.");
- }
- },
- getSpellSuggestions: function (sWord, sDestination, sRequestId="") {
- /* parameters:
- - sWord (string)
- - sDestination: HTML identifier (string) -> the result will be sent as an event “GrammalecteResult” to destination node
- - sRequestId: custom identifier for the request (string) [default = ""]
- */
- if (typeof(sWord) === "string" && typeof(sDestination) === "string" && typeof(sRequestId) === "string") {
- let xEvent = new CustomEvent("GrammalecteCall", { detail: JSON.stringify({sCommand: "getSpellSuggestions", sWord: sWord, sDestination: sDestination, sRequestId: sRequestId}) });
- document.dispatchEvent(xEvent);
- } else {
- console.log("[Grammalecte API] Error: one or several parameters aren’t string.");
- }
- }
- }
- /*
- Tell to the webpage that the Grammalecte API is ready.
- */
- document.dispatchEvent(new Event('GrammalecteLoaded'));
|