Conversion de code PHP -> JavaScript

16 messages
Eléphanteau du PHP | 19 Messages

25 févr. 2017, 09:40

Bonjour,
J'ai besoin de convertir du code PHP en JavaScript mais je ne maitrise rien ...
voici le code a convertir :

Code : Tout sélectionner

<?php $string = file_get_contents('route.html'); $pattrn = "/updi\(event\,\'(.*)'\)/m"; preg_match_all($pattrn,$string,$array); $arrResultat = array(); foreach($array[1] as $value) { $str2 = str_replace("<br>Distances:&nbsp;" ,"|",$value); $str2 = str_replace("<br><b>Wind:</b>" ,"|",$str2); $str2 = str_replace("(<b>TWA" ,"|",$str2); $str2 = str_replace("</b>)<br><b>Heading:</b>" ,"|",$str2); $str2 = str_replace("<b>Sail:</b>" ,"|",$str2); $str2 = str_replace("<br><b>Boat Speed:</b>" ,"|",$str2); $str2 = str_replace("','" ,"|",$str2); $arrResultat[] = $str2; }?> <table border="1"> <tr> <td>Date et Heure</td><td>Distances</td><td>Wind</td><td>TWA</td><td>HDG</td><td>Sail</td><td>Boat Speed</td> </tr><?php foreach($arrResultat as $value) { $arrInfo = explode('|',$value); $TWA = (int) $arrInfo[3]; $color = $TWA >= 0 ? 'green' : 'red';?> <tr> <td><?php print $arrInfo[0];?></td> <td><?php print $arrInfo[1];?></td> <td><?php print $arrInfo[2];?></td> <td style="color:<?php print $color;?>"><?php print abs($TWA);?></td> <td><?php print $arrInfo[4];?></td> <td><?php print $arrInfo[5];?></td> <td><?php print $arrInfo[6];?></td> </tr><?php }?> </table>
Une âme charitable pour m'aider ?
Merci

f3t
Petit nouveau ! | 3 Messages

25 févr. 2017, 18:05

Bonjour,

vous pouvez intégrer du Javascript dans une page HTML avec PHP,
Pourquoi convertir du code php en javascript.
Le PHP est un langage pseudo interprété coté serveur et le Javascript sur le poste client.
A ma connaissance, la conversion n'existe pas et je n'en vois pas l’intérêt, mais je peux me tromper. :shock:

Cordialement.

Eléphanteau du PHP | 19 Messages

25 févr. 2017, 18:26

Bonjour,
Je vous est pas tout dis ... :/
Voici comment je procède actuellement :
- Je me rend sur http://sail.zezo.org/sodebo/chart.pl
- Je fais apparaitre le code source de la page, 'CMD + A' (je suis sous macOS).
- J'ouvre mon fichier "route.html", 'CMD + V' et je quitte en sauvegardant.
- J'ouvre un nouvel onglet et je clic sur mon raccourci. (localhost/route/index.php) ce qui execute ce script.
- Un tableau apparait avec la route a suivre.

Le but est d'avoir une extension google chrome maintenant du coup plus de serveur Apache et l'extension pourra être partagé avec les copains régatiers virtuels
Voila pourquoi j'ai besoin de cette conversion de code php en javascript
Cdlt

Eléphanteau du PHP | 19 Messages

14 juil. 2017, 14:43

Bonjour,

J'ai écrit une petite extension Chrome pour créer le tableau dans une popup lorsque le site est ouvert dans un onglet.

Il suffit de cliquer sur l'icone de boussole pour faire apparaître le tableau.

Voici l'extension : https://expirebox.com/download/929b534f ... 24585.html (faire glisser le fichier dans Chrome pour l'installer)

Image

Bonne journée

Eléphanteau du PHP | 19 Messages

17 juil. 2017, 14:22

Bonjour,

J'ai écrit une petite extension Chrome pour créer le tableau dans une popup lorsque le site est ouvert dans un onglet.

Il suffit de cliquer sur l'icone de boussole pour faire apparaître le tableau.

Voici l'extension : https://expirebox.com/download/929b534f ... 24585.html (faire glisser le fichier dans Chrome pour l'installer)

Image

Bonne journée
Bonjour,
La notification était partie dans mes spams ... du coup j'ai pas pu récupérer l'extension #-o
Ça me semble top ! Je veux bien un autre lien car celui du dessus n'est plus valide 8-|
Merci

Eléphanteau du PHP | 19 Messages

17 juil. 2017, 18:05

Bonjour,

Voici un lien à jour : https://expirebox.com/download/e6199626 ... e94ce.html

Bonne journée

Eléphanteau du PHP | 19 Messages

17 juil. 2017, 18:29

Bonjour,
Voici un lien à jour : https://expirebox.com/download/e6199626 ... e94ce.html
Bonne journée
Merci :D
Téléchargé et installé mais ... ça fonctionne pas ...

Image

ça à une importance que je sois sous macOS ?

Eléphanteau du PHP | 19 Messages

17 juil. 2017, 18:40

Si ça peut vous aider

Image

Eléphanteau du PHP | 19 Messages

18 juil. 2017, 00:00

Bonsoir,

C'est parce que l'extension ne fonctionne que sur l'URL http://sail.zezo.org/sodebo/chart.pl.

S'il faut l'élargir à tout le domaine il faudrait que vous me confirmiez qu'elles fonctionnent toutes de manière similaire.

Bonne soirée

Eléphanteau du PHP | 19 Messages

18 juil. 2017, 00:06

Je vous confirme que l'URL est toujours du type "http://sail.zezo.org/*/chart.pl?" ou * représente le nom de la course.
Bonne soirée également

Eléphanteau du PHP | 19 Messages

18 juil. 2017, 19:58

Bonjour,

Ok celle ci devrait convenir : https://expirebox.com/download/371c05b4 ... 94931.html

Bonne journée

Eléphanteau du PHP | 19 Messages

19 juil. 2017, 23:33

Bonjour,

Ok celle ci devrait convenir : https://expirebox.com/download/371c05b4 ... 94931.html

Bonne journée
Merci Wolan ;)
C'est fonctionnel, depuis ma demande mon 'code' a évolué je vais faire les modifications ( que je sais gérer) et, si vous le voulez bien, j'aurais certaines demandes pour arriver à son equivalence en mode " un clic".
Demain je me penche sur les motifs ( pas eu le temps aujourd'hui je viens de finir le taf) et je vous soumettrais mes souhaits ...
Merci encore pour cette base fonctionnelle, je trouve ça magique la 'puissance d'un code' ... j'aurais du être plus assidu lors de mes cours de BTS ... j'm'en mords les doigts maintenant ...
Kenavo
GeGaX

Eléphanteau du PHP | 19 Messages

20 juil. 2017, 22:31

Bonsoir Wolan,

En se basant sur une 'phrase' type du code source:
"updi(event,'2017-07-27 14:00 CEST (T+162:30)<br>Distances:&nbsp;2784.5nm/83.9nm<br><b>Wind:</b> 268&deg; 11.8 kt (<b>TWA 130&deg;</b>)<br><b>Heading:</b> 131&deg;<b>Sail:</b> Spi<br><b>Boat Speed:</b> 18.00 kts','220px')
Vous donnez cette regex:
/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 datetime = match[1];
const distance = match[2];
const wind = match[3];
const twa = match[4];
const heading = match[5];
const sail = match[6];
const boatSpeed = match[7];
points.push({
           datetime: datetime,
           distance: distance,
           wind: wind,
           twa: twa,
           heading: heading,
           sail: sail,
           boatSpeed: boatSpeed
});
Qui donne ces valeurs:
2017-07-27 14:00 CEST (T+162:30)
2784.5nm/83.9nm
268°; 11.8 kt
130°
131°
Spi
18.00 kts
J'ai tenté de modifier cette regex comme ceci:
/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
[...]
const date = match[1];
const time = match[2];
const ttw = match[4];
const dtw = match[5];
const twd = match[7];
const tws = match[8];
const twa = match[9];
const btw = match[10];
const sail = match[11];
const stw = match[12];
points.push({
            date: date,
            time: time,
            ttw: ttw,
            dtw: dtw,
            twd: twd,
            tws: tws,
            twa: twa,
            btw: btw,
            sail: sail,
            stw: stw
});
Pour obtenir ceci:
2017-07-27
14:00
T+162:30
2784.5nm
268°
11.8 kt
130°
131°
Spi
18.00 kts
Mais vous vous en doutez si je post ici c'est que ça ne fonctionne pas ... Pouvez vous me dire ou je me plante ?
Merci
Bonne soirée

Eléphanteau du PHP | 19 Messages

20 juil. 2017, 23:32

Bonsoir,

Cela devrait fonctionner avec cette expression régulière :

Code : Tout sélectionner

/updi\(event,'([0-9]{4}-[0-9]{2}-[0-9]{2}) ([0-9]{2}:[0-9]{2}) (?:.*?)\((.*?)\)<br>Distances:(.*?)\/(?:.*)<br><b>Wind:<\/b>(.*?);(.*?)\(<b>TWA(.*?)<\/b>\)<br><b>Heading:<\/b>(.*?)<b>Sail:<\/b>(.*?)<br><b>Boat Speed:<\/b>(.*?)'/g
Bonne soirée

Eléphanteau du PHP | 19 Messages

22 juil. 2017, 19:20

Bonsoir Wolan,
Vous devez vous en douter ... ça fonctionne pas ...
Je vais vous mettre les 3 fichiers que j'ai modifié, vous trouverez surement mon erreur :priere:

Votre fichier myscript.js :
"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([]);
}
Le miens :
"use strict";

const pattern = /updi\(event,'([0-9]{4}-[0-9]{2}-[0-9]{2}) ([0-9]{2}:[0-9]{2}) (?:.*?)\((.*?)\)<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 date = match[1];
            const time = match[2];
            const ttw = match[4];
            const dtw = match[5];
            const twd = match[7];
            const tws = match[8];
            const twa = match[9];
            const btw = match[10];
            const sail = match[11];
            const stw = match[12];
            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([]);
}
Votre fichier popup.js
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.datetime, row);
    createCell(element.distance, row);
    createCell(element.wind, row);
    createCellTwa(element.twa, row);
    createCell(element.btw, row);
    createCell(element.sail, row);
    createCell(element.stw, row);
    console.log(element);
});
Le miens :
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);
});
Votre fichier popup.html :
<!doctype html>

<html>
<body>
<table>
    <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>
Le miens :
<!doctype html>

<html>
<body>
<table>
    <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>
le reste des fichiers restent identiques aux vôtres
Merci
Bonne soirée

16 messages