mirror of
https://github.com/SigNoz/signoz.git
synced 2026-06-25 01:20:32 +01:00
* feat(web): add support web settings in index.html * feat(web): remove settings from global config * feat(web): fix openapi schemas * feat(web): fix formatting issues * feat(web): fix formatting issues * feat(web): remove frontend script changes * feat(web): remove the redundant test * feat(web): update defaults
49 lines
1.4 KiB
Go
49 lines
1.4 KiB
Go
package web
|
|
|
|
import (
|
|
"bytes"
|
|
"context"
|
|
"html/template"
|
|
"log/slog"
|
|
|
|
"github.com/SigNoz/signoz/pkg/errors"
|
|
)
|
|
|
|
// Field names map to the HTML attributes they populate in the template:
|
|
// - BaseHref → <base href="[[.BaseHref]]" />
|
|
// - Settings → window.signozBootData = { settings: [[.Settings]] }
|
|
type TemplateData struct {
|
|
BaseHref string
|
|
|
|
// Settings is the pre-serialized JSON of web.Settings for injection into a
|
|
// <script> block. The template.JS type prevents html/template from
|
|
// HTML-escaping the value.
|
|
Settings template.JS
|
|
}
|
|
|
|
// If the template cannot be parsed or executed, the raw bytes are
|
|
// returned unchanged and the error is logged.
|
|
func NewIndex(ctx context.Context, logger *slog.Logger, name string, raw []byte, data TemplateData) []byte {
|
|
result, err := NewIndexE(name, raw, data)
|
|
if err != nil {
|
|
logger.ErrorContext(ctx, "cannot render index template, serving raw file", slog.String("name", name), errors.Attr(err))
|
|
return raw
|
|
}
|
|
|
|
return result
|
|
}
|
|
|
|
func NewIndexE(name string, raw []byte, data TemplateData) ([]byte, error) {
|
|
tmpl, err := template.New(name).Delims("[[", "]]").Parse(string(raw))
|
|
if err != nil {
|
|
return nil, errors.WrapInvalidInputf(err, errors.CodeInvalidInput, "cannot parse %q as template", name)
|
|
}
|
|
|
|
var buf bytes.Buffer
|
|
if err := tmpl.Execute(&buf, data); err != nil {
|
|
return nil, errors.WrapInvalidInputf(err, errors.CodeInvalidInput, "cannot execute template for %q", name)
|
|
}
|
|
|
|
return buf.Bytes(), nil
|
|
}
|