Добрый день,
помогите решить задачу!
Необходимо формировать цветовую окраску в реестре продаж соответственно стадиям.
В справочнике "Стадии продаж" добавлено поле выбора цвета. Однако при попытке отобразить это поле в реестре (Вид/Настроить колонки), подтягивается не сам цвет, а его текстовое значение.
Подскажите пожалуйста, как подтянуть цвет?
Версия 7.4, скриншот прилагаю
Нравится
Здравствуйте, Дмитрий.
Выделять записи цветом в реестре возможно с помощью параметра customStyle строки реестра.
Параметр должен содержать стили в виде объекта, который может обработать Ext.DomHelper.generateStyles (http://docs.sencha.com/extjs/4.2.0/#!/api/Ext.DomHelper-method-generate…).
Пример (метод на странице раздела):
onGridLoaded: function () { this.callParent(arguments); var gridData = this.get('GridData'); var items = gridData.getItems(); var loadedObject = {}; Terrasoft.each(items, function (item) { item.customStyle = { backgroundColor: 'red' }; }); }
Т.е. базовым функционалом это не реализовать, только конфигурационной доработкой.
Здравствуйте!
Обнаружил что описанным выше способом можно применить стили только к записям первой страницы(
При прокрутке вниз записи грузятся без стилей
Подскажите, как применить стили ко всем записям
Добрый день
Насколько я понял с помощью модуля CommonCSSV2 и вкладки LESS можно задавать постоянные стили, в таком случае мне это не подходит.
Необходимо, чтобы каждая запись реестра продаж имела цвет зависящий от стадии данной продажи.
Я обратил внимание, что при прокрутке записей и добавлении новых записей в грид, метод onGridLoaded отрабатывает повторно, но стили не применяются
<pre>define("OpportunitySectionV2", ["VisaHelper", "LookupUtilities", "css!VisaHelper", "OpportunityPageV2"], function(VisaHelper, LookupUtilities, OpportunityPageV2) { return { entitySchemaName: "Opportunity", attributes: {}, methods: { init: function() { this.callParent(arguments); var esq = Ext.create("Terrasoft.EntitySchemaQuery", { rootSchemaName: "OpportunityStage" }); esq.addColumn("Id"); esq.addColumn("UsrStageColor"); esq.getEntityCollection(function(result){ var res = result.collection.collection.items; var record = {}; Terrasoft.each(res, function(item) { var id = item.values.Id; var color = item.values.UsrStageColor; record[item.values.Id] = item.values.UsrStageColor; }); Terrasoft.SysValue.CURRENT_COLORS = record; }, this); }, onGridLoaded: function() { this.callParent(arguments); this.colorize(); }, colorize: function() { var gridData = this.get('GridData'); var items = gridData.getItems(); var loadedObject = {}; Terrasoft.each(items, function (item) { var stage = item.get('Stage'); item.customStyle = { backgroundColor: Terrasoft.SysValue.CURRENT_COLORS[stage.value] }; }); } }, diff: /**SCHEMA_DIFF*/[]/**SCHEMA_DIFF*/ } });</pre>
Попробуйте создать схему со стилями, подключить её в вашу схему и каждому элементу присваивать нужный стиль
"Олейников Владимир Владимирович" написал:Попробуйте создать схему со стилями, подключить её в вашу схему и каждому элементу присваивать нужный стиль
Если можно, приведите пожалуйста пример кода.
Заранее благодарен.
"Безродный Андрей" написал:Здравствуйте, Дмитрий.
Выделять записи цветом в реестре возможно с помощью параметра customStyle строки реестра.
Параметр должен содержать стили в виде объекта, который может обработать Ext.DomHelper.generateStyles (http://docs.sencha.com/extjs/4.2.0/#!/api/Ext.DomHelper-method-generateStyles).
Пример (метод на странице раздела):
onGridLoaded: function () {
this.callParent(arguments);
var gridData = this.get('GridData');
var items = gridData.getItems();
var loadedObject = {};
Terrasoft.each(items, function (item) {
item.customStyle = {
backgroundColor: 'red'
};
});
}Т.е. базовым функционалом это не реализовать, только конфигурационной доработкой.
Попробуйте этот же код запихнуть в метод Render, только сначала вызовите функцию CallParent()