diff --git a/web_interface/blueprints/api_v3.py b/web_interface/blueprints/api_v3.py index 9b4fec57..cd3a8cd2 100644 --- a/web_interface/blueprints/api_v3.py +++ b/web_interface/blueprints/api_v3.py @@ -807,7 +807,7 @@ def save_main_config(): 'gpio_slowdown', 'rp1_rio', 'scan_mode', 'disable_hardware_pulsing', 'inverse_colors', 'show_refresh_rate', 'pwm_bits', 'pwm_dither_bits', 'pwm_lsb_nanoseconds', 'limit_refresh_rate_hz', 'use_short_date_format', 'max_dynamic_duration_seconds', 'led_rgb_sequence', 'multiplexing', 'panel_type', - 'row_address_type'] + 'row_address_type', 'pixel_mapper_config'] if any(k in data for k in display_fields): if 'display' not in current_config: @@ -850,7 +850,8 @@ def save_main_config(): # Handle hardware settings for field in ['rows', 'cols', 'chain_length', 'parallel', 'brightness', 'hardware_mapping', 'scan_mode', 'pwm_bits', 'pwm_dither_bits', 'pwm_lsb_nanoseconds', 'limit_refresh_rate_hz', - 'led_rgb_sequence', 'multiplexing', 'panel_type', 'row_address_type']: + 'led_rgb_sequence', 'multiplexing', 'panel_type', 'row_address_type', + 'pixel_mapper_config']: if field in data: if field in ['rows', 'cols', 'chain_length', 'parallel', 'brightness', 'scan_mode', 'pwm_bits', 'pwm_dither_bits', 'pwm_lsb_nanoseconds', 'limit_refresh_rate_hz', diff --git a/web_interface/static/v3/js/widgets/time-picker.js b/web_interface/static/v3/js/widgets/time-picker.js index bf8b7636..30366022 100644 --- a/web_interface/static/v3/js/widgets/time-picker.js +++ b/web_interface/static/v3/js/widgets/time-picker.js @@ -57,6 +57,11 @@ target.appendChild(frag); } + if (typeof window.LEDMatrixWidgets === 'undefined') { + console.error('[TimePicker] LEDMatrixWidgets registry not loaded'); + return; + } + window.LEDMatrixWidgets.register('time-picker', { name: 'Time Picker Widget', version: '1.0.0',