Создали раздел "Заявки" добавили к нему иконку с прозрачным фоном, для того чтобы при смене цветовой схемы всё корректно отображалось. Но теперь когда создаем напоминание на этот раздел в области уведомлений иконка тоже прозрачная на белом фоне. Соответственно её не видно.
Как сделать чтобы иконка корректно отображалась в списке разделов и в области уведомлений?
И ещё один вопрос: можно ли сделать напоминание на деталь а не на раздел?
Версия 7.5
Нравится
Вячеслав, добрый день!
1. Если я правильно понял, то изображение для уведомлений можно добавить в модуле «NotificationsModule» (Рис. 1) (предварительно необходимо заместить).
Для корректного отображения необходимо, чтобы размер был 42х42 pixels и была заливка заднего фона (например, серый).
2. Такой возможности в приложении нет.
Заместил NotificationsModule, скопировал исходный код. Загрузил изображение, но получаю ошибку в консоли "Cannot read property 'source' of undefined"
Выяснил что ругается на эту функцию:
/** * Создает контейнер для размещения текста о новых уведомлениях * @private * @return {Object} Возвращает экземпляр конфигурации контейнера */ getMessageContainer: function() { debugger; return { className: "Terrasoft.Container", id: "messageContainer", selectors: {wrapEl: "#messageContainer"}, classes: {wrapClassName: ["showNewNotificationContainer-class"]}, visible: {bindTo: "ShowNewNotificationsVisible"}, items: [ { className: "Terrasoft.Button", caption: {bindTo: "getShowNewNotificationText"}, classes: {textClass: ["showNewNotificationButton-class"]}, style: Terrasoft.controls.ButtonEnums.style.TRANSPARENT, iconAlign: Terrasoft.controls.ButtonEnums.iconAlign.LEFT, imageConfig: { source: Terrasoft.ImageSources.URL, url: Terrasoft.ImageUrlBuilder.getUrl(resources.localizableImages.More) }, click: {bindTo: "onShowNewNotificationClick"} } ] }; },
Как я понимаю не может получить путь к изображению в строке
"url: Terrasoft.ImageUrlBuilder.getUrl(resources.localizableImages.More)"
потому, что resources.localizableImages.More = undefined
Я так понимаю, что при замещении объекта, localizableImages не подтянулись. Допустим ActivityImage и DocumentImage я могу перезалить. А вот что такое More ?
И в связи с чем вопрос почему на вкладке "Изображения" изображения не отображаются? Я бы мог оттуда их вытащить.
Вячеслав, судя по сообщению:
"Ляутин Вячеслав Андреевич" написал:Заместил NotificationsModule, скопировал исходный код. Загрузил изображение, но получаю ошибку в консоли "Cannot read property 'source' of undefined"
У Вас не подгрузились ресурсы.
Есть не большая специфичность у модулей. При замещении модулей необходимо копировать полностью код, в ручную добавлять в структуру замещенного модуля, например, Images, т.е. копировать из родительского «ActivityImage», «DocumentImage» и т.д. И затем заново загружать изображения в поле «Изображение».
Также название в структуре для всех изображений необходимо задать новое (например, ActivityImageNew), а также изменить в коде на соответствующее название объекта.
Например:
imageConfig: {
source: Terrasoft.ImageSources.URL,
url:Terrasoft.ImageUrlBuilder.getUrl(resources.localizableImages.MoreNew)
},
click: {bindTo: "onShowNewNotificationClick"}
}
"Ляутин Вячеслав Андреевич" написал:
Я так понимаю, что при замещении объекта, localizableImages не подтянулись. Допустим ActivityImage и DocumentImage я могу перезалить. А вот что такое More ?
Это «стрелка», которая отображается, когда панель немного пролистнут вниз и показывает, что присутствуют новые уведомления.
"Ляутин Вячеслав Андреевич" написал:
И в связи с чем вопрос почему на вкладке "Изображения" изображения не отображаются? Я бы мог оттуда их вытащить.
Колонка «Изображение» работает только на импорт файлов.
Изображение можно отобразить используя разметку страницу в браузере.
Например, можно поступить следующим образом, прописать в адресной строке:
https://название_сайта/0/img/source-code/hash/NotificationsModule/More
, где
NotificationsModule – название модуля
More – название изображения
И в результате можно сохранить изображение на рабочий стол.
Загрузил изображение для localizableImages.More
Ошибок нет и все картинки отображаются как и прежде. Т.е. стандартные разделы отображаются иконками с фоном. А мой кастомный раздел "Заявки" на прозрачном фоне, хотя в localizableImages.EmptyImage загрузил иконку с фоном.
На всякий случай загружаю скриншот исходного кода NotificationProvider для моего раздела
А еще пришлось переписывать все localizableStrings.
Вячеслав, как писал ранее:
«Есть не большая специфичность у модулей. При замещении модулей необходимо копировать полностью код, в ручную добавлять в структуру замещенного модуля, например, Images, т.е. копировать из родительского «ActivityImage», «DocumentImage» и т.д.»
Чтобы корректно заместить модуль необходимо полностью копировать и переименовывать локализированные строки, так значения родительского объекта не вызовутся.
После проделанных действий обязательно нужно чистить Redis и кэш браузера.
Если данный способ не помог, то можно поступить следующим образом:
- создать справочник через, который можно будет загружать изображения в таблицу SysImage (см. прикрепленный файл;
sozdanie_spravochnika_s_izobrazheniem.docx
- в SysImage найти ID нужного изображения;
- проапдейтить изображения в колонке LogoID для нужного раздела (таблица SysModule);
- почистить Redis и кэш браузера.
Кэш и редис конечно чистил.
Я пока не пробовал способ через справочник. Но в теории мне кажется это не совсем то, что мне надо. У меня уже есть иконка раздела и колонка LogoID в таблице SysModule заполнена для моего раздела "Заявки". Там у меня хранится иконка с прозрачным фоном как я понимаю. А если я вместо неё загружу с фоном тогда при смене цветовой схемы в списке разделов будет не корректно отображаться иконка.
И еще исходя из названия локализированной картинки EmptyImage - она используется когда у раздела нет иконки, а у меня то она есть.
Или я что-то не так понимаю?..
Вячеслав, Вам необходимо загрузить в SysImage изображение. Нет разницы каким способом Вы это сделаете (через новый справочник или например, можно загрузить через мастер раздела изображение а потом вернуть прежнюю).
Если Вы хотите:
1. иконку для левой панели, где размещаются разделы, то Вам необходима прозрачная иконка и проапдейтить колонку «Image32Id» (таблица SysModule);
2. иконку для правой панели (панель уведомлений), то Вам необходима иконка с фоном (заливкой) и проапдейтить колонку «LogoId» (таблица SysModule);
Т.е загружаете изображение, узнаете ID и обновить значение для соответствующей колонки.
Да! Вот именно это мне и нужно было, оказывается колонка "Image32Id" для левой панели а "LogoId" для правой!
Спасибо большое всё заработало!
NotificationsModule можно не трогать.