Ajouter du code front dans le script du UserFilter

Bonjour,

J’aimerai ajouter un contrôle front sur le userFilter en invoquant une méthode au changement de la date (de début ou de fin).

Pouvez-vous me confirmer que le code est à rajouter dans la classe UserFilters_SCRIPT après changement de module (initialement dans Application) ?

Quel hook est à utiliser pour insérer le code ? (Actuellement il n’y a qu’une méthode pour modifier les dates en fonction du bouton sélectionné).

Merci pour votre aide.

Cordialement

Oui si vous ajoutez du code front (hook sur l’objet UserFilters) il faudra mettre cette ressource dans votre module, tout comme les attributs ajoutés à cet objet ou modifier le template du formulaire…

Le code front est comme tous les autres objets à mettre dans le hook form.onload pour ajouter un handler sur le change du champ.

On a peu de retour d’expérience de surcharge de cet objet, j’imagine qu’il y aura des limites car Simplicité s’en sert également pour faire ses contrôles. Si votre besoin est trop spécifique, il vous faudra écrire votre propre popup qui accède à la objet UserFilter en back.

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

exemple de code front à mettre dans une ressource SCRIPT de l’objet :

(function(ui) {
    // Is it the responsive UI ?
    if (!ui) return;
    // Ajax services with current grant, menu, texts...
    var app = ui.getAjax();
    // Register the hooks for myObject
    Simplicite.UI.hooks.myObject = function(o, cbk) {
        try {
            // In the example hooks will be available on main instance only
            if (o.isMainInstance()) {
                console.log("myObject hook loading...");
                // object UI parameters = clone of the globals properties
                var p = o.locals.ui;
                // When object form is loaded in the container ctn
                p.form.onload = function(ctn, obj) {
                    // Alert on big amount
                    var amount = ui.getUIField(ctn, obj, "myAmount"),
                        check = ui.getUIField(ctn, obj, "myCheck");
                    if (parseInt(amount.ui.val()) > 5000) {
                        // Simple alert
                        ui.alert(app.T("MESSAGE_TO_CHECK_THE_AMOUNT"));
                        // Uncheck on screen
                        check.ui.val(false);
                    }
                    // Bind change on a field to change one other field
                    var field = ui.getUIField(ctn, obj, "myField");
                    field.ui.on("change", function() {
                        var v = field.ui.val(),
                            f = ui.getUIField(ctn, obj, "myOtherField");
                        // Change properties
                        f.ui.visible(v ? Simplicite.VIS_HIDDEN: Simplicite.VIS_BOTH);
                        f.ui.updatable(f.required && v=="123");
                    });
                };
            }
        }
        catch(e) {
            // Thank you to isolate your scripts
            app.error("Error in Simplicite.UI.hooks.myObject: "+e.message);
        }
        finally {
            // Required callback when hooks are loaded
            cbk && cbk();
        }
    };
})(window.$ui);