fix device uptime

This commit is contained in:
Hristo Nedelkov 2023-10-04 11:57:25 +03:00
parent b8dd036712
commit 710dadc861
2 changed files with 160 additions and 134 deletions

View File

@ -96,7 +96,7 @@ const DeviceUptime = () => {
height: '100%',
}}
>
<UptimeChart startMonth={startMonth} endMonth={endMonth} monthlyActivity={[0, 10, 30, 40, 50, 10, 70, 10,60, 30, 10, 0, 0]} />
<UptimeChart startMonth={startMonth} endMonth={endMonth} monthlyActivity={[10, 1, 3, 4, 5, 1, 7, 1,6, 3, 1, 9]} />
</Stack>
</XStack>
</YStack>

View File

@ -2,175 +2,176 @@
const data: DataItem[] = [
{
name: 'Jan',
'one': 1,
'two': 1,
'three': 1,
'four': 1,
'five': 1,
'six': 1,
'seven': 1,
'eight': 1,
'nine': 1,
'ten': 1,
'twenty': 1,
'thirty': 1,
'forty': 1,
'fifty': 1,
'sixty': 1,
'seventy': 1,
'eighty': 1,
'ninety': 1,
'hundred': 1,
},
{
name: 'Feb',
'one': 1,
'two': 1,
'three': 1,
'four': 1,
'five': 1,
'six': 1,
'seven': 1,
'eight': 1,
'nine': 1,
'ten': 1,
'twenty': 1,
'thirty': 1,
'forty': 1,
'fifty': 1,
'sixty': 1,
'seventy': 1,
'eighty': 1,
'ninety': 1,
'hundred': 1,
},
{
name: 'Mar',
'one': 1,
'two': 1,
'three': 1,
'four': 1,
'five': 1,
'six': 1,
'seven': 1,
'eight': 1,
'nine': 1,
'ten': 1,
'twenty': 1,
'thirty': 1,
'forty': 1,
'fifty': 1,
'sixty': 1,
'seventy': 1,
'eighty': 1,
'ninety': 1,
'hundred': 1,
},
{
name: 'Apr',
'one': 1,
'two': 1,
'three': 1,
'four': 1,
'five': 1,
'six': 1,
'seven': 1,
'eight': 1,
'nine': 1,
'ten': 1,
'twenty': 1,
'thirty': 1,
'forty': 1,
'fifty': 1,
'sixty': 1,
'seventy': 1,
'eighty': 1,
'ninety': 1,
'hundred': 1,
},
{
name: 'May',
'one': 1,
'two': 1,
'three': 1,
'four': 1,
'five': 1,
'six': 1,
'seven': 1,
'eight': 1,
'nine': 1,
'ten': 1,
'twenty': 1,
'thirty': 1,
'forty': 1,
'fifty': 1,
'sixty': 1,
'seventy': 1,
'eighty': 1,
'ninety': 1,
'hundred': 1,
},
{
name: 'Aug',
'ten': 1,
'twenty': 1,
'thirty': 1,
'forty': 1,
'fifty': 1,
'sixty': 1,
'seventy': 1,
'eighty': 1,
'ninety': 1,
'hundred': 1,
},
{
name: 'Jun',
'one': 1,
'two': 1,
'three': 1,
'four': 1,
'five': 1,
'six': 1,
'seven': 1,
'eight': 1,
'nine': 1,
'ten': 1,
'twenty': 1,
'thirty': 1,
'forty': 1,
'fifty': 1,
'sixty': 1,
'seventy': 1,
'eighty': 1,
'ninety': 1,
'hundred': 1,
},
{
name: 'Jul',
'one': 1,
'two': 1,
'three': 1,
'four': 1,
'five': 1,
'six': 1,
'seven': 1,
'eight': 1,
'nine': 1,
'ten': 1,
},
{
name: 'Aug',
'one': 1,
'two': 1,
'three': 1,
'four': 1,
'five': 1,
'six': 1,
'seven': 1,
'eight': 1,
'nine': 1,
'ten': 1,
'twenty': 1,
'thirty': 1,
'forty': 1,
'fifty': 1,
'sixty': 1,
'seventy': 1,
'eighty': 1,
'ninety': 1,
'hundred': 1,
},
{
name: 'Sep',
'one': 1,
'two': 1,
'three': 1,
'four': 1,
'five': 1,
'six': 1,
'seven': 1,
'eight': 1,
'nine': 1,
'ten': 1,
'twenty': 1,
'thirty': 1,
'forty': 1,
'fifty': 1,
'sixty': 1,
'seventy': 1,
'eighty': 1,
'ninety': 1,
'hundred': 1,
},
{
name: 'Oct',
'one': 1,
'two': 1,
'three': 1,
'four': 1,
'five': 1,
'six': 1,
'seven': 1,
'eight': 1,
'nine': 1,
'ten': 1,
'twenty': 1,
'thirty': 1,
'forty': 1,
'fifty': 1,
'sixty': 1,
'seventy': 1,
'eighty': 1,
'ninety': 1,
'hundred': 1,
},
{
name: 'Nov',
'one': 1,
'two': 1,
'three': 1,
'four': 1,
'five': 1,
'six': 1,
'seven': 1,
'eight': 1,
'nine': 1,
'ten': 1,
'twenty': 1,
'thirty': 1,
'forty': 1,
'fifty': 1,
'sixty': 1,
'seventy': 1,
'eighty': 1,
'ninety': 1,
'hundred': 1,
},
{
name: 'Dec',
'one': 0,
'two': 0,
'three': 0,
'four': 0,
'five': 0,
'six': 0,
'seven': 0,
'eight': 0,
'nine': 0,
'ten': 0,
'twenty': 0,
'thirty': 0,
'forty': 0,
'fifty': 0,
'sixty': 0,
'seventy': 0,
'eighty': 0,
'ninety': 0,
'hundred': 0,
},
]
import { BarChart, Bar, ResponsiveContainer, XAxis } from 'recharts';
type DataItem = {
name: string;
one: number;
two: number;
three: number;
four: number;
five: number;
six: number;
seven: number;
eight: number;
nine: number;
ten: number;
twenty: number;
thirty: number;
forty: number;
fifty: number;
sixty: number;
seventy: number;
eighty: number;
ninety: number;
hundred: number;
};
type UptimeChartProps = {
@ -179,25 +180,50 @@ type UptimeChartProps = {
endMonth: number;
};
const UptimeChart = ({ monthlyActivity, startMonth, endMonth }: UptimeChartProps) => {
// Transform the data array to have multiple entries for each month
const updateMonthlyValues = (data:any, monthlyActivity:any) => {
if (!Array.isArray(monthlyActivity) || monthlyActivity.length !== 12) {
console.error("monthlyActivity should be an array with 12 values");
return;
}
const keys = ['one', 'two', 'three', 'four', 'five', 'six', 'seven', 'eight', 'nine', 'ten'];
for (let i = 0; i < data.length; i++) {
const month = data[i];
const activity = monthlyActivity[i];
for (let j = 0; j < keys.length; j++) {
if (j < activity) {
month[keys[j]] = 1;
} else {
month[keys[j]] = 0;
}
}
}
return data;
}
const UptimeChart = ({ monthlyActivity, startMonth, endMonth }: UptimeChartProps) => {
const updatedData = updateMonthlyValues(data, monthlyActivity);
console.log(updatedData)
const filteredData = data.slice(startMonth, endMonth + 1);
filteredData
return (
<ResponsiveContainer>
<BarChart data={filteredData} style={{ backgroundColor: '#F0F2F5' }}>
<Bar dataKey="one" barSize={10} fill="#E95460" />
<Bar dataKey="two" barSize={10} fill="#E95460" />
<Bar dataKey="three" barSize={10} fill="#E95460" />
<Bar dataKey="four" barSize={10} fill="#E95460" />
<Bar dataKey="five" barSize={10} fill="#E95460" />
<Bar dataKey="six" barSize={10} fill="#E95460" />
<Bar dataKey="seven" barSize={10} fill="#E95460" />
<Bar dataKey="eight" barSize={10} fill="#E95460" />
<Bar dataKey="nine" barSize={10} fill="#E95460" />
<Bar dataKey="ten" barSize={10} fill="#E95460" />
<Bar dataKey="twenty" barSize={10} fill="#E95460" />
<Bar dataKey="thirty" barSize={10} fill="#E95460" />
<Bar dataKey="forty" barSize={10} fill="#E95460" />
<Bar dataKey="fifty" barSize={10} fill="#E95460" />
<Bar dataKey="sixty" barSize={10} fill="#E95460" />
<Bar dataKey="seventy" barSize={10} fill="#E95460" />
<Bar dataKey="eighty" barSize={10} fill="#E95460" />
<Bar dataKey="ninety" barSize={10} fill="#E95460" />
<Bar dataKey="hundred" barSize={10} fill="#E95460" />
<XAxis dataKey="name" fontSize={'10px'} tickMargin={10} />
</BarChart>
</ResponsiveContainer>