UI-korjaus korjattu (GTFO gemini)
This commit is contained in:
@@ -2,7 +2,10 @@
|
||||
<div id="panel-editor" class="panel">
|
||||
<div style="display:flex;flex:1;min-height:0;gap:0;border:1px solid var(--border);border-radius:6px;overflow:hidden">
|
||||
<div id="editor-filetree" style="width:200px;min-width:150px;background:var(--bg);border-right:1px solid var(--border);overflow:auto;resize:horizontal;font-family:'Courier New',monospace;font-size:13px">
|
||||
<div style="padding:10px 12px;color:#8b949e;font-size:11px;text-transform:uppercase;letter-spacing:0.5px;border-bottom:1px solid var(--border)">Tiedostot</div>
|
||||
<div style="padding:10px 12px;color:#8b949e;font-size:11px;display:flex;justify-content:space-between;align-items:center;text-transform:uppercase;letter-spacing:0.5px;border-bottom:1px solid var(--border)">
|
||||
<span>Tiedostot</span>
|
||||
<button class="btn btn-green" style="padding:2px 6px;font-size:10px" onclick="downloadProjectZip()">.ZIP</button>
|
||||
</div>
|
||||
<div id="editor-file-list" style="padding:4px 0">
|
||||
<div style="padding:8px 16px;color:#8b949e;font-size:12px">Generoi projekti:<br><code style="color:var(--accent)">kpn project "..."</code></div>
|
||||
</div>
|
||||
|
||||
@@ -1430,7 +1430,9 @@ Blog → Author: name,email,bio(Text|None) / Post: title, content(Text), author_
|
||||
// Oppimispolku
|
||||
renderLearnView(promptLog);
|
||||
|
||||
renderProjectCard(files, task);
|
||||
termLog(`\n<span style="color:#8b949e">Siirretään tiedostot Editoriin...</span>`);
|
||||
window._currentProjectName = task;
|
||||
setTimeout(() => window.openInEditor(files), 1000);
|
||||
}
|
||||
|
||||
async function kpnPipelineSimple(task) {
|
||||
@@ -1456,41 +1458,7 @@ Blog → Author: name,email,bio(Text|None) / Post: title, content(Text), author_
|
||||
termLog(`\n<span style="color:var(--purple);font-weight:bold">━━━ Done ━━━</span>`);
|
||||
}
|
||||
|
||||
// === Project card ===
|
||||
window._projectFiles = {}; // id → files
|
||||
|
||||
function renderProjectCard(files, name) {
|
||||
const entries = Object.entries(files);
|
||||
if (!entries.length) return;
|
||||
const id = 'proj-' + Date.now();
|
||||
window._projectFiles[id] = files;
|
||||
|
||||
const tabs = entries.map(([n],i) =>
|
||||
`<div class="project-tab${i===0?' active':''}" data-card="${id}" data-i="${i}" onclick="switchProjTab('${id}',${i})">${esc(n)}</div>`
|
||||
).join('');
|
||||
|
||||
const panels = entries.map(([n,c],i) =>
|
||||
`<div class="proj-panel" data-card="${id}" data-i="${i}" style="${i>0?'display:none':''}">` +
|
||||
`<div style="text-align:right;padding:4px 8px;background:var(--bg);border-bottom:1px solid #21262d">` +
|
||||
`<button class="btn btn-muted" onclick="copyProjectFile('${id}','${esc(n)}')">Kopioi</button></div>` +
|
||||
`<pre class="code-block">${highlightCode(c)}</pre></div>`
|
||||
).join('');
|
||||
|
||||
const html = `<div id="${id}" class="project-card">` +
|
||||
`<div class="project-header">` +
|
||||
`<span style="color:var(--purple);font-weight:600">${esc(name||'Projekti')} <span style="color:#8b949e;font-weight:normal">(${entries.length})</span></span>` +
|
||||
`<span style="display:flex;gap:6px">` +
|
||||
`<button class="btn btn-muted" onclick="copyAllProjectFiles('${id}')">Kopioi kaikki</button>` +
|
||||
`<button class="btn btn-muted" onclick="downloadProjectZip('${id}','${esc(name||'projekti')}')">Lataa .zip</button>` +
|
||||
`<button class="btn btn-green" onclick="openInEditor(window._projectFiles['${id}'])">Avaa editorissa</button>` +
|
||||
`</span></div>` +
|
||||
`<div class="project-tabs">${tabs}</div>${panels}</div>`;
|
||||
|
||||
const div = document.createElement('div');
|
||||
div.innerHTML = html;
|
||||
termPanel.appendChild(div.firstElementChild);
|
||||
termPanel.scrollTop = termPanel.scrollHeight;
|
||||
}
|
||||
// === Poistettiin renderProjectCard ja siirryttiin suoraan Editorin käyttöön ===
|
||||
window.copyProjectFile = function(id, name) {
|
||||
const files = window._projectFiles[id];
|
||||
if (files && files[name]) navigator.clipboard.writeText(files[name]);
|
||||
@@ -1501,8 +1469,9 @@ Blog → Author: name,email,bio(Text|None) / Post: title, content(Text), author_
|
||||
const text = Object.entries(files).map(([n,c]) => '# --- ' + n + ' ---\n' + c).join('\n\n');
|
||||
navigator.clipboard.writeText(text);
|
||||
};
|
||||
window.downloadProjectZip = function(id, name) {
|
||||
const files = window._projectFiles[id];
|
||||
window.downloadProjectZip = function() {
|
||||
const files = window._currentEditorFiles;
|
||||
const name = window._currentProjectName || 'projekti';
|
||||
if (!files) return;
|
||||
const enc = new TextEncoder();
|
||||
const entries = Object.entries(files);
|
||||
@@ -1618,6 +1587,7 @@ Blog → Author: name,email,bio(Text|None) / Post: title, content(Text), author_
|
||||
const langMap = {py:'python',rs:'rust',js:'javascript',ts:'typescript',toml:'toml',json:'json',html:'html',css:'css',md:'markdown',txt:'plaintext'};
|
||||
|
||||
window.openInEditor = async function(files) {
|
||||
window._currentEditorFiles = files;
|
||||
switchTab('editor');
|
||||
try { await initMonaco(); } catch(e) { console.error('Monaco-virhe:', e); return; }
|
||||
const m = window.monaco;
|
||||
|
||||
Reference in New Issue
Block a user