Spaces:
Running
Running
function listProjects() { | |
apiGet('/project/list') | |
.then(data => { | |
const select = document.getElementById('project-select'); | |
select.innerHTML = '<option value="">-- Select a project --</option>'; | |
Object.keys(data).forEach(project => { | |
const option = document.createElement('option'); | |
option.value = project; | |
option.text = project; | |
select.appendChild(option); | |
}); | |
}) | |
.catch(err => console.error(err)); | |
} | |
function loadProjectDetails() { | |
const project = document.getElementById('project-select').value; | |
if (!project) return; | |
apiGet(`/project/${project}/latest`) | |
.then(data => { | |
const details = document.getElementById('project-details'); | |
const info = document.getElementById('project-info'); | |
details.classList.remove('d-none'); | |
let html = `<p><strong>Version:</strong> ${data.version_number}</p>`; | |
html += `<p><strong>Published:</strong> ${data.published ? 'β Yes' : 'β No'}</p>`; | |
html += `<div><strong>Intents:</strong><ul>`; | |
if (Array.isArray(data.intents) && data.intents.length > 0) { | |
data.intents.forEach(intent => { | |
html += `<li>${intent.name} <button class="btn btn-sm btn-danger ml-2" onclick="removeIntent('${intent.name}')">β</button></li>`; | |
}); | |
} else { | |
html += `<li>No intents defined.</li>`; | |
} | |
html += `</ul><button class="btn btn-sm btn-success" onclick="addIntent()">+ Add Intent</button></div>`; | |
info.innerHTML = html; | |
if (data.published) { | |
document.querySelectorAll('#project-info input, #project-info button').forEach(el => { | |
el.disabled = true; | |
}); | |
} | |
}) | |
.catch(err => console.error(err)); | |
} | |
function addIntent() { | |
const project = document.getElementById('project-select').value; | |
const intentName = prompt('Enter new intent name:'); | |
if (!intentName) return; | |
apiPost('/project/add_intent', { project_name: project, intent_name: intentName }) | |
.then(data => { | |
showResult('project-result', data); | |
loadProjectDetails(); | |
}) | |
.catch(err => { | |
console.error(err); | |
alert('Failed to add intent.'); | |
}); | |
} | |
function removeIntent(name) { | |
const project = document.getElementById('project-select').value; | |
if (!confirm(`Are you sure you want to delete intent '${name}'?`)) return; | |
apiPost('/project/delete_intent', { project_name: project, intent_name: name }) | |
.then(data => { | |
showResult('project-result', data); | |
loadProjectDetails(); | |
}) | |
.catch(err => { | |
console.error(err); | |
alert('Failed to delete intent.'); | |
}); | |
} | |
function saveProject() { | |
alert('Save logic will be implemented here.'); | |
} | |
function publishProject() { | |
alert('Publish logic will be implemented here.'); | |
} | |