Назначение компонента
Основное предназначение flexberry-ojectlistview – просмотр списка доступных объектов с возможностью их последующего открытия и редактирования (в контрол встроен пейджинг, позволяющий просматривать данные порционно).
Обзор возможностей и API компонента
Для добавления контрола на страницу можно воспользоваться шаблоном (ниже представлен шаблон для добавления на списковую форму):
{{flexberry-objectlistview
componentName = "ordersObjectListView"
modelController = this
modelName = "order"
modelProjection = modelProjection
content = model
createNewButton = true
refreshButton = true
defaultSortingButton = true
showDeleteButtonInRow = true
colsConfigButton = true
sorting = computedSorting
orderable = true
sortByColumn = (action "sortByColumn")
addColumnToSorting = (action "addColumnToSorting")
action = "rowClick"
pages = pages
perPageValue = perPageValue
perPageValues = perPageValues
hasPreviousPage = hasPreviousPage
hasNextPage = hasNextPage
previousPage = (action "previousPage")
gotoPage = (action "gotoPage")
nextPage = (action "nextPage")
}}
Синтаксис вида
addColumnToSorting=(action \"addColumnToSorting\")
определяет, что используется ember closure action. Если требуемое действие не определено, то при вызове соответствующей функциональности в консоли браузера появится ошибка.
Если на форме используются дополнительные события, в шаблон может быть передано как имя события
{{flexberry-objectlistview
...
action="customActionName"
}}
так и собственно само событие:
{{flexberry-objectlistview
...
action=customActionName
}}
Список компонентов flexberry-ojectlistview
Наименование компонента | Краткое описание компонента |
---|---|
componentName |
Имя компонента. Должно быть уникальное в пределах одной страницы. |
modelController |
Текущий контроллер страницы. |
modelName |
Имя текущей модели (список каких объектов отображается). |
modelProjection |
Текущее используемое представление. |
content |
Отображаемые в контроле данные. |
createNewButton |
Флаг, определяющий, отображать ли кнопку создания на панели управления. |
refreshButton |
Флаг, определяющий, отображать ли кнопку обновления на панели управления. |
defaultSortingButton |
Флаг, определяющий, отображать ли кнопку установки сортировки по умолчанию. |
deleteButton |
Флаг, определяющий, отображать ли кнопку удаления на панели управления. |
showCheckBoxInRow |
Флаг, определяющий, отображать ли чекбоксы для выделения записей в каждой строчке. |
showDeleteButtonInRow |
Флаг, определяющий, отображать ли кнопку удаления строки в каждой строчке. |
showDeleteMenuItemInRow |
Флаг, определяющий, отображать ли пункт контекстного, меню мобильного шаблона f-olv, “Удалить запись”. |
showEditMenuItemInRow |
Флаг, определяющий, отображать ли пункт контекстного, меню мобильного шаблона f-olv, “Редактировать запись”. |
rowClickable |
Флаг, определяющий, следует ли обрабатывать нажатие на строчку. |
action |
Действие, выполняемое при нажатии на строчку. |
orderable |
Флаг, определяющий, возможно ли производить сортировку по столбцам в компоненте. |
sorting |
Метод определения текущей сортировки. |
sortByColumn |
Действие (action ) контроллера, которое должно быть выполнено для сортировки по столбцу. |
addColumnToSorting |
Действие (action ) контроллера, которое должно быть выполнено для добавления сортировки по столбцу. |
pages |
Метод определения доступных страниц для отображения в пейджинге. |
perPageValue |
Метод определения текущей настройки, где указано, по сколько записей отображается на странице. |
perPageValues |
Массив, определяющий, по сколько записей на странице можно отображать. |
hasPreviousPage |
Флаг, определяющий, есть ли у текущей страницы предшествующая. |
hasNextPage |
Флаг, определяющий, есть ли у текущей страницы последующая. |
previousPage |
Метод для перехода на предыдущую страницу. |
gotoPage |
Метод для перехода на заданную страницу. |
nextPage |
Метод для перехода на следующую страницу. |
editFormRoute |
Задаёт имя роута формы редактирования, в котором будет открываться модель. |
singleColumnHeaderTitle |
Заголовок для мобильного представления компонента, вместо названий колонок. Если не задан или равен “”, то шапка таблицы в компоненте скрывается. |
colsConfigButton |
Флаг (true /false ) включающий/выключающий отображение кнопок пользовательских настроек. |
bottomPagination |
Флаг, определяющий положение пагинации верху/снизу. |
Значения по умолчанию:
action: 'rowClick',
createNewButton: false,
refreshButton: false,
defaultSortingButton: true,
orderable: false,
rowClickable: true,
showCheckBoxInRow: false,
showDeleteButtonInRow: false,
showDeleteMenuItemInRow: false,
showEditMenuItemInRow: true,
colsConfigButton: true,
bottomPagination: true
Настройки списка по умолчанию
Экспорт в Excel
Технология Ember Flexberry
предоставляет возможность экспорта списков. Для того чтобы экспорт стал доступен в приложении, необходимо осуществить настройки на бекэнде.
В шаблоне непосредственно формы должно быть указано
{{flexberry-objectlistview
...
exportExcelButton=true
Настройки экспорта можно сохранять, задав наименование. Также можно изменять наименование столбцов для экспорта.
Удаление элементов списка
Для удаления элементов списка используется метод beforeDeleteRecord
. Метод поддерживает асинхронный режим, то есть можно возвращать promise
в качестве значения результата.
Удаление всех выделенных элементов
Для настройки одновременного удаления всех выделенных элементов списка, нужно в контроллере прописать событие beforeDeleteAllRecords
:
import ListFormController from './list-form';
export default ListFormController.extend({
actions: {
beforeDeleteAllRecords(modelName, data) {
if (modelName === 'application-user') {
data.cancel = false;
}
}
}
});
и указать его в шаблоне списка:
{{flexberry-objectlistview
...
beforeDeleteAllRecords=(action 'beforeDeleteAllRecords')
...
}}
Проверка списков перед удалением элементов
При работе со списком есть возможность возвращать promise
через return
в теле обработчика beforeDeleteRecord
, то есть можно реализовать асинхронную логику. Если сделать return < promise >
– тогда операция удаления будет вызываться после того, как будет выполнен promise
. Если его выполнение будет прервано, то удаление выполнено не будет.
Отображение ошибок списка
Если список содержит ошибки, то будет отображена форма с указанием ошибки:
- при загрузке списка с ошибкой в первый раз будет отображен шаблон
error.hbs
; - в контроллере есть список ранее загруженных объектов – ошибка будет показана через компонент.
Изменить это на прикладном уровне можно с помощью метода onModelLoadingRejected
в роуте.
Изменение ширины столбцов
Изменение ширины столбцов для списка и детейлов на форме редактирования осуществляется по общим принципам.
Для того чтобы включить/отключить изменение ширины столбцов, необходимо задать у контрола в шаблоне свойство allowColumnResize
(для обычных приложений это свойство по умолчанию имеет значение true
, для мобильных – false
).
Несмотря на то, что для мобильных приложений изменение ширины столбцов доступно, включать данный флаг для данного типа приложений не рекомендуется.
Если плагин инициализировался правильно, то после загрузки контрола при наведении курсора на границу между столбцами курсор меняет свой внешний вид и появляется возможность изменять ширину столбцов.
Возможно запретить изменение размеров отдельных столбцов, используя начальные настройки отображаемых столбцов в свойстве columnWidths
.
Сервис настроек пользователя
Если сервис настроек пользователя включён, то при загрузке спискового контрола вычитывается сохранённая настройка ширины столбцов, а при изменении ширины столбцов – настройка сохраняется.
Указание функции ограничения
Особенности настройки ограничений на списках описаны в статье Инструменты ограничения списка.
Пользовательские кнопки в тулбаре
Панель управления, как и кнопки в строках, может быть дополнена пользовательскими кнопками, реализующими необходимые прикладные функции для работы со списком. Подробнее описано в статье Настройки списков.