Commit ae48710d5961176a266db8a77e2d2ce44be384a1
1 parent
2822dbd5
Exists in
master
and in
2 other branches
create method to capture most used tags in a category and modified tag chart to …
…replace tag chart if it exists
Showing
3 changed files
with
38 additions
and
4 deletions
Show diff stats
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 | ... | ... |