Description:
- remove inplace editor from view
- add link to edit announcement directly
- modify submission_short display button
Commit status:
[Not Reviewed]
References:
Diff options:
Comments:
0 Commit comments
0 Inline Comments
Unresolved TODOs:
There are no unresolved TODOs
r598:db36298d10ca - - 4 files changed: 55 inserted, 22 deleted
@@ -12,12 +12,27 | |||||
|
12 | admin_authorization |
|
12 | admin_authorization |
|
13 | } |
|
13 | } |
|
14 |
|
14 | ||
|
15 | def max_score |
|
15 | def max_score |
|
16 | end |
|
16 | end |
|
17 |
|
17 | ||
|
|
18 | + def current_score | ||
|
|
19 | + @problems = Problem.find_available_problems | ||
|
|
20 | + @users = User.includes(:contests).includes(:contest_stat).where(enabled: true) | ||
|
|
21 | + @scorearray = calculate_max_score(problems, users,0,0,{max: true}) | ||
|
|
22 | + | ||
|
|
23 | + #rencer accordingly | ||
|
|
24 | + if params[:commit] == 'download csv' then | ||
|
|
25 | + csv = gen_csv_from_scorearray(@scorearray,@problems) | ||
|
|
26 | + send_data csv, filename: 'max_score.csv' | ||
|
|
27 | + else | ||
|
|
28 | + #render template: 'user_admin/user_stat' | ||
|
|
29 | + render 'current_score' | ||
|
|
30 | + end | ||
|
|
31 | + end | ||
|
|
32 | + | ||
|
18 | def show_max_score |
|
33 | def show_max_score |
|
19 | #process parameters |
|
34 | #process parameters |
|
20 | #problems |
|
35 | #problems |
|
21 | @problems = [] |
|
36 | @problems = [] |
|
22 | params[:problem_id].each do |id| |
|
37 | params[:problem_id].each do |id| |
|
23 | next unless id.strip != "" |
|
38 | next unless id.strip != "" |
@@ -32,27 +47,16 | |||||
|
32 | end |
|
47 | end |
|
33 |
|
48 | ||
|
34 | #set up range from param |
|
49 | #set up range from param |
|
35 | since_id = params.fetch(:min_id, 0).to_i |
|
50 | since_id = params.fetch(:min_id, 0).to_i |
|
36 | until_id = params.fetch(:max_id, 0).to_i |
|
51 | until_id = params.fetch(:max_id, 0).to_i |
|
37 |
|
52 | ||
|
38 | - #get data |
|
53 | + #calculate the routine |
|
39 | - @scorearray = Array.new |
|
54 | + @scorearray = calculate_max_score(problems, users,since_id,until_id) |
|
40 | - @users.each do |u| |
|
||
|
41 | - ustat = Array.new |
|
||
|
42 | - ustat[0] = u |
|
||
|
43 | - @problems.each do |p| |
|
||
|
44 | - max_points = 0 |
|
||
|
45 | - Submission.find_in_range_by_user_and_problem(u.id,p.id,since_id,until_id).each do |sub| |
|
||
|
46 | - max_points = sub.points if sub and sub.points and (sub.points > max_points) |
|
||
|
47 | - end |
|
||
|
48 | - ustat << [(max_points.to_f*100/p.full_score).round, (max_points>=p.full_score)] |
|
||
|
49 | - end |
|
||
|
50 | - @scorearray << ustat |
|
||
|
51 | - end |
|
||
|
52 |
|
55 | ||
|
|
56 | + #rencer accordingly | ||
|
53 | if params[:commit] == 'download csv' then |
|
57 | if params[:commit] == 'download csv' then |
|
54 | csv = gen_csv_from_scorearray(@scorearray,@problems) |
|
58 | csv = gen_csv_from_scorearray(@scorearray,@problems) |
|
55 | send_data csv, filename: 'max_score.csv' |
|
59 | send_data csv, filename: 'max_score.csv' |
|
56 | else |
|
60 | else |
|
57 | #render template: 'user_admin/user_stat' |
|
61 | #render template: 'user_admin/user_stat' |
|
58 | render 'max_score' |
|
62 | render 'max_score' |
@@ -445,8 +449,36 | |||||
|
445 |
|
449 | ||
|
446 |
|
450 | ||
|
447 |
|
451 | ||
|
448 |
|
452 | ||
|
449 | end |
|
453 | end |
|
450 |
|
454 | ||
|
|
455 | + protected | ||
|
|
456 | + | ||
|
|
457 | + def calculate_max_score(problems, users,since_id,until_id, get_last_score = false) | ||
|
|
458 | + scorearray = Array.new | ||
|
|
459 | + users.each do |u| | ||
|
|
460 | + ustat = Array.new | ||
|
|
461 | + ustat[0] = u | ||
|
|
462 | + problems.each do |p| | ||
|
|
463 | + unless get_last_score | ||
|
|
464 | + #get max score | ||
|
|
465 | + max_points = 0 | ||
|
|
466 | + Submission.find_in_range_by_user_and_problem(u.id,p.id,since_id,until_id).each do |sub| | ||
|
|
467 | + max_points = sub.points if sub and sub.points and (sub.points > max_points) | ||
|
|
468 | + end | ||
|
|
469 | + ustat << [(max_points.to_f*100/p.full_score).round, (max_points>=p.full_score)] | ||
|
|
470 | + else | ||
|
|
471 | + #get latest score | ||
|
|
472 | + sub = Submission.find_last_by_user_and_problem(u.id,p.id) | ||
|
|
473 | + if (sub!=nil) and (sub.points!=nil) and p and p.full_score | ||
|
|
474 | + ustat << [(sub.points.to_f*100/p.full_score).round, (sub.points>=p.full_score)] | ||
|
|
475 | + else | ||
|
|
476 | + ustat << [0,false] | ||
|
|
477 | + end | ||
|
|
478 | + end | ||
|
|
479 | + scorearray << ustat | ||
|
|
480 | + end | ||
|
|
481 | + return scorearray | ||
|
|
482 | + end | ||
|
451 |
|
483 | ||
|
452 | end |
|
484 | end |
@@ -1,9 +1,11 | |||||
|
1 | %li.list-group-item |
|
1 | %li.list-group-item |
|
2 | %strong |
|
2 | %strong |
|
3 | = announcement.title |
|
3 | = announcement.title |
|
|
4 | + - if @current_user.admin? | ||
|
|
5 | + = link_to 'Edit', edit_announcement_path(announcement), class: 'btn btn-xs btn-default' | ||
|
4 | %small= "(updated #{time_ago_in_words(announcement.updated_at)} ago on #{announcement.updated_at})" |
|
6 | %small= "(updated #{time_ago_in_words(announcement.updated_at)} ago on #{announcement.updated_at})" |
|
5 |
|
7 | ||
|
6 | %br |
|
8 | %br |
|
7 | = markdown(announcement.body) |
|
9 | = markdown(announcement.body) |
|
8 | :javascript |
|
10 | :javascript |
|
9 | Announcement.updateRecentId(#{announcement.id}); |
|
11 | Announcement.updateRecentId(#{announcement.id}); |
@@ -17,11 +17,10 | |||||
|
17 | = submission.grader_comment |
|
17 | = submission.grader_comment |
|
18 | = "]" |
|
18 | = "]" |
|
19 | %br |
|
19 | %br |
|
20 | %strong View: |
|
20 | %strong View: |
|
21 | - if GraderConfiguration.show_grading_result |
|
21 | - if GraderConfiguration.show_grading_result |
|
22 | = link_to '[detailed result]', :action => 'result', :id => submission.id |
|
22 | = link_to '[detailed result]', :action => 'result', :id => submission.id |
|
23 |
- = link_to |
|
23 | + = link_to "#{t 'main.cmp_msg'}", {:action => 'compiler_msg', :id => submission.id}, {popup: true,class: 'btn btn-xs btn-info'} |
|
24 | - = " | " |
|
24 | + = link_to "#{t 'main.src_link'}",{:action => 'source', :id => submission.id}, class: 'btn btn-xs btn-info' |
|
25 | - = link_to("[#{t 'main.src_link'}]",{:action => 'source', :id => submission.id}) |
|
25 | + = link_to "#{t 'main.submissions_link'}", problem_submissions_path(problem_id), class: 'btn btn-xs btn-info' |
|
26 | - = " | " |
|
26 | + |
|
27 | - = link_to "[#{t 'main.submissions_link'}]", problem_submissions_path(problem_id) |
|
@@ -30,15 +30,15 | |||||
|
30 | %sup{class: 'text-primary',data: {toggle: 'tooltip'}, title: 'Let user uses test interface on this problem?' } [?] |
|
30 | %sup{class: 'text-primary',data: {toggle: 'tooltip'}, title: 'Let user uses test interface on this problem?' } [?] |
|
31 | - if GraderConfiguration.multicontests? |
|
31 | - if GraderConfiguration.multicontests? |
|
32 | %th Contests |
|
32 | %th Contests |
|
33 | - for problem in @problems |
|
33 | - for problem in @problems |
|
34 | %tr{:class => "#{(problem.available) ? "success" : "danger"}", :id => "prob-#{problem.id}", :name => "prob-#{problem.id}"} |
|
34 | %tr{:class => "#{(problem.available) ? "success" : "danger"}", :id => "prob-#{problem.id}", :name => "prob-#{problem.id}"} |
|
35 | - @problem=problem |
|
35 | - @problem=problem |
|
36 |
- %td= |
|
36 | + %td= problem.name #in_place_editor_field :problem, :name, {}, :rows=>1 |
|
37 |
- %td= |
|
37 | + %td= problem.full_name #in_place_editor_field :problem, :full_name, {}, :rows=>1 |
|
38 |
- %td.text-right= |
|
38 | + %td.text-right= problem.full_score #in_place_editor_field :problem, :full_score, {}, :rows=>1 |
|
39 | %td= problem.date_added |
|
39 | %td= problem.date_added |
|
40 | %td= toggle_button(@problem.available?, toggle_problem_url(@problem), "problem-avail-#{@problem.id}") |
|
40 | %td= toggle_button(@problem.available?, toggle_problem_url(@problem), "problem-avail-#{@problem.id}") |
|
41 | %td= toggle_button(@problem.test_allowed?, toggle_test_problem_url(@problem), "problem-test-#{@problem.id}") |
|
41 | %td= toggle_button(@problem.test_allowed?, toggle_test_problem_url(@problem), "problem-test-#{@problem.id}") |
|
42 | - if GraderConfiguration.multicontests? |
|
42 | - if GraderConfiguration.multicontests? |
|
43 | %td |
|
43 | %td |
|
44 | = problem.contests.collect { |c| c.name }.join(', ') |
|
44 | = problem.contests.collect { |c| c.name }.join(', ') |
You need to be logged in to leave comments.
Login now