From 5d966d443946bacbc780732204bc95639dfe6911 Mon Sep 17 00:00:00 2001 From: druchniewicz Date: Thu, 16 Jan 2025 14:06:19 +0100 Subject: [PATCH] O3-1494: Adjusted API calls to backend changes --- .../edit-scheduled-report-form.component.tsx | 26 ++-- .../src/components/overview.component.tsx | 8 +- .../components/report-statuses-constants.ts | 4 + .../src/components/reports.resource.tsx | 34 ++--- .../cancel-report-modal.component.tsx | 15 ++- .../run-report/run-report-form.component.tsx | 27 ++-- packages/esm-reports-app/translations/ar.json | 77 ----------- packages/esm-reports-app/translations/en.json | 126 ++++++++++-------- 8 files changed, 126 insertions(+), 191 deletions(-) delete mode 100644 packages/esm-reports-app/translations/ar.json diff --git a/packages/esm-reports-app/src/components/edit-scheduled-report/edit-scheduled-report-form.component.tsx b/packages/esm-reports-app/src/components/edit-scheduled-report/edit-scheduled-report-form.component.tsx index b5e9796..995555c 100644 --- a/packages/esm-reports-app/src/components/edit-scheduled-report/edit-scheduled-report-form.component.tsx +++ b/packages/esm-reports-app/src/components/edit-scheduled-report/edit-scheduled-report-form.component.tsx @@ -2,13 +2,7 @@ import React, { useCallback, useEffect, useState } from 'react'; import { first } from 'rxjs/operators'; import styles from './edit-scheduled-report-form.scss'; import SimpleCronEditor from '../simple-cron-editor/simple-cron-editor.component'; -import { - useReportDefinition, - useReportDesigns, - useReportRequest, - runReportObservable, - RunReportRequest, -} from '../reports.resource'; +import { useReportDefinition, useReportDesigns, useReportRequest, runReportObservable } from '../reports.resource'; import ReportParameterInput from '../report-parameter-input.component'; import { Button, ButtonSet, Form, Select, SelectItem, Stack } from '@carbon/react'; import { useTranslation } from 'react-i18next'; @@ -52,16 +46,22 @@ const EditScheduledReportForm: React.FC = ({ setIsSubmitting(true); - const runReportRequest: RunReportRequest = { - existingRequestUuid: reportRequestUuid, - reportDefinitionUuid, - renderModeUuid, - reportParameters, + const scheduleRequest = { + uuid: reportRequestUuid ? reportRequestUuid : null, + reportDefinition: { + parameterizable: { + uuid: reportDefinitionUuid, + }, + parameterMappings: reportParameters, + }, + renderingMode: { + argument: renderModeUuid, + }, schedule, }; const abortController = new AbortController(); - runReportObservable(runReportRequest, abortController) + runReportObservable(scheduleRequest, abortController) .pipe(first()) .subscribe( () => { diff --git a/packages/esm-reports-app/src/components/overview.component.tsx b/packages/esm-reports-app/src/components/overview.component.tsx index 86eae9c..b0a1a0f 100644 --- a/packages/esm-reports-app/src/components/overview.component.tsx +++ b/packages/esm-reports-app/src/components/overview.component.tsx @@ -31,7 +31,7 @@ import { closeOverlay, launchOverlay } from '../hooks/useOverlay'; import RunReportForm from './run-report/run-report-form.component'; import Overlay from './overlay.component'; import ReportStatus from './report-status.component'; -import { COMPLETED, SAVED } from './report-statuses-constants'; +import { COMPLETED, FAILED, PROCESSING, RAN_REPORT_STATUSES, REQUESTED, SAVED } from './report-statuses-constants'; import ReportOverviewButton from './report-overview-button.component'; import { PRIVILEGE_SYSTEM_DEVELOPER } from '../constants'; @@ -59,7 +59,11 @@ const OverviewComponent: React.FC = () => { const [currentPage, setCurrentPage] = useState(DEFAULT_PAGE_NUMBER); const [pageSize, setPageSize] = useState(DEFAULT_PAGE_SIZE); - const { reports, reportsTotalCount, mutateReports } = useReports('ran', currentPage, pageSize); + const { reports, reportsTotalCount, mutateReports } = useReports( + RAN_REPORT_STATUSES.join(','), + currentPage, + pageSize, + ); const layout = useLayoutType(); diff --git a/packages/esm-reports-app/src/components/report-statuses-constants.ts b/packages/esm-reports-app/src/components/report-statuses-constants.ts index 196caf1..3764265 100644 --- a/packages/esm-reports-app/src/components/report-statuses-constants.ts +++ b/packages/esm-reports-app/src/components/report-statuses-constants.ts @@ -5,3 +5,7 @@ export const FAILED = 'FAILED'; export const SCHEDULED = 'SCHEDULED'; export const SCHEDULE_COMPLETED = 'SCHEDULE_COMPLETED'; export const REQUESTED = 'REQUESTED'; + +export const RAN_REPORT_STATUSES = [REQUESTED, COMPLETED, SAVED, FAILED, PROCESSING]; +export const PROCESSING_REPORT_STATUSES = [REQUESTED, PROCESSING]; +export const SCHEDULED_REPORT_STATUSES = [SCHEDULED, SCHEDULE_COMPLETED]; diff --git a/packages/esm-reports-app/src/components/reports.resource.tsx b/packages/esm-reports-app/src/components/reports.resource.tsx index 1634130..f2b4ba7 100644 --- a/packages/esm-reports-app/src/components/reports.resource.tsx +++ b/packages/esm-reports-app/src/components/reports.resource.tsx @@ -26,14 +26,6 @@ interface ScheduledReportModel { schedule: string; } -export interface RunReportRequest { - existingRequestUuid?: string | undefined; - reportDefinitionUuid: string; - renderModeUuid: string; - reportParameters: any; - schedule?: string | undefined; -} - export function useLocations() { const apiUrl = `/ws/rest/v1/location?tag=Login+Location`; @@ -44,9 +36,9 @@ export function useLocations() { }; } -export function useReports(statusesGroup: string, pageNumber: number, pageSize: number, sortBy?: string): any { +export function useReports(statuses: string, pageNumber: number, pageSize: number, sortBy?: string): any { const reportsUrl = - `/ws/rest/v1/reportingrest/reportRequest?statusesGroup=${statusesGroup}&startIndex=${pageNumber}&limit=${pageSize}&totalCount=true` + + `/ws/rest/v1/reportingrest/reportRequest?status=${statuses}&startIndex=${pageNumber}&limit=${pageSize}&totalCount=true` + (sortBy ? `&sortBy=${sortBy}` : ''); const { data, error, isValidating, mutate } = useSWR<{ data: { results: Array; totalCount: number } }, Error>( @@ -81,7 +73,8 @@ export function useReportRequest(reportRequestUuid: string): any { } export function useScheduledReports(sortBy?: string): any { - const scheduledReportsUrl = `/ws/rest/v1/reportingrest/scheduledReport` + (sortBy ? `?sortBy=${sortBy}` : ''); + const scheduledReportsUrl = + `/ws/rest/v1/reportingrest/reportDefinitionsWithScheduledRequests` + (sortBy ? `?sortBy=${sortBy}` : ''); const { data, error, isValidating, mutate } = useSWR<{ data: { results: Array } }, Error>( scheduledReportsUrl, @@ -120,7 +113,7 @@ export function useReportDefinition(reportDefinitionUuid: string): ReportDefinit } export function useReportDesigns(reportDefinitionUuid: string) { - const apiUrl = `/ws/rest/v1/reportingrest/designs?reportDefinitionUuid=${reportDefinitionUuid}`; + const apiUrl = `/ws/rest/v1/reportingrest/reportDesign?reportDefinitionUuid=${reportDefinitionUuid}`; const { data, error, isValidating, mutate } = useSWR<{ data: { results: ReportDesign[] } }, Error>( reportDefinitionUuid ? apiUrl : null, @@ -142,11 +135,8 @@ function mapDesignResults(design: any): ReportDesign { }; } -export function runReportObservable( - payload: RunReportRequest, - abortController: AbortController, -): Observable> { - return openmrsObservableFetch(`/ws/rest/v1/reportingrest/runReport`, { +export function runReportObservable(payload: any, abortController: AbortController): Observable> { + return openmrsObservableFetch(`/ws/rest/v1/reportingrest/reportRequest`, { signal: abortController.signal, method: 'POST', headers: { @@ -157,7 +147,7 @@ export function runReportObservable( } export async function cancelReportRequest(reportRequestUuid: string) { - const apiUrl = `/ws/rest/v1/reportingrest/cancelReport?reportRequestUuid=${reportRequestUuid}`; + const apiUrl = `/ws/rest/v1/reportingrest/reportRequest/${reportRequestUuid}`; return openmrsFetch(apiUrl, { method: 'DELETE', @@ -165,7 +155,7 @@ export async function cancelReportRequest(reportRequestUuid: string) { } export async function preserveReport(reportRequestUuid: string) { - const apiUrl = `/ws/rest/v1/reportingrest/preserveReport?reportRequestUuid=${reportRequestUuid}`; + const apiUrl = `/ws/rest/v1/reportingrest/saveReport?reportRequestUuid=${reportRequestUuid}`; return openmrsFetch(apiUrl, { method: 'POST', @@ -208,9 +198,9 @@ function mapReportResults(data: any): ReportModel { function mapScheduledReportResults(data: any): ScheduledReportModel { return { reportDefinitionUuid: data.reportDefinition.uuid, - reportRequestUuid: data.reportScheduleRequest?.uuid, - name: data.reportDefinition.name, - schedule: data.reportScheduleRequest?.schedule, + reportRequestUuid: data.scheduledRequests?.[0]?.uuid, + name: data.reportDefinition.display, + schedule: data.scheduledRequests?.[0]?.schedule, }; } diff --git a/packages/esm-reports-app/src/components/run-report/cancel-report-modal.component.tsx b/packages/esm-reports-app/src/components/run-report/cancel-report-modal.component.tsx index f6e5554..d66d610 100644 --- a/packages/esm-reports-app/src/components/run-report/cancel-report-modal.component.tsx +++ b/packages/esm-reports-app/src/components/run-report/cancel-report-modal.component.tsx @@ -4,6 +4,11 @@ import { useTranslation } from 'react-i18next'; import { cancelReportRequest } from '../reports.resource'; import { showToast } from '@openmrs/esm-framework'; import { mutate } from 'swr'; +import { + PROCESSING_REPORT_STATUSES, + RAN_REPORT_STATUSES, + SCHEDULED_REPORT_STATUSES, +} from '../report-statuses-constants'; interface CancelReportModalProps { closeModal: () => void; @@ -39,14 +44,14 @@ const CancelReportModal: React.FC = ({ closeModal, repor }, [closeModal]); const callMutates = (modalType) => { - let baseUrl = '/ws/rest/v1/reportingrest/reportRequest?statusesGroup='; + let baseUrl = '/ws/rest/v1/reportingrest/reportRequest?status='; if (modalType === 'delete') { - mutate(baseUrl + 'ran'); + mutate(baseUrl + RAN_REPORT_STATUSES.join(',')); } else if (modalType === 'cancel') { - mutate(baseUrl + 'ran'); - mutate(baseUrl + 'processing'); + mutate(baseUrl + RAN_REPORT_STATUSES.join(',')); + mutate(baseUrl + PROCESSING_REPORT_STATUSES.join(',')); } else if (modalType === 'schedule') { - mutate(baseUrl + 'scheduled&sortBy=name'); + mutate(baseUrl + SCHEDULED_REPORT_STATUSES.join(',') + '&sortBy=name'); } }; diff --git a/packages/esm-reports-app/src/components/run-report/run-report-form.component.tsx b/packages/esm-reports-app/src/components/run-report/run-report-form.component.tsx index b16f43d..dcd5432 100644 --- a/packages/esm-reports-app/src/components/run-report/run-report-form.component.tsx +++ b/packages/esm-reports-app/src/components/run-report/run-report-form.component.tsx @@ -1,14 +1,7 @@ import React, { useCallback, useEffect, useState } from 'react'; import { useTranslation } from 'react-i18next'; import styles from './run-report-form.scss'; -import { - useLocations, - useReportDefinitions, - useReportDesigns, - runReportObservable, - RunReportRequest, -} from '../reports.resource'; -import { ReportDesign } from '../../types/report-design'; +import { useLocations, useReportDefinitions, useReportDesigns, runReportObservable } from '../reports.resource'; import { closeOverlay } from '../../hooks/useOverlay'; import { Button, ButtonSet, DatePicker, DatePickerInput, Form, Select, SelectItem, TextInput } from '@carbon/react'; import { showToast, useLayoutType } from '@openmrs/esm-framework'; @@ -138,14 +131,22 @@ const RunReportForm: React.FC = ({ closePanel }) => { setIsSubmitting(true); - const runReportRequest: RunReportRequest = { - reportDefinitionUuid: reportUuid, - renderModeUuid: renderModeUuid, - reportParameters: reportParameters, + const reportRequest = { + uuid: null, + reportDefinition: { + parameterizable: { + uuid: reportUuid, + }, + parameterMappings: reportParameters, + }, + renderingMode: { + argument: renderModeUuid, + }, + schedule: null, }; const abortController = new AbortController(); - runReportObservable(runReportRequest, abortController) + runReportObservable(reportRequest, abortController) .pipe(first()) .subscribe( () => { diff --git a/packages/esm-reports-app/translations/ar.json b/packages/esm-reports-app/translations/ar.json deleted file mode 100644 index 2920e03..0000000 --- a/packages/esm-reports-app/translations/ar.json +++ /dev/null @@ -1,77 +0,0 @@ -{ - "actions": "Actions", - "at": "at", - "cancel": "Cancel", - "canceling": "Canceling", - "cancelReport": "Cancel report", - "cancelReportModalText": "Are you sure you want to cancel this report?", - "completed": "Completed", - "completedAndPreserved": "Completed and Preserved", - "connect": "Connect", - "connectExplainer": "Get in touch with the community", - "delete": "Delete", - "deleteReport": "Delete report", - "deleteReportModalText": "Are you sure you want to delete this report?", - "deleteReportScheduleModalText": "Are you sure you want to delete this schedule?", - "deleteSchedule": "Delete Schedule", - "deleting": "Deleting", - "designDocs": "Design docs", - "designDocsExplainer": "Read the O3 design documentation", - "download": "Download", - "downloadReport": "Download report(s)s", - "downloadReports": "Download reports", - "edit": "Edit", - "editScheduledReport": "Edit Scheduled Report", - "failed": "Failed", - "frontendDocs": "Frontend docs", - "getStarted": "Get started", - "getStartedExplainer": "Create a frontend module from this template", - "learnExplainer": "Learn how to use the O3 framework", - "nextPage": "Next page", - "nextRun": "Next run", - "no": "No", - "notScheduled": "Not Scheduled", - "on": "on", - "outputFormat": "Output format", - "parameters": "Parameters", - "preserve": "Preserve", - "preserveReport": "Preserve report", - "previousPage": "Previous page", - "queued": "Queued", - "reportCancelingErrorMsg": "Error during report canceling", - "reportCancelledSuccessfully": "Report cancelled successfully", - "reportDeletedSuccessfully": "Report deleted successfully", - "reportDeletingErrorMsg": "Error during report deleting", - "reportDownloadedSuccessfully": "Report(s) downloaded successfully", - "reportDownloadingErrorMsg": "Error during report(s) downloading", - "reportName": "Report Name", - "reportPreservedSuccessfully": "Report preserved successfully", - "reportPreservingErrorMsg": "Error during report preserving", - "reportRanSuccessfullyMsg": "Report ran successfully", - "reportRunning": "Report running", - "reportRunningErrorMsg": "Error while running the report", - "reports": "Reports", - "reportSchedule": "Report schedule", - "reportScheduled": "Report scheduled", - "reportScheduleDeletedSuccessfully": "Report schedule deleted successfully", - "reportScheduleDeletingErrorMsg": "Error during report schedule deleting", - "reportScheduledErrorMsg": "Failed to schedule a report", - "reportScheduledSuccessfullyMsg": "Report scheduled successfully", - "requestedBy": "Requested by", - "requestedOn": "Requested on", - "resources": "Resources", - "run": "Run", - "running": "Running", - "runReport": "Run Report", - "runReports": "Run reports", - "save": "Save", - "schedule": "Schedule", - "scheduleCompleted": "Schedule completed", - "scheduled": "Scheduled", - "scheduledReports": "Scheduld Reports", - "scheduleReport": "Schedule report", - "selectReportLabel": "Report", - "status": "Status", - "usefulLinks": "Below are some links to useful resources", - "yes": "Yes" -} diff --git a/packages/esm-reports-app/translations/en.json b/packages/esm-reports-app/translations/en.json index 4f2fc2f..fe9ba5f 100644 --- a/packages/esm-reports-app/translations/en.json +++ b/packages/esm-reports-app/translations/en.json @@ -1,77 +1,85 @@ { + "reports": "Reports", + "reportName": "Report Name", + "status": "Status", + "requestedBy": "Requested by", + "requestedOn": "Requested on", + "outputFormat": "Output format", + "parameters": "Parameters", "actions": "Actions", - "at": "at", + "runReports": "Run reports", + "runReport": "Run report", + "reportSchedule": "Report schedule", + "downloadReports": "Download reports", + "download": "Download", + "preserve": "Preserve", + "delete": "Delete", + "run": "Run", + "save": "Save", "cancel": "Cancel", + "selectReport": "Select report", + "date": "Date", + "cancelReportModalText": "Are you sure you want to cancel this report?", "canceling": "Canceling", "cancelReport": "Cancel report", - "cancelReportModalText": "Are you sure you want to cancel this report?", + "reportCancelledSuccessfully": "Report cancelled successfully", + "reportCancelingErrorMsg": "Error during report canceling", + "reportRunning": "Report running", + "reportRanSuccessfullyMsg": "Report ran successfully", + "reportRunningErrorMsg": "Error while running the report", + "yes": "Yes", + "no": "No", + "previousPage": "Previous page", + "nextPage": "Next page", + "running": "Running", "completed": "Completed", + "scheduleCompleted": "Schedule Completed", "completedAndPreserved": "Completed and Preserved", - "connect": "Connect", - "connectExplainer": "Get in touch with the community", - "delete": "Delete", + "failed": "Failed", + "preserveReport": "Preserve report", + "reportPreservedSuccessfully": "Report preserved successfully", + "reportPreservingErrorMsg": "Error during report preserving", "deleteReport": "Delete report", + "reportDeletedSuccessfully": "Report deleted successfully", + "reportDeletingErrorMsg": "Error during report deleting", "deleteReportModalText": "Are you sure you want to delete this report?", - "deleteReportScheduleModalText": "Are you sure you want to delete this schedule?", - "deleteSchedule": "Delete Schedule", "deleting": "Deleting", - "designDocs": "Design docs", - "designDocsExplainer": "Read the O3 design documentation", - "download": "Download", - "downloadReport": "Download report(s)", - "downloadReports": "Download reports", + "scheduled": "Scheduled", + "scheduledReports": "Scheduled Reports", + "deleteSchedule": "Delete Schedule", "edit": "Edit", - "editScheduledReport": "Edit Scheduled Report", - "failed": "Failed", - "frontendDocs": "Frontend docs", - "getStarted": "Get started", - "getStartedExplainer": "Create a frontend module from this template", - "learnExplainer": "Learn how to use the O3 framework", - "nextPage": "Next page", + "schedule": "Schedule", "nextRun": "Next run", - "no": "No", - "notScheduled": "Not Scheduled", - "on": "on", - "outputFormat": "Output format", - "parameters": "Parameters", - "preserve": "Preserve", - "preserveReport": "Preserve report", - "previousPage": "Previous page", - "queued": "Queued", - "reportCancelingErrorMsg": "Error during report canceling", - "reportCancelledSuccessfully": "Report cancelled successfully", - "reportDeletedSuccessfully": "Report deleted successfully", - "reportDeletingErrorMsg": "Error during report deleting", + "downloadReport": "Download report(s)", "reportDownloadedSuccessfully": "Report(s) downloaded successfully", "reportDownloadingErrorMsg": "Error during report(s) downloading", - "reportName": "Report Name", - "reportPreservedSuccessfully": "Report preserved successfully", - "reportPreservingErrorMsg": "Error during report preserving", - "reportRanSuccessfullyMsg": "Report ran successfully", - "reportRunning": "Report running", - "reportRunningErrorMsg": "Error while running the report", - "reports": "Reports", - "reportSchedule": "Report schedule", - "reportScheduled": "Report scheduled", + "scheduleReport": "Schedule report", + "deleteReportScheduleModalText": "Are you sure you want to delete this schedule?", "reportScheduleDeletedSuccessfully": "Report schedule deleted successfully", "reportScheduleDeletingErrorMsg": "Error during report schedule deleting", - "reportScheduledErrorMsg": "Failed to schedule a report", + "notScheduled": "Not Scheduled", + "scheduleType_once": "Once", + "scheduleType_everyDay": "Every day", + "scheduleType_everyWeek": "Every week", + "scheduleType_everyMonth": "Every month", + "scheduleType_advanced": "Advanced", + "dateRequired": "Required", + "notATimeText": "hh:mm 24-hr pattern required", + "dayOfWeekRequired": "Required", + "dayOfMonthRequired": "Required", + "reportScheduled": "Report scheduled", "reportScheduledSuccessfullyMsg": "Report scheduled successfully", - "requestedBy": "Requested by", - "requestedOn": "Requested on", - "resources": "Resources", - "run": "Run", - "running": "Running", - "runReport": "Run Report", - "runReports": "Run reports", - "save": "Save", - "schedule": "Schedule", - "scheduleCompleted": "Schedule Completed", - "scheduled": "Scheduled", - "scheduledReports": "Scheduled Reports", - "scheduleReport": "Schedule report", - "selectReportLabel": "Report", - "status": "Status", - "usefulLinks": "Below are some links to useful resources", - "yes": "Yes" + "reportScheduledErrorMsg": "Failed to schedule a report", + "dayOfMonth_firstDay": "First day", + "dayOfMonth_lastDay": "Last day", + "dayOfWeek_sunday": "Sunday", + "dayOfWeek_monday": "Monday", + "dayOfWeek_tuesday": "Tuesday", + "dayOfWeek_wednesday": "Wednesday", + "dayOfWeek_thursday": "Thursday", + "dayOfWeek_friday": "Friday", + "dayOfWeek_saturday": "Saturday", + "on": "on", + "at": "at", + "queued": "Queued" }