0

Я использую google.visualization.DataTable, и у меня есть два соответствующих столбца, мы будем называть их colSmall и colLarge. Если colSmall больше colLarge в любой заданной строке, то я хотел бы сделать цвет фона этой строки красным.Строка цвета путем сравнения двух столбцов визуализации Google DataTable

Ближайший я пришел с помощью google.visualization.ColorFormat(). Я могу сделать formatter и addRange, которые я могу использовать для жесткого кодирования определенного значения, так что если colSmall превысит это значение, он будет красным (см. Ниже).

var formatter = new google.visualization.ColorFormat(); 
formatter.addRange('100', null, 'black', 'red'); // anything greater than 100 will be red (the quotes are because these are string values) 
formatter.format(data, 7); // colSmall is index 7 

Мне не удалось найти способ взглянуть на другой столбец для этой строки. Еще одна проблема заключается в том, что это делает ячейку только красной, а не всей строки.

+0

см. [Этот ответ] (http://stackoverflow.com/a/36949638/5090771), включает в себя 3 примера, в том числе 'ColorFormat' и целую строку ... – WhiteHat

+0

API можно найти здесь: https: // developers.google.com/chart/interactive/docs/reference#colorformat –

ответ

0

Я нашел хакерский способ сделать это, но я бы предпочел что-то лучше.

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

Тогда для любой заданной строки, я могу сделать что-то вроде:

    var rowIndex = data.addRow(val); 
        if (colSmall > colLarge) { 
         data.setProperties(rowIndex, 2, {style: 'background-color:red'}); 
        } 

Для каждого столбца в этой строке (а не только колонке 2).

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