UNPKG

@discoveryjs/discovery

Version:

Frontend framework for rapid data (JSON) analysis, shareable serverless reports and dashboards

29 lines (28 loc) 880 B
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); } }