gdmn
gdmn copied to clipboard
Настройка параметров атрибутов для визуального отображения
Данные параметры будут браться как значения по-умолчанию при настройке гридов и диалоговых окон.
Для всех атрибутов:
- видимость
- маска
- выравнивание (влево, вправо)
Для числовых:
- формат вывода
Для дат, времени:
- формат вывода.
Для булевских:
- Название для true и false значений.
- числа, даты, булевские значения при выводе на экран или печать преобразуются в строки в соответствии с заданными форматами.
- в операционной системе пользователь устанавливает предпочитаемые им форматы для чисел, денежных единиц и дат. cм. объект Intl.
- в подавляющем большинстве случаев нас устроят дефолтные форматы из операционной системы.
- в редких случаях, формат для конкретного атрибута может отличаться. Например, если это содержание драгметаллов, то его надо выводить с 6-ю знаками после десятичной точки, в то время как в целом, для чисел, в операционной системе может быть установлено 2 знака.
- формат может быть перекрыт пользователем на уровне отображения (в гриде, отчете). Например, некоторый отчет всегда может печататься в целых рублях, независимо от того, что в операционной системе для денежных единиц установлен вывод с точностью до копеек.
- мы хотим максимально минимизировать действия пользователя/внедренца по настройке форматов вывода. форматы должны применяться в следующей последовательности: формат на уровне отображения (грид, отчет) -- формат на уровне атрибута сущности -- формат на уровне операционной системы.
- возникает вопрос, для тех редких случаев, когда формат для атрибута отличается от формата по-умолчанию, где его хранить? можно добавить поле в класс атрибута и считывать/записывать его из at_ таблиц, но в большинстве случаев это поле будет undefined, что приведет к бесполезному расходу памяти, особенно учитывая, что атрибутов в большой er модели может быть много.
- другой вариант -- привязать специфический формат к семантической категории.
- особняком тут стоит форматирование булевских выражений, которые можно рассматривать как частный случай малого множества из двух элементов. Надо выяснить, реализована ли у нас поддержка малых множеств на стороне бэка?
Вывод
- Пока не трогаем бэк. Анализируем все возможные варианты.
- Для вывода чисел/дат на экран сначала применяем формат, определённый на уровне грида/отчета, а если он не задан, то дефолтные настройки операционной системы.
- При создании атрибутов, экранные элементы для задания форматов пока оставим, но никак не будем их учитывать при формировании запросов на бэк.