Spaces:
Paused
Paused
File size: 2,375 Bytes
1c72248 |
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 |
import { JobConfig } from '@/types';
import { Job } from '@prisma/client';
import { apiClient } from '@/utils/api';
export const startJob = (jobID: string) => {
return new Promise<void>((resolve, reject) => {
apiClient
.get(`/api/jobs/${jobID}/start`)
.then(res => res.data)
.then(data => {
console.log('Job started:', data);
resolve();
})
.catch(error => {
console.error('Error starting job:', error);
reject(error);
});
});
};
export const stopJob = (jobID: string) => {
return new Promise<void>((resolve, reject) => {
apiClient
.get(`/api/jobs/${jobID}/stop`)
.then(res => res.data)
.then(data => {
console.log('Job stopped:', data);
resolve();
})
.catch(error => {
console.error('Error stopping job:', error);
reject(error);
});
});
};
export const deleteJob = (jobID: string) => {
return new Promise<void>((resolve, reject) => {
apiClient
.get(`/api/jobs/${jobID}/delete`)
.then(res => res.data)
.then(data => {
console.log('Job deleted:', data);
resolve();
})
.catch(error => {
console.error('Error deleting job:', error);
reject(error);
});
});
};
export const getJobConfig = (job: Job) => {
return JSON.parse(job.job_config) as JobConfig;
};
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 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 };
};
export const getNumberOfSamples = (job: Job) => {
const jobConfig = getJobConfig(job);
return jobConfig.config.process[0].sample?.prompts?.length || 0;
};
export const getTotalSteps = (job: Job) => {
const jobConfig = getJobConfig(job);
return jobConfig.config.process[0].train.steps;
};
|