Базовые модель и отображение
----------------------------

.. js:class:: AS.FORMS.View

    Базовое отображение. Является родительским для всех компонентов.

    .. code-block:: js

        {
        	"id": "person",                         // идентификатор компонента
        	"type": "type",                         // тип компонента
        	"style": {                              // стиль компонента
        		"align": "center",
        		"font": "Courier New",
        		"fontsize": "12",
        		"bold": true,
        		"italic": false,
        		"underline": false,
        		"strike": false,
        		"height": "20",
        		"width": "200"
        	},
        	"config": {                             // конфигурация компонента
        		"read-only": true,                    // заблокировать от изменений пользователем
        		"script": "model.setValue('Ерлан');"  // скрипт компонента
        	},
        	"fromHistory": true,                    // ???
        	"fullId": "person",                     // ???
        	"required": true,                       // обязательное поле
        	"data": {                               // дефолтные данные компонента
        		"id": "person",
        		"type": "textbox",
        		"value": "Дефолтное значение"
        	}
        }

    .. js:data:: model

        Модель. Наследует AS.FORMS.Model

    .. js:data:: container

        Контейнер, в котором будет отрисовываться отображение

    .. js:data:: input

        Поле ввода для некоторых компонентов:
            * текстовое поле
            * числовое поле
            * многострочный текст

    .. js:data:: playerView

        Отображение проигрывателя

    .. js:function:: unmarkInvalid()

        Убрать пометку неправильно заполненного поля

    .. js:function:: markInvalid()

        Пометить поле как неправильно заполненное

    .. js:function:: checkValid()

        Проверить корректность текущего значения (если поле заполнено неверно, то вызовется метод markInvalid)

    .. js:function:: setEnabled(enabled)

        Сделать доступным или недоступным для редактирования

        :param boolean enabled: true/false

    .. js:function:: setVisible(visible)

        Сделать видимым или невидимым

        :param boolean visible: true/false

    .. js:function:: updateValueFromModel()

        Обновить отображение согласно значению модели

.. note:: Если скрывается последний компонент в строке, то вся строка принимает минимальную высоту 18 px.

--------------------------------------------------------------------------------

.. js:class:: AS.FORMS.Model

    Базовая модель. Является родительской для всех компонентов.

    .. code-block:: js

        {
          "id": "person",       // идентификатор компонента
          "type": "type",       // тип компонента
          "value": "Значение"   // значение компонента
        }

    .. js:data:: asfProperty

        Определение компонента из описания формы

    .. js:data:: playerModel

        Модель проигрывателя

    .. js:function:: fireChangeEvents()

        Вызов событий изменения значения формы

    .. js:function:: isEmpty()

        Значение компонента не задано

    .. js:function:: doSetValue(newValue)

        Вставить новое значение и отправить уведомление всем подписанным объектам, в т.ч. отображению

        :param string newValue: Значение компонента

    .. js:function:: getErrors()

        Получение ошибок заполнения поля согласно настройкам ``asfProperty``

        :returns: ``[object]`` Если массив пустой, значит ошибки отсутствуют,
                  иначе - его элементы имеют поля:

                  * ``errorCode`` - код ошибки;
                  * ``id`` - идентификатор компонента.

                  Возможные коды ошибок:

                  * ``emptyValue``
                  * ``wrongValue``
                  * ``deletedValue``
                  * ``valueTooHigh``
                  * ``valueTooSmall``

                  Для одного и того же компонента может быть как несколько ошибок, так может и не быть ни одной.

    .. js:function:: getLocale()

        Получение локали, настроенной в компоненте

        :returns: ``string`` Локаль пользователя

    .. js:function:: getHTMLValue()

        :returns: ``string`` HTML-представлениe текстового значения поля со стилями

    .. js:function:: getValue()

        :returns: ``string`` значение компонента

    .. js:function:: getTextValue()

        :returns: ``string`` текстовое значение компонента

    .. js:function:: getAsfData([blockNumber])

        :param number blockNumber: Номер строки динамической таблицы (если это компонент статической таблицы, то передавать эту переменную не нужно)
        :returns: ``asfData`` Данные компонента

    .. js:function:: setAsfData(asfData)

        Вставить значение `asfData`

        :param asfData asfData: Данные компонента в формате JSON.
