Hello,
tu peut tester ce code :
<div class="cmd cmd-widget #history#" data-type="info" data-subtype="binary" data-cmd_id="#id#" data-cmd_uid="#uid#" data-version="#version#" data-eqLogic_id="#eqLogic_id#">
<!-- ################ DATACENTER ################
Widget name : cmd.info.binary.datacenter
Author : Phpvarious
Inspiration : https://codepen.io/mi2oon/pen/ZXWZdV
Last Uptade : 2024/08/15 18h20 - Phpvarious - (ajout latence)
-->
<div class="content-sm">
<div class="server-#uid# #history#" data-type="info">
<div class="server-icon-#uid#">#name_display#</div>
<ul class="server-details-#uid#">
<li><span>{{Hostname}}:</span><span class="data-#uid#">#name#</span></li>
<li><span>{{Status}}:</span><span class="data-#uid# signal-#uid#"></span></li>
<li><span>{{Address}}:</span><span class="data-#uid# ip-#uid#">#ip#</span></li>
<li><span>{{Latency}}:</span><span class="data-#uid# latency-#uid#">ffff</span></li>
<li><span>{{Time}}:</span><span class="data-#uid# timeCmd" data-type="info"></span></li>
</ul>
</div>
</div>
<template>
<div>time : duration|date ({{Affiche durée ou date de la valeur}})</div>
<div>blink : mettre 0 pour désactivé l'effet de clignotement.</div>
<div>width : Largeur du widget (mini 200 | défaut : 300)</div>
<div>coloredIconOn : Colorer l'icone même si ONLINE.(Colorer : 1 | défaut : 0)</div>
<div>id_latency : Id de la latence à afficher.</div>
<div> --------------- IP ----------------</div>
<div>[ ! ] 2 possibilités de récupérer l'adresse ip à afficher sur le widget.</div>
<div>[ ! ] 'ip' est prioritaire sur 'id_ip'.</div>
<div> </div>
<div>id_ip : Id de l'adresse IP à afficher.</div>
<div>ip : Adresse IP à afficher. (Ex: 192.168.152.147)</div>
<div> --------------- TRADUCTIONS ----------------</div>
<div>trad_hostname : Remplacement du texte "hostname"</div>
<div>trad_status : Remplacement du texte "status"</div>
<div>trad_address : Remplacement du texte "address"</div>
<div>trad_latency : Remplacement du texte "latency"</div>
<div>trad_offline : Remplacement du texte "OFFLINE"</div>
<div>trad_online : Remplacement du texte "ONLINE"</div>
<div>trad_time : Remplacement du texte "Time"</div>
</template>
<script>
var offline_#uid# = 'OFFLINE'
var online_#uid# = 'ONLINE'
var ip_#uid# = '#ip#'
var latency_#uid# = '#id_latency#'
var latency_unit_#uid# = 'ms'
if (is_object(cmd = document.querySelector('.cmd[data-cmd_uid="#uid#"]'))) {
if ('#blink#' == '0') cmd.setAttribute('data-blink', 0)
else cmd.setAttribute('data-blink', 1)
if ('#coloredIconOn#' == '1') cmd.setAttribute('data-colorediconon', 1)
if(is_numeric('#id_latency#')){
jeedom.cmd.execute({
id : '#id_latency#',
async: false,
noCache: true,
error: function(error) {
console.log('| | ERREUR jeedom.cmd.execute(id_latency) !!!')
latency_#uid# = '#' + 'id_latency#'
},
success: function (value_latency) {
jeedom.cmd.byId({
id : '#id_latency#',
async: false,
noCache: true,
error: function(error) {
console.log('| | ERREUR jeedom.cmd.byId(id_latency) !!!')
},
success: function (latency_unit) {
latency_unit_#uid# = latency_unit.unite
}
})
latency_#uid# = value_latency + latency_unit_#uid#
jeedom.cmd.addUpdateFunction('#id_latency#', function(_options) {
if (is_object(cmd = document.querySelector('.cmd[data-cmd_uid="#uid#"]'))) {
if (_options.value != undefined)
{
cmd.querySelector('.latency-#uid#').innerHTML = _options.value + latency_unit_#uid#
}
}
})
}
})
}
cmd.querySelector('.latency-#uid#').innerHTML = latency_#uid#
if(is_numeric('#id_ip#') && '#ip#' == '#'+'ip#'){
jeedom.cmd.execute({
id : '#id_ip#',
async: false,
noCache: true,
error: function(error) {
console.log('| | ERREUR jeedom.cmd.execute(id_ip) !!!')
ip_#uid# = '#' + 'ip#'
},
success: function (cmdInfo) {
ip_#uid# = cmdInfo
}
})
}
cmd.querySelector('.ip-#uid#').innerHTML = ip_#uid#
if (ip_#uid# == '#' + 'ip#') cmd.querySelector('.server-details-#uid# li:nth-child(3)').style.display='none'
if (latency_#uid# == '#' + 'id_latency#') cmd.querySelector('.server-details-#uid# li:nth-child(4)').style.display='none'
if ('#time#' !== 'duration' && '#time#' !== 'date') cmd.querySelector('.server-details-#uid# li:nth-child(5)').style.display='none'
if ('#trad_hostname#' != '#' + 'trad_hostname#') cmd.querySelector('.server-details-#uid# li:first-child span:first-child').innerHTML = '#trad_hostname#' + ':'
if ('#trad_status#' != '#' + 'trad_status#') cmd.querySelector('.server-details-#uid# li:nth-child(2) span:first-child').innerHTML = '#trad_status#' + ':'
if ('#trad_address#' != '#' + 'trad_address#') cmd.querySelector('.server-details-#uid# li:nth-child(3) span:first-child').innerHTML = '#trad_address#' + ':'
if ('#trad_latency#' != '#' + 'trad_latency#') cmd.querySelector('.server-details-#uid# li:nth-child(4) span:first-child').innerHTML = '#trad_latency#' + ':'
if ('#trad_time#' != '#' + 'trad_time#') cmd.querySelector('.server-details-#uid# li:nth-child(5) span:first-child').innerHTML = '#trad_time#' + ':'
if ('#trad_offline#' != '#' + 'trad_offline#') offline_#uid# = '#trad_offline#'
if ('#trad_online#' != '#' + 'trad_online#') online_#uid# = '#trad_online#'
if (is_numeric('#width#')) document.documentElement.style.setProperty('--width-#uid#', '#width#px')
}
jeedom.cmd.addUpdateFunction('#id#', function(_options) {
if (is_object(cmd = document.querySelector('.cmd[data-cmd_uid="#uid#"]'))) {
cmd.querySelector('.content-sm').setAttribute('title', '{{Date de valeur}}: ' + _options.valueDate + '<br>{{Date de collecte}}: ' + _options.collectDate)
if ('#time#' == 'duration' || '#time#' == 'date') {
try {
jeedom.cmd.displayDuration(_options.valueDate, cmd.querySelector('.timeCmd'), '#time#')
} catch {
jeedom.cmd.displayDuration(_options.valueDate, $('.cmd[data-cmd_id=#id#]').find('.timeCmd'), '#time#')
console.log('displayDuration -> jQuery')
}
}
if (_options.display_value >= 1) {
cmd.setAttribute('data-state', 1)
cmd.querySelector('.signal-#uid#').innerHTML = online_#uid#
} else {
cmd.setAttribute('data-state', 0)
cmd.querySelector('.signal-#uid#').innerHTML = offline_#uid#
}
}
})
jeedom.cmd.refreshValue([{ cmd_id: '#id#', value: '#value#', display_value: '#state#', valueDate: '#valueDate#', collectDate: '#collectDate#', alertLevel: '#alertLevel#', unit: '#unite#' }])
</script>
<style>
:root{
--width-#uid#: 300px;
--defautColor-#uid#: #7e8794;
--cRgbAlert-#uid#: 210, 44, 50;
}
.content-sm-#uid# {
height: 70px !important;
min-height: 70px !important;
max-height: 93px !important;
display: table-cell;
vertical-align: middle !important;
width: 100%;
}
.server-#uid# {
display: flex;
align-items: center;
padding: 10px 0;
border: 1px solid var(--objectBkgd-color);
border-radius: 4px;
white-space: nowrap;
min-width: 200px;
width: var(--width-#uid#);
margin: 10px;
}
.server-icon-#uid# {
display: inline-block;
font-size: 2.5rem;
margin: 0 15px;
}
[data-coloredicons="1"] [data-colorediconon="1"][data-state="1"] .server-icon-#uid# {
color: var(--al-success-color);
}
.server-details-#uid# {
flex: 1;
display: block;
list-style: none;
margin: 0;
padding: 0;
}
.server-details-#uid# li {
display: block;
font-size: 1.2rem;
line-height: 1.5;
color: var(--defautColor-#uid#);
text-align: left;
}
.server-details-#uid# .data-#uid# {
display: block;
margin: -1.7rem 0 0 0;
padding: 0 1rem 0 0;
font-weight: 600;
text-align: right;
color: var(--link-color);
}
[data-coloredicons="1"] [data-state="0"] .server-#uid# {
border-color: #d22c32;
}
[data-coloredicons="1"] [data-state="0"][data-blink="1"] .server-#uid# {
-webkit-animation: alertblink-#uid# 2s ease-in-out infinite;
animation: alertblink-#uid# 2s ease-in-out infinite;
}
[data-coloredicons="1"] [data-state="0"] .server-#uid# .server-icon-#uid#, [data-coloredicons="1"] [data-state="0"] .server-#uid# .signal-#uid# {
color: var(--al-danger-color);
}
[data-coloredicons="1"] .server-details-#uid# .signal-#uid# { color: var(--al-success-color); }
.server-details-#uid# .signal-#uid#::before {
content: "";
display: inline-block;
width: 0.6rem;
height: 0.6rem;
background-color: currentColor;
border-radius: 50%;
margin-right: 0.5rem;
margin-top: -0.2rem;
vertical-align: middle;
}
.server-details-#uid# li:nth-child(3) .data-#uid#, .server-details-#uid# li:nth-child(4) .data-#uid#, .server-details-#uid# li:nth-child(5) .data-#uid# {
font-weight: normal;
color: var(--defautColor-#uid#);
}
[data-theme="core2019_Dark"] .server-#uid# {
background-color: rgba(69, 70, 72, 0.5);
}
[data-theme="core2019_Light"] .server-#uid# {
background-color: rgba(100, 100, 100, 0.1);
}
@keyframes alertblink-#uid# {
0% {
background: rgba(100, 100, 100, 0.1);
}
50% {
background: rgba(var(--cRgbAlert-#uid#), 0.2);
}
100% {
background: rgba(100, 100, 100, 0.1);
}
}
</style>
</div>