Refresh de la tuile sur une Cmd action color

Bonsoir,

V4.4.19 - Deb11.11 - Rpi4B

"Bug"

A chaque événement sur ma commande, l’eqLogic est refresh ( refreshWidget() ) sur le dashboard.

Config. Plugin

Sur le plugin powerFlow, dans une version de dev, j’utilise un template custom ( seulement pour la version $_version='scenario' ) sur une commande action / message qui n’est liée a aucune info.

Dans ce template j’ai 2 input,

  • 1 x data-l2key="title" de type select
  • 1 x data-l2key="color" de type text (identique template color du Core)

Je précise que je n’ai aucun soucis a utilisé ce template dans un scénario, aucune erreur js…

Debug.

Lors d’une action sur la commande, execCmd de la class cmd est lancée avec les options title et color, j’atteins donc cette partie du Core :

Et plus précisement le save() de la ligne 1364 puisque j’ai bien une couleur.

Ensuite dans le save() j’atteins cette partie :

donc pour une commande action, le Core supprime ces 2 infos avec setDisplay a null ,
C’est ici que le soucis ce présente, car :

if ($this->getDisplay($_key) !== $_value) {
donc pour mon cas :
if ($this->getDisplay('showStatsOnmobile') !== 'null') {
et comme getDisplay('showStatsOnmobile') renvoie un valeur vide :
if ('' !== 'null') {

Pour conclure, la condition est toujours vrai ( true ), ce qui provoque le refresh de l’eqLogic ( $eqLogic->refreshWidget() )


Je sais pas si c’est moi qui omet un paramètre essentiel, ou alors un bug dans le core.

Merci.
Bonne soirée.

Salut,
Si je comprend tout bien c’est mis a null mais en bdd c’est ‹  › (vide) donc il passe en permanance dans le test et rafraichis le truc tout le temps ?

Bonjour @Loic ,

Tu as tout bien compris :wink:

Après je pense que d’ajouter un défaut dans le getDisplay devrais suffir :

public function setDisplay($_key, $_value) {
		if ($this->getDisplay($_key, null) !== $_value) { // modif
			$this->_needRefreshWidget = true;
			$this->_changed = true;
		}
		$this->display = utils::setJsonAttr($this->display, $_key, $_value);
		return $this;
	}

En faite plus précisément, la value en bdd n’est pas vide, mais n’existe pas.

Effectivement ta correction est la bonne je vais l’ajouter en alpha.

1 « J'aime »