Bonjour à tous,
Pour faire suite à cette discussion Faire une interface WAF pour un programmateur d'arrosage
j’ai besoin, entre-autre, d’un widget qui permet de saisir une heure au format HH:MM et qui le retranscrit au format heures jeedom.
Je n’ai pas trouvé de tel widget tout fait, hormis un s’approchant, proposé par ajja17 que j’ai trouvé ici widget/input/clock at master · ajja17/widget · GitHub mais qui ne fonctionnais pas (comme je voulais)
Mes modestes compétences de dev m’ont permis de le modifier pour sortir un truc qui fonctionne (presque) comme je voudrais : (sur Jeedom 4.4.19 / Debian 12)
<div class="cmd cmd-widget" data-type="action" data-subtype="slider" data-cmd_id="#id#" data-cmd_uid="#uid#" data-version="#version#">
<div class="input-group">
<input id="input#id#" class="form-control input-sm value execute" value="" type="time" data-cmd_id="#id#" required >
<style>
[data-cmd_id="#id#"].form-control:not(.btn):not(.expressionAttr), [data-cmd_id="#id#"] input:not(.btn):not(.dial):not([type="radio"]):not([type="image"]):not(.expressionAttr):not(.knob):not([type="checkbox"]), textarea:not(.expressionAttr) {
/*background-color:#e4e2c2!important;
color:red!important;*/
}
[data-cmd_id="#id#"].value {
/*border-radius: 12px!important;*/
height: 30px!important;
min-height: 30px!important;
max-height: 30px!important;
font-size : 20px!important;
font-weight: Bold!important;
/*background-color:#e4e2c2!important;*/
text-align: right!important;
}
</style>
</div>
<script>
jeedom.cmd.update['#id#'] = function(_options){
if (_options.display_value!="") {
let theHour = Math.trunc(_options.display_value/100);
let theMin = _options.display_value%100;
let theStr = "";
if (theHour < 10) {
theStr = "0";
}
theStr += theHour.toString() + ":";
if (theMin < 10) {
theStr += "0";
}
theStr += theMin.toString();
$('#input#id#').val(theStr);
} else {
$('#input#id#').val("");
}
if( /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent) ) {
$('.cmd[data-cmd_uid=#uid#] .execute').on("change", function () {
jeedom.cmd.execute({id:'#id#', value: {slider: $('.cmd[data-cmd_uid=#uid#] .value').val().replace(":", "")}});
});
} else {
$('.cmd[data-cmd_uid=#uid#]:last .execute').keypress(function( event ) {
if(event.which == 13) {
jeedom.cmd.execute({id:'#id#', value: {slider: $('.cmd[data-cmd_uid=#uid#] .value').val().replace(":", "")}});
}
});
}
}
jeedom.cmd.update['#id#']({display_value:'#state#',valueDate:'#valueDate#',collectDate:'#collectDate#',alertLevel:'#alertLevel#'});
</script>
</div>
J’aimerais savoir s’il y a un moyen que la validation se fasse quand le contrôle perd le focus à la place, ou en plus, de la validation par la touche entrée du clavier ?
Merci d’avance.