Skip to content

Commit f7622d0

Browse files
committed
clean up the controllers to fit the restful api better
1 parent 06cd6dc commit f7622d0

File tree

7 files changed

+58
-101
lines changed

7 files changed

+58
-101
lines changed

app/assets/javascripts/brakkit/brakkit-app.js

+4
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,10 @@ Brakkit.alerts = {
99
});
1010
}
1111
};
12+
Brakkit.startup = function(){
13+
Brakkit.BracketsController.loadBrackets();
14+
};
1215
$(function(){
1316
Brakkit.alerts.setHideTimeout();
17+
Brakkit.startup();
1418
});

app/assets/javascripts/brakkit/controllers.js

+29-89
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
// Brackets
66
Brakkit.BracketsController = SC.ArrayProxy.create({
77
content : [],
8-
selected : {},
8+
selected : null,
99
addBracket : function(_title){
1010
var self= this;
1111
var bracket = Brakkit.Bracket.create({
@@ -17,7 +17,7 @@ Brakkit.BracketsController = SC.ArrayProxy.create({
1717
self.selectBracket(bracket);
1818
});
1919
},
20-
getBrackets : function(){
20+
loadBrackets : function(){
2121
var self = this;
2222
$.getJSON('/brackets',function(data, status, xhr){
2323
data.forEach(function(value){
@@ -34,42 +34,32 @@ Brakkit.BracketsController = SC.ArrayProxy.create({
3434
selectBracket : function(bracket){
3535
//set the current bracket
3636
Brakkit.BracketsController.set('selected', bracket);
37-
$.getJSON('/brackets/' + bracket.get('id'), function(data){
38-
Brakkit.TeamsController.getTeams();
39-
});
40-
},
41-
startup : function(){
42-
Brakkit.BracketsController.getBrackets();
4337
}
4438
});
4539
Brakkit.BracketController = SC.Object.create({
46-
contentBinding : "Brakkit.BracketsController.selected"
47-
});
48-
49-
$(function(){
50-
Brakkit.BracketsController.startup();
40+
contentBinding : "Brakkit.BracketsController.selected",
41+
calculate : function(){
42+
console.log('calculate the bracket');
43+
}
5144
});
5245

5346
//Teams
5447
Brakkit.TeamsController = SC.ArrayProxy.create({
5548
content: [],
56-
getTeams : function(){
49+
loadTeams : function(){
5750
var self = this;
58-
console.log('getting teams');
5951
var c = [];
60-
$.getJSON('/teams', function(data){
61-
console.log(data);
62-
for(var i=0; i<data.length; i++){
63-
c.pushObject(Brakkit.Team.create(data[i]));
64-
}
65-
66-
// data.forEach(function(value){
67-
// console.log(value);
68-
// c.push(Brakkit.Team.create(value));
69-
// });
70-
});
52+
var bracket = Brakkit.BracketController.get('content');
53+
console.log(bracket);
54+
if(bracket){
55+
bracket.get('teams').forEach(function(value){
56+
$.getJSON('/teams/'+value, function(data){
57+
c.pushObject(Brakkit.Team.create(data));
58+
});
59+
});
60+
}
7161
self.set('content', c);
72-
}.observes(),
62+
}.observes("Brakkit.BracketController.content"),
7363
addTeam: function(_name, _seed){
7464
var team = Brakkit.Team.create({
7565
name : _name,
@@ -98,70 +88,20 @@ Brakkit.TeamsController = SC.ArrayProxy.create({
9888
}
9989
});
10090

101-
102-
Brakkit.Eliminator = {
103-
eliminate : function(from){
104-
var divisor = from < 4 ? 2 : 4;
105-
if(from % divisor === 0){
106-
return 0;
107-
}
108-
var matches = [];
109-
for(var i=0; i <= from/2; i++){
110-
if((from - i) % divisor === 0){
111-
matches.push(i);
112-
}
113-
}
114-
return matches[matches.length-1];
115-
}
116-
};
117-
11891
//Rounds
11992
Brakkit.RoundsController = SC.ArrayProxy.create({
120-
setRounds : function(){
121-
// var bracket = Brakkit.BracketController.get('content');
122-
// var teams = Brakkit.TeamsController.get('content');
123-
// var teamsAllocated = 0;
124-
// if(bracket && teams){
125-
// var rounds = [];
126-
// var numberOfTeams = teams.get('length');
127-
// //the first round of the tournament has to even out the number of remaining teams
128-
// //make sure we're playing the exact number of teams that, after elimination, will yeild a multiple of 4
129-
// //ex: if there are 17 team, eliminate 5 teams in the first round to yeild 12 remaining teams in the second
130-
// var teamsToEliminate = Brakkit.Eliminator.eliminate(numberOfTeams);
131-
// //Make the teams with the highest seed compete in the first round of elimination
132-
// //teams with higher seeds will automatically advance to the next round
133-
// var seedThreshold = numberOfTeams - teamsToEliminate;
134-
// var teamsInFirstRound = teams.filter(function(item){
135-
// return item.get('seed') > seedThreshold;
136-
// });
137-
// //if we already have a nice number of teams
138-
// if(teamsInFirstRound.length == 0){
139-
// //Add all the teams!
140-
// teamsInFirstRound = teams;
141-
// }
142-
// //create the first round
143-
// rounds.push(
144-
// Brakkit.Round.create({
145-
// teams : teamsInFirstRound
146-
// })
147-
// );
148-
// //create the second round
149-
// if(teamsInFirstRound.length < numberOfTeams){
150-
// var teamsInSecondRound = teams.filter(function(item){
151-
// return item.get('seed') <= seedThreshold;
152-
// })
153-
// rounds.push(
154-
// Brakkit.Round.create({
155-
// teams : teamsInSecondRound
156-
// })
157-
// )
158-
// }
159-
// if(rounds[0].get('teams').length + rounds[1].get('teams').length != numberOfTeams){
160-
// alert("Unable to allocate all teams");
161-
// }
162-
// Brakkit.RoundsController.set('content', rounds);
163-
// }
93+
loadRounds : function(){
94+
var self = this;
95+
var c = [];
96+
var bracket = Brakkit.BracketController.get('content');
97+
if(bracket){
98+
bracket.get('rounds').forEach(function(value){
99+
$.getJSON('/rounds/'+value, function(data){
100+
c.pushObject(Brakkit.Round.create(data));
101+
});
102+
});
103+
}
104+
self.set('content', c);
164105
}.observes("Brakkit.BracketController.content"),
165106
content : []
166107
});
167-

app/assets/javascripts/brakkit/models.js

+13-8
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,7 @@ Brakkit.Record = SC.Object.extend({
5757
Brakkit.Bracket = Brakkit.Record.extend({
5858
title : "",
5959
teams : [],
60+
rounds : [],
6061
committed : false,
6162
urlRoot : '/brackets',
6263
attributes : function(){
@@ -88,14 +89,18 @@ Brakkit.Team = Brakkit.Record.extend({
8889
});
8990

9091
Brakkit.Round = SC.Object.extend({
92+
rank: 0,
9193
matches : []
9294
});
93-
Brakkit.Match = SC.Object.extend({
94-
first_team : null,
95-
second_team : null
95+
96+
Brakkit.Match = Brakkit.Record.extend({
97+
teams : [],
98+
winner : null,
99+
urlRoot : '/matches',
100+
attributes : function(){
101+
var self = this;
102+
return {
103+
match : { winner_id : self.winner }
104+
};
105+
}.property('winner')
96106
});
97-
Brakkit.Seed = {
98-
next : function(){
99-
return Brakkit.TeamsController.get('length') + 1;
100-
}
101-
};

app/assets/javascripts/brakkit/views.js

+4-2
Original file line numberDiff line numberDiff line change
@@ -38,8 +38,10 @@ Brakkit.NewBracketTitleView = SC.TextField.extend({
3838
}
3939
}
4040
});
41-
42-
41+
Brakkit.GoButtonView = SC.Button.extend({
42+
target : "Brakkit.BracketController",
43+
action : "calculate"
44+
})
4345
//Teams
4446
Brakkit.AddTeamView = SC.TextField.extend({
4547
insertNewline: function(){

app/views/home/brackets.html.erb

+1-1
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
{{#view Brakkit.DeleteSelectedTeamsButtonView id="delete-selected-teams" }}
1515
Remove Selected
1616
{{/view}}
17-
{{#view SC.Button id="create-bracket-button"}}
17+
{{#view Brakkit.GoButtonView id="create-bracket-button"}}
1818
Go
1919
{{/view}}
2020
</script>
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
class AddBracketIdToRounds < ActiveRecord::Migration
2+
def change
3+
add_column :rounds, :bracket_id, :int
4+
end
5+
end

db/schema.rb

+2-1
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
#
1212
# It's strongly recommended to check this file into your version control system.
1313

14-
ActiveRecord::Schema.define(:version => 20110926031524) do
14+
ActiveRecord::Schema.define(:version => 20110926034109) do
1515

1616
create_table "brackets", :force => true do |t|
1717
t.integer "user_id"
@@ -36,6 +36,7 @@
3636
t.integer "rank"
3737
t.datetime "created_at"
3838
t.datetime "updated_at"
39+
t.integer "bracket_id"
3940
end
4041

4142
create_table "teams", :force => true do |t|

0 commit comments

Comments
 (0)