diff --git a/cli/medperf/web_ui/templates/dataset_detail.html b/cli/medperf/web_ui/templates/dataset_detail.html
index a935d6221..7c8ab2aa5 100644
--- a/cli/medperf/web_ui/templates/dataset_detail.html
+++ b/cli/medperf/web_ui/templates/dataset_detail.html
@@ -90,18 +90,31 @@
@@ -221,23 +235,25 @@
Approval Required
$('#setOperationalModal').modal('hide');
});
- const fetchStatus = async (datasetId, benchmarkId, modelId, element, intervalId) => {
+ const fetchStatus = async (datasetId, benchmarkId, modelId, statusContainer, intervalId) => {
try {
const response = await fetch(`/datasets/run_draft/status?dataset_id=${datasetId}&benchmark_id=${benchmarkId}&model_id=${modelId}`);
const statusData = await response.json();
const resultId = `b${benchmarkId}m${modelId}d${datasetId}`; // Calculate result_id
+ let statusLink = '';
if (statusData.status === 'done') {
- element.innerHTML = `
✅ Done`;
+ statusLink = `
✅ Done`;
clearInterval(intervalId); // Stop polling
} else if (statusData.status === 'failed') {
- element.innerHTML = `
❌ Failed`;
+ statusLink = `
❌ Failed`;
clearInterval(intervalId); // Stop polling
} else if (statusData.status === 'pending') {
- element.innerHTML = `
⏳ Pending...`;
- } else {
- element.innerHTML = `
🔄 Not started`;
- clearInterval(intervalId); // Stop polling if status is N/A
+ statusLink = `
⏳ Pending...`;
+ }
+
+ if (statusLink) {
+ statusContainer.innerHTML = statusLink; // Replace run button with status link
}
} catch (error) {
console.error('Error fetching status:', error);
@@ -245,26 +261,24 @@
Approval Required
};
// Iterate over all model statuses and fetch them
- document.querySelectorAll('.model-status').forEach(statusElement => {
- const [benchmarkId, modelId] = statusElement.id.split('-').slice(1);
+ document.querySelectorAll('.run-model-btn').forEach(btn => {
+ const benchmarkId = btn.getAttribute('data-benchmark-id');
+ const modelId = btn.getAttribute('data-model-id');
const datasetId = {{ entity.id }};
- const intervalId = setInterval(() => fetchStatus(datasetId, benchmarkId, modelId, statusElement, intervalId), 1000); // Poll status every second
- });
+ const statusContainer = document.getElementById(`status-container-${benchmarkId}-${modelId}`);
- // Handle the "Run" button click
- document.querySelectorAll('.run-model-btn').forEach(btn => {
- btn.addEventListener('click', async function() {
- const benchmarkId = this.getAttribute('data-benchmark-id');
- const modelId = this.getAttribute('data-model-id');
- const datasetId = {{ entity.id }};
- const statusElement = document.getElementById(`status-${benchmarkId}-${modelId}`);
+ // Polling to update status
+ const intervalId = setInterval(() => fetchStatus(datasetId, benchmarkId, modelId, statusContainer, intervalId), 1000);
+ // Handle the "Run" button click
+ btn.addEventListener('click', async function() {
try {
await fetch(`/datasets/run_draft/run?dataset_id=${datasetId}&benchmark_id=${benchmarkId}&model_id=${modelId}`, {
method: 'POST'
});
- statusElement.innerHTML = `
⏳ Pending...`;
- const intervalId = setInterval(() => fetchStatus(datasetId, benchmarkId, modelId, statusElement, intervalId), 1000); // Poll status every second
+ // Replace the run button with a pending status immediately
+ statusContainer.innerHTML = `
⏳ Pending...`;
+ const intervalId = setInterval(() => fetchStatus(datasetId, benchmarkId, modelId, statusContainer, intervalId), 1000);
} catch (error) {
console.error('Error running model:', error);
}