import { Result, AppError, success } from '../utils/result'; import { WidgetDataLoaderInterface } from './widget-data-loader-interface'; import { WidgetInterface } from './widget-interface'; import Handlebars from 'handlebars'; export class TextWidget implements WidgetInterface { constructor( public dataLoader: WidgetDataLoaderInterface, public type: string, public template: string, ) {} async render( widgetParams: any, dataLoaderParams: any, dashboardParams: any, ): Promise> { const params = { widgetParams, dataLoaderParams, dashboardParams, }; const template = Handlebars.compile(this.template); const res = template(params); return success(res); } } export function createTextWidget( dataLoader: WidgetDataLoaderInterface, type: string, template: string, ): WidgetInterface { return new TextWidget(dataLoader, type, template); }