DashHtml.psd1
|
@{ # Module identity RootModule = 'DashHtml.psm1' ModuleVersion = '2.5.1' GUID = '3f8e9a2c-1d4b-47f5-8c6e-0a5d2b9f3e71' Author = 'Nicola Viganò' CompanyName = 'Nicola Viganò' Copyright = '(c) 2026 Nicola Viganò. MIT License.' Description = 'Generate interactive self-contained HTML dashboards. Includes sortable / filterable / pageable tables, linked drill-down, client-side CSV / Excel / PDF export, KPI summary tiles (with optional sparklines, trend deltas, big-number, gauge, verdict, score-ring and maturity-ladder styles), assessment findings with severity, remediation, evidence and references (list or split layout), a detail side panel for table rows, grid cells and findings, property tiles, expandable record lists, pie / donut / line / area / bar / stacked-bar / bullet charts with value aggregation (sum / avg / min / max), min-avg-max range-gradient bars, RAG status matrix, sequential / diverging 2-D heatmaps, parent-child topology trees, network and dependency maps (grouped or in tier lanes, with path tracing), OU / folder tree filters, a report-wide search, menu severity badges, columns that fit their text, inline tabbed content blocks, chronological event feeds, dismissible alert banners, threshold cell colouring with a unified -Rag parameter, a sticky nav bar, print / PDF layout with an optional cover page, and offline-capable XLSX / PDF export. Six built-in theme families (Default, Azure, VMware, Grey, Company, Rag — the v1.4 family using the Office/Excel-compatible RAG palette) each with embedded light / dark variants and a runtime toggle button.' PowerShellVersion = '7.0' # Exports FunctionsToExport = @( 'New-DhDashboard' 'Add-DhTable' 'Set-DhTableLink' 'Export-DhDashboard' 'Get-DhTheme' 'Add-DhSummary' 'Add-DhHtmlBlock' 'Add-DhCollapsible' 'Add-DhFilterCard' 'Add-DhBarChart' 'Add-DhAlertBanner' 'Add-DhPieChart' 'Add-DhBullet' 'Add-DhLineChart' 'Add-DhEventFeed' 'Add-DhStatusGrid' 'Add-DhTabs' 'Add-DhHeatmap' 'Add-DhRangeBar' 'Add-DhTopologyMap' 'Add-DhGlobalFilter' 'Add-DhFindings' 'Add-DhKeyValue' 'Add-DhRecordList' 'Add-DhTreeFilter' 'Add-DhNetworkMap' 'Add-DhTreeTable' ) CmdletsToExport = @() VariablesToExport = @() AliasesToExport = @() # Gallery metadata PrivateData = @{ PSData = @{ Tags = @('HTML','Dashboard','Table','Export','CSV','Excel','PDF','Report','Infrastructure') LicenseUri = 'https://github.com/nicola-vi/DashHtml/blob/main/LICENSE' ProjectUri = 'https://github.com/nicola-vi/DashHtml' ReleaseNotes = @' 2.5.1 - Print and contrast fixes, round-trip fixes, node tests. (1) Print: soft shadows no longer hide heatmap cells and block titles in a PDF, tables wider than the page wrap to fit (8 pt, tighter cells, header words kept whole). (2) Contrast: heatmap values pick dark or white text per cell (they were unreadable in dark mode), nav badges, tree-table type letters and tree flags use the primary text colour in all 12 themes. (3) ConvertTo-DhYaml now writes navLayout, navMaxDepth, navAllLabel, navTree, strictNav and navOverflow, and generated scripts keep ordered hashtables (tree-table Properties keep their order). (4) Footer averages of unformatted columns are rounded (Decimals, default 2). (5) Tests\js: dh-extract.js loads runtime functions for node --test; Build.ps1 reports the node test count. 2.5.0 - Directory explorer, richer menu, column picker. (1) New Add-DhTreeTable: an OU / group / user tree from two flat lists (Rows, Memberships) with a property panel (Properties, Members, Member of, Nesting) and circular-nesting detection. (2) Menu: New-DhDashboard -NavAllLabel adds an addressable All view to a group; -NavTree declares labels, order and empty nodes up front; -StrictNav lints the menu at export (warnings only); -NavOverflow More (default) moves chips that do not fit into a More menu, Wrap keeps the old wrapping; an empty view shows a note; arrow keys, Home/End, Escape and ARIA roles work in the menu. (3) Tables: column key Hidden starts a column unticked, Add-DhTable -RememberColumns keeps the reader's column choice in the browser, Default columns resets it, and the button shows how many are hidden. (4) Fixes: tables wider than the page no longer lose columns when printed; three CSS variables that no theme defined (--bg-base, --text3, --trans-med) now resolve, so nav strips, breadcrumb and global filter selects pick up their intended colours. (5) Tools\Test-DhPrint.ps1 prints dashboards to PDF through Edge/Chrome. Existing reports are unchanged unless they use a new parameter; regenerate them to pick up the fixes. 2.4.1 - Menu fixes and a new example set. (1) Add-DhAlertBanner -NavPath / -NavScope now work: a banner bound to a menu path shows only on that view (Exact) or that node and below (Subtree). Before, such a banner showed on every view and a -NavGroup banner never showed. (2) -NavOrder orders the item's own menu node only; in the browser it also moved the item's parents ahead of unordered siblings. (3) New Tools\Show-DhNavMap.ps1 prints an exported dashboard's menu and what each view shows, in page order, and warns about sections that appear on every view. (4) Examples are redefined: Demo-ActiveDirectory, Demo-VMware, Demo-AzureInfrastructure and Demo-Microsoft365 as menu-driven reports, and nine Feature-* scripts (navigation, tables, charts, KPI tiles, assessment, maps and grids, filters and search, page elements) with no version numbers; Examples\README.md lists them. 2.4.0 - Maps, search and OU trees. No breaking changes; a report that uses none of the new options differs only in table column widths (use -ColumnFit Fixed on a table to keep the old look). (1) New Add-DhNetworkMap: nodes joined by links, in grouped boxes or Tier 0/1/2 lanes, with a deterministic layout, arrowheads, parallel and dashed links, badge lists, status and badge filters, node search, click-to-highlight, a shortest-path trace to a target node, the detail side panel and SVG download. (2) New Add-DhTreeFilter: an OU / folder tree (find box, counts, status, flags, keyboard) that filters a table by path; Prefix or distinguished-name Suffix matching. (3) New-DhDashboard -Search (pages, findings and table rows with hit counts; press /) and -NavBadge (worst finding severity on each menu item). (4) Tables fit each column to its widest text, header included, up to -ColumnMaxWidth (default 800); double-click a column edge to fit it; column MinWidth; -ColumnFit Fixed restores the 340 px cut-off. (5) Add-DhTopologyMap no longer slows down on large trees. Regenerate dashboards: the runtime is baked into each HTML file. 2.3.0 - Details and assessment visuals. No breaking changes; a report that uses none of the new options is unchanged. (1) Detail drawer: Add-DhTable -DetailDrawer opens a row's properties in a side panel; status-grid cells take a Detail (text or sections) with Glyph and -SelfDiagonal; findings take Detail. Escape closes it and focus returns. (2) New Add-DhKeyValue (property tiles) and Add-DhRecordList (rows that expand to tiles, tables, bars, status and check lists). (3) Add-DhSummary Style='score' (ring with verdict label, facts, delta, not-assessed count) and Style='maturity' (ladder with the current level and what the next needs). (4) Add-DhFindings -Layout Split (list + detail), per-finding Facts, Evidence rows, Change (new/worse/better/resolved) and -AllClearText; Add-DhTable -AllClearText. (5) Table cell types 'chips' and 'path'; Add-DhBarChart -Rag / -KeyClass colours. (6) Pan/zoom code shared by maps, drag listeners no longer leak, and the topology toolbar no longer prints. THIRD-PARTY-NOTICES.md lists bundled libraries and credits. Regenerate dashboards: the runtime is baked into each HTML file. 2.2.0 - Assessment features. No breaking changes. (1) New Add-DhFindings: one expandable row per finding with severity, description, recommendation, affected objects, a 'Show in table' jump to the evidence and reference links; severity chips and a text box filter the list. Severities critical/warning/info/ok, with high/medium/low accepted as aliases. (2) Add-DhSummary Style='verdict': a full-width overall assessment with severity chips. (3) Add-DhBarChart -ValueField -Aggregate sum|avg|min|max -Unit -Decimals: bars that measure a value instead of counting rows; table -Charts render Type='bar' with the same options. (4) CellType='link' with UrlField / LinkText; only http(s) and mailto become links. (5) New-DhDashboard -ThemeMode Light|Dark|Auto. (6) Export-DhDashboard -ExportLibraries Cdn|Embed|None: the XLSX/PDF libraries no longer block page load. Cdn loads them on first click (SRI-pinned, buttons grey out offline instead of an alert); Embed inlines verified vendored copies for air-gapped readers; None hides the buttons. (7) Print button and print layout: every view in menu order, everything expanded, tables unpaged up to -PrintMaxRows, optional -PrintCover; headless --print-to-pdf gets the same layout. Fixed: grid reports widened the page on phones. Requires regeneration of existing reports to pick up the runtime changes. 2.1.4 - Fixes only, no new parameters. Regenerate existing dashboards: the runtime is baked into each HTML file. (1) Collapsible tables can be opened again: since 2.0.0 the runtime bound a CSS class the table markup never emits, so -DefaultOpen:$false tables stayed closed for good. (2) Table -Charts: a chart with no Type still draws a donut, but Type='pie' now draws a solid pie (it drew a donut before); 'bar' (rendered from 2.2.0) and unknown types warn and are skipped instead of vanishing silently. (3) Alert actions, tile actions, status-grid cells and topology nodes now jump to their table through one function that filters via applyTextFilter, so the clear button appears and linked charts refresh; a folded table is unfolded. (4) The theme choice persists (URL hash, then localStorage) and is applied before first paint; the toggle reads Dark/Light instead of the internal theme name. (5) Density toggle stays in sync after a reload. (6) CSV export honours -ExportFileName; copy-to-clipboard falls back when navigator.clipboard is unavailable. (7) Export-DhDashboard warns about every TableId / LinkTableId / Action.TableId that names a missing table and every unknown block type - each was a silent no-op in the browser. (8) esc() also encodes the single quote; row rendering no longer does a linear indexOf per row. Node test now drives the shipped nav matcher and table toggle. 2.1.3 - Add-DhBarChart -ClickFilters never worked (an inline onclick could not see the runtime's engines); a bar label containing a double quote could inject HTML attributes; pie-slice clicks left the clear button hidden and linked charts stale; the table toolbar markup was malformed on every report. All text filtering now goes through one TableEngine.applyTextFilter. Clickable bars are keyboard-operable. 2.1.2 - A column could not be dragged narrower than its own header; headers now clip with an ellipsis and carry the full text as a tooltip. 2.1.1 - Clipped table cells carry their full value as a tooltip; columns are resizable by dragging the header edge; a declared column Width beats the stylesheet cap. -Collapsible / -DefaultOpen now work on bar and pie charts. Example scripts renamed to Demo-<Domain> / Demo-Feature-<X>; new Demo-Feature-AllChartTypes.ps1. 2.1.0 - New Add-DhRangeBar: min-avg-max range bars normalised onto a shared 0-100 axis, with a theme-following gradient, from explicit -Items or derived live from a table. New companion module DashHtml.Design (YAML layout round-trip, Update-DhScript). Build.ps1 and Install.ps1 handle both modules. 2.0.0 - MAJOR RELEASE. See MIGRATION-v2.md. (1) BREAKING: -AllowHtml defaults to $false on Add-DhHtmlBlock, Add-DhCollapsible, Add-DhAlertBanner and Add-DhTabs; a warning names any call whose content looks like markup. (2) Navigation rebuilt as one depth-agnostic tree: -NavPath 'A/B/C' with -NavScope Exact|Subtree|Global, -NavLabel and -NavOrder; -NavGroup / -NavSubGroup kept and mapped onto it. (3) Fixes blocks declared with -NavGroup + -NavSubGroup that were unreachable in 1.x. (4) Layout engine: -NavLayout Auto|Strips|Sidebar and -NavMaxDepth 1-5, breadcrumb at depth 4+. Full version history: https://github.com/nicola-vi/DashHtml/blob/main/CHANGELOG.md '@ } } } |