diff --git a/client/coral-admin/src/AppRouter.js b/client/coral-admin/src/AppRouter.js
index d8e1b5377..362143d38 100644
--- a/client/coral-admin/src/AppRouter.js
+++ b/client/coral-admin/src/AppRouter.js
@@ -3,7 +3,6 @@ import PropTypes from 'prop-types';
import {Router, Route, IndexRedirect, IndexRoute} from 'react-router';
import Configure from 'routes/Configure';
-import Dashboard from 'routes/Dashboard';
import Install from 'routes/Install';
import Stories from 'routes/Stories';
import Community from 'routes/Community/containers/Community';
@@ -18,7 +17,6 @@ const routes = (
-
{/* Community Routes */}
diff --git a/client/coral-admin/src/components/Drawer.js b/client/coral-admin/src/components/Drawer.js
index 70da8ad5e..29ee8d17e 100644
--- a/client/coral-admin/src/components/Drawer.js
+++ b/client/coral-admin/src/components/Drawer.js
@@ -12,20 +12,14 @@ const CoralDrawer = ({handleLogout, auth = {}}) => (
{ auth && auth.user && can(auth.user, 'ACCESS_ADMIN') ?
-
- {t('configure.dashboard')}
-
{
can(auth.user, 'MODERATE_COMMENTS') && (
-
{t('configure.moderate')}
-
+
)
}
-
- {t('configure.dashboard')}
-
{
can(auth.user, 'MODERATE_COMMENTS') && (
-
{t('configure.moderate')}
{(root.premodCount !== 0 || root.reportedCount !== 0) && }
-
+
)
}
{
- return (
-
-
{t('dashboard.most_conversations')}
-
-
{t('streams.article')}
-
{t('dashboard.comment_count')}
-
-
- {
- assets.length
- ? assets.map((asset) => {
- return (
-
-
Moderate
-
{asset.commentCount}
-
- {asset.title}
-
-
{asset.author} — Published: {new Date(asset.created_at).toLocaleDateString()}
-
- );
- })
- :
{t('dashboard.no_activity')}
- }
-
-
- );
-};
-
-ActivityWidget.propTypes = {
- assets: PropTypes.arrayOf(PropTypes.shape({
- id: PropTypes.string,
- url: PropTypes.string,
- commentCount: PropTypes.number,
- author: PropTypes.string,
- created_at: PropTypes.string
- })).isRequired
-};
-
-export default ActivityWidget;
diff --git a/client/coral-admin/src/routes/Dashboard/components/CountdownTimer.js b/client/coral-admin/src/routes/Dashboard/components/CountdownTimer.js
deleted file mode 100644
index a2e6ea9f1..000000000
--- a/client/coral-admin/src/routes/Dashboard/components/CountdownTimer.js
+++ /dev/null
@@ -1,93 +0,0 @@
-import React from 'react';
-import PropTypes from 'prop-types';
-import styles from './Dashboard.css';
-import {Icon} from 'coral-ui';
-
-import t from 'coral-framework/services/i18n';
-const refreshIntervalSeconds = 60 * 5;
-
-// TODO: refactor out storage code into redux.
-
-class CountdownTimer extends React.Component {
-
- static contextTypes = {
- storage: PropTypes.object,
- };
-
- static propTypes = {
- handleTimeout: PropTypes.func.isRequired
- }
-
- constructor (props, context) {
- super(props, context);
- const {storage} = context;
- try {
- if (storage && storage.getItem('coral:dashboardNote') === null) {
- storage.setItem('coral:dashboardNote', 'show');
- }
- } catch (e) {
-
- // above will fail in Private Mode in some browsers.
- }
-
- this.state = {
- secondsUntilRefresh: refreshIntervalSeconds,
- dashboardNote: (storage && storage.getItem('coral:dashboardNote')) || 'show'
- };
- }
-
- componentWillMount () {
- this.interval = setInterval(() => { // the countdown timer
- let nextCount = this.state.secondsUntilRefresh - 1;
- if (nextCount < 0) {
- nextCount = refreshIntervalSeconds;
- return this.props.handleTimeout();
- }
- this.setState({secondsUntilRefresh: nextCount});
- }, 1000);
- }
-
- componentWillUnmount () {
- window.clearInterval(this.interval);
- }
-
- formatTime = () => {
- const minutes = Math.floor(this.state.secondsUntilRefresh / 60);
- let seconds = (this.state.secondsUntilRefresh % 60).toString();
- if (seconds.length < 2) {
- seconds = `0${seconds}`;
- }
-
- return `${minutes}:${seconds}`;
- }
-
- dismissNote = () => {
- const {storage} = this.context;
- try {
- if (storage) {
- storage.setItem('coral:dashboardNote', 'hide');
- }
- } catch (e) {
-
- // when setItem fails in Safari Private mode
- this.setState({dashboardNote: 'hide'});
- }
- }
-
- render () {
- const {storage} = this.context;
- const hideReloadNote = (storage && storage.getItem('coral:dashboardNote') === 'hide') ||
- this.state.dashboardNote === 'hide'; // for Safari Incognito
- return (
-
- ×
- {t('dashboard.next_update', this.formatTime())} {t('dashboard.auto_update')}
-
- );
- }
-}
-
-export default CountdownTimer;
diff --git a/client/coral-admin/src/routes/Dashboard/components/Dashboard.css b/client/coral-admin/src/routes/Dashboard/components/Dashboard.css
deleted file mode 100644
index aee7e702b..000000000
--- a/client/coral-admin/src/routes/Dashboard/components/Dashboard.css
+++ /dev/null
@@ -1,40 +0,0 @@
-/**
- * @TODO: deprecated as this file contains styles from multiple components. Please refactor.
- */
-
-.Dashboard {
- display: flex;
- max-width: 1280px;
- margin: 0 auto;
-}
-
-.heading {
- margin: 0;
- font-size: 1.5rem;
- font-weight: bold;
-}
-
-.autoUpdate {
- background-color: #d5d5d5;
- padding: 3px 10px 10px 10px;
- margin-bottom: 0;
-
- i {
- position: relative;
- top: 7px;
- }
-
- b {
- float: right;
- border-radius: 20px;
- cursor: pointer;
- background-color: #c0c0c0;
- width: 30px;
- height: 30px;
- text-align: center;
- top: 4px;
- position: relative;
- line-height: 1.7em;
- font-size: 1.3em;
- }
-}
diff --git a/client/coral-admin/src/routes/Dashboard/components/Dashboard.js b/client/coral-admin/src/routes/Dashboard/components/Dashboard.js
deleted file mode 100644
index ba224a3b9..000000000
--- a/client/coral-admin/src/routes/Dashboard/components/Dashboard.js
+++ /dev/null
@@ -1,15 +0,0 @@
-import React from 'react';
-import FlagWidget from './FlagWidget';
-import ActivityWidget from './ActivityWidget';
-import CountdownTimer from './CountdownTimer';
-import styles from './Dashboard.css';
-
-export default ({root: {assetsByActivity, assetsByFlag}, reloadData}) => (
-
-);
diff --git a/client/coral-admin/src/routes/Dashboard/components/FlagWidget.js b/client/coral-admin/src/routes/Dashboard/components/FlagWidget.js
deleted file mode 100644
index 2f3548cf1..000000000
--- a/client/coral-admin/src/routes/Dashboard/components/FlagWidget.js
+++ /dev/null
@@ -1,54 +0,0 @@
-import React from 'react';
-import PropTypes from 'prop-types';
-import {Link} from 'react-router';
-import styles from './Widget.css';
-
-import t from 'coral-framework/services/i18n';
-
-const FlagWidget = ({assets}) => {
-
- return (
-
-
{t('dashboard.most_flags')}
-
-
{t('streams.article')}
-
{t('dashboard.flags')}
-
-
- {
- assets.length
- ? assets.map((asset) => {
- let flagSummary = null;
- if (asset.action_summaries) {
- flagSummary = asset.action_summaries.find((s) => s.__typename === 'FlagAssetActionSummary');
- }
-
- return (
-
-
Moderate
-
{flagSummary ? flagSummary.actionCount : 0}
-
- {asset.title}
-
-
{asset.author} — Published: {new Date(asset.created_at).toLocaleDateString()}
-
- );
- })
- :
{t('dashboard.no_flags')}
- }
-
-
- );
-};
-
-FlagWidget.propTypes = {
- assets: PropTypes.arrayOf(PropTypes.shape({
- id: PropTypes.string,
- url: PropTypes.string,
- action_summaries: PropTypes.array,
- author: PropTypes.string,
- created_at: PropTypes.string
- })).isRequired
-};
-
-export default FlagWidget;
diff --git a/client/coral-admin/src/routes/Dashboard/components/LikeWidget.js b/client/coral-admin/src/routes/Dashboard/components/LikeWidget.js
deleted file mode 100644
index 7525f7223..000000000
--- a/client/coral-admin/src/routes/Dashboard/components/LikeWidget.js
+++ /dev/null
@@ -1,49 +0,0 @@
-import React from 'react';
-import PropTypes from 'prop-types';
-import {Link} from 'react-router';
-import styles from './Widget.css';
-import t from 'coral-framework/services/i18n';
-
-const LikeWidget = ({assets}) => {
-
- return (
-
-
Articles with the most likes
-
-
{t('streams.article')}
-
{t('modqueue.likes')}
-
-
- {
- assets.length
- ? assets.map((asset) => {
- const likeSummary = asset.action_summaries.find((s) => s.type === 'LikeAssetActionSummary');
- return (
-
-
Moderate
-
{likeSummary ? likeSummary.actionCount : 0}
-
- {asset.title}
-
-
{asset.author} — Published: {new Date(asset.created_at).toLocaleDateString()}
-
- );
- })
- :
{t('dashboard.no_likes')}
- }
-
-
- );
-};
-
-LikeWidget.propTypes = {
- assets: PropTypes.arrayOf(PropTypes.shape({
- id: PropTypes.string,
- url: PropTypes.string,
- action_summaries: PropTypes.array,
- author: PropTypes.string,
- created_at: PropTypes.string
- })).isRequired
-};
-
-export default LikeWidget;
diff --git a/client/coral-admin/src/routes/Dashboard/components/MostLikedCommentsWidget.js b/client/coral-admin/src/routes/Dashboard/components/MostLikedCommentsWidget.js
deleted file mode 100644
index 6bbb67c50..000000000
--- a/client/coral-admin/src/routes/Dashboard/components/MostLikedCommentsWidget.js
+++ /dev/null
@@ -1,38 +0,0 @@
-import React from 'react';
-
-import ModerationQueue from 'coral-admin/src/containers/ModerationQueue/ModerationQueue';
-import styles from './Widget.css';
-import BanUserDialog from 'coral-admin/src/components/BanUserDialog';
-import t from 'coral-framework/services/i18n';
-
-const MostLikedCommentsWidget = (props) => {
- const {
- comments,
- moderation,
- settings,
- handleBanUser,
- showBanUserDialog,
- hideBanUserDialog,
- acceptComment,
- rejectComment
- } = props;
-
- return (
-
-
{t('most_liked_comments')}
-
-
-
- );
-};
-
-export default MostLikedCommentsWidget;
diff --git a/client/coral-admin/src/routes/Dashboard/components/Widget.css b/client/coral-admin/src/routes/Dashboard/components/Widget.css
deleted file mode 100644
index e94d2313f..000000000
--- a/client/coral-admin/src/routes/Dashboard/components/Widget.css
+++ /dev/null
@@ -1,110 +0,0 @@
-/**
- * @TODO: deprecated as this file contains styles from multiple components. Please refactor.
- */
-
-:root {
- --row-height: 60px;
-}
-
-.widget {
- margin: 10px 5px 5px 5px;
- box-shadow: 0px 0px 5px 0px rgba(0,0,0,0.2);
- flex: 1;
- background-color: white;
- box-sizing: border-box;
-}
-
-.widget * {
- box-sizing: border-box;
-}
-
-.heading {
- margin: 0;
- padding-left: 10px;
- font-size: 1.3rem;
- font-weight: 600;
- color: #2c2c2c;
-}
-
-.widgetTable {
- height: calc(var(--row-height) * 10);
-}
-
-.widgetTable + div:after {
- content: '';
- clear: both;
- display: block;
-}
-
-.widgetHead p {
- color: #2c2c2c;
- font-weight: 500;
- padding: 10px;
- text-align: left;
- text-transform: capitalize;
- display: inline-block;
- box-sizing: border-box;
- margin-bottom: 0;
-}
-
-.widgetHead p:last-child {
- float: right;
- margin-right: 100px;
-}
-
-.rowLinkify {
- border-bottom: 1px solid lightgrey;
- color: #555;
- height: var(--row-height);
- padding: 10px;
- transition: background-color 200ms;
-}
-
-.rowLinkify:last-child {
- border-bottom: none;
-}
-
-.rowLinkify:hover {
- background-color: #f8f8f8;
- pointer: default;
-}
-
-.linkToAsset {
- display: inline-block;
- text-decoration: none;
-}
-
-.linkToModerate {
- background-color: #BDBDBD;
- padding: 10px 14px;
- text-decoration: none;
- color: black;
- float: right;
- margin-left: 15px;
- transition: background-color 200ms;
-}
-
-.linkToModerate:hover {
- background-color: #9E9E9E;
-}
-
-.lede {
- font-size: 0.9em;
- color: #aaa;
-}
-
-.assetTitle {
- color: #555;
- text-decoration: none;
- font-size: 1.2em;
- font-weight: 500;
- margin: 0;
-}
-
-.widgetCount {
- color: #555;
- font-size: 1.3em;
- font-weight: 400;
- float: right;
- margin-top: 7px;
-}
diff --git a/client/coral-admin/src/routes/Dashboard/containers/Dashboard.js b/client/coral-admin/src/routes/Dashboard/containers/Dashboard.js
deleted file mode 100644
index e2e9ef28c..000000000
--- a/client/coral-admin/src/routes/Dashboard/containers/Dashboard.js
+++ /dev/null
@@ -1,65 +0,0 @@
-import React from 'react';
-import {connect} from 'react-redux';
-import Dashboard from '../components/Dashboard';
-import {compose, gql} from 'react-apollo';
-import withQuery from 'coral-framework/hocs/withQuery';
-
-import {Spinner} from 'coral-ui';
-
-class DashboardContainer extends React.Component {
-
- reloadData = () => {
- this.props.data.refetch();
- }
-
- render () {
- if (this.props.data.loading) {
- return ;
- }
- return ;
- }
-}
-
-export const witDashboardQuery = withQuery(gql`
- query CoralAdmin_Dashboard($from: Date!, $to: Date!) {
- assetsByFlag: assetMetrics(from: $from, to: $to, sortBy: FLAG) {
- ...CoralAdmin_Metrics
- }
- assetsByActivity: assetMetrics(from: $from, to: $to, sortBy: ACTIVITY) {
- ...CoralAdmin_Metrics
- }
- }
- fragment CoralAdmin_Metrics on Asset {
- id
- title
- url
- author
- created_at
- commentCount
- action_summaries {
- actionCount
- actionableItemCount
- }
- }
-`, {
- options: ({windowStart, windowEnd}) => {
- return {
- variables: {
- from: windowStart,
- to: windowEnd,
- }
- };
- }
- });
-
-const mapStateToProps = (state) => {
- return {
- windowStart: state.dashboard.windowStart,
- windowEnd: state.dashboard.windowEnd,
- };
-};
-
-export default compose(
- connect(mapStateToProps),
- witDashboardQuery,
-)(DashboardContainer);
diff --git a/client/coral-admin/src/routes/Dashboard/index.js b/client/coral-admin/src/routes/Dashboard/index.js
deleted file mode 100644
index 5bbb476e2..000000000
--- a/client/coral-admin/src/routes/Dashboard/index.js
+++ /dev/null
@@ -1 +0,0 @@
-export {default} from './containers/Dashboard.js';