From 6eda4956639254c9ba93ed317b27dbde0e463875 Mon Sep 17 00:00:00 2001 From: Riley Davis Date: Wed, 15 Feb 2017 12:57:51 -0700 Subject: [PATCH] display most flagged assets in a table --- .../coral-admin/src/components/FlagWidget.css | 24 ++++++++++ .../coral-admin/src/components/FlagWidget.js | 46 ++++++++++++++----- .../src/containers/Dashboard/Dashboard.js | 3 +- .../coral-admin/src/graphql/queries/index.js | 15 +++++- .../src/graphql/queries/mostFlags.graphql | 11 ++++- client/coral-docs/src/services/fetcher.js | 2 +- 6 files changed, 85 insertions(+), 16 deletions(-) diff --git a/client/coral-admin/src/components/FlagWidget.css b/client/coral-admin/src/components/FlagWidget.css index 590aa51d1..03be150d4 100644 --- a/client/coral-admin/src/components/FlagWidget.css +++ b/client/coral-admin/src/components/FlagWidget.css @@ -3,3 +3,27 @@ font-size: 1.5rem; font-weight: bold; } + +.widgetTable { + width: 100%; + border-collapse: collapse; + box-shadow: 0px 0px 5px 0px rgba(0,0,0,0.2); +} + +.widgetTable thead th { + border-bottom: 1px solid #f47e6b; + padding: 10px; + text-align: left; +} + +.widgetTable tbody tr { + border-bottom: 1px solid lightgrey; +} + +.widgetTable tbody tr:last-child { + border-bottom: none; +} + +.widgetTable tbody td { + padding: 10px; +} diff --git a/client/coral-admin/src/components/FlagWidget.js b/client/coral-admin/src/components/FlagWidget.js index 324b76c10..f01008e28 100644 --- a/client/coral-admin/src/components/FlagWidget.js +++ b/client/coral-admin/src/components/FlagWidget.js @@ -1,25 +1,49 @@ import React, {PropTypes} from 'react'; +import styles from './FlagWidget.css'; + +const FlagWidget = ({assets}) => { -const FlagWidget = () => { return ( - - - +
ArticleFlags
+ + + + + + - {/* display asset list as rows here */} + {assets.map(asset => { + const flagCount = asset.action_summaries.find(s => s.__typename === 'FlagAssetActionSummary').actionCount; + return ( + + + + + + ); + })}
ArticleFlagsComment Count
{asset.title}{flagCount}{asset.commentCount}
); }; FlagWidget.propTypes = { - assets: PropTypes.arrayOf(PropTypes.shape({ - id: PropTypes.string, - title: PropTypes.string, - url: PropTypes.string, - count: PropTypes.number - })).isRequired + assets: PropTypes.arrayOf( + PropTypes.shape({ + id: PropTypes.string, + title: PropTypes.string, + url: PropTypes.string, + commentCount: PropTypes.number, + action_summaries: PropTypes.arrayOf( + PropTypes.shape({ + __typename: PropTypes.string.isRequired, + actionCount: PropTypes.number.isRequired, + actionableItemCount: PropTypes.number.isRequired + }) + ) + }) + ).isRequired }; export default FlagWidget; diff --git a/client/coral-admin/src/containers/Dashboard/Dashboard.js b/client/coral-admin/src/containers/Dashboard/Dashboard.js index 4d7f268f8..6baa16af1 100644 --- a/client/coral-admin/src/containers/Dashboard/Dashboard.js +++ b/client/coral-admin/src/containers/Dashboard/Dashboard.js @@ -9,6 +9,7 @@ class Dashboard extends React.Component { render () { const {data} = this.props; + const {metrics: assets} = data; if (data.loading) { return ; @@ -22,7 +23,7 @@ class Dashboard extends React.Component {

Top Ten Articles with the most flagged comments

- +

Top ten comments with the most likes

diff --git a/client/coral-admin/src/graphql/queries/index.js b/client/coral-admin/src/graphql/queries/index.js index a0cceb0c7..9b8a51216 100644 --- a/client/coral-admin/src/graphql/queries/index.js +++ b/client/coral-admin/src/graphql/queries/index.js @@ -3,7 +3,20 @@ import {graphql} from 'react-apollo'; import MOST_FLAGS from './mostFlags.graphql'; import MOD_QUEUE_QUERY from './modQueueQuery.graphql'; -export const mostFlags = graphql(MOST_FLAGS, {}); +export const mostFlags = graphql(MOST_FLAGS, { + options: () => { + + // currently hard-coded per Greg's advice + const fiveMinutesAgo = new Date(); + fiveMinutesAgo.setMinutes(fiveMinutesAgo.getMinutes() - 5); + return { + variables: { + from: fiveMinutesAgo.toISOString(), + to: new Date().toISOString() + } + }; + } +}); export const modQueueQuery = graphql(MOD_QUEUE_QUERY, { options: ({params: {id = ''}}) => { diff --git a/client/coral-admin/src/graphql/queries/mostFlags.graphql b/client/coral-admin/src/graphql/queries/mostFlags.graphql index 229d64541..1bcec7a1e 100644 --- a/client/coral-admin/src/graphql/queries/mostFlags.graphql +++ b/client/coral-admin/src/graphql/queries/mostFlags.graphql @@ -1,5 +1,12 @@ -query mostFlags { - metric { +query Metrics ($from: Date!, $to: Date!) { + metrics(from: $from, to: $to) { id + title + url + commentCount + action_summaries { + actionCount + actionableItemCount + } } } diff --git a/client/coral-docs/src/services/fetcher.js b/client/coral-docs/src/services/fetcher.js index e4d6f091d..aec448762 100644 --- a/client/coral-docs/src/services/fetcher.js +++ b/client/coral-docs/src/services/fetcher.js @@ -1,5 +1,5 @@ export default function fetcher(query) { - return fetch(`${window.location.host}/api/v1/graph/ql`, { + return fetch(`${window.location.origin}/api/v1/graph/ql`, { method: 'POST', headers: { Accept: 'application/json',