Google 图表的动态样式 Table

Dynamic Styling of Google Charts Table

我正在寻找动态地将样式应用于 Google 图表 Table 中的特定行。具体来说,我希望将包含特定字符串的行文本加粗。例如,如果文本 'total' 出现在一行中,我希望这一行的所有文本都是 bold.

此 table 正在填充来自 Keen IO 查询的结果,因此我无法确定感兴趣的文本可能出现在 table 中的何处。

我正在查看在以下位置找到的文档:https://developers.google.com/chart/interactive/docs/gallery/table#customproperties
此页面建议应用 CSS 样式,可以在以下位置查看示例:https://developers.google.com/chart/interactive/docs/examples

但是,此示例在 table 中的数据填充期间应用了 CSS。我的数据是动态查询的结果,所以我无法使用这种方法。我可能需要在过程的后期注入内联 CSS。

例子

我将用一个例子来演示这个场景。假设我对 Keen IO 进行了查询,获取了各种 'devices' 的版本和计数。此数据采用 JSON 形式。当数据输入 Google 图表工具时,输出以下 table..

device  version count  
item1   1.0     4
item1   1.1     3  
item1   total   7  
item2   5.4     8  
item2   5.5     2  
item2   6.0     14  
item2   total   24  

我还可以通过 Keen API 指定图表选项,然后将其传递给底层 Google 图表引擎。这些选项也是 JSON 形式。例如

{
  "chartOptions": {
    "page": "enable",
    "pageSize": 25
  }
}

会导致结果 table 包含页面大小为 25 的分页。

其他参考文献

Keen Visualizaion 文档:https://github.com/keen/keen-js/blob/master/docs/visualization.md


类似但不同的问题:
Applying CSS to Google Visualization Table
Styling Google Charts Table


通常您将定义 Keen 查询,然后创建可视化对象,最后 运行 查询和可视化。以下是如何操作绘制图表的数据的示例:

Keen.ready(function(){
    // Create a new Query instance
    var query = new Keen.Query("count", {
        event_collection: "user_action",
        group_by: "user.name",
        timeframe: {
      start: "2013-12-01",
      end: "2014-12-01"
    }
    });
    
    // Create a new Dataviz instance
    var table = new Keen.Dataviz()
     .chartType('table')
      .el(document.getElementById('table'))
      .chartOptions({
        width: '100%'
      });
    
    // Run the query and the result
    client.run(query, function(err, res){
        table
         .parseRequest(this)
          .dateFormat(function(googleDataTable){
           // .setProperty(rowIndex, colIndex, 'className', 'your-class-here')
            googleDataTable.setProperty(3, 0, 'className', 'custom custom-left');
            googleDataTable.setProperty(3, 1, 'className', 'custom custom-right');
            return googleDataTable;
          })
          .render();
    });

将 table 中的一行设置为不同格式的特定 JS 代码行是:.setProperty(rowIndex, colIndex, 'className', 'your-class-here')

我将 link 添加到 JavaScript fiddle 中 运行 此代码并显示 table 正在动态格式化以突出显示一行: http://jsfiddle.net/keen/6qnpuwLx/

如果您有兴趣添加逻辑,只需将您的 if 语句包含在 client.run() 函数中即可。