From 9457fecb65c025f303924265a63de189c450c4d3 Mon Sep 17 00:00:00 2001 From: Bogdan Date: Tue, 27 Jun 2023 01:18:03 +0300 Subject: [PATCH] New: Improve empty list messaging (cherry picked from commit ee843259bca2d9764a3919b123524a51a3a16cce) Closes #3820 --- frontend/src/Settings/Tags/Tags.js | 6 ++++-- frontend/src/System/Events/LogsTable.js | 9 +++++---- frontend/src/System/Logs/Files/LogFiles.js | 6 +++--- frontend/src/System/Updates/Updates.js | 5 +++-- frontend/src/Wanted/CutoffUnmet/CutoffUnmet.js | 11 ++++++----- frontend/src/Wanted/Missing/Missing.js | 11 ++++++----- src/NzbDrone.Core/Localization/Core/en.json | 3 +++ 7 files changed, 30 insertions(+), 21 deletions(-) diff --git a/frontend/src/Settings/Tags/Tags.js b/frontend/src/Settings/Tags/Tags.js index 453860426..c5f3d8706 100644 --- a/frontend/src/Settings/Tags/Tags.js +++ b/frontend/src/Settings/Tags/Tags.js @@ -1,7 +1,9 @@ import PropTypes from 'prop-types'; import React from 'react'; +import Alert from 'Components/Alert'; import FieldSet from 'Components/FieldSet'; import PageSectionContent from 'Components/Page/PageSectionContent'; +import { kinds } from 'Helpers/Props'; import translate from 'Utilities/String/translate'; import TagConnector from './TagConnector'; import styles from './Tags.css'; @@ -14,9 +16,9 @@ function Tags(props) { if (!items.length) { return ( -
+ {translate('NoTagsHaveBeenAddedYet')} -
+ ); } diff --git a/frontend/src/System/Events/LogsTable.js b/frontend/src/System/Events/LogsTable.js index cce53e9f5..1c37a03ba 100644 --- a/frontend/src/System/Events/LogsTable.js +++ b/frontend/src/System/Events/LogsTable.js @@ -1,5 +1,6 @@ import PropTypes from 'prop-types'; import React from 'react'; +import Alert from 'Components/Alert'; import LoadingIndicator from 'Components/Loading/LoadingIndicator'; import FilterMenu from 'Components/Menu/FilterMenu'; import PageContent from 'Components/Page/PageContent'; @@ -11,7 +12,7 @@ import Table from 'Components/Table/Table'; import TableBody from 'Components/Table/TableBody'; import TableOptionsModalWrapper from 'Components/Table/TableOptions/TableOptionsModalWrapper'; import TablePager from 'Components/Table/TablePager'; -import { align, icons } from 'Helpers/Props'; +import { align, icons, kinds } from 'Helpers/Props'; import translate from 'Utilities/String/translate'; import LogsTableRow from './LogsTableRow'; @@ -82,9 +83,9 @@ function LogsTable(props) { { isPopulated && !error && !items.length && -
- No logs found -
+ + {translate('NoEventsFound')} + } { diff --git a/frontend/src/System/Logs/Files/LogFiles.js b/frontend/src/System/Logs/Files/LogFiles.js index 48ac75ddb..d0e9665be 100644 --- a/frontend/src/System/Logs/Files/LogFiles.js +++ b/frontend/src/System/Logs/Files/LogFiles.js @@ -11,7 +11,7 @@ import PageToolbarSection from 'Components/Page/Toolbar/PageToolbarSection'; import PageToolbarSeparator from 'Components/Page/Toolbar/PageToolbarSeparator'; import Table from 'Components/Table/Table'; import TableBody from 'Components/Table/TableBody'; -import { icons } from 'Helpers/Props'; +import { icons, kinds } from 'Helpers/Props'; import translate from 'Utilities/String/translate'; import LogsNavMenu from '../LogsNavMenu'; import LogFilesTableRow from './LogFilesTableRow'; @@ -118,9 +118,9 @@ class LogFiles extends Component { { !isFetching && !items.length && -
+ {translate('NoLogFiles')} -
+ } diff --git a/frontend/src/System/Updates/Updates.js b/frontend/src/System/Updates/Updates.js index 1b73b6829..7c6a09e6d 100644 --- a/frontend/src/System/Updates/Updates.js +++ b/frontend/src/System/Updates/Updates.js @@ -1,6 +1,7 @@ import _ from 'lodash'; import PropTypes from 'prop-types'; import React, { Component, Fragment } from 'react'; +import Alert from 'Components/Alert'; import Icon from 'Components/Icon'; import Label from 'Components/Label'; import SpinnerButton from 'Components/Link/SpinnerButton'; @@ -61,9 +62,9 @@ class Updates extends Component { { noUpdates && -
+ {translate('NoUpdatesAreAvailable')} -
+ } { diff --git a/frontend/src/Wanted/CutoffUnmet/CutoffUnmet.js b/frontend/src/Wanted/CutoffUnmet/CutoffUnmet.js index 53a8cf35d..7e3b971ad 100644 --- a/frontend/src/Wanted/CutoffUnmet/CutoffUnmet.js +++ b/frontend/src/Wanted/CutoffUnmet/CutoffUnmet.js @@ -1,5 +1,6 @@ import PropTypes from 'prop-types'; import React, { Component } from 'react'; +import Alert from 'Components/Alert'; import LoadingIndicator from 'Components/Loading/LoadingIndicator'; import FilterMenu from 'Components/Menu/FilterMenu'; import ConfirmModal from 'Components/Modal/ConfirmModal'; @@ -190,16 +191,16 @@ class CutoffUnmet extends Component { { !isAnyFetching && error && -
+ Error fetching cutoff unmet -
+ } { isAllPopulated && !error && !items.length && -
- No cutoff unmet items -
+ + {translate('NoCutoffUnmetItems')} + } { diff --git a/frontend/src/Wanted/Missing/Missing.js b/frontend/src/Wanted/Missing/Missing.js index d2530bb1e..c29d66cf5 100644 --- a/frontend/src/Wanted/Missing/Missing.js +++ b/frontend/src/Wanted/Missing/Missing.js @@ -1,5 +1,6 @@ import PropTypes from 'prop-types'; import React, { Component } from 'react'; +import Alert from 'Components/Alert'; import LoadingIndicator from 'Components/Loading/LoadingIndicator'; import FilterMenu from 'Components/Menu/FilterMenu'; import ConfirmModal from 'Components/Modal/ConfirmModal'; @@ -207,16 +208,16 @@ class Missing extends Component { { !isAnyFetching && error && -
+ Error fetching missing items -
+ } { isAllPopulated && !error && !items.length && -
- No missing items -
+ + {translate('NoMissingItems')} + } { diff --git a/src/NzbDrone.Core/Localization/Core/en.json b/src/NzbDrone.Core/Localization/Core/en.json index 3c254af36..14bcd5b46 100644 --- a/src/NzbDrone.Core/Localization/Core/en.json +++ b/src/NzbDrone.Core/Localization/Core/en.json @@ -555,12 +555,15 @@ "NextExecution": "Next Execution", "NoAlbums": "No albums", "NoBackupsAreAvailable": "No backups are available", + "NoCutoffUnmetItems": "No cutoff unmet items", + "NoEventsFound": "No events found", "NoHistory": "No history.", "NoHistoryBlocklist": "No history blocklist", "NoLeaveIt": "No, Leave It", "NoLimitForAnyRuntime": "No limit for any runtime", "NoLogFiles": "No log files", "NoMinimumForAnyRuntime": "No minimum for any runtime", + "NoMissingItems": "No missing items", "NoResults": "No Results Found", "NoTagsHaveBeenAddedYet": "No tags have been added yet", "NoUpdatesAreAvailable": "No updates are available",