Tuto afficher un tableau html dans vos pages

Bonjour à tous,

Je profite de la mise à dispo de la derniere beta de plugin-jeedomconnect pour vous expliquer comment afficher un tableau HTML.
Ceci est desormais possible avec cette nouvelle version et l’arrivée des composants, briques elementaires qui pourront agrémenter vos pages et améliorer ainsi vos designs.

Pour ceux qui sont en stable, patience, donc, ca arrive

et comme d’hab, on commence par le résultat. pour ma part, une vue synthétique de l’ensemble de mes chauffages domotisés (ouverture de la vanne/temperature de la pièce/température du radiateur/température de consigne)

Vigilance 1 : je ne suis pas développeur, mes connaissance en html sont issues de google, soyez indulgent si ce que je propose fait grincer les puristes
Vigilance 2 : l’interpreteur html est basique, toutes les balises ne sont pas reconnues … j’en liste quelques-une, mais n’hesitez pas à partager celles qui fonctionnent !

Allez, Zou, let’s go

1 - il faut générer une commande info / string dans laquelle on retrouvera le tableau au format html, basiquement, avec les balises suivante

<table>
    <tr> 
        <th>Entete 1</th>
        <th>Entete 2>/th>
        .....
   </tr>
   <tr>
        <td>donnée 1</td>
        <td>donnée 2>/td>
        ......
   </tr>
   ......
</table>

Pour ma part, je génère ce tableau via un bloc code mais il peut directement etre réalisé avec un scenario classique, sans bloc code

2 - il faut créer un composant de type texte et intégrer cette commande comme valeur du texte

3 - intégrer ce composant dans une page jeedomconnect

Pour la génération du tableau
on peut rajouter les styles suivants au niveau de chacune des balises table, tr, th ou td pour le rendre plus fun :

border-radius
border
text-align
background-color

integrer à une balise table, ca donnera ceci par exemple

<table style="border-radius: 2px;border: 1px solid steelblue; text-align:center;background-color: cornflowerblue"';>

Pour les couleurs, les valeurs en hexa ne fonctionnent pas, vous pouvez prendre les valeurs textuelles via ce site par exemple : https://web-color.aliasdmc.fr/

Astuce :
je gère les style dans des variables ou tags afin de ne pas etre obligé de les les reecrire à chaque fois

$borderStyle1 = ' style="border-radius: 2px;border: 1px solid steelblue; text-align:center;background-color: cornflowerblue"';
$borderStyle2 = ' style="border-radius: 2px;border: 1px solid steelblue; text-align:center"';

Et ca donne, pour la première ligne de mon tableau en bloc code:

$etatTextuel=$etatTextuel.'<table><tr><th></th><th'.$borderStyle1.'>Puissance</th><th'.$borderStyle1.'>Piece</th><th'.$borderStyle1.'>Vanne</th><th '.$borderStyle1.'>Consigne</th><tr>' ;

Quelques rendus possibles :

La partie génération du tableau HTML reste le plus délicat, mais ca se fait.

Voilà, A vous de jouer

Norbert

12 « J'aime »

Super :+1:
Par contre chaque température c’est une infos numériques?

Oui, bien sûr !. La 1ere est un détecteur de température dans la pièce, le 2nd, c’est la température remontée par la vanne, et la troisième, la consigne.

Norbert

Ce que je voulais dire c’est un widget ou composant c’est ça ?

2 « J'aime »

Donc composant avec un rendu HTML :wink:

Tu l as pas mis assez gras :slight_smile: :slight_smile:

Ça j’ai compris que c’est un composant le tableau

C’est les valeurs dans le tableau c’est des widgets ou composants?

Ni l un ni l autre ! :sweat_smile:

C est le contenu du composant texte !
C est donc du « texte » avec la valorisation d un ensemble de cmdes formaté en html

2 « J'aime »

@ngrataloup
Si ça ne te dérange pas je veux bien voir ton code pour le tableau et la génération via scénario.
J’ai beau essayer plein de chose je patoge dans la semoule

Alors, voici les lignes correspondantes de mon scenario :

// variables
$etatTextuel='' ;

// styles definis
$borderStyle1 = ' style="border-radius: 0px;border: 0px solid white; text-align:center;background-color: steelblue"';
$borderStyle2 = ' style="border-radius: 0px;border: 0px solid white; text-align:center;background-color: skyblue"';

// titre des colonnes
$htmlTitre  = '<table><tr><th></th><th'.$borderStyle1.'>Puissance</th><th'.$borderStyle1.'>Piece</th><th'.$borderStyle1.'>Vanne</th><th '.$borderStyle1.'>Consigne</th><tr>' ;
$etatTextuel = $etatTextuel . $htmlTitre

// Contenu
// Pour chaque pièce equipée d'un chauffage domotisé - foreach
$html= '<tr><th'.$borderStyle2.'>'.remove_accent($objectHumanName).'</th><td'.$borderStyle2.'>'.$position.'%</td><td'.$borderStyle2.'>'.$temperaturePiece.'°C</td><td'.$borderStyle2.'>'.$temperatureVanne.'°C</td><td'.$borderStyle2.'>'.$temperatureConsigne.'°C</td></tr>';
$etatTextuel = $etatTextuel . $html

Ensuite, j’ecris la valeur $etatTextuel dans une commande info

Le scenario complet en json :
Gestion Chauffage V2.json.txt (21,4 Ko)

(c’est un scenario qui me permet de calculer la température de sortie de l’eau de ma chaudière via une loi d’eau)

Salut @ngrataloup,
Je ne parviens pas à créer un scénario depuis ton fichier json GestionChauffahe… Peux-tu, stp, m’indiquer la manip à faire. Passes-tu par un template ? Merci

Tu renommes le .json.txt en .txt
Et tu le charges via les templates

Norbert

Ce ne serait pas le contraire, renommer le .txt en .json ? C’est ce que j’ai fait en tout cas mais je ne vois rien dans la page scenario. Est-ce du fait que c’est un bloc code ? Ca fonctionne bien avec d’autres tests que j’ai fait.
Merci

Bonjour.
J’essai de reproduire ce tuto (il est fait pour les pro? :wink:).
Car etant novice je n’y arrive pas.
Dés le debut je bloque;

C’est un Virtuel ?

Sinon si c’est trop compliqué pour moi pour faire comme vous, si je creer un virtuel avec toutes mes commandes infos et ensuite en « configuration avancée » je choisi « tableau » et que enfin sur JC je crée un widget « webview » , cela peut le faire ?
Merci

Désolé, je viens de voir ton message … et ton autre post sur la création d’un tableau et l’accès en webview. Du coup, j’imagine que tu as basculé sur l’autre solution :wink:

Ce n’est pas grave du tout.
Mais pour l’instant je suis aussi bloqué sur la solution d’un tableau en webview ( la taille du texte n’est pas le meme entre le design et le webview).
De plus, laquelle des 2 solutions est la meilleure ? (en webview l’affichage met du temps a s’afficher).
J’ai essayer de comprendre ton tuto ( essayer plusieurs choses en lisant les posts associer) mais decidement je ne suis pas asser calé. :weary:
Alors peut etre que tu peux m’aider ?
Merci

Je crois que tu es pile poil dans l’objectif du community :grinning:

1 - tu crées un virtuel de type info/string (NON HISTORISE)
2 - tu te crée un scenario avec un bloc code dans lequel tu vas generer ton tableau.
Le contenu du bloc code peut être est celui là pour commencer:

// La commande qui va intégrer mon tableau
$cmdTableau = cmd::byString('#[Données Techniques][test tableau][test tableau]#') ;

// le style du tableau
$borderStyle1 = ' style="border-radius: 2px;border: 1px solid steelblue; text-align:center;background-color: cornflowerblue"';
$borderStyle2 = ' style="border-radius: 2px;border: 1px solid steelblue; text-align:center"';

// la valeurs du tableau
$cellule11 = cmd::byString('#[ma][super][commande1]#')-> execCmd() ;
$cellule12 = cmd::byString('#[ma][super][commande2]#')-> execCmd() ;
$cellule13 = cmd::byString('#[ma][super][commande3]#')-> execCmd() ;
$cellule21 = cmd::byString('#[ma][super][commande4]#')-> execCmd() ;
$cellule22 = cmd::byString('#[ma][super][commande5]#')-> execCmd() ;
$cellule23 = cmd::byString('#[ma][super][commande6]#')-> execCmd() ;

// ... et la génration du tableau
$valeurTableau = '
  <table>
     <tr>
        <th'.$borderStyle1.'>Mon entete 1</th>
        <th'.$borderStyle1.'>Mon entete 2</th>
        <th'.$borderStyle1.'>Mon entete 3</th>
     </tr>
     <tr>
        <td'.$borderStyle2.'>'.$cellule11.'</td>
        <td'.$borderStyle2.'>'.$cellule12.'</td>
        <td'.$borderStyle2.'>'.$cellule13.'</td>
     </tr>
     <tr>
        <td'.$borderStyle2.'>'.$cellule21.'</td>
        <td'.$borderStyle2.'>'.$cellule22.'</td>
        <td'.$borderStyle2.'>'.$cellule23.'</td>
     </tr>
  </table>' ;

$cmdTableau->event($valeurTableau) ;

table = le tableau
tr = un ligne
th = une cellule d’entete
td = une cellule de données

Tu peux déjà commencer par ca sans trop multiplier les lignes colonnes au debut et lorsque le resultat sera satisfaisant, le finaliser

/!\ le rendu coté JC n’ets pas le meme que celui coté Jeedom

Norbert

Eureka!!! j’ai reussi :joy:
Merci de m’avoir aider, avec les détails que tu a mis en plus sur le bloc code , j’ai mieux compris.
Je vais pouvoir maintenant m’amuser a faire un chouette tableau et voir d’un seul coup d’oeil la conso de tous mes equipements sur ma tablette.

Je parlais de mon tableau que j’avais commencer a faire sur un design et le visualiser avec webview de JC.
https://community.jeedom.com/t/affichage-design-avec-webview/115625/1

Et encore une fois merci :wink:

1 « J'aime »

Bonjour ngrataloup,

J’ais reussi a faire mon tableau :blush:
Effectivement c’est assez fastidieux a faire, mais avec du copier/coller ça va quand meme.
C’est un détail mais j’ai certaines cellules dont le texte est en gras, peut’on y faire quelque chose?
Est’il possible d’encadrer le tableau, c’est a dire 1 trait noir plus gros autour du tableau ?
Et aussi de mettre une unité apres les chiffres ?

Merci d’avance

Salut @ngrataloup
Meci pour ce tuto, que j’ai plus ou moins réussi à apprivoiser…
J’ai bien noté que le rendu sur Jeedom et JC n’estpas le meme, et je le constate aussi.
Néanoins, dais tu pourquoi, sur JEedom cela donne çà :


comment puis je faire remonter le tableau ?
Merci
(PS: ne pas tenir compte des entrées des cellules, j’ai fait un test!)
Rémi