Description:
- streamline current score report and fix some bug
Commit status:
[Not Reviewed]
References:
Diff options:
Comments:
0 Commit comments
0 Inline Comments
Unresolved TODOs:
There are no unresolved TODOs
r610:0c5b815f0163 - - 3 files changed: 12 inserted, 9 deleted
@@ -500,39 +500,39 | |||||
|
500 | if @contest |
|
500 | if @contest |
|
501 | @users = @contest.users |
|
501 | @users = @contest.users |
|
502 | else |
|
502 | else |
|
503 | @users = User.find_users_with_no_contest |
|
503 | @users = User.find_users_with_no_contest |
|
504 | end |
|
504 | end |
|
505 | return [@contest, @users] |
|
505 | return [@contest, @users] |
|
506 | end |
|
506 | end |
|
507 |
|
507 | ||
|
508 | def gen_csv_from_scorearray(scorearray,problem) |
|
508 | def gen_csv_from_scorearray(scorearray,problem) |
|
509 | CSV.generate do |csv| |
|
509 | CSV.generate do |csv| |
|
510 | #add header |
|
510 | #add header |
|
511 | header = ['User','Name', 'Activated?', 'Logged in', 'Contest'] |
|
511 | header = ['User','Name', 'Activated?', 'Logged in', 'Contest'] |
|
512 | problem.each { |p| header << p.name } |
|
512 | problem.each { |p| header << p.name } |
|
513 | header += ['Total','Passed'] |
|
513 | header += ['Total','Passed'] |
|
514 | csv << header |
|
514 | csv << header |
|
515 | #add data |
|
515 | #add data |
|
516 | scorearray.each do |sc| |
|
516 | scorearray.each do |sc| |
|
517 | total = num_passed = 0 |
|
517 | total = num_passed = 0 |
|
518 | row = Array.new |
|
518 | row = Array.new |
|
519 | sc.each_index do |i| |
|
519 | sc.each_index do |i| |
|
520 | if i == 0 |
|
520 | if i == 0 |
|
521 | row << sc[i].login |
|
521 | row << sc[i].login |
|
522 | row << sc[i].full_name |
|
522 | row << sc[i].full_name |
|
523 | row << sc[i].activated |
|
523 | row << sc[i].activated |
|
524 | - row << (sc[i].try(:contest_stat).try(:started_at).nil? 'no' : 'yes') |
|
524 | + row << (sc[i].try(:contest_stat).try(:started_at).nil? ? 'no' : 'yes') |
|
525 | row << sc[i].contests.collect {|c| c.name}.join(', ') |
|
525 | row << sc[i].contests.collect {|c| c.name}.join(', ') |
|
526 | else |
|
526 | else |
|
527 | row << sc[i][0] |
|
527 | row << sc[i][0] |
|
528 | total += sc[i][0] |
|
528 | total += sc[i][0] |
|
529 | num_passed += 1 if sc[i][1] |
|
529 | num_passed += 1 if sc[i][1] |
|
530 | end |
|
530 | end |
|
531 | end |
|
531 | end |
|
532 | row << total |
|
532 | row << total |
|
533 | row << num_passed |
|
533 | row << num_passed |
|
534 | csv << row |
|
534 | csv << row |
|
535 | end |
|
535 | end |
|
536 | end |
|
536 | end |
|
537 | end |
|
537 | end |
|
538 | end |
|
538 | end |
@@ -11,69 +11,72 | |||||
|
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 | + / management | ||
|
35 | %li.dropdown |
|
36 | %li.dropdown |
|
36 | %a.dropdown-toggle{href: '#', data: {toggle:'dropdown'}, aria: {haspopup:"true", expanded:"false"}, role: "button"} |
|
37 | %a.dropdown-toggle{href: '#', data: {toggle:'dropdown'}, aria: {haspopup:"true", expanded:"false"}, role: "button"} |
|
37 | Manage |
|
38 | Manage |
|
38 | %span.caret |
|
39 | %span.caret |
|
39 | %ul.dropdown-menu |
|
40 | %ul.dropdown-menu |
|
40 | = add_menu( 'Announcements', 'announcements', 'index') |
|
41 | = add_menu( 'Announcements', 'announcements', 'index') |
|
41 | = add_menu( 'Problems', 'problems', 'index') |
|
42 | = add_menu( 'Problems', 'problems', 'index') |
|
42 | = add_menu( 'Users', 'user_admin', 'index') |
|
43 | = add_menu( 'Users', 'user_admin', 'index') |
|
43 | = add_menu( 'Graders', 'graders', 'list') |
|
44 | = add_menu( 'Graders', 'graders', 'list') |
|
44 | = add_menu( 'Message ', 'messages', 'console') |
|
45 | = add_menu( 'Message ', 'messages', 'console') |
|
45 | %li.divider{role: 'separator'} |
|
46 | %li.divider{role: 'separator'} |
|
46 | = add_menu( 'System config', 'configurations', 'index') |
|
47 | = add_menu( 'System config', 'configurations', 'index') |
|
47 | %li.divider{role: 'separator'} |
|
48 | %li.divider{role: 'separator'} |
|
48 | = add_menu( 'Sites', 'sites', 'index') |
|
49 | = add_menu( 'Sites', 'sites', 'index') |
|
49 | = add_menu( 'Contests', 'contest_management', 'index') |
|
50 | = add_menu( 'Contests', 'contest_management', 'index') |
|
|
51 | + / report | ||
|
50 | %li.dropdown |
|
52 | %li.dropdown |
|
51 | %a.dropdown-toggle{href: '#', data: {toggle:'dropdown'}, aria: {haspopup:"true", expanded:"false"}, role: "button"} |
|
53 | %a.dropdown-toggle{href: '#', data: {toggle:'dropdown'}, aria: {haspopup:"true", expanded:"false"}, role: "button"} |
|
52 | Report |
|
54 | Report |
|
53 | %span.caret |
|
55 | %span.caret |
|
54 | %ul.dropdown-menu |
|
56 | %ul.dropdown-menu |
|
55 |
- = add_menu( ' |
|
57 | + = add_menu( 'Current Score', 'report', 'current_score') |
|
|
58 | + = add_menu( 'Score Report', 'report', 'max_score') | ||
|
56 | = add_menu( 'Report', 'report', 'multiple_login') |
|
59 | = add_menu( 'Report', 'report', 'multiple_login') |
|
57 | - if (ungraded = Submission.where('graded_at is null').where('submitted_at < ?', 1.minutes.ago).count) > 0 |
|
60 | - if (ungraded = Submission.where('graded_at is null').where('submitted_at < ?', 1.minutes.ago).count) > 0 |
|
58 | =link_to "#{ungraded} backlogs!", |
|
61 | =link_to "#{ungraded} backlogs!", |
|
59 | grader_list_path, |
|
62 | grader_list_path, |
|
60 | class: 'navbar-btn btn btn-default btn-warning', data: {toggle: 'tooltip'},title: 'Number of ungraded submission' |
|
63 | class: 'navbar-btn btn btn-default btn-warning', data: {toggle: 'tooltip'},title: 'Number of ungraded submission' |
|
61 |
|
64 | ||
|
62 | %ul.nav.navbar-nav.navbar-right |
|
65 | %ul.nav.navbar-nav.navbar-right |
|
63 | = add_menu("#{content_tag(:span,'',class: 'glyphicon glyphicon-question-sign')}".html_safe, 'main', 'help') |
|
66 | = 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'}}) |
|
67 | = 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'] |
|
68 | - 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'}}) |
|
69 | = 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'}}) |
|
70 | = 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 |
|
71 | ||
|
69 | / |
|
72 | / |
|
70 | - if (@current_user!=nil) and (session[:admin]) |
|
73 | - if (@current_user!=nil) and (session[:admin]) |
|
71 | %nav.navbar.navbar-fixed-top.navbar-inverse.secondnavbar |
|
74 | %nav.navbar.navbar-fixed-top.navbar-inverse.secondnavbar |
|
72 | .container-fluid |
|
75 | .container-fluid |
|
73 | .collapse.navbar-collapse |
|
76 | .collapse.navbar-collapse |
|
74 | %ul.nav.navbar-nav |
|
77 | %ul.nav.navbar-nav |
|
75 | = add_menu( '[Announcements]', 'announcements', 'index') |
|
78 | = add_menu( '[Announcements]', 'announcements', 'index') |
|
76 | = add_menu( '[Msg console]', 'messages', 'console') |
|
79 | = add_menu( '[Msg console]', 'messages', 'console') |
|
77 | = add_menu( '[Problems]', 'problems', 'index') |
|
80 | = add_menu( '[Problems]', 'problems', 'index') |
|
78 | = add_menu( '[Users]', 'user_admin', 'index') |
|
81 | = add_menu( '[Users]', 'user_admin', 'index') |
|
79 | = add_menu( '[Results]', 'user_admin', 'user_stat') |
|
82 | = add_menu( '[Results]', 'user_admin', 'user_stat') |
@@ -1,34 +1,34 | |||||
|
1 | %table.table.sortable.table-striped.table-bordered.table-condensed |
|
1 | %table.table.sortable.table-striped.table-bordered.table-condensed |
|
2 | %thead |
|
2 | %thead |
|
3 | %tr |
|
3 | %tr |
|
4 | %th Login |
|
4 | %th Login |
|
5 | %th Name |
|
5 | %th Name |
|
6 | - %th Activated? |
|
6 | + / %th Activated? |
|
7 | - %th Logged_in |
|
7 | + / %th Logged_in |
|
8 | - %th Contest(s) |
|
8 | + / %th Contest(s) |
|
9 | %th Remark |
|
9 | %th Remark |
|
10 | - @problems.each do |p| |
|
10 | - @problems.each do |p| |
|
11 | - %th.text-right= p.name |
|
11 | + %th.text-right= p.name.gsub('_',' ') |
|
12 | %th.text-right Total |
|
12 | %th.text-right Total |
|
13 | %th.text-right Passed |
|
13 | %th.text-right Passed |
|
14 | %tbody |
|
14 | %tbody |
|
15 | - @scorearray.each do |sc| |
|
15 | - @scorearray.each do |sc| |
|
16 | %tr |
|
16 | %tr |
|
17 | - total,num_passed = 0,0 |
|
17 | - total,num_passed = 0,0 |
|
18 | - sc.each_index do |i| |
|
18 | - sc.each_index do |i| |
|
19 | - if i == 0 |
|
19 | - if i == 0 |
|
20 | %td= link_to sc[i].login, controller: 'users', action: 'profile', id: sc[i] |
|
20 | %td= link_to sc[i].login, controller: 'users', action: 'profile', id: sc[i] |
|
21 | %td= sc[i].full_name |
|
21 | %td= sc[i].full_name |
|
22 | - %td= sc[i].activated |
|
22 | + / %td= sc[i].activated |
|
23 | - %td= sc[i].try(:contest_stat).try(:started_at) ? 'yes' : 'no' |
|
23 | + / %td= sc[i].try(:contest_stat).try(:started_at) ? 'yes' : 'no' |
|
24 | - %td= sc[i].contests.collect {|c| c.name}.join(', ') |
|
24 | + / %td= sc[i].contests.collect {|c| c.name}.join(', ') |
|
25 | %td= sc[i].remark |
|
25 | %td= sc[i].remark |
|
26 | - else |
|
26 | - else |
|
27 | %td.text-right= sc[i][0] |
|
27 | %td.text-right= sc[i][0] |
|
28 | - total += sc[i][0] |
|
28 | - total += sc[i][0] |
|
29 | - num_passed += 1 if sc[i][1] |
|
29 | - num_passed += 1 if sc[i][1] |
|
30 | %td.text-right= total |
|
30 | %td.text-right= total |
|
31 | %td.text-right= num_passed |
|
31 | %td.text-right= num_passed |
|
32 |
|
32 | ||
|
33 | :javascript |
|
33 | :javascript |
|
34 | $.bootstrapSortable(true,'reversed') |
|
34 | $.bootstrapSortable(true,'reversed') |
You need to be logged in to leave comments.
Login now