Как можно раскрасить колонку на детали в зависимости от ее значения?
Я находил подобные топики, но все ссылки на примеры битые, можно пожалуйста прислать акткульный пример
Единственный вариант, который сейчас идет в голову это изменять 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;
}