在尘埃助手中提供d3能力的好方法是什么?

时间:2015-08-07 17:39:14

标签: javascript node.js d3.js dust.js dust-helpers

现在我一直在考虑编写一个灰尘助手,使用定制的灰尘助手和节点的d3模块将条形图呈现在服务器端的灰尘文件中。我想知道是否有更好的方法,而不是像这样构造某种上下文对象传递给灰尘渲染器:

{
  padding: {
    top: integer,
    right: integer,
    bottom: integer,
    left: integer
  },
  width: integer,
  height: integer,
  data: [datum, ...],
  x: {
    scale: {
      type: string, // 'linear', 'time', 'ordinal'
      range: 'extent', // optionally [lower, upper]
      tick: { // if applicable
        format: string, // d3 number format for linear scale
                        // d3 time format for time scale
        args: integer | [interval, integer]
      }
    },
    value: string, // datum[value] used for x-axis
  },
  y: {
    ...
  }
}

依此类推,然后d3使用此方案呈现自定义组件并将SVG标记作为字符串返回。这对我来说似乎是一个非常冗长的选项,需要添加越来越多的属性来填充上下文,直到它变得太乱以至于管理不好,这就是为什么我想知道是否有更好的方法可能会分裂灰尘d3的各个组成部分的助手。

1 个答案:

答案 0 :(得分:0)

我一直在考虑这个问题以及我认为将d3用作尘埃过滤器的最佳方式,如下所示:

class User < ActiveRecord::Base
  serialize : news_source_ids
end

user = Emission.create(:scholarship=> { "name" => "test", "news_source_ids" => ["1", "2"]})
Emission.find(usernews_source.id).scholarship# => { "name" => "test", "news_source_ids" => ["1", "2"] }

在开始渲染灰尘之前运行d3代码。