diff --git a/src/form-builder/components/FormBuilderContainer.jsx b/src/form-builder/components/FormBuilderContainer.jsx index 0151073..2fa6583 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,24 @@ 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) => 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 94b1a5b..0f45362 100644 --- a/src/form-builder/components/FormPrivilegeTable.jsx +++ b/src/form-builder/components/FormPrivilegeTable.jsx @@ -80,15 +80,32 @@ 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 }); - }); + .then((initialPrivileges) => { + this.collectAllPrivileges(initialPrivileges, privileges); + }); } + + collectAllPrivileges(initialPrivileges, allPrivileges) { + allPrivileges.push(...initialPrivileges.results); + if (allPrivileges.length === formBuilderConstants.dataLimit) { + 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) { + httpInterceptor.get(initialPrivileges.links[0].uri) + .then((privileges) => this.collectAllPrivileges(privileges, allPrivileges)); + } else { + this.setState({ availablePrivileges: this.arrangePrivileges(allPrivileges), loading: false }); + } + } + fetchFormPrivilegesFromDB() { let initialPrivilegesFromDB = []; const queryParams = '?='; diff --git a/src/form-builder/constants.js b/src/form-builder/constants.js index e7570e5..1a8d7ab 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, };