Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions pkg/connectors/icinga2/connector.go
Original file line number Diff line number Diff line change
Expand Up @@ -200,6 +200,7 @@ func (c *Connector) get(endpoint string, ctx context.Context) (io.ReadCloser, er
if res.StatusCode >= 200 && res.StatusCode < 300 {
return res.Body, nil
}
defer res.Body.Close()

if ct := res.Header.Get("Content-Type"); ct == "application/json" {
e := struct {
Expand Down
2 changes: 1 addition & 1 deletion pkg/web/common/server.go
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ func Serve(ctx context.Context, addr string, handler http.Handler) {
close(idleConnectionsClosed)
}()

slog.InfoContext(ctx, "Starting http server", slog.String("addr", addr))
slog.InfoContext(ctx, "Starting http server", slog.String("addr", "http://"+addr))

if err := srv.ListenAndServe(); !errors.Is(err, http.ErrServerClosed) {
// Still try to start, application might still do useful work
Expand Down
11 changes: 8 additions & 3 deletions pkg/web/static/js/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,6 @@ import * as Turbo from '@hotwired/turbo';
import ReconnectingWebSocket from 'reconnecting-websocket';
import { toggleFilteredStatus } from "./toggle-filtered";

toggleFilteredStatus();

class SSEConn {
constructor(socketUrl) {
this.socketUrl = socketUrl;
Expand Down Expand Up @@ -70,7 +68,12 @@ class FallbackConn {
let conn = this;
this.timerId = setTimeout(function reload() {
if (conn.active) {
let lastRefresh = Date.parse(document.querySelector("#last_refresh").dateTime);
let lastRefreshNode = document.querySelector("#last_refresh");
let lastRefresh = Date.now();
if (lastRefreshNode) {
lastRefresh = Date.parse(lastRefreshNode.dateTime);
}

if (Date.now() - lastRefresh > 90000) {
console.log("Force reloading, last refresh too old: " + (Date.now() - lastRefresh))
location.reload();
Expand Down Expand Up @@ -127,6 +130,8 @@ fallback.connect();
conn.connect();

document.addEventListener("DOMContentLoaded", function () {
toggleFilteredStatus();

console.log('Adding handler for manual disconnect.');
const csEl = document.getElementById('connection-state');
csEl.addEventListener("change", function () {
Expand Down
8 changes: 4 additions & 4 deletions pkg/web/static/js/index.min.js

Large diffs are not rendered by default.

4 changes: 4 additions & 0 deletions pkg/web/static/js/toggle-filtered.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,10 @@ export function toggleFilteredStatus() {
const toggleButton = document.getElementById("toggle-filtered-alerts");
const filteredTable = document.getElementById("filtered-table");

if (!toggleButton) {
return;
}

toggleButton.addEventListener("click", () => {
filteredTable.classList.toggle("hidden");
const filteredAreShown = !filteredTable.classList.contains("hidden");
Expand Down
11 changes: 10 additions & 1 deletion pkg/web/web.go
Original file line number Diff line number Diff line change
Expand Up @@ -306,9 +306,18 @@ func (h *WebHandler) wsRenderer(s *websocket.Conn, patterns ...string) wsRenderF
data.Environment = h.environment
data.Style = h.style

if err := tmpl.ExecuteTemplate(w, templateDefinition, data); err != nil {
// Note: we need to buffer the fully rendered template, it needs to be sent
// in one go to the frontend, otherwise Hotwire will not be able to piece
// it together.
buf := new(bytes.Buffer)

if err := tmpl.ExecuteTemplate(buf, templateDefinition, data); err != nil {
panic(errors.Join(TemplateError, err))
}

if _, err = w.Write(buf.Bytes()); err != nil {
panic(errors.Join(DisconnectError, err))
}
}
}

Expand Down