@openmrs/esm-reports-app 4.1.0 → 4.1.1-pre.204

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (75) hide show
  1. package/.turbo/turbo-build.log +22 -25
  2. package/dist/11.js +2 -0
  3. package/dist/{202.js.LICENSE.txt → 11.js.LICENSE.txt} +19 -0
  4. package/dist/11.js.map +1 -0
  5. package/dist/126.js +1 -1
  6. package/dist/126.js.map +1 -1
  7. package/dist/216.js +1 -1
  8. package/dist/216.js.map +1 -1
  9. package/dist/300.js +1 -1
  10. package/dist/304.js +1 -0
  11. package/dist/304.js.map +1 -0
  12. package/dist/312.js +1 -0
  13. package/dist/312.js.map +1 -0
  14. package/dist/322.js +1 -1
  15. package/dist/322.js.map +1 -1
  16. package/dist/367.js +1 -1
  17. package/dist/367.js.LICENSE.txt +2 -0
  18. package/dist/367.js.map +1 -1
  19. package/dist/443.js +1 -0
  20. package/dist/443.js.map +1 -0
  21. package/dist/{353.js → 464.js} +1 -1
  22. package/dist/{353.js.map → 464.js.map} +1 -1
  23. package/dist/562.js +1 -0
  24. package/dist/562.js.map +1 -0
  25. package/dist/592.js +2 -0
  26. package/dist/592.js.map +1 -0
  27. package/dist/640.js +1 -1
  28. package/dist/640.js.map +1 -1
  29. package/dist/855.js +1 -1
  30. package/dist/855.js.LICENSE.txt +2 -2
  31. package/dist/855.js.map +1 -1
  32. package/dist/899.js +1 -0
  33. package/dist/899.js.map +1 -0
  34. package/dist/{297.js → 913.js} +2 -2
  35. package/dist/{297.js.map → 913.js.map} +1 -1
  36. package/dist/920.js +1 -0
  37. package/dist/920.js.map +1 -0
  38. package/dist/947.js +1 -1
  39. package/dist/947.js.map +1 -1
  40. package/dist/972.js +1 -1
  41. package/dist/972.js.map +1 -1
  42. package/dist/main.js +1 -1
  43. package/dist/main.js.map +1 -1
  44. package/dist/openmrs-esm-reports-app.js +1 -1
  45. package/dist/openmrs-esm-reports-app.js.buildmanifest.json +225 -151
  46. package/dist/openmrs-esm-reports-app.js.map +1 -1
  47. package/dist/routes.json +1 -1
  48. package/package.json +4 -2
  49. package/src/components/overlay.scss +1 -2
  50. package/src/components/overview.component.tsx +14 -5
  51. package/src/components/report-data-viewer.component.tsx +232 -0
  52. package/src/components/reports-data-overview.component.tsx +144 -0
  53. package/src/components/reports.resource.tsx +55 -1
  54. package/src/components/reports.scss +95 -12
  55. package/src/constants.ts +1 -1
  56. package/src/declarations.d.ts +15 -2
  57. package/src/index.ts +19 -12
  58. package/src/reports-link.tsx +2 -2
  59. package/src/reports.component.tsx +7 -4
  60. package/src/routes.json +4 -0
  61. package/translations/en.json +13 -0
  62. package/dist/156.js +0 -1
  63. package/dist/156.js.map +0 -1
  64. package/dist/202.js +0 -2
  65. package/dist/202.js.map +0 -1
  66. package/dist/549.js +0 -1
  67. package/dist/549.js.map +0 -1
  68. package/dist/553.js +0 -2
  69. package/dist/553.js.map +0 -1
  70. package/dist/699.js +0 -1
  71. package/dist/699.js.map +0 -1
  72. package/dist/926.js +0 -1
  73. package/dist/926.js.map +0 -1
  74. /package/dist/{553.js.LICENSE.txt → 592.js.LICENSE.txt} +0 -0
  75. /package/dist/{297.js.LICENSE.txt → 913.js.LICENSE.txt} +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"openmrs-esm-reports-app.js","mappings":"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","sources":["webpack://@openmrs/esm-reports-app/webpack/runtime/create fake namespace object","webpack://@openmrs/esm-reports-app/webpack/runtime/load script","webpack://@openmrs/esm-reports-app/webpack/runtime/consumes","webpack://@openmrs/esm-reports-app/webpack/container-entry","webpack://@openmrs/esm-reports-app/webpack/bootstrap","webpack://@openmrs/esm-reports-app/webpack/runtime/compat get default export","webpack://@openmrs/esm-reports-app/webpack/runtime/define property getters","webpack://@openmrs/esm-reports-app/webpack/runtime/ensure chunk","webpack://@openmrs/esm-reports-app/webpack/runtime/get javascript chunk filename","webpack://@openmrs/esm-reports-app/webpack/runtime/global","webpack://@openmrs/esm-reports-app/webpack/runtime/hasOwnProperty shorthand","webpack://@openmrs/esm-reports-app/webpack/runtime/make namespace object","webpack://@openmrs/esm-reports-app/webpack/runtime/node module decorator","webpack://@openmrs/esm-reports-app/webpack/runtime/sharing","webpack://@openmrs/esm-reports-app/webpack/runtime/publicPath","webpack://@openmrs/esm-reports-app/webpack/runtime/jsonp chunk loading","webpack://@openmrs/esm-reports-app/webpack/runtime/nonce","webpack://@openmrs/esm-reports-app/webpack/startup"],"names":["leafPrototypes","getProto","inProgress","dataWebpackPrefix","parseVersion","versionLt","rangeToString","satisfy","findSingletonVersionKey","getInvalidSingletonVersionMessage","getSingletonVersion","warn","get","loadSingletonVersionCheckFallback","installedModules","moduleToHandlerMapping","chunkMapping","moduleMap","__webpack_require__","e","then","module","getScope","R","o","Promise","resolve","Error","undefined","init","shareScope","initScope","S","name","oldScope","I","d","exports","__webpack_module_cache__","moduleId","cachedModule","id","loaded","__webpack_modules__","call","m","c","n","getter","__esModule","a","Object","getPrototypeOf","obj","t","value","mode","this","ns","create","r","def","current","indexOf","getOwnPropertyNames","forEach","key","definition","defineProperty","enumerable","f","chunkId","all","keys","reduce","promises","u","g","globalThis","Function","window","prop","prototype","hasOwnProperty","l","url","done","push","script","needAttach","scripts","document","getElementsByTagName","i","length","s","getAttribute","createElement","charset","timeout","nc","setAttribute","src","onScriptComplete","prev","event","onerror","onload","clearTimeout","doneFns","parentNode","removeChild","fn","setTimeout","bind","type","target","head","appendChild","Symbol","toStringTag","nmd","paths","children","initPromises","initTokens","initToken","scope","uniqueName","register","version","factory","eager","versions","activeVersion","from","scriptUrl","importScripts","location","currentScript","test","replace","p","str","split","map","exec","apply","b","range","pop","requiredVersion","scopeName","msg","console","entry","promise","fallback","consumes","onFactory","onError","error","installedChunks","j","installedChunkData","reject","errorType","realSrc","message","request","webpackJsonpCallback","parentChunkLoadingFunction","data","chunkIds","moreModules","runtime","some","chunkLoadingGlobal","__webpack_exports__"],"sourceRoot":""}
1
+ {"version":3,"file":"openmrs-esm-reports-app.js","mappings":"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","sources":["webpack://@openmrs/esm-reports-app/webpack/runtime/create fake namespace object","webpack://@openmrs/esm-reports-app/webpack/runtime/load script","webpack://@openmrs/esm-reports-app/webpack/runtime/consumes","webpack://@openmrs/esm-reports-app/webpack/container-entry","webpack://@openmrs/esm-reports-app/webpack/bootstrap","webpack://@openmrs/esm-reports-app/webpack/runtime/compat get default export","webpack://@openmrs/esm-reports-app/webpack/runtime/define property getters","webpack://@openmrs/esm-reports-app/webpack/runtime/ensure chunk","webpack://@openmrs/esm-reports-app/webpack/runtime/get javascript chunk filename","webpack://@openmrs/esm-reports-app/webpack/runtime/global","webpack://@openmrs/esm-reports-app/webpack/runtime/hasOwnProperty shorthand","webpack://@openmrs/esm-reports-app/webpack/runtime/make namespace object","webpack://@openmrs/esm-reports-app/webpack/runtime/node module decorator","webpack://@openmrs/esm-reports-app/webpack/runtime/sharing","webpack://@openmrs/esm-reports-app/webpack/runtime/publicPath","webpack://@openmrs/esm-reports-app/webpack/runtime/jsonp chunk loading","webpack://@openmrs/esm-reports-app/webpack/runtime/nonce","webpack://@openmrs/esm-reports-app/webpack/startup"],"names":["leafPrototypes","getProto","inProgress","dataWebpackPrefix","parseVersion","versionLt","rangeToString","satisfy","findSingletonVersionKey","getInvalidSingletonVersionMessage","getSingletonVersion","warn","get","loadSingletonVersionCheckFallback","installedModules","moduleToHandlerMapping","chunkMapping","startedInstallModules","moduleMap","__webpack_require__","e","then","module","getScope","R","o","Promise","resolve","Error","undefined","init","shareScope","initScope","S","name","oldScope","I","d","exports","__webpack_module_cache__","moduleId","cachedModule","id","loaded","__webpack_modules__","call","m","c","n","getter","__esModule","a","Object","getPrototypeOf","obj","t","value","mode","this","ns","create","r","def","current","indexOf","getOwnPropertyNames","forEach","key","definition","defineProperty","enumerable","f","chunkId","all","keys","reduce","promises","u","g","globalThis","Function","window","prop","prototype","hasOwnProperty","l","url","done","push","script","needAttach","scripts","document","getElementsByTagName","i","length","s","getAttribute","createElement","charset","timeout","nc","setAttribute","src","onScriptComplete","prev","event","onerror","onload","clearTimeout","doneFns","parentNode","removeChild","fn","setTimeout","bind","type","target","head","appendChild","Symbol","toStringTag","nmd","paths","children","initPromises","initTokens","initToken","scope","uniqueName","register","version","factory","eager","versions","activeVersion","from","scriptUrl","importScripts","location","currentScript","test","replace","p","str","split","map","exec","apply","b","range","pop","requiredVersion","scopeName","msg","console","entry","promise","fallback","consumes","onFactory","onError","error","installedChunks","j","installedChunkData","reject","errorType","realSrc","message","request","webpackJsonpCallback","parentChunkLoadingFunction","data","chunkIds","moreModules","runtime","some","chunkLoadingGlobal","__webpack_exports__"],"sourceRoot":""}
package/dist/routes.json CHANGED
@@ -1 +1 @@
1
- {"$schema":"https://json.openmrs.org/routes.schema.json","backendDependencies":{"fhir2":">=1.2","webservices.rest":"^2.24.0","reportingrest":">=1.15.0","reporting":">=1.27.0"},"extensions":[{"name":"admin-report-link","slot":"system-admin-page-card-link-slot","component":"reportsLink"},{"name":"run-report","component":"runReport"}],"pages":[{"component":"root","route":"reports"},{"component":"overview","route":"overview"},{"component":"scheduled-overview","route":"scheduled-overview"}],"modals":[{"name":"cancel-report-modal","component":"cancelReportModal"}],"version":"4.1.0"}
1
+ {"$schema":"https://json.openmrs.org/routes.schema.json","backendDependencies":{"fhir2":">=1.2","webservices.rest":"^2.24.0","reportingrest":">=1.15.0","reporting":">=1.27.0"},"extensions":[{"name":"admin-report-link","slot":"system-admin-page-card-link-slot","component":"reportsLink"},{"name":"run-report","component":"runReport"}],"pages":[{"component":"root","route":"reports"},{"component":"overview","route":"overview"},{"component":"scheduled-overview","route":"scheduled-overview"},{"component":"reports-data-overview","route":"reports-data-overview"}],"modals":[{"name":"cancel-report-modal","component":"cancelReportModal"}],"version":"4.1.1-pre.204"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@openmrs/esm-reports-app",
3
- "version": "4.1.0",
3
+ "version": "4.1.1-pre.204",
4
4
  "license": "MPL-2.0",
5
5
  "description": "Reports admin dashboard for 03",
6
6
  "browser": "dist/openmrs-esm-reports-app.js",
@@ -48,9 +48,11 @@
48
48
  "peerDependencies": {
49
49
  "@openmrs/esm-framework": "*",
50
50
  "dayjs": "1.x",
51
+ "i18next": "*",
51
52
  "react": "18.x",
52
53
  "react-i18next": "11.x",
53
54
  "react-router-dom": "6.x",
54
55
  "rxjs": "6.x"
55
- }
56
+ },
57
+ "stableVersion": "4.1.0"
56
58
  }
@@ -1,7 +1,6 @@
1
1
  @use '@carbon/layout';
2
2
  @use '@carbon/type';
3
3
  @use '@openmrs/esm-styleguide/src/vars' as *;
4
- @import './../root.scss';
5
4
 
6
5
  .desktopOverlay {
7
6
  position: fixed;
@@ -92,4 +91,4 @@
92
91
  padding: 0 0 0 0;
93
92
  overflow-y: auto;
94
93
  }
95
- }
94
+ }
@@ -1,4 +1,4 @@
1
- import React, { useCallback, useEffect, useState } from 'react';
1
+ import React, { type ChangeEvent, useCallback, useEffect, useState } from 'react';
2
2
  import classNames from 'classnames';
3
3
  import { useTranslation } from 'react-i18next';
4
4
  import {
@@ -96,7 +96,7 @@ const OverviewComponent: React.FC = () => {
96
96
  <td className={classNames({ [styles.rowCellEven]: index % 2 === 0, [styles.rowCellOdd]: index % 2 !== 0 })}>
97
97
  <Checkbox
98
98
  id={`checkbox-${row.id}`}
99
- onChange={(e) => handleOnCheckboxClick(e)}
99
+ onChange={(e: ChangeEvent<HTMLInputElement>) => handleOnCheckboxClick(e)}
100
100
  checked={checkedReportUuidsArray.includes(row.id)}
101
101
  />
102
102
  </td>
@@ -231,7 +231,7 @@ const OverviewComponent: React.FC = () => {
231
231
  <div className={styles.mainActionButtonsDiv}>
232
232
  <Button
233
233
  kind="ghost"
234
- renderIcon={() => <Download size={16} style={{ fill: '#0F62FE' }} className={styles.actionButtonIcon} />}
234
+ renderIcon={() => <Download size={16} className={styles.actionButtonIcon} />}
235
235
  iconDescription="Download reports"
236
236
  onClick={() => handleDownloadMultipleReports(checkedReportUuidsArray.join(','))}
237
237
  className={classNames(styles.mainActionButton, {
@@ -243,7 +243,7 @@ const OverviewComponent: React.FC = () => {
243
243
  </Button>
244
244
  <Button
245
245
  kind="ghost"
246
- renderIcon={() => <Play size={16} style={{ fill: '#0F62FE' }} className={styles.actionButtonIcon} />}
246
+ renderIcon={() => <Play size={16} className={styles.actionButtonIcon} />}
247
247
  iconDescription="Run reports"
248
248
  onClick={() => {
249
249
  launchOverlay(
@@ -266,10 +266,19 @@ const OverviewComponent: React.FC = () => {
266
266
  iconDescription="Report schedule"
267
267
  kind="ghost"
268
268
  onClick={() => navigate({ to: `\${openmrsSpaBase}/reports/scheduled-overview` })}
269
- renderIcon={() => <Calendar size={16} style={{ fill: '#0F62FE' }} className={styles.actionButtonIcon} />}
269
+ renderIcon={() => <Calendar size={16} className={styles.actionButtonIcon} />}
270
270
  >
271
271
  {t('reportSchedule', 'Report schedule')}
272
272
  </Button>
273
+ <Button
274
+ className={styles.mainActionButton}
275
+ iconDescription="Report schedule"
276
+ kind="ghost"
277
+ onClick={() => navigate({ to: `\${openmrsSpaBase}/reports/reports-data-overview` })}
278
+ renderIcon={() => <Calendar size={16} className={styles.actionButtonIcon} />}
279
+ >
280
+ {t('viewReports', 'View Reports')}
281
+ </Button>
273
282
  </div>
274
283
  </div>
275
284
  <DataTable rows={reports} headers={tableHeaders} isSortable>
@@ -0,0 +1,232 @@
1
+ import React, { useState, useMemo } from 'react';
2
+ import { useTranslation } from 'react-i18next';
3
+ import {
4
+ DataTable,
5
+ Table,
6
+ TableBody,
7
+ TableCell,
8
+ TableContainer,
9
+ TableHead,
10
+ TableHeader,
11
+ TableRow,
12
+ Pagination,
13
+ Button,
14
+ Modal,
15
+ Checkbox,
16
+ FormGroup,
17
+ } from '@carbon/react';
18
+ import { Download } from '@carbon/react/icons';
19
+ import { isDesktop, useLayoutType, formatDatetime, getCoreTranslation } from '@openmrs/esm-framework';
20
+ import styles from './reports.scss';
21
+
22
+ interface ReportDataViewerProps {
23
+ reportData: any;
24
+ }
25
+
26
+ const DEFAULT_PAGE_SIZE = 10;
27
+ const DEFAULT_PAGE_SIZES = [10, 20, 30, 40, 50];
28
+
29
+ const ReportDataViewer: React.FC<ReportDataViewerProps> = ({ reportData }) => {
30
+ const { t } = useTranslation();
31
+ const layout = useLayoutType();
32
+ const [pageSize, setPageSize] = useState(DEFAULT_PAGE_SIZE);
33
+ const [currentPage, setCurrentPage] = useState(1);
34
+ const [showExportModal, setShowExportModal] = useState(false);
35
+ const [selectedColumns, setSelectedColumns] = useState<Record<string, boolean>>({});
36
+
37
+ // Get the first dataset since we're only handling one dataset for now
38
+ const dataset = useMemo(() => reportData?.dataSets?.[0], [reportData?.dataSets]);
39
+ const columns = useMemo(() => dataset?.metadata?.columns || [], [dataset?.metadata?.columns]);
40
+ const rows = useMemo(() => dataset?.rows || [], [dataset?.rows]);
41
+
42
+ // Initialize selected columns when columns change
43
+ React.useEffect(() => {
44
+ const initialSelection = columns.reduce((acc, col) => {
45
+ acc[col.name] = true; // Select all columns by default
46
+ return acc;
47
+ }, {});
48
+ setSelectedColumns(initialSelection);
49
+ }, [columns]);
50
+
51
+ const handleColumnToggle = (columnName: string) => {
52
+ setSelectedColumns((prev) => ({
53
+ ...prev,
54
+ [columnName]: !prev[columnName],
55
+ }));
56
+ };
57
+
58
+ const formatCellValue = (value: any) => {
59
+ if (Array.isArray(value)) {
60
+ // Handle date arrays [year, month, day, hour, minute, second]
61
+ if (value.length >= 3 && value.length <= 6) {
62
+ const [year, month, day, hour = 0, minute = 0, second = 0] = value;
63
+ const date = new Date(year, month - 1, day, hour, minute, second);
64
+ return formatDatetime(date);
65
+ }
66
+ return value.join(', ');
67
+ }
68
+ if (value instanceof Date) {
69
+ return formatDatetime(value);
70
+ }
71
+ return value?.toString() ?? '';
72
+ };
73
+
74
+ const exportToCSV = () => {
75
+ // Filter selected columns
76
+ const selectedColumnNames = Object.entries(selectedColumns)
77
+ .filter(([_, selected]) => selected)
78
+ .map(([name]) => name);
79
+
80
+ const selectedColumnsData = columns.filter((col) => selectedColumnNames.includes(col.name));
81
+
82
+ // Create CSV header
83
+ const header = selectedColumnsData.map((col) => col.label).join(',');
84
+
85
+ // Create CSV rows
86
+ const csvRows = rows.map((row) => {
87
+ return selectedColumnsData
88
+ .map((col) => {
89
+ const value = row[col.name];
90
+ // Handle array values and escape commas
91
+ if (Array.isArray(value)) {
92
+ // Handle date arrays
93
+ if (value.length >= 3 && value.length <= 6) {
94
+ const [year, month, day, hour = 0, minute = 0, second = 0] = value;
95
+ const date = new Date(year, month - 1, day, hour, minute, second);
96
+ return `"${formatDatetime(date)}"`;
97
+ }
98
+ return `"${value.join(' ')}"`;
99
+ }
100
+ // Handle strings with commas
101
+ if (typeof value === 'string' && value.includes(',')) {
102
+ return `"${value}"`;
103
+ }
104
+ return value;
105
+ })
106
+ .join(',');
107
+ });
108
+
109
+ // Combine header and rows
110
+ const csvContent = [header, ...csvRows].join('\n');
111
+
112
+ // Create and trigger download
113
+ const blob = new Blob([csvContent], { type: 'text/csv;charset=utf-8;' });
114
+ const link = document.createElement('a');
115
+ const url = URL.createObjectURL(blob);
116
+ link.setAttribute('href', url);
117
+ link.setAttribute('download', `${reportData?.definition?.name || 'report'}.csv`);
118
+ document.body.appendChild(link);
119
+ link.click();
120
+ document.body.removeChild(link);
121
+ setShowExportModal(false);
122
+ };
123
+
124
+ // Calculate pagination
125
+ const totalItems = rows.length;
126
+ const startIndex = (currentPage - 1) * pageSize;
127
+ const endIndex = startIndex + pageSize;
128
+ const paginatedRows = rows.slice(startIndex, endIndex);
129
+
130
+ // Transform the data into a format that Carbon's DataTable can understand
131
+ const tableRows = paginatedRows.map((row, index) => ({
132
+ id: index.toString(),
133
+ ...row,
134
+ }));
135
+
136
+ const tableHeaders = columns.map((column) => ({
137
+ key: column.name,
138
+ header: column.label,
139
+ }));
140
+
141
+ return (
142
+ <div className={styles.reportDataViewer}>
143
+ <div className={styles.reportDataViewerHeader}>
144
+ <h3>{reportData?.definition?.name || t('reportData', 'Report Data')}</h3>
145
+ <Button
146
+ kind="ghost"
147
+ size="sm"
148
+ renderIcon={Download}
149
+ iconDescription={t('exportCSV', 'Export CSV')}
150
+ onClick={() => setShowExportModal(true)}
151
+ >
152
+ {t('exportCSV', 'Export CSV')}
153
+ </Button>
154
+ </div>
155
+ <div className={styles.reportDataViewerContent}>
156
+ <DataTable rows={tableRows} headers={tableHeaders} isSortable>
157
+ {({ rows, headers }) => (
158
+ <TableContainer>
159
+ <Table>
160
+ <TableHead>
161
+ <TableRow>
162
+ {headers.map((header) => (
163
+ <TableHeader key={header.key}>{header.header}</TableHeader>
164
+ ))}
165
+ </TableRow>
166
+ </TableHead>
167
+ <TableBody>
168
+ {rows.length > 0 ? (
169
+ rows.map((row) => (
170
+ <TableRow key={row.id}>
171
+ {row.cells.map((cell) => (
172
+ <TableCell key={cell.id}>{formatCellValue(cell.value)}</TableCell>
173
+ ))}
174
+ </TableRow>
175
+ ))
176
+ ) : (
177
+ <TableRow>
178
+ <TableCell colSpan={headers.length} className={styles.emptyTableMessage}>
179
+ {t('noDataAvailable', 'No data available')}
180
+ </TableCell>
181
+ </TableRow>
182
+ )}
183
+ </TableBody>
184
+ </Table>
185
+ </TableContainer>
186
+ )}
187
+ </DataTable>
188
+ <Pagination
189
+ backwardText={t('previousPage', 'Previous page')}
190
+ forwardText={t('nextPage', 'Next page')}
191
+ page={currentPage}
192
+ pageSize={pageSize}
193
+ pageSizes={DEFAULT_PAGE_SIZES}
194
+ totalItems={totalItems}
195
+ size={isDesktop(layout) ? 'sm' : 'lg'}
196
+ onChange={({ pageSize: newPageSize, page: newPage }) => {
197
+ if (newPageSize !== pageSize) {
198
+ setPageSize(newPageSize);
199
+ }
200
+
201
+ if (newPage !== currentPage) {
202
+ setCurrentPage(newPage);
203
+ }
204
+ }}
205
+ />
206
+ </div>
207
+
208
+ <Modal
209
+ open={showExportModal}
210
+ modalHeading={t('selectColumns', 'Select Columns to Export')}
211
+ primaryButtonText={t('export', 'Export')}
212
+ secondaryButtonText={getCoreTranslation('cancel')}
213
+ onRequestClose={() => setShowExportModal(false)}
214
+ onRequestSubmit={exportToCSV}
215
+ >
216
+ <FormGroup legendText={t('availableColumns', 'Available Columns')}>
217
+ {columns.map((column) => (
218
+ <Checkbox
219
+ key={column.name}
220
+ id={column.name}
221
+ labelText={column.label}
222
+ checked={selectedColumns[column.name]}
223
+ onChange={() => handleColumnToggle(column.name)}
224
+ />
225
+ ))}
226
+ </FormGroup>
227
+ </Modal>
228
+ </div>
229
+ );
230
+ };
231
+
232
+ export default ReportDataViewer;
@@ -0,0 +1,144 @@
1
+ import React, { useState, useMemo, useEffect } from 'react';
2
+ import { useTranslation } from 'react-i18next';
3
+ import { Select, SelectItem, Button } from '@carbon/react';
4
+ import { ExtensionSlot, showSnackbar, OpenmrsDatePicker, getCoreTranslation } from '@openmrs/esm-framework';
5
+ import { useReportDefinitions, useReportData } from './reports.resource';
6
+ import Overlay from './overlay.component';
7
+ import ReportDataViewer from './report-data-viewer.component';
8
+ import styles from './reports.scss';
9
+ import dayjs from 'dayjs';
10
+
11
+ const ReportsDataOverviewComponent: React.FC = () => {
12
+ const { t } = useTranslation();
13
+ const [selectedReport, setSelectedReport] = useState('');
14
+ const [reportParameters, setReportParameters] = useState<Record<string, string>>({});
15
+
16
+ const { reportDefinitions } = useReportDefinitions();
17
+ const { reportData, error, isLoading, mutate } = useReportData(selectedReport, reportParameters);
18
+
19
+ const selectedReportDefinition = useMemo(() => {
20
+ return reportDefinitions?.find((report) => report.uuid === selectedReport);
21
+ }, [selectedReport, reportDefinitions]);
22
+
23
+ const handleParameterChange = (parameterName: string, value: Date) => {
24
+ const formattedDate = value ? dayjs(value).format('YYYY-MM-DDTHH:mm:ss.SSSZ') : '';
25
+ setReportParameters((prev) => ({
26
+ ...prev,
27
+ [parameterName]: formattedDate,
28
+ }));
29
+ };
30
+
31
+ const handleReportChange = (event: React.ChangeEvent<HTMLSelectElement>) => {
32
+ const newReportUuid = event.target.value;
33
+ if (newReportUuid !== selectedReport) {
34
+ // Clear all parameters first
35
+ setReportParameters({});
36
+ // Then set the new report UUID
37
+ setSelectedReport(newReportUuid);
38
+ }
39
+ };
40
+
41
+ const handleFetchReport = () => {
42
+ if (!selectedReport) {
43
+ showSnackbar({
44
+ kind: 'error',
45
+ title: getCoreTranslation('error'),
46
+ subtitle: t('selectReportFirst', 'Please select a report first'),
47
+ });
48
+ return;
49
+ }
50
+
51
+ // Check if the report has parameters in its definition
52
+ const hasParameters = selectedReportDefinition?.parameters?.length > 0;
53
+
54
+ if (hasParameters) {
55
+ // Check if all parameters have values
56
+ const missingParameters = selectedReportDefinition?.parameters
57
+ ?.filter((param) => !reportParameters[param.name])
58
+ .map((param) => param.label);
59
+
60
+ if (missingParameters?.length > 0) {
61
+ showSnackbar({
62
+ kind: 'error',
63
+ title: getCoreTranslation('error'),
64
+ subtitle: t('missingParameters', 'Please provide the following parameters: {parameters}', {
65
+ parameters: missingParameters.join(', '),
66
+ }),
67
+ });
68
+ return;
69
+ }
70
+ }
71
+
72
+ // Only fetch when explicitly requested and parameters are valid
73
+ mutate();
74
+ };
75
+
76
+ // Remove the automatic fetch effect
77
+ useEffect(() => {
78
+ if (error) {
79
+ showSnackbar({
80
+ kind: 'error',
81
+ title: getCoreTranslation('error'),
82
+ subtitle: error?.message || t('errorFetchingReport', 'Error fetching report'),
83
+ });
84
+ }
85
+ }, [error, t]);
86
+
87
+ useEffect(() => {
88
+ if (reportData) {
89
+ showSnackbar({
90
+ kind: 'success',
91
+ title: t('reportFetched', 'Report fetched successfully'),
92
+ });
93
+ }
94
+ }, [reportData, t]);
95
+
96
+ return (
97
+ <div>
98
+ <ExtensionSlot name="breadcrumbs-slot" className={styles.breadcrumb} />
99
+ <div className={styles.mainPanelDiv}>
100
+ <div className={styles.reportsLabelDiv}>
101
+ <h3>{t('reports', 'Reports')}</h3>
102
+ </div>
103
+ <div className={styles.filterForm}>
104
+ <div className={styles.formField}>
105
+ <Select
106
+ id="report-select"
107
+ labelText={t('selectReport', 'Select Report')}
108
+ value={selectedReport}
109
+ onChange={handleReportChange}
110
+ >
111
+ <SelectItem text={t('selectReport', 'Select Report')} value="" />
112
+ {reportDefinitions?.map((report) => (
113
+ <SelectItem key={report.uuid} text={report.name} value={report.uuid} />
114
+ ))}
115
+ </Select>
116
+ </div>
117
+ {selectedReportDefinition?.parameters?.map((parameter) => (
118
+ <div key={parameter.name + selectedReportDefinition.uuid} className={styles.formField}>
119
+ <OpenmrsDatePicker
120
+ id={parameter.name}
121
+ labelText={parameter.label}
122
+ onChange={(date) => handleParameterChange(parameter.name, date)}
123
+ value={reportParameters[parameter.name]}
124
+ />
125
+ </div>
126
+ ))}
127
+ <div className={styles.formField}>
128
+ <Button onClick={handleFetchReport} disabled={isLoading}>
129
+ {isLoading ? getCoreTranslation('loading') : t('fetchReport', 'Fetch Report')}
130
+ </Button>
131
+ </div>
132
+ </div>
133
+ {reportData && (
134
+ <div className={styles.reportDataViewerContainer}>
135
+ <ReportDataViewer reportData={reportData} />
136
+ </div>
137
+ )}
138
+ </div>
139
+ <Overlay />
140
+ </div>
141
+ );
142
+ };
143
+
144
+ export default ReportsDataOverviewComponent;
@@ -6,6 +6,8 @@ import type { ReportDefinition } from '../types/report-definition';
6
6
  import type { ReportDesign } from '../types/report-design';
7
7
  import type { ReportRequest } from '../types/report-request';
8
8
  import dayjs from 'dayjs';
9
+ import { useTranslation } from 'react-i18next';
10
+ import { useState, useMemo, useEffect } from 'react';
9
11
 
10
12
  interface ReportModel {
11
13
  reportName: string;
@@ -39,7 +41,7 @@ export function useLocations() {
39
41
 
40
42
  export function useReports(statuses: string, pageNumber: number, pageSize: number, sortBy?: string): any {
41
43
  const reportsUrl =
42
- `/ws/rest/v1/reportingrest/reportRequest?status=${statuses}&startIndex=${pageNumber}&limit=${pageSize}&totalCount=true` +
44
+ `/ws/rest/v1/reportingrest/reportDefinition?status=${statuses}&startIndex=${pageNumber}&limit=${pageSize}&totalCount=true` +
43
45
  (sortBy ? `&sortBy=${sortBy}` : '');
44
46
 
45
47
  const { data, error, isValidating, mutate } = useSWR<{ data: { results: Array<any>; totalCount: number } }, Error>(
@@ -222,3 +224,55 @@ function convertParametersToString(data: any): string {
222
224
 
223
225
  return finalString;
224
226
  }
227
+
228
+ export function useReportData(reportUuid: string, parameters: Record<string, string>) {
229
+ const { t } = useTranslation();
230
+ const [shouldFetch, setShouldFetch] = useState(false);
231
+ const [lastReportUuid, setLastReportUuid] = useState('');
232
+
233
+ // Reset shouldFetch when reportUuid changes
234
+ useEffect(() => {
235
+ if (reportUuid !== lastReportUuid) {
236
+ setShouldFetch(false);
237
+ setLastReportUuid(reportUuid);
238
+ }
239
+ }, [reportUuid, lastReportUuid]);
240
+
241
+ // Only fetch when shouldFetch is true and we have a reportUuid
242
+ const { data, error, isLoading, mutate } = useSWR(
243
+ shouldFetch && reportUuid ? ['reportData', reportUuid, parameters] : null,
244
+ async () => {
245
+ if (!reportUuid) return null;
246
+
247
+ // Build query string only if we have parameters
248
+ let url = `/ws/rest/v1/reportingrest/reportdata/${reportUuid}`;
249
+ if (Object.keys(parameters).length > 0) {
250
+ const queryParams = new URLSearchParams();
251
+ Object.entries(parameters).forEach(([key, value]) => {
252
+ if (value) {
253
+ queryParams.append(key, value);
254
+ }
255
+ });
256
+ url += `?${queryParams.toString()}`;
257
+ }
258
+
259
+ const response = await openmrsFetch(url);
260
+ return response.data;
261
+ },
262
+ {
263
+ revalidateOnFocus: false,
264
+ revalidateOnReconnect: false,
265
+ shouldRetryOnError: false,
266
+ },
267
+ );
268
+
269
+ return {
270
+ reportData: data,
271
+ error,
272
+ isLoading,
273
+ mutate: () => {
274
+ setShouldFetch(true);
275
+ mutate();
276
+ },
277
+ };
278
+ }