diff --git a/app/assets/javascripts/management.js b/app/assets/javascripts/management.js index 39015ad52fc026bbd220e467f3322a3c805bd118..18dfb4b228f40b77cbd57316bdbd77150eb614cf 100644 --- a/app/assets/javascripts/management.js +++ b/app/assets/javascripts/management.js @@ -19,14 +19,22 @@ //= require locastyle //= require turbolinks //= require_tree ./management - +var teachers, curators, admins; var visualised,non_visualised; $(document).ready(function(){ if (document.getElementById("lobject") !== null) { visualised = document.getElementById("lobject").value; non_visualised = document.getElementById("lobject_non").value; - var data_learning_objects = dataLearningObjects(visualised,non_visualised); + } + if (document.getElementById("n_teachers") !== null) { + + teachers = document.getElementById("n_teachers").value; + curators = document.getElementById("n_curators").value; + admins = document.getElementById("n_admins").value; + var data_users = dataUsers(teachers,curators,admins); + } + var charts = ["colections","users","learning_objects","accesses"]; @@ -44,7 +52,7 @@ $(document).ready(function(){ break; case "learning_objects": new Chart(ctx).Pie(data_learning_objects,pie_options); - var learning_objects_chart = new Chart(ctx).Pie(data_learnin_objects); + var learning_objects_chart = new Chart(ctx).Pie(data_learning_objects); break; case "accesses": new Chart(ctx).Line(data_accesses,line_options); @@ -57,7 +65,7 @@ $(document).ready(function(){ } } } -}); +); Chart.defaults.global = { // Boolean - Whether to animate the chart diff --git a/app/assets/javascripts/management/users.js b/app/assets/javascripts/management/users.js index 00e4ca158d99487f25169d175c177b7a8ef9d739..b1de9842736a54e3402762e8acc8df156c71f81e 100644 --- a/app/assets/javascripts/management/users.js +++ b/app/assets/javascripts/management/users.js @@ -1,19 +1,26 @@ //Configurações de gráficos BAR //mais infos www.chartjs.org/docs/ -var data_users = { - labels: ["Estudantes", "Professores", "Moderadores", "Admnistradores"], + +function dataUsers(teachers, curators, admins){ +var data = { + labels: [ "Professores", "Curadores", "Admnistradores"], datasets: [ { label: "My First dataset", - fillColor: "rgba(220,220,220,0.5)", - strokeColor: "rgba(220,220,220,0.8)", - highlightFill: "rgba(220,220,220,0.75)", - highlightStroke: "rgba(220,220,220,1)", - data: [20,42,7,1] + fillColor: "rgba(100,89,54,0.5)", + strokeColor: "rgba(1,34,65,0.8)", + highlightFill: "rgba(53,13,54,0.75)", + highlightStroke: "rgba(32,80,90,1)", + data: [teachers, curators, admins] }, ] }; +return data; + +} + + var bar_options = { diff --git a/app/controllers/management/statistics_controller.rb b/app/controllers/management/statistics_controller.rb index de7f7136763003973b109344f725ea8193c1d9f4..d5f45bf0477a4bc2e3468cd43a1686aefb1a1683 100644 --- a/app/controllers/management/statistics_controller.rb +++ b/app/controllers/management/statistics_controller.rb @@ -1,17 +1,44 @@ class Management::StatisticsController < ManagementController include RepositoriesProxy + #before_action :set_statistics + before_action :authenticate_user!, except: [:index, :show, :like] + + #inicialização, primeira query + @@flag = 0 def index - @n_collections = collection_repository.get_number_of_collections - @n_views = main_page_repository.get_number_of("Views") - @n_users = subject_repository.get_number_of("User") - @n_learning_objects = learning_object_repository.get_number_of("learningObject") - @n_non_visualised = learning_object_repository.get_number_of_non_visualised + #a cada novo login atualiza as estatÃsticas + if @@flag == 0 || @@user != current_user + @@user = current_user + set_statistics + @@flag = 1 + end + + @n_users = @@n_users + @n_collections = @@n_collections + @n_non_visualised = @@n_non_visualised + @n_learning_objects = @@n_learning_objects + @total_accesses= User.sum("sign_in_count") end def users #missing roles - @n_users = subject_repository.get_number_of("User") + @n_users = User.count + @n_curators = 0 + @n_admins = 0 + @n_teachers = 0 + User.includes(:roles).all.each do |u| + if !u.roles[0].nil? + if u.roles[0]["name"] == "curator" + @n_curators += 1 + elsif u.roles[0]["name"] == "admin" + @n_admins += 1 + elsif u.roles[0]["name"] == "teacher" + @n_teachers +=1 + end + end + end + end def downloads @@ -20,20 +47,46 @@ class Management::StatisticsController < ManagementController def accesses #usar o logstash e kibana + #enquanto isso, uso o sign_in_count do ActiveRecord + @total_accesses= User.sum("sign_in_count") + + end def collections - @n_collections = collection_repository.get_number_of_collections + if @@flag == 0 || @@user != current_user + @@user = current_user + set_statistics + @@flag = 1 + end + @n_collections = @@n_collections || [] end + def learning_objects - @n_learning_objects = learning_object_repository.get_number_of("learningObject") - @n_non_visualised = learning_object_repository.get_number_of_non_visualised - @most_visualised = learning_object_repository.get_most_visualised + if @@flag == 0 || @@user != current_user + @@user = current_user + @@flag = 1 + set_statistics + end + @n_learning_objects = @@n_learning_objects + @most_visualised = @@most_visualised + @n_non_visualised = @@n_non_visualised + end + + def set_statistics + @@n_users = User.count + @@n_collections = collection_repository.get_number_of_collections || [] + @@n_learning_objects = learning_object_repository.count_all || [] + @@n_non_visualised = learning_object_repository.get_number_of_non_visualised || [] + @@most_visualised = learning_object_repository.get_most_visualised || [] + @@n_views = learning_object_repository.get_number_of("Views") || [] + end + def views - @n_views = main_page_repository.get_number_of("Views") + end end diff --git a/app/repositories/orient_db/learning_object_repository.rb b/app/repositories/orient_db/learning_object_repository.rb index ca6fa8ffafbf35ce1b551c2cad8ae575900c5a32..a0eb707b948fa92f98b7b3ee422ef6fad29f58bb 100644 --- a/app/repositories/orient_db/learning_object_repository.rb +++ b/app/repositories/orient_db/learning_object_repository.rb @@ -7,12 +7,12 @@ module OrientDb #get the ten most visualised. It's probably making too many useless accesses to orientDB... def get_most_visualised - result = connection.query("SELECT FROM (SELECT @rid,in('Views').size() AS views FROM LearningObject) ORDER BY views DESC LIMIT 10") - most_visualised = [] - result.each do |result| - most_visualised.push(get_by_rid(result["rid"])) - end - build_objects most_visualised + result = connection.query("SELECT FROM (SELECT name, @rid,in('Views').size() AS views FROM LearningObject) ORDER BY views DESC LIMIT 10") + #most_visualised = [] + #result.each do |result| + # most_visualised.push(get_by_rid(result["rid"])) + #end + #build_objects most_visualised end def get_publisher(learning_object) diff --git a/app/views/management/statistics/accesses.html.erb b/app/views/management/statistics/accesses.html.erb index 24f59d864c6fb3dcb903bf749b55e50636a8342d..b5fe4f206ae55f39d345387d26cf6bce91b66f32 100644 --- a/app/views/management/statistics/accesses.html.erb +++ b/app/views/management/statistics/accesses.html.erb @@ -14,13 +14,17 @@ <div id="sending-stats" class="row"> <div class="col-sm-6 col-md-12"> <div class="ls-box"> - <h6 class="ls-title-6">Total</h6> - <strong class="ls-color-theme">2091</strong> + <h6 class="ls-title-6">Total de acessos dos usuários</h6> + <strong class="ls-color-theme"><%= @total_accesses %></strong> </div> </div> </div> </div> + + +<!-- Gráfico ainda não populado <div align="center"> <canvas id="accesses" width="400" height="350"></canvas> </div> +--> diff --git a/app/views/management/statistics/collections.html.erb b/app/views/management/statistics/collections.html.erb index 0da808d5194434ad0e7d93f9d1709fae529f9286..786b26840d2babf02dd337636ad3749a62f5e93b 100644 --- a/app/views/management/statistics/collections.html.erb +++ b/app/views/management/statistics/collections.html.erb @@ -14,7 +14,7 @@ <div class="col-sm-6 col-md-12"> <div class="ls-box"> <h6 class="ls-title-6">Total</h6> - <strong class="ls-color-theme">348</strong> + <strong class="ls-color-theme"><%= @n_collections %></strong> </div> </div> </div> @@ -25,7 +25,9 @@ Por Ãrea do conhecimento </div> <br> +<!-- Gráfico ainda não populado <div align="center"> <canvas id="colections" width="400" height="350"></canvas> </div> +--> diff --git a/app/views/management/statistics/index.html.erb b/app/views/management/statistics/index.html.erb index 3868c0e0af441262ecd2c9017d2feb581e13ecfa..2d96a3ee5879dc154660b1989cb635dd926162de 100644 --- a/app/views/management/statistics/index.html.erb +++ b/app/views/management/statistics/index.html.erb @@ -39,8 +39,8 @@ </div> <div class="col-sm-6 col-md-3"> <div class="ls-box"> - <h6 class="ls-title-4 ">Objetos não visualizados</h6> - <strong class="ls-color-theme"><%= @n_non_visualised %></strong> + <h6 class="ls-title-4 ">Acessos</h6> + <strong class="ls-color-theme"><%= @total_accesses %></strong> <%= link_to "Mais detalhes" , accesses_management_statistics_path, class: "ls-btn ls-btn-sm" %> </div> diff --git a/app/views/management/statistics/learning_objects.html.erb b/app/views/management/statistics/learning_objects.html.erb index dfdbe98e489d0912f280a2c8cb6e09a6c0f028d7..999870e07de6c60c307478b9c926e4957adaaae6 100644 --- a/app/views/management/statistics/learning_objects.html.erb +++ b/app/views/management/statistics/learning_objects.html.erb @@ -36,10 +36,13 @@ </div> </div> + + <input type="hidden" id="lobject" value="<%= @n_learning_objects - @n_non_visualised %>"/> <input type="hidden" id="lobject_non" value="<%= @n_non_visualised %>"/> + <div> <div style="float: left; margin-left: 85px; margin-top: 100px"> <canvas id="learning_objects" width="700" height="600"></canvas> @@ -49,7 +52,8 @@ <h3><th><b> 10 mais visualisados </b></th></h3><br> <div class="row learning-object-columns"> <% @most_visualised.each do |most| %> - <%= render_learning_object("vertical", most) %> + <%#= render_learning_object("vertical", most) %> + <li><%= link_to most["name"], learning_object_path(most["@rid"]) %></li><BR> <% end %> </div> </div> diff --git a/app/views/management/statistics/users.html.erb b/app/views/management/statistics/users.html.erb index 237fd288d86516e4dcb0e487d270c6ef1034a235..0956e47123042f8bd27093926bdd3e865c5bc3f9 100644 --- a/app/views/management/statistics/users.html.erb +++ b/app/views/management/statistics/users.html.erb @@ -14,53 +14,35 @@ <div class="col-sm-6 col-md-12"> <div class="ls-box"> <h6 class="ls-title-6">Total</h6> - <strong class="ls-color-theme">70</strong> + <strong class="ls-color-theme"><%=@n_users%></strong> <!--<small>envios por mês</small>--> <%#= link_to "Mais detalhes" , management_statistics_users_path, class: "ls-btn ls-btn-sm" %> </div> </div> - <div class="col-sm-6 col-md-3"> - <div class="ls-box"> - <h6 class="ls-title-4">Estudantes</h6> - <strong class="ls-color-theme">20</strong> - <%#= link_to "Mais detalhes" , management_statistics_colections_path, class: "ls-btn ls-btn-sm" %> - </div> - </div> - <div class="col-sm-6 col-md-2"> + + <div class="col-sm-6 col-md-4"> <div class="ls-box"> <h6 class="ls-title-4">Professores</h6> - <strong class="ls-color-theme">42</strong> + <strong class="ls-color-theme"><%=@n_teachers%></strong> <%#= link_to "Mais detalhes" , management_statistics_downloads_path, class: "ls-btn ls-btn-sm" %> </div> </div> - <div class="col-sm-6 col-md-2"> + <div class="col-sm-6 col-md-4"> <div class="ls-box"> <h6 class="ls-title-4 ">Curadores</h6> - <strong class="ls-color-theme">4</strong> + <strong class="ls-color-theme"><%=@n_curators%></strong> <%#= link_to "Mais detalhes" , management_statistics_acessos_path, class: "ls-btn ls-btn-sm" %> </div> </div> - - - - <div class="col-sm-6 col-md-2"> - <div class="ls-box"> - <h6 class="ls-title-4 ">Moderadores</h6> - <strong class="ls-color-theme">3</strong> - - <%#= link_to "Mais detalhes" , management_statistics_acessos_path, class: "ls-btn ls-btn-sm" %> - </div> - </div> - - <div class="col-sm-6 col-md-3"> + <div class="col-sm-6 col-md-4"> <div class="ls-box"> <h6 class="ls-title-4 ">Administradores</h6> - <strong class="ls-color-theme">1</strong> + <strong class="ls-color-theme"><%=@n_admins%></strong> </div> </div> @@ -81,6 +63,9 @@ </div> </div> +<input type="hidden" id="n_teachers" value="<%= @n_teachers %>"/> +<input type="hidden" id="n_curators" value="<%= @n_curators %>"/> +<input type="hidden" id="n_admins" value="<%= @n_admins %>"/> <div align="center"> <canvas id="users" width="400" height="350"> </canvas>