首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PivotTable.js在文本上有条件地改变颜色

PivotTable.js在文本上有条件地改变颜色
EN

Stack Overflow用户
提问于 2016-01-05 17:49:06
回答 3查看 3.2K关注 0票数 3

所以我和PivotTable.js一起工作,这对我的工作有很大的帮助。

但是现在,我正在尝试通过一个过滤器来根据值来改变单元格内的颜色或字体。

例如,如果我的数据集中有一个日期数组

代码语言:javascript
复制
dates = ["N/A", "4/12/2016", "7/9/2024", "7/9/2024", "4/1/2013"]

我希望在2016年6月1日前,任何日期都能改变颜色。

我将我的数据作为变量“数据”在本地传递,如果这有任何区别的话。

代码语言:javascript
复制
   $(function(){
        var derivers = $.pivotUtilities.derivers;
        var renderes = $.extend($.pivoUtilities.renderers, $.pivotUtilities.export_renderers);

        $("#pivot_table").pivotUI(data, {
              derivedAttributes: function(data){
                   // not sure how to access the css of the element from here
              }
              rows: [],
              cols: ["Name", "Date", "Organization", "Cost"],
              renderers: renderers,
              rendererName: "Table"
        });
   });

我试过进入derivedAttributes,但我尝试的一切都不起作用。

任何帮助或集思广益都将不胜感激。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2016-01-07 15:35:01

所以.我自己解决了.

PivotTable.js最大的优点之一是选项和排序的灵活性。所以我使用了onRefresh属性并给它提供了这个函数

代码语言:javascript
复制
onRefresh: function() {


var $labels = $('.pvtRowLabel')

  var today = new Date();
  var d = today.getDate();
  var m = today.getMonth()+1;
  var y = today.getFullYear();
  var date;
  var dateReg = /^\d{1,2}[\/]\d{1,2}[\/]\d{4}$/;

  // Goes through each cell with the class '.pvtRowLabel'
  for (var i=0; i<$labels.length; i++) {
    if ($labels[i].innerHTML.match(dateReg)) {
      date = $labels[i].innerHTML.split('/');
      if (Number(date[2]) == y) {
        if (Number(date[0]) == m) {
          if (Number(date[1]) <= d) {
            $('.pvtRowLabel').eq(i).addClass('expired');
          }
        } else if (Number(date[0]) < m) {
          $('.pvtRowLabel').eq(i).addClass('expired');
        }
      } else if (Number(date[2]) < y) {
        $('.pvtRowLabel').eq(i).addClass('expired');
      }
    }
  };
},

之后,只需使用css选择器指定要使用的颜色

代码语言:javascript
复制
.expired { background-color: #F08080 !important; }

我的解决方案的问题是,它给浏览器增加了更大的压力,因为每次刷新表时,它都会检查DOM和添加类。我不确定在第一次呈现时是否有办法完成这个任务,所以这些单元格在生成时总是被标记为过期。

票数 5
EN

Stack Overflow用户

发布于 2018-02-09 16:18:30

下面是我找到的一个解决方案,可以更改表中单个行的字体颜色,例如第5行:

代码语言:javascript
复制
$("#pivot-table").pivotUI(data, {
...
            onRefresh: function (config) {
                // Show row no.5 as red
                $("#pivot-table").find('.pvtVal.row5').css('color', 'red');
            },
...
});
票数 1
EN

Stack Overflow用户

发布于 2016-07-19 00:37:24

我通过编辑pivot.min.js文件进行自定义着色。您可能必须调整循环以隔离数据,并在js文件中添加所需的css样式。

票数 -2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34618116

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档