1
Fork 0
mirror of https://github.com/pds-nest/nest.git synced 2024-11-23 13:34:19 +00:00
pds-2021-g2-nest/nest_frontend/components/interactive/BoxVisualizationChart.js

48 lines
1.4 KiB
JavaScript
Raw Normal View History

2021-05-20 16:28:08 +00:00
import React, { useContext } from "react"
2021-05-20 11:36:07 +00:00
import BoxFull from "../base/BoxFull"
import BoxChart from "../base/BoxChart"
2021-05-20 13:34:05 +00:00
import Empty from "./Empty"
2021-05-20 16:28:08 +00:00
import ContextLanguage from "../../contexts/ContextLanguage"
2021-05-21 14:37:30 +00:00
import ContextRepositoryViewer from "../../contexts/ContextRepositoryViewer"
2021-05-20 11:36:07 +00:00
2021-05-21 14:37:30 +00:00
export default function BoxVisualizationChart({ ...props }) {
2021-05-20 16:28:08 +00:00
const { strings } = useContext(ContextLanguage)
const { tweets } = useContext(ContextRepositoryViewer)
2021-05-20 13:34:05 +00:00
2021-05-20 11:36:07 +00:00
const hours = [...Array(24).keys()].map(hour => hour.toString())
const hourlyTweetCount = Array(24).fill(0)
for(const tweet of tweets) {
const insertDate = new Date(tweet["insert_time"])
const insertHour = insertDate.getHours()
hourlyTweetCount[insertHour] += 1
}
2021-05-20 13:34:05 +00:00
if(tweets.length === 0) {
return (
<BoxFull header={"Hourly graph"} {...props}>
<Empty/>
</BoxFull>
)
}
2021-05-20 11:36:07 +00:00
return (
<BoxChart
2021-05-20 16:28:08 +00:00
header={strings.hourlyGraph}
2021-05-20 11:36:07 +00:00
chartProps={{
type: "bar",
data: {
labels: hours.map(hour => hour.toString()),
datasets: [
{
label: "Tweets",
data: hourlyTweetCount,
},
2021-05-20 11:36:07 +00:00
],
},
2021-05-20 11:36:07 +00:00
}}
{...props}
/>
)
}