Skip to content

Commit adb7beb

Browse files
authored
Merge pull request #510 from Yavuzlar/509-activity-calendar-bugs
Activity Calendar uptaded.
2 parents 29b735d + 0747b2c commit adb7beb

File tree

4 files changed

+98
-35
lines changed

4 files changed

+98
-35
lines changed

frontend/public/locales/en/common.json

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -196,5 +196,15 @@
196196
"Nov",
197197
"Dec"
198198
],
199-
"admin_activity_calendar_total_count": "{{count}} activite on {{year}}"
199+
"admin_activity_calendar_weekdays": [
200+
"Mon",
201+
"Tue",
202+
"Wed",
203+
"Thu",
204+
"Fri",
205+
"Sat",
206+
"Sun"
207+
],
208+
"admin_activity_calendar_total_count": "{{count}} activite on {{year}}",
209+
"admin_activity_calendar_no_activity": "No activity"
200210
}

frontend/public/locales/tr/common.json

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -198,5 +198,15 @@
198198
"Kas",
199199
"Ara"
200200
],
201-
"admin_activity_calendar_total_count": "{{year}} yılında {{count}} aktivite"
202-
}
201+
"admin_activity_calendar_weekdays": [
202+
"Pzt",
203+
"Sal",
204+
"Çar",
205+
"Per",
206+
"Cum",
207+
"Cmt",
208+
"Paz"
209+
],
210+
"admin_activity_calendar_total_count": "{{year}} yılında {{count}} aktivite",
211+
"admin_activity_calendar_no_activity": "Aktivite yok"
212+
}

frontend/src/components/cards/Activity.js

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,6 @@ import {
1010
useMediaQuery,
1111
} from "@mui/material";
1212
import ActivityStatisticComponent from "../statistics/ActivityStatisticComponent";
13-
// import { data } from "../../data/activityDataExample";
1413
import { useEffect, useState } from "react";
1514
import styled from "@emotion/styled";
1615
import Translations from "../Translations";
@@ -51,8 +50,6 @@ const Activity = () => {
5150
(_, i) => 2024 + i
5251
).reverse();
5352

54-
// const years = [2024, 2023, 2022, 2021, 2020];
55-
5653
return (
5754
<Box
5855
sx={{
@@ -126,7 +123,10 @@ const Activity = () => {
126123
}}
127124
>
128125
{Array.isArray(data) && data.length !== 0 ? (
129-
<ActivityStatisticComponent activityData={data} />
126+
<ActivityStatisticComponent
127+
activityData={data}
128+
selectedYear={year}
129+
/>
130130
) : (
131131
<Typography>
132132
<Translations text="admin_activity_calendar_no_data_error" />

frontend/src/components/statistics/ActivityStatisticComponent.js

Lines changed: 71 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -1,66 +1,109 @@
1-
import React from "react";
1+
import React, { useState, useEffect } from "react";
22
import ActivityCalendar from "react-activity-calendar";
33
import { Tooltip } from "@mui/material";
44
import { useTranslation } from "react-i18next";
55

6-
const ActivityStatisticComponent = ({ activityData }) => {
6+
const ActivityStatisticComponent = (props) => {
7+
const { activityData, selectedYear } = props;
78
const { t } = useTranslation();
89

9-
const formattedData = activityData.map((item) => ({
10-
date: new Date(item.date).toISOString().split("T")[0], // YYYY-MM-DD formatı
11-
count: parseInt(item.count, 10),
12-
level: item.level,
13-
}));
10+
const getLocalizedLabels = () => {
11+
const weekdays = t("admin_activity_calendar_weekdays", {
12+
returnObjects: true,
13+
defaultValue: ["Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun"],
14+
});
15+
16+
const months = t("admin_activity_calendar_months", {
17+
returnObjects: true,
18+
defaultValue: [
19+
"Jan",
20+
"Feb",
21+
"Mar",
22+
"Apr",
23+
"May",
24+
"Jun",
25+
"Jul",
26+
"Aug",
27+
"Sep",
28+
"Oct",
29+
"Nov",
30+
"Dec",
31+
],
32+
});
33+
34+
return { weekdays, months };
35+
};
36+
37+
const { weekdays, months } = getLocalizedLabels();
38+
39+
const generateYearData = (year, data) => {
40+
const dates = new Map(
41+
data.map((item) => [item.date, { count: item.count, level: item.level }])
42+
);
43+
44+
const yearData = [];
45+
const startDate = new Date(`${year}-01-01`);
46+
const endDate = new Date(`${year}-12-31`);
47+
48+
let currentDate = new Date(startDate);
49+
50+
while (currentDate <= endDate) {
51+
const formattedDate = currentDate.toISOString().split("T")[0];
52+
yearData.push({
53+
date: formattedDate,
54+
count: dates.get(formattedDate)?.count || 0,
55+
level: dates.get(formattedDate)?.level || 0,
56+
});
57+
currentDate.setDate(currentDate.getDate() + 1);
58+
}
59+
60+
return yearData;
61+
};
62+
63+
const formattedData = generateYearData(
64+
selectedYear,
65+
activityData.map((item) => ({
66+
date: new Date(item.date).toISOString().split("T")[0],
67+
count: parseInt(item.count, 10),
68+
level: item.level,
69+
}))
70+
);
1471

1572
return (
1673
<ActivityCalendar
1774
data={formattedData}
1875
blockRadius={4}
1976
blockSize={16}
77+
showWeekdayLabels={true}
2078
theme={{
2179
dark: ["#DAF0FE", "#99D1F2", "#53B2F0", "#1E86E5", "#0A3B7A"],
2280
light: ["#0A3B7A", "#1561A5", "#1E86E5", "#53B2F0", "#99D1F2"],
2381
}}
2482
labels={{
2583
legend: {
2684
less: t("admin_activity_calendar_legend_less", {
27-
defaultValue: "Az",
85+
defaultValue: "Less",
2886
}),
2987
more: t("admin_activity_calendar_legend_more", {
30-
defaultValue: "Çok",
88+
defaultValue: "High",
3189
}),
3290
},
33-
months: t("admin_activity_calendar_months", {
34-
defaultValue: [
35-
"Oca",
36-
"Şub",
37-
"Mar",
38-
"Nis",
39-
"May",
40-
"Haz",
41-
"Tem",
42-
"Ağu",
43-
"Eyl",
44-
"Eki",
45-
"Kas",
46-
"Ara",
47-
],
48-
}),
91+
months,
92+
weekdays,
4993
totalCount: t("admin_activity_calendar_total_count", {
5094
defaultValue: "{{count}} katkı {{year}} yılında",
5195
}),
52-
showWeekdayLabels: false,
5396
}}
5497
renderBlock={(block, activity) => (
5598
<Tooltip
5699
title={
57-
activity
100+
activity && activity.count > 0
58101
? t("admin_activity_calendar_logs_tooltip", {
59102
count: activity.count,
60103
date: activity.date,
61104
})
62105
: t("admin_activity_calendar_no_activity", {
63-
defaultValue: "Etkinlik Yok",
106+
defaultValue: "No Activity",
64107
})
65108
}
66109
>

0 commit comments

Comments
 (0)