d3-visualize
Version:
d3-view components for data visualization
46 lines (37 loc) • 1.35 kB
JavaScript
import {pop, assign} from 'd3-let';
import {vizComponent} from './dashboard';
import Visual from '../core/visual';
//
// Visual component
// ======================
//
// An element containing a visualization
export default assign({}, vizComponent, {
build (schema, inner, attrs) {
var sel = this.createElement('div'),
type = schema.type || 'visual',
model = this.model,
visualDrawOnMount = pop(schema, 'visualDrawOnMount'),
options = {},
layers;
if (attrs.class) sel.attr('class', attrs.class);
if (type === 'visual') {
layers = pop(schema, 'layers');
options = schema;
}
else
options.visual = pop(schema, 'visual') || {};
if (visualDrawOnMount !== undefined) model.visualDrawOnMount = visualDrawOnMount;
model.visual = new Visual(sel.node(), options, model.visual, model.visual ? null : model.$new());
if (type !== 'visual') model.visual.addVisual(schema);
else if (layers) {
layers.forEach(layer => model.visual.addVisual(layer));
}
return sel;
},
// once the element is mounted in the dom, draw the visual
mounted () {
if (this.model.visualDrawOnMount === false) return;
this.model.visual.redraw();
}
});