В сгенерированных приложениях на списковых формах и формах редактирования используются компоненты из аддона ember-flexberry. Данный аддон содержит различные компоненты, используемые на любых страницах приложения, в котором установлен даный аддон.
В этом разделе будут рассмотрены принципы использования и настройки компонентов в приложениях на Flexberry Ember.
Настройка свойств на примере компонента для работы с датой и временем
Процесс настройки на примере компонента для отображения атрибута shipmentDateTime (“Дата и время отгрузки”) на форме редактирования “Накладной”:
Используемый компонент календаря по умолчанию позволяет выбрать только дату, без времени. В приложении необходимо помимо даты выбрать также и время.
Открыть шаблон соответствующей формы редактирования и найти в нем разметку для создания компонента flexberry-simpledatetime, который используется для отображения атрибута model.shipmentDateTime:
app → templates → i-i-s-shop-invoice-e.hbs
Для различных аддонов, входящих в состав фреймворка Flexberry Ember, имеются тестовые стенды, на которых есть возможность посмотреть и протестировать перечень входящих в состав соответствующего аддона компонентов. В частности, для того чтобы понять, как настроить различные компоненты из аддона flexberry-ember
, можно открыть соответствующий тестовый стенд:
Выбрав страницу с настройками нужного компонента, можно поэкспериментировать с изменением различных свойств выбранного компонента и посмотреть, как при этом будет меняться его поведение.
Для компонента flexberry-simpledatetime
свойство type отвечает за выбор типа отображаемого компонента (с временем или без него). При установке в свойстве type
значения datetime-local у компонента появляется возможность выбирать не только дату, но и время (вид компонента, соответствующий текущим настройкам, можно увидеть под таблицей настроек).
Установить в шаблоне формы редактирования накладной для рассматриваемого компонента значение type=”datetime-local”:
После сохранения внесенных изменений компонент будет настроен требуемым образом.
Независимо от того, настроен ли компонент для выбора даты или даты с временем, в БД всегда будет записываться полная дата (дата + время), так как во Flexberry Designer указан тип DateTime для полей, в которых должна храниться дата. Тип DateTime при генерации БД сопоставляется с соответствующим типом данных для хранения даты и времени. Таким образом, если компонент в клиентском приложении не позволяет выбирать время, то оно по умолчанию будет иметь значение 00:00:00.
Чтобы потренироваться в настройке свойств компонентов, рекомендуется самостоятельно настроить режим “только для чтения” для компонентов, соответствующих следующим полям:
Класс Накладная
Дата оформления
Сумма заказа
Вес заказа
Список товаров к выдаче (+ убрать кнопки над таблицей и “чекбокс” в её шапке)
Класс Заказ
Дата оформления
Стоимость заказа
Дата отгрузки (по соответствующей накладной)
Подсказка: при необходимости воспользуйтесь возможностями тестового стенда аддона ember-flexberry
.
Настройка режима “только для чтения” у полей внутри детейлового компонента
Не всегда для компонентов аддона ember-flexberry
возможно настроить свойства непосредственно в шаблоне формы. Особым образом должны настраиваться компоненты, которые отображаются внутри детейлового компонента. Например, настройка режима “только для чтения” у компонентов в столбцах “Цена с налогом” и “Сумма по позиции” детейлового компонента для работы со “строками заказа” на форме радактирования Заказа. Для этого перейти к соответствующему контроллеру:
app → controllers → i-i-s-shop-order-e.js
В данном контроллере уже имеется код, который управляет настройкой свойств лукапа внутри детейлового компонента. Добавить следующий код, чтобы настроить режим “только для чтения” для содержимого отдельных столбцов детейлового компонента:
Новую функцию мы объявили внутри свойства actions: значением этого свойства является объект с методами, которые можно будет назначить в качестве обработчиков событий какого-либо компонента в шаблоне (подробнее об actions см. тут).
Теперь остается только настроить свойства детейлового компонента в шаблоне требуемым образом:
app → templates → i-i-s-shop-order-e.js
Значения в компонентах внутри указанных столбцов будут недоступны для редактирования:
Итог
В данном разделе были продемонстрированы принципы настройки компонентов из аддона ember-flexberry
, в том числе настройки компонентов внутри детейлового компонента. При этом для понимания того, как изменение конкретного свойства влияет на поведение компонента, можно воспользоваться возможностями тестового стенда аддона flexberry-ember
.