diff --git a/analytics/static/.sass-cache/01cecb7b42e56765f6ed49ed3c70281ebdc742c7/general.sassc b/analytics/static/.sass-cache/01cecb7b42e56765f6ed49ed3c70281ebdc742c7/general.sassc index 9b40762..42a2eca 100644 Binary files a/analytics/static/.sass-cache/01cecb7b42e56765f6ed49ed3c70281ebdc742c7/general.sassc and b/analytics/static/.sass-cache/01cecb7b42e56765f6ed49ed3c70281ebdc742c7/general.sassc differ diff --git a/analytics/static/analytics/general.css b/analytics/static/analytics/general.css index 4456ea1..149b710 100644 --- a/analytics/static/analytics/general.css +++ b/analytics/static/analytics/general.css @@ -57,10 +57,10 @@ .chart { width: 30%; - float: left; - text-align: center; } + float: left; } .chart h4 { - color: #009688; } + color: #009688; + text-align: center; } .selector { width: 90%; diff --git a/analytics/static/analytics/general.css.map b/analytics/static/analytics/general.css.map index ef99144..159e1e2 100644 --- a/analytics/static/analytics/general.css.map +++ b/analytics/static/analytics/general.css.map @@ -1,6 +1,6 @@ { "version": 3, -"mappings": "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", +"mappings": "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", "sources": ["general.sass"], "names": [], "file": "general.css" diff --git a/analytics/static/analytics/general.sass b/analytics/static/analytics/general.sass index ccab653..f544d89 100644 --- a/analytics/static/analytics/general.sass +++ b/analytics/static/analytics/general.sass @@ -74,9 +74,10 @@ $title-color: #009688 .chart width: 30% float: left - text-align: center + h4 color: $title-color + text-align: center .selector width: 90% diff --git a/analytics/static/analytics/js/behavior.js b/analytics/static/analytics/js/behavior.js index 3e1e716..86d3d3b 100644 --- a/analytics/static/analytics/js/behavior.js +++ b/analytics/static/analytics/js/behavior.js @@ -8,7 +8,7 @@ $(document).ready(function(){ $('#month_selector').change(function(){ $.get('/analytics/amount_active_users_per_day', {month: $(this).val() }).done(function(data){ - charts.month_heatmap(data); + charts.month_heatmap(data, '#right-chart-body'); }); }); @@ -17,7 +17,10 @@ $(document).ready(function(){ format: 'L', defaultDate: new Date(), }).on('dp.change', function(ev){ - console.log(ev.date._i); + $.get('/analytics/get_days_of_the_week_log', {date: ev.date._i}).done(function(data){ + charts.month_heatmap(data, '#bottom-right-chart-body'); + }); + }); diff --git a/analytics/static/analytics/js/charts.js b/analytics/static/analytics/js/charts.js index a9e4dda..0cc4ba0 100644 --- a/analytics/static/analytics/js/charts.js +++ b/analytics/static/analytics/js/charts.js @@ -436,16 +436,30 @@ var charts = { }); }, - month_heatmap: function(data){ + month_heatmap: function(data, target){ - if($('#month-chart').length != 0){ + + if(target == '#right-chart-body' && $('#month-chart').length != 0){ $('#month-chart').fadeOut(); $('#month-chart').remove(); } - var svg = d3.select('#right-chart-body').append('svg') + + if(target == "#bottom-right-chart-body" && $('#weekly-chart').length != 0){ + $('#weekly-chart').fadeOut(); + $('#weekly-chart').remove(); + } + + var svg = d3.select(target).append('svg') .attr('width', 300) - .attr('height', 200) - .attr('id', 'month-chart'); + .attr('height', 200); + + if (target == "#right-chart-body"){ + svg.attr('id', 'month-chart'); + } + + if (target == "#bottom-right-chart-body"){ + svg.attr('id', 'weekly-chart'); + } //color range var color = d3.scaleLinear().range(["#29c8b8", '#149e91']).domain([0, d3.max(data, function(d){ return d.count; })]); @@ -460,12 +474,12 @@ var charts = { .attr("width", rect_width) .attr("height", rect_height) .attr("class", "day_rect") - .attr("x", function(d){ + .attr("x", function(d, i){ - return rect_width* (d.day % 7); - }).attr("y", function(d){ - return rect_height*(Math.floor(d.day / 7)); - }).attr("fill", function(d){ + return rect_width* (i % 7); + }).attr("y", function(d, i){ + return rect_height*(Math.floor(i / 7)); + }).attr("fill", function(d, i ){ return color(d.count); }); @@ -474,10 +488,10 @@ var charts = { return d.day; }).attr("fill", "white") .attr("text-anchor", "middle") - .attr("x", function(d){ - return rect_width* (d.day % 7) + rect_width/2; - }).attr("y", function(d){ - return rect_height*(Math.floor(d.day / 7)) + rect_height/2; + .attr("x", function(d, i){ + return rect_width* ( i % 7) + rect_width/2; + }).attr("y", function(d, i){ + return rect_height*(Math.floor( i / 7)) + rect_height/2; }); } diff --git a/analytics/templates/analytics/general.html b/analytics/templates/analytics/general.html index 8117537..8454aa4 100644 --- a/analytics/templates/analytics/general.html +++ b/analytics/templates/analytics/general.html @@ -117,7 +117,9 @@ - +
+ +
diff --git a/analytics/urls.py b/analytics/urls.py index 83ecdba..58a968a 100644 --- a/analytics/urls.py +++ b/analytics/urls.py @@ -11,5 +11,6 @@ urlpatterns = [ url(r'^most_accessed_categories/$', views.most_accessed_categories, name = "most_accessed_categories"), url(r'^most_accessed_resources/$', views.most_accessed_resource_kind, name= "most_accessed_resources"), url(r'^most_active_users/$', views.most_active_users, name= "most_active_users"), - url(r'^amount_active_users_per_day/$', views.most_active_users_in_a_month, name="most_active_users_in_a_month") + url(r'^amount_active_users_per_day/$', views.most_active_users_in_a_month, name="most_active_users_in_a_month"), + url(r'^get_days_of_the_week_log/$', views.get_days_of_the_week_log, name="get_days_of_the_week_log"), ] \ No newline at end of file diff --git a/analytics/views.py b/analytics/views.py index 3719aff..98411a5 100644 --- a/analytics/views.py +++ b/analytics/views.py @@ -13,8 +13,9 @@ import operator from django.utils.translation import ugettext_lazy as _ from django.shortcuts import render, get_object_or_404, redirect -from datetime import date +from datetime import date, timedelta, datetime import calendar +from collections import OrderedDict class GeneralView(generic.TemplateView): @@ -71,7 +72,6 @@ def most_active_users_in_a_month(request): for day in days: built_date = date(date.today().year, mappings[params['month']], day) - print(built_date) day_count = Log.objects.filter(datetime__date = built_date).count() data[day] = day_count @@ -159,6 +159,8 @@ def most_active_users(request): return JsonResponse(fifty_users, safe=False) + + def get_days_of_the_month(month): #get current year @@ -176,7 +178,24 @@ def get_days_of_the_month(month): return days_set + +def get_days_of_the_week_log(request): + date = request.GET['date'] + date = datetime.strptime( date, '%m/%d/%Y',) + days = get_days_of_the_week(date) + data = {} + + for day in days: + day_count = Log.objects.filter(datetime__date = day).count() + data[day] = day_count + data = [{"day": day.day, "count": day_count} for day, day_count in data.items()] + + return JsonResponse(data, safe= False) + def get_days_of_the_week(date): - days_set = set() + days_set = [] + days_set.append(date) + for j in range(1, 7): + days_set.append(date + timedelta(days=j)) return days_set \ No newline at end of file -- libgit2 0.21.2