Как можно раскрасить колонку на детали в зависимости от ее значения?
Я находил подобные топики, но все ссылки на примеры битые, можно пожалуйста прислать акткульный пример
Единственный вариант, который сейчас идет в голову это изменять html стиль колонки с помощью стандартных инструментов js, но может уже есть стандартные способы как это сделать более просто и универсально
Нравится
Игорь, добрый день!
К сожалению, реализовать Вашу бизнес задачу базовой логикой системы, на данный момент, нет возможности. Уже есть зарегистрированная идея на ответственную команду разработки, для возможности реализации в следующих релизах, я добавлю данное обращение, чтобы поднять приоритет.
мой костыльный вариант выглядит так, впринципе работает, но не факт , что универсально
этот код надо писать в схеме страницы, а не детали
initModelColumns: function() { this.callParent(arguments); this.console.log("initModelColumns"); window.setTimeout(this.setStyle, 500); }, setStyle : function() { const selectors = document.querySelectorAll("div[id*=BudgetDetail] > div > span[grid-data-type=number]"); const color = "#C41E3A"; const textColor = "#DAFA1E" this.console.log(selectors); selectors.forEach(function(i) { const isSetStyle = i.outerText.startsWith("-"); if(isSetStyle) { i.style.backgroundColor = color; i.style.color = textColor; } else { i.style = {}; } }) },
Также прилагаю код для указания стиля на странице редактирования
Для коректного поиска по columnName необходимо в блоке diff в поле name колонки указать ее название, оно будет использоваться для поиска
setColumnStyle: function(columnName, style, condition) { const selector = this.findSelector(columnName); if(selector) { if(condition) { selector.style = {}; } else { for (const item in style) { selector.style[item] = style[item] } } } }, findSelector: function(columnName) { let path = `input[id*="${columnName}"]`; let selector = document.querySelector(path); if(!selector) { const caption = this.columns[columnName].caption; path = `div[data-item-marker*="${caption}"] > input`; selector = document.querySelector(path); } return selector; }