Arrondie valeur - uniquement sur l'affichage

Bonjour

je cherche sur un plugin a arrondir la valeur affichée à 2 digit, mais uniquement sur l’affichage, je ne peux pas utiliser ‹ calcul et arrondi › car ca affecte aussi la valeur en base, et ca il ne faut surtout pas, c’est que pour l’affichage du widget que je voudrais.
Si un dev c’est le faire en code, je suis preneur aussi

merci pour votre aide

Bonjour,

Fait un widget

salut

a donc pas le choix, je vais regarder alors

merci

Entre la commande info et ce que tu vois à l’écran à l’affichage c’est le widget donc oui il n’y a que là que tu pourras arrondir la valeur

Yop

si concretement je veux afficher 123 au lieu de la valeur

ce bout de code ne fonctionne pas, tu aurais une idée ?

public static function templateWidget(){
		$return = array('info' => array('string' => array()));
		$return['info']['numeric']['consumptionTotal'] = array(
			'template' => 'tile',
			'replace' => array(
				'_options.value' => '123',
				)

		);
		return $return;
	}
1 « J'aime »

je ne comprend pas où se trouve se code, qui appelle cette fonction, quand…

1 « J'aime »

j’essaye de suivre le tuto de la doc

https://doc.jeedom.com/fr_FR/dev/widget_plugin

trouvé

public static function templateWidget(){
		$return = array('info' => array('string' => array()));
		$return['info']['numeric']['consumptionTotal'] = array(
			'template' => 'tile',
			'replace' => array(
				'#state#' => '123',
				)
		);
		return $return;
	}

désormais je cherche comment arrondir la valeur a 2 digit
j’ai tenté avec du php et du js mais ca affiche le bout de code

public static function templateWidget(){
		$return = array('info' => array('string' => array()));
		$return['info']['numeric']['consumptionTotal'] = array(
			'template' => 'tile',
			'replace' => array(
				'#state#' => '#state#.toFixed(2)',
				)
		);
		return $return;
	}

et

public static function templateWidget(){
		$return = array('info' => array('string' => array()));
		$return['info']['numeric']['consumptionTotal'] = array(
			'template' => 'tile',
			'replace' => array(
				'#state#' => 'round(#state#,2)',
				)
		);
		return $return;
	}

Donc c’est dans un plugin?

Si oui alors tu n’es pas obligé de faire un widget.

Poster dans la catégorie « utilisation du core » alors que c’est sur le dev d’un plugin n’aide pas à la compréhension.

Sur ton eqlogic (ou dans la class cmd je ne suis plus sur) tu peux avoir une fonction « formatvalue » de memoire (plus certain du nom) qui permet de formater une valeur pour l’affichage.
Je l’utilise lorsqu’il y a une heure ou une durée en seconde utile dans les scénario mais à l’affichage on préfère avoir une info lisible par un humain.

Si c’est bien le besoin je peux donner un exemple demain

Oups , zut , je vais regarder pour changer ça …

Re

Je suis preneur

Bonsoir,

Il me semble qu’il faut créer une fonction formatValueWidget() dans la class cmd du plugin.
Lors d’un event ou d’un toHtml cette fonction sera appeler :

https://github.com/jeedom/core/blob/V4-stable/core/class/cmd.class.php#L1719

Alors j’ai déjà cette fonction

Ça marche lors du premier affiche du widget
Mais lorsque la valeurs se refresh ( sans refresh de la page ) , la fonction ne semble pas être rappelé, car je me retrouve avec 12 digit !

Oui je voit aussi, dans le core après l’appel au formatValueWidget() dans la fonction event il y a une autre fonction qui écrase le $display_value si le Subtype est numérique, sauf que cette autre fonction utilise $value ! :thinking:

https://github.com/jeedom/core/blob/V4-stable/core/class/cmd.class.php#L1728

Si tu as l’occasion de tester en modifiant le Core a la ligne 1729 : remplace $value par $display_value normalement sa devrait fonctionner au refresh.

Ok , je vais tester ça , et si ça marche il faudra alors faire un pull request sur le core

1 « J'aime »

Hello,
Tu as eu le temps de tester la modif ?

Bon Loïc veut pas, pourtant j’ai testé et c’est OK, mais ca peut mettre le basard selon lui .
ce que je comprend pas c’est qu’on appelle cette même fonction pour l’affichage initial du widget… bref je comprend pas trop

de toute façon en attendant j’ai trouvé une autre façon de faire, bcp bcp pcpplus lourde ,mais fonctionnelle quand meme :smiley: (je stock les valeur en config ,et j’arrondi et pousse en commande)

Plutôt que en config, tu peut les mettre dans le cache, c’est moins lourd et moins consommateur :sweat_smile:

1 « J'aime »

Oui ton PR peut poser soucis dans certain cas. Faut bien comprendre que ca m’amuse pas de refuser les PR mais si il marche pas c’est pas toi qu’on vient voir mais moi…

Donc la pour ton soucis il faut que le widget gere lui meme la notion d’arrondit

1 « J'aime »