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
@@ -15,6 +15,21 | |||
|
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 |
@@ -35,21 +50,10 | |||
|
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' |
@@ -448,5 +452,33 | |||
|
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,6 +1,8 | |||
|
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 |
@@ -20,8 +20,7 | |||
|
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 | + |
@@ -33,9 +33,9 | |||
|
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}") |
You need to be logged in to leave comments.
Login now