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

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

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

Блок с меткой «число:» и числовым полем, равным 100.

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

Тот же блок с редактируемым полем.

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

Тот же блок после свёртывания. На нём написано «число: 100» и зазубренный правый край, показывающий, что он свёрнут.

Создание

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
  • необязательный min
  • необязательный max
  • необязательная precision
  • дополнительный validator

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

Анимированный GIF-файл, демонстрирующий работу валидатора. Когда пользователь вводит 10 и нажимает в другом месте, поле устанавливается на 0. Когда пользователь вводит 11 и нажимает в другом месте, поле устанавливается на 1.