diff --git a/analytics/static/analytics/js/charts.js b/analytics/static/analytics/js/charts.js index 2eb47d3..34e3054 100644 --- a/analytics/static/analytics/js/charts.js +++ b/analytics/static/analytics/js/charts.js @@ -352,7 +352,12 @@ var charts = { var container_div = d3.select("#most-used-tags-body"); + if($('#most_used_tag_chart').length > 0){ + $('#most_used_tag_chart').remove(); + } + var svg = container_div.append("svg").attr("width", "100%").attr("height", height) + .attr("id", "most_used_tag_chart") .style("margin","auto") .style("display","block") .style("background","#ddf8e7") @@ -505,8 +510,6 @@ var charts = { $(document).ready(function(){ - charts.most_used_tags('/analytics/most_used_tags'); - //charts.build_resource('/topics/count_resources/'); - charts.build_bubble_user('/analytics/most_active_users/'); + //charts.most_accessed_subjects('/subjects/most_accessed_subjects'); }); diff --git a/analytics/urls.py b/analytics/urls.py index 4d3067c..c43835c 100644 --- a/analytics/urls.py +++ b/analytics/urls.py @@ -12,4 +12,5 @@ urlpatterns = [ 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'^get_days_of_the_week_log/$', views.get_days_of_the_week_log, name="get_days_of_the_week_log"), + url(r'^get_category_tags/$', views.category_tags, name='get_category_tags'), ] \ No newline at end of file diff --git a/analytics/views.py b/analytics/views.py index ea1cfeb..0218602 100644 --- a/analytics/views.py +++ b/analytics/views.py @@ -5,7 +5,7 @@ from django.db.models import Count from django.core.urlresolvers import reverse_lazy from subjects.models import Tag, Subject -from topics.models import Resource +from topics.models import Resource, Topic from users.models import User from django.http import HttpResponse, JsonResponse from log.models import Log @@ -193,3 +193,33 @@ def get_days_of_the_week(date): return days_set + +def category_tags(request): + category_id = request.GET['category_id'] + data = most_tags_inside_category(category_id) + data = sorted(data.values(), key = lambda x: x['count'], reverse=True ) + data = data[:15] #get top 15 tags + return JsonResponse(data, safe=False) + +def most_tags_inside_category(category_id): + tags = Tag.objects.all() + data = {} + #grab all references to that tag + for tag in tags: + subjects_count = Subject.objects.filter(tags = tag, category__id = category_id).count() + if subjects_count > 0: + data[tag.name] = {'name': tag.name} + data[tag.name]['count'] = subjects_count + + subjects = Subject.objects.filter(category__id = category_id) + topics = Topic.objects.filter(subject__in= subjects) + if topics.count() > 0 : + resources_count = Resource.objects.filter(tags = tag, topic__in = topics).count() + + if resources_count > 0: + if data.get(tag.name): + data[tag.name]['count'] = data[tag.name]['count'] + resources_count + else: + data[tag.name] = {'name': tag.name} + data[tag.name]['count'] = resources_count + return data \ No newline at end of file -- libgit2 0.21.2