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

Числовое поле хранит число в качестве своего 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 — это строка, ссылающаяся на числовое поле, а value — это значение, которое нужно применить к полю. Значение подчиняется тем же правилам, что и значение конструктора.

XML

XML-код для числового поля выглядит следующим образом:

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

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

Ограничения

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

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

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

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

Параметр 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.