Commit ae48710d5961176a266db8a77e2d2ce44be384a1

Authored by Felipe Bormann
1 parent 2822dbd5

create method to capture most used tags in a category and modified tag chart to …

…replace tag chart if it exists
analytics/static/analytics/js/charts.js
... ... @@ -352,7 +352,12 @@ var charts = {
352 352  
353 353  
354 354 var container_div = d3.select("#most-used-tags-body");
  355 + if($('#most_used_tag_chart').length > 0){
  356 + $('#most_used_tag_chart').remove();
  357 + }
  358 +
355 359 var svg = container_div.append("svg").attr("width", "100%").attr("height", height)
  360 + .attr("id", "most_used_tag_chart")
356 361 .style("margin","auto")
357 362 .style("display","block")
358 363 .style("background","#ddf8e7")
... ... @@ -505,8 +510,6 @@ var charts = {
505 510  
506 511  
507 512 $(document).ready(function(){
508   - charts.most_used_tags('/analytics/most_used_tags');
509   - //charts.build_resource('/topics/count_resources/');
510   - charts.build_bubble_user('/analytics/most_active_users/');
  513 +
511 514 //charts.most_accessed_subjects('/subjects/most_accessed_subjects');
512 515 });
... ...
analytics/urls.py
... ... @@ -12,4 +12,5 @@ urlpatterns = [
12 12 url(r'^most_active_users/$', views.most_active_users, name= "most_active_users"),
13 13 url(r'^amount_active_users_per_day/$', views.most_active_users_in_a_month, name="most_active_users_in_a_month"),
14 14 url(r'^get_days_of_the_week_log/$', views.get_days_of_the_week_log, name="get_days_of_the_week_log"),
  15 + url(r'^get_category_tags/$', views.category_tags, name='get_category_tags'),
15 16 ]
16 17 \ No newline at end of file
... ...
analytics/views.py
... ... @@ -5,7 +5,7 @@ from django.db.models import Count
5 5 from django.core.urlresolvers import reverse_lazy
6 6  
7 7 from subjects.models import Tag, Subject
8   -from topics.models import Resource
  8 +from topics.models import Resource, Topic
9 9 from users.models import User
10 10 from django.http import HttpResponse, JsonResponse
11 11 from log.models import Log
... ... @@ -193,3 +193,33 @@ def get_days_of_the_week(date):
193 193 return days_set
194 194  
195 195  
  196 +
  197 +def category_tags(request):
  198 + category_id = request.GET['category_id']
  199 + data = most_tags_inside_category(category_id)
  200 + data = sorted(data.values(), key = lambda x: x['count'], reverse=True )
  201 + data = data[:15] #get top 15 tags
  202 + return JsonResponse(data, safe=False)
  203 +
  204 +def most_tags_inside_category(category_id):
  205 + tags = Tag.objects.all()
  206 + data = {}
  207 + #grab all references to that tag
  208 + for tag in tags:
  209 + subjects_count = Subject.objects.filter(tags = tag, category__id = category_id).count()
  210 + if subjects_count > 0:
  211 + data[tag.name] = {'name': tag.name}
  212 + data[tag.name]['count'] = subjects_count
  213 +
  214 + subjects = Subject.objects.filter(category__id = category_id)
  215 + topics = Topic.objects.filter(subject__in= subjects)
  216 + if topics.count() > 0 :
  217 + resources_count = Resource.objects.filter(tags = tag, topic__in = topics).count()
  218 +
  219 + if resources_count > 0:
  220 + if data.get(tag.name):
  221 + data[tag.name]['count'] = data[tag.name]['count'] + resources_count
  222 + else:
  223 + data[tag.name] = {'name': tag.name}
  224 + data[tag.name]['count'] = resources_count
  225 + return data
196 226 \ No newline at end of file
... ...