MCPcopy
hub / github.com/glanceapp/glance / renderTemplate

Method renderTemplate

internal/glance/widget.go:217–241  ·  view source on GitHub ↗
(data any, t *template.Template)

Source from the content-addressed store, hash-verified

215}
216
217func (w *widgetBase) renderTemplate(data any, t *template.Template) template.HTML {
218 w.templateBuffer.Reset()
219 err := t.Execute(&w.templateBuffer, data)
220 if err != nil {
221 w.ContentAvailable = false
222 w.Error = err
223
224 slog.Error("Failed to render template", "error", err)
225
226 // need to immediately re-render with the error,
227 // otherwise risk breaking the page since the widget
228 // will likely be partially rendered with tags not closed.
229 w.templateBuffer.Reset()
230 err2 := t.Execute(&w.templateBuffer, data)
231
232 if err2 != nil {
233 slog.Error("Failed to render error within widget", "error", err2, "initial_error", err)
234 w.templateBuffer.Reset()
235 // TODO: add some kind of a generic widget error template when the widget
236 // failed to render, and we also failed to re-render the widget with the error
237 }
238 }
239
240 return template.HTML(w.templateBuffer.String())
241}
242
243func (w *widgetBase) withTitle(title string) *widgetBase {
244 if w.Title == "" {

Callers 15

RenderMethod · 0.80
initializeMethod · 0.80
initializeMethod · 0.80
RenderMethod · 0.80
RenderMethod · 0.80
RenderMethod · 0.80
initializeMethod · 0.80
initializeMethod · 0.80
RenderMethod · 0.80
RenderMethod · 0.80
RenderMethod · 0.80
RenderMethod · 0.80

Calls 1

StringMethod · 0.45

Tested by

no test coverage detected