@discoveryjs/discovery
Version:
Frontend framework for rapid data (JSON) analysis, shareable serverless reports and dashboards
29 lines (28 loc) • 880 B
JavaScript
import { Dictionary } from "./dict.js";
export class PresetRenderer extends Dictionary {
#view;
constructor(view) {
super();
this.#view = view;
}
define(name, config) {
config = JSON.parse(JSON.stringify(config));
return PresetRenderer.define(this, name, Object.freeze({
name,
render: (el, _, data, context) => this.#view.render(el, config, data, context),
config
}));
}
render(container, name, data, context) {
const preset = this.get(name);
if (!preset) {
const errorMsg = "Preset `" + name + "` is not found";
console.error(errorMsg, name);
const el = container.appendChild(document.createElement("div"));
el.className = "discovery-buildin-view-config-error";
el.textContent = errorMsg;
return Promise.resolve();
}
return preset.render(container, null, data, context);
}
}