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 47 color: #ffffff; }
48 48  
49 49 .tag-name {
50   - color: #ffffff;
51   - font-size: 10px; }
  50 + color: #ffffff; }
52 51  
53 52 #left-data-selector {
54 53 background: linear-gradient(#0e8999, #6bf0ce);
... ...
analytics/static/analytics/general.css.map
1 1 {
2 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 4 "sources": ["general.sass"],
5 5 "names": [],
6 6 "file": "general.css"
... ...
analytics/static/analytics/general.sass
... ... @@ -63,7 +63,6 @@ $title-color: #009688
63 63  
64 64 .tag-name
65 65 color: #ffffff
66   - font-size: 10px
67 66  
68 67  
69 68 #left-data-selector
... ...
analytics/static/analytics/js/behavior.js
1 1  
  2 +
  3 +
2 4 $(document).ready(function(){
3 5 selectors_options.init();
4 6  
... ... @@ -6,12 +8,14 @@ $(document).ready(function(){
6 8  
7 9 $('#month_selector').change(function(){
8 10 $.get('/analytics/amount_active_users_per_day', {month: $(this).val() }).done(function(data){
9   - console.log(data);
10 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 348 var width = 800;
349 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 354 var container_div = d3.select("#most-used-tags-body");
... ... @@ -378,8 +358,8 @@ var charts = {
378 358 .style("background","#ddf8e7")
379 359 .append('g')
380 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 365 var color = d3.scaleLinear()
... ... @@ -392,7 +372,8 @@ var charts = {
392 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 377 var tag_cloud = svg.selectAll('.tag-cloud-div')
397 378 .data(dataset)
398 379 .enter()
... ... @@ -420,23 +401,29 @@ var charts = {
420 401 .text(function(d){
421 402 return d['name'];
422 403 })
  404 + .attr("text-anchor", "middle")
423 405 .attr("x", function(d){
424   - return xScale(d['count'])*0.2;
  406 + return xScale(d['count'])*1.2/2;
425 407 })
426 408 .attr("y", function(d){
427   - return xScale(d["count"])*0.2;
  409 + return xScale(d["count"])*0.4/2;
428 410 })
429 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 418 var simulation = d3.forceSimulation()
434 419 .force("x", d3.forceX(width/2).strength(0.05))
435 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 427 //simulation
441 428 simulation.nodes(dataset)
442 429 .on('tick', ticked); //so all data points are attached to it
... ...
analytics/templates/analytics/general.html
... ... @@ -7,6 +7,7 @@
7 7 {% endblock style %}
8 8  
9 9 {% block javascript %}
  10 +
10 11 <script type="text/javascript" src="{% static "analytics/js/charts.js" %}"></script>
11 12 <script type="text/javascript" src=" {% static "analytics/js/behavior.js" %} "></script>
12 13 {% endblock javascript %}
... ... @@ -102,9 +103,19 @@
102 103  
103 104 </select>
104 105 </div>
  106 +
105 107 <div id="right-chart-body">
106 108  
107 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 119 </div>
109 120 </section>
110 121  
... ...
analytics/views.py
... ... @@ -57,14 +57,13 @@ def most_used_tags(request):
57 57 data[tag.name]['count'] = resources_count
58 58  
59 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 61 return JsonResponse(data, safe= False)
62 62  
63 63  
64 64 def most_active_users_in_a_month(request):
65 65 params = request.GET
66 66 days = get_days_of_the_month(params['month'])
67   - print(days)
68 67 data = {}
69 68 mappings = {_('January'): 1, _('February'): 2, _('March'): 3, _('April'): 4, _('May'): 5, _('June'): 6, _('July'): 7
70 69 , _('August'): 8, _('September'): 9, _('October'): 10, _('November'): 11, _('December'): 12}
... ... @@ -164,8 +163,6 @@ def get_days_of_the_month(month):
164 163  
165 164 #get current year
166 165 year = date.today().year
167   - print(year)
168   - print(month)
169 166 mappings = {_('January'): 1, _('February'): 2, _('March'): 3, _('April'): 4, _('May'): 5, _('June'): 6, _('July'): 7
170 167 , _('August'): 8, _('September'): 9, _('October'): 10, _('November'): 11, _('December'): 12}
171 168  
... ...