#!/usr/bin/env python3 """ Enhanced Configuration System Demo. Demonstrates the configuration system for UI classification improvements including feature toggles, styling options, and configuration management. Requirements: 7.1, 7.2, 7.3 """ import sys import os # Add src to path for imports current_dir = os.path.dirname(os.path.abspath(__file__)) parent_dir = os.path.dirname(current_dir) src_dir = os.path.join(parent_dir, 'src') if src_dir not in sys.path: sys.path.insert(0, src_dir) from config.enhanced_display_config import ( EnhancedDisplayConfig, EnhancedDisplayConfigManager, get_enhanced_display_config, create_high_contrast_config, create_minimal_config, create_mobile_optimized_config ) from interface.enhanced_results_display_manager import EnhancedResultsDisplayManager from core.provider_summary_generator import ProviderSummary def demo_basic_configuration(): """Demonstrate basic configuration usage.""" print("🔧 Enhanced Display Configuration Demo") print("=" * 50) # Create default configuration config = EnhancedDisplayConfig() print(f"✅ Default configuration created") print(f" - Enhanced mode enabled: {config.enabled}") print(f" - Color coding enabled: {config.use_color_coding}") print(f" - Icons enabled: {config.use_icons}") print(f" - Visual separators enabled: {config.use_visual_separators}") print() # Show classification colors print("🎨 Classification Colors:") print(f" - Red: {config.classification_colors.red}") print(f" - Yellow: {config.classification_colors.yellow}") print(f" - Green: {config.classification_colors.green}") print() # Show section icons print("🎭 Section Icons:") print(f" - AI Analysis: {config.ai_analysis.icon}") print(f" - Patient Message: {config.patient_message.icon}") print(f" - Provider Summary: {config.provider_summary.icon}") print() def demo_configuration_manager(): """Demonstrate configuration manager functionality.""" print("📁 Configuration Manager Demo") print("=" * 50) # Create configuration manager config_manager = EnhancedDisplayConfigManager() print(f"✅ Configuration manager created") # Load configuration config = config_manager.load_config() print(f"✅ Configuration loaded") print(f" - Config file: {config_manager.config_file}") print() # Update configuration print("🔄 Updating configuration...") success = config_manager.update_config( use_icons=False, use_color_coding=True ) print(f" - Update successful: {success}") # Reload and verify updated_config = config_manager.load_config() print(f" - Icons enabled: {updated_config.use_icons}") print(f" - Color coding enabled: {updated_config.use_color_coding}") print() # Enable/disable features print("🎛️ Feature toggles...") config_manager.enable_feature('icons') config_manager.disable_feature('animations') final_config = config_manager.load_config() print(f" - Icons enabled: {final_config.use_icons}") print(f" - Animations enabled: {final_config.enable_animations}") print() def demo_preset_configurations(): """Demonstrate preset configuration options.""" print("🎨 Preset Configurations Demo") print("=" * 50) # High contrast configuration high_contrast = create_high_contrast_config() print("♿ High Contrast Configuration:") print(f" - High contrast mode: {high_contrast.high_contrast_mode}") print(f" - Red color: {high_contrast.classification_colors.red}") print(f" - AI border color: {high_contrast.ai_analysis.border_color}") print() # Minimal configuration minimal = create_minimal_config() print("🔲 Minimal Configuration:") print(f" - Icons enabled: {minimal.use_icons}") print(f" - Visual separators: {minimal.use_visual_separators}") print(f" - Animations enabled: {minimal.enable_animations}") print() # Mobile optimized configuration mobile = create_mobile_optimized_config() print("📱 Mobile Optimized Configuration:") print(f" - Responsive breakpoint: {mobile.responsive_breakpoint}") print(f" - AI padding: {mobile.ai_analysis.padding}") print(f" - Animations enabled: {mobile.enable_animations}") print() def demo_css_generation(): """Demonstrate CSS generation capabilities.""" print("🎨 CSS Generation Demo") print("=" * 50) config = EnhancedDisplayConfig() # Generate CSS variables css_vars = config.generate_css_variables() print("📝 CSS Variables (first 10 lines):") lines = css_vars.split('\n')[:10] for line in lines: print(f" {line}") print(" ...") print() # Generate base CSS base_css = config.generate_base_css() print(f"📝 Base CSS generated: {len(base_css)} characters") print() def demo_display_manager_integration(): """Demonstrate integration with display manager.""" print("🔗 Display Manager Integration Demo") print("=" * 50) # Create configuration manager config_manager = EnhancedDisplayConfigManager() # Create display manager with configuration display_manager = EnhancedResultsDisplayManager(config_manager=config_manager) print(f"✅ Display manager created with config manager") print(f" - Enhanced mode enabled: {display_manager.is_enhanced_mode_enabled()}") print() # Test with different configurations print("🎛️ Testing with different configurations...") # Test with enhanced mode disabled config_manager.update_config(enabled=False) display_manager.reload_config() print(f" - Enhanced mode after disable: {display_manager.is_enhanced_mode_enabled()}") # Test with enhanced mode re-enabled config_manager.update_config(enabled=True) display_manager.reload_config() print(f" - Enhanced mode after enable: {display_manager.is_enhanced_mode_enabled()}") print() # Test formatting with different configurations print("🎨 Testing formatting with different styles...") # Format AI analysis with default config ai_html = display_manager.format_ai_analysis_section( classification="RED", indicators=["Loss of meaning", "Spiritual distress"], reasoning="Patient expressing existential concerns and loss of purpose." ) print(f" - AI analysis HTML length: {len(ai_html)} characters") # Disable icons and test again config_manager.update_config(use_icons=False) display_manager.reload_config() ai_html_no_icons = display_manager.format_ai_analysis_section( classification="RED", indicators=["Loss of meaning", "Spiritual distress"], reasoning="Patient expressing existential concerns and loss of purpose." ) print(f" - AI analysis HTML (no icons): {len(ai_html_no_icons)} characters") print() def demo_configuration_validation(): """Demonstrate configuration validation.""" print("✅ Configuration Validation Demo") print("=" * 50) config_manager = EnhancedDisplayConfigManager() # Validate current configuration issues = config_manager.validate_config() print(f"📋 Validation results: {len(issues)} issues found") if issues: for issue in issues: print(f" ⚠️ {issue}") else: print(" ✅ Configuration is valid") print() # Test with invalid configuration print("🔧 Testing with invalid color...") # Create a new config manager for this test to avoid corrupting the main one test_config_manager = EnhancedDisplayConfigManager() # Manually create invalid config for testing test_config = test_config_manager.load_config() # Directly modify the color to an invalid format test_config.classification_colors.red = 'invalid-color' test_config_manager._config = test_config issues = test_config_manager.validate_config() print(f"📋 Validation after invalid color: {len(issues)} issues found") for issue in issues: print(f" ⚠️ {issue}") print() # Reset to defaults config_manager.reset_to_defaults() print("🔄 Configuration reset to defaults") def main(): """Run all configuration demos.""" print("🚀 Enhanced Display Configuration System Demo") print("=" * 60) print() try: demo_basic_configuration() demo_configuration_manager() demo_preset_configurations() demo_css_generation() demo_display_manager_integration() demo_configuration_validation() print("✅ All configuration demos completed successfully!") except Exception as e: print(f"❌ Demo failed with error: {e}") import traceback traceback.print_exc() if __name__ == "__main__": main()