changelog shortlog tags manifest raw

changeset: commit proppy changes

changeset 757: 26c2a433710b
parent 749:7d6d0d81a117
parent 756:0e2ba92c093a
child 762:3428bcf89bfd
child 764:d03f5f879b87
author: loic@pokerdev.call.tld
date: Mon Aug 25 19:44:42 2008 +0200 (2 months ago)
files:
description: commit proppy changes
--- 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