--- a/jpoker/JpokerPlugin/JpokerPlugin.tiddler Mon Aug 25 01:59:12 2008 +0200
+++ b/jpoker/JpokerPlugin/JpokerPlugin.tiddler Mon Aug 25 19:44:42 2008 +0200
@@ -89,6 +89,12 @@
}
};
+config.macros.jpokerPlaces = {
+ handler: function(place, macroName, params, wikifier, paramString, tiddler) {
+ $(place).jpoker('places', config.jpoker.restURL);
+ }
+};
+
//}}}
//!END-PLUGIN-CODE
// %/
\ No newline at end of file
--- a/jpoker/index/MainMenu.tiddler Mon Aug 25 01:59:12 2008 +0200
+++ b/jpoker/index/MainMenu.tiddler Mon Aug 25 19:44:42 2008 +0200
@@ -1,1 +1,1 @@
-[[Tables]] [[RegularTourneys]] [[SitngoTourneys]] [[UserInfo]] [[Feedback|http://jspoker.pokersource.info/ideas.html]] [[Copyright]]
\ No newline at end of file
+[[Tables]] [[RegularTourneys]] [[SitngoTourneys]] [[UserInfo]] [[Places]] [[Feedback|http://jspoker.pokersource.info/ideas.html]] [[Copyright]]
\ No newline at end of file
--- a/jpoker/js/jquery.jpoker.js Mon Aug 25 01:59:12 2008 +0200
+++ b/jpoker/js/jquery.jpoker.js Mon Aug 25 19:44:42 2008 +0200
@@ -525,6 +525,7 @@
TABLE_JOIN: 'joining table',
TOURNEY_REGISTER: 'updating tourney registration',
PERSONAL_INFO: 'getting personal info',
+ PLACES: 'getting player places',
blocked: false,
@@ -843,6 +844,7 @@
this.serial = 0;
this.userInfo = {};
this.preferences = new jpoker.preferences(jpoker.url2hash(this.url));
+ this.places = {};
this.registerHandler(0, this.handler);
if(this.sessionExists()) {
this.reconnect();
@@ -1320,6 +1322,27 @@
return true;
});
});
+ },
+
+ getPlayerPlaces : function() {
+ if (this.loggedIn()) {
+ this.queueRunning(function(server) {
+ server.setState(server.PLACES);
+ server.sendPacket({'type': 'PacketPokerGetPlayerPlaces', 'serial': server.serial});
+ server.registerHandler(0, function(server, unused_game_id, packet) {
+ if (packet.type == 'PacketPokerPlayerPlaces') {
+ server.places.tables = packet.tables;
+ server.places.tourneys = packet.tourneys;
+ server.notifyUpdate(packet);
+ server.setState(server.RUNNING, 'PacketPokerPlayerPlaces');
+ return false;
+ }
+ return true;
+ });
+ });
+ } else {
+ jpoker.dialog(_("User must be logged in"));
+ }
}
});
@@ -1376,7 +1399,23 @@
this.dealer = -1;
this.position = -1;
this.state = 'end';
+ this.clearTimeout(this.pollTimer);
+ this.pollTimer = -1;
+ this.pollFrequency = 1000;
},
+
+ clearTimeout: function(id) { return window.clearTimeout(id); },
+ setTimeout: function(cb, delay) { return window.setTimeout(cb, delay); },
+
+ poll: function() {
+ var server = jpoker.getServer(this.url);
+ server.sendPacket({type: 'PacketPokerPoll',
+ game_id: this.game_id});
+ var $this = this;
+ this.pollTimer = this.setTimeout(function() {
+ $this.poll();
+ }, this.pollFrequency);
+ },
buyInLimits: function() {
var max = Math.min(this.buyIn.max, this.buyIn.bankroll);
@@ -3352,6 +3391,74 @@
avatar: '<div class=\'jpoker_user_info_avatar_preview\'></div><form class=\'jpoker_user_info_avatar_upload\' action=\'{upload_url}?name={hash}\' method=\'post\' enctype=\'multipart/form-data\'><input type=\'file\' name=\'filename\'></input><input type=\'submit\' value=\'{upload}\'></input></form><div class=\'jpoker_user_info_avatar_upload_feedback\'></div>'
};
+ //
+ // places
+ //
+ jpoker.plugins.places = function(url, options) {
+
+ var places = jpoker.plugins.places;
+ var opts = $.extend({}, places.defaults, options);
+ var server = jpoker.url2server({ url: url });
+
+ return this.each(function() {
+ var $this = $(this);
+
+ var id = jpoker.uid();
+
+ $this.append('<div class=\'jpoker_places\' id=\'' + id + '\'></div>');
+
+ var updated = function(server, what, packet) {
+ var element = document.getElementById(id);
+ if(element) {
+ if(packet && packet.type == 'PacketPokerPlayerPlaces') {
+ $(element).html(places.getHTML(packet));
+ }
+ return true;
+ } else {
+ return false;
+ }
+ };
+
+ server.registerUpdate(updated, null, 'places ' + id);
+ server.getPlayerPlaces();
+
+ return this;
+ });
+ };
+
+ jpoker.plugins.places.defaults = $.extend({
+ }, jpoker.defaults);
+
+ jpoker.plugins.places.getHTML = function(packet) {
+ var t = this.templates;
+ var html = [];
+ html.push(t.tables.header.supplant({table_title: _("Tables")}));
+ $.each(packet.tables, function(i, table) {
+ html.push(t.tables.rows.supplant({table: table}));
+ });
+ html.push(t.tables.footer);
+
+ html.push(t.tourneys.header.supplant({tourney_title: _("Tourneys")}));
+ $.each(packet.tourneys, function(i, tourney) {
+ html.push(t.tourneys.rows.supplant({tourney: tourney}));
+ });
+ html.push(t.tourneys.footer);
+ return html.join('\n');
+ };
+
+ jpoker.plugins.places.templates = {
+ tables : {
+ header : '<div class=\'jpoker_places_tables\'><table><thead><tr><th>{table_title}</th></tr></thead><tbody>',
+ rows : '<tr class=\'jpoker_places_table\'><td>{table}</td></tr>',
+ footer : '</tbody></table></div>'
+ },
+ tourneys : {
+ header : '<div class=\'jpoker_places_tourneys\'><table><thead><tr><th>{tourney_title}</th></tr></thead><tbody>',
+ rows : '<tr class=\'jpoker_places_tourney\'><td>{tourney}</td></tr>',
+ footer : '</tbody></table></div>'
+ },
+ };
+
jpoker.plugins.muck = {
AUTO_MUCK_WIN: 1,
AUTO_MUCK_LOSE: 2,
--- a/jpoker/js/test-jpoker.js Mon Aug 25 01:59:12 2008 +0200
+++ b/jpoker/js/test-jpoker.js Mon Aug 25 19:44:42 2008 +0200
@@ -1078,6 +1078,35 @@
equals(server.callbacks[0][0], callback, 'getPersonalInfo callback still in place');
});
+test("jpoker.server.getPlayerPlaces", function(){
+ expect(5);
+ stop();
+
+ var serial = 42;
+ var PLAYER_PLACES_PACKET = {type: 'PacketPokerPlayerPlaces', serial: 42, tables:[11, 12, 13], tourneys:[21, 22, 23]};
+
+ var server = jpoker.serverCreate({ url: 'url' });
+
+ server.serial = serial;
+
+ server.sendPacket = function(packet) {
+ equals(packet.type, 'PacketPokerGetPlayerPlaces');
+ equals(packet.serial, serial, 'player serial');
+ equals(server.getState(), server.PLACES);
+ server.queueIncoming([PLAYER_PLACES_PACKET]);
+ };
+ server.registerUpdate(function(server, what, packet) {
+ if (packet.type == 'PacketPokerPlayerPlaces') {
+ equals(server.places.tables[0], 11, 'places.tables');
+ equals(server.places.tourneys[0], 21, 'places.tourneys');
+ server.queueRunning(start_and_cleanup);
+ return false;
+ }
+ return true;
+ });
+ server.getPlayerPlaces();
+ });
+
test("jpoker.server.selectTables", function(){
expect(3);
stop();
@@ -1631,6 +1660,39 @@
equals(tourney.is_tourney, true);
});
+
+test("jpoker.table.poll", function() {
+ expect(6);
+ var server = jpoker.serverCreate({ url: 'url' });
+ server.sendPacket = function(packet) {
+ equals(packet.type, "PacketPokerPoll");
+ };
+ var callback;
+ jpoker.table.prototype.setTimeout = function(f) {
+ callback = f;
+ return 42;
+ };
+ var table = new jpoker.table(server, {"type": "PacketPokerTable", "id": 101, "betting_structure": "15-30-no-limit"});
+ table.poll();
+ equals(table.pollTimer, 42, 'pollTimer set');
+
+ jpoker.table.prototype.clearTimeout = function(timer) {
+ equals(timer, 42, "clearTimeout called by poll")
+ };
+ callback();
+
+ table.poll = function() {
+ ok(true, "poll called by timeout callback");
+ };
+ callback();
+
+ jpoker.table.prototype.clearTimeout = function(timer) {
+ ok(true, "clearTimeout called by uninit")
+ };
+ table.uninit();
+ equals(table.pollTimer, -1, 'pollTimer cleared by uninit');
+ cleanup();
+ });
test("jpoker.table.handler: PacketPokerState", function(){
expect(1);
@@ -4370,6 +4432,47 @@
cleanup(id);
});
+test("jpoker.plugins.places", function(){
+ expect(5);
+ stop();
+
+ var server = jpoker.serverCreate({ url: 'url' });
+ server.connectionState = 'connected';
+
+ server.serial = 42;
+ var PLAYER_PLACES_PACKET = {type: 'PacketPokerPlayerPlaces', serial: 42, tables: [11, 12, 13], tourneys: [21, 22]};
+
+ var PokerServer = function() {};
+ PokerServer.prototype = {
+ outgoing: "[ " + JSON.stringify(PLAYER_PLACES_PACKET) + " ]",
+
+ handle: function(packet) { }
+ };
+ ActiveXObject.prototype.server = new PokerServer();
+
+ var id = 'jpoker' + jpoker.serial;
+ var place = $('#main');
+
+ equals('update' in server.callbacks, false, 'no update registered');
+ place.jpoker('places', 'url');
+ equals(server.callbacks.update.length, 1, 'places update registered');
+ equals($('.jpoker_places').length, 1, 'places div');
+ server.registerUpdate(function(server, what, data) {
+ var element = $('#' + id);
+ if(element.length > 0) {
+ if (data.type == 'PacketPokerPlayerPlaces') {
+ equals($('.jpoker_places_table', element).length, 3, 'jpoker_places_table');
+ equals($('.jpoker_places_tourney', element).length, 2, 'jpoker_places_tourney');
+ $('#' + id).remove();
+ }
+ return true;
+ } else {
+ start_and_cleanup();
+ return false;
+ }
+ });
+ });
+
test("jpoker.preferences", function() {
expect(4);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/jpoker/index/Places.tiddler Mon Aug 25 19:44:42 2008 +0200
@@ -0,0 +1,1 @@
+<<jpokerPlaces>>
\ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/jpoker/index/Places.tiddler.div Mon Aug 25 19:44:42 2008 +0200
@@ -0,0 +1,1 @@
+title="Places" modifier="proppy" modified="200808251404" created="200808251404" tags="toRSS" changecount="1"
\ No newline at end of file