in web/src/connectors/edit-job-connector/edit-job-connector.tsx [203:278]
save: onSubmit(),
lens,
disableNextButton: !isValid,
finishButtonCaption:
values.jobType === 'NoExtraction' ? 'Finish' : 'Start Extraction'
})}
</div>
</>
);
},
[pipelineManagers, categories, users, taxonomies]
);
const handleSave = useCallback(
async (values: JobValues) => {
const {
jobName,
jobType,
deadline: jobDeadline,
categories = [],
validationType,
owners = [],
annotators: jobAnnotator = [],
validators: jobValidators = [],
annotators_validators = [],
is_draft,
is_auto_distribution,
start_manual_job_automatically,
extensive_coverage,
selected_taxonomies,
pipeline
} = values;
if (jobType === 'NoExtraction') {
onRedirectAfterFinish?.();
return;
}
const deadline = jobDeadline ? new Date(jobDeadline).toISOString() : undefined;
const annotators = validationType === 'cross' ? annotators_validators : jobAnnotator;
const validators = validationType === 'cross' ? [] : jobValidators;
const jobProps: JobVariables = {
name: jobName,
revisions: revisionId ? [revisionId] : revisions,
datasets,
files,
previous_jobs: jobs,
type:
jobType === 'ExtractionJob'
? 'ExtractionJob'
: pipeline
? 'ExtractionWithAnnotationJob'
: 'AnnotationJob',
is_draft,
is_auto_distribution: jobType !== 'ExtractionJob' && is_auto_distribution,
start_manual_job_automatically:
jobType !== 'ExtractionJob' && start_manual_job_automatically,
extensive_coverage,
categories: categories.map((category) => category.id),
deadline,
validation_type: validationType,
owners: owners.map((owner) => owner.id),
annotators: annotators.map((annotator) => annotator.id),
validators: validators.map((validator) => validator.id),
pipeline_name: pipeline?.name,
pipeline_id: pipeline?.id,
pipeline_engine: pipeline?.type
};
if (!pipeline) {
delete jobProps.start_manual_job_automatically;
}
if (selected_taxonomies) {
jobProps.categories = jobProps.categories?.map((categoryId) => {