diff options
author | elioat <elioat@tilde.institute> | 2025-03-30 14:21:20 -0400 |
---|---|---|
committer | elioat <elioat@tilde.institute> | 2025-03-30 14:21:20 -0400 |
commit | 710ad89c6acbafd4ab0024cd74dea3a3a44e0e69 (patch) | |
tree | ba939a5393ceda31bea42912d90f4264f3f8b1f8 | |
parent | dc35422ab591a9240485da2e69d10020eb1de5ff (diff) | |
download | tour-710ad89c6acbafd4ab0024cd74dea3a3a44e0e69.tar.gz |
*
-rw-r--r-- | js/leibovitz/index.html | 5 | ||||
-rw-r--r-- | js/leibovitz/leibovitz.js | 91 |
2 files changed, 10 insertions, 86 deletions
diff --git a/js/leibovitz/index.html b/js/leibovitz/index.html index b760397..44c4d49 100644 --- a/js/leibovitz/index.html +++ b/js/leibovitz/index.html @@ -210,7 +210,7 @@ } #settings-container { width: 100%; - display: flex; + display: none; flex-direction: column; gap: 10px; align-items: center; @@ -220,6 +220,9 @@ flex-shrink: 0; position: relative; } + #settings-container.visible { + display: flex; + } #offline-status { position: absolute; top: 10px; diff --git a/js/leibovitz/leibovitz.js b/js/leibovitz/leibovitz.js index 769216c..030e7d2 100644 --- a/js/leibovitz/leibovitz.js +++ b/js/leibovitz/leibovitz.js @@ -1,5 +1,5 @@ /** - * Main application entry point for the Leibovitz camera app. + * Main application entry point for the app. * Implements a functional architecture with separate managers for each effect. * Uses the Observer pattern for state management and effect application. * Implements the State pattern for mode management (camera/edit). @@ -16,7 +16,6 @@ const focusControl = document.getElementById('focus-control'); const focusSlider = document.getElementById('focus-slider'); const focusValue = document.getElementById('focus-value'); const slideControls = document.querySelector('.slide-controls'); -const SETTINGS_KEY = 'leibovitz-settings'; let cameraOn = false; let stream = null; @@ -32,14 +31,17 @@ BlurManager.init(); BalanceManager.init(); /** - * Updates visibility of slider controls based on camera/edit mode state + * Updates visibility of controls based on camera/edit mode state * Uses the State pattern to manage UI visibility */ function updateSliderControlsVisibility() { + const settingsContainer = document.getElementById('settings-container'); if (cameraOn || isEditMode) { slideControls.classList.add('visible'); + settingsContainer.classList.add('visible'); } else { slideControls.classList.remove('visible'); + settingsContainer.classList.remove('visible'); } } @@ -458,85 +460,4 @@ DitherManager.reset = function() { this._modeSelect.value = 'none'; this._notifyObservers(); resetEffects(); -}; - -/** - * Saves current settings to localStorage - * Implements the Memento pattern for state persistence - */ -function saveSettings() { - const settings = { - blur: BlurManager._currentBlur, - contrast: ContrastManager._currentContrast, - color: ColorManager._currentColor, - balance: BalanceManager._currentBalance, - dither: DitherManager._currentMode, - blockSize: DitherManager._currentBlockSize - }; - localStorage.setItem(SETTINGS_KEY, JSON.stringify(settings)); -} - -/** - * Loads saved settings from localStorage - * Implements the Memento pattern for state restoration - */ -function loadSettings() { - const savedSettings = localStorage.getItem(SETTINGS_KEY); - if (savedSettings) { - const settings = JSON.parse(savedSettings); - - if (settings.blur !== undefined) { - BlurManager._currentBlur = settings.blur; - BlurManager._slider.value = settings.blur; - BlurManager._value.textContent = `${settings.blur}%`; - } - - if (settings.contrast !== undefined) { - ContrastManager._currentContrast = settings.contrast; - ContrastManager._slider.value = settings.contrast; - document.getElementById('contrast-value').textContent = settings.contrast; - } - - if (settings.color !== undefined) { - ColorManager._currentColor = settings.color; - ColorManager._colorInput.value = settings.color; - } - - if (settings.balance !== undefined) { - BalanceManager._currentBalance = settings.balance; - BalanceManager.balanceSlider.value = settings.balance; - BalanceManager.balanceValue.textContent = `${settings.balance}K`; - } - - if (settings.dither !== undefined) { - DitherManager._currentMode = settings.dither; - DitherManager._modeSelect.value = settings.dither; - } - - if (settings.blockSize !== undefined) { - DitherManager._currentBlockSize = settings.blockSize; - DitherManager._blockSizeSlider.value = settings.blockSize; - document.getElementById('block-size-value').textContent = `${settings.blockSize}px`; - } - } -} - -/** - * Sets up event listeners for settings changes - * Implements the Observer pattern for state change detection - */ -function setupSettingsListeners() { - BlurManager._slider.addEventListener('change', saveSettings); - ContrastManager._slider.addEventListener('change', saveSettings); - ColorManager._colorInput.addEventListener('change', saveSettings); - BalanceManager.balanceSlider.addEventListener('change', saveSettings); - DitherManager._modeSelect.addEventListener('change', saveSettings); - - if (DitherManager._blockSizeSlider) { - DitherManager._blockSizeSlider.addEventListener('change', saveSettings); - } -} - -// Initialize settings -setupSettingsListeners(); -loadSettings(); \ No newline at end of file +}; \ No newline at end of file |