.. _grid: grid ====================== .. underconstruction:: .. seealso:: #. :java:type:`pojo-класс` #. :xsd:class:`Метаданные Postgres` #. :java:type:`gtk API - CoreListView` Индикация состояния списка --------------------------------- Для индикации состояния списка используется :term:`строка статуса <Строка статуса>` Отображаемые состояния: * Частичная загрузка - :xsd:elem:`View.Representation.PartitionModes.notPartitioned` * :ref:`Режим высокой ёмкости ` .. seealso:: :ref:`Поддержка режима в текущем контроле ` * Достигнут лимит по :xsd:elem:`квотам ` Режимы работы с данными --------------------------- .. _spec_grid_support_highCapacity: Поддержка режима высокой ёмкости В соответсвие со :ref:`спецификациями ` отключен недоступный для этого режима функционал. Других особенностей работы контрола нет. .. _aggregation: Область итогов --------------- .. seealso:: * :java:type:`CoreSummary` * :java:type:`CoreGridSummary` * :xsd:attr:`View.Representation.Attributes.Attribute.Grid.summaryType` * :ref:`Пункт контекстного меню` Область итогов в таблице предназначена для отображения итоговых данных по каждой колонке. Поддерживается несколько типов агрегации, которые можно включить в зависимости от типа данных в колонке. Доступные типы агрегации ^^^^^^^^^^^^^^^^^^^^^^^^^^ * **Нет** - Отсутствие агрегации. Итоговая строка для данной колонки остается пустой. * **Количество** - Отображает общее количество записей в колонке. * **Сумма** - Отображает сумму всех непустых значений в колонке. * **Минимум** - Отображает минимальное значение в колонке. * **Максимум** - Отображает максимальное значение в колонке. * **Среднее** - Отображает среднее значение непустых строк в колонке. Среднее значение округляется (математическим округлением от 0.5 вверх) до двух знаков после запятой. Ограничения по типу данных ^^^^^^^^^^^^^^^^^^^^^^^^^^^ * Для **числовых колонок** доступны все виды агрегации: "Нет", "Количество", "Сумма", "Минимум", "Максимум", "Среднее". * Для **нечисловых колонок** доступны только "Нет" и "Количество". .. _spec_grid_sorting: Сортировка ---------- .. seealso:: * :java:meth:`CoreSelection.sortOrder()` * :java:type:`Sort` * :xsd:attr:`View.Representation.Attributes.Attribute.Sort` Сортировка в таблице позволяет пользователю упорядочивать данные в соответствии с определёнными критериями. Существует два направления сортировки: * **По возрастанию** – от меньшего к большему (например, от A до Z, от 1 до 100). * **По убыванию** – от большего к меньшему (например, от Z до A, от 100 до 1). Основные механизмы сортировки ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ * Сортировка включается кликом в область заголовка колонки. * Включение сортировки всегда сортирует данные по возрастанию. * Для смены направления сортировки нужно повторно кликнуть на заголовок отсортированной колонки. Множественная сортировка ^^^^^^^^^^^^^^^^^^^^^^^^^ Множественная сортировка позволяет пользователю сортировать данные сразу по нескольким колонкам. * ``Shift + клик`` включает множественную сортировку, позволяя отсортировать несколько колонок одновременно. * Если отсортировано несколько колонок, иконка сортировки изменяется, добавляя порядковый номер, который указывает приоритет сортировки. Сортировка добавленная ранее имеет больший приоритет, чем последующие. * ``Shift + клик`` по колонке в множественной сортировке изменяет её направление, но не меняет порядковый номер. * ``Ctrl + Shift + клик`` по колонке в множественной сортировке аналогичен ``Ctrl + клик`` и отключает сортировку этой колонки. Отключение сортировки ^^^^^^^^^^^^^^^^^^^^^^ * Для отключения сортировки у конкретного столбца необходимо выполнить ``Ctrl + клик``. Если колонка не была отсортирована, действие не оказывает эффекта. * ``Ctrl + клик`` по колонке, участвующей в множественной сортировке, выключает сортировку только этой колонки, а порядковые номера остальных отсортированных колонок смещаются. Если остаётся только одна отсортированная колонка, её порядковый номер не отображается. * Если отсортировано несколько колонок и выполнен обычный клик по неотсортированной колонке, вся предыдущая сортировка сбрасывается, и включается одиночная сортировка по последней выбранной колонке. Сортировка в области группировки ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ .. seealso:: * :ref:`Пункт контекстного меню "Область группировки"` Область группировки поддерживает сортировку аналогично основному гриду, включая возможность множественной сортировки. * Клик по заголовку группы включает сортировку, ``Ctrl + клик`` отключает её, а повторный клик по отсортированной колонке меняет направление сортировки. * Приоритет сортировки в области группировки определяется иерархией группировки: колонка, расположенная левее, имеет более высокий приоритет, чем колонка, расположенная правее. * Сортировка на уровне группировки является наиболее приоритетной, а сортировка на уровне грида выполняется после неё. Пользовательские настройки интерфейса -------------------------------------- .. versionadded:: AS 1.26.0-ms31 .. seealso:: :ref:`Спецификация настроек пользователя` Сохранение и загрузка пользовательских настроек возможны при наличии реализации соответствующих событий на прикладном уровне Спецификация пунктов контекстного меню --------------------------------------- .. _grid_copy_item: Копировать ^^^^^^^^^^^ Используется для копирования данных из ячейки таблицы. .. seealso:: Информация по работе с записью текста в буфер обмена находится в :java:type:`Справочники Api - CoreClipboard `. Если отсутствует разрешение на запись в буфер обмена для сайта с прикладным проектом в браузере, то кнопка не будет отображаться. Сообщение об этом будет выведено в логи браузера. .. seealso:: `Как изменить разрешения для сайтов на примере браузера Google Chrome `_ Если в рамках запущенного сайта разрешение на запись в буфер обмена отсутствовало, после чего было предоставлено, то необходимо перезагрузить сайт, чтобы кнопка отобразилась. Если в рамках запущенного сайта разрешение на запись в буфер обмена имелось, после чего было заблокировано, то кнопка не скроется, но возможность копирования данных будет заблокирована. Сообщение об этом будет выведено в логи браузера. .. warning:: Если в браузере отсутствует доступ к `Async Clipboard API `_, то запись текста в буфер обмена работать не будет. .. _grid_paste_item: Вставить ^^^^^^^^^ Используется для вставки данных в ячейку таблицы из буфера обмена. .. seealso:: Информация по работе с чтением текста из буфера обмена находится в :java:type:`Справочники Api - CoreClipboard `. Если отсутствует разрешение на чтение из буфера обмена для сайта с прикладным проектом в браузере, то кнопка не будет отображаться. Сообщение об этом будет выведено в логи браузера. .. seealso:: `Как изменить разрешения для сайтов на примере браузера Google Chrome `_ Если в рамках запущенного сайта разрешение на чтение из буфера обмена отсутствовало, после чего было предоставлено, то необходимо перезагрузить сайт, чтобы кнопка отобразилась. Если в рамках запущенного сайта разрешение на чтение из буфера обмена имелось, после чего было заблокировано, то кнопка не скроется, но возможность вставки данных будет заблокирована. Сообщение об этом будет выведено в логи браузера. .. warning:: Если в браузере отсутствует доступ к `Async Clipboard API `_, то чтение текста из буфера обмена работать не будет. .. _grid_cm_aggregation: Область итогов ^^^^^^^^^^^^^^^ Отобразить или скрыть :ref:`область итогов`. .. _grid_cm_grouping_area: Область группировки ^^^^^^^^^^^^^^^^^^^^ Отобразить или скрыть область группировки. Автофильтр ^^^^^^^^^^^ .. _fetch_all_item: Загрузить данные полностью ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Выполняет загрузку всех данных выборки Свернуть все дерево ^^^^^^^^^^^^^^^^^^^^^^ Развернуть все дерево ^^^^^^^^^^^^^^^^^^^^^^ Разместить все колонки на экране ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Настройка видимости колонок ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Восстановить настройки по умолчанию ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Сбросить настройки пользовательского интерфейса к состоянию, заданному на уровне метаданных .. _grid_cm_user_settings: Настройки пользователя ^^^^^^^^^^^^^^^^^^^^^^^^^ Содержит выпадающее меню с подпунктами для сохранения и загрузки пользовательских настроек интерфейса списка. Если активна пользовательская настройка, её имя отображается в скобках рядом с пунктом меню (например, ``Настройки пользователя (Моя настройка)``). Длинные имена сокращаются до 30 символов. **Доступность:** Пункт доступен, если доступен хотя бы один из подпунктов. Доступность подпунктов определяется результатом обработки события :btk:event:`selection.FeatureCheck`. .. seealso:: :ref:`Спецификация настроек пользователя` Сохранить +++++++++++ **Доступность:** Если ``SaveUserSettings`` присутствует в :java:meth:`CoreFeatureCheckResponse.supportedEvents`. **Действие:** При выборе пункта отправляется событие :btk:event:`selection.layout.composer.frame.grid.SaveUserSettings` в прикладной слой. Сохранить как... +++++++++++++++++ **Доступность:** Если ``SaveAsUserSettings`` присутствует в :java:meth:`CoreFeatureCheckResponse.supportedEvents`. **Действие:** При выборе пункта отправляется событие :btk:event:`selection.layout.composer.frame.grid.SaveAsUserSettings` в прикладной слой.. Загрузить +++++++++++ **Доступность:** Если ``LoadUserSettings`` присутствует в :java:meth:`CoreFeatureCheckResponse.supportedEvents`. **Действие:** При выборе пункта отправляется событие :btk:event:`selection.layout.composer.frame.grid.LoadUserSettings` в прикладной слой. Настройки, возвращаемые прикладным слоем, применяются к гриду. **Побочные эффекты:** - После успешного применения пользовательской настройки ранее сохранённые :term:`Автонастройки` для данного списка перетираются при закрытии фрейма значениями из пользовательской настройки. - Последующие изменения интерфейса пользователем формируют **новую** автонастройку поверх загруженной пользовательской настройки. .. _grid_cm_restore_on_reopen: Восстанавливать изменения в интерфейсе при переоткрытии ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ **Тип:** Булевый флаг. **Доступность:** Определяется флагом :java:meth:`ru.bitec.gtk.core.gl.CoreAutoSettings.isAllowUserToChangeSettings()` **Описание:** Дает возможность перекрыть значение :java:meth:`ru.bitec.gtk.core.gl.CoreAutoSettings.isRestoreAutoSettingsRegardlessOfUserSettings()` в :java:ref:`CoreApplication.autoSettings()` на уровне выборки. Скрыть колонку ^^^^^^^^^^^^^^^^ .. _grid_cm_saveas: Сохранить как ^^^^^^^^^^^^^^ Экспорт содержимого таблицы в файл. Вызов данного пункта меню откроет диалоговое окно для выбора :java:ref:`режима экспорта`. Если в выборке присутствуют обработчики :ref:`событий экспорта `, тогда формирование файла с отчетом произойдет в обработчике, соответствующему выбранному в диалоговом окне режиму, а сервер произведет скачивание сформированного файла. .. seealso:: * :java:meth:`gtk API - CoreListView.export()` * :ref:`Пример экспорта в excel файл силами scala и datastream` .. _grid_selection: Выделение ----------- Стилизация выделенной записи ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Список поддерживает следующие варианты стилизации записей: 1. `Обычный` - Устанавливается при помощи :xsd:attr:`Метаданные Postgres - View.Representation.Layout.Frame.Grid.invertCurrentRow ` со значением ``false``. 2. `Инвертированный` - Устанавливается при помощи :xsd:attr:`Метаданные Postgres - View.Representation.Layout.Frame.Grid.invertCurrentRow ` со значением ``true``. .. _grid_record_selection: Выделение записи ^^^^^^^^^^^^^^^^^^^ Способы выделения записи: 1. :kbd:`ЛКМ/ПКМ` - перемещает выделение и фокус на запись, по которой произошёл клик :kbd:`ЛКМ/ПКМ`. 2. :kbd:`PageUp` — перемещает выделение и фокус на первую запись предыдущей :term:`страницы списка<Страница списка>`. 3. :kbd:`PageDown` — перемещает выделение и фокус на последнюю запись следующей :term:`страницы списка<Страница списка>`. 4. :kbd:`Ctrl+Home` — перемещает выделение и фокус на первую запись списка. 5. :kbd:`Ctrl+End` — перемещает выделение и фокус на последнюю запись списка. 6. :kbd:`↑` — перемещает выделение и фокус на предыдущую запись списка. 7. :kbd:`↓` — перемещает выделение и фокус на следующую запись списка. .. _grid_records_selection: Выделение нескольких записей """""""""""""""""""""""""""""""" Включение возможности выделения нескольких записей осуществляется следующими способами: 1. С помощью :java:type:`Справочники Api - CoreSelection.isMultiSelect_$eq `. 2. С помощью :xsd:attr:`Метаданные Postgres - View.Representation.isMultiSelect ` .. warning:: Если используется :ref:`режим высокой ёмкости `, то выделение нескольких записей не будет работать. Способы выделения нескольких записей: 1. :kbd:`Ctrl+ЛКМ/ПКМ` по записи - добавляет/убирает запись из текущего выделения. Фокус будет перемещён на запись, по которой произошёл клик. 2. :kbd:`Shift+ЛКМ/ПКМ` по записи - выделяет диапазон записей от записи, которая была выделена первой в текущей операции множественного выделения, до записи, по которой произошёл клик. Фокус будет перемещён на запись, по которой произошёл клик. 3. :kbd:`Ctrl+A` - выделяет все записи списка. Фокус останется на прежнем месте. 4. :kbd:`Ctrl+Space` - выделяет и переносит фокус на следующую запись в списке относительно текущей записи. Все ранее выделенные записи остаются выделенными. 5. :kbd:`Shift+↑/↓` - выделяет записи сверху или снизу относительно текущей записи. Фокус будет перемещён на последнюю выделенную запись. .. _grid_cell_selection: Выделение ячейки записи ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 1. :kbd:`ЛКМ/ПКМ` - перемещает выделение и фокус на ячейку записи, по которой произошёл клик :kbd:`ЛКМ/ПКМ`. 2. :kbd:`Home` — перемещает выделение и фокус на первую ячейку текущей строки. 3. :kbd:`End` — перемещает выделение и фокус на последнюю ячейку текущей строки. 4. :kbd:`←` — перемещает выделение и фокус на ячейку, расположенную слева от текущей. 5. :kbd:`→` — перемещает выделение и фокус на ячейку, расположенную справа от текущей. .. _grid_cells_selection: Выделение нескольких ячеек записи """""""""""""""""""""""""""""""""""" Включение возможности выделения нескольких ячеек записи осуществляется при помощи :java:type:`Справочники Api - CoreSelection.isMultiCellSelect_$eq `. .. warning:: Если используется :ref:`режим высокой ёмкости `, то выделение нескольких ячеек записи не будет работать. Выделить несколько ячеек записи можно следующими способами: 1. :kbd:`Alt+Ctrl+ЛКМ/ПКМ` - добавляет/убирает выделение ячейки записи. Фокус будет перемещён на ячейку, по которой произошёл клик. 2. :kbd:`Alt+Shift+ЛКМ/ПКМ` - выделяет диапазон от текущей ячейки записи до выбранной. Фокус будет перемещён на ячейку, по которой произошёл клик. 3. :kbd:`Shift/Ctrl+←/→` - выделяет ячейки слева или справа относительно текущей ячейки записи. Фокус будет перемещён на последнюю выделенную ячейку. Выделение прямоугольного диапазона ячеек """""""""""""""""""""""""""""""""""""""""""""""" .. warning:: |not_supported| .. seealso:: В :term:`Global 1` `выделение прямоугольного диапазона ячеек `_ доступно только для транспонированного грида.