changelog shortlog tags manifest raw

changeset: add jpoker.plugins.places

changeset 751: 8b3022e641cc
parent 750:9730e3812655
child 752:ab7750254c3d
author: root@kun
date: Mon Aug 25 10:21:37 2008 +0000 (2 months ago)
files: jpoker/js/jquery.jpoker.js jpoker/js/test-jpoker.js
description: add jpoker.plugins.places
--- a/jpoker/js/jquery.jpoker.js	Mon Aug 25 10:00:27 2008 +0000
+++ b/jpoker/js/jquery.jpoker.js	Mon Aug 25 10:21:37 2008 +0000
@@ -3375,6 +3375,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({table_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 10:00:27 2008 +0000
+++ b/jpoker/js/test-jpoker.js	Mon Aug 25 10:21:37 2008 +0000
@@ -4399,6 +4399,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);