Pb de valarisation d'un attribut par contrainte dans le cas d'un update

Merci, donc le fonctionnement est bien normal :

  • La oldvalue = est celle de la base de données, la UI ne la modifie pas.
  • La value = celle saisie, qui déclenche un “change” => contrainte front

Donc forcement si vous revenez à la valeur en base, la contrainte ne se déclenche pas via votre expression qui compare la valeur à l’écran avec celle en base. Seul un “save” va actualiser la oldvalue cachée en Front.

Votre besoin est de créer un event “change” sur l’input, pas de comparer avec la valeur en base, donc il faut faire un javascript client (i.e. ressource SCRIPT sur l’objet).

cf https://docs.simplicite.io/documentation/04-ui/responsive.md

Exemple pour copier, rendre un champ visible ou ou modifiable en fonction d’un autre dans un formulaire une fois chargé :

(function(ui) {
    if (!ui) return;
    var app = ui.getAjax();
    Simplicite.UI.hooks.myObject = function(o, cbk) {
        try {
             var p = o.locals.ui;
             p.form.onload = function(ctn, obj) {
                 // Bind change on a field to change one other field
                 var field = ui.getUIField(ctn, obj, "myField");
                 field.ui.on("change", function() {
                     var f = ui.getUIField(ctn, obj, "myOtherField");
                     f.ui.val(field.ui.val()); // copy value
                     // f.ui.visible(v ? Simplicite.VIS_HIDDEN: Simplicite.VIS_BOTH);
                     // f.ui.updatable(f.required && v=="123");
                 });
             };
        }
        catch(e) {
            app.error("Error in Simplicite.UI.hooks.myObject: "+e.message);
        }
        finally {
            // Required callback when hooks are loaded
            cbk && cbk();
        }
    };
})(window.$ui);