Gestion des widgets des plugins

Il existe plusieurs possibilités pour faire des widgets personnalisés pour les plugins :

Fonction toHtml

Là-dessus, rien de spécial, la fonction toHtml doit retourner le widget en html, vous avez un exemple

L’important est surtout les 1ères lignes :

$replace = $this->preToHtml($_version);
if (!is_array($replace)) {
	return $replace;
}

La fonction preToHtml renvoi :

Le système de template

Le système de template de widget dans le code est en fait exactement le même que celui sur la page Outils -> Widget de jeedom.

Voici un exemple :

public static function templateWidget(){
	$return = array('info' => array('string' => array()));
	$return['info']['string']['state'] = array(
		'template' => 'tmplmultistate',
		'test' => array(
			array('operation' => '#value# == 2','state' => '<i class="icon maison-vacuum6"></i>'),
			array('operation' => '#value# == 3','state' => '<i class="fa fa-pause"></i>'),
			array('operation' => '#value# > 3 || #value# < 2','state' => '<i class="fa fa-home"></i>')
		)
	);
	return $return;
}

Ici, on va créer un nouveau widget basé sur le template “tmplmultistate” (vous avez la liste des templates ici c’est ceux avec tmpl dans leur nom), pour une commande de type info et sous type string.

IMPORTANT

Chaque template est pour un type et sous-type donnés, il faut donc bien vérifier que le template que vous voulez utiliser existe pour le type et sous-type

Ensuite, vu que c’est un template avec plusieurs états, il faut définir les icônes en fonction de l’état. Ça se fait dans la partie test du tableau.

Exemple : pour le premier test, on dit si la valeur de la commande vaut 2 alors il faudra remplacer le tag #_state_# (dans le code html du template) par

Un autre exemple basé sur un autre template pourrait être :

public static function templateWidget(){
	$return = array('info' => array('string' => array()));
	$return['info']['binary']['toto'] = array(
		'template' => 'tmplicon',
		'replace' => array(
			'#_icon_on_#' => '<i class=\'icon_green icon jeedom-porte-ferme\'></i>',
			'#_icon_off_#' => '<i class=\'icon_red icon jeedom-porte-ouverte\'></i>'
			)
	);
	return $return;
}

Ici, je crée un widget toto basé sur le template “tmplicon” en type info et sous-type binaire. Quand il vaut 1 alors l’icône sera et quand il vaut 0, ça sera

TIPS

Petite astuce, vous pouvez à la place d’une icône mettre une balise image (attention au chemin)

Ensuite, pour utiliser votre widget :

$cmd->setTemplate('dashboard','neato::state');
$cmd->setTemplate('mobile','neato::state');

C’est comme pour un widget normal sauf pour le nom du widget qui est sous la forme id_plugin::nom_widget. Pour le 2eme exemple, ça sera id_plugin::toto

Nous utilisons des cookies pour vous garantir la meilleure expérience sur notre site web. Si vous continuez à utiliser ce site, nous supposerons que vous en êtes satisfait.