diff --git a/network-poc/static/index.html b/network-poc/static/index.html index 61f6ddc..69ceef1 100644 --- a/network-poc/static/index.html +++ b/network-poc/static/index.html @@ -1096,10 +1096,11 @@ Yhdistetään... - + Laskenta: - Ei käynnissä ⟩ + +
@@ -1457,9 +1458,9 @@ })); } - // Agents- ja codelab-sivuille: käynnistetään oma laskentasolmu - // jotta käyttäjän oma kone voi suorittaa tehtäviä - if (tab === 'agents' || tab === 'codelab') { + // Codelab: käynnistetään oma laskentasolmu automaattisesti + // Agents: käyttäjä käynnistää itse "Alusta laskentasolmu" -napista + if (tab === 'codelab') { if (typeof ensureCoderNode === 'function') ensureCoderNode(); } }; @@ -1847,12 +1848,13 @@ } if (sub === 'load') { - const cl = document.getElementById('agent-compute-label'); - if (cl && cl.style.color === 'rgb(63, 185, 80)') { + const btn = document.getElementById('agent-compute-btn'); + if (btn && btn.dataset.state === 'ready') { termLog(' ✓ Kielimalli on jo ladattu ja valmis', '#3fb950'); } else { - termLog(' Ladataan kielimallia...', '#d29922'); - ensureCoderNode(); + termLog(' Alustetaan laskentasolmua...', '#d29922'); + if (btn) btn.click(); // Käytetään samaa logiikkaa kuin napissa + else ensureCoderNode(); } return; } @@ -2521,13 +2523,17 @@ if (msg.includes('[Coder]') && msg.includes('model') && msg.includes('tallennettu')) { setStep('step-model', 'done', '100%'); } if (msg.includes('[Coder]') && msg.includes('Rakennetaan')) { setStep('step-build', 'active'); } if (msg.includes('Agent Node käynnistyy') || msg.includes('Rakennetaan')) { - // Laskenta käynnistymässä const cd = document.getElementById('agent-compute-dot'); const cl = document.getElementById('agent-compute-label'); - const cs = document.getElementById('agent-compute-status'); + const btn = document.getElementById('agent-compute-btn'); if (cd) cd.style.background = '#d29922'; - if (cl) { cl.textContent = 'Ladataan mallia...'; cl.style.color = '#d29922'; } - if (cs) cs.title = 'Kielimallia ladataan — tämä kestää ensimmäisellä kerralla pidempään'; + if (cl) { cl.textContent = 'Ladataan...'; cl.style.color = '#d29922'; } + if (btn && btn.dataset.state !== 'ready') { + btn.dataset.state = 'loading'; + btn.textContent = 'Peruuta'; + btn.style.borderColor = '#f85149'; + btn.style.color = '#f85149'; + } } if (msg.includes('[Coder]') && msg.includes('Malli ladattu')) { // Malli on valmis — merkataan kaikki vaiheet valmiiksi @@ -2547,10 +2553,10 @@ // Agents-sivun compute-status: valmis const cd = document.getElementById('agent-compute-dot'); const cl = document.getElementById('agent-compute-label'); - const cs = document.getElementById('agent-compute-status'); + const btn = document.getElementById('agent-compute-btn'); if (cd) cd.style.background = '#3fb950'; - if (cl) { cl.textContent = 'Valmis (Qwen2.5-Coder)'; cl.style.color = '#3fb950'; } - if (cs) { cs.title = 'Kielimalli ladattu — oma kone on valmis suorittamaan tehtäviä'; cs.style.cursor = 'default'; } + if (cl) { cl.textContent = 'Qwen2.5-Coder'; cl.style.color = '#3fb950'; } + if (btn) { btn.dataset.state = 'ready'; btn.textContent = '✓ Valmis'; btn.style.borderColor = '#3fb950'; btn.style.color = '#3fb950'; btn.style.cursor = 'default'; btn.title = 'Kielimalli ladattu — oma kone on valmis laskentaan'; } } if (msg.includes('[Coder]') && msg.includes('Syöte:')) { // Pipeline piiloon kun generointi alkaa @@ -2637,15 +2643,31 @@ } } - // Automaattinen coder-noden käynnistys agents-sivulle (suora navigointi #agents) - if (window.location.hash === '#agents') { - ensureCoderNode(); - } + // Agents-sivun coder-node käynnistetään "Alusta laskentasolmu" -napista tai kpn load -komennolla - // Klikkaa compute-statusta käynnistääksesi laskentasolmu - document.getElementById('agent-compute-status')?.addEventListener('click', () => { + // Laskentasolmun käynnistys/pysäytys -nappi + let computeAbortController = null; + document.getElementById('agent-compute-btn')?.addEventListener('click', () => { + const btn = document.getElementById('agent-compute-btn'); const cl = document.getElementById('agent-compute-label'); - if (cl && cl.style.color === 'rgb(63, 185, 80)') return; // Jo valmis + if (!btn) return; + + if (btn.dataset.state === 'ready') return; // Jo valmis, ei tehdä mitään + + if (btn.dataset.state === 'loading') { + // Cancel — ladataan sivua uudelleen koska Wasm-latausta ei voi pysäyttää + btn.textContent = 'Peruutetaan...'; + btn.disabled = true; + window.location.reload(); + return; + } + + // Käynnistetään + btn.dataset.state = 'loading'; + btn.textContent = 'Peruuta'; + btn.style.borderColor = '#f85149'; + btn.style.color = '#f85149'; + btn.title = 'Peruuta kielimallin lataus'; ensureCoderNode(); });