«Страница» и «Таблица»
----------------------

.. js:class:: AS.FORMS.TableStaticView

    Отображение статической таблицы

    .. code-block:: js

        {
          "id": "simple-table",                 // идентификатор компонента
          "type": "table",                      // тип компонента
          "config": {
              "fixedLayout": false,             // фиксированная разметка
              "format": "${salary} - ${amount}",// форматная строка
              "delimeter": ""                   // разделитель свертки
          },
          "properties": [],                     // массив компонентов, так же как в форме
          "layout": {},                         // разметка, так же как в форме
          "style": {                            // стиль компонента
              "border": "1",                    // отображать границы
              "wrap": true                      // выводить содержимое в виде абзаца
          }
        }

    .. js:function:: getRowsCount()

        Возвращает количество рядов таблицы

    .. js:function:: setColumnVisible(columnNumber, visible)

        Делает столбец таблицы видимым / невидимым

        :param Number columnNumber: номер столбца
        :param boolean visible: видимый

    .. js:function:: getInvisibleColumns()

        Возвращает список невидимых столбцов

    .. js:function:: getViewWithId(cmpId[, tableId[, tableBlockIndex]])

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

        :param String cmpId: идентификатор компонента
        :param String tableId: идентификатор динамической таблицы
        :param Number tableBlockIndex: номер строки динамической таблицы
        :returns: ``object`` отображение компонента

.. js:class:: AS.FORMS.TableDynamicView

    Отображение динамической таблицы

    .. code-block:: js

        {
          "id": "table-id",       // идентификатор компонента
          "type": "table",        // тип компонента
          "config": {
            "appendRows": true,   // добавлять строки в режиме заполнения
            "init-row": 2,        // количество отображаемых строк при создании
            "fixedLayout": false, // фиксированная разметка
            "isHaveHeaders": true // добавить заголовок таблицы
          }
          "properties": [],       // массив компонентов, так же как в форме
          "layout": {},           // разметка, так же как в форме
          "style": {
              "border": "1",      // отображать границы
              "wrap": true        // выводить содержимое в виде абзаца
          }
        }

    .. js:function:: setEnabled(enabled)

        Разрешить пользователю добавлять и удалять блоки,
        при этом программная возможность остается

        :param boolean enabled: разрешить добавлять и удалять блоки

    .. js:function:: setColumnVisible(column, visible)

        Сделать столбец таблицы видимым

        :param Number column: номер столбца таблицы
        :param boolean visible: является видимым

    .. js:function:: getViewWithId(cmpId[, tableId[, tableBlockIndex]])

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

        :param String cmpId: идентификатор компонента
        :param String tableId: идентификатор динамической таблицы
        :param Number tableBlockIndex: номер строки динамической таблицы
        :returns: ``object`` отображение компонента

    .. js:function:: mergeCell(row, column, rows, cols)

        Объединить ячейки в блоке

        :param Number row: номер ряда таблицы
        :param Number column: номер столбца таблицы
        :param Number rows: количество рядов для объединения
        :param Number cols: количество столбцов для объединения

    .. js:function:: splitCell(row, column)

        Разъединить ячейки

        :param Number row: номер ряда таблицы
        :param Number column: номер столбца таблицы

.. js:class:: AS.FORMS.TableParagraphView

    Отображение динамической таблицы в свертке

.. js:class:: AS.FORMS.TableModel

    Модель компонентов «Страница» и «Таблица»

    Формат данных динамической таблицы:

    .. code-block:: js

        {
          "id": "person-list",                // идентификатор компонента
          "type": "appendable_table",         // тип компонента
          "key": "значение свертки таблицы",
          "data": [{                          // массив данных таблицы
              "id": "person-b1",              // компонент person в первой строке таблицы
              "type": "textbox",
              "value": "Иванов Иван"
            },
            {
              "id": "age-b1",                 // компонент age в первой строке таблицы
              "type": "numericinput",
              "value": "23",
              "key": "23"
            },
            {
              "id": "person-b2",              // компонент person во второй строке таблицы
              "type": "textbox",
              "value": "Сериков Серик"
            },
            {
              "id": "age-b2",                 // компонент age во второй строке таблицы
              "type": "numericinput",
              "value": "25",
              "key": "25"
            }
          ]
        }

    .. note:: Компоненты внутри таблицы имеют идентификаторы, т.к. таблица может
              иметь несколько строк, чтобы идентификаторы не дублировались
              добавляется постфикс -bN, где N номер строки таблицы,
              нумерация строк начинается с 1. Например, если компонент в таблице
              имеет идентификатор cmp, то значения идентификаторов для строк
              будут иметь вид cmp-b1, cmp-b2 и т.д. Окончание -bN должно иметь
              одинаковый номер N для компонентов одной строки.

    .. js:data:: bus

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

            .. js:function:: tableRowAdd(event, model, modelRow)

                Callback события добавления строки в динамической таблице

                :param Object event:       возникшее событие
                :param Object model:       модель компонента "Таблица"
                :param Array modelRow:     массив моделей компонентов строки

            .. js:function:: tableRowDelete(event, model, index, removedRow)

                Callback события удаления строки в динамической таблице

                :param Object event:       возникшее событие
                :param Object model:       модель компонента "Таблица"
                :param Number index:       номер удаленной строки
                :param Array removedRow:   массив моделей компонентов удаленной строки

    .. js:function:: createRow()

        Добавляет блок таблицы

    .. js:function:: removeRow(blockNumber)

        Удаляет блок таблицы

        :param Number blockNumber: номер блока

    .. js:function:: getTextValue()

        Возвращает форматированное значение свертки

        :returns: значение свертки

    .. js:function:: isHaveHeader()

        Наличие заголовка

    .. js:function:: isPage()

        Является страницей

    .. js:function:: isStatic()

        Является статической таблицей

    .. js:function:: isParagraph()

        Свертка включена
