Simplicité 4.0 - page_loaded

Bonjour,
La fonction javascript page_loaded ne s’exécute pas avec la disposition responsive.
Cela fonctionne avec la disposition de base.

L’UI responsive a ses propres hooks et travaille exclusivement dans un namespace Simplicite.UI.
Les fonctions globales (telles que window.page_loaded, window.getField,window. getTop…) sont désormais à proscrire pour le front moderne.

Il n’y a aucune chance que votre script page_loaded fonctionne sur la nouvelle IHM front qui a un tout autre logique one-page = sans iframe centrale

La documentation sur les hooks front est en cours, on peut agir sur le onload du site ou sur chaque container chargé (c.a.d par objet liste, form… on aura un onbeforeload / onload / onunload et beaucoup d’autres paramètres).

L’objectif étant de faire du low-code :

  • il est préférable d’utiliser les contraintes car elles peuvent désormais être exécutées sur le front responsive V4 (pour masquer un champ, une liste, champ non modifiable, charger une liste de valeurs, forcer la valeur d’un champ…)
  • en utilisant une syntaxe compatible en back et front (exemple : [VALUE:champ]==“2” et non pas obj.getFieldValue(“champ”).equals(“2”) qui ne marchera qu’en rhino côté back

Quelle est votre besoin Front ?

Merci pour votre réponse.

Mon besoin est le suivant :
Je veux masquer / afficher des attributs en fonction de la valeur d’un autre attribut.
Sur les versions précédentes, j’utilisais le page_loaded() et _changed() associé à du Jquery pour le faire.

C’est typiquement un cas d’usage pour les contraintes avec Effet = “Front-end”.
La propriété “visible” est bien interprétée par les 2 IHMs v4 (ce n’est pas le cas pour les autres props qui ne fonctionnent que sur la nouvelle UI entièrement fabriquée dynamiquement par le navigateur).

Exemple de paramétrage :

Une précision importante:

La capacité de la UI legacy à interpreter les expressions coté client est beaucoup plus limitée que celle de la UI responsive.

Typiquement si on écrit [VALUE:myField] == "toto" ça marchera sur les 2 UIs alors que si on écrit [FIELD:myField].getValue() == "toto" ça ne marchera pas sur la UI legacy.