CHANGELOG - Storage Saturation Report Component =============================================== Version 1.0.3 - January 31, 2026 ---------------------------------- - PDF export: switched to client-side jsPDF + html2canvas (no Nagios XI Chromium/command pipeline). Export PDF now generates the PDF in the browser and triggers download; fallback to window.print() if jsPDF or html2canvas unavailable. Works regardless of XI command processor or Chromium. - Progress bar: restored color styles (green/amber/red) in the minimal export document so the "percent used" bar displays correctly when that HTML is used (e.g. client-side capture, print). - Vendor: optional jspdf.umd.min.js in scripts/vendor/ for PDF; CDN fallback. See scripts/vendor/README.txt. Version 1.0.2 - January 31, 2026 ---------------------------------- - My Reports (XI core): myreports.php parent-frame innerHTML guarded with null checks to avoid "Cannot set properties of undefined" when parent lacks #leftnav (e.g. from component report). - Export Image: load html2canvas from component scripts/vendor/html2canvas.min.js first, then CDN fallback; avoids tracking prevention blocking when vendor file is present. See scripts/vendor/README.txt. - Docs: double slash in PDF download URL (nagiosxi//reports/managereports.php) documented as known XI core URL-building issue; fix belongs in includes/js/reports.js (not in this component). - Export URL: strip CR/LF from Chromium report URL so stored/passed URL is one contiguous string (avoids link being split so only first segment is clickable). XI core: fail_download() now outputs URL in a single so the full URL is one clickable link. - PDF/JPG export: build Chromium URL with get_localhost_url() so Chromium fetches report via localhost; fixes ERR_ACCESS_DENIED when server cannot reach external IP. - UI: report actions (settings, star, Export PDF, Export Image) aligned right (justify-content: flex-end) to match Nagios XI report pattern. - Options drawer: added neptune-drawer-options block (options-drawer-header + reportoptionpicker) so Report Options gear opens drawer with content; minimal copy "No additional options for this report." - Report options: added Schedule and Email links (schedulereport.php?name=... and &sendonce=1) so full report-options row matches XI (settings, star, Schedule, Email, Export PDF, Export Image). - Report component: full report URL passed to get_add_myreport_html() so Schedule, Email Report, and Add to My Reports open/schedule the correct report page. - UI: all report actions (settings, star, Schedule, Email, Export PDF, Export Image) in one well.report-options.form-inline row; Export PDF/Image moved from header into well; alignment matches Nagios XI report examples (e.g. Availability Summary). - UI: removed duplicate report header (title/subtitle/date). Header shown once in page; getreport fragment for AJAX returns only table; header included only in export (PDF) document. - UI: numeric columns (DISK SPACE USED, DISK SPACE AVAILABLE, PERCENT USED) right-aligned to match Nagios XI report examples (e.g. Availability Summary). - Export/print aligned with Nagios XI built-in report pattern: * Single entry point (index.php) with mode routing: default, mode=getreport, mode=submitpdf/submitjpg * mode=getreport: server-side HTML report body only (for AJAX and Chromium PDF/JPG export) * mode=submitpdf/submitjpg: uses utils-reports-export submit_report() and COMMAND_DOWNLOAD_REPORT * Report container (#report) loaded via AJAX from index.php?mode=getreport * PDF export uses reports.js submit_report() for async command polling and download * reportexportlinks and get_add_myreport_html() for Add to My Reports / Schedule / Email Report - Removed client-side window.print() and html2canvas-only PDF path in favor of XI report export - Export Image (PNG) retained as optional client-side fallback via html2canvas Version 1.0.1 - January 30, 2026 ---------------------------------- - Perfdata: support quoted labels with special characters -- (e.g. 'C:\_Label:__Serial_Number_2cxxxxxx'=91445.6016MB;111560;132477;0;139450) - Perfdata: when multiple metrics in one service, show the most saturated. -- (e.g. 'C:\_Label:__Serial_Number_2cxxxxxx'=91445.6016MB;111560;132477;0;139450 'D:\_Label:__Serial_Number_2cxxxxxx'=138500.6016MB;111560;132477;0;139450) - Caption column uses perfdata volume label when present - UI: Neptune theme aware with fallbacks for dark/light as per Nagios Developer Standards - UI: table class follows is_neptune() - UI: reduced inline styles; spacing moved to CSS classes to conform with Nagios Developer Standards Version 1.0.0 - January 18, 2026 ---------------------------------- - Display services with trackvolume custom variable enabled - Filter services by trackvolume custom variable - Parse disk usage from perfdata (check_local_disk and NCPA formats) - Report-style display with columns: * DISPLAY NAME (host name) * CAPTION (service description) * DISK SPACE USED (formatted) * DISK SPACE AVAILABLE (formatted with color coding) * PERCENT USED (with progress bar) - Sort by available space (ascending - most critical first) - Color coding for available space: * Red (< 5 GB): Critical * Yellow (< 50 GB): Warning * Green (>= 50 GB): Safe - Progress bar color coding: * Red (>= 95%): Critical * Orange (>= 85%): Warning * Yellow (>= 70%): Info * Green (< 70%): Safe - Export functionality (PDF/JPG) using Python - Proper Nagios XI component patterns: * Standard initialization sequence * Security best practices (grab_request_var, escapeshellarg) * XML API for custom variables (template inheritance) * Proper error handling * CCM theme matching