Commit 9f9ec792e0621aa1ca01b242f0ed32527ad15d5b
1 parent
bf11cf83
Exists in
master
and in
2 other branches
improved tag cloud collision system as well as calculation code
Showing
8 changed files
with
37 additions
and
40 deletions
Show diff stats
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
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 |