diff --git a/analytics/static/.sass-cache/9bdb779ec82a4a96f72be09b83b7c997addd0129/general.sassc b/analytics/static/.sass-cache/9bdb779ec82a4a96f72be09b83b7c997addd0129/general.sassc
index d0f82f7..bc6da56 100644
Binary files a/analytics/static/.sass-cache/9bdb779ec82a4a96f72be09b83b7c997addd0129/general.sassc and b/analytics/static/.sass-cache/9bdb779ec82a4a96f72be09b83b7c997addd0129/general.sassc differ
diff --git a/analytics/static/analytics/general.css b/analytics/static/analytics/general.css
index 3214902..4b4e334 100644
--- a/analytics/static/analytics/general.css
+++ b/analytics/static/analytics/general.css
@@ -63,8 +63,8 @@
color: #009688; }
.selector {
- width: 80%;
- height: 40px;
+ width: 90%;
+ height: 20%;
color: white;
padding-left: 5px;
background-color: #009688;
@@ -74,4 +74,21 @@
padding-top: 10px;
font-size: 16px; }
+.middle-chart article {
+ text-align: center; }
+
+.most-accessed-list {
+ background-color: #52b7bd;
+ width: 80%;
+ margin-left: 2%;
+ margin-top: 2%;
+ padding-left: 0;
+ color: white;
+ transition: width 2s, height 2s, background-color 2s, transform 2s; }
+ .most-accessed-list li {
+ padding-left: 1%; }
+
+.most-accessed-item:hover {
+ background-color: #3aa7ad; }
+
/*# sourceMappingURL=general.css.map */
diff --git a/analytics/static/analytics/general.css.map b/analytics/static/analytics/general.css.map
index 9048f9f..a7362a5 100644
--- a/analytics/static/analytics/general.css.map
+++ b/analytics/static/analytics/general.css.map
@@ -1,6 +1,6 @@
{
"version": 3,
-"mappings": "AAEA,YAAY;EACR,MAAM,EAAE,iBAAiB;EACzB,aAAa,EAAE,IAAI;EACnB,OAAO,EAAE,IAAI;EACb,QAAQ,EAAE,IAAI;EACd,KAAK,EAAE,IAAI;;AAEf,sBAAsB;EAClB,MAAM,EAAE,GAAG;EACX,OAAO,EAAE,KAAK;EACd,yBAAE;IACE,KAAK,EAbC,OAAO;EAejB,yBAAE;IACE,KAAK,EAAE,KAAK;IACZ,OAAO,EAAE,WAAW;IACpB,KAAK,EAAE,GAAG;IACV,MAAM,EAAE,GAAG;IAEX,4BAAE;MACE,YAAY,EAAE,EAAE;MAChB,KAAK,EAAE,GAAG;MACV,KAAK,EAAE,KAAK;MAEZ,yCAAY;QACR,gBAAgB,EAAE,OAAO;QACzB,KAAK,EAAE,IAAI;QACX,UAAU,EAAE,MAAM;QAClB,aAAa,EAAE,IAAI;MAEvB,gCAAG;QACC,gBAAgB,EAAE,OAAO;QACzB,KAAK,EAAE,IAAI;QACX,UAAU,EAAE,MAAM;QAClB,aAAa,EAAE,IAAI;;AAInC,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;;AAEvB,eAAe;EACX,KAAK,EAAE,IAAI;EACX,MAAM,EAAE,IAAI;;AAEhB,UAAU;EACN,aAAa,EAAE,IAAI;EACnB,KAAK,EAAE,OAAO;EACd,KAAK,EAAE,IAAI;;AAIf,SAAS;EACL,KAAK,EAAE,OAAO;EACd,SAAS,EAAE,IAAI;;AAGnB,mBAAmB;EACf,UAAU,EAAE,iCAAmC;;AAEnD,MAAM;EACF,KAAK,EAAE,GAAG;EACV,KAAK,EAAE,IAAI;EACX,SAAE;IACE,KAAK,EA1EC,OAAO;;AA4ErB,SAAS;EACL,KAAK,EAAE,GAAG;EACV,MAAM,EAAE,IAAI;EACZ,KAAK,EAAE,KAAK;EACZ,YAAY,EAAE,GAAG;EACjB,gBAAgB,EAAE,OAAO;EACzB,UAAU,EAAE,IAAI;EAChB,aAAa,EAAE,iBAAiB;EAChC,WAAC;IACG,WAAW,EAAE,IAAI;IACjB,SAAS,EAAE,IAAI",
+"mappings": "AAEA,YAAY;EACR,MAAM,EAAE,iBAAiB;EACzB,aAAa,EAAE,IAAI;EACnB,OAAO,EAAE,IAAI;EACb,QAAQ,EAAE,IAAI;EACd,KAAK,EAAE,IAAI;;AAEf,sBAAsB;EAClB,MAAM,EAAE,GAAG;EACX,OAAO,EAAE,KAAK;EACd,yBAAE;IACE,KAAK,EAbC,OAAO;EAejB,yBAAE;IACE,KAAK,EAAE,KAAK;IACZ,OAAO,EAAE,WAAW;IACpB,KAAK,EAAE,GAAG;IACV,MAAM,EAAE,GAAG;IAEX,4BAAE;MACE,YAAY,EAAE,EAAE;MAChB,KAAK,EAAE,GAAG;MACV,KAAK,EAAE,KAAK;MAEZ,yCAAY;QACR,gBAAgB,EAAE,OAAO;QACzB,KAAK,EAAE,IAAI;QACX,UAAU,EAAE,MAAM;QAClB,aAAa,EAAE,IAAI;MAEvB,gCAAG;QACC,gBAAgB,EAAE,OAAO;QACzB,KAAK,EAAE,IAAI;QACX,UAAU,EAAE,MAAM;QAClB,aAAa,EAAE,IAAI;;AAInC,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;;AAEvB,eAAe;EACX,KAAK,EAAE,IAAI;EACX,MAAM,EAAE,IAAI;;AAEhB,UAAU;EACN,aAAa,EAAE,IAAI;EACnB,KAAK,EAAE,OAAO;EACd,KAAK,EAAE,IAAI;;AAIf,SAAS;EACL,KAAK,EAAE,OAAO;EACd,SAAS,EAAE,IAAI;;AAGnB,mBAAmB;EACf,UAAU,EAAE,iCAAmC;;AAEnD,MAAM;EACF,KAAK,EAAE,GAAG;EACV,KAAK,EAAE,IAAI;EACX,SAAE;IACE,KAAK,EA1EC,OAAO;;AA4ErB,SAAS;EACL,KAAK,EAAE,GAAG;EACV,MAAM,EAAE,GAAG;EACX,KAAK,EAAE,KAAK;EACZ,YAAY,EAAE,GAAG;EACjB,gBAAgB,EAAE,OAAO;EACzB,UAAU,EAAE,IAAI;EAChB,aAAa,EAAE,iBAAiB;EAChC,WAAC;IACG,WAAW,EAAE,IAAI;IACjB,SAAS,EAAE,IAAI;;AAInB,qBAAO;EACH,UAAU,EAAE,MAAM;;AAE1B,mBAAmB;EACf,gBAAgB,EAAE,OAAO;EACzB,KAAK,EAAE,GAAG;EACV,WAAW,EAAE,EAAE;EACf,UAAU,EAAE,EAAE;EACd,YAAY,EAAE,CAAC;EACf,KAAK,EAAE,KAAK;EACZ,UAAU,EAAE,sDAAsD;EAElE,sBAAE;IACE,YAAY,EAAE,EAAE;;AAExB,yBAAyB;EACrB,gBAAgB,EAAE,OAAO",
"sources": ["general.sass"],
"names": [],
"file": "general.css"
diff --git a/analytics/static/analytics/general.sass b/analytics/static/analytics/general.sass
index a99e8ac..92f6e94 100644
--- a/analytics/static/analytics/general.sass
+++ b/analytics/static/analytics/general.sass
@@ -75,8 +75,8 @@ $title-color: #009688
color: $title-color
.selector
- width: 80%
- height: 40px
+ width: 90%
+ height: 20%
color: white
padding-left: 5px
background-color: #009688
@@ -84,4 +84,24 @@ $title-color: #009688
border-radius: 0px 20px 20px 0px
p
padding-top: 10px
- font-size: 16px
\ No newline at end of file
+ font-size: 16px
+
+
+.middle-chart
+ article
+ text-align: center
+
+.most-accessed-list
+ background-color: #52b7bd
+ width: 80%
+ margin-left: 2%
+ margin-top: 2%
+ padding-left: 0
+ color: white
+ transition: width 2s, height 2s, background-color 2s, transform 2s
+
+ li
+ padding-left: 1%
+
+.most-accessed-item:hover
+ background-color: #3aa7ad
\ No newline at end of file
diff --git a/analytics/static/analytics/js/behavior.js b/analytics/static/analytics/js/behavior.js
index 410367c..6277473 100644
--- a/analytics/static/analytics/js/behavior.js
+++ b/analytics/static/analytics/js/behavior.js
@@ -13,8 +13,23 @@ var selectors_options = {
},
loadData: function(e){
if (e){
- if (e.attributes['data-url'].value == "subjects"){
- var url = "/analytics/most_accessed_subjects";
+ opened = $(e).attr('opened');
+ if (typeof opened !== typeof undefined && opened !== false){
+ selectors_options.deleteChildren(e);
+ }else {
+ switch(e.attributes['data-url'].value){
+ case "subjects":
+ var url = "/analytics/most_accessed_subjects";
+ break;
+ case "categories":
+ var url = "/analytics/most_accessed_categories";
+ break;
+ case "resources":
+ var url = "/analytics/most_accessed_resources";
+ break;
+
+ }
+
}
}
if(url){
@@ -32,16 +47,29 @@ var selectors_options = {
},
modifyElement: function(e, data){
var string_build = "";
- string_build += "
";
+ string_build += '';
data.forEach(function(datum){
string_build += '- ' +datum.name+ ' ' + datum.count+ '
';
});
string_build += "
";
- $(e).append(string_build);
-
- e.attributes.open = True;
+ $(e).after(string_build);
+ var new_elem = $(e).next();
+ new_elem.slideDown();
+ $(e).attr("opened", true);
+
+ },
+ deleteChildren: function(e){
+ console.log("delete children");
+ var most_accessed_list = $(e).next();
+ $(most_accessed_list).animate(
+ {height: 0,
+ opacity: 0.1
+ }, 1000, function(){
+ $(this).remove(); //remove list from UI
+ });
+ $(e).removeAttr("opened"); //remove attribute so it can call API again
},
};
diff --git a/analytics/static/analytics/js/charts.js b/analytics/static/analytics/js/charts.js
index b9fb9b6..4471b5f 100644
--- a/analytics/static/analytics/js/charts.js
+++ b/analytics/static/analytics/js/charts.js
@@ -91,7 +91,7 @@ var charts = {
build_bubble_user: function(url){
$.get(url, function(dataset){
- var width = 600;
+ var width = 300;
var height = 300;
@@ -121,7 +121,7 @@ var charts = {
var color = d3.scaleOrdinal(d3.schemeCategory20);
//adding new div to carousel-inner div
- var new_div = d3.select(".carousel-inner").append("div").attr("class","item");
+ var new_div = d3.select(".middle-chart").append("div").attr("class","item");
var radiusScale = d3.scaleSqrt().domain([min(), max()]).range([10,50]);
var svg = new_div.append("svg").attr("width", width).attr("height", height)
.style("margin","auto")
@@ -131,17 +131,7 @@ var charts = {
.attr("width", width)
.attr("height", height);
- //adding svg title
-
- svg.append("text")
- .attr("text-anchor", "middle")
- .attr("x", width/2 )
- .attr("y", 30)
- .style("font-size", "30px")
- .text("Usuários mais ativos no Amadeus")
- .attr("fill", "#003333")
- .style("font-weight", "bold")
- .style("font-style", "italic");
+
var simulation = d3.forceSimulation()
.force("x", d3.forceX(width/2).strength(0.05))
@@ -158,6 +148,29 @@ var charts = {
.append("g")
.attr("class",".user-dot");
+
+ var defs = groups.append('svg:defs');
+
+ var gradient = defs.append("linearGradient")
+ .attr("id", "svgGradient")
+ .attr("x1", "0%")
+ .attr("x2", "100%")
+ .attr("y1", "0%")
+ .attr("y2", "100%");
+
+ gradient.append("stop")
+ .attr('class', 'start')
+ .attr("offset", "0%")
+ .attr("stop-color", "#007991")
+ .attr("stop-opacity", 1);
+
+ gradient.append("stop")
+ .attr('class', 'end')
+ .attr("offset", "100%")
+ .attr("stop-color", "#78ffd6")
+ .attr("stop-opacity", 1);
+
+
//Create circles to be drawn
var circles = groups
.append('circle')
@@ -167,7 +180,9 @@ var charts = {
.attr("fill", function(d){
return 'url('+'#'+'user_'+d['user_id']+')';
- });
+ })
+ .attr("stroke", "url(#svgGradient)") //using id setted by the svg
+ .attr("stroke-width", 3);
@@ -175,7 +190,7 @@ var charts = {
groups.append("text")
.text(function(d){
return d['user'] +'('+ d['count'] + ')';
- }).attr("fill", "#FFFFFF")
+ }).attr("fill", "#000000")
.attr("id", function(d){
return "user_tooltip_"+d['user_id'];
}).style("display", "none");
@@ -190,7 +205,6 @@ var charts = {
$("#"+"user_tooltip_"+d['user_id']).hide();
});
- var defs = groups.append('svg:defs');
//Attching images to bubbles
defs.append("svg:pattern")
@@ -217,11 +231,13 @@ var charts = {
.attr("y", 0);
+
//simulation
simulation.nodes(dataset)
.on('tick', ticked); //so all data points are attached to it
+ console.log("finished simulation");
function ticked(){
groups.attr("transform", function(d){
return "translate(" + d.x + "," + d.y + ")";
@@ -234,10 +250,10 @@ var charts = {
most_accessed_subjects: function(url){
$.get(url, function(dataset){
- var width = 800;
+ var width = 200;
var height = 300;
- var new_div = d3.select(".carousel-inner").append("div").attr("class","item");
+ var new_div = d3.select(".carousel-inner").append("div").attr("test","ok");
var svg = new_div.append("svg").attr("width", "100%").attr("height", height)
.style("margin","auto")
@@ -417,7 +433,10 @@ var charts = {
}
}
-charts.most_used_tags('/analytics/most_used_tags');
-//charts.build_resource('/topics/count_resources/');
-//charts.build_bubble_user('/users/get_users_log/');
-//charts.most_accessed_subjects('/subjects/most_accessed_subjects');
\ No newline at end of file
+
+$(document).ready(function(){
+ charts.most_used_tags('/analytics/most_used_tags');
+ //charts.build_resource('/topics/count_resources/');
+ charts.build_bubble_user('/analytics/most_active_users/');
+ //charts.most_accessed_subjects('/subjects/most_accessed_subjects');
+});
diff --git a/analytics/templates/analytics/general.html b/analytics/templates/analytics/general.html
index 4eac9f1..fe81a9a 100644
--- a/analytics/templates/analytics/general.html
+++ b/analytics/templates/analytics/general.html
@@ -72,7 +72,7 @@
-
+
{% trans "most accessed categories" %}
@@ -80,7 +80,7 @@
{% trans "most accessed subjects" %}
-
+
{% trans "most accessed resource" %}
@@ -91,6 +91,7 @@
{% trans "most active users" %}
+
diff --git a/analytics/tests/test_general_dashboard.py b/analytics/tests/test_general_dashboard.py
index 7561882..9c82ae4 100644
--- a/analytics/tests/test_general_dashboard.py
+++ b/analytics/tests/test_general_dashboard.py
@@ -88,7 +88,7 @@ class APIDashBoardTest(TestCase):
def test_most_accessed_categories(self):
- self.fail("finish the test")
+ self.fail("finish test on categories")
def test_most_active_users(self):
self.fail("finish the test")
diff --git a/analytics/urls.py b/analytics/urls.py
index 89cf2e5..24cadc0 100644
--- a/analytics/urls.py
+++ b/analytics/urls.py
@@ -8,4 +8,7 @@ urlpatterns = [
#"api" callls
url(r'^most_used_tags/$', views.most_used_tags, name="most_used_tags"),
url(r'^most_accessed_subjects/$', views.most_accessed_subjects, name="most_accessed_subjects"),
+ url(r'^most_accessed_categories/$', views.most_accessed_categories, name = "most_accessed_categories"),
+ url(r'^most_accessed_resources/$', views.most_accessed_resource_kind, name= "most_accessed_resources"),
+ url(r'^most_active_users/$', views.most_active_users, name= "most_active_users"),
]
\ No newline at end of file
diff --git a/analytics/views.py b/analytics/views.py
index 4228a04..d06aa56 100644
--- a/analytics/views.py
+++ b/analytics/views.py
@@ -79,15 +79,38 @@ def most_accessed_subjects(request):
def most_accessed_categories(request):
data = {}
- data = Log.objects.filter('category')
+ data = Log.objects.filter(resource = 'category')
categories = {}
for datum in data:
if datum.context:
- pass
- return None
+ category_id = datum.context['category_id']
+ if category_id in categories.keys():
+ categories[category_id]['count'] = categories[category_id]['count'] + 1
+ else:
+ categories[category_id] = {'name': datum.context['category_name'], 'count': 1 }
+
+ categories = sorted(categories.values(), key = lambda x: x['count'], reverse = True)
+ categories = categories[:5]
+ return JsonResponse(categories, safe= False)
def most_accessed_resource_kind(request):
- return None
+ resources_names = [cls.__name__ for cls in Resource.__subclasses__()]
+ print(resources_names)
+ resources = {}
+
+ mapping = {}
+ mapping['pdffile'] = str(_('PDF File'))
+ mapping['goals'] = str(_('Topic Goals'))
+ mapping['link'] = str(_('Link to Website'))
+ mapping['filelink'] = str(_('File Link'))
+ mapping['webconference'] = str(_('Web Conference'))
+ mapping['ytvideo'] = str(_('YouTube Video'))
+ mapping['webpage'] = str(_('WebPage'))
+
+
+
+
+ return JsonResponse(resources, safe = False)
def most_active_users(request):
--
libgit2 0.21.2