Description:
fix link in grader
Commit status:
[Not Reviewed]
References:
Diff options:
Comments:
0 Commit comments
0 Inline Comments
Unresolved TODOs:
There are no unresolved TODOs
r800:e3df93478b03 - - 4 files changed: 27 inserted, 22 deleted
@@ -1,64 +1,64 | |||
|
1 | 1 | - content_for :head do |
|
2 | 2 | <meta http-equiv ="refresh" content="60"/> |
|
3 | 3 | |
|
4 | 4 | %h1 Grader information |
|
5 | 5 | |
|
6 | 6 | %p |
|
7 | 7 | = link_to 'Refresh', { :action => 'list' }, class: 'btn btn-info' |
|
8 | 8 | |
|
9 | 9 | .panel.panel-primary |
|
10 | 10 | .panel-heading |
|
11 | 11 | Grader control: |
|
12 | 12 | .panel-body |
|
13 |
- =link_to 'Start Graders in grading env', { action: 'start_grading'}, class: 'btn btn-default' |
|
|
14 |
- =link_to 'Start Graders in exam env', { action: 'start_exam'}, class: 'btn btn-default' |
|
|
15 |
- =link_to 'Stop all running Graders', { action: 'stop_all'}, class: 'btn btn-default' |
|
|
16 |
- =link_to 'Clear all data', { action: 'clear_all'}, class: 'btn btn-default' |
|
|
13 | + =link_to 'Start Graders in grading env', { action: 'start_grading'}, class: 'btn btn-default' | |
|
14 | + =link_to 'Start Graders in exam env', { action: 'start_exam'}, class: 'btn btn-default' | |
|
15 | + =link_to 'Stop all running Graders', { action: 'stop_all'}, class: 'btn btn-default' | |
|
16 | + =link_to 'Clear all data', { action: 'clear_all'}, class: 'btn btn-default' | |
|
17 | 17 | |
|
18 | 18 | .row |
|
19 | 19 | .col-md-6 |
|
20 | 20 | - if @last_task |
|
21 | 21 | Last task: |
|
22 | 22 | = link_to "#{@last_task.id}", :action => 'view', :id => @last_task.id, :type => 'Task' |
|
23 | 23 | |
|
24 | 24 | %br/ |
|
25 | 25 | |
|
26 | 26 | - if @last_test_request |
|
27 | 27 | Last test_request: |
|
28 | 28 | = link_to "#{@last_test_request.id}", :action => 'view', :id => @last_test_request.id, :type => 'TestRequest' |
|
29 | 29 | |
|
30 | 30 | %h2 Current graders |
|
31 | 31 | |
|
32 | 32 | = render :partial => 'grader_list', :locals => {:grader_list => @grader_processes} |
|
33 | 33 | |
|
34 | 34 | %h2 Stalled graders |
|
35 | 35 | |
|
36 | 36 | = render :partial => 'grader_list', :locals => {:grader_list => @stalled_processes} |
|
37 | 37 | |
|
38 | 38 | %h2 Terminated graders |
|
39 | 39 | |
|
40 | 40 | %p= link_to 'Clear data for terminated graders', { action: 'clear_terminated'}, class: 'btn btn-default', method: 'post' |
|
41 | 41 | |
|
42 | 42 | = render :partial => 'grader_list', :locals => {:grader_list => @terminated_processes} |
|
43 | 43 | .col-md-6 |
|
44 | 44 | %h2 Last 20 submissions |
|
45 | 45 | %table.table.table-striped.table-condensed |
|
46 | 46 | %thead |
|
47 | 47 | %th ID |
|
48 | 48 | %th User |
|
49 | 49 | %th Problem |
|
50 | 50 | %th Submitted |
|
51 | 51 | %th Graded |
|
52 | 52 | %th Result |
|
53 | 53 | %tbody |
|
54 | 54 | - @submission.each do |sub| |
|
55 | 55 | %tr.inactive |
|
56 | 56 | %td= link_to sub.id, submission_path(sub.id) |
|
57 | 57 | %td= ("" unless sub.user) || link_to(sub.try(:user).try(:full_name), stat_user_path(sub.user.id)) |
|
58 | 58 | %td= ("" unless sub.problem) || link_to(sub.try(:problem).try(:full_name), stat_problem_path(sub.problem.id)) |
|
59 | 59 | %td= "#{time_ago_in_words(sub.submitted_at)} ago" |
|
60 | 60 | %td= sub.graded_at ? "#{time_ago_in_words(sub.graded_at)} ago" : " " |
|
61 | 61 | %td= sub.grader_comment |
|
62 | 62 | %h2 Ungraded submission |
|
63 | 63 | %table.table.table-striped.table-condensed |
|
64 | 64 | %thead |
@@ -22,74 +22,74 | |||
|
22 | 22 | = add_menu("View", 'submissions', 'index') |
|
23 | 23 | = add_menu("Self Test", 'test', 'index') |
|
24 | 24 | / hall of fame |
|
25 | 25 | - if GraderConfiguration['right.user_hall_of_fame'] |
|
26 | 26 | = add_menu("#{I18n.t 'menu.hall_of_fame'}", 'report', 'problem_hof') |
|
27 | 27 | / display MODE button (with countdown in contest mode) |
|
28 | 28 | - if GraderConfiguration.analysis_mode? |
|
29 | 29 | %div.navbar-btn.btn.btn-success#countdown= "ANALYSIS MODE" |
|
30 | 30 | - elsif GraderConfiguration.time_limit_mode? |
|
31 | 31 | - if @current_user.contest_finished? |
|
32 | 32 | %div.navbar-btn.btn.btn-danger#countdown= "Contest is over" |
|
33 | 33 | - elsif !@current_user.contest_started? |
|
34 | 34 | %div.navbar-btn.btn.btn-primary#countdown= (t 'title_bar.contest_not_started') |
|
35 | 35 | - else |
|
36 | 36 | %div.navbar-btn.btn.btn-primary#countdown asdf |
|
37 | 37 | :javascript |
|
38 | 38 | $("#countdown").countdown({until: "+#{@current_user.contest_time_left.to_i}s", layout: 'Time left: {hnn}:{mnn}:{snn}'}); |
|
39 | 39 | / admin section |
|
40 | 40 | - if (@current_user!=nil) and (session[:admin]) |
|
41 | 41 | / management |
|
42 | 42 | %li.dropdown |
|
43 | 43 | %a.dropdown-toggle{href: '#', data: {toggle:'dropdown'}, aria: {haspopup:"true", expanded:"false"}, role: "button"} |
|
44 | 44 | Manage |
|
45 | 45 | %span.caret |
|
46 | 46 | %ul.dropdown-menu |
|
47 | 47 | = add_menu( 'Announcements', 'announcements', 'index') |
|
48 | 48 | = add_menu( 'Problems', 'problems', 'index') |
|
49 | 49 | = add_menu( 'Tags', 'tags', 'index') |
|
50 | 50 | = add_menu( 'Users', 'user_admin', 'index') |
|
51 | 51 | = add_menu( 'User Groups', 'groups', 'index') |
|
52 | 52 | = add_menu( 'Graders', 'graders', 'list') |
|
53 | 53 | = add_menu( 'Message ', 'messages', 'console') |
|
54 | 54 | %li.divider{role: 'separator'} |
|
55 | 55 | = add_menu( 'System config', 'configurations', 'index') |
|
56 | 56 | %li.divider{role: 'separator'} |
|
57 | 57 | = add_menu( 'Sites', 'sites', 'index') |
|
58 | 58 | = add_menu( 'Contests', 'contest_management', 'index') |
|
59 | 59 | / report |
|
60 | 60 | %li.dropdown |
|
61 | 61 | %a.dropdown-toggle{href: '#', data: {toggle:'dropdown'}, aria: {haspopup:"true", expanded:"false"}, role: "button"} |
|
62 | 62 | Report |
|
63 | 63 | %span.caret |
|
64 | 64 | %ul.dropdown-menu |
|
65 | 65 | = add_menu( 'Current Score', 'report', 'current_score') |
|
66 | 66 | = add_menu( 'Score Report', 'report', 'max_score') |
|
67 | 67 | = add_menu( 'Report', 'report', 'multiple_login') |
|
68 | 68 | - if (ungraded = Submission.where('graded_at is null').where('submitted_at < ?', 1.minutes.ago).count) > 0 |
|
69 | 69 | =link_to "#{ungraded} backlogs!", |
|
70 | - grader_list_path, | |
|
70 | + graders_list_path, | |
|
71 | 71 | class: 'navbar-btn btn btn-default btn-warning', data: {toggle: 'tooltip'},title: 'Number of ungraded submission' |
|
72 | 72 | |
|
73 | 73 | %ul.nav.navbar-nav.navbar-right |
|
74 | 74 | = add_menu("#{content_tag(:span,'',class: 'glyphicon glyphicon-question-sign')}".html_safe, 'main', 'help') |
|
75 | 75 | = add_menu("#{content_tag(:span,'',class: 'glyphicon glyphicon-comment')}".html_safe, 'messages', 'index', {title: I18n.t('menu.messages'), data: {toggle: 'tooltip'}}) |
|
76 | 76 | - if GraderConfiguration['system.user_setting_enabled'] |
|
77 | 77 | = add_menu("#{content_tag(:span,'',class: 'glyphicon glyphicon-cog', id: 'user_profile')}".html_safe, 'users', 'profile', {title: I18n.t('menu.settings'), data: {toggle: 'tooltip'}}) |
|
78 | 78 | = 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'}}) |
|
79 | 79 | |
|
80 | 80 | / |
|
81 | 81 | - if (@current_user!=nil) and (session[:admin]) |
|
82 | 82 | %nav.navbar.navbar-fixed-top.navbar-inverse.secondnavbar |
|
83 | 83 | .container-fluid |
|
84 | 84 | .collapse.navbar-collapse |
|
85 | 85 | %ul.nav.navbar-nav |
|
86 | 86 | = add_menu( '[Announcements]', 'announcements', 'index') |
|
87 | 87 | = add_menu( '[Msg console]', 'messages', 'console') |
|
88 | 88 | = add_menu( '[Problems]', 'problems', 'index') |
|
89 | 89 | = add_menu( '[Users]', 'user_admin', 'index') |
|
90 | 90 | = add_menu( '[Results]', 'user_admin', 'user_stat') |
|
91 | 91 | = add_menu( '[Report]', 'report', 'multiple_login') |
|
92 | 92 | = add_menu( '[Graders]', 'graders', 'list') |
|
93 | 93 | = add_menu( '[Contests]', 'contest_management', 'index') |
|
94 | 94 | = add_menu( '[Sites]', 'sites', 'index') |
|
95 | 95 | = add_menu( '[System config]', 'configurations', 'index') |
@@ -1,59 +1,63 | |||
|
1 | 1 | :css |
|
2 | 2 | .fix-width { |
|
3 | 3 | font-family: "Consolas, Monaco, Droid Sans Mono,Mono, Monospace,Courier" |
|
4 | 4 | } |
|
5 | 5 | |
|
6 | 6 | %h1 Problem stat: #{@problem.name} |
|
7 | 7 | %h2 Overview |
|
8 | 8 | |
|
9 | + .row | |
|
10 | + .col-md-2 | |
|
11 | + %strong Name: | |
|
12 | + .col-md-10 | |
|
13 | + = @problem.full_name #in_place_editor_field :problem, :full_name, {}, :rows=>1 | |
|
14 | + = link_to_description_if_any "[#{t 'main.problem_desc'}] <span class='glyphicon glyphicon-file'></span>".html_safe, @problem | |
|
15 | + .row | |
|
16 | + .col-md-2.strong | |
|
17 | + %strong Submissions: | |
|
18 | + .col-md-10 | |
|
19 | + = @submissions.count | |
|
20 | + .row | |
|
21 | + .col-md-2.strong | |
|
22 | + %strong Solved/Attemped User | |
|
23 | + .col-md-10 | |
|
24 | + #{@summary[:solve]}/#{@summary[:attempt]} (#{(@summary[:solve]*100.0/@summary[:attempt]).round(1)}%) | |
|
9 | 25 | |
|
10 | - %table.info | |
|
11 | - %thead | |
|
12 | - %tr.info-head | |
|
13 | - %th Stat | |
|
14 | - %th Value | |
|
15 | - %tbody | |
|
16 | - %tr{class: cycle('info-even','info-odd')} | |
|
17 | - %td Submissions | |
|
18 | - %td= @submissions.count | |
|
19 | - %tr{class: cycle('info-even','info-odd')} | |
|
20 | - %td Solved/Attempted User | |
|
21 | - %td #{@summary[:solve]}/#{@summary[:attempt]} (#{(@summary[:solve]*100.0/@summary[:attempt]).round(1)}%) | |
|
22 | 26 | |
|
23 | 27 | %h2 Submissions Count |
|
24 | 28 | = render partial: 'application/bar_graph', locals: { histogram: @histogram } |
|
25 | 29 | |
|
26 | 30 | %h2 Submissions |
|
27 | 31 | - if @submissions and @submissions.count > 0 |
|
28 | 32 | %table#main_table.table.table-condensed.table-striped |
|
29 | 33 | %thead |
|
30 | 34 | %tr |
|
31 | 35 | %th ID |
|
32 | 36 | %th Login |
|
33 | 37 | %th Name |
|
34 | 38 | %th Submitted_at |
|
35 | 39 | %th language |
|
36 | 40 | %th Points |
|
37 | 41 | %th comment |
|
38 | 42 | %th IP |
|
39 | 43 | %tbody |
|
40 | 44 | - row_odd,curr = true,'' |
|
41 | 45 | - @submissions.each do |sub| |
|
42 | 46 | - next unless sub.user |
|
43 | 47 | - row_odd,curr = !row_odd, sub.user if curr != sub.user |
|
44 | 48 | %tr |
|
45 | 49 | %td= link_to sub.id, submission_path(sub) |
|
46 | 50 | %td= link_to sub.user.login, stat_user_path(sub.user) |
|
47 | 51 | %td= sub.user.full_name |
|
48 | 52 | %td{data: {order: sub.submitted_at}}= time_ago_in_words(sub.submitted_at) + " ago" |
|
49 | 53 | %td= sub.language.name |
|
50 | 54 | %td= sub.points |
|
51 | 55 | %td.fix-width= sub.grader_comment |
|
52 | 56 | %td= sub.ip_address |
|
53 | 57 | - else |
|
54 | 58 | No submission |
|
55 | 59 | |
|
56 | 60 | :javascript |
|
57 | 61 | $("#main_table").DataTable({ |
|
58 | 62 | paging: false |
|
59 | 63 | }); |
@@ -135,69 +135,70 | |||
|
135 | 135 | #get 'user_admin/bulk_manage', to: 'user_admin#bulk_manage', as: 'bulk_manage_user_admin' |
|
136 | 136 | #post 'user_admin', to: 'user_admin#create' |
|
137 | 137 | #delete 'user_admin/:id', to: 'user_admin#destroy', as: 'user_admin_destroy' |
|
138 | 138 | |
|
139 | 139 | #singular resource |
|
140 | 140 | #---- BEWARE ---- singular resource maps to plural controller by default, we can override by provide controller name directly |
|
141 | 141 | #report |
|
142 | 142 | resource :report, only: [], controller: 'report' do |
|
143 | 143 | get 'login' |
|
144 | 144 | get 'multiple_login' |
|
145 | 145 | get 'problem_hof(/:id)', action: 'problem_hof', as: 'problem_hof' |
|
146 | 146 | get 'current_score(/:group_id)', action: 'current_score', as: 'current_score' |
|
147 | 147 | get 'max_score' |
|
148 | 148 | post 'show_max_score' |
|
149 | 149 | get 'stuck' |
|
150 | 150 | get 'cheat_report' |
|
151 | 151 | post 'cheat_report' |
|
152 | 152 | get 'cheat_scruntinize' |
|
153 | 153 | post 'cheat_scruntinize' |
|
154 | 154 | end |
|
155 | 155 | #get 'report/current_score', to: 'report#current_score', as: 'report_current_score' |
|
156 | 156 | #get 'report/problem_hof(/:id)', to: 'report#problem_hof', as: 'report_problem_hof' |
|
157 | 157 | #get "report/login" |
|
158 | 158 | #get 'report/max_score', to: 'report#max_score', as: 'report_max_score' |
|
159 | 159 | #post 'report/show_max_score', to: 'report#show_max_score', as: 'report_show_max_score' |
|
160 | 160 | |
|
161 | 161 | resource :main, only: [], controller: 'main' do |
|
162 | 162 | get 'login' |
|
163 | 163 | get 'logout' |
|
164 | 164 | get 'list' |
|
165 | 165 | get 'submission(/:id)', action: 'submission', as: 'main_submission' |
|
166 | 166 | get 'announcements' |
|
167 | 167 | get 'help' |
|
168 | 168 | post 'submit' |
|
169 | 169 | end |
|
170 | 170 | #main |
|
171 | 171 | #get "main/list" |
|
172 | 172 | #get 'main/submission(/:id)', to: 'main#submission', as: 'main_submission' |
|
173 | 173 | #post 'main/submit', to: 'main#submit' |
|
174 | 174 | #get 'main/announcements', to: 'main#announcements' |
|
175 | 175 | |
|
176 | 176 | |
|
177 | 177 | # |
|
178 | 178 | get 'tasks/view/:file.:ext' => 'tasks#view' |
|
179 | 179 | get 'tasks/download/:id/:file.:ext' => 'tasks#download', as: 'download_task' |
|
180 | 180 | get 'heartbeat/:id/edit' => 'heartbeat#edit' |
|
181 | 181 | |
|
182 | 182 | #grader |
|
183 | - get 'graders/list', to: 'graders#list', as: 'grader_list' | |
|
183 | + #get 'graders/list', to: 'graders#list', as: 'grader_list' | |
|
184 | 184 | namespace :graders do |
|
185 | 185 | get 'task/:id/:type', action: 'task', as: 'task' |
|
186 | 186 | get 'view/:id/:type', action: 'view', as: 'view' |
|
187 | 187 | get 'clear/:id', action: 'clear', as: 'clear' |
|
188 | - get 'stop' | |
|
189 | - get 'stop_all' | |
|
190 | - get 'clear_all' | |
|
191 | - get 'clear_terminated' | |
|
192 | 188 | get 'start_grading' |
|
193 | 189 | get 'start_exam' |
|
190 | + get 'clear_all' | |
|
191 | + get 'stop_all' | |
|
194 | 192 | |
|
193 | + get 'stop' | |
|
194 | + get 'clear_terminated' | |
|
195 | + get 'list' | |
|
195 | 196 | end |
|
196 | 197 | |
|
197 | 198 | |
|
198 | 199 | # See how all your routes lay out with "rake routes" |
|
199 | 200 | |
|
200 | 201 | # This is a legacy wild controller route that's not recommended for RESTful applications. |
|
201 | 202 | # Note: This route will make all actions in every controller accessible via GET requests. |
|
202 | 203 | # match ':controller(/:action(/:id))(.:format)', via: [:get, :post] |
|
203 | 204 | end |
You need to be logged in to leave comments.
Login now