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 | 12 | admin_authorization |
|
13 | 13 | } |
|
14 | 14 | |
|
15 | 15 | def max_score |
|
16 | 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 | 33 | def show_max_score |
|
19 | 34 | #process parameters |
|
20 | 35 | #problems |
|
21 | 36 | @problems = [] |
|
22 | 37 | params[:problem_id].each do |id| |
|
23 | 38 | next unless id.strip != "" |
@@ -32,27 +47,16 | |||
|
32 | 47 | end |
|
33 | 48 | |
|
34 | 49 | #set up range from param |
|
35 | 50 | since_id = params.fetch(:min_id, 0).to_i |
|
36 | 51 | until_id = params.fetch(:max_id, 0).to_i |
|
37 | 52 | |
|
38 | - #get data | |
|
39 | - @scorearray = Array.new | |
|
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 | |
|
53 | + #calculate the routine | |
|
54 | + @scorearray = calculate_max_score(problems, users,since_id,until_id) | |
|
52 | 55 | |
|
56 | + #rencer accordingly | |
|
53 | 57 | if params[:commit] == 'download csv' then |
|
54 | 58 | csv = gen_csv_from_scorearray(@scorearray,@problems) |
|
55 | 59 | send_data csv, filename: 'max_score.csv' |
|
56 | 60 | else |
|
57 | 61 | #render template: 'user_admin/user_stat' |
|
58 | 62 | render 'max_score' |
@@ -445,8 +449,36 | |||
|
445 | 449 | |
|
446 | 450 | |
|
447 | 451 | |
|
448 | 452 | |
|
449 | 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 | 484 | end |
@@ -1,9 +1,11 | |||
|
1 | 1 | %li.list-group-item |
|
2 | 2 | %strong |
|
3 | 3 | = announcement.title |
|
4 | + - if @current_user.admin? | |
|
5 | + = link_to 'Edit', edit_announcement_path(announcement), class: 'btn btn-xs btn-default' | |
|
4 | 6 | %small= "(updated #{time_ago_in_words(announcement.updated_at)} ago on #{announcement.updated_at})" |
|
5 | 7 | |
|
6 | 8 | %br |
|
7 | 9 | = markdown(announcement.body) |
|
8 | 10 | :javascript |
|
9 | 11 | Announcement.updateRecentId(#{announcement.id}); |
@@ -17,11 +17,10 | |||
|
17 | 17 | = submission.grader_comment |
|
18 | 18 | = "]" |
|
19 | 19 | %br |
|
20 | 20 | %strong View: |
|
21 | 21 | - if GraderConfiguration.show_grading_result |
|
22 | 22 | = link_to '[detailed result]', :action => 'result', :id => submission.id |
|
23 |
- = link_to |
|
|
24 | - = " | " | |
|
25 | - = link_to("[#{t 'main.src_link'}]",{:action => 'source', :id => submission.id}) | |
|
26 | - = " | " | |
|
27 | - = link_to "[#{t 'main.submissions_link'}]", problem_submissions_path(problem_id) | |
|
23 | + = link_to "#{t 'main.cmp_msg'}", {:action => 'compiler_msg', :id => submission.id}, {popup: true,class: 'btn btn-xs btn-info'} | |
|
24 | + = link_to "#{t 'main.src_link'}",{:action => 'source', :id => submission.id}, class: 'btn btn-xs btn-info' | |
|
25 | + = link_to "#{t 'main.submissions_link'}", problem_submissions_path(problem_id), class: 'btn btn-xs btn-info' | |
|
26 | + |
@@ -30,15 +30,15 | |||
|
30 | 30 | %sup{class: 'text-primary',data: {toggle: 'tooltip'}, title: 'Let user uses test interface on this problem?' } [?] |
|
31 | 31 | - if GraderConfiguration.multicontests? |
|
32 | 32 | %th Contests |
|
33 | 33 | - for problem in @problems |
|
34 | 34 | %tr{:class => "#{(problem.available) ? "success" : "danger"}", :id => "prob-#{problem.id}", :name => "prob-#{problem.id}"} |
|
35 | 35 | - @problem=problem |
|
36 |
- %td= |
|
|
37 |
- %td= |
|
|
38 |
- %td.text-right= |
|
|
36 | + %td= problem.name #in_place_editor_field :problem, :name, {}, :rows=>1 | |
|
37 | + %td= problem.full_name #in_place_editor_field :problem, :full_name, {}, :rows=>1 | |
|
38 | + %td.text-right= problem.full_score #in_place_editor_field :problem, :full_score, {}, :rows=>1 | |
|
39 | 39 | %td= problem.date_added |
|
40 | 40 | %td= toggle_button(@problem.available?, toggle_problem_url(@problem), "problem-avail-#{@problem.id}") |
|
41 | 41 | %td= toggle_button(@problem.test_allowed?, toggle_test_problem_url(@problem), "problem-test-#{@problem.id}") |
|
42 | 42 | - if GraderConfiguration.multicontests? |
|
43 | 43 | %td |
|
44 | 44 | = problem.contests.collect { |c| c.name }.join(', ') |
You need to be logged in to leave comments.
Login now