WikiEducationFoundation/WikiEduDashboard

View on GitHub
app/views/analytics/usage.html.haml

Summary

Maintainability
Test Coverage
- content_for :after_title, ' - Usage Stats'
= hot_javascript_tag("charts")

%header.main-page
  .container
    %h1 Usage Stats
.container
  %section
    .section-header
      %h3
        = "Total users: #{@user_count}"
        %br
        = "OAuth users: #{@logged_in_count}"
        %br
        = "Unique program facilitators / course instructors: #{@course_instructor_count}"
        %br
        = "Unique project home wikis: #{@home_wiki_count}"
        %br
        = "Unique wikis interacted with: #{@total_wikis_touched}"
      %div.section-header
        Courses / Programs over time
        - i = 0
        - data = Course.all.order(:created_at).map { |c| i += 1; [c.created_at, i.to_i] }
        .usage-chart= line_chart([{ name: 'count', data: data }], legend: false)

      %div.section-header

        - years = 2015..Time.now.year
        - courses_data, editors_data, leaders_data, created_data, edited_data, revisions_data = [], [], [], [], [], []
        - data = years.map do |year|
          - courses = Course.where("year(created_at) = #{year}")
          - courses_data << [year.to_s, courses.count]
          - editors_data << [year.to_s, CoursesUsers.with_student_role.where(course: courses).pluck(:user_id).uniq.count]
          - leaders_data << [year.to_s, CoursesUsers.with_instructor_role.where(course: courses).pluck(:user_id).uniq.count]
          - created_data << [year.to_s, courses.sum(:new_article_count)]
          - edited_data << [year.to_s, courses.sum(:article_count)]
          - revisions_data << [year.to_s, courses.sum(:revision_count)] 

        Yearly stats (by program creation date)
        .usage-chart= column_chart([{ name: 'Program leaders', data: leaders_data }, { name: 'Events', data: courses_data }])
        .usage-chart= column_chart([{ name: 'Event participants', data: editors_data }])
        .usage-chart= column_chart([{ name: 'Pages Created', data: created_data }, { name: 'Pages Edited', data: edited_data }])
        .usage-chart= column_chart([{ name: 'Revisions', data: revisions_data }])

  %section
    .section-header
      Courses / Programs per wiki:
      - Wiki.all.order(:language, :project).each do |wiki|
        %li
          %a{href: "/courses_by_wiki/#{wiki.domain}"}= "#{wiki.domain}: #{Course.where(home_wiki: wiki).count}"

  %section
    .section-header
      %a.button.dark{href: '/all_courses_csv'} Generate CSV of all programs