diff --git a/src/mcp_feedback_enhanced/web/static/js/app.js b/src/mcp_feedback_enhanced/web/static/js/app.js index e7d5379..16c1fc6 100644 --- a/src/mcp_feedback_enhanced/web/static/js/app.js +++ b/src/mcp_feedback_enhanced/web/static/js/app.js @@ -142,6 +142,7 @@ // 6. 初始化會話管理器 self.sessionManager = new window.MCPFeedback.SessionManager({ + settingsManager: self.settingsManager, onSessionChange: function(sessionData) { console.log('📋 會話變更:', sessionData); }, diff --git a/src/mcp_feedback_enhanced/web/static/js/modules/session-manager.js b/src/mcp_feedback_enhanced/web/static/js/modules/session-manager.js index 66c0bf8..1326c18 100644 --- a/src/mcp_feedback_enhanced/web/static/js/modules/session-manager.js +++ b/src/mcp_feedback_enhanced/web/static/js/modules/session-manager.js @@ -38,12 +38,16 @@ this.collapsedToggleBtn = null; this.mainContent = null; + // 設定管理器引用 + this.settingsManager = options.settingsManager || null; + // 回調函數 this.onSessionChange = options.onSessionChange || null; this.onSessionSelect = options.onSessionSelect || null; this.initializeModules(options); this.initializeUI(); + this.loadPanelState(); console.log('📋 SessionManager (重構版) 初始化完成'); } @@ -254,6 +258,9 @@ this.updateToggleButton('▶', '展開面板'); } + // 保存面板狀態到設定 + this.savePanelState(); + console.log('📋 會話面板', this.isPanelVisible ? '顯示' : '隱藏'); }; @@ -471,6 +478,84 @@ + /** + * 載入面板狀態 + */ + SessionManager.prototype.loadPanelState = function() { + if (!this.settingsManager) { + console.log('📋 沒有設定管理器,使用預設面板狀態'); + return; + } + + const isCollapsed = this.settingsManager.get('sessionPanelCollapsed', false); + this.isPanelVisible = !isCollapsed; + + console.log('📋 載入面板狀態:', this.isPanelVisible ? '顯示' : '隱藏'); + + // 應用面板狀態 + this.applyPanelState(); + }; + + /** + * 保存面板狀態 + */ + SessionManager.prototype.savePanelState = function() { + if (!this.settingsManager) { + console.log('📋 沒有設定管理器,無法保存面板狀態'); + return; + } + + const isCollapsed = !this.isPanelVisible; + this.settingsManager.set('sessionPanelCollapsed', isCollapsed); + + console.log('📋 保存面板狀態:', isCollapsed ? '收合' : '展開'); + }; + + /** + * 應用面板狀態 + */ + SessionManager.prototype.applyPanelState = function() { + if (!this.panel) return; + + const DOMUtils = getDOMUtils(); + + if (this.isPanelVisible) { + // 展開面板 + this.panel.classList.remove('collapsed'); + if (this.mainContent) { + this.mainContent.classList.remove('panel-collapsed'); + } + + // 隱藏收合狀態下的展開按鈕 + const collapsedToggle = DOMUtils ? + DOMUtils.safeQuerySelector('#collapsedPanelToggle') : + document.querySelector('#collapsedPanelToggle'); + if (collapsedToggle) { + collapsedToggle.style.display = 'none'; + } + + // 更新邊緣按鈕圖示和提示 + this.updateToggleButton('◀', '收合面板'); + } else { + // 收合面板 + this.panel.classList.add('collapsed'); + if (this.mainContent) { + this.mainContent.classList.add('panel-collapsed'); + } + + // 顯示收合狀態下的展開按鈕 + const collapsedToggle = DOMUtils ? + DOMUtils.safeQuerySelector('#collapsedPanelToggle') : + document.querySelector('#collapsedPanelToggle'); + if (collapsedToggle) { + collapsedToggle.style.display = 'block'; + } + + // 更新邊緣按鈕圖示和提示 + this.updateToggleButton('▶', '展開面板'); + } + }; + /** * 更新顯示 */ diff --git a/src/mcp_feedback_enhanced/web/static/js/modules/settings-manager.js b/src/mcp_feedback_enhanced/web/static/js/modules/settings-manager.js index ef1d6dd..5c04b3d 100644 --- a/src/mcp_feedback_enhanced/web/static/js/modules/settings-manager.js +++ b/src/mcp_feedback_enhanced/web/static/js/modules/settings-manager.js @@ -27,7 +27,8 @@ enableBase64Detail: false, autoRefreshEnabled: false, autoRefreshInterval: 5, - activeTab: 'combined' + activeTab: 'combined', + sessionPanelCollapsed: false }; // 當前設定