diff --git a/client/coral-admin/src/containers/Dashboard/Dashboard.js b/client/coral-admin/src/containers/Dashboard/Dashboard.js index ba840c627..96e837a9e 100644 --- a/client/coral-admin/src/containers/Dashboard/Dashboard.js +++ b/client/coral-admin/src/containers/Dashboard/Dashboard.js @@ -1,14 +1,12 @@ import React from 'react'; import styles from './Dashboard.css'; -import {graphql, compose} from 'react-apollo'; +import {compose} from 'react-apollo'; import {connect} from 'react-redux'; +import {getMetrics} from 'coral-admin/src/graphql/queries'; import FlagWidget from './FlagWidget'; import LikeWidget from './LikeWidget'; -import METRICS from 'coral-admin/src/graphql/queries/metrics.graphql'; - -// import MostLikedCommentsWidget from './MostLikedCommentsWidget'; import {showBanUserDialog, hideBanUserDialog} from 'coral-admin/src/actions/moderation'; -import {banUser, setCommentStatus} from 'coral-admin/src/graphql/mutations'; + import {Spinner} from 'coral-ui'; class Dashboard extends React.Component { @@ -19,49 +17,17 @@ class Dashboard extends React.Component { return ; } - const {data: {assetsByLike, assetsByFlag/* , mostLikedComments*/}} = this.props; - - // const {moderation, settings} = this.props; + const {data: {assetsByLike, assetsByFlag}} = this.props; return (
- {/* - - */}
); } } -let then = new Date(); -then.setMinutes(then.getMinutes() - 5); -then = then.toISOString(); -const now = new Date().toISOString(); - -const getMetrics = graphql(METRICS, { - options: () => { - - return { - variables: { - from: then, - to: now - } - }; - } -}); - -const DashboardWithData = compose(getMetrics, setCommentStatus, banUser)(Dashboard); - const mapStateToProps = state => { return { settings: state.settings.toJS(), @@ -74,4 +40,7 @@ const mapDispatchToProps = dispatch => ({ hideBanUserDialog: () => dispatch(hideBanUserDialog(false)) }); -export default connect(mapStateToProps, mapDispatchToProps)(DashboardWithData); +export default compose( + connect(mapStateToProps, mapDispatchToProps), + getMetrics +)(Dashboard); diff --git a/client/coral-admin/src/graphql/queries/index.js b/client/coral-admin/src/graphql/queries/index.js index 97320591f..a2140a502 100644 --- a/client/coral-admin/src/graphql/queries/index.js +++ b/client/coral-admin/src/graphql/queries/index.js @@ -1,6 +1,7 @@ import {graphql} from 'react-apollo'; import MOD_QUEUE_QUERY from './modQueueQuery.graphql'; +import METRICS from './metrics.graphql'; export const modQueueQuery = graphql(MOD_QUEUE_QUERY, { options: ({params: {id = null}}) => { @@ -17,6 +18,18 @@ export const modQueueQuery = graphql(MOD_QUEUE_QUERY, { }) }); +export const getMetrics = graphql(METRICS, { + options: ({settings: {dashboardWindowStart, dashboardWindowEnd}}) => { + + return { + variables: { + from: dashboardWindowStart, + to: dashboardWindowEnd + } + }; + } +}); + export const modQueueResort = (id, fetchMore) => (sort) => { return fetchMore({ query: MOD_QUEUE_QUERY, diff --git a/client/coral-admin/src/reducers/settings.js b/client/coral-admin/src/reducers/settings.js index a02cac198..a6e0c9339 100644 --- a/client/coral-admin/src/reducers/settings.js +++ b/client/coral-admin/src/reducers/settings.js @@ -1,11 +1,20 @@ import {Map, List} from 'immutable'; import * as actions from '../actions/settings'; +// this is initialized here because +// currently you have to reload the dashboard to get new stats +// cleaner updates are planned in the future. +const DASHBOARD_WINDOW_MINUTES = 5; +let then = new Date(); +then.setMinutes(then.getMinutes() - DASHBOARD_WINDOW_MINUTES); + const initialState = Map({ wordlist: Map({ banned: List(), suspect: List() }), + dashboardWindowStart: then.toISOString(), + dashboardWindowEnd: new Date().toISOString(), domains: Map({ whitelist: List() }),