1
Fork 0
Arthur Yunusov 2013-10-06 13:42:57 +06:00
commit dc0e950683
3 changed files with 46 additions and 18 deletions

View File

@ -164,7 +164,7 @@
- date: 22.09.2013 - date: 22.09.2013
white: Magian white: Magian
black: Nedis black: Nedis
result: '0:1' result: '1:0'
- date: 21.09.2013 - date: 21.09.2013
white: Genuine white: Genuine

View File

@ -4,7 +4,7 @@
Время проведения: 15.09.2013 - 22.09.2013 Время проведения: 15.09.2013 - 22.09.2013
22.09.2013 — redgremlin 1:0 Kasparov 22.09.2013 — redgremlin 1:0 Kasparov
22.09.2013 — Magian 0:1 Nedis 22.09.2013 — Magian 1:0 Nedis
21.09.2013 — Genuine 0:1 iVS 21.09.2013 — Genuine 0:1 iVS
LongLiveUbuntu vs darkenshvein LongLiveUbuntu vs darkenshvein
17.09.2013 — raven_cler 0:1 HunOL 17.09.2013 — raven_cler 0:1 HunOL

View File

@ -20,6 +20,7 @@ module LORChess
@dim = @@db_players.length @dim = @@db_players.length
@results = Array.new(@dim) { Array.new(@dim, '') } @results = Array.new(@dim) { Array.new(@dim, '') }
@player_score = [] @player_score = []
@player_place = []
@buffer = '' @buffer = ''
@@db_players.each do |player| @@db_players.each do |player|
@ -33,16 +34,13 @@ module LORChess
fill fill
calculate calculate
stylize_table
# Clean the vacancy place # Clean the vacancy place
index = @player_pos['Kasparov'] index = @player_pos['Kasparov']
if index if index
@players[index] = '<em style="font-weight:normal">отсутствует</em>' @players[index] = '<em style="font-weight:normal">отсутствует</em>'
@elo_list[index] = '' @elo_list[index] = '1200'
for cell in 0..(@dim-1)
@results[index][cell] = ''
end
@player_score[index] = ''
end end
end end
@ -64,12 +62,42 @@ module LORChess
end end
def calculate def calculate
@results.each do |row| score_data = []
@results.each_with_index do |row, i|
sum = 0.0 sum = 0.0
row.each { |score| sum += score.to_f } row.each { |score| sum += score.to_f }
sum = sum.to_i if sum == sum.to_i # remove the fractional part if possible
@player_score << sum.to_s @player_score << sum.to_s
score_data << {:position => i, :total => sum}
end end
# Sort players in the reverse order to total score
score_data.sort! { |x,y| y[:total] <=> x[:total] }
score_data.each_with_index { |data,i| @player_place[data[:position]] = (i+1).to_s }
end
def stylize_table
for row in 0..(@dim-1)
for cell in 0..(@dim-1)
@results[row][cell] = stylize_score @results[row][cell]
end
@player_score[row] = stylize_score @player_score[row]
end
end
# Replace the fractional part `0.5' by ½
def stylize_score score
frac = score.split '.'
return '' if frac[0].nil?
unless frac[0] == '0'
score = frac[0]
score += '½' if frac[1] == '5'
else
score = (frac[1] == '5') ? '½' : '0'
end
score
end end
def to_html def to_html
@ -78,7 +106,7 @@ module LORChess
@buffer << " <caption><strong>LOR Chess : Осень-2013</strong><caption>\n" @buffer << " <caption><strong>LOR Chess : Осень-2013</strong><caption>\n"
@buffer << " <thead>\n" @buffer << " <thead>\n"
@buffer << " <tr>\n" @buffer << " <tr>\n"
@buffer << " <th></th>\n" @buffer << " <th></th>\n"
@buffer << " <th>Участник</th>\n" @buffer << " <th>Участник</th>\n"
@buffer << " <th>elo*</th>\n" @buffer << " <th>elo*</th>\n"
@ -94,21 +122,21 @@ module LORChess
for row in 0..(@dim-1) for row in 0..(@dim-1)
@buffer << " <tr>\n" @buffer << " <tr class=\"place-" << @player_place[row] << "\">\n"
@buffer << " <td>" << (row+1).to_s << "</td>\n" @buffer << " <td class=\"number\">" << (row+1).to_s << "</td>\n"
@buffer << " <td><strong>" << @players[row] << "</strong></td>\n" @buffer << " <td class=\"player\"><strong>" << @players[row] << "</strong></td>\n"
@buffer << " <td>" << @elo_list[row] << "</td>\n" @buffer << " <td class=\"elo\">" << @elo_list[row] << "</td>\n"
for cell in 0..(@dim-1) for cell in 0..(@dim-1)
unless cell == row unless cell == row
@buffer << " <td class=\"table-cell\">" << @results[row][cell] << "</td>\n" @buffer << " <td class=\"score\">" << @results[row][cell] << "</td>\n"
else else
@buffer << " <td class=\"table-cell-diag\"></td>\n" @buffer << " <td class=\"diagonal\"></td>\n"
end end
end end
@buffer << " <td>" << @player_score[row] << "</td>\n" @buffer << " <td class=\"total\">" << @player_score[row] << "</td>\n"
@buffer << " <td></td>\n" @buffer << " <td class=\"place\">" << @player_place[row] << "</td>\n"
@buffer << " </tr>\n" @buffer << " </tr>\n"
end end