Skip to content

Commit

Permalink
Refactoring the teams rendering in /views/student_teams/view.html.erb
Browse files Browse the repository at this point in the history
  • Loading branch information
root committed Mar 24, 2024
1 parent 73dc777 commit 146ad3f
Show file tree
Hide file tree
Showing 11 changed files with 103 additions and 302 deletions.
4 changes: 2 additions & 2 deletions app/models/team.rb
@@ -1,6 +1,6 @@
class Team < ApplicationRecord
has_many :teams_users, dependent: :destroy
has_many :users, through: :teams_users
has_many :teams_participants, dependent: :destroy
has_many :users, through: :teams_participants
has_many :join_team_requests, dependent: :destroy
has_one :team_node, foreign_key: :node_object_id, dependent: :destroy
has_many :signed_up_teams, dependent: :destroy
Expand Down
4 changes: 2 additions & 2 deletions app/models/user.rb
Expand Up @@ -11,8 +11,8 @@ class User < ApplicationRecord
has_many :participants, class_name: 'Participant', foreign_key: 'user_id', dependent: :destroy
has_many :assignment_participants, class_name: 'AssignmentParticipant', foreign_key: 'user_id', dependent: :destroy
has_many :assignments, through: :participants
has_many :teams_users, dependent: :destroy
has_many :teams, through: :teams_users
has_many :teams_participants, dependent: :destroy
has_many :teams, through: :teams_participants
has_many :sent_invitations, class_name: 'Invitation', foreign_key: 'from_id', dependent: :destroy
has_many :received_invitations, class_name: 'Invitation', foreign_key: 'to_id', dependent: :destroy
has_many :children, class_name: 'User', foreign_key: 'parent_id'
Expand Down
3 changes: 1 addition & 2 deletions app/views/student_teams/_display_advertisements.html.erb
@@ -1,4 +1,3 @@
<!-- Partial for displaying advertisements -->
<table style="width:80%" align="center" >
<tr>
<td>
Expand All @@ -13,4 +12,4 @@
<% end %>
</td>
</tr>
</table>
</table>
23 changes: 14 additions & 9 deletions app/views/student_teams/_invited_people.html.erb
@@ -1,14 +1,19 @@
<!-- Partial to display people who have been invited to collaborate -->
<tr>
<td><%= inv.to_user.name(session[:ip]) %></td>
<td><%= inv.to_user.fullname(session[:ip]) %></td>
<td><%= inv.to_user.email(session[:ip]) %></td>
<% if inv.reply_status == 'A' %>
<td align = "center"><%=t ".accepted"%></td>
<% elsif inv.reply_status == 'D' %>
<td align = "center"><%=t ".declined"%></td>
<% else %>
<td align = "center">Waiting for reply
&nbsp;&nbsp;<%= link_to "Retract", {:controller => 'invitations', :action => 'cancel', :inv_id => inv.id, :student_id => @student.id} %></td>
<% end %>
<tr>
<td align="center">
<% case inv.reply_status %>
<% when 'A' %>
<%= t(".accepted") %>
<% when 'D' %>
<%= t(".declined") %>
<% else %>
Waiting for reply
&nbsp;&nbsp;<%= link_to "Retract", {controller: 'invitations', action: 'cancel', inv_id: inv.id, student_id: @student.id}, method: :post %>
<% end %>
</td>
</tr>

</tr>
28 changes: 10 additions & 18 deletions app/views/student_teams/_received_invitations.html.erb
@@ -1,28 +1,20 @@
<!-- Partial for invitations received for collaboration on an assignment -->
<% if inv.reply_status == 'W' %>
<tr>
<td><%= inv.from_user.name(session[:ip]) %></td>
<td>
<% teams_users = TeamsUser.where(['user_id = ?', inv.from_id]) %>
<% teams_users.each do |teams_user| %>
<% current_team = Team.where(['id = ? and parent_id = ?', teams_user.team_id, @student.assignment.id]).first %>
<%= Team.find(current_team.id).name unless current_team.nil?%>
<% Team.includes(:teams_participants)
.where(teams_participants: { user_id: inv.from_id }, parent_id: @student.assignment.id)
.each do |team| %>
<%= team.name %>
<% end %>
</td>
<td>
<%if @student.team.nil?
@team_id = 0
else
@team_id = @student.team.id
end %>
<%= link_to "Accept",
{:controller => 'invitations', :action => 'accept', :inv_id => inv.id, :student_id => @student.id, :team_id => @team_id},
{:onClick => "javascript: return confirm('Your topic (or place on waiting lists) will be relinquished if you accept the invitation. Do you want to continue?');"}
%>
|
<%= link_to "Decline",
{:controller => 'invitations', :action => 'decline', :inv_id => inv.id, :student_id => @student.id}
%>
<% team_id = @student.team&.id || 0 %>
<%= link_to 'Accept', accept_invitations_path(inv_id: inv.id, student_id: @student.id, team_id: team_id),
data: { confirm: 'Accepting this invitation will relinquish your current topic or waiting list spot. Continue?' } %>
|
<%= link_to 'Decline', decline_invitations_path(inv_id: inv.id, student_id: @student.id), method: :get %>

</td>
</tr>
<% end %>
11 changes: 6 additions & 5 deletions app/views/student_teams/_select_duty_form.html.erb
@@ -1,6 +1,7 @@
<%= form_tag :controller => 'teams_users', :action => 'update_duties' do %>
<%= hidden_field_tag 'participant_id', participant_id %>
<%= hidden_field_tag 'teams_user_id', teams_user_id %>
<%= collection_select(:teams_user, :duty_id, Duty.where("assignment_id = ?", assignment_id).select{|duty| duty.can_be_assigned?(@student.team)} , :id, :name, {:prompt => 'Please select a role'}) %>
<%= form_tag controller: 'teams_participants', action: 'update_duties' do %>
<%= hidden_field_tag :participant_id, participant_id %>
<%= hidden_field_tag :teams_user_id, teams_user_id %>
<%= collection_select(:teams_participant, :duty_id, Duty.where(assignment_id: assignment_id).select { |duty| duty.can_be_assigned?(@student.team) }, :id, :name, prompt: 'Please select a role') %>
<%= submit_tag "Save", data: { disable_with: "Submitting..." } %>
<% end %>
<% end %>

53 changes: 11 additions & 42 deletions app/views/student_teams/_send_invitations.html.erb
@@ -1,44 +1,13 @@
<!-- Partial for sending invitations -->
<% if @student.team.nil? %> <!--dead code-->
<h3><%=t ".name_team"%></h3>
<%= form_tag :controller => 'student_teams', :action => 'create' do %>
<%= hidden_field_tag 'student_id', @student.id %>
<label for="team_name"><%=t ".team_name"%></label>&nbsp;
<%= text_field 'team', 'name' %>
<%= submit_tag t(".name_team") %>
<% if @student.team.present? && !@student.team.full? %>
<strong><%= t("student_teams.view.send_invite") %></strong>
<%= form_tag(invitations_path, method: :post) do %>
<%= hidden_field_tag :team_id, @student.team.id %>
<%= hidden_field_tag :student_id, @student.id %>
<%= hidden_field_tag :assignment_id, @student.assignment.id %>
<div style="width:80%; margin: auto;">
<%= t("student_teams.view.enter_user") %>
<%= text_field_tag 'user[name]', nil, size: 41 %>
<%= submit_tag t("student_teams.view.invite_button") %>
</div>
<% end %>
<% elsif !@student.team.full?%>
<b><%=t ".invite_people"%></b>
<%= form_tag :controller => 'invitations', :action => 'create' do %>
<%= hidden_field_tag 'team_id', @student.team.id %>
<%= hidden_field_tag 'student_id', @student.id %>
<%= hidden_field_tag 'session[:dummy][:assignment_id]', @student.parent_id %>
<table style="width:80%" align="center" >
<tr>
<td>
<%=t ".enter_user"%><%= text_field_with_auto_complete :user, :name, {:size => 41} %>
<input type='submit' value='Invite'/>
</td>
</tr>
</table>
<% end %>
<% end %>

<!--waiting listed users on the same topic-->
<% if @users_on_waiting_list && @users_on_waiting_list.count>0%>
<h3><%=t ".users_waiting"%></h3>
<table>
<tr>
<td><b>&nbsp; <%=t ".user_id"%> &nbsp; </b></td>
<td><b>&nbsp; <%=t ".fullname"%> &nbsp; </b></td>
<td><b>&nbsp; <%=t ".email"%> &nbsp; </b></td>
</tr>
<% @users_on_waiting_list.each do |user|%>
<tr>
<td> &nbsp; <%=user.name(session[:ip])%> &nbsp; </td>
<td> &nbsp; <%=user.fullname(session[:ip])%> &nbsp; </td>
<td> &nbsp; <%=user.email(session[:ip])%> &nbsp; </td>
</tr>
<% end%>
</table>
<% end %>
56 changes: 22 additions & 34 deletions app/views/student_teams/_team_display.html.erb
@@ -1,6 +1,5 @@
<!-- Partial to display team -->
<table style="width:80%" align="center" >
<tr style="border: 1px outset #000000; padding: 10px 20px" >
<table style="width:80%" align="center">
<tr style="border: 1px outset #000000; padding: 10px 20px">
<th class="head">Username</th>
<th class="head">Full name</th>
<% if @student.assignment.duty_based_assignment? %>
Expand All @@ -9,65 +8,54 @@
<th class="head">Email address</th>

<% if @teammate_review_allowed %>
<th class="head"><%=t ".review_action"%></th>
<th class="head"><%= t(".review_action") %></th>
<% end %>
</tr>

<% @student.team.participants.each do |member| %> <!--start team member content-->
<% @student.team.participants.each do |member| %>
<tr>
<td><%= member.user.name(session[:ip]) %></td>
<td><%= member.user.fullname(session[:ip]) %></td>
<%if @student.assignment.duty_based_assignment? %>
<% if @student.assignment.duty_based_assignment? %>
<% team_user = member.team_user %>
<!-- Gets duty of member if the assignment is duty based and member has a duty -->
<%unless team_user.duty_id.nil?%>
<% unless team_user.duty_id.nil? %>
<td><%= Duty.find(team_user.duty_id).name %></td>
<%else%>
<% else %>
<td>
<%if member.user.id == session[:user].id%>
<%= render :partial=>'select_duty_form', :locals => {:assignment_id => @student.assignment.id, :participant_id => member.id, :teams_user_id => team_user.id}%>
<%else%>
<% if member.user.id == session[:user].id %>
<%= render partial: 'select_duty_form', locals: { assignment_id: @student.assignment.id, participant_id: member.id, teams_user_id: team_user.id } %>
<% else %>
Not Selected
<%end%>
<% end %>
</td>
<%end%>
<%end%>
<% end %>
<% end %>
<td><%= member.user.email(session[:ip]) %></td>

<!--if you can review a teammate, display Review hyperlink; if the review has been done, display View and Edit Hyperlinks-->
<% if @teammate_review_allowed &&
((@student.assignment.duty_based_assignment? && !team_user.duty_id.nil?) || (!@student.assignment.duty_based_assignment?))%>
<% if @student.assignment.questionnaires.find_by_type('TeammateReviewQuestionnaire') != nil and member.user.id != session[:user].id %>
<% map = TeammateReviewResponseMap.where(['reviewer_id = ? and reviewee_id = ?', @student.id, member.id]).first
if map.nil?
map = TeammateReviewResponseMap.create(:reviewer_id => @student.id, :reviewee_id => member.id, :reviewed_object_id => @student.assignment.id)
end
<% if @teammate_review_allowed && ((@student.assignment.duty_based_assignment? && !team_user.duty_id.nil?) || (!@student.assignment.duty_based_assignment?)) %>
<% if @student.assignment.questionnaires.find_by_type('TeammateReviewQuestionnaire') != nil && member.user.id != session[:user].id %>
<% map = TeammateReviewResponseMap.where(reviewer_id: @student.id, reviewee_id: member.id).first_or_create(reviewed_object_id: @student.assignment.id)
review = map.response.last
if review.nil? %>
<td>
<%= link_to "Review", {:controller => 'response', :action => 'new', :id => map.map_id, :return => "teammate"} %>
<%= link_to t(".review"), controller: 'response', action: 'new', id: map.map_id, return: "teammate" %>
</td>
<% else %>
<td>
<%= link_to t(".view"), {:controller => 'response', :action => 'view', :id => review.id} %>
<%= link_to t(".view"), controller: 'response', action: 'view', id: review.id %>
&nbsp;&nbsp;
<%= link_to t(".edit"), {:controller => 'response', :action => 'edit', :id => review.id, :return => "teammate"} %>
<%= link_to t(".edit"), controller: 'response', action: 'edit', id: review.id, return: "teammate" %>
</td>
<% end %>
<% end %>
<% end %>
</tr>
<% end %> <!--end team member content-->
<% end %>

<tr>
<td colspan="3">
<br/>
<%= link_to t(".leave_team"), remove_participant_student_teams_path(student_id: @student.id, team_id: @student.team.id) %>
<td>
</td>
</tr>
<%# <% if @teammate_review_allowed %>
<%# <tr style="border: 1px outset #000000; padding: 10px 20px" >
<th class="head">Teammate review question</th>
<th class="head">Self contribution percentage</th>
</tr> %>
<%# <% end %> <!--end self contribution for Cake questions-->
</table>
16 changes: 8 additions & 8 deletions app/views/student_teams/edit.html.erb
@@ -1,12 +1,12 @@
<H1><%=t ".edit_team"%></H1>
<%= form_for '/student_teams/update', method: :put do %>
<%= hidden_field_tag 'team_id', @team.id %>
<%= hidden_field_tag 'student_id', @student.id %>
<label for="team_name"><%=t ".team_name"%></label>&nbsp;
<%= text_field 'team', 'name'%>
<h1><%= t ".edit_team" %></h1>
<%= form_with url: '/student_teams/update', method: :put, local: true do %>
<%= hidden_field_tag :team_id, @team.id %>
<%= hidden_field_tag :student_id, @student.id %>
<label for="team_name"><%= t ".team_name" %></label>&nbsp;
<%= text_field :team, :name %>
<br>
<br>
<%= submit_tag "Save" %>
<%= submit_tag t("Save") %>
<% end %>
<br/>
<a href="javascript:window.history.back()"><%=t ".back"%></a>
<%= link_to t(".back"), 'javascript:window.history.back()' %>

0 comments on commit 146ad3f

Please sign in to comment.