Вопрос

Как можно раскрасить колонку на детали в зависимости от ее значения?

Я находил подобные топики, но все ссылки на примеры битые, можно пожалуйста прислать акткульный пример
Единственный вариант, который сейчас идет в голову это изменять html стиль колонки с помощью стандартных инструментов js, но может уже есть стандартные способы как это сделать более просто и универсально

Нравится

2 комментария

Игорь, добрый день!

 

К сожалению, реализовать Вашу бизнес задачу базовой логикой системы, на данный момент, нет возможности. Уже есть зарегистрированная идея на ответственную команду разработки, для возможности реализации в следующих релизах, я добавлю данное обращение, чтобы поднять приоритет.

мой костыльный вариант выглядит так, впринципе работает, но не факт , что универсально
этот код надо писать в схеме страницы, а не детали

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;
			}

 

Показать все комментарии