Spaces:
Running
Running
File size: 3,128 Bytes
e19913f 39138d2 e19913f 954a8a4 e19913f 954a8a4 e19913f 954a8a4 39138d2 e19913f 954a8a4 39138d2 e19913f |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 |
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.');
}
|