Утилиты
=======

AS.FORMS.ApiUtils
~~~~~~~~~~~~~~~~~

.. js:class:: AS.FORMS.ApiUtils

    Утилиты для работы с REST API Synergy

    .. note:: При использовании данных методов адрес и порт Synergy, а также
              параметры авторизации определяются при подключении проигрывателя форм.
              Методы являются оберткой над `jQuery.ajax() <http://api.jquery.com/jquery.ajax/>`_
              и обладают всеми его свойствами.

    .. js:function:: simpleAsyncGet(urlPart[, callback[, dataType[, data[, errorHandler]]]])

        Выполнить GET запрос по указанному URL REST API.

        :param string urlPart:        Часть URL метода REST API, без ``http://host:port/Synergy/``,
                                      например ``rest/api/registry/create_doc?registryCode=someregistry``
        :param function callback:     Функция, которая будет вызвана в случае успешного выполнения запроса.
                                      В данную функцию передается один параметр - ответ на запрос.
        :param string dataType:       ``default:'json'`` Тип данных ответа на запрос.
                                      Может принимать значения: ``"xml"``, ``"html"``, ``"script"``, ``"json"``, ``"jsonp"``, ``"text"``.
                                      Если не передавать параметр, то будет использоваться дефолтное значение ``"json"``.
        :param object data:           Данные запроса. Могут быть строкой, объектом или массивом.
                                      Конвертируются в строку запроса и добавляются к URL.
        :param function errorHandler: Функция, которая будет вызвана в случае неуспешного выполнения запроса.

    .. js:function:: simpleAsyncPost(urlPart[, callback[, dataType[, data[, contentType[, errorHandler]]]]])

        Выполнить POST запрос по указанному URL REST API.

        :param string urlPart:        Часть URL метода REST API, без ``http://host:port/Synergy/``,
                                      например ``rest/api/asforms/data/save``
        :param function callback:     Функция, которая будет вызвана в случае успешного выполнения запроса.
                                      В данную функцию передается один параметр - ответ на запрос.
        :param string dataType:       ``default:'json'`` Тип данных ответа на запрос.
                                      Может принимать значения: ``"xml"``, ``"html"``, ``"script"``, ``"json"``, ``"jsonp"``, ``"text"``.
        :param object data:           Данные запроса. Должны соответствовать параметру ``contentType``
        :param string contentType:    ``default:'application/x-www-form-urlencoded; charset=UTF-8'`` Тип данных запроса.
        :param function errorHandler: Функция, которая будет вызвана в случае неуспешного выполнения запроса.

AS.FORMS.ASFDataUtils
~~~~~~~~~~~~~~~~~~~~~

.. js:class:: AS.FORMS.ASFDataUtils

    Утилиты для работы с asfData и asfDefinition

    .. js:function:: getBaseAsfData(asfProperty[, blockNumber[, value[, key]]])

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

        :param object asfProperty:  Определение компонента :js:data:`.asfProperty`
        :param number blockNumber:  Номер строки динамической таблицы
        :param string value:        Значение компонента
        :param string key:          Ключ компонента
        :returns:                   ``object``

                                    .. code-block:: js

                                        {
                                          "id": "идентификатор копонента",
                                          "type": "тип компонента",
                                          "value": "значение компонента",
                                          "key": "ключ компонента"
                                        }

    .. js:function:: getComponentLocale(asfProperty)

        Получить локаль компонента. Если локаль в компоненте не задана, то вернется системная локаль.

        :param object asfProperty:  Определение компонента :js:data:`.asfProperty`
        :returns:                   ``string`` Локаль компонента

    .. js:function:: isReadOnly(model)

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

        :param object model: Модель компонента :js:class:`AS.FORMS.Model`
        :returns:            ``boolean``

AS.FORMS.ComponentUtils
~~~~~~~~~~~~~~~~~~~~~~~

.. js:class:: AS.FORMS.ComponentUtils

    Утилиты для работы с компонентами

    .. js:function:: createModel(asfProperty, playerModel)

        Создать модель компонента

        :param object asfProperty:  Определение компонента :js:data:`.asfProperty`
        :param object playerModel:  Модель экземпляра проигрывателя :js:class:`AS.FORMS.PlayerModel`
        :returns:                   :js:class:`AS.FORMS.Model`

    .. js:function:: createView(model, playerView, editable)

        Создать отображение компонента

        :param object model:        Модель компонента :js:class:`AS.FORMS.Model`
        :param object playerView:   Отображение экземпляра проигрывателя :js:class:`AS.FORMS.PlayerView`
        :param boolean editable:    Режим редактирования компонента
        :returns:                   :js:class:`AS.FORMS.View`

    .. js:function:: makeBus(object)

        Создать шину событий для объекта.
        Используется для добавления кастомных событий компоненту.

        :param object object:       Любой объект

AS.FORMS.DateUtils
~~~~~~~~~~~~~~~~~~

.. js:class:: AS.FORMS.DateUtils

    Утилиты для работы с датами

    .. js:function:: formatDate(date, format)

        Привести дату к указанному формату

        :param Date date:       Дата, которую надо привести к формату
        :param string format:   Форматная строка. Поддерживаются следующие подстановки:

                                * ``${yyyy}``, ``${yy}`` - год (число)
                                * ``${mm}``, ``${m}`` - месяц (число)
                                * ``${month}`` - месяц в именительном падеже
                                * ``${month_short}`` - сокращенное значение месяца
                                * ``${monthed}`` - месяц в родительном падеже
                                * ``${dd}``, ``${d}`` - день месяца
                                * ``${hh}``, ``${h}`` - часы в 12-часовом формате
                                * ``${HH}``, ``${H}`` - часы в 24-часовом формате
                                * ``${MM}``, ``${M}`` - минуты
                                * ``${SS}``, ``${S}`` - секунды

                                Пример вызова:

                                .. code-block:: js

                                    -> AS.FORMS.DateUtils.formatDate(new Date(), '${dd}.${mm}.${yyyy}');
                                    <- "31.10.2017"

        :returns:               ``string`` Значение даты согласно формату

    .. js:function:: getMonthName(monthNumber)

        Получить строковое значение месяца по его номеру

        :param number monthNumber:  порядковый номер месяца 1-12
        :returns:                   ``string`` наименование месяца

    .. js:function:: getMonthPossessiveName(monthNumber)

        Получить строковое значение месяца в родительном падеже по его номеру

        :param number monthNumber:  порядковый номер месяца 1-12
        :returns:                   ``string`` наименование месяца в родительном падеже

    .. js:function:: getMonthShortName(monthNumber)

        Получить строковое сокращенное значение месяца по его номеру

        :param number monthNumber:  порядковый номер месяца 1-12
        :returns:                   ``string`` сокращенное наименование месяца

    .. js:function:: getWeekDayName(dayNumber)

        Получить наименование дня недели по его номеру

        :param number dayNumber:    порядковый номер дня недели 1-7
        :returns:                   ``string`` наименование дня недели

    .. js:function:: getWeekDayShortName(dayNumber)

        Получить сокращенное наименование дня недели по его номеру

        :param number dayNumber:    порядковый номер дня недели 1-7
        :returns:                   ``string`` сокращенное наименование дня недели

    .. js:function:: parseDate(dateStr)

        Получить дату по его строковому представлению

        :param string dateStr:      Дата в формате ``yyyy-MM-dd HH:mm``
        :returns:                   ``Date`` Объект даты
