Skip to content
Snippets Groups Projects
Commit 28f15d77 authored by François Sarradin's avatar François Sarradin
Browse files

provide more information to different pages + make pages more dynamic (avoid...

provide more information to different pages + make pages more dynamic (avoid reloading) + add an easter egg
parent f77ef362
No related branches found
No related tags found
No related merge requests found
......@@ -29,25 +29,28 @@ module ExtremeStartup
get '/' do
haml :leaderboard, :locals => {
:leaderboard => LeaderBoard.new(scoreboard, players, game_state),
:leaderboard => LeaderBoard.new(scoreboard, players, game_state, question_names, question_factory.round.to_s),
:players => players,
:questions => question_names
:questions => question_names,
:round => question_factory.round.to_s
}
end
get '/scores' do
LeaderBoard.new(scoreboard, players, game_state).to_json
LeaderBoard.new(scoreboard, players, game_state, question_names, question_factory.round.to_s).to_json
end
class LeaderBoard
attr_reader :inplay
def initialize(scoreboard, players, game_state)
def initialize(scoreboard, players, game_state, question_names, round)
@entries = []
scoreboard.leaderboard.each do |entry|
@entries << LeaderBoardEntry.new(entry[0], players[entry[0]], entry[1])
end
@inplay = game_state.is_running?;
@inplay = game_state.is_running?
@questions = question_names
@round = round
end
def each(&block)
......@@ -55,7 +58,12 @@ module ExtremeStartup
end
def to_json(*a)
{'entries' => @entries, 'inplay' => @inplay }.to_json(*a)
{
'entries' => @entries,
'inplay' => @inplay,
'questions' => @questions,
'round' => @round
}.to_json(*a)
end
end
......@@ -135,7 +143,9 @@ module ExtremeStartup
:name => players[uuid].name,
:playerid => uuid,
:score => scoreboard.scores[uuid],
:log => players[uuid].log[0..25] }
:log => players[uuid].log[0..25],
:round => question_factory.round.to_s
}
end
end
......
public/favicon.png

2.05 KiB

Browser-Ponies @ 71bef8b3
Subproject commit 71bef8b325815bf981786305f0883fc68a3fe567
//$(document).ready(function() {
function launchPonies(qtt) {
var ponies = {
"applejack": qtt,
"fluttershy": qtt,
"pinkie pie": qtt,
"rainbow dash": qtt,
"rarity": qtt,
"twilight sparkle": qtt
};
(function (cfg) {
BrowserPonies.setBaseUrl(cfg.baseurl);
BrowserPonies.loadConfig(BrowserPoniesBaseConfig);
BrowserPonies.loadConfig(cfg);
})({
"baseurl": "/js/Browser-Ponies/",
"fadeDuration": 500,
"volume": 100,
"fps": 25,
"speed": 3,
"audioEnabled": true,
"showFps": false,
"showLoadProgress": false,
"speakProbability": 0.1,
"spawn": ponies,
"autostart": true
});
}
//});
%html
%head
%title Ippon Technologies - Extreme Startup - Leaderboard
%link(rel="icon" href="favicon.png")
%link(rel="stylesheet" href="/css/style.css")
%body
%section{:class => ["intro"]}
%header{:role => "banner"}
%img{:src => 'img/logo_ippon.png', :style => "width: 180px; height: 65px;"}
%h1 Ippon Technologies - Extreme Startup Server
%p Je vous pose des questions. À vous d'y répondre le plus justement possible.
%h2 Ajout d'une équipe
......
%html
%head
%title Ippon Technologies - Extreme Startup - Leaderboard
%link(rel="icon" href="favicon.png")
%link(rel="stylesheet" href="/css/style.css")
%script{:type => "text/javascript", :src => "/js/jquery-1.6.2.min.js"}
%body
%section{:class => ["intro"]}
%header{:role => "banner"}
%img{:src => 'img/logo_ippon.png', :style => "width: 180px; height: 65px;"}
%h1 Ippon Technologies - Extreme Startup Server
%p Je vous pose des questions. À vous d'y répondre le plus justement possible.
%h2
Nouveau joueur
......@@ -16,19 +17,21 @@
Enregistrement
%h2
Questions
Questions (round #
%span{:id => "round"}><= #{round}
)
- if leaderboard.inplay
%ul
%ul{:id => "questions"}
- questions.each do |question|
%li #{question}
- else
%p
%p{:id => "questions"}
(Pause)
%h2
%span Leaderboard
%ul
%ul{:id => "leaderboard"}
- leaderboard.each do |entry|
%li.player
%div.player_info
......@@ -37,5 +40,55 @@
%div{:class => ["ranking", "points"]} #{entry.score}
:javascript
refresh = function() { window.location.reload(); };
setTimeout(refresh, 5000);
//refresh = function() { window.location.reload(); };
//setTimeout(refresh, 10000);
$(document).ready(function() {
var replaceLeaderboard = function(entries) {
var list = $('<ul id="leaderboard"></ul>');
for (var i=0; i < entries.length; i += 1) {
var entry = entries[i];
list.append(
$('<li/>', {class: "player"}).append(
$('<div/>', {class: "player_info"})
.append($('<div>' + entry.playername + '</div>').addClass("ranking name"))
.append($('<div>' + entry.score + '</div>').addClass("ranking points"))
));
}
$("#leaderboard").replaceWith(list);
};
var replaceRound = function(round) {
var roundElement = $('<span id="round" />');
roundElement.append(round);
$("#round").replaceWith(roundElement);
};
var replaceQuestions = function(questions, inplay) {
if (inplay) {
var list = $('<ul id="questions"></ul>');
for (var i=0; i < questions.length; i += 1) {
var question = questions[i];
list.append(
$('<li/>').append($('<div>' + question + '</div>'))
);
}
$("#questions").replaceWith(list);
}
else {
$("#questions").replaceWith($('<div id="questions">(Pause)</div>'));
}
};
setInterval(function() {
$.ajax({
url: '/scores',
success: function(data) {
var leaderboardData = JSON.parse(data);
replaceLeaderboard(leaderboardData.entries);
replaceRound(leaderboardData.round);
replaceQuestions(leaderboardData.questions, leaderboardData.inplay);
}
});
}, 1000);
});
%html
%head
%title Extreme Startup - #{name}
%title Ippon Technologies - Extreme Startup - #{name}
%link(rel="icon" href="favicon.png")
%link(rel="stylesheet" href="/css/style.css")
%script{:type => "text/javascript", :src => "/js/Browser-Ponies/basecfg.js"}
%script{:type => "text/javascript", :src => "/js/Browser-Ponies/browserponies.js"}
%script{:type => "text/javascript", :src => "/js/ponies.js"}
%body
%section{:class => ["intro"]}
%header{:role => "banner"}
%img{:src => '/img/logo_ippon.png', :style => "width: 180px; height: 65px;"}
%h1
&= "Hello, #{name}!"
%p Je vous pose des questions. À vous d'y répondre le plus justement possible.
%h2
Score =
......@@ -27,5 +30,11 @@
%div{:class => ["logline", "points", logline.result]} points awarded: #{logline.points}
:javascript
refresh = function() { window.location.reload(); };
setTimeout(refresh, 5000);
//refresh = function() { window.location.reload(); };
//setTimeout(refresh, 5000);
if (#{round} >= 4) {
var qtt = Math.max(1, parseInt(#{score} / 1000));
launchPonies(qtt);
}
%html
%head
%title Extreme Startup - Score Graph
%link(rel="icon" href="favicon.png")
%link(rel="stylesheet" href="/css/style.css")
%script{:type => "text/javascript", :src => "/js/smoothie.js"}
%script{:type => "text/javascript", :src => "/js/jquery-1.6.2.min.js"}
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment