-
Notifications
You must be signed in to change notification settings - Fork 42
Expand file tree
/
Copy pathshow.html.erb
More file actions
94 lines (89 loc) · 3.88 KB
/
show.html.erb
File metadata and controls
94 lines (89 loc) · 3.88 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
<div class="points-container">
<div class="course-point-header">
<% unless @bare_layout %>
<h1>Points for <%= @sheetname %> of <%= @course.title %></h1>
<% end %>
<div class="alternative-options-links">
<% if params[:sort_by].blank? %>
<%= link_to 'Sort by points', organization_course_point_path(@organization, @course, @sheetname, :sort_by => 'points'),class: "btn btn-primary" %>
<% else %>
<%= link_to('Sort by username', organization_course_point_path(@organization, @course, @sheetname, show_attempted: params[:show_attempted]), class: "btn btn-primary") %>
<% end %>
<% if can?(:teach, @course) %>
<%= link_to('Export as CSV', organization_course_point_path(@organization, @course, @sheetname, :sort_by => params[:sort_by], :format => 'csv'), class: "btn btn-primary") %>
<% end %>
</div>
<% if can? :refresh_gdocs_spreadsheet, @course %>
<% link_to 'Refresh Google Docs worksheet', refresh_gdocs_organization_course_point_path(@organization, @course, @sheetname), class: "btn btn-primary" %>
<% end %>
</div>
</div>
<% @user_fields_length = @user_fields ? @user_fields.length : 0 %>
<% @exercises_length = @exercises? @exercises.length : 0 %>
<%= content_tag('div', :class => if @bare_layout then nil elsif @user_fields_length + @exercises_length >= 6 then 'scrollable' end) do %>
<table class="points">
<thead>
<% if tailoring.show_exercise_names_in_points_table %>
<tr>
<th></th>
<th>Username</th>
<% if @user_fields %>
<% @user_fields.each do |field| %>
<th><%= field.label %></th>
<% end %>
<% end %>
<% @exercises.each do |exercise| %>
<% points = exercise.available_points.order! %>
<% if points.size > 0 %>
<th class="point-cell" colspan="<%= points.size %>"><%= tailoring.exercise_name_for_points_table(exercise) %></th>
<% end %>
<% end %>
</tr>
<% end %>
<tr>
<th colspan="<%= 2 + (@user_fields ? @user_fields.length : 0) %>"></th>
<% @exercises.each do |exercise| %>
<% exercise.available_points.sort.each do |point| %>
<th class="point-cell"><%= point.name %></th>
<% end %>
<% end %>
</tr>
</thead>
<tbody>
<% @users.each_with_index do |user, index| %>
<% if !user.administrator? || current_user.administrator? %>
<% row_class = if user.administrator? then "admin" else "student" end %>
<% user_points = @users_to_points[user.login] %>
<tr class="<%= row_class %>">
<td><%= index + 1 %></td>
<td>
<% if current_user.id == user.id || can?(:teach, @course) %>
<%= link_to user.login, participant_path(user) %>
<% else %>
<%= user.login %>
<% end %>
</td>
<% if @user_fields %>
<% @user_fields.each do |field| %>
<% value = user.user_field_values.find { |o| o.field_name == field.name }%>
<td><%= value.value if value %></td>
<% end %>
<% end %>
<% @exercises.each do |exercise| %>
<% exercise.available_points.sort.each do |p| %>
<td class="point-cell">
<% if user_points.include?(p.name) %>
<%= raw("✔") %>
<% elsif !params[:show_attempted].nil? && exercise.attempted_by?(user) %>
<%= raw("✘") %>
<% end %>
</td>
<% end %>
<% end %>
</tr>
<% end %>
<% end %>
</tbody>
</table>
<% end %>
</div>