Webix Datatable cssFormat 不打印正确的颜色

Webix Datatable cssFormat not printing correct color

我用一些列配置了一个 webix 数据表,每个列有 属性:

cssFormat: colorByProd

哪里

function colorByProd(value, config) {
    var n = 0;
    var timeToCompare = 0;
    for (var i = 0; i < 8; i++) {
        if (value === config[i]) {
            var time = $$("detalleTurnoGrid").getColumnConfig(i).header[0];

            var n = parseInt($scope.fecha.substring(11, 13));
            var timeToCompare = parseInt(time.text.substring(0, 3));
            if (timeToCompare < n) {
                if (value < 31 && value >= 29)
                    return { "color": "#F7D358" };

                if (value < 29)
                    return { "color": "red" };

                if (value >= 31)
                    return { "color": "green" };

            } else {
                return { "color": "black" };
            }
            return value;
        }
    }
}

因此对于每一列,如果当前小时小于下一个小时,则该值应为黑色,例如: Correct Table --> 当前时间 == 11

如果现在是:11:00,11:00列和后面的列将是黑色的,但是10:00列将是彩色的(绿-黄-红),这几乎完美运行,但是,我有错误吗?

例如:如果值编号存在于其他前一小时列中,则 11:00 列值也会更改颜色,前提是该值存在于前一列中:

Wrong Table

感谢您的宝贵时间

看来你的代码有点过于复杂,你不需要在 colorByProd 中使用循环,因为代码总是 returns 单个单元格的颜色

function colorByProd(value, config) {
  var n = 11;
  var timeToCompare = parseInt(this.header[0].text.substring(0, 2));

  if (timeToCompare < n) {
    if (value < 31 && value >= 29)
      return { "color": "#F7D358" };

    if (value < 29)
      return { "color": "red" };

    if (value >= 31)
      return { "color": "green" };

  } else {
    return { "color": "black" };
  }
  return value;
}

勾选http://webix.com/snippet/26d4c32e