diff --git a/packages/dm-core-plugins/src/job/JobControlButton.tsx b/packages/dm-core-plugins/src/job/JobControlButton.tsx
index 16e01382e..41dcbaac3 100644
--- a/packages/dm-core-plugins/src/job/JobControlButton.tsx
+++ b/packages/dm-core-plugins/src/job/JobControlButton.tsx
@@ -50,7 +50,9 @@ export const JobControlButton = (props: {
{status}
+
Promise
fetchResult: () => any // TODO: Type set this return value
- logs: string
+ logs: string[]
+ progress: GLfloat
isLoading: boolean
error: ErrorResponse | undefined
exists: boolean
@@ -75,7 +76,8 @@ interface IUseJob {
*/
export function useJob(entityId?: string, jobId?: string): IUseJob {
const [hookJobId, setHookJobId] = useState(jobId)
- const [logs, setLogs] = useState('No logs fetched')
+ const [logs, setLogs] = useState(['No logs fetched'])
+ const [progress, setProgress] = useState(0.0)
const [status, setStatus] = useState(JobStatus.Unknown)
const [isLoading, setIsLoading] = useState(true)
const [error, setError] = useState()
@@ -110,6 +112,7 @@ export function useJob(entityId?: string, jobId?: string): IUseJob {
// When hookJobId changes, we register an interval to check status.
// The interval is deregistered if the status of the job is not "Running"
useEffect(() => {
+ console.log(hookJobId)
if (!hookJobId) return
statusIntervalId = setInterval(fetchStatusAndLogs, 5000)
return () => clearInterval(statusIntervalId)
@@ -131,7 +134,7 @@ export function useJob(entityId?: string, jobId?: string): IUseJob {
.startJob({ jobDmssId: entityId })
.then((response: AxiosResponse) => {
setHookJobId(response.data.uid)
- setLogs(response.data.message)
+ setLogs([response.data.message])
setError(undefined)
setStatus(JobStatus.Running)
return response.data
@@ -149,25 +152,25 @@ export function useJob(entityId?: string, jobId?: string): IUseJob {
async function fetchStatusAndLogs(): Promise {
if (!hookJobId) {
clearInterval(statusIntervalId)
- const message = 'The job has not been started'
- setLogs(message)
+ const log = ['The job has not been started']
+ setLogs(log)
setStatus(JobStatus.NotStarted)
return Promise.resolve({
status: JobStatus.NotStarted,
- log: message,
- message: message,
+ log: log,
+ percentage: 0.0,
})
}
setIsLoading(true)
-
return dmJobApi
.jobStatus({ jobUid: hookJobId })
.then((response: AxiosResponse) => {
+ if (response.data.percentage) {
+ setProgress(response.data.percentage)
+ }
setLogs(
- response.data.log ??
- response.data.message ??
- 'No logs or status returned from job handler'
+ response.data.log ?? ['No logs or status returned from job handler']
)
if (response.data.status !== status) setStatus(response.data.status)
if (
@@ -209,6 +212,8 @@ export function useJob(entityId?: string, jobId?: string): IUseJob {
.finally(() => {
setError(undefined)
setIsLoading(false)
+ setLogs([])
+ setProgress(0.0)
})
}
@@ -238,6 +243,7 @@ export function useJob(entityId?: string, jobId?: string): IUseJob {
remove,
fetchResult,
logs,
+ progress,
isLoading,
error,
exists: !!hookJobId,
diff --git a/packages/dm-core/src/services/api/configs/gen-job/.openapi-generator/FILES b/packages/dm-core/src/services/api/configs/gen-job/.openapi-generator/FILES
index 7512ccf1f..02ba740ee 100644
--- a/packages/dm-core/src/services/api/configs/gen-job/.openapi-generator/FILES
+++ b/packages/dm-core/src/services/api/configs/gen-job/.openapi-generator/FILES
@@ -11,5 +11,7 @@ models/error-response.ts
models/get-job-result-response.ts
models/index.ts
models/job-status.ts
+models/progress.ts
models/start-job-response.ts
models/status-job-response.ts
+models/update-job-progress-response.ts
diff --git a/packages/dm-core/src/services/api/configs/gen-job/api.ts b/packages/dm-core/src/services/api/configs/gen-job/api.ts
index a86c94fae..0220fc07d 100644
--- a/packages/dm-core/src/services/api/configs/gen-job/api.ts
+++ b/packages/dm-core/src/services/api/configs/gen-job/api.ts
@@ -4,7 +4,7 @@
* Data Modelling Job API
* REST API used with the Data Modelling framework to schedule jobs
*
- * The version of the OpenAPI document: 0.1.0
+ * The version of the OpenAPI document: 1.3.5
*
*
* NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
diff --git a/packages/dm-core/src/services/api/configs/gen-job/api/dmjobs-api.ts b/packages/dm-core/src/services/api/configs/gen-job/api/dmjobs-api.ts
index 272b948a4..5fe700c04 100644
--- a/packages/dm-core/src/services/api/configs/gen-job/api/dmjobs-api.ts
+++ b/packages/dm-core/src/services/api/configs/gen-job/api/dmjobs-api.ts
@@ -4,7 +4,7 @@
* Data Modelling Job API
* REST API used with the Data Modelling framework to schedule jobs
*
- * The version of the OpenAPI document: 0.1.0
+ * The version of the OpenAPI document: 1.3.5
*
*
* NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
@@ -26,9 +26,13 @@ import { ErrorResponse } from '../models';
// @ts-ignore
import { GetJobResultResponse } from '../models';
// @ts-ignore
+import { Progress } from '../models';
+// @ts-ignore
import { StartJobResponse } from '../models';
// @ts-ignore
import { StatusJobResponse } from '../models';
+// @ts-ignore
+import { UpdateJobProgressResponse } from '../models';
/**
* DMJobsApi - axios parameter creator
* @export
@@ -182,6 +186,57 @@ export const DMJobsApiAxiosParamCreator = function (configuration?: Configuratio
let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers};
+ return {
+ url: toPathString(localVarUrlObj),
+ options: localVarRequestOptions,
+ };
+ },
+ /**
+ * Update the progress of the job. - **job_uid**: the job API\'s internal uid for the job. - **progress**: progress object with percentage and logs
+ * @summary Progress
+ * @param {string} jobUid
+ * @param {boolean} forceLog
+ * @param {Progress} progress
+ * @param {*} [options] Override http request option.
+ * @throws {RequiredError}
+ */
+ updateJobProgress: async (jobUid: string, forceLog: boolean, progress: Progress, options: AxiosRequestConfig = {}): Promise => {
+ // verify required parameter 'jobUid' is not null or undefined
+ assertParamExists('updateJobProgress', 'jobUid', jobUid)
+ // verify required parameter 'forceLog' is not null or undefined
+ assertParamExists('updateJobProgress', 'forceLog', forceLog)
+ // verify required parameter 'progress' is not null or undefined
+ assertParamExists('updateJobProgress', 'progress', progress)
+ const localVarPath = `/{job_uid}`
+ .replace(`{${"job_uid"}}`, encodeURIComponent(String(jobUid)));
+ // use dummy base URL string because the URL constructor only accepts absolute URLs.
+ const localVarUrlObj = new URL(localVarPath, DUMMY_BASE_URL);
+ let baseOptions;
+ if (configuration) {
+ baseOptions = configuration.baseOptions;
+ }
+
+ const localVarRequestOptions = { method: 'PUT', ...baseOptions, ...options};
+ const localVarHeaderParameter = {} as any;
+ const localVarQueryParameter = {} as any;
+
+ // authentication OAuth2AuthorizationCodeBearer required
+ // oauth required
+ await setOAuthToObject(localVarHeaderParameter, "OAuth2AuthorizationCodeBearer", [], configuration)
+
+ if (forceLog !== undefined) {
+ localVarQueryParameter['force_log'] = forceLog;
+ }
+
+
+
+ localVarHeaderParameter['Content-Type'] = 'application/json';
+
+ setSearchParams(localVarUrlObj, localVarQueryParameter);
+ let headersFromBaseOptions = baseOptions && baseOptions.headers ? baseOptions.headers : {};
+ localVarRequestOptions.headers = {...localVarHeaderParameter, ...headersFromBaseOptions, ...options.headers};
+ localVarRequestOptions.data = serializeDataIfNeeded(progress, localVarRequestOptions, configuration)
+
return {
url: toPathString(localVarUrlObj),
options: localVarRequestOptions,
@@ -241,6 +296,19 @@ export const DMJobsApiFp = function(configuration?: Configuration) {
const localVarAxiosArgs = await localVarAxiosParamCreator.startJob(jobDmssId, options);
return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration);
},
+ /**
+ * Update the progress of the job. - **job_uid**: the job API\'s internal uid for the job. - **progress**: progress object with percentage and logs
+ * @summary Progress
+ * @param {string} jobUid
+ * @param {boolean} forceLog
+ * @param {Progress} progress
+ * @param {*} [options] Override http request option.
+ * @throws {RequiredError}
+ */
+ async updateJobProgress(jobUid: string, forceLog: boolean, progress: Progress, options?: AxiosRequestConfig): Promise<(axios?: AxiosInstance, basePath?: string) => AxiosPromise> {
+ const localVarAxiosArgs = await localVarAxiosParamCreator.updateJobProgress(jobUid, forceLog, progress, options);
+ return createRequestFunction(localVarAxiosArgs, globalAxios, BASE_PATH, configuration);
+ },
}
};
@@ -291,6 +359,16 @@ export const DMJobsApiFactory = function (configuration?: Configuration, basePat
startJob(requestParameters: DMJobsApiStartJobRequest, options?: AxiosRequestConfig): AxiosPromise {
return localVarFp.startJob(requestParameters.jobDmssId, options).then((request) => request(axios, basePath));
},
+ /**
+ * Update the progress of the job. - **job_uid**: the job API\'s internal uid for the job. - **progress**: progress object with percentage and logs
+ * @summary Progress
+ * @param {DMJobsApiUpdateJobProgressRequest} requestParameters Request parameters.
+ * @param {*} [options] Override http request option.
+ * @throws {RequiredError}
+ */
+ updateJobProgress(requestParameters: DMJobsApiUpdateJobProgressRequest, options?: AxiosRequestConfig): AxiosPromise {
+ return localVarFp.updateJobProgress(requestParameters.jobUid, requestParameters.forceLog, requestParameters.progress, options).then((request) => request(axios, basePath));
+ },
};
};
@@ -350,6 +428,34 @@ export interface DMJobsApiStartJobRequest {
readonly jobDmssId: string
}
+/**
+ * Request parameters for updateJobProgress operation in DMJobsApi.
+ * @export
+ * @interface DMJobsApiUpdateJobProgressRequest
+ */
+export interface DMJobsApiUpdateJobProgressRequest {
+ /**
+ *
+ * @type {string}
+ * @memberof DMJobsApiUpdateJobProgress
+ */
+ readonly jobUid: string
+
+ /**
+ *
+ * @type {boolean}
+ * @memberof DMJobsApiUpdateJobProgress
+ */
+ readonly forceLog: boolean
+
+ /**
+ *
+ * @type {Progress}
+ * @memberof DMJobsApiUpdateJobProgress
+ */
+ readonly progress: Progress
+}
+
/**
* DMJobsApi - object-oriented interface
* @export
@@ -404,4 +510,16 @@ export class DMJobsApi extends BaseAPI {
public startJob(requestParameters: DMJobsApiStartJobRequest, options?: AxiosRequestConfig) {
return DMJobsApiFp(this.configuration).startJob(requestParameters.jobDmssId, options).then((request) => request(this.axios, this.basePath));
}
+
+ /**
+ * Update the progress of the job. - **job_uid**: the job API\'s internal uid for the job. - **progress**: progress object with percentage and logs
+ * @summary Progress
+ * @param {DMJobsApiUpdateJobProgressRequest} requestParameters Request parameters.
+ * @param {*} [options] Override http request option.
+ * @throws {RequiredError}
+ * @memberof DMJobsApi
+ */
+ public updateJobProgress(requestParameters: DMJobsApiUpdateJobProgressRequest, options?: AxiosRequestConfig) {
+ return DMJobsApiFp(this.configuration).updateJobProgress(requestParameters.jobUid, requestParameters.forceLog, requestParameters.progress, options).then((request) => request(this.axios, this.basePath));
+ }
}
diff --git a/packages/dm-core/src/services/api/configs/gen-job/base.ts b/packages/dm-core/src/services/api/configs/gen-job/base.ts
index e97f1bdef..d2b2315c4 100644
--- a/packages/dm-core/src/services/api/configs/gen-job/base.ts
+++ b/packages/dm-core/src/services/api/configs/gen-job/base.ts
@@ -4,7 +4,7 @@
* Data Modelling Job API
* REST API used with the Data Modelling framework to schedule jobs
*
- * The version of the OpenAPI document: 0.1.0
+ * The version of the OpenAPI document: 1.3.5
*
*
* NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
diff --git a/packages/dm-core/src/services/api/configs/gen-job/common.ts b/packages/dm-core/src/services/api/configs/gen-job/common.ts
index b92e6603d..fdee085e1 100644
--- a/packages/dm-core/src/services/api/configs/gen-job/common.ts
+++ b/packages/dm-core/src/services/api/configs/gen-job/common.ts
@@ -4,7 +4,7 @@
* Data Modelling Job API
* REST API used with the Data Modelling framework to schedule jobs
*
- * The version of the OpenAPI document: 0.1.0
+ * The version of the OpenAPI document: 1.3.5
*
*
* NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
diff --git a/packages/dm-core/src/services/api/configs/gen-job/configuration.ts b/packages/dm-core/src/services/api/configs/gen-job/configuration.ts
index 6661456a0..fb8ba0350 100644
--- a/packages/dm-core/src/services/api/configs/gen-job/configuration.ts
+++ b/packages/dm-core/src/services/api/configs/gen-job/configuration.ts
@@ -4,7 +4,7 @@
* Data Modelling Job API
* REST API used with the Data Modelling framework to schedule jobs
*
- * The version of the OpenAPI document: 0.1.0
+ * The version of the OpenAPI document: 1.3.5
*
*
* NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
diff --git a/packages/dm-core/src/services/api/configs/gen-job/index.ts b/packages/dm-core/src/services/api/configs/gen-job/index.ts
index fcfaa24db..374a7bc68 100644
--- a/packages/dm-core/src/services/api/configs/gen-job/index.ts
+++ b/packages/dm-core/src/services/api/configs/gen-job/index.ts
@@ -4,7 +4,7 @@
* Data Modelling Job API
* REST API used with the Data Modelling framework to schedule jobs
*
- * The version of the OpenAPI document: 0.1.0
+ * The version of the OpenAPI document: 1.3.5
*
*
* NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
diff --git a/packages/dm-core/src/services/api/configs/gen-job/models/error-response.ts b/packages/dm-core/src/services/api/configs/gen-job/models/error-response.ts
index 6d1139df8..674fa1062 100644
--- a/packages/dm-core/src/services/api/configs/gen-job/models/error-response.ts
+++ b/packages/dm-core/src/services/api/configs/gen-job/models/error-response.ts
@@ -4,7 +4,7 @@
* Data Modelling Job API
* REST API used with the Data Modelling framework to schedule jobs
*
- * The version of the OpenAPI document: 0.1.0
+ * The version of the OpenAPI document: 1.3.5
*
*
* NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
diff --git a/packages/dm-core/src/services/api/configs/gen-job/models/get-job-result-response.ts b/packages/dm-core/src/services/api/configs/gen-job/models/get-job-result-response.ts
index ece08f245..66411c416 100644
--- a/packages/dm-core/src/services/api/configs/gen-job/models/get-job-result-response.ts
+++ b/packages/dm-core/src/services/api/configs/gen-job/models/get-job-result-response.ts
@@ -4,7 +4,7 @@
* Data Modelling Job API
* REST API used with the Data Modelling framework to schedule jobs
*
- * The version of the OpenAPI document: 0.1.0
+ * The version of the OpenAPI document: 1.3.5
*
*
* NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
diff --git a/packages/dm-core/src/services/api/configs/gen-job/models/index.ts b/packages/dm-core/src/services/api/configs/gen-job/models/index.ts
index e010c3e3f..58b219813 100644
--- a/packages/dm-core/src/services/api/configs/gen-job/models/index.ts
+++ b/packages/dm-core/src/services/api/configs/gen-job/models/index.ts
@@ -1,5 +1,7 @@
export * from './error-response';
export * from './get-job-result-response';
export * from './job-status';
+export * from './progress';
export * from './start-job-response';
export * from './status-job-response';
+export * from './update-job-progress-response';
diff --git a/packages/dm-core/src/services/api/configs/gen-job/models/job-status.ts b/packages/dm-core/src/services/api/configs/gen-job/models/job-status.ts
index d7cc0c43f..4761cb5ca 100644
--- a/packages/dm-core/src/services/api/configs/gen-job/models/job-status.ts
+++ b/packages/dm-core/src/services/api/configs/gen-job/models/job-status.ts
@@ -4,7 +4,7 @@
* Data Modelling Job API
* REST API used with the Data Modelling framework to schedule jobs
*
- * The version of the OpenAPI document: 0.1.0
+ * The version of the OpenAPI document: 1.3.5
*
*
* NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
diff --git a/packages/dm-core/src/services/api/configs/gen-job/models/progress.ts b/packages/dm-core/src/services/api/configs/gen-job/models/progress.ts
new file mode 100644
index 000000000..887dfb4b7
--- /dev/null
+++ b/packages/dm-core/src/services/api/configs/gen-job/models/progress.ts
@@ -0,0 +1,47 @@
+/* tslint:disable */
+/* eslint-disable */
+/**
+ * Data Modelling Job API
+ * REST API used with the Data Modelling framework to schedule jobs
+ *
+ * The version of the OpenAPI document: 1.3.5
+ *
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ */
+
+
+// May contain unused imports in some cases
+// @ts-ignore
+import { JobStatus } from './job-status';
+
+/**
+ *
+ * @export
+ * @interface Progress
+ */
+export interface Progress {
+ /**
+ *
+ * @type {number}
+ * @memberof Progress
+ */
+ 'percentage'?: number;
+ /**
+ *
+ * @type {Array}
+ * @memberof Progress
+ */
+ 'logs'?: Array;
+ /**
+ *
+ * @type {JobStatus}
+ * @memberof Progress
+ */
+ 'status'?: JobStatus;
+}
+
+
+
diff --git a/packages/dm-core/src/services/api/configs/gen-job/models/start-job-response.ts b/packages/dm-core/src/services/api/configs/gen-job/models/start-job-response.ts
index 10ae3b4f5..cda5752dd 100644
--- a/packages/dm-core/src/services/api/configs/gen-job/models/start-job-response.ts
+++ b/packages/dm-core/src/services/api/configs/gen-job/models/start-job-response.ts
@@ -4,7 +4,7 @@
* Data Modelling Job API
* REST API used with the Data Modelling framework to schedule jobs
*
- * The version of the OpenAPI document: 0.1.0
+ * The version of the OpenAPI document: 1.3.5
*
*
* NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
diff --git a/packages/dm-core/src/services/api/configs/gen-job/models/status-job-response.ts b/packages/dm-core/src/services/api/configs/gen-job/models/status-job-response.ts
index cefdd9f40..aef460ba1 100644
--- a/packages/dm-core/src/services/api/configs/gen-job/models/status-job-response.ts
+++ b/packages/dm-core/src/services/api/configs/gen-job/models/status-job-response.ts
@@ -4,7 +4,7 @@
* Data Modelling Job API
* REST API used with the Data Modelling framework to schedule jobs
*
- * The version of the OpenAPI document: 0.1.0
+ * The version of the OpenAPI document: 1.3.5
*
*
* NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
@@ -31,16 +31,16 @@ export interface StatusJobResponse {
'status': JobStatus;
/**
*
- * @type {string}
+ * @type {Array}
* @memberof StatusJobResponse
*/
- 'log'?: string;
+ 'log'?: Array;
/**
*
- * @type {string}
+ * @type {number}
* @memberof StatusJobResponse
*/
- 'message': string;
+ 'percentage'?: number;
}
diff --git a/packages/dm-core/src/services/api/configs/gen-job/models/update-job-progress-response.ts b/packages/dm-core/src/services/api/configs/gen-job/models/update-job-progress-response.ts
new file mode 100644
index 000000000..b5343c270
--- /dev/null
+++ b/packages/dm-core/src/services/api/configs/gen-job/models/update-job-progress-response.ts
@@ -0,0 +1,30 @@
+/* tslint:disable */
+/* eslint-disable */
+/**
+ * Data Modelling Job API
+ * REST API used with the Data Modelling framework to schedule jobs
+ *
+ * The version of the OpenAPI document: 1.3.5
+ *
+ *
+ * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
+ * https://openapi-generator.tech
+ * Do not edit the class manually.
+ */
+
+
+
+/**
+ *
+ * @export
+ * @interface UpdateJobProgressResponse
+ */
+export interface UpdateJobProgressResponse {
+ /**
+ *
+ * @type {string}
+ * @memberof UpdateJobProgressResponse
+ */
+ 'result': string;
+}
+