charts/src/js/objects/ChartComponent.js
2018-02-20 00:27:05 +05:30

51 lines
880 B
JavaScript

import { makeSVGGroup } from '../utils/draw';
export class ChartComponent {
constructor({
layerClass = '',
layerTransform = '',
preMake,
make,
postMake,
animate
}) {
this.layerClass = layerClass;
this.layerTransform = layerTransform;
this.preMake = preMake;
this.make = make;
this.postMake = postMake;
this.animate = animate;
this.layer = undefined;
this.store = [];
}
refresh(args) {}
render() {
this.preMake && this.preMake();
this.store = this.make();
this.layer.textContent = '';
this.store.forEach(element => {
this.layer.appendChild(element);
});
this.postMake && this.postMake(this.store, this.layer);
}
setupParent(parent) {
this.parent = parent;
}
loadAnimatedComponents() {
this.animate(this.store);
}
makeLayer() {
this.layer = makeSVGGroup(this.parent, this.layerClass, this.layerTransform);
}
}