Commit 9f9ec792e0621aa1ca01b242f0ed32527ad15d5b

Authored by Felipe Bormann
1 parent bf11cf83

improved tag cloud collision system as well as calculation code

analytics/static/.sass-cache/01cecb7b42e56765f6ed49ed3c70281ebdc742c7/general.sassc
No preview for this file type
analytics/static/analytics/general.css
@@ -47,8 +47,7 @@ @@ -47,8 +47,7 @@
47 color: #ffffff; } 47 color: #ffffff; }
48 48
49 .tag-name { 49 .tag-name {
50 - color: #ffffff;  
51 - font-size: 10px; } 50 + color: #ffffff; }
52 51
53 #left-data-selector { 52 #left-data-selector {
54 background: linear-gradient(#0e8999, #6bf0ce); 53 background: linear-gradient(#0e8999, #6bf0ce);
analytics/static/analytics/general.css.map
1 { 1 {
2 "version": 3, 2 "version": 3,
3 -"mappings": "AAEA,YAAY;EACR,MAAM,EAAE,iBAAiB;EACzB,aAAa,EAAE,IAAI;EACnB,OAAO,EAAE,IAAI;EACb,QAAQ,EAAE,IAAI;EACd,KAAK,EAAE,IAAI;EACX,gBAAgB,EAAE,OAAO;;AAE7B,sBAAsB;EAClB,MAAM,EAAE,GAAG;EACX,OAAO,EAAE,KAAK;EACd,yBAAE;IACE,KAAK,EAdC,OAAO;EAgBjB,yBAAE;IACE,KAAK,EAAE,KAAK;IACZ,OAAO,EAAE,WAAW;IACpB,KAAK,EAAE,GAAG;IACV,aAAa,EAAE,GAAG;IAElB,4BAAE;MACE,YAAY,EAAE,EAAE;MAChB,KAAK,EAAE,GAAG;MACV,KAAK,EAAE,KAAK;MACZ,SAAS,EAAE,IAAI;MACf,gBAAgB,EAAE,OAAO;MACzB,KAAK,EAAE,IAAI;MACX,UAAU,EAAE,MAAM;MAClB,aAAa,EAAE,IAAI;MACnB,MAAM,EAAE,IAAI;IAGhB,qCAAW;MACP,gBAAgB,EAAE,OAAO;MACzB,KAAK,EAAE,IAAI;MACX,UAAU,EAAE,MAAM;MAClB,aAAa,EAAE,IAAI;;AAM/B,sBAAsB;EAClB,UAAU,EAAE,2CAA2C;EACvD,MAAM,EAAE,IAAI;EACZ,aAAa,EAAE,IAAI;EACnB,KAAK,EAAE,OAAO;EACd,WAAW,EAAE,GAAG;EAChB,UAAU,EAAE,IAAI;EAEhB,yBAAE;IACE,WAAW,EAAE,EAAE;;AAGvB,UAAU;EACN,aAAa,EAAE,IAAI;EACnB,KAAK,EAAE,OAAO;;AAKlB,SAAS;EACL,KAAK,EAAE,OAAO;EACd,SAAS,EAAE,IAAI;;AAGnB,mBAAmB;EACf,UAAU,EAAE,iCAAmC;EAC/C,UAAU,EAAE,EAAE;EACd,WAAW,EAAE,EAAE;EACf,cAAc,EAAE,EAAE;;AAEtB,MAAM;EACF,KAAK,EAAE,GAAG;EACV,KAAK,EAAE,IAAI;EACX,SAAE;IACE,KAAK,EA9EC,OAAO;;AAgFrB,SAAS;EACL,KAAK,EAAE,GAAG;EACV,MAAM,EAAE,IAAI;EACZ,KAAK,EAAE,KAAK;EACZ,YAAY,EAAE,GAAG;EACjB,gBAAgB,EAAE,OAAO;EACzB,UAAU,EAAE,GAAG;EACf,aAAa,EAAE,iBAAiB;EAChC,WAAC;IACG,WAAW,EAAE,IAAI;IACjB,SAAS,EAAE,IAAI;;AAInB,qBAAO;EACH,UAAU,EAAE,MAAM;;AAE1B,aAAa;EACT,UAAU,EAAE,iCAAkC;EAC9C,KAAK,EAAE,KAAK;EACZ,aAAa,EAAE,IAAI;EACnB,OAAO,EAAE,GAAG;;AAEhB,mBAAmB;EACf,gBAAgB,EAAE,OAAO;EACzB,KAAK,EAAE,GAAG;EACV,WAAW,EAAE,EAAE;EACf,UAAU,EAAE,EAAE;EACd,QAAQ,EAAE,QAAQ;EAClB,YAAY,EAAE,CAAC;EACf,KAAK,EAAE,KAAK;EACZ,MAAM,EAAE,iBAAiB;EACzB,UAAU,EAAE,sDAAsD;EAElE,sBAAE;IACE,YAAY,EAAE,EAAE;;AAExB,qDAAqD;EACjD,MAAM,EAAE,IAAI;EACZ,IAAI,EAAE,GAAG;EACT,MAAM,EAAE,iBAAiB;EACzB,OAAO,EAAE,GAAG;EACZ,MAAM,EAAE,CAAC;EACT,KAAK,EAAE,CAAC;EACR,QAAQ,EAAE,QAAQ;EAClB,cAAc,EAAE,IAAI;;AAGxB,0BAA0B;EACtB,YAAY,EAAE,IAAI;EAClB,WAAW,EAAE,IAAI;EACjB,YAAY,EAAE,sBAAsB;EACpC,mBAAmB,EAAE,OAAO;;AAEhC,yBAAyB;EACrB,gBAAgB,EAAE,OAAO", 3 +"mappings": "AAEA,YAAY;EACR,MAAM,EAAE,iBAAiB;EACzB,aAAa,EAAE,IAAI;EACnB,OAAO,EAAE,IAAI;EACb,QAAQ,EAAE,IAAI;EACd,KAAK,EAAE,IAAI;EACX,gBAAgB,EAAE,OAAO;;AAE7B,sBAAsB;EAClB,MAAM,EAAE,GAAG;EACX,OAAO,EAAE,KAAK;EACd,yBAAE;IACE,KAAK,EAdC,OAAO;EAgBjB,yBAAE;IACE,KAAK,EAAE,KAAK;IACZ,OAAO,EAAE,WAAW;IACpB,KAAK,EAAE,GAAG;IACV,aAAa,EAAE,GAAG;IAElB,4BAAE;MACE,YAAY,EAAE,EAAE;MAChB,KAAK,EAAE,GAAG;MACV,KAAK,EAAE,KAAK;MACZ,SAAS,EAAE,IAAI;MACf,gBAAgB,EAAE,OAAO;MACzB,KAAK,EAAE,IAAI;MACX,UAAU,EAAE,MAAM;MAClB,aAAa,EAAE,IAAI;MACnB,MAAM,EAAE,IAAI;IAGhB,qCAAW;MACP,gBAAgB,EAAE,OAAO;MACzB,KAAK,EAAE,IAAI;MACX,UAAU,EAAE,MAAM;MAClB,aAAa,EAAE,IAAI;;AAM/B,sBAAsB;EAClB,UAAU,EAAE,2CAA2C;EACvD,MAAM,EAAE,IAAI;EACZ,aAAa,EAAE,IAAI;EACnB,KAAK,EAAE,OAAO;EACd,WAAW,EAAE,GAAG;EAChB,UAAU,EAAE,IAAI;EAEhB,yBAAE;IACE,WAAW,EAAE,EAAE;;AAGvB,UAAU;EACN,aAAa,EAAE,IAAI;EACnB,KAAK,EAAE,OAAO;;AAKlB,SAAS;EACL,KAAK,EAAE,OAAO;;AAGlB,mBAAmB;EACf,UAAU,EAAE,iCAAmC;EAC/C,UAAU,EAAE,EAAE;EACd,WAAW,EAAE,EAAE;EACf,cAAc,EAAE,EAAE;;AAEtB,MAAM;EACF,KAAK,EAAE,GAAG;EACV,KAAK,EAAE,IAAI;EACX,SAAE;IACE,KAAK,EA7EC,OAAO;;AA+ErB,SAAS;EACL,KAAK,EAAE,GAAG;EACV,MAAM,EAAE,IAAI;EACZ,KAAK,EAAE,KAAK;EACZ,YAAY,EAAE,GAAG;EACjB,gBAAgB,EAAE,OAAO;EACzB,UAAU,EAAE,GAAG;EACf,aAAa,EAAE,iBAAiB;EAChC,WAAC;IACG,WAAW,EAAE,IAAI;IACjB,SAAS,EAAE,IAAI;;AAInB,qBAAO;EACH,UAAU,EAAE,MAAM;;AAE1B,aAAa;EACT,UAAU,EAAE,iCAAkC;EAC9C,KAAK,EAAE,KAAK;EACZ,aAAa,EAAE,IAAI;EACnB,OAAO,EAAE,GAAG;;AAEhB,mBAAmB;EACf,gBAAgB,EAAE,OAAO;EACzB,KAAK,EAAE,GAAG;EACV,WAAW,EAAE,EAAE;EACf,UAAU,EAAE,EAAE;EACd,QAAQ,EAAE,QAAQ;EAClB,YAAY,EAAE,CAAC;EACf,KAAK,EAAE,KAAK;EACZ,MAAM,EAAE,iBAAiB;EACzB,UAAU,EAAE,sDAAsD;EAElE,sBAAE;IACE,YAAY,EAAE,EAAE;;AAExB,qDAAqD;EACjD,MAAM,EAAE,IAAI;EACZ,IAAI,EAAE,GAAG;EACT,MAAM,EAAE,iBAAiB;EACzB,OAAO,EAAE,GAAG;EACZ,MAAM,EAAE,CAAC;EACT,KAAK,EAAE,CAAC;EACR,QAAQ,EAAE,QAAQ;EAClB,cAAc,EAAE,IAAI;;AAGxB,0BAA0B;EACtB,YAAY,EAAE,IAAI;EAClB,WAAW,EAAE,IAAI;EACjB,YAAY,EAAE,sBAAsB;EACpC,mBAAmB,EAAE,OAAO;;AAEhC,yBAAyB;EACrB,gBAAgB,EAAE,OAAO",
4 "sources": ["general.sass"], 4 "sources": ["general.sass"],
5 "names": [], 5 "names": [],
6 "file": "general.css" 6 "file": "general.css"
analytics/static/analytics/general.sass
@@ -63,7 +63,6 @@ $title-color: #009688 @@ -63,7 +63,6 @@ $title-color: #009688
63 63
64 .tag-name 64 .tag-name
65 color: #ffffff 65 color: #ffffff
66 - font-size: 10px  
67 66
68 67
69 #left-data-selector 68 #left-data-selector
analytics/static/analytics/js/behavior.js
1 1
  2 +
  3 +
2 $(document).ready(function(){ 4 $(document).ready(function(){
3 selectors_options.init(); 5 selectors_options.init();
4 6
@@ -6,12 +8,14 @@ $(document).ready(function(){ @@ -6,12 +8,14 @@ $(document).ready(function(){
6 8
7 $('#month_selector').change(function(){ 9 $('#month_selector').change(function(){
8 $.get('/analytics/amount_active_users_per_day', {month: $(this).val() }).done(function(data){ 10 $.get('/analytics/amount_active_users_per_day', {month: $(this).val() }).done(function(data){
9 - console.log(data);  
10 charts.month_heatmap(data); 11 charts.month_heatmap(data);
11 12
12 }); 13 });
13 }); 14 });
14 15
  16 +
  17 + $('#datetimepicker1').datetimepicker();
  18 +
15 19
16 }); 20 });
17 21
analytics/static/analytics/js/charts.js
@@ -348,27 +348,7 @@ var charts = { @@ -348,27 +348,7 @@ var charts = {
348 var width = 800; 348 var width = 800;
349 var height = 300; 349 var height = 300;
350 350
351 - function min(){  
352 - minimum = 100000000000;  
353 - for(var i = 0; i < dataset.length; i++){  
354 - if (dataset[i]['count'] < min){  
355 - minimum = dataset[i]['count'];  
356 - }  
357 - }  
358 -  
359 - return minimum  
360 - }  
361 -  
362 - function max(){  
363 - maximum = 0;  
364 - for(var i = 0; i < dataset.length; i++){  
365 - if (dataset[i]['count'] > max){  
366 - maximum = dataset[i]['count'];  
367 - }  
368 - }  
369 -  
370 - return maximum  
371 - } 351 +
372 352
373 353
374 var container_div = d3.select("#most-used-tags-body"); 354 var container_div = d3.select("#most-used-tags-body");
@@ -378,8 +358,8 @@ var charts = { @@ -378,8 +358,8 @@ var charts = {
378 .style("background","#ddf8e7") 358 .style("background","#ddf8e7")
379 .append('g') 359 .append('g')
380 .attr("transform", "translate(0,0)") 360 .attr("transform", "translate(0,0)")
381 - .style("width", width)  
382 - .attr("height", height); 361 + .attr("width", "100%")
  362 + .attr("height", height - 60);
383 363
384 364
385 var color = d3.scaleLinear() 365 var color = d3.scaleLinear()
@@ -392,7 +372,8 @@ var charts = { @@ -392,7 +372,8 @@ var charts = {
392 return Math.floor(Math.random() * (max - min)) + min; 372 return Math.floor(Math.random() * (max - min)) + min;
393 } 373 }
394 374
395 - var xScale = d3.scaleSqrt().domain([min(), max()]).range([10,80]); 375 + var xScale = d3.scaleSqrt().domain([d3.min(dataset, function(d){ return d['count']}),
  376 + d3.max(dataset, function(d){ return d.count; })]).range([100,200]);
396 var tag_cloud = svg.selectAll('.tag-cloud-div') 377 var tag_cloud = svg.selectAll('.tag-cloud-div')
397 .data(dataset) 378 .data(dataset)
398 .enter() 379 .enter()
@@ -420,23 +401,29 @@ var charts = { @@ -420,23 +401,29 @@ var charts = {
420 .text(function(d){ 401 .text(function(d){
421 return d['name']; 402 return d['name'];
422 }) 403 })
  404 + .attr("text-anchor", "middle")
423 .attr("x", function(d){ 405 .attr("x", function(d){
424 - return xScale(d['count'])*0.2; 406 + return xScale(d['count'])*1.2/2;
425 }) 407 })
426 .attr("y", function(d){ 408 .attr("y", function(d){
427 - return xScale(d["count"])*0.2; 409 + return xScale(d["count"])*0.4/2;
428 }) 410 })
429 .attr("class", "tag-name") 411 .attr("class", "tag-name")
430 - .attr("fill", "#ffffff"); 412 + .attr("fill", "#ffffff")
  413 + .style("font-size", function(d){
  414 + return xScale(d["count"])*0.1 + "px";
  415 + });
431 416
432 417
433 var simulation = d3.forceSimulation() 418 var simulation = d3.forceSimulation()
434 .force("x", d3.forceX(width/2).strength(0.05)) 419 .force("x", d3.forceX(width/2).strength(0.05))
435 .force("y", d3.forceY(height/2).strength(0.05)) 420 .force("y", d3.forceY(height/2).strength(0.05))
436 - .force("collide", d3.forceCollide(function(d){  
437 - return xScale(d['count'])*0.4;  
438 - }));  
439 - 421 + .force("charge", d3.forceManyBody().strength(-120).distanceMax(300)
  422 + .distanceMin(0));
  423 + /*
  424 + .force("collide", d3.forceCollide(function(d){
  425 + return xScale(d['count'])*0.3;
  426 + }))*/
440 //simulation 427 //simulation
441 simulation.nodes(dataset) 428 simulation.nodes(dataset)
442 .on('tick', ticked); //so all data points are attached to it 429 .on('tick', ticked); //so all data points are attached to it
analytics/templates/analytics/general.html
@@ -7,6 +7,7 @@ @@ -7,6 +7,7 @@
7 {% endblock style %} 7 {% endblock style %}
8 8
9 {% block javascript %} 9 {% block javascript %}
  10 +
10 <script type="text/javascript" src="{% static "analytics/js/charts.js" %}"></script> 11 <script type="text/javascript" src="{% static "analytics/js/charts.js" %}"></script>
11 <script type="text/javascript" src=" {% static "analytics/js/behavior.js" %} "></script> 12 <script type="text/javascript" src=" {% static "analytics/js/behavior.js" %} "></script>
12 {% endblock javascript %} 13 {% endblock javascript %}
@@ -102,9 +103,19 @@ @@ -102,9 +103,19 @@
102 103
103 </select> 104 </select>
104 </div> 105 </div>
  106 +
105 <div id="right-chart-body"> 107 <div id="right-chart-body">
106 108
107 </div> 109 </div>
  110 +
  111 + <div class="form-group">
  112 + <div class='input-group date' id='datetimepicker1'>
  113 + <input type='text' class="form-control" />
  114 + <span class="input-group-addon">
  115 + <span class="glyphicon glyphicon-calendar"></span>
  116 + </span>
  117 + </div>
  118 + </div>
108 </div> 119 </div>
109 </section> 120 </section>
110 121
analytics/views.py
@@ -57,14 +57,13 @@ def most_used_tags(request): @@ -57,14 +57,13 @@ def most_used_tags(request):
57 data[tag.name]['count'] = resources_count 57 data[tag.name]['count'] = resources_count
58 58
59 data = sorted(data.values(), key = lambda x: x['count'], reverse=True ) 59 data = sorted(data.values(), key = lambda x: x['count'], reverse=True )
60 - data = data[:30] #get top 30 tags 60 + data = data[:15] #get top 30 tags
61 return JsonResponse(data, safe= False) 61 return JsonResponse(data, safe= False)
62 62
63 63
64 def most_active_users_in_a_month(request): 64 def most_active_users_in_a_month(request):
65 params = request.GET 65 params = request.GET
66 days = get_days_of_the_month(params['month']) 66 days = get_days_of_the_month(params['month'])
67 - print(days)  
68 data = {} 67 data = {}
69 mappings = {_('January'): 1, _('February'): 2, _('March'): 3, _('April'): 4, _('May'): 5, _('June'): 6, _('July'): 7 68 mappings = {_('January'): 1, _('February'): 2, _('March'): 3, _('April'): 4, _('May'): 5, _('June'): 6, _('July'): 7
70 , _('August'): 8, _('September'): 9, _('October'): 10, _('November'): 11, _('December'): 12} 69 , _('August'): 8, _('September'): 9, _('October'): 10, _('November'): 11, _('December'): 12}
@@ -164,8 +163,6 @@ def get_days_of_the_month(month): @@ -164,8 +163,6 @@ def get_days_of_the_month(month):
164 163
165 #get current year 164 #get current year
166 year = date.today().year 165 year = date.today().year
167 - print(year)  
168 - print(month)  
169 mappings = {_('January'): 1, _('February'): 2, _('March'): 3, _('April'): 4, _('May'): 5, _('June'): 6, _('July'): 7 166 mappings = {_('January'): 1, _('February'): 2, _('March'): 3, _('April'): 4, _('May'): 5, _('June'): 6, _('July'): 7
170 , _('August'): 8, _('September'): 9, _('October'): 10, _('November'): 11, _('December'): 12} 167 , _('August'): 8, _('September'): 9, _('October'): 10, _('November'): 11, _('December'): 12}
171 168