Feature/syslog dashboard - #363
Merged
Merged
Conversation
…arallel processing The master poller aggregated worker statistics through the per process cached read_config_option() helper. It had already read the same stats_syslog_child_N keys while waiting out the references phase, where the moved count is always zero, so the transfer aggregation re-read those cached numbers and the 'Records processed' figure on the Syslog Status tab stayed at zero. Move syslog_aggregate_worker_stats() next to the other worker helpers in functions.php and read the settings rows with a dedicated fresh SELECT, ignoring rows outside the configured worker range. Add regression tests pinning the fresh read, pruning, malformed-row handling, and the source scan that bans read_config_option() from the aggregation helper.
…ndling - Serialize panel expressions through syslogBuilderSync() so the DSL string (not the builder's structured JSON) reaches the backend, fixing 'Invalid logical search' errors on every panel save - Rebuild the chart select per panel kind (donut for breakdowns) and refresh selectmenu widgets after programmatic value changes so dropdowns show and submit the right values - Import saved searches from a server-parsed tree instead of wiping the builder model, restoring working saved-search dropdown seeding - Auto-select the first owned dashboard on tab entry so Add Panel is reachable and the correct empty state shows - Embed panel trees for editing so the dialog rehydrates exactly what was saved; guard Save against invalid builder rows
- Backtick the interval column in panel INSERT/UPDATE: it is a MySQL reserved word, so unquoted use made every panel save fail silently (the reported 'dropdowns do nothing' was saves never persisting) - Treat empty result arrays as not-found in dashboard/panel loads: some Cacti builds return [] instead of false from prepared row fetches, which had misreported every panel as an invalid source - Resolve new dashboard/panel ids by owner/name lookup when the connection's insert id is unavailable - Scope .syslogDashboardEmpty[hidden] to display:none so the theme cannot override the empty-state visibility
The dialog's expression builder rendered its field/operator selects as plain native controls because the builder element lacked the 'cacti' theme marker, making interaction inconsistent (native OS popups, and perceived unresponsive clicks) with the themed selects around it
The modal dialog's focus containment blurs menus that live outside its wrapper, which corrupts the selectmenu open/close state after the first selection — the next click on the same button toggled internal state without ever rendering the menu, so the dropdown worked exactly once Move each selectmenu's menu wrap into the dialog's own stacking context on open, the same way autocomplete suggestion menus are already handled
…board All-records timeseries panels emitted a double comma in each UNION branch (the bucket select already ends with a comma), producing invalid SQL. Breakdown panels crashed chart init in billboard.js: empty or duplicate sanitized labels become falsy/colliding legend ids, and getLegendItemTextBox() returns undefined for falsy ids. Blank labels now render as 'Unknown' and duplicate labels merge their counts
Panels can now be rearranged by dragging their header: drop targets show a placement line above or below the hovered card, and the drop posts the new absolute position, which the server renumbers gaplessly. Horizontal resizing gets a dedicated full-height edge strip (ew-resize) alongside the corner handle, so widening a panel does not require grabbing the tiny diagonal grip
Cacti 1.2 ships Font Awesome 5, which has no fa-pencil rule, so the edit icon rendered as an empty 14px void and the button appeared missing
- add admin page for dashboards - add user/group permissions to enable/.disable dashboarding
New syslog_dashboards_perm and syslog_saved_searches_perm tables store explicit user and group grants, managed from the admin Dashboards and Saved Search Templates pages with Cacti's jQuery multiselect widget. Visibility checks honor the grants: granted items appear in a new "Shared With Me" group of the viewer's selects, granted dashboards are view-only with "Save as my copy", and share rows are cleared when their item is deleted. Co-Authored-By: Claude Code <noreply@anthropic.com>
The dashboard tab already persisted a refresh value in the session and set_page_refresh() reloaded it, but there was no control to change it. Add a Refresh select beside Time Range using Cacti's page_refresh_interval options, wire its change through the same full-page nav as the timespan select so the interval lands in sess_sl_dashboard_refresh, and style it to match the existing dashboard bar. Co-Authored-By: Claude Code <noreply@anthropic.com>
- Alert Logs tab: initialize the value filter buttons, which rendered but had no click handlers bound on that tab - Alert Rules, Removal Rules, and Reports pages: point the Enabled and Rows selects at their per-page filter functions instead of the log viewer's global applyFilter(), which navigated away to syslog.php - URL-encode the search term in applyFilterAlerts/Removal/Reports so terms containing &, #, +, or % survive the round trip - Drop silently discarded extra arguments from html_escape() in the grouped message detail rows Co-Authored-By: Claude Code <noreply@anthropic.com>
Fix dead click-to-filter buttons and broken admin page filters
TheWitness
approved these changes
Sep 19, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This feature brings dashboard functionality
This is mostly feature complete but still under QA