Un champ numérique stocke un nombre comme value
et une chaîne comme text
. Son value
est toujours un nombre valide, tel que défini par les contraintes données au champ lors de sa création. Son texte peut être n'importe quelle chaîne saisie dans son éditeur.
Champ numérique
Champ numérique avec l'éditeur ouvert
Champ numérique dans un bloc réduit
Création
JSON
{
"type": "example_number",
"message0": "number: %1",
"args0": [
{
"type": "field_number",
"name": "FIELDNAME",
"value": 100,
"min": 0,
"max": 100,
"precision": 10
}
]
}
JavaScript
Blockly.Blocks['example_number'] = {
init: function() {
this.appendDummyInput()
.appendField("number:")
.appendField(new Blockly.FieldNumber(100, 0, 100, 10), 'FIELDNAME');
}
};
Le constructeur de nombres accepte les éléments suivants :
- un
value
facultatif ; - un
min
facultatif ; - un
max
facultatif ; - un
precision
facultatif ; - un
validator
facultatif ;
value
doit être converti en nombre. Si ce n'est pas le cas, la valeur 0 sera utilisée.
Sérialisation
JSON
Le code JSON d'un champ numérique se présente comme suit :
{
"fields": {
"FIELDNAME": 0
}
}
Où FIELDNAME
est une chaîne faisant référence à un champ numérique, et la valeur est celle à appliquer au champ. La valeur suit les mêmes règles que la valeur du constructeur.
XML
Le code XML d'un champ numérique se présente comme suit :
<field name="FIELDNAME">0</field>
L'attribut name
du nœud field
contient une chaîne faisant référence à un champ numérique, et l'élément text
interne du nœud est le value
à appliquer au champ. La valeur du texte interne suit les mêmes règles que la valeur du constructeur.
Contraintes
Les contraintes peuvent être définies dans la définition du champ ou à l'aide de la fonction setConstraints.
Valeur minimale
La valeur min
définit la valeur la plus petite/la plus négative que le champ est autorisé à contenir.
Valeur maximale
La valeur max
définit la valeur la plus élevée/la plus positive que le champ est autorisé à contenir.
Arrondi
precision
arrondit la valeur au multiple de précision le plus proche. Cela peut être utilisé pour que le champ n'accepte que les multiples de 0,01, 10, 42, etc.
Contraintes courantes
Nombres positifs
Pour forcer votre champ à n'accepter que des nombres positifs, définissez la valeur min
sur 1.
Entiers
Pour forcer votre champ à n'accepter que des nombres entiers, définissez precision
sur 1.
Créer un validateur de nombre
La valeur d'un champ numérique est un nombre. Par conséquent, tous les validateurs doivent accepter un number
et renvoyer un number
, null
ou undefined
.
Voici un exemple de validateur qui remplace la valeur par 0 ou 1 selon qu'elle était paire ou impaire.
function(newValue) {
return newValue % 2;
}