Appliquer une contrainte uniquement si le champ est modifiable

4.0
Tags: #<Tag:0x00007fc9f4f15048>
Appliquer une contrainte uniquement si le champ est modifiable
0

#1

Bonjour,

Nous avons un écran « ImmoHabilitationDocument» dans lequel les lignes sont accessibles en Read Only ou Read Write suivant le user connecté. Ce contrôle se fait dans le hook isUpdateEnable.

Je voudrais ajouter une contrainte sur cet écran pour rendre le champ « habDocumentUserIdSaisie » modifiable/non modifiable en me basant sur la valeur d’un autre champ mais aussi si la ligne elle-même est modifiable suite au contrôle précédent ci-dessus (hook isUpdateEnable).

Dans l’expression de la contrainte, je souhaite mettre donc qq choses du genre :

[VALUE:habDocumentPublic]=='0' && this.getField(« habDocumentUserIdSaisie »).isUpdatableOnForm();  

Mais je ne trouve pas la bonne syntaxe.
Je trouve bien des contrôles [ISNEW], [ISCOPIED]… mais de [ISUPDATABLEONFORM] ou [ISUPDATABLE]

Pourriez-vous m’aider svp ?

Merci d’avance.

Abed.


(David AZOULAY) #2

Pour une contrainte “back” (exécutée coté serveur) la bonne syntaxe est du genre [FIELD:myField].isUpdatableOnForm()


#3

J’ai essayé l’expression

[FIELD:habDocumentDroits].isUpdatableOnForm() && [VALUE:habDocumentPublic]=='0'

Et j’ai l’erreur suivante :


(David AZOULAY) #4

La méthode ObjectField.isUpdatableOnForm() (cf. https://www.simplicite.io/resources/4.0/javadoc/com/simplicite/util/ObjectField.html#isUpdatableOnForm--) n’existe qu’en back, si votre contrainte est uniquement back ça devrait donc marcher.


#5

Effectivement, ma contrainte est Front et Back, Est-ce qu’il y a une solution dans ce cas ?


(David AZOULAY) #6

@francois tu as un avis sur la question ?


(François Genestin) #7

Côté client la jsdoc pour les “field” est là :
https://www.simplicite.io/resources/4.0/jsdoc/Simplicite.Ajax.ObjectField.html

En front, il n’y a pas de isUpdatableOnForm ou isUpdatableOnList, car cette donnée front est contextuelle.
seul le flag f.updatable est suffisant et actualisé si on est en liste ou en formulaire.

la contrainte “front” doit donc aller tester la valeur de updatable (boolean) directement.
obj.getField("myField").updatable

on ne peut donc pas faire de contrainte à la fois front et back avec “isUpdatableOnForm”
il faudra faire 2 contraintes une front (si impact visuel uniquement type show/hide) et une back (si impact métier sur les données).

(on va voir pour ajouter les 2 verbes en front si on peut remonter cette metadata)