Webix Datatable cssFormat无法打印正确的颜色

时间:2017-04-27 09:16:34

标签: javascript webix

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

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

,其中

{{1}}

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

如果现在是:11:00,列11:00和下一个将是黑色,但10:00列将是彩色的(绿 - 黄 - 红),这几乎是完美的但是我得到了一个错误?

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

Wrong Table

感谢您的时间

1 个答案:

答案 0 :(得分:1)

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

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