Базовые
-------

.. 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": "type",
            "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:: bus

        Шина событий. Генерируемые события:

            .. js:function:: dataLoad(event, model, value)

                Callback события загрузки данных компонента

                :param Object event:    возникшее событие
                :param Object model:    модель компонента
                :param Object value:    данные компонента

            .. js:function:: markInvalid(event, model, value)

                Callback события "Пометить значение компонента как не валидное"

                :param Object event:    возникшее событие
                :param Object model:    модель компонента в котором изменилось значение
                :param Object value:    значение компонента

            .. js:function:: valueChange(event, model, value)

                Callback события изменения данных компонента

                :param Object event:    возникшее событие
                :param Object model:    модель компонента в котором изменилось значение
                :param Object 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.
