| import { useGithubIssueQueryCountTaskResult } from "./data/GithubIssueQueryCountTask"; |
| import { |
| Legend, |
| Line, |
| LineChart, |
| ResponsiveContainer, |
| Tooltip, |
| XAxis, |
| YAxis, |
| } from "recharts"; |
| import { DateTime } from "luxon"; |
| |
| export interface GithubIssueQueryCountTaskResultChartProps { |
| queryIds: Array<string>; |
| days: number |
| } |
| |
| export default function GithubIssueQueryCountTaskResultChart({ |
| queryIds, |
| days, |
| }: GithubIssueQueryCountTaskResultChartProps) { |
| const { data, loading, error } = useGithubIssueQueryCountTaskResult( |
| "bazelbuild", |
| "bazel", |
| queryIds, |
| "DAILY", |
| days |
| ); |
| if (loading) { |
| return <span>Loading</span>; |
| } |
| if (error) { |
| return <span>Error</span>; |
| } |
| |
| return ( |
| <ResponsiveContainer height={300}> |
| <LineChart margin={{ left: -20 }}> |
| {data.map((result) => { |
| return ( |
| <Line |
| connectNulls |
| key={result.id} |
| type="monotone" |
| isAnimationActive={false} |
| dot={false} |
| data={result.items} |
| dataKey="count" |
| name={result.name} |
| activeDot={{ |
| onClick: () => { |
| window.open(result.url, "_blank"); |
| }, |
| }} |
| /> |
| ); |
| })} |
| <XAxis |
| dataKey={(data) => { |
| return DateTime.fromISO(data.timestamp).toFormat("MM-dd"); |
| }} |
| /> |
| <YAxis /> |
| <Tooltip /> |
| {data.length > 1 && <Legend />} |
| </LineChart> |
| </ResponsiveContainer> |
| ); |
| } |