diff --git a/app/controllers/external_users_controller.rb b/app/controllers/external_users_controller.rb index 22d70988..48293610 100644 --- a/app/controllers/external_users_controller.rb +++ b/app/controllers/external_users_controller.rb @@ -63,4 +63,20 @@ class ExternalUsersController < ApplicationController } end + def tag_statistics + @user = ExternalUser.find(params[:id]) + authorize! + + statistics = [] + tags = ProxyExercise.new().get_user_knowledge_and_max_knowledge(@user, @user.participations.uniq.compact) + tags[:user_topic_knowledge].each_pair do |key, value| + statistics.append({:key => key.name.to_s, :value => (100.0 / tags[:max_topic_knowledge][key] * value).round(2)}) + end + statistics.sort_by! {|item| item[:value]} + + respond_to do |format| + format.json { render(json: statistics) } + end + end + end diff --git a/app/policies/external_user_policy.rb b/app/policies/external_user_policy.rb index 2e11060b..4257fa4b 100644 --- a/app/policies/external_user_policy.rb +++ b/app/policies/external_user_policy.rb @@ -2,4 +2,8 @@ class ExternalUserPolicy < AdminOnlyPolicy def statistics? admin? end + + def tag_statistics? + admin? + end end diff --git a/app/views/external_users/show.html.slim b/app/views/external_users/show.html.slim index d4859035..64b66927 100644 --- a/app/views/external_users/show.html.slim +++ b/app/views/external_users/show.html.slim @@ -8,9 +8,3 @@ br = link_to(t('shared.statistics'), statistics_external_user_path(@user)) .tag-grid - - tag_stats = ProxyExercise.new().get_user_knowledge_and_max_knowledge(@user, @user.participations.uniq.compact) - - tag_stats[:user_topic_knowledge].each do |key, value| - //p = key.name.to_s + ' -> ' + value.to_s + " (of #{tag_stats[:max_topic_knowledge][key].to_s })" - .tag-details - = key.name.to_s - = progress_bar((100.0 / tag_stats[:max_topic_knowledge][key] * value).round(2)) diff --git a/config/routes.rb b/config/routes.rb index 4ab758d9..6703d8c1 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -128,6 +128,9 @@ Rails.application.routes.draw do resources :external_users, only: [:index, :show], concerns: :statistics do resources :exercises, concerns: :statistics + member do + get :tag_statistics + end end namespace :code_ocean do