Что было бы хорошим подходом для обеспечения возможности 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 перед началом рендеринга пыли.