yana-server
yana-server copied to clipboard
rafraichissement widget sans actualisation de la page web
Bonjour Actuellement quand on se connecte sur la page web de yana, les widgets s’actualisent au chargement. Est-ce possible de faire une mise à jour interactive des widgets sans recharger totalement la page ?
J’ai essayé de modifier ton code mais malheureusement ça dépasse de loin mes compétences
Merci d’avance
Bonjour, J'ai remarqué la même chose, et une solution m'interresse pour le plugin door v2, et d'autre plugin en cours de dev.
Pour un seul widget ou pour l'ensemble ? Depuis php ça sera tendu, mais je vais voir si je peux proposer une solution simple via js type Widget.refresh("uid-du-widget"); ça vous irai ?
L idée c'est pour un widget. J'ai chercher côté jquery mais ca ne marche pas. J'ai aussi chercher pour faire un refresh div. Sans succès.
-----Message d'origine----- De : "Idleman" [email protected] Envoyé : 11/03/2016 07:55 À : "ldleman/yana-server" [email protected] Cc : "FOURNIER Ghislain" [email protected] Objet : Re: [yana-server] rafraichissement widget sans actualisation de lapage web (#191)
Pour un seul widget ou pour l'ensemble ? Depuis php ça sera tendu, mais je vais voir si je peux proposer une solution simple via js type Widget.refresh("uid-du-widget"); ça vous irai ? — Reply to this email directly or view it on GitHub.
Si ce n'est pas trop compliqué, un rafraîchissement de l’ensemble des widgets affichés sera pour moi la meilleure solution.
Merci
Il ne faut pas non plus que ça alourdisse l' interface. Mais c'est sur qu une Dashboard dynamique serai top
-----Message d'origine----- De : "moebius911" [email protected] Envoyé : 11/03/2016 14:30 À : "ldleman/yana-server" [email protected] Cc : "FOURNIER Ghislain" [email protected] Objet : Re: [yana-server] rafraichissement widget sans actualisation de lapage web (#191)
Si ce n'est pas trop compliqué, un rafraîchissement de l’ensemble des widgets affichés sera pour moi la meilleure solution. Merci — Reply to this email directly or view it on GitHub.
Bonjour, Je n'arrive pas a trouver une fonction qui refresh l’état du widget automatiquement. j'ai deja une approche qui indique le changement d'etat, et qui affiche l'etat au chargement de la page. `$content = '
<!-- CSS -->
<style>
.door_pane {
background: none repeat scroll 0 0 #50597b;
list-style-type: none;
margin: 0;
cursor:default;
width: 100%;
}
.door_pane li {
background: none repeat scroll 0 0 #50597b;
display: inline-block;
margin: 0 1px 0 0;
padding: 10px;
cursor:default;
vertical-align: top;
}
.door_pane li h2 {
color: #ffffff;
font-size: 16px;
margin: 0 0 5px;
padding: 0;
cursor:default;
}
.door_pane li h1 {
color: #B6BED9;
font-size: 14px;
margin: 0 0 1px;
padding: 0;
cursor:default;
}
.door_pane li.door-case{
background-color: #373f59;
cursor:pointer;
width: 55px;
}
.door-case i{
color:#8b95b8;
font-size:50px;
transition: all 0.2s ease-in-out;
}
.door-case.active i{
color:#ffffff;
text-shadow: 0 0 10px #ffffff;
}
.door-case.active i.fa-lightbulb-o{
color:#FFED00;
text-shadow: 0 0 10px #ffdc00;
}
.door-case.active i.fa-power-off{
color:#BDFF00;
text-shadow: 0 0 10px #4fff00;
}
.door-case.active i.fa-flash{
color:#FFFFFF;
text-shadow: 0 0 10px #00FFD9;
}
.door-case.active i.fa-gears{
color:#FFFFFF;
text-shadow: 0 0 10px #FF00E4;
}
</style>
<!-- CSS -->
<ul class="door_pane">
<li class="door-case '.($door->getState_io($door->pinCaptor)?'active':'inactive').'" data-id="'.$door->id.'" onclick="plugin_door_change(this);" style="text-align:center;">
<i title="On/Off" class="'.$door->icon.'"></i>
</li>
<li>
<h2>'.$door->description.($door->pulse!=0?' - Pulse '.$door->pulse.'µs':'').'</h2>
<h1><div id="'.etat.$door->id.'">Etat : <?php plugin_door_change(this) ?></div></h1>
<h1>PIN Relais : '.$door->pinRelay.' - PIN Capteur : '.$door->pinCaptor.'</h1>
</li>
</ul>
<!-- JS -->
<script type="text/javascript">
function plugin_door_change(element){
var state = $(element).hasClass(\'active\') ? 0 : 1 ;
$("#'.etat.$door->id.'").text("Etat : "+ state);
$.action(
{
action : \'door_manual_change_state\',
engine: $(element).data("id"),
state: state
},
function(response){
$(element).toggleClass("active");
}
);
}
</script>
';
}`
Normalement comme le changement d’état n’apparait pas toutes les secondes, est-ce que ça ne serai pas plus simple de rafraichir le Dashboard entier quand tu détecte un changement d’état ?
Ce n’est pas le top, mais ça serrai quand même une grande avancée ?
c'est pas le top mais tu peut ajouter cette modification à la fin du fichier index.php de yana (ligne 18)
<head>
<META HTTP-EQUIV="Refresh" CONTENT="60; URL=<?php $_SERVER['SERVER_NAME'] ?> <?php $_SERVER['REQUEST_URI'] ?> ">
</head>
Ça te rafraîchira le Dashboard toutes les minutes.
J’ai fait ça un peu trop rapidement Ça t’actualise tous les modules de yana.
Pour actualiser uniquement l’accueil voici le nouveau code
<?php
if($_SERVER['REQUEST_URI'] == '/yana-server/index.php'){
?>
<head>
<META HTTP-EQUIV="Refresh" CONTENT="60; URL=<?php $_SERVER['SERVER_NAME'] ?> <?php $_SERVER['REQUEST_URI'] ?> ">
<head>
<?php
}
?>
if($_SERVER['REQUEST_URI'] == '/yana-server/index.php?init=1'){
?>
<head>
<META HTTP-EQUIV="Refresh" CONTENT="60; URL=<?php $_SERVER['SERVER_NAME'] ?> <?php $_SERVER['REQUEST_URI'] ?> ">
<head>
<?php
}
?>
Je pense que la meilleur solution serait un polling sur chaque widget, avec la possibilité de choisir dans la configuration, la fréquence. et un innerHTML.replace pour modifier l'etat.