Числовые поля

Числовое поле хранит число в качестве value и строку в качестве text . Его value всегда является допустимым числом, как определено ограничениями , заданными для поля при создании; его текстом может быть любая строка, введенная в его редактор.

Числовое поле

Числовое поле с открытым редактором

Числовое поле в свернутом блоке

Создание

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');
  }
};

Конструктор чисел принимает следующее:

value должно быть приведено к числу. Если это не так, будет использоваться 0.

Сериализация

JSON

JSON для числового поля выглядит так:

{
  "fields": {
    "FIELDNAME": 0
  }
}

Где FIELDNAME — это строка, ссылающаяся на числовое поле, а значение — это значение, которое применяется к полю. Значение подчиняется тем же правилам, что и значение конструктора.

XML

XML для числового поля выглядит так:

<field name="FIELDNAME">0</field>

Атрибут name узла field содержит строку, ссылающуюся на числовое поле, а внутренний text узла — это value , которое следует применить к полю. Внутреннее текстовое значение подчиняется тем же правилам, что и значение конструктора.

Ограничения

Ограничения можно установить в определении поля или с помощью функции setConstraints .

Минимальное значение

min значение устанавливает наименьшее/самое отрицательное значение, которое может содержать поле.

Максимальное значение

max значение устанавливает наибольшее/наиболее положительное значение, которое может содержать поле.

Округление

precision округляет значение до ближайшего кратного точности. Это можно использовать, чтобы поле принимало только числа, кратные 0,01, 10, 42 и т. д.

Общие ограничения

Положительные числа

Чтобы заставить ваше поле принимать только положительные числа, установите min значение равным 1.

Целые числа

Чтобы заставить ваше поле принимать только целые числа, установите precision 1.

Создание валидатора номера

Значением числового поля является число, поэтому любые валидаторы должны принимать number и возвращать number , null или undefined .

Вот пример валидатора, который меняет значение на 0 или 1 в зависимости от того, было ли значение нечетным или четным.

function(newValue) {
  return newValue % 2;
}