[TUTO noodom] Widget nooTileGrid

Bonsoir,

Je vous propose un nouveau widget pour créer facilement des grilles d’affichages de tuiles d’équipements Jeedom à partir d’un paramétrage json et de paramètres du widget.

Après plusieurs propositions d’aides successives sur ce post : Aide pour desigh HTML - Multiques Questions en continue,
Je me suis finalement retrouvé à réaliser ce widget. Ci-dessous, 2 exemples de widgets personnalisés par simple paramétrage :

Les paramètres sont les suivants :

tilesList : liste des tuiles à afficher (au format json)
tilesListFile : fichier json de la liste des tuiles à afficher (au format json)

gridWidth : largeur de la grille (ex: `650px`)
gridHeight : hauteur de la grille (facultatif : calcul automatique)
gridHorizontalSpace : espace entre les lignes de la grille (`10px`)
gridVerticalSpace : espace entre les colonnes de la grille (`10px`)
gridBackgroundColor : couleur de fond de la grille

tileBackgroundColor : couleur de fond d'une tuile (`black`)
tileLabelColor : couleur du libellé d'une tuile (`white`)
tileFont : fonte du libellé (`fonte`, `fonte.ttf`, `data/nooTileGrid/fonte.ttf`)
tileFontSize : taille du libellé d'une tuile (`15px`)
tileWidth : largeur d'une tuile (`150px`)
tileHeight : hauteur d'une tuile (`150px`)
tileBorderRadius : arrondi des angles de tuiles (`15px`)

openingOffIcon : `icone off` pour les types génériques ouvertures
openingOnIcon : `icone on` pour les types génériques ouvertures
openingOffColor : `icone off` pour les types génériques ouvertures
openingOnColor : `icone on` pour les types génériques ouvertures
lightOffIcon : `icone off` pour les types génériques lumières
lightOnIcon : `icone on` pour les types génériques lumières
lightOffColor : `icone off` pour les types génériques lumières
lightOnColor : `icone on` pour les types génériques lumières
flapOffIcon : `icone off` pour les types génériques volets
flapOnIcon : `icone on` pour les types génériques volets
flapOffColor : `icone off` pour les types génériques volets
flapOnColor : `icone on` pour les types génériques volets
flapLimit : limite pour considérer les volets en état on ou off (`5`)

Le code du widget est disponible ici :

Pour choisir les commandes de son choix, il faut fournir des données au format json qui donne la liste des commandes à afficher dans la grille. Un exemple ici que je détaillerai plus tard pour expliquer les possibilités de personnalisation :

[
    {
        "type": "info",
        "name": "Lumière chambre bas",
        "cmdId": "13311",
        "iconClosedClasses": "icon kiko-light-turn-off",
        "iconOpenClasses": "icon kiko-light-turn-on"
    },
    {
        "type": "info",
        "name": "Lumière cuisine",
        "cmdId": "16941"
    },
    {
        "type": "action",
        "name": "Lumière cuisine",
        "commands": [
            {
                "cmdId": "16943",
                "iconClasses": "icon kiko-light-turn-on"
            },
            {
                "cmdId": "16945",
                "iconClasses": "icon kiko-light-turn-off"
            }
        ]
    },
    {
        "type": "action",
        "name": "Lumière chambre bas",
        "commands": [
            {
                "cmdId": 13312,
                "iconClasses": "icon kiko-light-turn-on"
            },
            {
                "cmdId": 13313,
                "iconClasses": "icon kiko-light-turn-off"
            }
        ]
    },
    {
        "type": "action",
        "name": "Volets cuisine",
        "infoCmd": "21397",
        "limit": "5",
        "commands": [
            {
                "cmdId": "21396",
                "iconClasses": "iconCmd jeedomapp jeedomapp-volet-ferme"
            },
            {
                "cmdId": "21395",
                "iconClasses": "far fa-stop-circle"
            },
            {
                "cmdId": "21394",
                "iconClasses": "jeedomapp jeedomapp-volet-ouvert"
            }
        ]
    },
    {
        "type": "info",
        "name": "Porte-Fenêtre chambre bas",
        "cmdId": "18545",
        "iconClosedClasses": "jeedomapp-fenetre-ferme",
        "iconOpenClasses": "jeedomapp-fenetre-ouverte"
    },
    {
        "type": "info",
        "name": "Fenêtre chambre bas",
        "cmdId": "18550"
    }
]

Ces données au format json sont à copier :

  • soit dans le paramètre optionnel tilesList.
  • soit dans un fichier json sous /var/www/html/data en précisant le nom du fichier dans le paramètre optionnel tilesListFile : 'nomDuFichier' ou 'nomDuFichier.json' : il faudra créer le fichier /var/www/html/data/nooTilesGrid/nomDuFichier.json’ ou '/data/monPath/nomDuFichier.json' si on veut gérer son propre répertoire

Par défaut, les icônes affichés sont déterminés en fonction du type générique de chaque commande.
Il est donc essentiel de bien renseigner ces champs pour les commandes au niveau des équipements correspondants pour un affichage et comportement correct du widget !
Il est possible de surcharger l’affichage par défaut d’une commande en renseignant différents champs pour chaque commande (voir exemple : "iconClosedClasses": "icon kiko-light-turn-off", "iconOpenClasses": "icon kiko-light-turn-on")

Le développement n’est pas finalisé :

  • le widget est exploitable en l’état mais des fonctionnalités suplémentaires restent à ajouter
  • les types génériques de certaines commandes infos sont regroupées et pourront être séparées à terme pour avoir leur propre icônes sans nécessiter de personnalisation par paramétrage
  • des commandes actions pourront être ajoutées
  • le paramétrage par défaut pourra être simplifié pour ceux qui souhaitent aller au plus simple et ne pas avoir à paramétrer chaque commande. Seule la liste des ids des commandes devrait suffire dans ce cas.
5 « J'aime »

Installation :

  • créer une commande de type info et sous-type Autre :

  • associer le widget CustomTemp/NooTileGrid à la commande

  • remplir les différents paramètres optionnels du widget : il faut obligatoirement remplir un des 2 paramètres tilesList ou tilesListFile pour définir la liste des tuiles. Les autres paramètres sont facultatifs mais GridWith est intéressant pour définir la largeur de la grille et ainsi déterminer le nombre de tuiles sur la longueur.

En cas de paramètre fileTilesList indiquant le lien vers le fichier json de configuration, il faut avoir cette arborescence dans /html/data/nooTileGrid (nom du fichier json au choix)

.htaccess :

Order allow,deny
<Files ~ "\.(jpg|jpeg|png|js|html|ttf|gif|css|json)$">
allow from all
</Files>
Deny from all
2 « J'aime »

Salut,
Au top comme d’hab !!! vais essayer, merci

2 « J'aime »

Bonjour,

  • Ajout de la possibilité de personnaliser chaque tuile info ou action (couleurs et icônes) en remplacement des couleurs et icônes par défaut de son type générique, depuis le fichier de configuration json.
  • Attribut « name » facultatif pour une commande info : ce sera alors le nom de la commande qui sera repris dans l’affichage de la tuile
  • Ajout du paramètre optionnel pour les volets : flapLimit : limite pour considérer les volets en état on ou off (5)

:arrow_forward: Différentes saisies possibles des tuiles dans le fichier json
:one: tuile info minimaliste

    {
        "cmdId": "36716"
    },

:two: tuile info avec toutes les possibilités de personnalisation

    {
        "type": "info",
        "name": "Lumière cuisine",
        "cmdId": "16941",
        "iconClosedClasses": "icon kiko-light-turn-off",
        "iconOpenClasses": "icon kiko-light-turn-on",
        "iconClosedColor": "pink",
        "iconOpenColor": "red"
    },

:three: tuile action minimaliste

  	{
        "type": "action",
        "name": "Lumière cuisine",
        "commands": [
            {
                "cmdId": "16943"
            },
            {
                "cmdId": "16945"
            }
        ]
    },

:four: tuile action avec toutes les possibilités de personnalisation

  	{
        "type": "action",
        "name": "Test action",
        "commands": [
            {
                "cmdId": "36711",
                "iconClasses": "icon jeedom2-fdp1-signal5",
              	"iconColor": "purple"
            },
            {
                "cmdId": "36713",
                "iconClasses": "icon jeedom2-fdp1-signal0",
              	"iconColor": "cyan"
            }
        ]
    },

:five: tuile action volets avec toutes les possibilités de personnalisation (limit optionnel pour déterminer la limite d’affichage entre les états on et off des volets)

    {
        "type": "action",
        "name": "Volets cuisine",
        "infoCmd": "21397",
        "limit": "20",
        "commands": [
            {
                "cmdId": "21396",
                "iconClasses": "icon kiko-light-turn-off",
              	"iconColor": "pink"
            },
            {
                "cmdId": "21395",
                "iconClasses": "icon jeedom2-fdp1-signal0"
            },
            {
                "cmdId": "21394",
                "iconClasses": "icon kiko-light-turn-on",
              	"iconColor": "green"
            }
        ]
    },
1 « J'aime »

Ajout des paramètres optionnels :

  • tileFontSize : taille du libellé d’une tuile (15px)
  • tileHeight : hauteur d’une tuile (150px)
  • tileBorderRadius : arrondi des angles de tuiles (15px). Mettre 0px pour des angles droits.
  • flapLimit : limite pour considérer les volets en état on ou off (5), valeur de 0 à 100 (%)

1 « J'aime »

Ajout du paramètre optionnel tileFont : permet d’ajouter sa propre fonte pour les libellés des tuiles sous forme d’un fichier ttf (le paramètre pourra avoir la valeur comicate, comicate.ttf, data/nooTileGrid/comicate.ttf,…).

Un exemple avec la fonte comicate :

Ajout d’un type de tuile : design

Cette nouvelle tuile permet de naviguer vers un design simplement en cliquant dessus,

  • configurable depuis le json comme les autres tuiles :
    • type : design
    • name : libellé de la tuile
    • designId : id du design à atteindre en cliquant sur la tuile
    • iconClasses : icône de la tuile
    • iconColor : couleur de l’icône

1 « J'aime »