From c8c06dbcad9b3b4a4762dc213bc9318450a59a85 Mon Sep 17 00:00:00 2001 From: unknown Date: Thu, 16 Jan 2025 11:03:02 +0530 Subject: [PATCH 1/5] Fetching all privileges from the paginated API --- .../components/FormPrivilegeTable.jsx | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/src/form-builder/components/FormPrivilegeTable.jsx b/src/form-builder/components/FormPrivilegeTable.jsx index 94b1a5b9..95bdf71a 100644 --- a/src/form-builder/components/FormPrivilegeTable.jsx +++ b/src/form-builder/components/FormPrivilegeTable.jsx @@ -80,15 +80,30 @@ export default class FormPrivilegeTable extends Component { this.setState({ loading: false }); }); } + fetchPrivileges() { let initialPrivileges = []; + let privileges = []; const queryParams = '?='; const optionsUrl = `${formBuilderConstants.formPrivilegeUrl}${queryParams}`; httpInterceptor.get(optionsUrl) .then((initialPrivileges) => { - this.setState({ availablePrivileges: this.arrangePrivileges(initialPrivileges.results), loading: false }); + this.collectAllPrivileges(initialPrivileges, privileges); }); } + + collectAllPrivileges(initialPrivileges, allPrivileges) { + allPrivileges.push(...initialPrivileges.results); + if (initialPrivileges.links.length > 0 && initialPrivileges.links[0].rel === "next") { + httpInterceptor.get(initialPrivileges.links[0].uri) + .then((privileges) => { + return this.collectAllPrivileges(privileges, allPrivileges) + }); + } else { + this.setState({ availablePrivileges: this.arrangePrivileges(allPrivileges), loading: false }); + } + } + fetchFormPrivilegesFromDB() { let initialPrivilegesFromDB = []; const queryParams = '?='; From 9610d6b8e8f6fcec4d3c7a05aedffd618a34eabf Mon Sep 17 00:00:00 2001 From: unknown Date: Thu, 16 Jan 2025 12:39:14 +0530 Subject: [PATCH 2/5] Searching for next link if present --- src/form-builder/components/FormPrivilegeTable.jsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/form-builder/components/FormPrivilegeTable.jsx b/src/form-builder/components/FormPrivilegeTable.jsx index 95bdf71a..01627d33 100644 --- a/src/form-builder/components/FormPrivilegeTable.jsx +++ b/src/form-builder/components/FormPrivilegeTable.jsx @@ -94,7 +94,7 @@ export default class FormPrivilegeTable extends Component { collectAllPrivileges(initialPrivileges, allPrivileges) { allPrivileges.push(...initialPrivileges.results); - if (initialPrivileges.links.length > 0 && initialPrivileges.links[0].rel === "next") { + if (initialPrivileges.links.length > 0 && initialPrivileges.links.find(link => link.rel === "next") !== undefined) { httpInterceptor.get(initialPrivileges.links[0].uri) .then((privileges) => { return this.collectAllPrivileges(privileges, allPrivileges) From 1444958b1c23a882e7150cce90281c1cbe2d51b2 Mon Sep 17 00:00:00 2001 From: unknown Date: Fri, 7 Mar 2025 11:09:25 +0530 Subject: [PATCH 3/5] Adding a limit to fetch the priviledges --- src/form-builder/components/FormPrivilegeTable.jsx | 14 +++++++++----- src/form-builder/constants.js | 2 +- 2 files changed, 10 insertions(+), 6 deletions(-) diff --git a/src/form-builder/components/FormPrivilegeTable.jsx b/src/form-builder/components/FormPrivilegeTable.jsx index 01627d33..412460ed 100644 --- a/src/form-builder/components/FormPrivilegeTable.jsx +++ b/src/form-builder/components/FormPrivilegeTable.jsx @@ -87,20 +87,24 @@ export default class FormPrivilegeTable extends Component { const queryParams = '?='; const optionsUrl = `${formBuilderConstants.formPrivilegeUrl}${queryParams}`; httpInterceptor.get(optionsUrl) - .then((initialPrivileges) => { - this.collectAllPrivileges(initialPrivileges, privileges); - }); + .then((initialPrivileges) => { + this.collectAllPrivileges(initialPrivileges, privileges); + }); } collectAllPrivileges(initialPrivileges, allPrivileges) { allPrivileges.push(...initialPrivileges.results); + if (allPrivileges.length === formBuilderConstants.privilegeLimit) { + this.setState({ availablePrivileges: this.arrangePrivileges(allPrivileges), loading: false }); + return; + } if (initialPrivileges.links.length > 0 && initialPrivileges.links.find(link => link.rel === "next") !== undefined) { - httpInterceptor.get(initialPrivileges.links[0].uri) + httpInterceptor.get(initialPrivileges.links[0].uri.replace("http:", "https:")) .then((privileges) => { return this.collectAllPrivileges(privileges, allPrivileges) }); } else { - this.setState({ availablePrivileges: this.arrangePrivileges(allPrivileges), loading: false }); + this.setState({ availablePrivileges: this.arrangePrivileges(allPrivileges), loading: false }); } } diff --git a/src/form-builder/constants.js b/src/form-builder/constants.js index e7570e5a..fe67a009 100644 --- a/src/form-builder/constants.js +++ b/src/form-builder/constants.js @@ -28,5 +28,5 @@ export const formBuilderConstants = { getFormPrivilegesFromUuidUrl: '/openmrs/ws/rest/v1/bahmniie/form/getFormPrivilegesFromUuid', jsonToPdfConvertionUrl: '/openmrs/ws/rest/v1/bahmniie/form/jsonToPdf', pdfDownloadUrl: '/openmrs/ws/rest/v1/bahmniie/form/download/', - + privilegeLimit: 9999 }; From 6d67f99b01454f57fd4ffbdbb5261fab2cad3fd1 Mon Sep 17 00:00:00 2001 From: unknown Date: Thu, 13 Mar 2025 11:12:19 +0530 Subject: [PATCH 4/5] Fetching complete response for all forms as the openmrs API is paginated. Updating name for the limit constant --- .../components/FormBuilderContainer.jsx | 31 ++++++++++++++++--- .../components/FormPrivilegeTable.jsx | 6 ++-- src/form-builder/constants.js | 2 +- 3 files changed, 31 insertions(+), 8 deletions(-) diff --git a/src/form-builder/components/FormBuilderContainer.jsx b/src/form-builder/components/FormBuilderContainer.jsx index 0151073e..b36851b3 100644 --- a/src/form-builder/components/FormBuilderContainer.jsx +++ b/src/form-builder/components/FormBuilderContainer.jsx @@ -35,10 +35,13 @@ export class FormBuilderContainer extends Component { } getFormData() { - return httpInterceptor - .get(`${formBuilderConstants.formUrl}?v=custom:(id,uuid,name,version,published,auditInfo)`) - .then((data) => { - this.setState({ data: this.orderFormByVersion(data.results), loading: false }); + let initialForms = []; + let forms = []; + const queryParams = '?='; + const fetchFormsUrl = `${formBuilderConstants.formUrl}?v=custom:(id,uuid,name,version,published,auditInfo)`; + return httpInterceptor.get(fetchFormsUrl) + .then((initialForms) => { + this.collectAllForms(initialForms, forms); }) .catch((error) => { this.showErrors(error); @@ -46,6 +49,26 @@ export class FormBuilderContainer extends Component { }); } + collectAllForms(initialForms, forms) { + forms.push(...initialForms.results); + if (forms.length === formBuilderConstants.dataLimit) { + this.setState({ data: this.orderFormByVersion(forms), loading: false }); + return; + } + if (initialForms.links !== undefined && initialForms.links.length > 0 && initialForms.links.find(link => link.rel === "next") !== undefined) { + httpInterceptor.get(initialForms.links[0].uri) + .then((privileges) => { + return this.collectAllForms(privileges, forms) + }) + .catch((error) => { + this.showErrors(error); + this.setState({ loading: false }); + }); + } else { + this.setState({ data: this.orderFormByVersion(forms), loading: false }); + } + } + getDefaultLocale() { httpInterceptor .get(`${formBuilderConstants.defaultLocaleUrl}`, 'text') diff --git a/src/form-builder/components/FormPrivilegeTable.jsx b/src/form-builder/components/FormPrivilegeTable.jsx index 412460ed..b06ba0fe 100644 --- a/src/form-builder/components/FormPrivilegeTable.jsx +++ b/src/form-builder/components/FormPrivilegeTable.jsx @@ -94,12 +94,12 @@ export default class FormPrivilegeTable extends Component { collectAllPrivileges(initialPrivileges, allPrivileges) { allPrivileges.push(...initialPrivileges.results); - if (allPrivileges.length === formBuilderConstants.privilegeLimit) { + if (allPrivileges.length === formBuilderConstants.dataLimit) { this.setState({ availablePrivileges: this.arrangePrivileges(allPrivileges), loading: false }); return; } - if (initialPrivileges.links.length > 0 && initialPrivileges.links.find(link => link.rel === "next") !== undefined) { - httpInterceptor.get(initialPrivileges.links[0].uri.replace("http:", "https:")) + if (initialPrivileges.links !== undefined && initialPrivileges.links.length > 0 && initialPrivileges.links.find(link => link.rel === "next") !== undefined) { + httpInterceptor.get(initialPrivileges.links[0].uri) .then((privileges) => { return this.collectAllPrivileges(privileges, allPrivileges) }); diff --git a/src/form-builder/constants.js b/src/form-builder/constants.js index fe67a009..651467f0 100644 --- a/src/form-builder/constants.js +++ b/src/form-builder/constants.js @@ -28,5 +28,5 @@ export const formBuilderConstants = { getFormPrivilegesFromUuidUrl: '/openmrs/ws/rest/v1/bahmniie/form/getFormPrivilegesFromUuid', jsonToPdfConvertionUrl: '/openmrs/ws/rest/v1/bahmniie/form/jsonToPdf', pdfDownloadUrl: '/openmrs/ws/rest/v1/bahmniie/form/download/', - privilegeLimit: 9999 + dataLimit: 9999 }; From bf7a5061f00a66de5b20509404bfa12164ad7116 Mon Sep 17 00:00:00 2001 From: unknown Date: Thu, 20 Mar 2025 06:48:34 +0530 Subject: [PATCH 5/5] Fixing lint errors --- src/form-builder/components/FormBuilderContainer.jsx | 6 ++---- src/form-builder/components/FormPrivilegeTable.jsx | 6 ++---- src/form-builder/constants.js | 2 +- 3 files changed, 5 insertions(+), 9 deletions(-) diff --git a/src/form-builder/components/FormBuilderContainer.jsx b/src/form-builder/components/FormBuilderContainer.jsx index b36851b3..2fa65834 100644 --- a/src/form-builder/components/FormBuilderContainer.jsx +++ b/src/form-builder/components/FormBuilderContainer.jsx @@ -55,11 +55,9 @@ export class FormBuilderContainer extends Component { this.setState({ data: this.orderFormByVersion(forms), loading: false }); return; } - if (initialForms.links !== undefined && initialForms.links.length > 0 && initialForms.links.find(link => link.rel === "next") !== undefined) { + if (initialForms.links !== undefined && initialForms.links.length > 0 && initialForms.links.find(link => link.rel === 'next') !== undefined) { httpInterceptor.get(initialForms.links[0].uri) - .then((privileges) => { - return this.collectAllForms(privileges, forms) - }) + .then((privileges) => this.collectAllForms(privileges, forms)) .catch((error) => { this.showErrors(error); this.setState({ loading: false }); diff --git a/src/form-builder/components/FormPrivilegeTable.jsx b/src/form-builder/components/FormPrivilegeTable.jsx index b06ba0fe..0f45362b 100644 --- a/src/form-builder/components/FormPrivilegeTable.jsx +++ b/src/form-builder/components/FormPrivilegeTable.jsx @@ -98,11 +98,9 @@ export default class FormPrivilegeTable extends Component { this.setState({ availablePrivileges: this.arrangePrivileges(allPrivileges), loading: false }); return; } - if (initialPrivileges.links !== undefined && initialPrivileges.links.length > 0 && initialPrivileges.links.find(link => link.rel === "next") !== undefined) { + if (initialPrivileges.links !== undefined && initialPrivileges.links.length > 0 && initialPrivileges.links.find(link => link.rel === 'next') !== undefined) { httpInterceptor.get(initialPrivileges.links[0].uri) - .then((privileges) => { - return this.collectAllPrivileges(privileges, allPrivileges) - }); + .then((privileges) => this.collectAllPrivileges(privileges, allPrivileges)); } else { this.setState({ availablePrivileges: this.arrangePrivileges(allPrivileges), loading: false }); } diff --git a/src/form-builder/constants.js b/src/form-builder/constants.js index 651467f0..1a8d7ab2 100644 --- a/src/form-builder/constants.js +++ b/src/form-builder/constants.js @@ -28,5 +28,5 @@ export const formBuilderConstants = { getFormPrivilegesFromUuidUrl: '/openmrs/ws/rest/v1/bahmniie/form/getFormPrivilegesFromUuid', jsonToPdfConvertionUrl: '/openmrs/ws/rest/v1/bahmniie/form/jsonToPdf', pdfDownloadUrl: '/openmrs/ws/rest/v1/bahmniie/form/download/', - dataLimit: 9999 + dataLimit: 9999, };