Description:
- DRY score table - add report to check maximum score of selected problem
Commit status:
[Not Reviewed]
References:
Comments:
0 Commit comments 0 Inline Comments
Unresolved TODOs:
There are no unresolved TODOs
Add another comment

r601:ff006e008326 - - 6 files changed: 46 inserted, 41 deleted

@@ -0,0 +1,34
1 + %table.table.sortable.table-striped.table-bordered.table-condensed
2 + %thead
3 + %tr
4 + %th Login
5 + %th Name
6 + %th Activated?
7 + %th Logged_in
8 + %th Contest(s)
9 + %th Remark
10 + - @problems.each do |p|
11 + %th.text-right= p.name
12 + %th.text-right Total
13 + %th.text-right Passed
14 + %tbody
15 + - @scorearray.each do |sc|
16 + %tr
17 + - total,num_passed = 0,0
18 + - sc.each_index do |i|
19 + - if i == 0
20 + %td= link_to sc[i].login, controller: 'users', action: 'profile', id: sc[i]
21 + %td= sc[i].full_name
22 + %td= sc[i].activated
23 + %td= sc[i].try(:contest_stat).try(:started_at) ? 'yes' : 'no'
24 + %td= sc[i].contests.collect {|c| c.name}.join(', ')
25 + %td= sc[i].remark
26 + - else
27 + %td.text-right= sc[i][0]
28 + - total += sc[i][0]
29 + - num_passed += 1 if sc[i][1]
30 + %td.text-right= total
31 + %td.text-right= num_passed
32 +
33 + :javascript
34 + $.bootstrapSortable(true,'reversed')
@@ -0,0 +1,3
1 + %h1 Current Score
2 +
3 + = render "score_table"
@@ -1,102 +1,105
1 class ReportController < ApplicationController
1 class ReportController < ApplicationController
2
2
3 + before_filter :authenticate
4 +
3 before_filter :admin_authorization, only: [:login_stat,:submission_stat, :stuck, :cheat_report, :cheat_scruntinize, :show_max_score]
5 before_filter :admin_authorization, only: [:login_stat,:submission_stat, :stuck, :cheat_report, :cheat_scruntinize, :show_max_score]
4
6
5 before_filter(only: [:problem_hof]) { |c|
7 before_filter(only: [:problem_hof]) { |c|
6 return false unless authenticate
8 return false unless authenticate
7
9
8 if GraderConfiguration["right.user_view_submission"]
10 if GraderConfiguration["right.user_view_submission"]
9 return true;
11 return true;
10 end
12 end
11
13
12 admin_authorization
14 admin_authorization
13 }
15 }
14
16
15 def max_score
17 def max_score
16 end
18 end
17
19
18 def current_score
20 def current_score
19 @problems = Problem.find_available_problems
21 @problems = Problem.find_available_problems
20 @users = User.includes(:contests).includes(:contest_stat).where(enabled: true)
22 @users = User.includes(:contests).includes(:contest_stat).where(enabled: true)
21 - @scorearray = calculate_max_score(problems, users,0,0,{max: true})
23 + @scorearray = calculate_max_score(@problems, @users,0,0,true)
22
24
23 #rencer accordingly
25 #rencer accordingly
24 if params[:commit] == 'download csv' then
26 if params[:commit] == 'download csv' then
25 csv = gen_csv_from_scorearray(@scorearray,@problems)
27 csv = gen_csv_from_scorearray(@scorearray,@problems)
26 send_data csv, filename: 'max_score.csv'
28 send_data csv, filename: 'max_score.csv'
27 else
29 else
28 #render template: 'user_admin/user_stat'
30 #render template: 'user_admin/user_stat'
29 render 'current_score'
31 render 'current_score'
30 end
32 end
31 end
33 end
32
34
33 def show_max_score
35 def show_max_score
34 #process parameters
36 #process parameters
35 #problems
37 #problems
36 @problems = []
38 @problems = []
37 params[:problem_id].each do |id|
39 params[:problem_id].each do |id|
38 next unless id.strip != ""
40 next unless id.strip != ""
39 - @problems << Problem.find(id.to_i)
41 + pid = Problem.find_by_id(id.to_i)
42 + @problems << pid if pid
40 end
43 end
41
44
42 #users
45 #users
43 @users = if params[:user] == "all" then
46 @users = if params[:user] == "all" then
44 User.find(:all, :include => [:contests, :contest_stat])
47 User.find(:all, :include => [:contests, :contest_stat])
45 else
48 else
46 User.includes(:contests).includes(:contest_stat).where(enabled: true)
49 User.includes(:contests).includes(:contest_stat).where(enabled: true)
47 end
50 end
48
51
49 #set up range from param
52 #set up range from param
50 since_id = params.fetch(:min_id, 0).to_i
53 since_id = params.fetch(:min_id, 0).to_i
51 until_id = params.fetch(:max_id, 0).to_i
54 until_id = params.fetch(:max_id, 0).to_i
52
55
53 #calculate the routine
56 #calculate the routine
54 - @scorearray = calculate_max_score(problems, users,since_id,until_id)
57 + @scorearray = calculate_max_score(@problems, @users,since_id,until_id)
55
58
56 #rencer accordingly
59 #rencer accordingly
57 if params[:commit] == 'download csv' then
60 if params[:commit] == 'download csv' then
58 csv = gen_csv_from_scorearray(@scorearray,@problems)
61 csv = gen_csv_from_scorearray(@scorearray,@problems)
59 send_data csv, filename: 'max_score.csv'
62 send_data csv, filename: 'max_score.csv'
60 else
63 else
61 #render template: 'user_admin/user_stat'
64 #render template: 'user_admin/user_stat'
62 render 'max_score'
65 render 'max_score'
63 end
66 end
64
67
65 end
68 end
66
69
67 def score
70 def score
68 if params[:commit] == 'download csv'
71 if params[:commit] == 'download csv'
69 @problems = Problem.all
72 @problems = Problem.all
70 else
73 else
71 @problems = Problem.find_available_problems
74 @problems = Problem.find_available_problems
72 end
75 end
73 @users = User.includes(:contests, :contest_stat).where(enabled: true) #find(:all, :include => [:contests, :contest_stat]).where(enabled: true)
76 @users = User.includes(:contests, :contest_stat).where(enabled: true) #find(:all, :include => [:contests, :contest_stat]).where(enabled: true)
74 @scorearray = Array.new
77 @scorearray = Array.new
75 @users.each do |u|
78 @users.each do |u|
76 ustat = Array.new
79 ustat = Array.new
77 ustat[0] = u
80 ustat[0] = u
78 @problems.each do |p|
81 @problems.each do |p|
79 sub = Submission.find_last_by_user_and_problem(u.id,p.id)
82 sub = Submission.find_last_by_user_and_problem(u.id,p.id)
80 if (sub!=nil) and (sub.points!=nil) and p and p.full_score
83 if (sub!=nil) and (sub.points!=nil) and p and p.full_score
81 ustat << [(sub.points.to_f*100/p.full_score).round, (sub.points>=p.full_score)]
84 ustat << [(sub.points.to_f*100/p.full_score).round, (sub.points>=p.full_score)]
82 else
85 else
83 ustat << [0,false]
86 ustat << [0,false]
84 end
87 end
85 end
88 end
86 @scorearray << ustat
89 @scorearray << ustat
87 end
90 end
88 if params[:commit] == 'download csv' then
91 if params[:commit] == 'download csv' then
89 csv = gen_csv_from_scorearray(@scorearray,@problems)
92 csv = gen_csv_from_scorearray(@scorearray,@problems)
90 send_data csv, filename: 'last_score.csv'
93 send_data csv, filename: 'last_score.csv'
91 else
94 else
92 render template: 'user_admin/user_stat'
95 render template: 'user_admin/user_stat'
93 end
96 end
94
97
95 end
98 end
96
99
97 def login_stat
100 def login_stat
98 @logins = Array.new
101 @logins = Array.new
99
102
100 date_and_time = '%Y-%m-%d %H:%M'
103 date_and_time = '%Y-%m-%d %H:%M'
101 begin
104 begin
102 md = params[:since_datetime].match(/(\d+)-(\d+)-(\d+) (\d+):(\d+)/)
105 md = params[:since_datetime].match(/(\d+)-(\d+)-(\d+) (\d+):(\d+)/)
@@ -7,78 +7,78
7 MAIN
7 MAIN
8 .collapse.navbar-collapse
8 .collapse.navbar-collapse
9 %ul.nav.navbar-nav
9 %ul.nav.navbar-nav
10 - if (@current_user!=nil) and (GraderConfiguration.show_tasks_to?(@current_user))
10 - if (@current_user!=nil) and (GraderConfiguration.show_tasks_to?(@current_user))
11 //= add_menu("#{I18n.t 'menu.tasks'}", 'tasks', 'list')
11 //= add_menu("#{I18n.t 'menu.tasks'}", 'tasks', 'list')
12 %li.dropdown
12 %li.dropdown
13 %a.dropdown-toggle{href: '#', data: {toggle:'dropdown'}, aria: {haspopup:"true", expanded:"false"}, role: "button"}
13 %a.dropdown-toggle{href: '#', data: {toggle:'dropdown'}, aria: {haspopup:"true", expanded:"false"}, role: "button"}
14 = "#{I18n.t 'menu.submissions'}"
14 = "#{I18n.t 'menu.submissions'}"
15 %span.caret
15 %span.caret
16 %ul.dropdown-menu
16 %ul.dropdown-menu
17 = add_menu("View", 'main', 'submission')
17 = add_menu("View", 'main', 'submission')
18 = add_menu("Self Test", 'test', 'index')
18 = add_menu("Self Test", 'test', 'index')
19 - if GraderConfiguration['right.user_hall_of_fame']
19 - if GraderConfiguration['right.user_hall_of_fame']
20 = add_menu("#{I18n.t 'menu.hall_of_fame'}", 'report', 'problem_hof')
20 = add_menu("#{I18n.t 'menu.hall_of_fame'}", 'report', 'problem_hof')
21 / display MODE button (with countdown in contest mode)
21 / display MODE button (with countdown in contest mode)
22 - if GraderConfiguration.analysis_mode?
22 - if GraderConfiguration.analysis_mode?
23 %div.navbar-btn.btn.btn-success#countdown= "ANALYSIS MODE"
23 %div.navbar-btn.btn.btn-success#countdown= "ANALYSIS MODE"
24 - elsif GraderConfiguration.time_limit_mode?
24 - elsif GraderConfiguration.time_limit_mode?
25 - if @current_user.contest_finished?
25 - if @current_user.contest_finished?
26 %div.navbar-btn.btn.btn-danger#countdown= "Contest is over"
26 %div.navbar-btn.btn.btn-danger#countdown= "Contest is over"
27 - elsif !@current_user.contest_started?
27 - elsif !@current_user.contest_started?
28 %div.navbar-btn.btn.btn-primary#countdown= (t 'title_bar.contest_not_started')
28 %div.navbar-btn.btn.btn-primary#countdown= (t 'title_bar.contest_not_started')
29 - else
29 - else
30 %div.navbar-btn.btn.btn-primary#countdown asdf
30 %div.navbar-btn.btn.btn-primary#countdown asdf
31 :javascript
31 :javascript
32 $("#countdown").countdown({until: "+#{@current_user.contest_time_left.to_i}s", layout: 'Time left: {hnn}:{mnn}:{snn}'});
32 $("#countdown").countdown({until: "+#{@current_user.contest_time_left.to_i}s", layout: 'Time left: {hnn}:{mnn}:{snn}'});
33 / admin section
33 / admin section
34 - if (@current_user!=nil) and (session[:admin])
34 - if (@current_user!=nil) and (session[:admin])
35 %li.dropdown
35 %li.dropdown
36 %a.dropdown-toggle{href: '#', data: {toggle:'dropdown'}, aria: {haspopup:"true", expanded:"false"}, role: "button"}
36 %a.dropdown-toggle{href: '#', data: {toggle:'dropdown'}, aria: {haspopup:"true", expanded:"false"}, role: "button"}
37 Manage
37 Manage
38 %span.caret
38 %span.caret
39 %ul.dropdown-menu
39 %ul.dropdown-menu
40 = add_menu( 'Announcements', 'announcements', 'index')
40 = add_menu( 'Announcements', 'announcements', 'index')
41 = add_menu( 'Problems', 'problems', 'index')
41 = add_menu( 'Problems', 'problems', 'index')
42 = add_menu( 'Users', 'user_admin', 'index')
42 = add_menu( 'Users', 'user_admin', 'index')
43 = add_menu( 'Graders', 'graders', 'list')
43 = add_menu( 'Graders', 'graders', 'list')
44 = add_menu( 'Message ', 'messages', 'console')
44 = add_menu( 'Message ', 'messages', 'console')
45 %li.divider{role: 'separator'}
45 %li.divider{role: 'separator'}
46 = add_menu( 'System config', 'configurations', 'index')
46 = add_menu( 'System config', 'configurations', 'index')
47 %li.divider{role: 'separator'}
47 %li.divider{role: 'separator'}
48 = add_menu( 'Sites', 'sites', 'index')
48 = add_menu( 'Sites', 'sites', 'index')
49 = add_menu( 'Contests', 'contest_management', 'index')
49 = add_menu( 'Contests', 'contest_management', 'index')
50 %li.dropdown
50 %li.dropdown
51 %a.dropdown-toggle{href: '#', data: {toggle:'dropdown'}, aria: {haspopup:"true", expanded:"false"}, role: "button"}
51 %a.dropdown-toggle{href: '#', data: {toggle:'dropdown'}, aria: {haspopup:"true", expanded:"false"}, role: "button"}
52 Report
52 Report
53 %span.caret
53 %span.caret
54 %ul.dropdown-menu
54 %ul.dropdown-menu
55 - = add_menu( 'Results', 'user_admin', 'user_stat')
55 + = add_menu( 'Results', 'report', 'current_score')
56 = add_menu( 'Report', 'report', 'multiple_login')
56 = add_menu( 'Report', 'report', 'multiple_login')
57 - if (ungraded = Submission.where('graded_at is null').where('submitted_at < ?', 1.minutes.ago).count) > 0
57 - if (ungraded = Submission.where('graded_at is null').where('submitted_at < ?', 1.minutes.ago).count) > 0
58 =link_to "#{ungraded} backlogs!",
58 =link_to "#{ungraded} backlogs!",
59 grader_list_path,
59 grader_list_path,
60 class: 'navbar-btn btn btn-default btn-warning', data: {toggle: 'tooltip'},title: 'Number of ungraded submission'
60 class: 'navbar-btn btn btn-default btn-warning', data: {toggle: 'tooltip'},title: 'Number of ungraded submission'
61
61
62 %ul.nav.navbar-nav.navbar-right
62 %ul.nav.navbar-nav.navbar-right
63 = add_menu("#{content_tag(:span,'',class: 'glyphicon glyphicon-question-sign')}".html_safe, 'main', 'help')
63 = add_menu("#{content_tag(:span,'',class: 'glyphicon glyphicon-question-sign')}".html_safe, 'main', 'help')
64 = add_menu("#{content_tag(:span,'',class: 'glyphicon glyphicon-comment')}".html_safe, 'messages', 'list', {title: I18n.t('menu.messages'), data: {toggle: 'tooltip'}})
64 = add_menu("#{content_tag(:span,'',class: 'glyphicon glyphicon-comment')}".html_safe, 'messages', 'list', {title: I18n.t('menu.messages'), data: {toggle: 'tooltip'}})
65 - if GraderConfiguration['system.user_setting_enabled']
65 - if GraderConfiguration['system.user_setting_enabled']
66 = add_menu("#{content_tag(:span,'',class: 'glyphicon glyphicon-cog')}".html_safe, 'users', 'index', {title: I18n.t('menu.settings'), data: {toggle: 'tooltip'}})
66 = add_menu("#{content_tag(:span,'',class: 'glyphicon glyphicon-cog')}".html_safe, 'users', 'index', {title: I18n.t('menu.settings'), data: {toggle: 'tooltip'}})
67 = add_menu("#{content_tag(:span,'',class: 'glyphicon glyphicon-log-out')} #{@current_user.full_name}".html_safe, 'main', 'login', {title: I18n.t('menu.log_out'), data: {toggle: 'tooltip'}})
67 = add_menu("#{content_tag(:span,'',class: 'glyphicon glyphicon-log-out')} #{@current_user.full_name}".html_safe, 'main', 'login', {title: I18n.t('menu.log_out'), data: {toggle: 'tooltip'}})
68
68
69 /
69 /
70 - if (@current_user!=nil) and (session[:admin])
70 - if (@current_user!=nil) and (session[:admin])
71 %nav.navbar.navbar-fixed-top.navbar-inverse.secondnavbar
71 %nav.navbar.navbar-fixed-top.navbar-inverse.secondnavbar
72 .container-fluid
72 .container-fluid
73 .collapse.navbar-collapse
73 .collapse.navbar-collapse
74 %ul.nav.navbar-nav
74 %ul.nav.navbar-nav
75 = add_menu( '[Announcements]', 'announcements', 'index')
75 = add_menu( '[Announcements]', 'announcements', 'index')
76 = add_menu( '[Msg console]', 'messages', 'console')
76 = add_menu( '[Msg console]', 'messages', 'console')
77 = add_menu( '[Problems]', 'problems', 'index')
77 = add_menu( '[Problems]', 'problems', 'index')
78 = add_menu( '[Users]', 'user_admin', 'index')
78 = add_menu( '[Users]', 'user_admin', 'index')
79 = add_menu( '[Results]', 'user_admin', 'user_stat')
79 = add_menu( '[Results]', 'user_admin', 'user_stat')
80 = add_menu( '[Report]', 'report', 'multiple_login')
80 = add_menu( '[Report]', 'report', 'multiple_login')
81 = add_menu( '[Graders]', 'graders', 'list')
81 = add_menu( '[Graders]', 'graders', 'list')
82 = add_menu( '[Contests]', 'contest_management', 'index')
82 = add_menu( '[Contests]', 'contest_management', 'index')
83 = add_menu( '[Sites]', 'sites', 'index')
83 = add_menu( '[Sites]', 'sites', 'index')
84 = add_menu( '[System config]', 'configurations', 'index')
84 = add_menu( '[System config]', 'configurations', 'index')
@@ -1,85 +1,49
1 %h1 Maximum score
1 %h1 Maximum score
2
2
3 = form_tag report_show_max_score_path
3 = form_tag report_show_max_score_path
4 .row
4 .row
5 .col-md-4
5 .col-md-4
6 .panel.panel-primary
6 .panel.panel-primary
7 .panel-heading
7 .panel-heading
8 Problems
8 Problems
9 .panel-body
9 .panel-body
10 %p
10 %p
11 Select problem(s) that we wish to know the score.
11 Select problem(s) that we wish to know the score.
12 = label_tag :problem_id, "Problems"
12 = label_tag :problem_id, "Problems"
13 = select_tag 'problem_id[]',
13 = select_tag 'problem_id[]',
14 options_for_select(Problem.all.collect {|p| ["[#{p.name}] #{p.full_name}", p.id]}),
14 options_for_select(Problem.all.collect {|p| ["[#{p.name}] #{p.full_name}", p.id]}),
15 { class: 'select2 form-control', multiple: "true" }
15 { class: 'select2 form-control', multiple: "true" }
16 .col-md-4
16 .col-md-4
17 .panel.panel-primary
17 .panel.panel-primary
18 .panel-heading
18 .panel-heading
19 Submission range
19 Submission range
20 .panel-body
20 .panel-body
21 %p
21 %p
22 Input minimum and maximum range of submission ID that should be included. A blank value for min and max means -1 and infinity, respectively.
22 Input minimum and maximum range of submission ID that should be included. A blank value for min and max means -1 and infinity, respectively.
23 .form-group
23 .form-group
24 = label_tag :from, "Min"
24 = label_tag :from, "Min"
25 = text_field_tag 'from_id', nil, class: "form-control"
25 = text_field_tag 'from_id', nil, class: "form-control"
26 .form-group
26 .form-group
27 = label_tag :from, "Max"
27 = label_tag :from, "Max"
28 = text_field_tag 'to_id', nil, class: "form-control"
28 = text_field_tag 'to_id', nil, class: "form-control"
29 .col-md-4
29 .col-md-4
30 .panel.panel-primary
30 .panel.panel-primary
31 .panel-heading
31 .panel-heading
32 Users
32 Users
33 .panel-body
33 .panel-body
34 .radio
34 .radio
35 %label
35 %label
36 = radio_button_tag 'users', 'all', true
36 = radio_button_tag 'users', 'all', true
37 All users
37 All users
38 .radio
38 .radio
39 %label
39 %label
40 = radio_button_tag 'users', 'enabled'
40 = radio_button_tag 'users', 'enabled'
41 Only enabled users
41 Only enabled users
42 .row
42 .row
43 .col-md-12
43 .col-md-12
44 = button_tag 'Show', class: "btn btn-primary btn-large"
44 = button_tag 'Show', class: "btn btn-primary btn-large"
45 = button_tag 'Download CSV', class: "btn btn-primary btn-large"
45 = button_tag 'Download CSV', class: "btn btn-primary btn-large"
46
46
47 - if @scorearray
47 - if @scorearray
48 %h2 Result
48 %h2 Result
49 - %table.table.sortable.table-striped.table-bordered.table-condensed
49 + =render "score_table"
50 - %thead
51 - %tr
52 - %th Login
53 - %th Name
54 - %th Activated?
55 - %th Logged_in
56 - %th Contest(s)
57 - %th Remark
58 - - @problems.each do |p|
59 - %th.text-right= p.name
60 - %th.text-right Total
61 - %th.text-right Passed
62 - %tbody
63 - - @scorearray.each do |sc|
64 - %tr
65 - - total,num_passed = 0,0
66 - - sc.each_index do |i|
67 - - if i == 0
68 - %td= link_to sc[i].login, controller: 'users', action: 'profile', id: sc[i]
69 - %td= sc[i].full_name
70 - %td= sc[i].activated
71 - %td= sc[i].try(:contest_stat).try(:started_at) ? 'yes' : 'no'
72 - %td= sc[i].contests.collect {|c| c.name}.join(', ')
73 - %td= sc[i].remark
74 - - else
75 - %td.text-right= sc[i][0]
76 - - total += sc[i][0]
77 - - num_passed += 1 if sc[i][1]
78 - %td.text-right= total
79 - %td.text-right= num_passed
80 - :javascript
81 - $.bootstrapSortable(true,'reversed')
82 - /.col-md-4.col-md-offset-1
83 - / = button_tag 'Show', class: "btn btn-primary btn-block"
84 - /.col-md-4.col-md-offset-2
85 - / = button_tag 'Download CSV', class: "btn btn-primary btn-block"
@@ -6,65 +6,66
6 resources :contests
6 resources :contests
7
7
8 resources :sites
8 resources :sites
9
9
10 resources :announcements do
10 resources :announcements do
11 member do
11 member do
12 get 'toggle','toggle_front'
12 get 'toggle','toggle_front'
13 end
13 end
14 end
14 end
15
15
16 resources :problems do
16 resources :problems do
17 member do
17 member do
18 get 'toggle'
18 get 'toggle'
19 get 'toggle_test'
19 get 'toggle_test'
20 end
20 end
21 collection do
21 collection do
22 get 'turn_all_off'
22 get 'turn_all_off'
23 get 'turn_all_on'
23 get 'turn_all_on'
24 get 'import'
24 get 'import'
25 get 'manage'
25 get 'manage'
26 end
26 end
27 end
27 end
28
28
29 resources :grader_configuration, controller: 'configurations'
29 resources :grader_configuration, controller: 'configurations'
30
30
31 resources :users do
31 resources :users do
32 member do
32 member do
33 get 'toggle_activate', 'toggle_enable'
33 get 'toggle_activate', 'toggle_enable'
34 end
34 end
35 end
35 end
36
36
37 resources :submissions do
37 resources :submissions do
38 collection do
38 collection do
39 get 'prob/:problem_id', to: 'submissions#index', as: 'problem'
39 get 'prob/:problem_id', to: 'submissions#index', as: 'problem'
40 get 'direct_edit_problem/:problem_id', to: 'submissions#direct_edit_problem', as: 'direct_edit_problem'
40 get 'direct_edit_problem/:problem_id', to: 'submissions#direct_edit_problem', as: 'direct_edit_problem'
41 get 'get_latest_submission_status/:uid/:pid', to: 'submissions#get_latest_submission_status', as: 'get_latest_submission_status'
41 get 'get_latest_submission_status/:uid/:pid', to: 'submissions#get_latest_submission_status', as: 'get_latest_submission_status'
42 end
42 end
43 end
43 end
44
44
45 match 'tasks/view/:file.:ext' => 'tasks#view'
45 match 'tasks/view/:file.:ext' => 'tasks#view'
46 match 'tasks/download/:id/:file.:ext' => 'tasks#download'
46 match 'tasks/download/:id/:file.:ext' => 'tasks#download'
47 match 'heartbeat/:id/edit' => 'heartbeat#edit'
47 match 'heartbeat/:id/edit' => 'heartbeat#edit'
48
48
49 #main
49 #main
50 get "main/list"
50 get "main/list"
51 get 'main/submission(/:id)', to: 'main#submission', as: 'main_submission'
51 get 'main/submission(/:id)', to: 'main#submission', as: 'main_submission'
52
52
53 #report
53 #report
54 + get 'report/current_score', to: 'report#current_score', as: 'report_current_score'
54 get 'report/problem_hof(/:id)', to: 'report#problem_hof', as: 'report_problem_hof'
55 get 'report/problem_hof(/:id)', to: 'report#problem_hof', as: 'report_problem_hof'
55 get "report/login"
56 get "report/login"
56 get 'report/max_score', to: 'report#max_score', as: 'report_max_score'
57 get 'report/max_score', to: 'report#max_score', as: 'report_max_score'
57 post 'report/show_max_score', to: 'report#show_max_score', as: 'report_show_max_score'
58 post 'report/show_max_score', to: 'report#show_max_score', as: 'report_show_max_score'
58
59
59 #grader
60 #grader
60 get 'graders/list', to: 'graders#list', as: 'grader_list'
61 get 'graders/list', to: 'graders#list', as: 'grader_list'
61
62
62
63
63 match 'heartbeat/:id/edit' => 'heartbeat#edit'
64 match 'heartbeat/:id/edit' => 'heartbeat#edit'
64
65
65 # See how all your routes lay out with "rake routes"
66 # See how all your routes lay out with "rake routes"
66
67
67 # This is a legacy wild controller route that's not recommended for RESTful applications.
68 # This is a legacy wild controller route that's not recommended for RESTful applications.
68 # Note: This route will make all actions in every controller accessible via GET requests.
69 # Note: This route will make all actions in every controller accessible via GET requests.
69 match ':controller(/:action(/:id))(.:format)'
70 match ':controller(/:action(/:id))(.:format)'
70 end
71 end
You need to be logged in to leave comments. Login now