diff --git a/cvat-core/src/session.js b/cvat-core/src/session.js index 8c47fa43..35a3125a 100644 --- a/cvat-core/src/session.js +++ b/cvat-core/src/session.js @@ -875,6 +875,7 @@ data_original_chunk_type: undefined, use_zip_chunks: undefined, use_cache: undefined, + copy_data: undefined, }; for (const property in data) { @@ -1117,6 +1118,22 @@ data.use_cache = useCache; }, }, + /** + * @name copyData + * @type {boolean} + * @memberof module:API.cvat.classes.Task + * @instance + * @throws {module:API.cvat.exceptions.ArgumentError} + */ + copyData: { + get: () => data.copy_data, + set: (copyData) => { + if (typeof copyData !== 'boolean') { + throw new ArgumentError('Value must be a boolean'); + } + data.copy_data = copyData; + }, + }, /** * After task has been created value can be appended only. * @name labels @@ -1695,6 +1712,9 @@ if (typeof this.dataChunkSize !== 'undefined') { taskDataSpec.chunk_size = this.dataChunkSize; } + if (typeof this.copyData !== 'undefined') { + taskDataSpec.copy_data = this.copyData; + } const task = await serverProxy.tasks.createTask(taskSpec, taskDataSpec, onUpdate); return new Task(task); diff --git a/cvat-ui/src/actions/tasks-actions.ts b/cvat-ui/src/actions/tasks-actions.ts index 1f6eebdb..58b492f2 100644 --- a/cvat-ui/src/actions/tasks-actions.ts +++ b/cvat-ui/src/actions/tasks-actions.ts @@ -405,6 +405,9 @@ export function createTaskAsync(data: any): ThunkAction, {}, {}, A if (data.advanced.dataChunkSize) { description.data_chunk_size = data.advanced.dataChunkSize; } + if (data.advanced.copyData) { + description.copy_data = data.advanced.copyData; + } const taskInstance = new cvat.classes.Task(description); taskInstance.clientFiles = data.files.local; diff --git a/cvat-ui/src/components/create-task-page/advanced-configuration-form.tsx b/cvat-ui/src/components/create-task-page/advanced-configuration-form.tsx index 88175b7e..c92c7042 100644 --- a/cvat-ui/src/components/create-task-page/advanced-configuration-form.tsx +++ b/cvat-ui/src/components/create-task-page/advanced-configuration-form.tsx @@ -26,11 +26,14 @@ export interface AdvancedConfiguration { useZipChunks: boolean; dataChunkSize?: number; useCache: boolean; + activeTab: string; + copyData?: boolean; } type Props = FormComponentProps & { onSubmit(values: AdvancedConfiguration): void; installedGit: boolean; + activeTab: string; }; function isPositiveInteger(_: any, value: any, callback: any): void { @@ -114,6 +117,26 @@ class AdvancedConfigurationForm extends React.PureComponent { form.resetFields(); } + renderCopyDataChechbox(): JSX.Element { + const { form } = this.props; + return ( + + + + {form.getFieldDecorator('copyData', { + initialValue: false, + valuePropName: 'checked', + })( + + Copy data into CVAT + , + )} + + + + ); + } + private renderImageQuality(): JSX.Element { const { form } = this.props; @@ -386,10 +409,12 @@ class AdvancedConfigurationForm extends React.PureComponent { } public render(): JSX.Element { - const { installedGit } = this.props; - + const { installedGit, activeTab } = this.props; return (
+ + {activeTab === 'share' ? this.renderCopyDataChechbox() : null} + {this.renderUzeZipChunks()} diff --git a/cvat-ui/src/components/create-task-page/create-task-content.tsx b/cvat-ui/src/components/create-task-page/create-task-content.tsx index 4710fc3c..c8964256 100644 --- a/cvat-ui/src/components/create-task-page/create-task-content.tsx +++ b/cvat-ui/src/components/create-task-page/create-task-content.tsx @@ -42,6 +42,7 @@ const defaultState = { lfs: false, useZipChunks: true, useCache: true, + activeTab: 'local', }, labels: [], files: { @@ -115,10 +116,13 @@ class CreateTaskContent extends React.PureComponent { - // todo - // add field to state CreateTaskData.AdvancedConfiguration - // change state here - // draw checkbox depending on the state + const values = this.state.advanced; + this.setState({ + advanced: { + ...values, + activeTab: key + } + }); }; private handleSubmitClick = (): void => { @@ -217,6 +221,7 @@ class CreateTaskContent extends React.PureComponentAdvanced configuration}> { this.advancedConfigurationComponent = component; }}