@future-grid/fgp-graph
Version:
fgp-graph is a chart lib based on Dygraphs
69 lines (54 loc) • 2.33 kB
text/typescript
import {ToolbarConfig, ViewConfig} from "../../../metadata/configurations";
export default class Extra {
constructor(public parentElement: Element, public viewConfig: ViewConfig) {
this.initDom();
}
private initDom = () => {
const extra = document.createElement("div");
extra.setAttribute("class", "fgp-toolbar-area");
const toolbarConfig = this.viewConfig.graphConfig.features.toolbar;
if (toolbarConfig) {
// buttons
if (toolbarConfig.buttons) {
// add div first
const buttonContainer = document.createElement('div');
buttonContainer.setAttribute("class", "fgp-extra-buttons");
toolbarConfig.buttons.forEach(btn => {
//
let button: HTMLSpanElement = document.createElement("button");
button.className = "fgp-toolbar-button";
button.textContent = btn.label;
button.addEventListener('click', (event) => {
//
btn.func(btn.prop);
});
buttonContainer.appendChild(button);
});
extra.appendChild(buttonContainer);
}
// drops
if (toolbarConfig.dropdown) {
toolbarConfig.dropdown.forEach(dropdown => {
const drop = document.createElement("select");
drop.setAttribute("class", "fgp-toolbar-dropdown");
// options
dropdown.forEach(_config => {
const option = document.createElement("option");
option.text = _config.label;
drop.append(option);
});
drop.addEventListener("change", (e: Event) => {
//
dropdown.forEach(_config => {
if(_config.label === drop.value){
_config.func(_config.prop);
}
});
});
extra.appendChild(drop);
});
}
}
this.parentElement.appendChild(extra);
};
}