IdentifiantMot de passe
Loading...
Mot de passe oubli� ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les r�ponses en temps r�el, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

Modification extension Google Chrome et ajout de valeurs


Sujet :

JavaScript

  1. #1
    Membre �clair�
    Profil pro
    Inscrit en
    Mars 2011
    Messages
    320
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2011
    Messages : 320
    Par d�faut Modification extension Google Chrome et ajout de valeurs
    Bonjour,
    J'ai une extension google chrome fonctionnelle mais j'aimerais optimiser l'affichage des donn�es existantes et en ajouter de nouvelles.
    Ce sujet fait suite a de nombreux sujet d�j� post�s ici mais cette fois ci l'�criture du script est de meilleure facture.

    Cette extension sert � extraire la route � suivre du site sail.zezo.org ( routeur web pour les r�gatiers virtuels de Virtual Regatta )

    Voici les fichiers qui la compose :

    - manifest.json :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    {
      "manifest_version": 2,
      "name": "Route zezo.org",
      "description": "Extract route",
      "version": "0.1",
      "browser_action": {
        "default_icon": "icon.png",
        "default_popup": "popup.html"
      },
      "permissions": ["activeTab"],
      "content_scripts": [
        {
          "matches": ["http://sail.zezo.org/*/chart.pl*"],
          "js": ["myscript.js"]
        }
      ],
      "background": {
        "scripts": ["eventPage.js"],
        "persistent": false
      }
    }
    - eventPage.js :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    var points;
    chrome.runtime.onMessage.addListener(
        function (request, sender, sendResponse) {
            points = request;
        });
    - myscript.js :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    "use strict";
     
    const pattern = /updi\(event,'(.*)<br>Distances:(.*)<br><b>Wind:<\/b>(.*)\(<b>TWA(.*)<\/b>\)<br><b>Heading:<\/b>(.*)<b>Sail:<\/b>(.*)<br><b>Boat Speed:<\/b>(.*)'/g;
    const points = [];
    try {
        Array.prototype.slice.call(document.getElementsByTagName("img")).forEach(function (element) {
            var event = element.getAttribute('onmouseover');
            if (event !== null) {
                var match = pattern.exec(event);
                const datetime = match[1];
                const distance = match[2];
                const wind = match[3];
                const twa = match[4];
                const btw = match[5];
                const sail = match[6];
                const stw = match[7];
                points.push({
                    datetime: datetime,
                    distance: distance,
                    wind: wind,
                    twa: twa,
                    btw: btw,
                    sail: sail,
                    stw: stw
                });
                pattern.lastIndex = 0;
            }
     
        });
     
        chrome.runtime.sendMessage(points);
    } catch (e){
        chrome.runtime.sendMessage([]);
    }
    - popup.js :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    var background = chrome.extension.getBackgroundPage();
     
    function createCell(value, row) {
        var cell = document.createElement("td");
        cell.innerHTML = value;
        row.appendChild(cell);
    }
    function createCellTwa(value, row) {
        var cell = document.createElement("td");
        var rep = value.replace('\u00B0','');
        if(rep >= 0){
            cell.style.color = "green";
        } else {
            cell.style.color = "red";
        }
        cell.innerHTML = Math.abs(rep)+'\u00B0';
        row.appendChild(cell);
    }
    function createCellBtw(value, row) {
        var cell = document.createElement("td");
        cell.style.color = "blue";
        cell.innerHTML = value;
        row.appendChild(cell);
    }
    document.getElementById("pointsTable").innerHTML = "";
     
    background.points.forEach(function (element) {
        var row = document.createElement("tr");
        document.getElementById("pointsTable").appendChild(row);
        createCell(element.datetime, row);
        createCell(element.distance, row);
        createCell(element.wind, row);
        createCellTwa(element.twa, row);
        createCellBtw(element.btw, row);
        createCell(element.sail, row);
        createCell(element.stw, row);
        console.log(element);
    });
    - popup.html :
    Code html : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    <!doctype html>
    <html>
    <body>
    <table border="1" align="center">
        <thead>
            <tr>
                <th>Date et heure</th>
                <th>Distances</th>
                <th>Wind</th>
                <th>TWA</th>
                <th>BTW</th>
                <th>Sail</th>
                <th>STW</th>
            </tr>
        </thead>
        <tbody id ="pointsTable">
        </tbody>
    </table>
    </body>
    <script src="popup.js"></script>
    </html>

    Ce qui donne :
    Nom : Capture d��cran 2017-07-23 � 20.32.52.png
Affichages : 262
Taille : 198,0 Ko

    Je souhaite modifier la Regex du fichier myscript.js ( ligne 3 ) pour mieux s�parer les valeurs extraites et ainsi remodeler le tableau.
    J'ai donc modifi� les fichiers myscript.js / popup.js et popup.html

    - myscript.js :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    "use strict";
    
    const pattern = REGEX;
    const points = [];
    try {
        Array.prototype.slice.call(document.getElementsByTagName("img")).forEach(function (element) {
            var event = element.getAttribute('onmouseover');
            if (event !== null) {
                var match = pattern.exec(event);
                // Avec comme exemple les valeurs de la 1�re ligne du tableau
                const date = match[1]; //2017-07-23
                const time = match[2]; // 20:20
                const ttw = match[4]; // T+0:00
                const dtw = match[5]; // 0.0 nm
                const twd = match[7]; // 72�
                const tws = match[8]; // 8.8 kts
                const twa = match[9]; // 45�
                const btw = match[10]; // 120�
                const sail = match[11]; // Jib
                const stw = match[12]; // 12.50 kts
                points.push({
                    date: date,
                    time: time,
                    ttw: ttw,
                    dtw: dtw,
                    twd: twd,
                    tws: tws,
                    twa: twa,
                    btw: btw,
                    sail: sail,
                    stw: stw
                });
                pattern.lastIndex = 0;
            }
    
        });
    
        chrome.runtime.sendMessage(points);
    } catch (e){
        chrome.runtime.sendMessage([]);
    }
    - popup.js :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    var background = chrome.extension.getBackgroundPage();
     
    function createCell(value, row) {
        var cell = document.createElement("td");
        cell.innerHTML = value;
        row.appendChild(cell);
    }
    function createCellTwa(value, row) {
        var cell = document.createElement("td");
        var rep = value.replace('\u00B0','');
        if(rep >= 0){
            cell.style.color = "green";
        } else {
            cell.style.color = "red";
        }
        cell.innerHTML = Math.abs(rep);
        row.appendChild(cell);
    }
    document.getElementById("pointsTable").innerHTML = "";
     
    background.points.forEach(function (element) {
        var row = document.createElement("tr");
        document.getElementById("pointsTable").appendChild(row);
        createCell(element.date, row);
        createCell(element.time, row);
        createCell(element.ttw, row);
        createCell(element.dtw, row);
        createCell(element.twd, row);
        createCell(element.tws, row);
        createCellTwa(element.twa, row);
        createCell(element.btw, row);
        createCell(element.sail, row);
        createCell(element.stw, row);
        console.log(element);
    });
    - popup.html :
    Code html : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    <!doctype html>
    <html>
    <body>
    <table border="1" align="center">
        <thead>
            <tr>
                <th>Date</th>
                <th>Time</th>
                <th>TTW</th>
                <th>DTW</th>
                <th>TWD</th>
                <th>TWS</th>
                <th>TWA</th>
                <th>BTW</th>
                <th>Sail</th>
                <th>STW</th>
            </tr>
        </thead>
        <tbody id="pointsTable">
        </tbody>
    </table>
    </body>
    <script src="popup.js"></script>
    </html>

    Ce qui donne :
    Nom : Capture d��cran 2017-07-23 � 20.56.25.png
Affichages : 259
Taille : 86,3 Ko

    Je gal�re pour la REGEX j'ai essay� plein de chose mais �a se solde syst�matiquement par un �chec ...

    REGEX test�es :

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    /updi\(event\,\'([0-9]{4}-[0-9]{2}-[0-9]{2}) ([0-9]{2}:[0-9]{2}) (.*?) \((.*?)\)<br>Distances:&nbsp(.*?)\/(.*?)<br><b>Wind:<\/b>(.*?)\;(.*?)\(<b>TWA(.*?)<\/b>\)<br><b>Heading:<\/b>(.*?)\;<b>Sail:<\/b>(.*?)<br><b>Boat Speed:<\/b>(.*?)'/g;
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    /updi\(event\,\'(.*?)[ ](.*?)[ ](.*?)[ ]\((.*?)\)<br>Distances:&nbsp;(.*?)\/(.*)<br><b>Wind:<\/b>(.*?)\;(.*?)\(<b>TWA(.*?);<\/b>\)<br><b>Heading:<\/b>(.*?)<b>Sail:<\/b>(.*?)<br><b>Boat Speed:<\/b>(.*?)\'\,\'(.*?)\'\)/g;
    Et bien d'autres encore ... mais pas une fois j'ai �cris la bonne ...
    Derni�re chose, j'aimerais bien que la popup s'auto-adapte � la largeur du tableau, de ce faite �a serait plus lisible.

    Je suis preneur de toutes les pistes pour r�gler ces 2 soucis
    Merci

  2. #2
    Membre exp�riment�
    Inscrit en
    Ao�t 2006
    Messages
    191
    D�tails du profil
    Informations forums :
    Inscription : Ao�t 2006
    Messages : 191
    Par d�faut
    Salut,

    Pour la regexp tu peux essayez un truc �a

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    updi(event,'2017-07-23 20:20 CEST (T+0:00)<br>Distances:0.0nm/2836.4nm<br><b>Wind:</b>72° 8.8 kts(<b>TWA45°</b>)<br><b>Heading:</b>120°<b>Sail:</b>Jib<br><b>Boat Speed:</b>12.50 kts','220px'
    Mais sans un jeu de donner de test c'est compliqu� de t'aider pr�cis�ment.

    Pour ton deuxi�me point peut tu d�tailler plus le comportement que tu souhaites ?

Discussions similaires

  1. Initiation aux extensions Google Chrome
    Par Sylvaner dans le forum G�n�ral Conception Web
    R�ponses: 10
    Dernier message: 23/11/2012, 11h05
  2. Le concours de la meilleure extension Google Chrome est ouvert!
    Par Mejdi20 dans le forum Communiqu�s
    R�ponses: 0
    Dernier message: 07/06/2010, 16h18
  3. extensions google chrome
    Par jean-michel-78 dans le forum Autres langages pour le Web
    R�ponses: 0
    Dernier message: 25/05/2010, 16h40
  4. Initiation aux extensions Google Chrome
    Par Sylvaner dans le forum Outils
    R�ponses: 0
    Dernier message: 12/12/2009, 12h24

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo