blob: 15b59f4cfef7ec651877acbe87ccdd6bab4be807 (
plain)
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
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
|
<h1><%= @tournament.name %> - Matches</h1>
<table class="table">
<thead>
<tr>
<th>Name</th>
<th>Status</th>
<th>Winner</th>
<th></th>
</tr>
</thead>
<tbody class="table-hover">
<% @tournament.matches.order(:id).reverse.each do |match| %><tr>
<td><%= match.name %></td>
<td><%= match.status %></td>
<td><%= (match.winner.nil? ? "-" : "Team #{match.winner.id}") %></td>
<td><%= link_to "Show", tournament_match_path(@tournament, match) %>
<td> <%# If user is the host, let them start the tournment %>
<% if @tournament.hosts.include?(current_user) %>
<%= form_tag(tournament_match_path(@tournament, match), method: "put") do %>
<input type="hidden" name="update_action" value="start">
<% @startable = (match.status == 0) and (match.teams.count >= @tournament.min_teams_per_match) %>
<%= submit_tag("Start Match", :disabled => ! @startable) %>
<% end %>
<% end %>
</td>
</tr><% end %>
</tbody>
</table>
<br>
<div id="match-tree">
<SVG version="1.1"
baseProfile="full"
width="100%" height="<%= @height = [@height, 500].max %>"
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink">
<% lastrx = 0
lastry = 0
lastrh = 0
lastrw = 0 %>
<defs>
<radialGradient id="gradMatch" cx="50%" cy="50%" r="50%" fx="50%" fy="50%">
<stop offset="0%" style="stop-color:#ffd281;
stop-opacity:0" />
<stop offset="100%" style="stop-color:#EEA236;stop-opacity:1" />
</radialGradient>
</defs>
<script type="text/ecmascript"><![CDATA[
function redirect(i){
window.location.replace("<%= request.original_url %>"+"/"+i);
}
]]>
</script>
<% (1..@matches.count).each do |i| %>
<g id="svg-match-<%= i %>" onclick="redirect(<%= @matches[i-1].id %>)" cursor="pointer">
<rect height="<%= rh = 100/(2**(@depth-1)+1) - 5 %>%"
width="<%= rw = 100/(@depth+1) - 5 %>%"
x="<%= rx = 50/(@depth+1) + 100/(@depth+1)*(@depth-(Math.log2(i).floor+1)) %>%"
y="<%= ry = ( 100/(2**(Math.log2(i).floor)+1) + rh * 1.1 * (2**Math.log2(i).ceil-i)) %>%"
fill="url(#gradMatch)"
rx="5px"
stroke-width="2"
<% case @matches[i-1].status %>
<% when 0 %>
<% if @matches[i-1].teams.count < @tournament.min_teams_per_match %>
stroke="red"
fill-opacity="0.6"
<% else %>
stroke="green"
<% end %>
<% when 1 %>
stroke="orange"
<% when 2 %>
stroke="yellow"
<% when 3 %>
stroke="grey"
<% end %>
/>
<rect width="<%= rw-5 %>%" height="<%= rh/4 %>%" x="<%= rx + 2.5 %>%" y="<%= ry + rh/6 %>%" fill="<%= @matches[i-1].teams.first and @matches[i-1].teams.first.users.include?(current_user) ? "#BCED91" : "white" %>" stroke="black" />
<text x="<%= rx + rw/4 %>%" y="<%= ry + rh/3 %>%" font-size="<%= rh %>">
<% if @matches[i-1].teams.first %>
Team <%= @matches[i-1].teams.first.id %>
<% end %>
</text>
<text x="<%= rx + 1.3*rw/3 %>%" y="<%= ry + 5.2*rh/9 %>%" font-size="<%= rh %>"> VS </text>
<rect width="<%= rw-5 %>%" height="<%= rh/4 %>%" x="<%= rx + 2.5 %>%" y="<%= ry + 3*rh/5 %>%" fill="<%= @matches[i-1].teams[1] and @matches[i-1].teams[1].users.include?(current_user) ? "#BCED91" : "white" %>" stroke="black" />
<text x="<%= rx + rw/4 %>%" y="<%= ry + 4*rh/5 %>%" font-size="<%= rh %>">
<% if @matches[i-1].teams[1] %>
Team <%= @matches[i-1].teams[1].id %>
<% end %>
</text>
<% if i > 1 %>
<line x1="<%= rx+rw %>%" y1="<%= ry+rh/2 %>%" x2="<%= lastrx %>%" y2="<%= lastry+lastrh/2 %>%" stroke="black" stroke-width="2" >
<% end %>
<% if Math.log2(i+1) == Math.log2(i+1).ceil %>
<% lastrx = rx
lastry = ry
lastrh = rh
lastrw = rw %>
<% end %>
</g>
<% end %>
</SVG>
</div>
|