Bonjour à tous
Je me suis permis une petite adaptation avec ces widgets dynamiques V4, j’espère que l’auteur @kaktusatomik ne m’en voudra pas
Afin de regrouper dans un seul widget et faciliter l’usage : porte, fenetre, baie et garage et d’inclure le code et le CCS
pour modifier l’orientation et le choix du type d’ouverture, il suffit d’ajouter 3 options a l’affichage de la commande.
- orientation : avec un chiffre, pour les degrés (positif ou négatif) - défaut 0
- type : pour le type d’ouvrant : porte, fenetre, baie, garage - défaut porte
- taille : avec un chiffre, pour la longueur du trait - défaut 100
le nom peut être affiché ou non, avec la case « Afficher le nom »
<div style="padding:10px; min-width:30px; min-height:30px;" class="cmd cmd-widget container-fluid cursor #history#" data-type="info" data-subtype="binary" data-template="Ouvertures_2D" data-cmd_id="#id#" data-cmd_uid="#uid#" data-version="#version#" data-eqLogic_id="#eqLogic_id#">
<div class="title #hide_name#">
<div class="cmdName">#name_display#</div>
</div>
<div class="content-sm">
<div class="iconCmdBaie#id#">
<div class="design_baie#uid#" style="transform-origin: top left;"></div>
</div>
<div class="iconCmdPorte#id#">
<div class="design_porte#uid#" style="transform-origin: top left;"></div>
</div>
<div class="iconCmdFenetre#id#">
<div class="design_fenetre#uid# design_fenetre_l#uid#" style="transform-origin: top left; display:inline-block; width:50%;"></div>
<div class="design_fenetre#uid# design_fenetre_r#uid#" style="transform-origin: top right; display:inline-block; width:50%;"></div>
</div>
<div class="iconCmdGarage#id#">
<div class="design_garage#uid#"></div>
</div>
</div>
<div class="DEBUG#uid#"></div>
<style>
div.design_baie#uid#{
height:10px;
transition: all 1s ease-out;
}
div.design_baie_fermee#uid#{
background-color:var(--al-success-color);
}
div.design_baie_ouverte#uid#{
background-color:var(--al-danger-color);
border-radius: 2px;
animation-duration: .8s;
animation-name: clignoter;
animation-iteration-count: infinite;
transition: none;
}
div.design_porte#uid#{
height:10px;
transition: all 1s ease-out;
}
div.design_porte_fermee#uid#{
background-color:var(--al-success-color);
}
div.design_porte_ouverte#uid#{
background-color:var(--al-danger-color);
border-radius: 2px;
}
div.design_fenetre#uid#{
height:10px;
transition: all 1s ease-out;
}
div.design_fenetre_fermee#uid#{
background-color:var(--al-success-color);
}
div.design_fenetre_ouverte#uid#{
background-color:var(--al-danger-color);
border-radius: 2px;
}
div.design_garage#uid#{
height:10px;
transition: all 1s ease-out;
}
div.design_garage_ouvert#uid#{
background: repeating-linear-gradient(90deg, rgba(0,0,0,0), rgba(0,0,0,0) 20px, #f00 20px, #f00 40px);
}
div.design_garage_ferme#uid#{
background-color:var(--al-success-color);
}
@keyframes clignoter {
0% { opacity:1; }
40% {opacity:0; }
100% { opacity:1; }
}
</style>
<script>
jeedom.cmd.update['#id#'] =function(_options){
// type (porte, baie, fenetre, garage), orientation, taille a définir dans les options d'affichage de la commande
// Récupération des valeurs des paramètres
var orientation = is_numeric('#orientation#') ? parseFloat('#orientation#'):0;
var taille = is_numeric('#taille#') ? parseFloat('#taille#'):100;
var type = ('#type#' !='#'+'type#') ? "#type#":"porte";
var cmd = $('.cmd[data-cmd_id=#id#]');
//$('.cmd[data-cmd_uid=#uid#] .DEBUG#uid#').text('orientation:'+orientation+', taille:'+taille+', type:'+type);
cmd.attr('title','Date de valeur : '+_options.valueDate+'<br/>Date de collecte : '+_options.collectDate)
if ( type == "baie" ) {
$('.cmd[data-cmd_uid=#uid#] .iconCmdPorte#id#').hide();
$('.cmd[data-cmd_uid=#uid#] .iconCmdFenetre#id#').hide();
$('.cmd[data-cmd_uid=#uid#] .iconCmdGarage#id#').hide();
$('.cmd[data-cmd_uid=#uid#] .design_baie#uid#').css('width',''+taille+'px');
if (_options.display_value == '1') {
$('.cmd[data-cmd_uid=#uid#] .design_baie#uid#').removeClass('design_baie_fermee#uid#').addClass('design_baie_ouverte#uid#');
$('.cmd[data-cmd_uid=#uid#] .design_baie#uid#').css('transform','rotate('+orientation+'deg)');
}else {
$('.cmd[data-cmd_uid=#uid#] .design_baie#uid#').removeClass('design_baie_ouverte#uid#').addClass('design_baie_fermee#uid#');
$('.cmd[data-cmd_uid=#uid#] .design_baie#uid#').css('transform','rotate('+orientation+'deg)');
}
}
if ( type == "porte" ) {
$('.cmd[data-cmd_uid=#uid#] .iconCmdBaie#id#').hide();
$('.cmd[data-cmd_uid=#uid#] .iconCmdFenetre#id#').hide();
$('.cmd[data-cmd_uid=#uid#] .iconCmdGarage#id#').hide();
$('.cmd[data-cmd_uid=#uid#] .design_porte#uid#').css('width',''+taille+'px');
if (_options.display_value == '1') {
$('.cmd[data-cmd_uid=#uid#] .design_porte#uid#').removeClass('design_porte_fermee#uid#').addClass('design_porte_ouverte#uid#').css('transform','rotate(-45deg)');
$('.cmd[data-cmd_uid=#uid#] .iconCmdPorte#id#').css('transform','rotate('+orientation+'deg)');
}else {
$('.cmd[data-cmd_uid=#uid#] .design_porte#uid#').removeClass('design_porte_ouverte#uid#').addClass('design_porte_fermee#uid#').css('transform','rotate(0deg)');
$('.cmd[data-cmd_uid=#uid#] .iconCmdPorte#id#').css('transform','rotate('+orientation+'deg)');
}
}
if ( type == "fenetre" ) {
$('.cmd[data-cmd_uid=#uid#] .iconCmdBaie#id#').hide();
$('.cmd[data-cmd_uid=#uid#] .iconCmdPorte#id#').hide();
$('.cmd[data-cmd_uid=#uid#] .iconCmdGarage#id#').hide();
$('.cmd[data-cmd_uid=#uid#] .design_fenetre#uid#').css('width',''+taille+'px');
if (_options.display_value == '1') {
$('.cmd[data-cmd_uid=#uid#] .design_fenetre_l#uid#').removeClass('design_fenetre_fermee#uid#').addClass('design_fenetre_ouverte#uid#').css('transform','rotate(-45deg)');
$('.cmd[data-cmd_uid=#uid#] .design_fenetre_r#uid#').removeClass('design_fenetre_fermee#uid#').addClass('design_fenetre_ouverte#uid#').css('transform','rotate(45deg)');
$('.cmd[data-cmd_uid=#uid#] .iconCmdFenetre#id#').css('transform','rotate('+orientation+'deg)');
}else {
$('.cmd[data-cmd_uid=#uid#] .design_fenetre#uid#').removeClass('design_fenetre_ouverte#uid#').addClass('design_fenetre_fermee#uid#').css('transform','rotate(0deg)');
$('.cmd[data-cmd_uid=#uid#] .iconCmdFenetre#id#').css('transform','rotate('+orientation+'deg)');
}
}
if ( type == "garage" ) {
$('.cmd[data-cmd_uid=#uid#] .iconCmdPorte#id#').hide();
$('.cmd[data-cmd_uid=#uid#] .iconCmdFenetre#id#').hide();
$('.cmd[data-cmd_uid=#uid#] .iconCmdBaie#id#').hide();
$('.cmd[data-cmd_uid=#uid#] .design_garage#uid#').css('width',''+taille+'px');
if (_options.display_value == '1') {
$('.cmd[data-cmd_uid=#uid#] .design_garage#uid#').removeClass('design_garage_ferme#uid#').addClass('design_garage_ouvert#uid#');
}else {
$('.cmd[data-cmd_uid=#uid#] .design_garage#uid#').removeClass('design_garage_ouvert#uid#').addClass('design_garage_ferme#uid#');
}
$('.cmd[data-cmd_uid=#uid#] .design_garage#uid#').css('transform','rotate('+orientation+'deg)');
}
}
jeedom.cmd.update['#id#']({display_value:'#state#',valueDate:'#valueDate#',collectDate:'#collectDate#',alertLevel:'#alertLevel#'});
</script>
</div>
Le résultat est comme les widgets originaux mais plus simple à utiliser et administrer dans un seul
si il y a des bugs ou des erreurs, n’hésitez pas à corriger