diff --git a/.DS_Store b/.DS_Store
index fbaa466..e8ce440 100644
Binary files a/.DS_Store and b/.DS_Store differ
diff --git a/ras/.DS_Store b/ras/.DS_Store
index 7115c3c..9819d4a 100644
Binary files a/ras/.DS_Store and b/ras/.DS_Store differ
diff --git a/ras/api/.DS_Store b/ras/api/.DS_Store
index 0153c73..ea481db 100644
Binary files a/ras/api/.DS_Store and b/ras/api/.DS_Store differ
diff --git a/ras/api/modules/challenges.py b/ras/api/modules/challenges.py
index 2e6b415..b6ee856 100644
--- a/ras/api/modules/challenges.py
+++ b/ras/api/modules/challenges.py
@@ -15,20 +15,14 @@ def getAllChallenges(request):
isLoggedIn = isAuthorized(request.headers.get('Authorization'));
if(isLoggedIn):
- data = []
df = getBookChallenge(request.headers.get('userid'))
- for index, row in df.iterrows():
- books = filterData(getBooksData(request.headers.get('userid')), str(row['year']))
- books = books.dropna()
- totalBooksRead = books['name'].count()
-
- data.append({
- "id": row['id'],
- "year": row['year'],
- "nrofbooks": row['nrofbooks'],
- "booksread": totalBooksRead
- })
+ data = df.apply(lambda row: {
+ "id": row['id'],
+ "year": row['year'],
+ "nrofbooks": row['nrofbooks'],
+ "booksread": filterData(getBooksData(request.headers.get('userid')), str(row['year'])).dropna()['name'].count()
+ }, axis=1).tolist()
return Response(data)
else:
@@ -43,15 +37,8 @@ def getChallengeOfYear(request):
if(isLoggedIn):
if request.META.get('HTTP_YEAR'):
- data = []
df = getBookChallenge(request.headers.get('userid'), request.META.get('HTTP_YEAR'))
-
- for index, row in df.iterrows():
- data.append({
- "year": row['year'],
- "nrofbooks": row['nrofbooks']
- })
-
+ data = df.apply(lambda row: {'year': row['year'], 'nrofbooks': row['nrofbooks']}, axis=1).tolist()
return Response(data)
else:
return JsonResponse({'error': 'No year header included'}, safe=False)
diff --git a/ras/api/modules/crud.py b/ras/api/modules/crud.py
index 4f56abb..512caab 100644
--- a/ras/api/modules/crud.py
+++ b/ras/api/modules/crud.py
@@ -23,18 +23,16 @@ def getAllBooks(request):
if(isLoggedIn):
books = getBooksData(request.headers.get('userid'))
- data = []
-
- for index, row in books.iterrows():
- data.append({
- "id": row['id'],
- "name": row['name'],
- "author": row['author'],
- "genre": row['genre'],
- "readed": row['readed'],
- "rating": row['rating'],
- })
-
+
+ data = books.apply(lambda row: {
+ "id": row['id'],
+ "name": row['name'],
+ "author": row['author'],
+ "genre": row['genre'],
+ "readed": row['readed'],
+ "rating": row['rating']
+ }, axis=1).tolist()
+
return Response(data)
else:
return JsonResponse({'error': 'No user detected'}, safe=False)
diff --git a/ras/api/modules/pandas.py b/ras/api/modules/pandas.py
index 613142e..adaeb59 100644
--- a/ras/api/modules/pandas.py
+++ b/ras/api/modules/pandas.py
@@ -37,18 +37,16 @@ def books_per_genre_per_month(request):
if(isLoggedIn):
if request.META.get('HTTP_YEAR'):
- data = []
df = filterData(getBooksData(request.headers.get('userid')), request.META.get('HTTP_YEAR'))
booksPerMonth = df.groupby(['genre','readed'])['genre'].count().reset_index(name="count")
booksPerMonth = booksPerMonth.sort_values(by=['genre', 'readed', 'count'], ascending=False)
-
- for index, row in booksPerMonth.iterrows():
- data.append({
- "genre": row['genre'],
- "readed": row['readed'],
- "count": row['count']
- })
+ data = booksPerMonth.apply(lambda row: {
+ 'genre': row['genre'],
+ 'readed': row['readed'],
+ 'count': row['count']
+ }, axis=1).tolist()
+
return Response(data)
else:
return JsonResponse({'error': 'No year in header'}, safe=False)
@@ -68,19 +66,15 @@ def countGenres(request):
if(isLoggedIn):
if request.META.get('HTTP_YEAR'):
-
- data = []
df = filterData(getBooksData(request.headers.get('userid')), request.META.get('HTTP_YEAR'))
-
genres = df.groupby('genre')['genre'].count().reset_index(name="count")
genres = genres.sort_values(by='count', ascending=False)
-
- for index, row in genres.iterrows():
- data.append({
- "genre": row['genre'],
- "count": int(row['count'])
- })
-
+
+ data = genres.apply(lambda row: {
+ 'genre': row['genre'],
+ 'count': int(row['count'])
+ }, axis=1).tolist()
+
return Response(data)
else:
return JsonResponse({'error': 'No year in header'}, safe=False)
@@ -132,16 +126,14 @@ def avg_ratings_per_month(request):
if(isLoggedIn):
if request.META.get('HTTP_YEAR'):
- data = []
df = filterData(getBooksData(request.headers.get('userid')), request.META.get('HTTP_YEAR'))
avgratingspermonth = df.groupby('readed')['rating'].mean().reset_index(name="rating")
-
- for index, row in avgratingspermonth.iterrows():
- data.append({
- "date": row['readed'],
- "rating": int(row['rating'])
- })
-
+
+ data = avgratingspermonth.apply(lambda row: {
+ 'date': row['readed'],
+ 'rating': int(row['rating'])
+ }, axis=1).tolist()
+
return Response(data)
else:
return JsonResponse({'error': 'No year in header'}, safe=False)
@@ -162,17 +154,15 @@ def countRatings(request):
if(isLoggedIn):
if request.META.get('HTTP_YEAR'):
- data = []
df = filterData(getBooksData(request.headers.get('userid')), request.META.get('HTTP_YEAR'))
countratings = df.groupby('rating')['rating'].count().reset_index(name="count")
countratings = countratings.sort_values(by='rating', ascending=False)
-
- for index, row in countratings.iterrows():
- data.append({
- "rating": int(row['rating']),
- "count": int(row['count'])
- })
-
+
+ data = countratings.apply(lambda row: {
+ 'rating': int(row['rating']),
+ 'count': int(row['count'])
+ }, axis=1).tolist()
+
return Response(data)
else:
return JsonResponse({'error': 'No year in header'}, safe=False)
diff --git a/ras/frontend/.DS_Store b/ras/frontend/.DS_Store
index 12a8424..92c6bec 100644
Binary files a/ras/frontend/.DS_Store and b/ras/frontend/.DS_Store differ
diff --git a/ras/frontend/src/Functions.js b/ras/frontend/src/Functions.js
index ffa5fa6..b6b98c9 100644
--- a/ras/frontend/src/Functions.js
+++ b/ras/frontend/src/Functions.js
@@ -16,13 +16,18 @@ export const initDataTable = () => {
table.destroy();
setTimeout(() => {
table = new DataTable('#DataTable', {
+ columnDefs: [
+ { width: '20%', targets: "_all" }
+ ],
+ fixedColumns: true,
language: {
url: 'https://cdn.datatables.net/plug-ins/9dcbecd42ad/i18n/Dutch.json',
search: "",
searchPlaceholder: "Zoeken"
},
dom: 'rt<"bottom"pl><"clear">',
- order: []
+ order: [],
+ "autoWidth": true
});
}, 300)
}
\ No newline at end of file
diff --git a/ras/frontend/src/components/Sidebar.js b/ras/frontend/src/components/Sidebar.js
index 597b0c9..8c7c999 100644
--- a/ras/frontend/src/components/Sidebar.js
+++ b/ras/frontend/src/components/Sidebar.js
@@ -15,13 +15,15 @@ const Sidebar = () => {