Экземпляры блоков обладают рядом свойств, которые определяют их поведение для пользователя. Хотя эти свойства можно задать в определении блока, чаще всего они используются для ограничения блоков в рабочей области с целью отражения определённых свойств предметной области (например, наличие только одного события «старт») или для фокусировки усилий пользователя (например, руководство).
Удаляемое состояние
block.setDeletable(false);
Если установлено значение false
, пользователь не сможет удалить блок. В редактируемом рабочем пространстве блоки по умолчанию можно удалять.
Любой блок (даже неудаляемый) можно удалить программно:
block.dispose();
Редактируемое состояние
block.setEditable(false);
Если установлено значение false
, пользователь не сможет изменять поля блока (например, раскрывающиеся списки и текстовые поля). Блоки по умолчанию доступны для редактирования в редактируемой рабочей области.
Подвижное состояние
block.setMovable(false);
Если установлено значение false
, пользователь не сможет перемещать блок напрямую. Неподвижный блок, являющийся дочерним блоком другого блока, невозможно отсоединить от него, хотя он будет перемещаться вместе со своим родителем при перемещении последнего. В редактируемой рабочей области блоки по умолчанию являются перемещаемыми.
Любой блок (даже неподвижный) можно перемещать программно, как только он оказывается на рабочем пространстве.
block.moveBy(dx, dy)
Начальная позиция блока в рабочей области по умолчанию — (0, 0)
.
Блок данных
block.data = '16dcb3a4-bd39-11e4-8dfc-aa07a5b093db';
Данные — это необязательная и произвольная строка, прикрепляемая к блоку. При сериализации блока строка данных сериализуется вместе с ним. Это также относится к случаям дублирования или копирования/вставки блока.
Часто это используется для связи блока с внешним ресурсом.
При сериализации в JSON данные сохраняются как свойство верхнего уровня в блоке:
{
"type": "my_block",
"data": "16dcb3a4-bd39-11e4-8dfc-aa07a5b093db",
// etc..
}
При сериализации в XML (старая система сериализации icebox) строка данных сохраняется в теге <data></data>
внутри блока:
<block type="my_block">
<data>16dcb3a4-bd39-11e4-8dfc-aa07a5b093db</data>
<!-- etc... -->
</block>