Spaces:
Running
Running
| import {gemKeySet, gemKeyGet, appId} from './config.js'; | |
| import {normalizeString, hslFromString} from './utils.js'; | |
| import {callGemini} from './gemini.js'; | |
| import {saveNeuron} from './db.js'; | |
| import {visualizeTree, userCenter} from './scene.js'; | |
| import {getAuthState} from './firebase.js'; | |
| export function initUI(){document.getElementById('level1Slider').addEventListener('input',e=>document.getElementById('level1Value').innerText=e.target.value);document.getElementById('level2Slider').addEventListener('input',e=>document.getElementById('level2Value').innerText=e.target.value);document.getElementById('level3Slider').addEventListener('input',e=>document.getElementById('level3Value').innerText=e.target.value);document.getElementById('saveGeminiKeyBtn').addEventListener('click',()=>{const k=document.getElementById('geminiKeyInput').value.trim();gemKeySet(k);const s=document.getElementById('geminiKeyStatus');s.textContent='Guardada';setTimeout(()=>s.textContent='',1200)});const egk=gemKeyGet();if(egk)document.getElementById('geminiKeyInput').value=egk;} | |
| export async function handleSeed(){ | |
| const {userId,username}=getAuthState(); | |
| const topic=normalizeString(document.getElementById('topicInput').value.trim()); if(!topic) return; | |
| const n1=parseInt(document.getElementById('level1Slider').value,10); | |
| const n2=parseInt(document.getElementById('level2Slider').value,10); | |
| const n3=parseInt(document.getElementById('level3Slider').value,10); | |
| const btn=document.getElementById('seedBtn'); | |
| const pbc=document.getElementById('progressBarContainer'); | |
| const pb=document.getElementById('progressBar'); | |
| btn.disabled=true; const bak=btn.innerHTML; btn.innerHTML='Analizando...'; | |
| pbc.style.display='block'; pb.style.transition='none'; pb.style.width='0%'; void pb.offsetWidth; pb.style.transition='width 18s ease-out'; pb.style.width='92%'; | |
| try{ | |
| const data=await callGemini(topic,n1,n2,n3); | |
| const cand=data.candidates?.[0]; const text=cand?.content?.parts?.[0]?.text||'{}'; | |
| const parsed=JSON.parse(text); const lista=parsed.lista_palabras||[]; | |
| const origin=userCenter(userId); | |
| const nodes=visualizeTree(topic, lista, origin); | |
| for(const node of nodes){ await saveNeuron({appId,userId,username,label:node.label,level:node.level,position:node.position,topic}); } | |
| document.getElementById('topicInput').value=''; | |
| }catch(e){} | |
| finally{ btn.disabled=false; btn.innerHTML=bak; pb.style.transition='width .25s ease-in'; pb.style.width='100%'; setTimeout(()=>{ pbc.style.display='none'; pb.style.width='0%'; },400); } | |
| } | |