import React from "react";
import { FrontendForecast } from "../platforms";
import * as V from "victory";
import {
VictoryBar,
VictoryLabel,
VictoryTooltip,
VictoryLine,
VictoryScatter,
VictoryChart,
VictoryTheme,
VictoryAxis,
VictoryGroup,
VictoryVoronoiContainer,
} from "victory";
import ReactMarkdown from "react-markdown";
import { cleanText } from "../utils";
import gfm from "remark-gfm";
interface Props {
question: FrontendForecast;
history: number[];
}
let l = 50;
const data = Array.from(Array(l).keys()).map((x) => ({
date: x,
probability: Math.abs(Math.sin((5 * x) / l)),
}));
const data2 = Array.from(Array(l).keys()).map((x) => ({
date: x,
probability: 1 - Math.abs(Math.sin((5 * x) / l)),
}));
let getDate = (x) => {
let date = new Date(x);
return date.toISOString().slice(5, 10).replaceAll("-", "/");
};
let dataAsXy = (data) =>
data.map((datum) => ({
x: getDate(datum.date * (1000 * 60 * 60 * 24)),
y: datum.probability,
}));
let colors = [
"royalblue",
"crimson",
"darkgreen",
"dodgerblue",
"darkviolet",
"limegreen",
];
const getVictoryGroup = (data, i) => {
return (
null}
labelComponent={}
/>
{
(active ? 3.75 : 3)}
labels={() => null}
labelComponent={}
/>
// No idea how to disable labels
}
);
};
export const HistoryChart: React.FC = ({ question, history }) => {
return (
{question.title}
`${datum.x}: ${Math.round(datum.y * 100)}%`}
labelComponent={
}
voronoiBlacklist={
Array.from(Array(5).keys()).map((x, i) => `line${i}`)
// see: https://github.com/FormidableLabs/victory/issues/545
}
/>
}
domain={{
y: [0, 1],
}}
>
{[data, data2]
.slice(0, 5)
.map((dataset, i) => getVictoryGroup(dataset, i))}
datum.x)}
// tickFormat={dataAsXy.map((datum) => datum.x)}
tickCount={7}
style={{
grid: { stroke: null, strokeWidth: 0.5 },
}}
tickLabelComponent={
}
/>
`${x * 100}%`}
style={{
grid: { stroke: "#D3D3D3", strokeWidth: 0.5 },
}}
tickLabelComponent={
}
/>
);
};