0

現在、カスタムダストヘルパーとノードの 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 の個々のコンポーネントのヘルパー。

4

1 に答える 1

0

私はそれについて考えてきましたが、次のように代わりにd3をダストフィルターとして使用する最善の方法は次のとおりです。

dust.filters.d3 = function(value) {
    var node = d3.select(value).node();

    if (node) {
        return node.outerHTML;
    }

    return 'd3 selection not found';
};

そして、ダストレンダリングを開始する前に d3 コードを実行するだけです。

于 2015-08-08T20:25:35.487 に答える