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.
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);