diff --git a/src/components/Settings/SettingsJobsCache/index.tsx b/src/components/Settings/SettingsJobsCache/index.tsx index d5eaa2b9..17e8beee 100644 --- a/src/components/Settings/SettingsJobsCache/index.tsx +++ b/src/components/Settings/SettingsJobsCache/index.tsx @@ -66,6 +66,15 @@ const messages: { [messageName: string]: MessageDescriptor } = defineMessages( dnscacheage: 'Age', dnscachenetworkerrors: 'Network Errors', flushdnscache: 'Flush DNS Cache', + dnsCacheGlobalStats: 'Global DNS Cache Stats', + dnsCacheGlobalStatsDescription: + 'These stats are aggregated across all DNS cache entries.', + size: 'Size', + hits: 'Hits', + misses: 'Misses', + failures: 'Failures', + ipv4Fallbacks: 'IPv4 Fallbacks', + hitRate: 'Hit Rate', unknownJob: 'Unknown Job', 'plex-recently-added-scan': 'Plex Recently Added Scan', 'plex-full-scan': 'Plex Full Library Scan', @@ -649,6 +658,94 @@ const SettingsJobs = () => { +
+

+ {intl.formatMessage(messages.dnsCacheGlobalStats)} +

+

+ {intl.formatMessage(messages.dnsCacheGlobalStatsDescription)} +

+
+
+ + + + {Object.entries(cacheData?.dnsCache.stats || {}) + .filter(([statName]) => statName !== 'maxSize') + .map(([statName]) => ( + + {messages[statName] + ? intl.formatMessage(messages[statName]) + : statName} + + ))} + + + + + {Object.entries(cacheData?.dnsCache.stats || {}) + .filter(([statName]) => statName !== 'maxSize') + .map(([statName, statValue]) => ( + + {statName === 'hitRate' + ? intl.formatNumber(statValue, { + style: 'percent', + maximumFractionDigits: 2, + }) + : intl.formatNumber(statValue)} + + ))} + + +
+ {/* + + + + {intl.formatMessage(messages.dnscacheglobalsize)} + + + {intl.formatMessage(messages.dnscacheglobalhits)} + + + {intl.formatMessage(messages.dnscacheglobalmisses)} + + + {intl.formatMessage(messages.dnscacheglobalhitrate)} + + + {intl.formatMessage(messages.dnscacheglobalfailures)} + + + {intl.formatMessage(messages.dnscacheglobalipv4fallbacks)} + + + + + {Object.entries(cacheData?.dnsCache.stats || {}).map( + ([key, value]) => ( + + {hostname} + {data.activeAddress} + {intl.formatNumber(data.hits)} + {intl.formatNumber(data.misses)} + {formatAge(data.age)} + {intl.formatNumber(data.networkErrors)} + + + + + ) + )} + +
*/} +

{intl.formatMessage(messages.imagecache)}