Utilisation du symbole # dans les noms de Class

Bonjour,

En essayant de modifier le code de mes widgets perso pour être compatible JeedomV4, je m’aperçois que dans les éditeurs de code que j’utilise, il m’est interdit d’utiliser le symbole # dans un nom de class.

Pourtant, dans le code Jeedom, ce type de syntaxe est utilisé un peu partout (ex : nomclass#uid#, …).

Je ne comprend plus rien. Ais-je loupé quelque chose ?

Je pensais que l’utilisation de #uid# permettait d’utiliser le code d’un widget pour plusieurs données différentes sur une même page.
Si vous pouviez m’éclairer.

Merci d’avance

Bonjour
C’est ton éditeur qui a un soucis faut en changer

C’est curieux !

J’utilise Microsoft Visual Sudio Code (mis a jour d’hier) et si j’essaie en ligne (sur le site w3schools.com par exemple), insérer un # dans un nom de class ne fonctionne pas.
Il doit y avoir un truc qui m’échappe ?

Je refais les #XXX# c’est interdit en css oui mais la tu fais un widget avec du css qui est remplacé au moment du rendu donc oui quand tu l’écris c’est pas autorisé mais au moment de l’afficher jeedom aura fait le necessaire. Regarde les documentations la notion de tag remplacé est bien expliqué.

Merci Loic,

Je comprend maintenant.
On ne peut donc pas travailler sur un éditeur de code en important directement du code natif de Jeedom pour le modifier et suivre l’évolution du rendu au fur et a mesure.
Pour travailler sur un éditeur, je vais donc utiliser l’astuce suivante :

  1. Importer le code natif Jeedom dans l’éditeur
  2. Faire un Find #uid# et Replace HuidH
  3. Travailler sur le code
  4. Puis faire un Find HuidH et Replace #uid#
  5. Recopier le code modifié dans Jeedom

Remarques bienvenues si quelque chose vous choque.

Sinon tu prend Atom et pas de soucis

Salut,

Si tu utilises des .find() Jquery tu n’as pas besoin de spécifier #id# ou #uid#. ça évite les remplacements en +

Même avec Jeexplorer ca crise un peut mais c’est pas interdit

J’ai installé ATOM.
J’ai un fonctionnement similaire aux autres éditeurs.
L’utilisation de xxx#uid# ne fonctionne pas. :face_with_raised_eyebrow:

Ben j’ai atom et j’ai pas de soucis donc je serais cuireux de ce que tu appels ne fonctionne pas.

Loic, j’espère que je ne te fais pas perdre ton temps pour un truc très gros que je ne vois pas.

Si je crée un bout de code HTML en créant une class=« abcde#uid# » et que je demande un preview dans un navigateur (Firefox en l’occurence), ce qui est affiché est rien ou au mieux des morceaux de texte du code.

Si je remplace le nom par class=« abcdeHuidH », le résultat s’affiche comme escompté.

J’ai testé avec les éditeurs, MS Visual Studio Code, Atom, Notepad++.

Voila ce que j’observe.

Je ne comprend pas que cela fonctionne ches les autres.

Tu ne peut affiché les #xxx# dans un navigateur, ce n’est que dans un contexte jeedom ou ils sont remplacés par jeedom avant de le passer a ton navigateur qui lui ne recoit pas #id# mais la valeur de #id# au moment de l’affichage

1 « J'aime »

Merci Olive,
Oui cela je l’ai bien compris.
Mais comment faites vous pour développer du code HTML (widget Jeedom par exemple) en dehors du contexte Jeedom. En utilisant un éditeur comme Atom, Notepad++, … par exemple.
J’ai proposé une astuce ci-dessus mais ca peut paraitre lourd.
Si vous avez une meilleure idée, je suis preneur.

oui peut importe l’éditeur …

moi j’écrit directement dans jeexplorer et je test le résultat direct dans jeedom …

Je vois vraiment pas où est le problème.

N’importe quel éditeur te permet de le faire y’a aucun soucis.
Le # n’est pas un caractere valide dans un nom de class css. Mais c’est pas grave car le core lit le fichier, remplace les #id# par 345 par exemple, et ensuite c’est interprété en html/js/css.

Donc vraiment, aucun soucis.
Ici sublimeText mais notepad++ ou autre c’est pareil.

Merci kiboost de ton intervention,
Mais il me semble qu’il faut que je précise ma question.
J’ai bien compris que le # n’est pas valide dans un nom de class CSS.
J’ai aussi compris que dans l’environement Jeedom, les tags du style #id# ou #uid# étaitent remplacés par leur valeur, 345 par exemple, avant que le code HTML/CSS soit interprété par le core Jeedom.

Donc si on développe du code dans l’environnement Jeedom, (en utilisant jeexplorer comme « olive » par exemple), on peut conserver les #uid# dans son code et voir le résultat (preview) directement.

Ce que j’aimerais faire, c’est écrire du code dans un éditeur externe et surtout voir le résultat (dans le preview) qui est un navigateur comme Firefox par exemple.
Dans ce cas, je ne passe pas par la moulinette Jeedom qui transforme les #uid# en valeur.
Et la évidement, ca ne fonctionne pas. D’ou l’astuce proposée ci dessus mais qui oblige a un Find/Replace (ce que fait Jeedom d’ailleurs).

Ce n’est à mon sens pas la bonne méthode.
Tu crée un fichier pour ton widget, tu l’applique à une commande, tu l’affiche sur ton dashboard, et tu développe, avec les outils dev du browser en parallèle.

Sinon tu n’aura jamais de truc fiable, entre les remplacements par le core, la fonction js update du core, les class css du core, etc.

Je me répète mais l’identification des classes par #id# ou #uid# c’est inutile dans 99% des cas…

C’est vrai que ce que tu proposes est le meilleur moyen pour être, en permanence,conforme à l’environnement Jeedom.

Du coup, ma question évolue vers celle-ci.

Lorsque je développe dans le browse Jeedom sous la fonction Outils/Widget/Code par exemple, pour voir le résultat des modifications apportées au code du widget, la seule chose que j’ai trouvé est de remonter dans la définition de la commande, faire enregsitrer de nouveau et revenir sur le dashboard.
Je trouve cela un peu lourd mais il y a peut être un moyen plus évident et plus rapide ?
Une idée ?

Merci Salvialf,
J’ai bien noté ta suggestion.
Je n’ai pas encore eu le temps de voir comment utiliser la fonction .find() JQuery mais je vais regarder.
Cela semble effectivement très élégant comme méthode.