Что было бы хорошим подходом для обеспечения возможности d3 в пылесборнике?

Прямо сейчас я рассматривал возможность написания помощника по пыли, который переводит столбцы в файлы пыли на стороне сервера, используя специальный помощник по пыли и модуль 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 ответ

Решение

Я думал об этом, и я думаю, что лучше всего использовать d3 в качестве фильтра пыли вместо следующего:

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

    if (node) {
        return node.outerHTML;
    }

    return 'd3 selection not found';
};

И просто запустить код d3 перед началом рендеринга пыли.

Другие вопросы по тегам