Files
arcum42-ComfyUI_SageUtils/js/reports

Reports Directory

This directory contains modules responsible for generating various types of reports within SageUtils. The report generation functionality has been refactored into multiple focused modules for better maintainability and separation of concerns.

Files

reportGenerator.js (Main Orchestrator)

Purpose: Main orchestrator for HTML report generation
Lines: 863 (51% smaller after refactoring!)
Complexity: Medium (reduced from High)

Key Functions:

  • generateHtmlContent(options): Main report generation orchestrator
  • generateHtmlContentWithProgress(options): Report generation with progress tracking
  • generateTableRows(models, options): Generate table rows for models
  • generateTableRowsWithProgress(models, options): Table generation with progress tracking
  • openHtmlReport(htmlContent, title): Opens generated report in new window

Re-exports for External Compatibility:

  • escapeHtml, formatFileSize from modelFormatters.js

htmlTemplates.js (Template Engine)

Purpose: HTML document templates, CSS styles, and client-side JavaScript
Lines: 595
Complexity: Medium

Key Functions:

  • generateCssStyles(): Complete CSS styling system
  • generateClientSideJs(sortBy): Interactive JavaScript functionality
  • generateHtmlDocumentStart(currentDateTime, cssStyles, clientJs): Document header
  • generateModelStatsSection(...): Statistics and filter information display
  • generateTableSection(sectionTitle, modelCount, tableRows, visibleColumns): Complete table sections
  • generateTableHeaders(visibleColumns): Table header generation
  • generateHtmlDocumentEnd(): Document footer

modelSorting.js (Sorting & Grouping)

Purpose: Model sorting and grouping logic
Lines: 216
Complexity: Medium

Key Functions:

  • sortModels(models, sortBy): Sort models by various criteria
  • groupModelsByCivitaiId(models): Group models by Civitai ID
  • generateGroupInfo(models): Generate grouping metadata

modelDeduplication.js (Duplicate Detection)

Purpose: Model deduplication and path normalization
Lines: 145
Complexity: Low

Key Functions:

  • deduplicateModels(models): Remove duplicate models from arrays
  • normalizePath(filePath): Normalize file paths for comparison

modelFormatters.js (Utility Functions)

Purpose: Formatting and utility functions
Lines: 75
Complexity: Low

Key Functions:

  • getFileSize(filePath): Retrieve file size from server
  • escapeHtml(str): HTML entity escaping
  • formatFileSize(bytes): Human-readable file size formatting
  • getBaseModelStyle(baseModel): CSS styling for model types

Architecture

The reports directory is now organized with clear separation of concerns:

js/reports/
├── reportGenerator.js      (main orchestrator, external API)
├── htmlTemplates.js        (HTML/CSS/JS templates)
├── modelSorting.js         (sorting & grouping logic)
├── modelDeduplication.js   (duplicate detection)
└── modelFormatters.js      (utility functions)

Dependencies:

  • ../shared/civitai.js - Civitai API integration
  • ../shared/constants.js - Configuration constants

Refactoring Benefits

This modular structure provides:

  1. Better Maintainability: Each module has a single responsibility
  2. Easier Testing: Smaller, focused modules are easier to test
  3. Improved Performance: Better tree-shaking and loading efficiency
  4. Enhanced Collaboration: Multiple developers can work on different aspects
  5. Code Reusability: Components can be imported independently

Development Guidelines

When working with the reports modules:

  1. Single Responsibility: Keep each module focused on its specific purpose
  2. Clear Dependencies: Maintain clean import/export boundaries
  3. Consistent APIs: Follow established patterns for function signatures
  4. Comprehensive Documentation: Include JSDoc comments for all public functions
  5. Performance Considerations: Be mindful of large model collections
  6. Browser Compatibility: Test interactive features across browsers

Future Enhancements

The modular structure makes it easier to add new features:

  • CSV/Excel export modules
  • PDF report generators
  • Custom template themes
  • Report caching and optimization
  • Advanced filtering and search
  • Real-time report updates

Refactoring History

Original: Single monolithic file (1766 lines)
Current: 5 focused modules (1894 total lines, 51% main file reduction)
Status: ✅ Refactoring Complete