Bonjour à tous, j’ai un souci d’affichage pour un de mes plugins entre un design et le dashboard, est ce qu’il est possible de savoir l’origine de l’appel de la fonction toHtml? Pour résumer, lorsque j’affiche l’équipement du plugin sur un design au premier affichage l’équipement occupe bien la zone définie dans le design mais au rafraichissemnt de l’équipement (pas de la page) là il reprend la taille qu’il occupe sur le dashboard. J’ai trouvé la solution de mettre replace['#width#'] = '100%'; et replace['#height#'] = '100%'; mais là c’est pour le dashboard que ça ne va plus.
que tu appelles toHtml depuis un design ou depuis le dashboard c’est toujours la version ‹ dashboard › qui est utilisée (ou ‹ mobile › bien sûr).
Pour essayer d’être plus clair, si je pose l’équipement sur le dashboard et que re règle sa zone d’affichage sur largeur 500 et hauteur 500 par exemple. Je pose aussi cet équipement sur un design mais cette fois en 800 * 600 par exemple. Au premier affichage l’équipement sur le design occupe bien 800600 mais si j’utilise le refresh alors l’équipement va occuper une zone de 500500 dans la zone 800*600 car le refresh exécute $this->refreshWidget(); pour mettre à jour et en conséquence dans le remplace on retrouve les valeurs du display du dashboard: replace['#width#'] = '500px'; et replace['#height#'] = '500px';
Pour illustrer, ci dessous le desgn à 800*600 au 1er chagement:
Ça remonte mais lors du développement de solcast j’avais du me poser des questions autour de ça aussi.
J’avais fouillé dans le code et de mémoire autant on a un distingo pour savoir si on est sur un mobile, autant il me semble bien que j’avais trouvé que la distinction entre dashboard et design avait été shunté.
Autrement dit, un jour il a dû être prévu de savoir si on appelait depuis dashboard ou design, autant maintenant ce n’est plus le cas
Oui c’est bien le problème auquel je suis confronté. Je tourne en rond… En fait lorsque tu refresh que ce soit depuis un design ou le dashboard ça rafraîchi les 2 en même temps donc si tu appliques une option qui fonctionne pour l’un ça casse l’autre…
oui pour la tuile il n’y a pas de problème si je laisse style="width:#width# !important; height:#height# !important; mais alors la taille sur le design reprend celle du dashboard au premier refresh mais c’est peut être un comportement normal ou voulu…
Comme dit par @Bison il y a sans doute eu un jour l’intention de faire une différence dans les version mais maintenant tout est ramené à ‹ dashboard ›
public static function versionAlias($_version, $_lightMode = true) {
if ($_version == 'mview') {
return 'mobile';
}
if ($_version == 'dview' || $_version == 'dplan' || $_version == 'plan' || $_version == 'view') {
return 'dashboard';
}
return $_version;
}
J’ai un peu de mal a comprendre width:#width# !important; height:#height# !important; sont de toute façon obligatoire dans le div du template, sinon tu risque d’avoir des surprise sur le dashboard et il me semble que le !important n’est pas initialisé donc pas besoin.
Dans ton toHtml, est-ce que tu fais un replace de #width# et #height# ?
Je suis autodidacte donc certaines notions dont tu parles ne me causent pas beaucoup…
non parce qu’ils sont déjà dans le preToHtml (voir log ci dessous)
0041|[#height#] => 494px
0042|[#width#] => 506px
Je suis parti sur le principe d’afficher un template sans fixer de valeur c’est sans doute une erreur car dans ce cas là, d’après ce que je déduis de mes constatations, seul la taille du dashboard que l’on trouve donc dans le preToHtml est prise en compte. Je vais sans doute devoir passer par une commande template en y appliquant un cmd.info… pour m’en sortir mais je ne sais pas trop par quel bout le prendre.
C’est pas un erreur, dans ton template il faut simplement avoir la présence de width:#width#; height:#height#; #style#;
C’est vrai si tu affiche le dashboard, par contre en design (plan) c’est le script js qui vient remplacer les tailles , ces tailles tu les trouveras pas dans la config de l’équipement car elles sont save dans la base « plan » :
tu risque de casser l’affichage, c’est une div qui est « gérée » par le core, si tu as des custom a faire, il faudrait plutot le faire dans un « sous-div ».
D’ailleur le top et left doivent déja casser la position en design je pense, si tu déplace la tuile et que tu refresh elle doit revenir en haut a gauche.
petite précision, si dans ma fonction toHtml je remplace les valeur des #width# et #height# du preToHtml par ‹ 100% › dans replace là ça fonctionne et ça redessine bien les graph du design sur toute la place disponible. Par contre ça rend l’affichage de l’équipement sur le dashboard complétement hs