You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
115 lines
2.9 KiB
115 lines
2.9 KiB
import React, { useRef, useState } from "react";
|
|
import { Text, TouchableOpacity, View } from "react-native";
|
|
import { CurveType, LineChart } from "react-native-gifted-charts";
|
|
|
|
export default function ActivitiesComponent() {
|
|
const ref = useRef(null);
|
|
const [dateSelected, setDateSelected] = useState("1d");
|
|
const [lineData, setLineData] = useState([
|
|
{ value: 4 },
|
|
{ value: 14 },
|
|
{ value: 8 },
|
|
{ value: 38 },
|
|
{ value: 36 },
|
|
{ value: 28 },
|
|
]);
|
|
|
|
const months = ["1d", "1w", "1m", "1y", "All"];
|
|
const changeMonthSelected = (ind: number) => {
|
|
const selectedMonth = months[ind];
|
|
setDateSelected(selectedMonth);
|
|
|
|
// Update lineData based on the selected month
|
|
let newData: React.SetStateAction<{ value: number }[]>;
|
|
switch (selectedMonth) {
|
|
case "1d":
|
|
newData = [
|
|
{ value: 4 },
|
|
{ value: 14 },
|
|
{ value: 8 },
|
|
{ value: 38 },
|
|
{ value: 36 },
|
|
{ value: 28 },
|
|
];
|
|
break;
|
|
case "1w":
|
|
newData = [
|
|
{ value: 8 },
|
|
{ value: 14 },
|
|
{ value: 8 },
|
|
{ value: 38 },
|
|
{ value: 14 },
|
|
{ value: 28 },
|
|
{ value: 4 },
|
|
];
|
|
break;
|
|
case "1m":
|
|
newData = [
|
|
{ value: 10 },
|
|
{ value: 20 },
|
|
{ value: 30 },
|
|
{ value: 40 },
|
|
{ value: 50 },
|
|
{ value: 60 },
|
|
];
|
|
break;
|
|
case "1y":
|
|
newData = [
|
|
{ value: 15 },
|
|
{ value: 25 },
|
|
{ value: 35 },
|
|
{ value: 45 },
|
|
{ value: 55 },
|
|
{ value: 65 },
|
|
];
|
|
break;
|
|
case "All":
|
|
newData = [
|
|
{ value: 5 },
|
|
{ value: 15 },
|
|
{ value: 25 },
|
|
{ value: 35 },
|
|
{ value: 45 },
|
|
{ value: 55 },
|
|
];
|
|
break;
|
|
default:
|
|
newData = [];
|
|
}
|
|
setLineData(newData);
|
|
};
|
|
|
|
return (
|
|
<View className="bg-gray-200 rounded-2xl p-1 h-full">
|
|
<View className=" m-2 flex-row justify-center rounded-2xl bg-white">
|
|
{months.map((item, index) => {
|
|
return (
|
|
<TouchableOpacity
|
|
key={item}
|
|
className={`w-16 h-10 flex items-center justify-center rounded-xl ${
|
|
dateSelected === item
|
|
? "bg-orange-500 border-2 border-orange-300"
|
|
: "bg-transparent "
|
|
}`}
|
|
onPress={() => changeMonthSelected(index)}
|
|
>
|
|
<Text className="font-extrabold">{months[index]}</Text>
|
|
</TouchableOpacity>
|
|
);
|
|
})}
|
|
</View>
|
|
<LineChart
|
|
scrollRef={ref}
|
|
data={lineData}
|
|
areaChart
|
|
curved
|
|
initialSpacing={0}
|
|
rotateLabel
|
|
isAnimated={true}
|
|
startFillColor="orange"
|
|
curveType={CurveType.QUADRATIC}
|
|
/>
|
|
</View>
|
|
);
|
|
}
|