summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLuke Shumaker <shumakl@purdue.edu>2014-04-22 02:49:34 -0400
committerLuke Shumaker <shumakl@purdue.edu>2014-04-22 02:49:34 -0400
commit474a048ae4a4fae86e7fde93745f0ea79c7ed717 (patch)
tree63e87b93634d90c8236b09a02c19e37031d55304
parent7d40d2ed8bd686b32ff9bc620936a72044a610bc (diff)
parent9531e27d6414ca1e3c9a81b1a98f0550d74fad1d (diff)
Merge remote-tracking branch 'origin/master'
Conflicts: app/models/match.rb
-rw-r--r--app/assets/images/bg.pngbin0 -> 2725 bytes
-rw-r--r--app/assets/stylesheets/application.css6
-rw-r--r--app/assets/stylesheets/custom.css.scss61
-rw-r--r--app/assets/stylesheets/matches.css.scss12
-rw-r--r--app/assets/stylesheets/scaffolds.css.scss140
-rw-r--r--app/assets/stylesheets/static.css.scss1
-rw-r--r--app/assets/stylesheets/tournaments.css.scss16
-rw-r--r--app/assets/stylesheets/users.css.scss7
-rw-r--r--app/models/match.rb5
-rw-r--r--app/views/matches/index.html.erb2
-rw-r--r--app/views/sessions/new.html.erb2
-rw-r--r--app/views/tournaments/_selected.html.erb2
-rw-r--r--app/views/tournaments/index.html.erb6
-rw-r--r--db/seeds.rb14
-rw-r--r--lib/scoring_algorithms/FibonacciPeerWithBlowout.rb16
-rw-r--r--lib/scoring_algorithms/MarginalPeer.rb15
-rw-r--r--lib/scoring_algorithms/Recommended.rb8
-rw-r--r--lib/scoring_algorithms/ScoringAlgorithm.rb8
-rw-r--r--lib/scoring_algorithms/ScoringAlgorithms.rb28
-rw-r--r--lib/scoring_algorithms/WinnerTakesAll.rb16
20 files changed, 203 insertions, 162 deletions
diff --git a/app/assets/images/bg.png b/app/assets/images/bg.png
new file mode 100644
index 0000000..91c77c8
--- /dev/null
+++ b/app/assets/images/bg.png
Binary files differ
diff --git a/app/assets/stylesheets/application.css b/app/assets/stylesheets/application.css
index ab45dd0..ebb963c 100644
--- a/app/assets/stylesheets/application.css
+++ b/app/assets/stylesheets/application.css
@@ -13,15 +13,13 @@
*/
#query{
- background-color: white;
+ background-color: #303030;
border: 2px solid #ED9C28;
border-radius: 5px;
color: #FFF;
font-weight: bold;
height: 30px;
-}
-.navbar{
- background-color: white;
+ padding: 0px 5px;
}
footer {
diff --git a/app/assets/stylesheets/custom.css.scss b/app/assets/stylesheets/custom.css.scss
index febcbb8..d7f1698 100644
--- a/app/assets/stylesheets/custom.css.scss
+++ b/app/assets/stylesheets/custom.css.scss
@@ -18,37 +18,60 @@ header > nav {
}
}
+
a, input[type="submit"] {
@extend .btn;
&.user { @extend .btn-info; }
&.signup { @extend .btn-success; }
- &.signin { @extend .btn-info; }
+ &.signin { @extend .btn-warning; }
&.signout { @extend .btn-danger; }
&.server { @extend .btn-danger; }
+ font-weight: bold !important;
+}
+
+
+input[type="text"], input[type="password"]{
+ border: 3px inset #A5A5A5;
+ -webkit-box-shadow:
+ inset 0 0 8px rgba(0,0,0,0.1),
+ 0 0 16px rgba(0,0,0,0.1);
+ -moz-box-shadow:
+ inset 0 0 8px rgba(0,0,0,0.1),
+ 0 0 16px rgba(0,0,0,0.1);
+ box-shadow:
+ inset 0 0 8px rgba(0,0,0,0.1),
+ 0 0 16px rgba(0,0,0,0.1);
+ padding: 8px;
+ background: rgba(0,0,0,0.5);
+ margin: 0 0 5px 0;
}
p.errors {
- background-color: #FCF8C7;
+ background-color: rgba(0,0,0,0.5);;
color: red;
border-radius: 7px;
padding: 10px;
}
-#errorExplanation {
- h2 {
- font-size: 1em;
- color: red;
- font-weight: bold;
- }
- li {
- font-size: 1em;
- color: red;
- font-style: italic;
- }
-
-}
-
-#notice {
- text-align: center;
- font-weight: bold;
+#error_explanation {
+ width: 450px;
+ border: 2px solid red;
+ padding: 7px;
+ padding-bottom: 0;
+ margin-bottom: 20px;
+ background-color: #f0f0f0;
+ h2 {
+ text-align: left;
+ font-weight: bold;
+ padding: 5px 5px 5px 15px;
+ font-size: 12px;
+ margin: -7px;
+ margin-bottom: 0px;
+ background-color: #c00;
+ color: #fff;
+ }
+ ul li {
+ font-size: 12px;
+ list-style: square;
+ }
} \ No newline at end of file
diff --git a/app/assets/stylesheets/matches.css.scss b/app/assets/stylesheets/matches.css.scss
index 84430d6..66da68e 100644
--- a/app/assets/stylesheets/matches.css.scss
+++ b/app/assets/stylesheets/matches.css.scss
@@ -39,4 +39,16 @@
#current-id {
display: none;
+}
+
+
+
+/**** INDEX PAGE - TABLE AND GRAPH ****/
+#matches-table {
+ @extend .table;
+ color: #FFF;
+
+ form {
+ color: #333;
+ }
} \ No newline at end of file
diff --git a/app/assets/stylesheets/scaffolds.css.scss b/app/assets/stylesheets/scaffolds.css.scss
index 02b96a2..40791e8 100644
--- a/app/assets/stylesheets/scaffolds.css.scss
+++ b/app/assets/stylesheets/scaffolds.css.scss
@@ -2,13 +2,16 @@
$page-color: #444;
$toolbar-color: black;
+$orange: #DD9125;
+$darker-orange: #9D4102;
+$link-yellow: #FFC50D;
html{
height: 100%;
}
body {
- background-color: $page-color;
+ background: asset-url("bg.png", image) repeat scroll 0 0 $page-color;
color: $page-color;
font-family: verdana, arial, helvetica, sans-serif;
font-size: 13px;
@@ -16,47 +19,38 @@ body {
height: 100%;
}
-.wrapper {
- padding-left: 5%;
- padding-right: 5%;
- margin: 0 auto;
- background-color: #fff;
- padding-top: 10px;
- height: 90%;
- box-shadow: 1px 1px 7px orange;
- border-radius: 0px 0px 5px 5px;
+h1, h2, h3, h4, h5, p{
+ color: $orange;
}
-footer {
- clear: both;
- margin: 0 auto;
- margin-top: 10px;
- color: white;
-
+h1, h2, h3, h4, h5 {
+ text-shadow: 0px 0px 2px $darker-orange;
}
-@media screen and (min-width: 480px) {
- .wrapper, footer {
- width: 80%;
- min-width: 480px;
- max-width: 1024px;
- }
+p, ol, ul, td {
+ font-family: verdana, arial, helvetica, sans-serif;
+ font-size: 13px;
+ line-height: 18px;
}
-@media screen and (max-width: 480px) {
- .wrapper, footer {
- width: 100%;
- }
-}
+/* NAVBAR */
-h1, h2, h3, h4, h5{
- color: #030303;
+.navbar-brand {
+ @extend .no-dec;
+ a{
+ color: white;
+ &:hover, &:active, &:focus {
+ color: white;
+ font-weight: normal;
+ text-decoration: none;
+ }
+ }
}
-p, ol, ul, td {
- font-family: verdana, arial, helvetica, sans-serif;
- font-size: 13px;
- line-height: 18px;
+.navbar-inverse, header > nav {
+ background-color: $toolbar-color;
+ border-radius: 0px 0px 5px 5px;
+ box-shadow: 0px 0px 5px black;
}
pre {
@@ -66,12 +60,9 @@ pre {
}
a {
- color: #000;
- &:visited {
- color: #000;
- }
- &:hover {
- color: green;
+ color: $link-yellow;
+ &:hover {
+ color: #FFEF00;
text-decoration: none;
}
}
@@ -83,7 +74,17 @@ div {
}
#notice {
- color: green;
+ background-color: rgba(0,0,0,0.5);
+ border-radius: 7px;
+ padding: 10px;
+ width: 80%;
+ margin: 0px auto;
+ text-align: center;
+
+ p{
+ color: lightgreen !important;
+ font-weight: bold;
+ }
}
.field_with_errors {
@@ -93,52 +94,25 @@ div {
display: table;
}
-#error_explanation {
- width: 450px;
- border: 2px solid red;
- padding: 7px;
- padding-bottom: 0;
- margin-bottom: 20px;
- background-color: #f0f0f0;
- h2 {
- text-align: left;
- font-weight: bold;
- padding: 5px 5px 5px 15px;
- font-size: 12px;
- margin: -7px;
- margin-bottom: 0px;
- background-color: #c00;
- color: #fff;
- }
- ul li {
- font-size: 12px;
- list-style: square;
- }
+.wrapper {
+ width: 80%;
+ margin: 0 auto;
+ margin-top: 10px;
}
-
-/* NAVBAR */
-
-.navbar-brand {
- @extend .no-dec;
- a{
- color: white;
- &:hover, &:active, &:focus {
- color: white;
- font-weight: normal;
- text-decoration: none;
- }
- }
+button, input[type="submit"] {
+ @extend .btn;
}
-.navbar-inverse, header > nav {
- background-color: $toolbar-color;
- border-color: #0F4070;
- border-radius: 0px 0px 5px 5px;
- margin-bottom: 0px;
-}
-button, input[type="submit"] {
- @extend .btn;
-}
+footer {
+ clear: both;
+ margin: 0 auto;
+ border-top: solid 1px $orange;
+ padding-top: 10px;
+ text-align: center;
+ position:absolute;
+ bottom: 0;
+ width: 100%;
+} \ No newline at end of file
diff --git a/app/assets/stylesheets/static.css.scss b/app/assets/stylesheets/static.css.scss
index d73e77d..14443f3 100644
--- a/app/assets/stylesheets/static.css.scss
+++ b/app/assets/stylesheets/static.css.scss
@@ -4,6 +4,7 @@
.jumbotron {
background-color: #FFF;
+ box-shadow: 1px 1px 20px black;
p {
line-height: 1.5em;
diff --git a/app/assets/stylesheets/tournaments.css.scss b/app/assets/stylesheets/tournaments.css.scss
index 2074783..41d6023 100644
--- a/app/assets/stylesheets/tournaments.css.scss
+++ b/app/assets/stylesheets/tournaments.css.scss
@@ -17,7 +17,7 @@ span.default-explanation {
}
#tournament-side-params {
- background: none repeat scroll 0 0 #ADD8E6;
+ background: none repeat scroll 0 0 rgba(0,0,0,0.5);
border-radius: 5px;
float: right;
font-size: 7px;
@@ -33,23 +33,24 @@ span.default-explanation {
#tournament-users{
li {
- color: green;
+ color: #10A010;
}
.black {
- color: black;
+ color: white;
}
}
/* Style of a tournament listing div */
div.tournament-listing {
- margin-top: 10px;
+ margin: 10px 0px;
border-radius: 5px;
- box-shadow: 2px 2px 4px #B8B8B8;
- border: 2px solid #AAAAAA;
+ box-shadow: 0px 0px 3px #B8B8B8;
+ background-color: rgba(0, 0, 0, 0.6);
+ border: 1px solid #AAAAAA;
min-height: 100px;
- padding: 4px;
+ padding: 8px 4px;
/* AKA the listing title */
h3 {
@@ -65,6 +66,7 @@ div.tournament-listing {
/* host of the tournament */
.host {
font-weight: bold;
+ color: #FFF;
}
.col-md-8 {
diff --git a/app/assets/stylesheets/users.css.scss b/app/assets/stylesheets/users.css.scss
index 1efc835..3453a55 100644
--- a/app/assets/stylesheets/users.css.scss
+++ b/app/assets/stylesheets/users.css.scss
@@ -1,3 +1,10 @@
// Place all the styles related to the users controller here.
// They will automatically be included in application.css.
// You can use Sass (SCSS) here: http://sass-lang.com/
+
+
+/*** FOR NEW USER - AKA SIGN UP ***/
+.simple_captcha {
+ background-color: rgba(255, 255, 255, 0.7);
+ margin: 10px 0px;
+} \ No newline at end of file
diff --git a/app/models/match.rb b/app/models/match.rb
index e37f9dc..20a36a5 100644
--- a/app/models/match.rb
+++ b/app/models/match.rb
@@ -37,4 +37,9 @@ class Match < ActiveRecord::Base
end #while
end
#handle_asynchronously :is_match_over
+
+ def win?(player)
+ winner.players.include? player
+ end
+
end
diff --git a/app/views/matches/index.html.erb b/app/views/matches/index.html.erb
index 08d5fd6..03427d8 100644
--- a/app/views/matches/index.html.erb
+++ b/app/views/matches/index.html.erb
@@ -1,7 +1,7 @@
<h1><%= @tournament.name %> - Matches</h1>
-<table class="table">
+<table id="matches-table" class="table">
<thead>
<tr>
<th>Name</th>
diff --git a/app/views/sessions/new.html.erb b/app/views/sessions/new.html.erb
index b4acf77..ff27762 100644
--- a/app/views/sessions/new.html.erb
+++ b/app/views/sessions/new.html.erb
@@ -14,7 +14,7 @@
<%= f.password_field :password %>
</p>
<p>
- <%= f.submit "Sign in", class: "btn btn-large btn-primary" %>
+ <%= f.submit "Log in", class: "signin" %>
</p>
<% end %>
diff --git a/app/views/tournaments/_selected.html.erb b/app/views/tournaments/_selected.html.erb
index 2ab8379..eec8b5e 100644
--- a/app/views/tournaments/_selected.html.erb
+++ b/app/views/tournaments/_selected.html.erb
@@ -18,7 +18,7 @@
<% end %>
<%= fields_for "tournament[settings]", @tournament.settings do |setting_fields| %>
- <% @game.settings.each do |setting| %>
+ <% @tournament.settings.each do |setting| %>
<p>
<%= setting_fields.label setting.name %>
<br>
diff --git a/app/views/tournaments/index.html.erb b/app/views/tournaments/index.html.erb
index 7957042..eef9577 100644
--- a/app/views/tournaments/index.html.erb
+++ b/app/views/tournaments/index.html.erb
@@ -5,8 +5,8 @@
<%# Each tournament has a div for its listing %>
<% @tournaments.each do |t| %>
<div class="row tournament-listing">
- <div class="col-md-2 "><%= image_tag 'http://www.gravatar.com/avatar/' + Digest::MD5.hexdigest(t.hosts.first.email) + '?s=100&d=mm' %></div>
- <div class="col-md-8">
+ <div class="col-md-2 col-sm-3 col-xs-6"><%= image_tag 'http://www.gravatar.com/avatar/' + Digest::MD5.hexdigest(t.hosts.first.email) + '?s=100&d=mm' %></div>
+ <div class="col-md-8 col-sm-7 col-xs-6">
<%# "header" %>
<%= link_to(t) do %><h3><%= t.name %></h3><% end %>
<div class="row" style="margin-left:2%;">
@@ -23,7 +23,7 @@
</div>
</div>
</div>
- <div class="col-md-2">
+ <div class="col-md-2 col-sm-2 col-xs-2">
<% if signed_in? %>
<% if !t.players.include?(current_user) %>
<%= form_tag(tournament_path(t), method: "put") do %>
diff --git a/db/seeds.rb b/db/seeds.rb
index a3637a8..ea01c78 100644
--- a/db/seeds.rb
+++ b/db/seeds.rb
@@ -14,16 +14,16 @@ Game.create(name: "Chess", min_players_per_team: 1, max_players_per_team: 1, mi
Game.create(name: "Hearthstone", min_players_per_team: 1, max_players_per_team: 1, min_teams_per_match: 2, max_teams_per_match: 2, set_rounds: 1, randomized_teams: false)
Game.create(name: "Rock, Paper, Scissors", min_players_per_team: 1, max_players_per_team: 3, min_teams_per_match: 1, max_teams_per_match: nil, set_rounds: nil, randomized_teams: false)
-Game.find_by_name("League of Legends").settings.create(name: "Map", default: "Summoners Rift", type_opt: "Summoners Rift,Twisted Treeline,Crystal Scar,Haunted Abyss", description: "Select a map to play on.", stype: 5, display_order: 1)
-Game.find_by_name("League of Legends").settings.create(name: "Pick Type", type_opt: "Blind Pick,Draft", description: "Select a pick type.", stype: 5, display_order: 2)
+Game.find_by_name("League of Legends").settings.create(name: "Map", default: "Summoners Rift", type_opt: "Summoners Rift,Twisted Treeline,Crystal Scar,Haunted Abyss", description: "Select a map to play on.", vartype: 5, display_order: 1)
+Game.find_by_name("League of Legends").settings.create(name: "Pick Type", type_opt: "Blind Pick,Draft", description: "Select a pick type.", vartype: 5, display_order: 2)
-Game.find_by_name("Chess").settings.create(name: "Time Control", description: "Enter a value for Time Control (ie. 5-5, 30, 6hr, or None)", stype: 0, display_order: 1)
+Game.find_by_name("Chess").settings.create(name: "Time Control", description: "Enter a value for Time Control (ie. 5-5, 30, 6hr, or None)", vartype: 0, display_order: 1)
-Game.find_by_name("Hearthstone").settings.create(name: "Deck Name", description: "Enter a name for your deck, be descriptive.", stype: 1, display_order: 1)
+Game.find_by_name("Hearthstone").settings.create(name: "Deck Name", description: "Enter a name for your deck, be descriptive.", vartype: 1, display_order: 1)
-Game.find_by_name("Rock, Paper, Scissors").settings.create(name: "Favorite Object", description: "What is your favorite object in RPS?", type_opt: "Rock,Paper,Scissors", stype: 2, display_order: 2)
-Game.find_by_name("Rock, Paper, Scissors").settings.create(name: "Lizard, Spock allowed?", description: "Will you allow Lizard and Spock?", stype: 4, display_order: 1)
-Game.find_by_name("Rock, Paper, Scissors").settings.create(name: "Why are those up there even called radio buttons?", description: "Check boxes make sense at least", type_opt: "I do not know.,There is now spoon.,Wow.,Because electricity.,Wat?", stype: 2, display_order: 3)
+Game.find_by_name("Rock, Paper, Scissors").settings.create(name: "Favorite Object", description: "What is your favorite object in RPS?", type_opt: "Rock,Paper,Scissors", vartype: 2, display_order: 2)
+Game.find_by_name("Rock, Paper, Scissors").settings.create(name: "Lizard, Spock allowed?", description: "Will you allow Lizard and Spock?", vartype: 4, display_order: 1)
+Game.find_by_name("Rock, Paper, Scissors").settings.create(name: "Why are those up there even called radio buttons?", description: "Check boxes make sense at least", type_opt: "I do not know.,There is now spoon.,Wow.,Because electricity.,Wat?", vartype: 2, display_order: 3)
if Rails.env.development?
User.create(name: "Administrator", user_name: "admin", email: "root@localhost.lan", password: "password", password_confirmation: "password", permissions: 0xFFFFFFFF)
diff --git a/lib/scoring_algorithms/FibonacciPeerWithBlowout.rb b/lib/scoring_algorithms/FibonacciPeerWithBlowout.rb
new file mode 100644
index 0000000..19ac9a7
--- /dev/null
+++ b/lib/scoring_algorithms/FibonacciPeerWithBlowout.rb
@@ -0,0 +1,16 @@
+require 'ScoringAlgorithm'
+
+class FibonacciPeerWithBlowout < ScoringAlgorithm
+
+ def self.score(match, interface)
+ match.players.each do |player|
+ scores[player.user_name] = scoreUser(interface.getStatistic(match, player, :votes), match.win?(player), match.blowout)
+ end
+ scores
+ end
+
+ def self.scoreUser(votes, win, blowout)
+ fibonacci = Hash.new { |h,k| h[k] = k < 2 ? k : h[k-1] + h[k-2] }
+ fibonacci[votes+3] + (win ? blowout ? 12 : 10 : blowout ? 5 : 7)
+ end
+end \ No newline at end of file
diff --git a/lib/scoring_algorithms/MarginalPeer.rb b/lib/scoring_algorithms/MarginalPeer.rb
new file mode 100644
index 0000000..0e1cfa8
--- /dev/null
+++ b/lib/scoring_algorithms/MarginalPeer.rb
@@ -0,0 +1,15 @@
+require 'ScoringAlgorithm'
+
+class MarginalPeer < ScoringAlgorithm
+
+ def self.score(match, interface)
+ match.players.each do |player|
+ scores[player.user_name] = scoreUser(interface.getStatistic(match, player, rating))
+ end
+ scores
+ end
+
+ def self.score(rating)
+ rating
+ end
+end \ No newline at end of file
diff --git a/lib/scoring_algorithms/Recommended.rb b/lib/scoring_algorithms/Recommended.rb
deleted file mode 100644
index 8033bd2..0000000
--- a/lib/scoring_algorithms/Recommended.rb
+++ /dev/null
@@ -1,8 +0,0 @@
-class Recommended
- def self.score(votes, win, blowout)
- fibonacci = Hash.new{ |h,k| h[k] = k < 2 ? k : h[k-1] + h[k-2] }
- fibonacci[votes+3] + (win ? blowout ? 12 : 10 : blowout ? 5 : 7)
- end
-end
-
-#puts Recommended.score(4, true, false)
diff --git a/lib/scoring_algorithms/ScoringAlgorithm.rb b/lib/scoring_algorithms/ScoringAlgorithm.rb
new file mode 100644
index 0000000..6277da8
--- /dev/null
+++ b/lib/scoring_algorithms/ScoringAlgorithm.rb
@@ -0,0 +1,8 @@
+module Leaguer
+ module Scoring
+ class ScoringAlgorithm
+ def self.score(match, interface)
+ end
+ end
+ end
+end \ No newline at end of file
diff --git a/lib/scoring_algorithms/ScoringAlgorithms.rb b/lib/scoring_algorithms/ScoringAlgorithms.rb
deleted file mode 100644
index 7f8ec12..0000000
--- a/lib/scoring_algorithms/ScoringAlgorithms.rb
+++ /dev/null
@@ -1,28 +0,0 @@
-class ScoringAlgorithm
- def self.score(*args)
- end
-end
-
-class FibonacciPeerWithBlowout < ScoringAlgorithm
- def self.score(votes, win, blowout)
- fibonacci = Hash.new{ |h,k| h[k] = k < 2 ? k : h[k-1] + h[k-2] }
- fibonacci[votes+3] + (win ? blowout ? 12 : 10 : blowout ? 5 : 7)
- end
-end
-
-class WinnerTakesAll < ScoringAlgorithm
- def self.score(win)
- win.nil? ? 0.5 : win ? 1 : 0
- end
-end
-
-class MarginalPeer < ScoringAlgorithm
- def self.score(rating)
- rating
- end
-end
-
-
-#puts Recommended.score(4, true, false)
-#puts WinnerTakesAll.score(nil)
-#puts WinnerTakesAll.score(true)
diff --git a/lib/scoring_algorithms/WinnerTakesAll.rb b/lib/scoring_algorithms/WinnerTakesAll.rb
new file mode 100644
index 0000000..ad2471b
--- /dev/null
+++ b/lib/scoring_algorithms/WinnerTakesAll.rb
@@ -0,0 +1,16 @@
+require 'ScoringAlgorithm'
+
+class WinnerTakesAll < ScoringAlgorithm
+
+ def self.score(match, interface)
+ match.players.each do |player|
+ scores[player.user_name] = scoreUser(match.win?(player))
+ end
+ scores
+ end
+
+
+ def self.score(win)
+ win.nil? ? 0.5 : win ? 1 : 0
+ end
+end \ No newline at end of file