salomonsky's picture
Upload 10 files
fd2bdff verified
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); }
}