+
+ {
+ isFetching && !isPopulated &&
+
+ }
+
+ {
+ !isFetching && !!error &&
+
+ {getErrorMessage(error, 'Failed to load indexer stats from API')}
+
+ }
+
+ {
+ isLoaded &&
+
+ }
+
+ );
+}
+
+Stats.propTypes = {
+ items: PropTypes.arrayOf(PropTypes.object).isRequired,
+ isFetching: PropTypes.bool.isRequired,
+ isPopulated: PropTypes.bool.isRequired,
+ error: PropTypes.object,
+ data: PropTypes.object
+};
+
+export default Stats;
diff --git a/frontend/src/Indexer/Stats/StatsConnector.js b/frontend/src/Indexer/Stats/StatsConnector.js
new file mode 100644
index 000000000..4dbc8fbd2
--- /dev/null
+++ b/frontend/src/Indexer/Stats/StatsConnector.js
@@ -0,0 +1,44 @@
+import PropTypes from 'prop-types';
+import React, { Component } from 'react';
+import { connect } from 'react-redux';
+import { createSelector } from 'reselect';
+import { fetchIndexerStats } from 'Store/Actions/indexerStatsActions';
+import Stats from './Stats';
+
+function createMapStateToProps() {
+ return createSelector(
+ (state) => state.indexerStats,
+ (indexerStats) => indexerStats
+ );
+}
+
+const mapDispatchToProps = {
+ dispatchFetchIndexers: fetchIndexerStats
+};
+
+class StatsConnector extends Component {
+
+ //
+ // Lifecycle
+
+ componentDidMount() {
+ this.props.dispatchFetchIndexers();
+ }
+
+ //
+ // Render
+
+ render() {
+ return (
+