Added queing system to the UI

This commit is contained in:
Jaret Burkett
2025-10-14 12:00:42 -06:00
parent 0c9e1c3deb
commit 7e34a03113
30 changed files with 750 additions and 273 deletions

View File

@@ -73,15 +73,16 @@ export const getJobConfig = (job: Job) => {
export const getAvaliableJobActions = (job: Job) => {
const jobConfig = getJobConfig(job);
const isStopping = job.stop && job.status === 'running';
const canDelete = ['completed', 'stopped', 'error'].includes(job.status) && !isStopping;
const canEdit = ['completed', 'stopped', 'error'].includes(job.status) && !isStopping;
const canDelete = ['queued', 'completed', 'stopped', 'error'].includes(job.status) && !isStopping;
const canEdit = ['queued','completed', 'stopped', 'error'].includes(job.status) && !isStopping;
const canRemoveFromQueue = job.status === 'queued';
const canStop = job.status === 'running' && !isStopping;
let canStart = ['stopped', 'error'].includes(job.status) && !isStopping;
// can resume if more steps were added
if (job.status === 'completed' && jobConfig.config.process[0].train.steps > job.step && !isStopping) {
canStart = true;
}
return { canDelete, canEdit, canStop, canStart };
return { canDelete, canEdit, canStop, canStart, canRemoveFromQueue };
};
export const getNumberOfSamples = (job: Job) => {

32
ui/src/utils/queue.ts Normal file
View File

@@ -0,0 +1,32 @@
import { apiClient } from '@/utils/api';
export const startQueue = (queueID: string) => {
return new Promise<void>((resolve, reject) => {
apiClient
.get(`/api/queue/${queueID}/start`)
.then(res => res.data)
.then(data => {
console.log('Queue started:', data);
resolve();
})
.catch(error => {
console.error('Error starting queue:', error);
reject(error);
});
});
};
export const stopQueue = (queueID: string) => {
return new Promise<void>((resolve, reject) => {
apiClient
.get(`/api/queue/${queueID}/stop`)
.then(res => res.data)
.then(data => {
console.log('Queue stopped:', data);
resolve();
})
.catch(error => {
console.error('Error stopping queue:', error);
reject(error);
});
});
};