diff --git a/CHANGELOG.md b/CHANGELOG.md index 447379f..1c91455 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,7 @@ * Explicit paging for list of failed records. Fixes UIHAADM-141. * Explicit paging for list of harvestables. Fixes UIHAADM-142. +* When downloading Failed Records, provide all records in the result set, not just the currently visible page. Fixes UIHAADM-140. ## [2.2.0](https://github.com/folio-org/ui-harvester-admin/tree/v2.2.0) (2024-10-23) diff --git a/src/views/Records/Records.js b/src/views/Records/Records.js index 04dd7c7..a2e2924 100644 --- a/src/views/Records/Records.js +++ b/src/views/Records/Records.js @@ -1,7 +1,7 @@ import React, { useState } from 'react'; import PropTypes from 'prop-types'; import { FormattedMessage, useIntl } from 'react-intl'; -import { AppIcon } from '@folio/stripes/core'; +import { AppIcon, useOkapiKy } from '@folio/stripes/core'; import { MenuSection, Button, Icon, LoadingPane, Paneset, Pane, MultiColumnList, ErrorModal, exportToCsv, MCLPagingTypes } from '@folio/stripes/components'; import { ColumnManager, SearchAndSortQuery } from '@folio/stripes/smart-components'; import parseSort from '../../util/parseSort'; @@ -11,22 +11,39 @@ import ErrorMessage from '../../components/ErrorMessage'; import packageInfo from '../../../package'; -function renderActionMenu(onToggle, intl, data, renderedColumnsMenu) { +function exportAllRecords(resultCount, okapiKy) { + const RCI = 100; // Probably keep in sync with RESULT_COUNT_INCREMENT from RecordsRoute.js + + const p = []; + for (let offset = 0; offset < resultCount; offset += RCI) { + p.push(okapiKy(`harvester-admin/previous-jobs/failed-records?offset=${offset}&limit=${RCI}`) + .then(res => res.json())); + } + + Promise.all(p).then(responses => { + const records = responses + .map(response => response.failedRecords) + .flat() + .filter(r => r !== undefined).map(r => ({ + ...r, + errors: errors2string(r.recordErrors), + originalRecord: undefined, + })); + + exportToCsv(records, {}); + }); +} + + +function renderActionMenu(onToggle, intl, data, resultCount, okapiKy, renderedColumnsMenu) { return (