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 = () => {
  • + + Beheer
  • -
  • +
  • {/*