let selectedProfileId = localStorage.getItem('selectedProfileId') || 'default'; // Profile functions async function loadProfiles() { try { const profiles = await apiRequest('/profiles'); updateProfileSelector(profiles); // Asegurarse de que se seleccione el perfil guardado const selectElement = document.getElementById('profileSelect'); if (profiles[selectedProfileId]) { selectElement.value = selectedProfileId; await selectProfile(selectedProfileId); // Cargar el perfil seleccionado } else { // Si el perfil guardado ya no existe, usar el default selectedProfileId = 'default'; selectElement.value = 'default'; await selectProfile('default'); } localStorage.setItem('selectedProfileId', selectedProfileId); } catch (error) { showError('Failed to load profiles'); } } function updateProfileSelector(profiles) { const select = document.getElementById('profileSelect'); select.innerHTML = profiles.map(profile => ` `).join(''); } async function selectProfile(profileId) { try { currentProfile = await apiRequest(`/profiles/${profileId}`); updateWorkDirDisplay(); } catch (error) { showError('Failed to load profile'); } } async function changeProfile() { const select = document.getElementById('profileSelect'); await selectProfile(select.value); } async function selectWorkDir() { try { const response = await apiRequest('/select-directory'); if (response.path) { await apiRequest(`/profiles/${currentProfile.id}`, { method: 'PUT', body: JSON.stringify({ ...currentProfile, work_dir: response.path }) }); await selectProfile(currentProfile.id); showSuccess('Work directory updated successfully'); } } catch (error) { showError('Failed to update work directory'); } } // Profile editor modal let editingProfile = null; function showProfileEditor(profile = null) { editingProfile = profile; const modal = document.createElement('div'); modal.className = 'modal active'; modal.innerHTML = ` `; document.body.appendChild(modal); } async function saveProfile(event) { event.preventDefault(); const form = event.target; const formData = new FormData(form); const profileData = { id: formData.get('id'), name: formData.get('name'), work_dir: formData.get('work_dir'), llm_settings: { model: formData.get('llm_model'), api_key: formData.get('api_key'), temperature: parseFloat(formData.get('temperature')) } }; try { if (editingProfile) { await apiRequest(`/profiles/${editingProfile.id}`, { method: 'PUT', body: JSON.stringify(profileData) }); } else { await apiRequest('/profiles', { method: 'POST', body: JSON.stringify(profileData) }); } await loadProfiles(); closeModal(event.target); showSuccess(`Profile ${editingProfile ? 'updated' : 'created'} successfully`); } catch (error) { showError(`Failed to ${editingProfile ? 'update' : 'create'} profile`); } } // static/js/profile.js async function editProfile() { if (!currentProfile) { showError('No profile selected'); return; } const content = `
`; const modal = createModal('Edit Profile', content, true); modal.querySelector('[onclick="saveModal(this)"]').onclick = async () => { await saveProfile(modal); }; } async function saveProfile(modal) { const form = modal.querySelector('#profileForm'); const formData = new FormData(form); const profileData = { id: formData.get('id'), name: formData.get('name'), work_dir: formData.get('work_dir'), llm_settings: { model: formData.get('llm_model'), api_key: formData.get('api_key'), temperature: parseFloat(formData.get('temperature')) } }; try { await apiRequest(`/profiles/${currentProfile.id}`, { method: 'PUT', body: JSON.stringify(profileData) }); await loadProfiles(); closeModal(modal.querySelector('button')); showSuccess('Profile updated successfully'); } catch (error) { showError('Failed to update profile'); } } function newProfile() { showProfileEditor(); } async function onProfileChange(event) { selectedProfileId = event.target.value; localStorage.setItem('selectedProfileId', selectedProfileId); await selectProfile(selectedProfileId); }