В рамках реализации требований от аналитиков на проекте столкнулись со следующим кейсом:
Создать справочник M;
Создать в справочнике N связанное свойство-ссылку на справочник M и вынести его контрол X на форму;
В справочнике N контрол X должен подсвечиваться цветом, указанным в связанной записи справочника M;
Администратор системы должен иметь возможность изменить цветовое выделение в проводнике при создании записи справочника M;
В веб-клиенте Directum RX существует функциональность цветовыделения контролов свойств. Есть возможность задавать подсветку предопределённой палитрой цветов Colors.Common или же использовать код цвета модели RGB глубиной 8 бит #RRGGBB (шестнадцатеричное представление красного, зелёного и синего каналов цвета от 0x00 до 0xFF соответственно). У системы есть возможность динамически менять цвет контрола при каждом обращении к нему или при обновлении формы. Получить итоговый цвет можно получить из строкового представления.
При использовании данного метода были выявлен недостаток — отсутствие визуализации цвета при определении его кодом #RRGGBB. Иначе говоря, увидеть цвет можно только по факту его определения в дополнительном свойстве и нужно использовать сторонние палитры цветов (например, в поисковике Яндекса).
Была поставлена задача реализации палитры цветов модели RGB глубиной 8 бит с помощью стороннего контрола.
Данный функционал позволит:
В рамках выполняемой задачи были определены следующие ограничения:
При реализации палитры цветов были учтены следующие нюансы:
· Палитра цветов создается с помощью дистрибутива сторонних контролов на языке программирования TypeScript в связке с фреймворком ReactJS:
· Добавлена логика поддержки цветового кода с помощью свойства типа Строка и ранее созданного стороннего контрола со стороны Directum RX:
С точки зрения разработки добавляется новое свойство типа Строка для хранения кода цвета, добавляется связка стороннего контрола с этим свойством и идёт обращение к данному значению вида:
_obj.State.Properties.Name.HighlightColor = Colors.Parse(_obj.ColorCode);
где _obj.ColorCode — строковое преставление кода #RRGGBB, которое можно подтянуть через API со стороннего контрола палитры (без альфа-канала).
Теперь значение цвета можно визуально задавать в проводнике системы.
Решение отличное, но не слишком много свободы пользователю? Розовые, фиолетовые, черные контролы - можно сделать очень нечитаемую форму. Мы как-то делали настроечный справочник с предустановленным набором приглушенных цветов, чтобы нельзя было из формы сделать ужасно разноцветную штуку. Хотя по большей части всё сводилось к тому, что обязательные незаполненные поля подсвечивались бледно-красным, важные поля которые нужно проверить бледно-оранжевым, другие цвета почти не использовали как раз по причине того, что пользователи терялись и путались если форма была всех цветов радуги.
Антон, в процессе разработки было понимание, что далеко не вся палитра RGB годится для отображения на форме. При этом мы хотели, чтобы настроечная история была расширена и можно было настроить под те или иные задачи цвет. Функциональность мы предоставили, а донастроить цвет может аналитик, консультант или иной специалист, который не имеет прямое отношение к разработке.
Авторизуйтесь, чтобы написать комментарий