Welcome to TiddlyWiki created by Jeremy Ruston, Copyright © 2007 UnaMesa Association
The situation I encountered it was when i went into a table and then exited. Then clicked on Tables but it didn't show me the list of tables. - on Mozilla Firefox 2.0.
Fixed (was a state problem)
{{{
string: 1) empty string selects all tournaments
2) a string that contains no tabulation selects
the tournament with the same name
3) a string with a tabulation selects all tournaments
of a given type (sit&go or regular) that can be played
using a given currency. The string before the tabulation
is the name of the currency, the string after the tabulation
distinguishes between sit&go and regular.
Examples: 1<tabulation>sit_n_go selects all sit&go tournaments
using currency 1.
2<tabulation>regular selects all regular tournaments
using currency 2
}}}
http://jpoker.aminche.com/hg/jpoker/rev/6854919bce24
Avatar uploading from UserInfo always failed with:
{{{
'Uploading failed: not logged'
}}}
jpoker debugging:
{{{
Cookie
TWISTED_SESSION_33709A7BAC22083C22659129347E4F1D7BDA9230=2ac496f37bb9aa7564234a03d3b4d4ae;
TWISTED_SESSION=7c1ea6ade4c304484b21a04164667f8e
}}}
poker-network debugging:
{{{
2008-08-18 10:10:54+0000 [HTTPChannel,6,127.0.0.1] PokerAvatar serial = 0, name = anonymous
}}}
memcached debugging:
{{{
root@kun:/usr/src# python poker-network/examples/memcache-client 2ac496f37bb9aa7564234a03d3b4d4ae
28
root@kun:/usr/src# python poker-network/examples/memcache-client 7c1ea6ade4c304484b21a04164667f8e
0
}}}
/UPLOAD UNAUTHORIZED
{{{
root@kun:/# curl -b /tmp/cookiejar -c /tmp/cookiejar -v -F filename=@/usr/src/cropped.png http://127.0.0.1:19384/UPLOAD
* About to connect() to 127.0.0.1 port 19384 (#0)
* Trying 127.0.0.1... connected
* Connected to 127.0.0.1 (127.0.0.1) port 19384 (#0)
> POST /UPLOAD HTTP/1.1
> User-Agent: curl/7.18.2 (i486-pc-linux-gnu) libcurl/7.18.2 OpenSSL/0.9.8g zlib/1.2.3.3 libidn/1.9 libssh2/0.18
> Host: 127.0.0.1:19384
> Accept: */*
> Content-Length: 4693
> Expect: 100-continue
> Content-Type: multipart/form-data; boundary=----------------------------347bb9ea8643
>
< HTTP/1.1 401 Unauthorized
< Date: Mon, 18 Aug 2008 12:04:44 GMT
< Content-length: 10
< Content-type: text/html
< Server: TwistedWeb/8.1.0
* Added cookie TWISTED_SESSION="3a4ba5044f1ec380e8150d38fdb97f47" for domain 127.0.0.1, path /, expire 0
< Set-Cookie: TWISTED_SESSION=3a4ba5044f1ec380e8150d38fdb97f47; Path=/
<
* Connection #0 to host 127.0.0.1 left intact
* Closing connection #0
root@kun:/# cat /tmp/cookiejar
# Netscape HTTP Cookie File
# http://curlm.haxx.se/rfc/cookie_spec.html
# This file was generated by libcurl! Edit at your own risk.
127.0.0.1 FALSE / FALSE 0 TWISTED_SESSION 3a4ba5044f1ec380e8150d38fdb97f47
}}}
/UPLOAD OK
{{{
root@kun:/# curl -c /tmp/cookiejar -v -d '{"type":"PacketLogin", "username":"imageupload", "password":"imageupload"}' http://127.0.0.1:19384/POKER_REST
* About to connect() to 127.0.0.1 port 19384 (#0)
* Trying 127.0.0.1... connected
* Connected to 127.0.0.1 (127.0.0.1) port 19384 (#0)
> POST /POKER_REST HTTP/1.1
> User-Agent: curl/7.18.2 (i486-pc-linux-gnu) libcurl/7.18.2 OpenSSL/0.9.8g zlib/1.2.3.3 libidn/1.9 libssh2/0.18
> Host: 127.0.0.1:19384
> Accept: */*
> Content-Length: 74
> Content-Type: application/x-www-form-urlencoded
>
< HTTP/1.1 200 OK
< Date: Mon, 18 Aug 2008 12:06:42 GMT
< Content-length: 80
< Content-type: text/plain; charset="UTF-8"
< Server: TwistedWeb/8.1.0
* Added cookie TWISTED_SESSION="d581f5ce3555cfec79e2d42e9a830c93" for domain 127.0.0.1, path /, expire 0
< Set-Cookie: TWISTED_SESSION=d581f5ce3555cfec79e2d42e9a830c93; Path=/
<
* Connection #0 to host 127.0.0.1 left intact
* Closing connection #0
[{"type": "PacketAuthOk"}, {"type": "PacketSerial", "serial": 39, "cookie": ""}]root@kun:/#
root@kun:/# cat /tmp/cookiejar
# Netscape HTTP Cookie File
# http://curlm.haxx.se/rfc/cookie_spec.html
# This file was generated by libcurl! Edit at your own risk.
127.0.0.1 FALSE / FALSE 0 TWISTED_SESSION d581f5ce3555cfec79e2d42e9a830c93
root@kun:/# curl -b /tmp/cookiejar -c /tmp/cookiejar -v -F filename=@/usr/src/cropped.png http://127.0.0.1:19384/UPLOAD
* About to connect() to 127.0.0.1 port 19384 (#0)
* Trying 127.0.0.1... connected
* Connected to 127.0.0.1 (127.0.0.1) port 19384 (#0)
> POST /UPLOAD HTTP/1.1
> User-Agent: curl/7.18.2 (i486-pc-linux-gnu) libcurl/7.18.2 OpenSSL/0.9.8g zlib/1.2.3.3 libidn/1.9 libssh2/0.18
> Host: 127.0.0.1:19384
> Accept: */*
> Cookie: TWISTED_SESSION=d581f5ce3555cfec79e2d42e9a830c93
> Content-Length: 4693
> Expect: 100-continue
> Content-Type: multipart/form-data; boundary=----------------------------a7778a2cd2b8
>
< HTTP/1.1 200 OK
< Date: Mon, 18 Aug 2008 12:07:26 GMT
< Content-length: 14
< Content-type: text/plain; charset="UTF-8"
< Server: TwistedWeb/8.1.0
<
* Connection #0 to host 127.0.0.1 left intact
* Closing connection #0
image uploadedroot@kun:/# cat /tmp/cookiejar
# Netscape HTTP Cookie File
# http://curlm.haxx.se/rfc/cookie_spec.html
# This file was generated by libcurl! Edit at your own risk.
127.0.0.1 FALSE / FALSE 0 TWISTED_SESSION d581f5ce3555cfec79e2d42e9a830c93
root@kun:/#
}}}
{{{
(10:30:42 AM) dachary: it's not just 2h
(10:30:50 AM) dachary: it's a number of other cards
(10:31:02 AM) dachary: hum
(10:31:04 AM) dachary: 2h again
(10:31:41 AM) dachary: 2h is code 0
}}}
http://code.google.com/p/fbug/issues/detail?id=586
It would be great to have an administrative account that can fix problems, boot players and tables, and other such activities.
----
such a user exists but he currently has no dedicated possibilities (such as kicking a user out of the table)
I receive this strange error many times when registering: "Another user is in PLAY state". No one was playing on the table at that point. Even if they did, it should not stop me from registering.
in batch mode, jpoker should show a feedback that suggest that no interaction is possible until Streamode
for example: a semi transparent div, with progress indicator
The bet amount text under chips does not show in internet explorer after player makes a bet.
When using Internet Explorer 8, there is no bet amount after making a bet as well as other actions causing chips to be put in the pot.
Only on mouse over will the amount appear. However, the pot amount does appear when chips are in the pot.
To create a new bug entry, use the "new bug" menu entry to the right, under the search bar.
also add a jpoker_card for properties common to all cards
I restarted my browser and noticed that my user is still listed in two different tables.
Upon attempting to log back in I receive the following message:
another client already has role PLAY
----
The timeout in these cases is about 30 seconds. I don't know how we can handle this differently.
- put a breakpoint in jpoker.plugins.table
- only get called once
- put a breakpoint in jpoker.plugins.tableList
- only get called once
- put a breakpoint in jpoker.plugins.userInfo
- only get called once
Type the text for 'Chat log scrollbar should be skinned'
We can use jScrollPane jquery ui plugin for this.
there should be a class for all buttons, so it'll become easier and shorter to style them.
Change the tag of entries to ''Done'' to move them to the list of things that belong to the past.
http://jpoker.aminche.com/hg/jpoker/rev/89bfc97858b0
http://jpoker.aminche.com/hg/jpoker/rev/181634a3af02
http://jpoker.aminche.com/hg/jpoker/rev/39120991a17b
http://jpoker.aminche.com/hg/jpoker/rev/642321b1d840
http://jpoker.aminche.com/hg/jpoker/rev/7a0166a99eba
http://jpoker.aminche.com/hg/jpoker/rev/67e7c03b8736
http://jpoker.aminche.com/hg/jpoker/rev/589ce2fe0404
http://jpoker.aminche.com/hg/jpoker/rev/052cf6deb1b8
http://jpoker.aminche.com/hg/jpoker/rev/d50073381113
http://jpoker.aminche.com/hg/jpoker-featuredtable
http://jpoker.aminche.com/hg/jpoker-tourneys/rev/ba78ab5cf39a
http://jpoker.aminche.com/hg/jpoker/rev/910b719bfffb
http://jpoker.aminche.com/hg/jpoker/rev/0d13c0634b96
http://jpoker.aminche.com/hg/jpoker-userinfo/rev/fb4a574658a5
http://jpoker.aminche.com/hg/jpoker/rev/4086ec59b02e
http://jpoker.aminche.com/hg/jpoker/rev/d50073381113
http://jpoker.aminche.com/hg/jpoker/rev/57bf739e6653
http://jpoker.aminche.com/hg/jpoker/rev/49a313557118
http://jpoker.aminche.com/hg/jpoker/rev/9d19056c8136
http://jpoker.aminche.com/hg/jpoker/rev/1ad144e96540
To create a new feature request, use the "new feature" menu entry to the right, under the search bar.
Currently, to enter an idea or feedback, one needs to:
- locate the "Feedback" link
- switch to a new page with a different interface and lots of scary text
The current version is good for geeks and dedicated users, but standard users will shy away, if they ever see there is a way to add feedback. Suggestion:
- Make the "Feedback" feature a lot more visible: more people will see it, and it will help people understand this is actually something devs are in need of. For example, it could be moved to the top right of the table on the other side of "Table one" title. A small light bulb icon, flashy color and a text like "Help us! We need your feedback"
- Make sure the feedback entry is simple. The best would be to pop a simple textarea & a "Send" button on the same page (no title, no menu, no text, KISS!).
loic: I will create a button in jpoker that shows a dialog with a title bar + text + link to the idea page + button to submit. The submission will create a file thru dav that will then be merged into the ideas.html tiddlywiki.
xavier: great! :)
http://jpoker.aminche.com/hg/jpoker/rev/c58bcffc34b2
http://jpoker.aminche.com/hg/jpoker-skin/rev/f809afe4c9b1
Powered by [[tiddlytracker|http://garden.dachary.org/tiddlytracker.html]] Copyright Loic Dachary mailto:loic@dachary.org License : [[GNU GPLv3 or Later|http://gnu.org/licenses/gpl.txt]]
- why not be futuristic and change the doctype to HTML5 ? This requires no markup modifications.
/***
|''Name:''|GenerateRssByTagPlugin|
|''Description:''|Only tiddlers with a specific tag are inluded in the RSSFeed. If no tiddlers are selected then works as before. (see ticket #270: http://trac.tiddlywiki.org/tiddlywiki/ticket/270). <br>RssTag: <<option txtRssTag>>|
|''Version:''|1.0.2|
|''Date:''|Apr 20, 2007|
|''Source:''|http://tiddlywiki.bidix.info/#GenerateRssByTagPlugin|
|''Author:''|BidiX (BidiX (at) bidix (dot) info)|
|''[[License]]:''|[[BSD open source license|http://tiddlywiki.bidix.info/#%5B%5BBSD%20open%20source%20license%5D%5D ]]|
|''~CoreVersion:''|2.2.0 (Beta 5)|
***/
//{{{
version.extensions.GenerateRssByTagPlugin = {
major: 1, minor: 0, revision: 2,
date: new Date("Apr 20, 2007"),
source: 'http://tiddlywiki.bidix.info/#PasswordOptionPlugin',
author: 'BidiX (BidiX (at) bidix (dot) info',
coreVersion: '2.2.0 (Beta 5)'
};
if (!window.bidix) window.bidix = {}; // bidix namespace
bidix.generateRssByTag = function()
{
var s = [];
var d = new Date();
var u = store.getTiddlerText("SiteUrl");
// Assemble the header
s.push("<" + "?xml version=\"1.0\"" + " encoding='UTF-8' " + "?" + ">");
s.push("<rss version=\"2.0\">");
s.push("<channel>");
s.push("<title" + ">" + wikifyPlain("SiteTitle").htmlEncode() + "</title" + ">");
if(u)
s.push("<link>" + u.htmlEncode() + "</link>");
s.push("<description>" + wikifyPlain("SiteSubtitle").htmlEncode() + "</description>");
s.push("<language>en-us</language>");
s.push("<copyright>Copyright " + d.getFullYear() + " " + config.options.txtUserName.htmlEncode() + "</copyright>");
s.push("<pubDate>" + d.toGMTString() + "</pubDate>");
s.push("<lastBuildDate>" + d.toGMTString() + "</lastBuildDate>");
s.push("<docs>http://blogs.law.harvard.edu/tech/rss</docs>");
s.push("<generator>TiddlyWiki " + version.major + "." + version.minor + "." + version.revision + "</generator>");
// The body
var tiddlers;
if (config.options.txtRssTag && store.getTaggedTiddlers(config.options.txtRssTag).length > 0)
tiddlers = store.getTaggedTiddlers(config.options.txtRssTag,"modified");
else
tiddlers = store.getTiddlers("modified","[[excludeLists]]");
var n = config.numRssItems > tiddlers.length ? 0 : tiddlers.length-config.numRssItems;
for (var t=tiddlers.length-1; t>=n; t--)
s.push(tiddlers[t].saveToRss(u));
// And footer
s.push("</channel>");
s.push("</rss>");
// Save it all
return s.join("\n");
};
//
// Initializations
//
bidix.generateRss = generateRss; // backup core version
generateRss = bidix.generateRssByTag; // install new one
config.options.txtRssTag = "toRSS"; // default RssTag. use <<option txtRssTag>> to overwritte
merge(config.optionsDesc,{txtRssTag: "Only tiddlers with this tag will be included in the RSS Feed."});
//}}}
that's what happens. Please describe the use case where it is not happening as it should.
/***
| Name|HideWhenPlugin|
| Description|Allows conditional inclusion/exclusion in templates|
| Version|3.0 ($Rev: 1845 $)|
| Date|$Date: 2007-03-16 15:19:22 +1000 (Fri, 16 Mar 2007) $|
| Source|http://mptw.tiddlyspot.com/#HideWhenPlugin|
| Author|Simon Baird <simon.baird@gmail.com>|
| License|http://mptw.tiddlyspot.com/#TheBSDLicense|
For use in ViewTemplate and EditTemplate. Example usage:
{{{<div macro="showWhenTagged Task">[[TaskToolbar]]</div>}}}
{{{<div macro="showWhen tiddler.modifier == 'BartSimpson'"><img src="bart.gif"/></div>}}}
***/
//{{{
window.removeElementWhen = function(test,place) {
if (test) {
removeChildren(place);
place.parentNode.removeChild(place);
}
};
merge(config.macros,{
hideWhen: { handler: function(place,macroName,params,wikifier,paramString,tiddler) {
removeElementWhen( eval(paramString), place);
}},
showWhen: { handler: function(place,macroName,params,wikifier,paramString,tiddler) {
removeElementWhen( !eval(paramString), place);
}},
hideWhenTagged: { handler: function (place,macroName,params,wikifier,paramString,tiddler) {
removeElementWhen( tiddler.tags.containsAll(params), place);
}},
showWhenTagged: { handler: function (place,macroName,params,wikifier,paramString,tiddler) {
removeElementWhen( !tiddler.tags.containsAll(params), place);
}},
hideWhenTaggedAny: { handler: function (place,macroName,params,wikifier,paramString,tiddler) {
removeElementWhen( tiddler.tags.containsAny(params), place);
}},
showWhenTaggedAny: { handler: function (place,macroName,params,wikifier,paramString,tiddler) {
removeElementWhen( !tiddler.tags.containsAny(params), place);
}},
hideWhenTaggedAll: { handler: function (place,macroName,params,wikifier,paramString,tiddler) {
removeElementWhen( tiddler.tags.containsAll(params), place);
}},
showWhenTaggedAll: { handler: function (place,macroName,params,wikifier,paramString,tiddler) {
removeElementWhen( !tiddler.tags.containsAll(params), place);
}},
hideWhenExists: { handler: function(place,macroName,params,wikifier,paramString,tiddler) {
removeElementWhen( store.tiddlerExists(params[0]) || store.isShadowTiddler(params[0]), place);
}},
showWhenExists: { handler: function(place,macroName,params,wikifier,paramString,tiddler) {
removeElementWhen( !(store.tiddlerExists(params[0]) || store.isShadowTiddler(params[0])), place);
}}
});
//}}}
I have noticed that after a hand is over and each players hole cards are shown, the card_back2.gif is still visible. The card backs should disappear as the hole cards are displayed.
To create a new idea, fill <<newTiddler label:"the following form" prompt:"Create a new idea" title:"Short idea description" tag:toRSS tag:Ideas>> and click "done" when finished.
Currently for buttons with hover images, when we move the cursor over the button, the background image disappears until the hover image is loaded
(esp. visible on slower connections).
Would be nice to do image preloading for dynamically displayed images.
/Chandan
----
it was decided to show a table by default because it's where the action is. It is possible, however, to cook another tiddlywiki with a different default.
http://jpoker.aminche.com/hg/jpoker/rev/2d771913af4e
(02:42:12 PM) saqimtiaz: proppy: did you add this bug: JpokerPluginRestOverride.tiddler should not be copied in non standalone version
(02:42:30 PM) proppy: yep
(02:42:40 PM) saqimtiaz: proppy: dachary asked for this
(02:42:43 PM) proppy: saqimtiaz: it is a non-bug ?
(02:42:47 PM) saqimtiaz: originally it was the way you wanted
(02:43:08 PM) saqimtiaz: it might be worth discussing with Loic.. but this is what he wanted.
(02:43:10 PM) proppy: really because by default it try to point the non standalone version to jspoker.pokersource.info, instead of /REST
(02:43:15 PM) proppy: which sounds kinda wierd
(02:43:20 PM) saqimtiaz: yup, I agree
(02:43:20 PM) proppy: yep, np
(02:43:35 PM) proppy: saqimtiaz: you can remove tag Bugs, and leave only Ideas then
(02:43:36 PM) saqimtiaz: simple fix is to move that tiddler to dir tiddlers-standalone. That's where it was before.
/***
|''Name:''|LegacyStrikeThroughPlugin|
|''Description:''|Support for legacy (pre 2.1) strike through formatting|
|''Version:''|1.0.2|
|''Date:''|Jul 21, 2006|
|''Source:''|http://www.tiddlywiki.com/#LegacyStrikeThroughPlugin|
|''Author:''|MartinBudden (mjbudden (at) gmail (dot) com)|
|''License:''|[[BSD open source license]]|
|''CoreVersion:''|2.1.0|
***/
//{{{
// Ensure that the LegacyStrikeThrough Plugin is only installed once.
if(!version.extensions.LegacyStrikeThroughPlugin) {
version.extensions.LegacyStrikeThroughPlugin = {installed:true};
config.formatters.push(
{
name: "legacyStrikeByChar",
match: "==",
termRegExp: /(==)/mg,
element: "strike",
handler: config.formatterHelpers.createElementAndWikify
});
} //# end of "install only once"
//}}}
As far as the server is concerned, a user can register for as many tables as they like [[we considered the idea that the server should limit this for the client|http://pokersource.info/developers/specifications/private.html#%5B%5Bcap%20the%20number%20of%20tournaments%20per%20player%5D%5D]]; however, it makes no sense to implement his kind of control on the server side when the client has the requirements and it may be different for different clients in the future.
Therefore, the client should do something like:
if (inTourney or tourney.registered("two hours out"):
WARN USER THEY MAY HAVE TWO TABLES AT ONCE IF THEY REGISTER NOW
[[Loic and I discussed this on IRC if you wish to read the discussion|http://pokersource.info/irc/pokersource@irc.freenode.net/2008-08-31.html]]
[[Ideas]]
[[Bugs]]
[[Features]]
[[Done]]
[[WontFix]]
[[WorksForMe]]
[[RC]]
----
[[proppy]]
[[loic]]
[[bkuhn]]
[[rikeko]]
It would be very nice to have the client automatically scale all objects to the size of the browser. Very useful when playing multiple tables or while working on other applications while playing. Resizing the jpoker client to a smaller size in this scenario would be very convenient. It would also be nice to make jpoker detect wide screen monitor formats and display the page objects appropriately to fit a 16:9 format when in full screen mode. Most people that I know have wide screens these days and we just get annoyed when we are forced to look at pages that are not dynamic. A good example of this can be viewed at:
http://windyroad.org/2007/05/18/resolution-independent-web-design/
- user info should not be a table but a dictionary list
- all inputs should use a class, text and submit, so they can be styled properly also for IE browsers
- use labels and ids on inputs on the login page
- there is an empty div in jpoker logout, dont know where it comes from
- in the tablepicker options, instead of being alignes one after the other, inputs and lables should be in a dictionary list
- server status should be a list, not divs.
- the server status css does contain only 5 lines, it should be deleted and its contents put to jpoker_common.css
- the places.html markup should be refactored as lists, a table for just one column is just too much.
- .jpoker_tourney_details .jpoker_tourney_name should be a real title like a H3 for example
- jpoker_ptable_table_info should/ could be a list
- jpoker_ptable_table may be unnecessary, it contains only the table background. which could also be on the parent div which has a less restrictive size.
- jpoker_ptable_powered_by jpoker_powered_by should be more at the end of the code, not in the middle of pots i guess
* creation of the challenge
** tourneyCreate
*** tourneyGameFilled callback
**** tableJoin
***** PacketPokerTable
** tourneyNotifyStart
*** jpoker tableJoin
**** PacketPokerTable
<!--{{{-->
<div class='header' macro='gradient vert [[ColorPalette::PrimaryLight]] [[ColorPalette::PrimaryMid]]'>
<div class='headerShadow'>
<span class='siteTitle' refresh='content' tiddler='SiteTitle'></span>
<span class='siteSubtitle' refresh='content' tiddler='SiteSubtitle'></span>
</div>
<div class='headerForeground'>
<span class='siteTitle' refresh='content' tiddler='SiteTitle'></span>
<span class='siteSubtitle' refresh='content' tiddler='SiteSubtitle'></span>
</div>
</div>
<div id='mainMenu' refresh='content' tiddler='MainMenu'></div>
<div id='sidebar'>
<div id='sidebarOptions' refresh='content' tiddler='SideBarOptions'></div>
<div id='sidebarTabs' refresh='content' force='true' tiddler='SideBarTabs'></div>
</div>
<div id='displayArea'>
<div id='messageArea'></div>
<div id='tiddlerDisplay'></div>
<div id="footer" class="footer" refresh='content' force='true' tiddler='Footer'></div>
</div>
<!--}}}-->
stringify()json2.js (line 201)
stringify()json2.js (line 201)
errorHandler()()jquery.jpoker.js (line 153)
error()()jquery.jpoker.js (line 147)
error()()jquery.jpoker.js (line 642)
error()()jquery.jpoker.js (line 763)
handleError()()jquery-1.2.6.js (line 2845)
onreadystatechange()()jquery-1.2.6.js (line 2775)
[Break on this error] v = stringify(value[k], whitelist);
jpoker/index.html, breakpoint in any macro code and see them called twice. Does not happen in jpoker/poker.html.
/***
|''Name:''|RSSReaderPlugin|
|''Description:''|This plugin provides a RSSReader for TiddlyWiki|
|''Version:''|0.3.0|
|''Date:''|Aug 24, 2006|
|''Source:''|http://tiddlywiki.bidix.info/#RSSReaderPlugin|
|''Documentation:''|http://tiddlywiki.bidix.info/#RSSReaderPluginDoc|
|''Author:''|BidiX (BidiX (at) bidix (dot) info)|
|''Credit:''|BramChen for RssNewsMacro|
|''License:''|[[BSD open source license|http://tiddlywiki.bidix.info/#%5B%5BBSD%20open%20source%20license%5D%5D ]]|
|''~CoreVersion:''|2.0.0|
|''Browser:''|Firefox 1.5; InternetExplorer 6.0; Safari|
|''Include:''|none|
|''Require:''|none|
***/
//{{{
version.extensions.RSSReaderPlugin = {
major: 0, minor: 3, revision: 0,
date: new Date("Aug 24, 2006"),
author: "BidiX",
credit: "BramChen for RssNewsMacro",
source: "http://TiddlyWiki.bidix.info/#RSSReaderPlugin",
documentation : "http://TiddlyWiki.bidix.info/#RSSReaderPluginDoc",
author: 'BidiX (BidiX (at) bidix (dot) info',
license: '[[BSD open source license|http://tiddlywiki.bidix.info/#%5B%5BBSD%20open%20source%20license%5D%5D]]',
coreVersion: '2.0.0',
browser: 'Firefox 1.5; InternetExplorer 6.0; Safari'
};
config.macros.rssReader = {
dateFormat: "DDD, DD MMM YYYY",
itemStyle: "display: block;border: 1px solid black;padding: 5px;margin: 5px;", //useed '@@'+itemStyle+itemText+'@@'
msg:{
permissionDenied: "Permission to read preferences was denied.",
noRSSFeed: "No RSS Feed at this address %0",
urlNotAccessible: " Access to %0 is not allowed"
},
cache: [], // url => request
desc: "noDesc",
// feedURL: "",
place:"",
handler: function(place,macroName,params,wikifier,paramString,tiddler){
var desc = params[0];
var feedURL = params[1];
// var toFilter = (params[2] ? params[2] : false);
var toFilter = false;
var filterString;
if (params[2] != undefined) {
toFilter = true;
if (params[2].match(/\w+/))
filterString = params[2];
else
filterString = tiddler.title;
}
var place = createTiddlyElement(place, "div", "RSSReader");
wikify("^^<<rssFeedUpdate "+feedURL+" [[" + tiddler.title + "]]>>^^\n",place);
if (this.cache[feedURL]) {
this.processResponse(this.cache[feedURL], feedURL, place, desc, toFilter, filterString);
}
else {
this.asyncGet(feedURL, place, desc, toFilter, filterString);
}
},
asyncGet: function (feedURL, place, desc, toFilter, filterString){
var xmlhttp;
try {xmlhttp=new XMLHttpRequest();}
catch (e) {
try {xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");}
catch (e) {
try {xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");}
catch (e) { displayMessage(e.description?e.description:e.toString());}
}
}
if (!xmlhttp){
return;
}
if (window.netscape){
try {
if (document.location.protocol.indexOf("http") == -1) {
netscape.security.PrivilegeManager.enablePrivilege("UniversalBrowserRead");
}
}
catch (e) { displayMessage(e.description?e.description:e.toString()); }
}
xmlhttp.onreadystatechange=function (){
if (xmlhttp.readyState==4) {
if (xmlhttp.status==200 || xmlhttp.status===0) {
config.macros.rssReader.processResponse(xmlhttp, feedURL, place, desc, toFilter, filterString);
}
else {
displayMessage("Problem retrieving XML data:" + xmlhttp.statusText);
}
}
};
try {
xmlhttp.open("GET",feedURL,true);
if (config.browser.isIE) {
xmlhttp.send();
}
else {
xmlhttp.send(null);
}
}
catch (e) {
wikify(e.toString()+this.urlNotAccessible.format([feedURL]), place);
}
},
processResponse: function(xmlhttp, feedURL, place, desc, toFilter, filterString){
if (window.netscape){
try {
if (document.location.protocol.indexOf("http") == -1) {
netscape.security.PrivilegeManager.enablePrivilege("UniversalBrowserRead");
}
}
catch (e) { displayMessage(e.description?e.description:e.toString()); }
}
if (xmlhttp.responseXML){
this.cache[feedURL] = xmlhttp;
this.genRssNews(xmlhttp.responseXML, place, feedURL, desc, toFilter, filterString);
}
else {
var dom = (new DOMParser()).parseFromString(xmlhttp.responseText, "text/xml");
if (dom) {
this.cache[feedURL] = xmlhttp;
this.genRssNews(dom, place, feedURL, desc, toFilter, filterString);
}
else {
wikify("<html>"+xmlhttp.responseText+"</html>", place);
displayMessage(this.msg.noRSSFeed.format([feedURL]));
}
}
},
genRssNews: function(xml, place, feedURL, desc, toFilter, filterString){
// Channel
var chanelNode = xml.getElementsByTagName('channel').item(0);
var chanelTitleElement = (chanelNode ? chanelNode.getElementsByTagName('title').item(0) : null);
var chanelTitle = "";
if ((chanelTitleElement) && (chanelTitleElement.firstChild)) chanelTitle = chanelTitleElement.firstChild.nodeValue;
var chanelLinkElement = (chanelNode ? chanelNode.getElementsByTagName('link').item(0) : null);
var chanelLink = "";
if (chanelLinkElement) chanelLink = chanelLinkElement.firstChild.nodeValue;
var titleTxt = "!![["+chanelTitle+"|"+chanelLink+"]]\n";
var title = createTiddlyElement(place,"div",null,"ChanelTitle",null);
wikify(titleTxt,title);
// ItemList
var itemList = xml.getElementsByTagName('item');
var article = createTiddlyElement(place,"ul",null,null,null);
var lastDate;
var re;
if (toFilter)
re = new RegExp(filterString.escapeRegExp());
for (var i=0; i<itemList.length; i++){
var titleElm = itemList[i].getElementsByTagName('title').item(0);
var titleText = (titleElm ? titleElm.firstChild.nodeValue : '');
if (toFilter && ! titleText.match(re)) {
continue;
}
var descText = '';
var isWikitext = false;
var descElem = itemList[i].getElementsByTagName('wikitext').item(0);
if (descElem){
try{
isWikitext = true;
descText = "\n"+descElem.firstChild.nodeValue;}
catch(e){}
}
else {
descElem = itemList[i].getElementsByTagName('encoded').item(0);
if (descElem){
try{descText = descElem.firstChild.nodeValue;}
catch(e){}
descText = "<html>"+descText+"</html>";
}
else {
descElem = itemList[i].getElementsByTagName('description').item(0);
if (descElem){
try{descText = descElem.firstChild.nodeValue;}
catch(e){}
descText = descText.replace(/<br \/>/g,'\n');
if (desc == "asHtml")
descText = "<html>"+descText+"</html>";
}
}
}
var linkElm = itemList[i].getElementsByTagName("link").item(0);
var linkURL = linkElm.firstChild.nodeValue;
var pubElm = itemList[i].getElementsByTagName('pubDate').item(0);
var pubDate;
if (!pubElm) {
pubElm = itemList[i].getElementsByTagName('date').item(0); // for del.icio.us
if (pubElm) {
pubDate = pubElm.firstChild.nodeValue;
pubDate = this.formatDateString(this.dateFormat, pubDate);
}
else {
pubDate = '0';
}
}
else {
pubDate = (pubElm ? pubElm.firstChild.nodeValue : 0);
pubDate = this.formatString(this.dateFormat, pubDate);
}
titleText = titleText.replace(/\[|\]/g,'');
var rssText = '** '+'[[' + titleText + '|' + linkURL + ']]' + '\n' ;
if ((desc != "noDesc") && descText){
if (version.extensions.nestedSliders){
rssText = rssText.replace(/\n/g,' ');
descText = '+++[...]\n'
+(isWikitext ? '\n<<rssFeedImportTiddler '+ feedURL + ' [['+titleText+']]>>':'')
+'@@'+this.itemStyle+descText+'\n@@\n'
+'===';
}
rssText = rssText + descText + '\n\n';
}
var story;
if ((lastDate != pubDate) && ( pubDate != '0')) {
story = createTiddlyElement(article,"li",null,"RSSItem",pubDate);
lastDate = pubDate;
}
else {
lastDate = pubDate;
}
story = createTiddlyElement(article,"div",null,"RSSItem",null);
wikify(rssText,story);
}
},
formatString: function(template, theDate){
var dateString = new Date(theDate);
template = template.replace(/hh|mm|ss/g,'');
return dateString.formatString(template);
},
formatDateString: function(template, theDate){
var dateString = new Date(theDate.substr(0,4), theDate.substr(5,2) - 1, theDate.substr(8,2)
/*, theDate.substr(11,2), theDate.substr(14,2), theDate.substr(17,2)*/
);
return dateString.formatString(template);
}
};
//}}}
//{{{
config.macros.rssFeedUpdate = {
label: "Update",
prompt: "Clear the cache and redisplay this RssFeed",
handler: function(place,macroName,params) {
var feedURL = params[0];
var tiddlerTitle = params[1];
createTiddlyButton(place, this.label, this.prompt,
function () {
if (config.macros.rssReader.cache[feedURL]) {
config.macros.rssReader.cache[feedURL] = null;
//story.refreshTiddler(tiddlerTitle,null, true);
}
story.refreshTiddler(tiddlerTitle,null, true);
return false;});
}
};
//}}}
//{{{
config.macros.rssFeedImportTiddler = {
label: "Import",
prompt: "Import this tiddler in this TiddlyWiki",
askReplaceMsg: "Tiddler already exists, replace it ?",
handler: function(place,macroName,params) {
var feedUrl = params[0];
var tiddlerTitle = params[1];
createTiddlyButton(place, this.label, this.prompt,
function () {
if (feedUrl && config.macros.rssReader.cache[feedUrl]) {
var tiddler = config.macros.rssFeedImportTiddler.parseRssNews(config.macros.rssReader.cache[feedUrl].responseXML, tiddlerTitle);
if (tiddler && (! store.getTiddler(tiddlerTitle) || confirm(config.macros.rssFeedImportTiddler.askReplaceMsg))) {
store.addTiddler(tiddler);
store.notify(tiddler.title, true);
store.setDirty(true);
}
}
return false;});
},
// parse a RssFeed for retrieving a Tiddler with title
parseRssNews: function(xml, title) {
// ItemList
if (document.location.protocol.indexOf("http") == -1) {
netscape.security.PrivilegeManager.enablePrivilege("UniversalBrowserRead");
}
var itemList = xml.getElementsByTagName('item');
for (var i=0; i<itemList.length; i++){
var titleElm = itemList[i].getElementsByTagName('title').item(0);
var titleText = titleElm.firstChild.nodeValue;
if (titleText == title) {
// <tiddlywiki:title>
// titleText
titleText = titleText.htmlDecode();
// <tiddlywiki:wikitext>
var elem = itemList[i].getElementsByTagName('wikitext').item(0);
var text = elem ? elem.firstChild.nodeValue.htmlDecode() : "";
// <tiddlywiki:modifier>
elem = itemList[i].getElementsByTagName('modifier').item(0);
var modifier = elem ? elem.firstChild.nodeValue : "";
// <tiddlywiki:modified>
elem = itemList[i].getElementsByTagName('modified').item(0);
var modified = elem ? Date.convertFromYYYYMMDDHHMM(elem.firstChild.nodeValue) : "";
// <tiddlywiki:created>
elem = itemList[i].getElementsByTagName('created').item(0);
var created = elem ? Date.convertFromYYYYMMDDHHMM(elem.firstChild.nodeValue) : "";
// <tiddlywiki:links>
// Links ?
// <tiddlywiki:tags>
elem = itemList[i].getElementsByTagName('tags').item(0);
var tags = elem ? elem.firstChild.nodeValue.htmlDecode() : "";
var tiddler = new Tiddler();
tiddler.assign(titleText,text,modifier,modified,tags,created);
return tiddler;
}
}
// not found
alert("Tiddler \[[" + title +"]] notFound.");
return null;
}
};
//}}}
<<search>><<newTiddler label:"new idea" prompt:"Create a new idea" title:"Short idea description" tag:toRSS tag:Ideas>><<newTiddler label:"new bug" prompt:"Create a new bug entry" title:"Bug Title" tag:toRSS tag:Ideas tag:Bugs>><<newTiddler label:"new feature" prompt:"Create a new feature request entry" title:"Feature description" tag:toRSS tag:Features tag:Ideas>><<closeAll>><<permaview>><<newTiddler>><<saveChanges>><<slider chkSliderOptionsPanel OptionsPanel "options »" "Change TiddlyWiki advanced options">>
and bugs, feature requests
http://jspoker.pokersource.info/ideas.html
As of today, TablePicker does not return an empty PacketPokerTable(), but rather a PacketPokerError(). See poker-network pokerpackets.py documentation for details.
/***
| Name|TagglyTaggingPlugin|
| Description|tagglyTagging macro is a replacement for the builtin tagging macro in your ViewTemplate|
| Version|3.1 ($Rev: 2341 $)|
| Date|$Date: 2007-07-05 10:02:27 +1000 (Thu, 05 Jul 2007) $|
| Source|http://mptw.tiddlyspot.com/#TagglyTaggingPlugin|
| Author|Simon Baird <simon.baird@gmail.com>|
| License|http://mptw.tiddlyspot.com/#TheBSDLicense|
!Notes
See http://mptw.tiddlyspot.com/#TagglyTagging
***/
//{{{
config.taggly = {
// for translations
lingo: {
labels: {
asc: "\u2191", // down arrow
desc: "\u2193", // up arrow
title: "title",
modified: "modified",
created: "created",
show: "+",
hide: "-",
normal: "normal",
group: "group",
commas: "commas",
sitemap: "sitemap",
numCols: "cols\u00b1", // plus minus sign
label: "Tagged as '%0':",
excerpts: "excerpts",
contents: "contents",
sliders: "sliders",
noexcerpts: "title only"
},
tooltips: {
title: "Click to sort by title",
modified: "Click to sort by modified date",
created: "Click to sort by created date",
show: "Click to show tagging list",
hide: "Click to hide tagging list",
normal: "Click to show a normal ungrouped list",
group: "Click to show list grouped by tag",
sitemap: "Click to show a sitemap style list",
commas: "Click to show a comma separated list",
numCols: "Click to change number of columns",
excerpts: "Click to show excerpts",
contents: "Click to show entire tiddler contents",
sliders: "Click to show tiddler contents in sliders",
noexcerpts: "Click to show entire title only"
}
},
config: {
showTaggingCounts: true,
listOpts: {
// the first one will be the default
sortBy: ["title","modified","created"],
sortOrder: ["asc","desc"],
hideState: ["show","hide"],
listMode: ["normal","group","sitemap","commas"],
numCols: ["1","2","3","4","5","6"],
excerpts: ["noexcerpts","excerpts","contents","sliders"]
},
valuePrefix: "taggly.",
excludeTags: ["excludeLists","excludeTagging"],
excerptSize: 50,
excerptMarker: "/%"+"%/"
},
getTagglyOpt: function(title,opt) {
var val = store.getValue(title,this.config.valuePrefix+opt);
return val ? val : this.config.listOpts[opt][0];
},
setTagglyOpt: function(title,opt,value) {
if (!store.tiddlerExists(title))
// create it silently
store.saveTiddler(title,title,config.views.editor.defaultText.format([title]),config.options.txtUserName,new Date(),null);
// if value is default then remove it to save space
return store.setValue(title,
this.config.valuePrefix+opt,
value == this.config.listOpts[opt][0] ? null : value);
},
getNextValue: function(title,opt) {
var current = this.getTagglyOpt(title,opt);
var pos = this.config.listOpts[opt].indexOf(current);
// a little usability enhancement. actually it doesn't work right for grouped or sitemap
var limit = (opt == "numCols" ? store.getTaggedTiddlers(title).length : this.config.listOpts[opt].length);
var newPos = (pos + 1) % limit;
return this.config.listOpts[opt][newPos];
},
toggleTagglyOpt: function(title,opt) {
var newVal = this.getNextValue(title,opt);
this.setTagglyOpt(title,opt,newVal);
},
createListControl: function(place,title,type) {
var lingo = config.taggly.lingo;
var label;
var tooltip;
var onclick;
if ((type == "title" || type == "modified" || type == "created")) {
// "special" controls. a little tricky. derived from sortOrder and sortBy
label = lingo.labels[type];
tooltip = lingo.tooltips[type];
if (this.getTagglyOpt(title,"sortBy") == type) {
label += lingo.labels[this.getTagglyOpt(title,"sortOrder")];
onclick = function() {
config.taggly.toggleTagglyOpt(title,"sortOrder");
return false;
}
}
else {
onclick = function() {
config.taggly.setTagglyOpt(title,"sortBy",type);
config.taggly.setTagglyOpt(title,"sortOrder",config.taggly.config.listOpts.sortOrder[0]);
return false;
}
}
}
else {
// "regular" controls, nice and simple
label = lingo.labels[type == "numCols" ? type : this.getNextValue(title,type)];
tooltip = lingo.tooltips[type == "numCols" ? type : this.getNextValue(title,type)];
onclick = function() {
config.taggly.toggleTagglyOpt(title,type);
return false;
}
}
// hide button because commas don't have columns
if (!(this.getTagglyOpt(title,"listMode") == "commas" && type == "numCols"))
createTiddlyButton(place,label,tooltip,onclick,type == "hideState" ? "hidebutton" : "button");
},
makeColumns: function(orig,numCols) {
var listSize = orig.length;
var colSize = listSize/numCols;
var remainder = listSize % numCols;
var upperColsize = colSize;
var lowerColsize = colSize;
if (colSize != Math.floor(colSize)) {
// it's not an exact fit so..
upperColsize = Math.floor(colSize) + 1;
lowerColsize = Math.floor(colSize);
}
var output = [];
var c = 0;
for (var j=0;j<numCols;j++) {
var singleCol = [];
var thisSize = j < remainder ? upperColsize : lowerColsize;
for (var i=0;i<thisSize;i++)
singleCol.push(orig[c++]);
output.push(singleCol);
}
return output;
},
drawTable: function(place,columns,theClass) {
var newTable = createTiddlyElement(place,"table",null,theClass);
var newTbody = createTiddlyElement(newTable,"tbody");
var newTr = createTiddlyElement(newTbody,"tr");
for (var j=0;j<columns.length;j++) {
var colOutput = "";
for (var i=0;i<columns[j].length;i++)
colOutput += columns[j][i];
var newTd = createTiddlyElement(newTr,"td",null,"tagglyTagging"); // todo should not need this class
wikify(colOutput,newTd);
}
return newTable;
},
createTagglyList: function(place,title) {
switch(this.getTagglyOpt(title,"listMode")) {
case "group": return this.createTagglyListGrouped(place,title); break;
case "normal": return this.createTagglyListNormal(place,title,false); break;
case "commas": return this.createTagglyListNormal(place,title,true); break;
case "sitemap":return this.createTagglyListSiteMap(place,title); break;
}
},
getTaggingCount: function(title) {
// thanks to Doug Edmunds
if (this.config.showTaggingCounts) {
var tagCount = store.getTaggedTiddlers(title).length;
if (tagCount > 0)
return " ("+tagCount+")";
}
return "";
},
getExcerpt: function(inTiddlerTitle,title,indent) {
if (!indent)
indent = 1;
if (this.getTagglyOpt(inTiddlerTitle,"excerpts") == "excerpts") {
var t = store.getTiddler(title);
if (t) {
var text = t.text.replace(/\n/," ");
var marker = text.indexOf(this.config.excerptMarker);
if (marker != -1) {
return " {{excerpt{<nowiki>" + text.substr(0,marker) + "</nowiki>}}}";
}
else if (text.length < this.config.excerptSize) {
return " {{excerpt{<nowiki>" + t.text + "</nowiki>}}}";
}
else {
return " {{excerpt{<nowiki>" + t.text.substr(0,this.config.excerptSize) + "..." + "</nowiki>}}}";
}
}
}
else if (this.getTagglyOpt(inTiddlerTitle,"excerpts") == "contents") {
var t = store.getTiddler(title);
if (t) {
return "\n{{contents indent"+indent+"{\n" + t.text + "\n}}}";
}
}
else if (this.getTagglyOpt(inTiddlerTitle,"excerpts") == "sliders") {
var t = store.getTiddler(title);
if (t) {
return "<slider slide>\n{{contents{\n" + t.text + "\n}}}\n</slider>";
}
}
return "";
},
notHidden: function(t,inTiddler) {
if (typeof t == "string")
t = store.getTiddler(t);
return (!t || !t.tags.containsAny(this.config.excludeTags) ||
(inTiddler && this.config.excludeTags.contains(inTiddler)));
},
// this is for normal and commas mode
createTagglyListNormal: function(place,title,useCommas) {
var list = store.getTaggedTiddlers(title,this.getTagglyOpt(title,"sortBy"));
if (this.getTagglyOpt(title,"sortOrder") == "desc")
list = list.reverse();
var output = [];
var first = true;
for (var i=0;i<list.length;i++) {
if (this.notHidden(list[i],title)) {
var countString = this.getTaggingCount(list[i].title);
var excerpt = this.getExcerpt(title,list[i].title);
if (useCommas)
output.push((first ? "" : ", ") + "[[" + list[i].title + "]]" + countString + excerpt);
else
output.push("*[[" + list[i].title + "]]" + countString + excerpt + "\n");
first = false;
}
}
return this.drawTable(place,
this.makeColumns(output,useCommas ? 1 : parseInt(this.getTagglyOpt(title,"numCols"))),
useCommas ? "commas" : "normal");
},
// this is for the "grouped" mode
createTagglyListGrouped: function(place,title) {
var sortBy = this.getTagglyOpt(title,"sortBy");
var sortOrder = this.getTagglyOpt(title,"sortOrder");
var list = store.getTaggedTiddlers(title,sortBy);
if (sortOrder == "desc")
list = list.reverse();
var leftOvers = []
for (var i=0;i<list.length;i++)
leftOvers.push(list[i].title);
var allTagsHolder = {};
for (var i=0;i<list.length;i++) {
for (var j=0;j<list[i].tags.length;j++) {
if (list[i].tags[j] != title) { // not this tiddler
if (this.notHidden(list[i].tags[j],title)) {
if (!allTagsHolder[list[i].tags[j]])
allTagsHolder[list[i].tags[j]] = "";
if (this.notHidden(list[i],title)) {
allTagsHolder[list[i].tags[j]] += "**[["+list[i].title+"]]"
+ this.getTaggingCount(list[i].title) + this.getExcerpt(title,list[i].title) + "\n";
leftOvers.setItem(list[i].title,-1); // remove from leftovers. at the end it will contain the leftovers
}
}
}
}
}
var allTags = [];
for (var t in allTagsHolder)
allTags.push(t);
var sortHelper = function(a,b) {
if (a == b) return 0;
if (a < b) return -1;
return 1;
};
allTags.sort(function(a,b) {
var tidA = store.getTiddler(a);
var tidB = store.getTiddler(b);
if (sortBy == "title") return sortHelper(a,b);
else if (!tidA && !tidB) return 0;
else if (!tidA) return -1;
else if (!tidB) return +1;
else return sortHelper(tidA[sortBy],tidB[sortBy]);
});
var leftOverOutput = "";
for (var i=0;i<leftOvers.length;i++)
if (this.notHidden(leftOvers[i],title))
leftOverOutput += "*[["+leftOvers[i]+"]]" + this.getTaggingCount(leftOvers[i]) + this.getExcerpt(title,leftOvers[i]) + "\n";
var output = [];
if (sortOrder == "desc")
allTags.reverse();
else if (leftOverOutput != "")
// leftovers first...
output.push(leftOverOutput);
for (var i=0;i<allTags.length;i++)
if (allTagsHolder[allTags[i]] != "")
output.push("*[["+allTags[i]+"]]" + this.getTaggingCount(allTags[i]) + this.getExcerpt(title,allTags[i]) + "\n" + allTagsHolder[allTags[i]]);
if (sortOrder == "desc" && leftOverOutput != "")
// leftovers last...
output.push(leftOverOutput);
return this.drawTable(place,
this.makeColumns(output,parseInt(this.getTagglyOpt(title,"numCols"))),
"grouped");
},
// used to build site map
treeTraverse: function(title,depth,sortBy,sortOrder) {
var list = store.getTaggedTiddlers(title,sortBy);
if (sortOrder == "desc")
list.reverse();
var indent = "";
for (var j=0;j<depth;j++)
indent += "*"
var childOutput = "";
for (var i=0;i<list.length;i++)
if (list[i].title != title)
if (this.notHidden(list[i].title,this.config.inTiddler))
childOutput += this.treeTraverse(list[i].title,depth+1,sortBy,sortOrder);
if (depth == 0)
return childOutput;
else
return indent + "[["+title+"]]" + this.getTaggingCount(title) + this.getExcerpt(this.config.inTiddler,title,depth) + "\n" + childOutput;
},
// this if for the site map mode
createTagglyListSiteMap: function(place,title) {
this.config.inTiddler = title; // nasty. should pass it in to traverse probably
var output = this.treeTraverse(title,0,this.getTagglyOpt(title,"sortBy"),this.getTagglyOpt(title,"sortOrder"));
return this.drawTable(place,
this.makeColumns(output.split(/(?=^\*\[)/m),parseInt(this.getTagglyOpt(title,"numCols"))), // regexp magic
"sitemap"
);
},
macros: {
tagglyTagging: {
handler: function (place,macroName,params,wikifier,paramString,tiddler) {
var refreshContainer = createTiddlyElement(place,"div");
// do some refresh magic to make it keep the list fresh - thanks Saq
refreshContainer.setAttribute("refresh","macro");
refreshContainer.setAttribute("macroName",macroName);
refreshContainer.setAttribute("title",tiddler.title);
this.refresh(refreshContainer);
},
refresh: function(place) {
var title = place.getAttribute("title");
removeChildren(place);
if (store.getTaggedTiddlers(title).length > 0) {
var lingo = config.taggly.lingo;
config.taggly.createListControl(place,title,"hideState");
if (config.taggly.getTagglyOpt(title,"hideState") == "show") {
createTiddlyElement(place,"span",null,"tagglyLabel",lingo.labels.label.format([title]));
config.taggly.createListControl(place,title,"title");
config.taggly.createListControl(place,title,"modified");
config.taggly.createListControl(place,title,"created");
config.taggly.createListControl(place,title,"listMode");
config.taggly.createListControl(place,title,"excerpts");
config.taggly.createListControl(place,title,"numCols");
config.taggly.createTagglyList(place,title);
}
}
}
}
},
// todo fix these up a bit
styles: [
"/*{{{*/",
"/* created by TagglyTaggingPlugin */",
".tagglyTagging { padding-top:0.5em; }",
".tagglyTagging li.listTitle { display:none; }",
".tagglyTagging ul {",
" margin-top:0px; padding-top:0.5em; padding-left:2em;",
" margin-bottom:0px; padding-bottom:0px;",
"}",
".tagglyTagging { vertical-align: top; margin:0px; padding:0px; }",
".tagglyTagging table { margin:0px; padding:0px; }",
".tagglyTagging .button { visibility:hidden; margin-left:3px; margin-right:3px; }",
".tagglyTagging .button, .tagglyTagging .hidebutton {",
" color:[[ColorPalette::TertiaryLight]]; font-size:90%;",
" border:0px; padding-left:0.3em;padding-right:0.3em;",
"}",
".tagglyTagging .button:hover, .hidebutton:hover, ",
".tagglyTagging .button:active, .hidebutton:active {",
" border:0px; background:[[ColorPalette::TertiaryPale]]; color:[[ColorPalette::TertiaryDark]];",
"}",
".selected .tagglyTagging .button { visibility:visible; }",
".tagglyTagging .hidebutton { color:[[ColorPalette::Background]]; }",
".selected .tagglyTagging .hidebutton { color:[[ColorPalette::TertiaryLight]] }",
".tagglyLabel { color:[[ColorPalette::TertiaryMid]]; font-size:90%; }",
".tagglyTagging ul {padding-top:0px; padding-bottom:0.5em; margin-left:1em; }",
".tagglyTagging ul ul {list-style-type:disc; margin-left:-1em;}",
".tagglyTagging ul ul li {margin-left:0.5em; }",
".editLabel { font-size:90%; padding-top:0.5em; }",
".tagglyTagging .commas { padding-left:1.8em; }",
"/* not technically tagglytagging but will put them here anyway */",
".tagglyTagged li.listTitle { display:none; }",
".tagglyTagged li { display: inline; font-size:90%; }",
".tagglyTagged ul { margin:0px; padding:0px; }",
".excerpt { color:[[ColorPalette::TertiaryDark]]; }",
"div.tagglyTagging table,",
"div.tagglyTagging table tr,",
"td.tagglyTagging",
" {border-style:none!important; }",
".tagglyTagging .contents { border-bottom:2px solid [[ColorPalette::TertiaryPale]]; padding:0 1em 1em 0.5em;",
" margin-bottom:0.5em; }",
".tagglyTagging .indent1 { margin-left:3em; }",
".tagglyTagging .indent2 { margin-left:4em; }",
".tagglyTagging .indent3 { margin-left:5em; }",
".tagglyTagging .indent4 { margin-left:6em; }",
".tagglyTagging .indent5 { margin-left:7em; }",
".tagglyTagging .indent6 { margin-left:8em; }",
".tagglyTagging .indent7 { margin-left:9em; }",
".tagglyTagging .indent8 { margin-left:10em; }",
".tagglyTagging .indent9 { margin-left:11em; }",
".tagglyTagging .indent10 { margin-left:12em; }",
"/*}}}*/",
""].join("\n"),
init: function() {
merge(config.macros,this.macros);
config.shadowTiddlers["TagglyTaggingStyles"] = this.styles;
store.addNotification("TagglyTaggingStyles",refreshStyles);
}
};
config.taggly.init();
//}}}
/***
InlineSlidersPlugin
By Saq Imtiaz
http://tw.lewcid.org/sandbox/#InlineSlidersPlugin
// syntax adjusted to not clash with NestedSlidersPlugin
***/
//{{{
config.formatters.unshift( {
name: "inlinesliders",
// match: "\\+\\+\\+\\+|\\<slider",
match: "\\<slider",
// lookaheadRegExp: /(?:\+\+\+\+|<slider) (.*?)(?:>?)\n((?:.|\n)*?)\n(?:====|<\/slider>)/mg,
lookaheadRegExp: /(?:<slider) (.*?)(?:>)\n((?:.|\n)*?)\n(?:<\/slider>)/mg,
handler: function(w) {
this.lookaheadRegExp.lastIndex = w.matchStart;
var lookaheadMatch = this.lookaheadRegExp.exec(w.source)
if(lookaheadMatch && lookaheadMatch.index == w.matchStart ) {
var btn = createTiddlyButton(w.output,lookaheadMatch[1] + " "+"\u00BB",lookaheadMatch[1],this.onClickSlider,"button sliderButton");
var panel = createTiddlyElement(w.output,"div",null,"sliderPanel");
panel.style.display = "none";
wikify(lookaheadMatch[2],panel);
w.nextMatch = lookaheadMatch.index + lookaheadMatch[0].length;
}
},
onClickSlider : function(e) {
if(!e) var e = window.event;
var n = this.nextSibling;
n.style.display = (n.style.display=="none") ? "block" : "none";
return false;
}
});
//}}}
116. jpoker module: jpoker.plugins.player: /AVATAR (1, 0, 1)
127. jpoker module: jpoker.plugins.userInfo (1, 23, 24)
127. jpoker module: jpoker.plugins.userInfo avatar upload succeed (1, 4, 5)
because /AVATAR doesn't make sense over file:///
See attached screenshot
http://jspoker.pokersource.info/t.jpg
{{{
{"user2properties":{"X26":{"money":400000,"table_serial":723,"name":"BOTBoSwoi","rank":-1},"X27":{"money":-1,"table_serial":-1,"name":"BOTluhurs","rank":3},"X9":{"money":400000,"table_serial":723,"name":"proppy","rank":-1},"X20":{"money":-1,"table_serial":-1,"name":"proppy2","rank":4}},"length":3,"tourney_serial":24,"table2serials":{"X723":[9,26],"-1":[20,27]},"type":"PacketPokerTourneyManager","tourney":{"breaks_interval":3600,"currency_serial":1,"description_long":"Sit and Go 2 players","rank2prize":[840000,360000],"serial":24,"resthost_serial":0,"rebuy_count":0,"state":"running","buy_in":300000,"add_on_count":0,"description_short":"Sit and Go 2 players, Holdem","registered":4,"players_quota":4,"breaks_first":7200,"add_on":0,"start_time":1222693571,"rake":0,"variant":"holdem","players_min":4,"schedule_serial":1,"betting_structure":"level-15-30-no-limit","add_on_delay":60,"name":"sitngo2","finish_time":0,"prize_min":0,"player_timeout":60,"breaks_duration":300,"seats_per_game":2,"bailor_serial":0,"sit_n_go":"y","rebuy_delay":0},"uid__":"jpoker1222693551093"}
}}}
when a player is removed from a tourney table_serial in user2tourney is set to -1
{{{
sql = "update user2tourney set rank = %d, table_serial = -1 where user_serial = %d and tourney_serial = %d" % ( tourney.getRank(serial), serial, tourney.serial )
}}}
but tourneyManager only skip entries that have table_serial = None
{{{
for row in user2tourney:
table_serial = row['table_serial']
if table_serial == None:
continue
}}}
To reproduce:
* Be in a tourney
* kill your browser
* rejoin the tourney
* as the screen starts to display, click sit-in as quick as you can
* you should get "not enough money" pop up.
(18:54:32) dachary: proppy: TourneyFinish must not stop the tourney object as it currently does in jpoker
(18:54:48) dachary: would you be so kind as to register this as a bug to be fixed while I'm experimenting ?
Type the text for 'Type your idea here (number 1266231523907)'
Type the text for 'Type your idea here (number 1267580792638)'
for the table images instead of single images
<!--{{{-->
<div class='toolbar' macro='toolbar closeTiddler closeOthers +editTiddler > fields syncing permalink references jump'></div>
<div class='title' macro='view title'></div>
<div class='subtitle'><span macro='view modifier link'></span>, <span macro='view modified date'></span> (<span macro='message views.wikified.createdPrompt'></span> <span macro='view created date'></span>)</div>
<div class="tagglyTagging" macro="tagglyTagging"></div>
<div class='tagged' macro='tags'></div>
<div macro="hideWhen tiddler.tags.containsAny(['css','html','pre','systemConfig']) && !tiddler.text.match('{{'+'{')">
<div class='viewer' macro='view text wikified'></div>
</div>
<div macro="showWhen tiddler.tags.containsAny(['css','html','pre','systemConfig']) && !tiddler.text.match('{{'+'{')">
<div class='viewer'><pre macro='view text'></pre></div>
</div>
<div class='tagClear'></div>
<!--}}}-->
/***
|''Name:''|WebDavPlugin|
|''Description:''|Allows a TiddlyWiki to be saved to a WebDav server|
|''Author:''|Saq Imtiaz ( lewcid@gmail.com )|
|''Co-author:''|Loic Dachary|
|''Source:''|http://tw.lewcid.org/#WebDavPlugin|
|''Code Repository:''|http://tw.lewcid.org/svn/plugins|
|''Version:''|1.0|
|''Date:''|17/11/2007|
|''License:''|[[Creative Commons Attribution-ShareAlike 3.0 License|http://creativecommons.org/licenses/by-sa/3.0/]]|
|''~CoreVersion:''|2.2.3|
***/
// /%
//!BEGIN-PLUGIN-CODE
DAV = {
run : function(type,u,data,cb,params,headers){
var callback = function(status,params,responseText,url,xhr) {
url = url.indexOf("nocache=") < 0 ? url : url.substring(0,url.indexOf("nocache=")-1);
if(params.length){
params.shift().apply(this,[status,params,responseText,url,xhr]);
}
};
params = params||[];
params.unshift(cb);
var r = doHttp.apply(this,[type,u,data,null,null,null,callback,params,headers]);
if (typeof r == "string")
alert(r);
return r;
},
get : function(url,cb,params){
return DAV.run("GET",url,null,cb,params,null);
},
put : function(url,cb,params,data) {
return DAV.run("PUT",url,data,cb,params,null);
},
move : function(url,cb,params,destination) {
return DAV.run("MOVE",url,null,cb,params,{"Destination":destination,"Overwrite":"T"});
},
copy : function(url,cb,params,destination) {
return DAV.run("COPY",url,null,cb,params,{"Destination":destination,"Overwrite":"T","Depth":0});
},
propfind : function(url,cb,params,prop,depth){ // !!!
var xml = '<?xml version="1.0" encoding="UTF-8" ?>' +
'<D:propfind xmlns:D="DAV:">' +
'<D:prop>'+
'<D:'+prop+'/>'+
'</D:prop>'+
'</D:propfind>';
return DAV.run("PROPFIND",url,xml,cb,params,{"Content-type":"text/xml","Depth":depth?depth:0});
},
makeDir : function(url,cb,params){
return DAV.run("MKCOL",url,null,cb,params,null);
},
options : function(url,cb,params){
return DAV.run("OPTIONS",url,null,cb,params,null);
},
safeput : function(url,cb,params,data){
firstcb = function(status,p,responseText,u,xhr){
if(status)
DAV.move(u,cb,p,u.replace("-davsavingtemp",""));
else
cb.apply(firstcb,arguments);
};
return DAV.put(url+"-davsavingtemp",firstcb,params,data);
}
};
config.DavSaver = {
defaultFileName : 'index.html',
messages : {
startSaveMessage : 'saving to server...',
endSaveMessage : 'TiddlyWiki successfuly saved to server',
overwriteNewerPrompt : 'The remote file has changed since you last loaded or saved it.\nDo you wish to overwrite it?',
getModDateError : "Could not get last modified date",
raceError: "Save failed because the remote file is newer than the one you are trying to save"
},
errors:{
raceconflict : 'The save failed because your file is out of date',
getlastmodified : 'The save was aborted because the last modified date of the file could not be retrieved',
davenabled : 'The server does not support WebDav',
saverss : 'There was an error saving the rss file, the save was aborted',
saveempty: 'There was an error saving the empty file, the save was aborted',
savemain : 'Save failed! There was an error saving the main TW file',
savebackup: 'Save failed! There was an error creating a backup file',
makebackupdir: 'Save failed! The backup directory could not be created'
},
timestamp: new Date().toGMTString(),
orig_saveChanges: saveChanges,
saver : null
};
DavSaver = function(){
this.Q = [];
this.reset = function(){
config.DavSaver.saver = null;
};
this.runQ = function(){
if(this.Q.length){
this.Q.shift().apply(this,arguments);
}
else
this.reset();
};
this.posDiv = null;
this.original = null;
this.getOriginalPath = function(){
var p = document.location.toString();
p = convertUriToUTF8(p,config.options.txtFileSystemCharSet);
var argPos = p.indexOf("?");
if(argPos != -1)
p = p.substr(0,argPos);
var hashPos = p.indexOf("#");
if(hashPos != -1)
p = p.substr(0,hashPos);
if (p.charAt(p.length-1) == "/")
p = p + config.DavSaver.defaultFileName;
return p;
};
this.originalPath = this.getOriginalPath();
this.backupPath = null;
this.emptyPath = null;
this.rssPath = null;
this.throwError = function(er){
clearMessage();
this.reset();
alert(config.DavSaver.errors[er]); //clear message, reset and delete
};
};
DavSaver.prototype.getOriginal = function(){
var callback = function(status,params,original,url,xhr) {
var that = params[0];
if(status){
var p = that.posDiv = locateStoreArea(original);
if(!p || (p[0] == -1) || (p[1] == -1)) {
alert(config.messages.invalidFileError.format([url]));
return;
}
that.original = original;
that.runQ();
}
else
that.throwError('getOriginal');
};
DAV.get(this.originalPath,callback,[this]);
};
DavSaver.prototype.checkRace = function(){
var callback = function(status,params,responseText,url,xhr){
var that = params[0];
if(status){
var lastmod = responseText.match(/<(\w*?):getlastmodified>(.*?)<\/\1:getlastmodified>/)[2];
if(Date.parse(lastmod) > Date.parse(config.DavSaver.timestamp)){
if (confirm(config.DavSaver.messages.overwriteNewerPrompt))
that.runQ();
else
that.throwError('raceconflict');
}
else
that.runQ();
}
else
that.throwError('getlastmodified');
};
DAV.propfind(this.originalPath,callback,[this],"getlastmodified",0);
};
DavSaver.prototype.isDavEnabled = function(){
var callback = function(status,params,responseText,url,xhr){
that = params[0];
if(status && !! xhr.getResponseHeader("DAV")){
that.runQ();
}
else
that.throwError('davenabled');
};
DAV.options(this.originalPath,callback,[this]);
};
DavSaver.prototype.saveRss = function(){
var callback = function(status,params,responseText,url,xhr){
var that = params[0];
if(status){
displayMessage(config.messages.rssSaved,that.rssPath);
that.runQ();
}
else
that.throwError('saverss');
};
var u = this.originalPath;
var rssPath = this.rssPath = u.substr(0,u.lastIndexOf(".")) + ".xml";
DAV.safeput(rssPath,callback,[this],convertUnicodeToUTF8(generateRss()));
};
DavSaver.prototype.saveEmpty = function(){
var callback = function(status,params,responseText,url,xhr){
var that = params[0];
if(status){
displayMessage(config.messages.emptySaved,that.emptyPath);
that.runQ();
}
else
that.throwError('saveempty');
};
var u = this.originalPath;
var emptyPath,p;
if((p = u.lastIndexOf("/")) != -1)
emptyPath = u.substr(0,p) + "/empty.html";
else
emptyPath = u + ".empty.html";
this.emptyPath = emptyPath;
var empty = this.original.substr(0,this.posDiv[0] + startSaveArea.length) + this.original.substr(this.posDiv[1]);
DAV.safeput(emptyPath,callback,[this],empty);
};
DavSaver.prototype.saveMain = function(){
var callback = function(status,params,responseText,url,xhr){
var that = params[0];
if(status){
config.DavSaver.timestamp = xhr.getResponseHeader('Date');
displayMessage(config.messages.mainSaved,that.originalPath);
store.setDirty(false);
that.runQ();
}
else
that.throwError('savemain');
};
var revised = updateOriginal(this.original,this.posDiv);
DAV.safeput(this.originalPath,callback,[this],revised);
};
DavSaver.prototype.saveBackup = function(){
var callback = function(status,params,responseText,url,xhr){
var that = params[0];
if(status){
clearMessage();
displayMessage(config.messages.backupSaved,that.backupPath);
that.runQ();
}
else
that.throwError('savebackup');
};
var backupPath = this.backupPath = getBackupPath(this.originalPath);
DAV.copy(this.originalPath,callback,[this],this.backupPath);
};
DavSaver.prototype.makeBackupDir = function(){
var callback = function(status,params,responseText,url,xhr){
var that = params[0];
if(status)
that.runQ();
else
that.throwError('makebackupdir');
};
var u = getBackupPath(this.originalPath);
var backupDirPath = u.substr(0,u.lastIndexOf("/"));
DAV.makeDir(backupDirPath,callback,[this]);
};
DavSaver.prototype.save = function(onlyIfDirty,tiddlers){
if(onlyIfDirty && !store.isDirty())
return;
clearMessage();
displayMessage(config.DavSaver.messages.startSaveMessage);
var Q = this.Q =[];
Q.push(this.isDavEnabled);
Q.push(this.getOriginal);
Q.push(this.checkRace);
if (config.options.chkSaveBackups){
if (config.options.txtBackupFolder!='')
Q.push(this.makeBackupDir);
Q.push(this.saveBackup);
}
Q.push(this.saveMain);
if (config.options.chkGenerateAnRssFeed)
Q.push(this.saveRss);
if (config.options.chkSaveEmptyTemplate)
Q.push(this.saveEmpty);
//Q.push(this.reset);
this.runQ();
};
window.saveChanges = function(onlyIfDirty,tiddlers)
{
var c = config.DavSaver;
if (document.location.protocol.toString() == "http:"){
var saver = c.saver = new DavSaver();
saver.save(onlyIfDirty,tiddlers);
}
else
return c.orig_saveChanges(onlyIfDirty,tiddlers);
};
//!END-PLUGIN-CODE
// %/
these bugs or features were reported but will not be addressed for some reason
Type the text for '[[table'
{{{
Traceback (most recent call last):
File "/usr/lib/python2.5/site-packages/twisted/internet/defer.py", line 323, in _runCallbacks
self.result = callback(self.result, *args, **kw)
File "/usr/lib/python2.5/site-packages/pokernetwork/pokersite.py", line 210, in <lambda>
self.deferred.addCallback(lambda result: self.deferRender(request, jsonp, packet))
File "/usr/lib/python2.5/site-packages/pokernetwork/pokersite.py", line 249, in deferRender
d.addCallbacks(render, processingFailed)
File "/usr/lib/python2.5/site-packages/twisted/internet/defer.py", line 185, in addCallbacks
self._runCallbacks()
--- <exception caught here> ---
File "/usr/lib/python2.5/site-packages/twisted/internet/defer.py", line 323, in _runCallbacks
self.result = callback(self.result, *args, **kw)
File "/usr/lib/python2.5/site-packages/pokernetwork/pokersite.py", line 234, in render
result_string = str(Packet.JSON.encode(maps))
File "/var/lib/python-support/python2.5/simplejson/encoder.py", line 357, in encode
chunks = list(self.iterencode(o))
File "/var/lib/python-support/python2.5/simplejson/encoder.py", line 299, in _iterencode
for chunk in self._iterencode_list(o, markers):
File "/var/lib/python-support/python2.5/simplejson/encoder.py", line 197, in _iterencode_list
for chunk in self._iterencode(value, markers):
File "/var/lib/python-support/python2.5/simplejson/encoder.py", line 302, in _iterencode
for chunk in self._iterencode_dict(o, markers):
File "/var/lib/python-support/python2.5/simplejson/encoder.py", line 268, in _iterencode_dict
for chunk in self._iterencode(value, markers):
File "/var/lib/python-support/python2.5/simplejson/encoder.py", line 287, in _iterencode
yield encoder(o)
exceptions.UnicodeDecodeError: 'utf8' codec can't decode bytes in position 28-29: unexpected end of
data
}}}
steps to reproduce:
login
sit
wait for position
logout
action buttons are still shown
http://jpoker.aminche.com/hg/jpoker/rev/5d0be6c17a94
so that redirection or additional action can take place
to add a scrollbar,
jpoker_tourney_details_players is already used for the border
as a global value
or as a per widget argument
http://jpoker.aminche.com/hg/jpoker/rev/e5a17607e403
http://jpoker.aminche.com/hg/jpoker/rev/4045efdd620c
use jpoker.plugins.table.callback.hand_start instead
use jpoker.errorHandler instead
http://jpoker.aminche.com/hg/jpoker/rev/6c431246686e
http://jpoker.aminche.com/hg/jpoker/rev/56138181367e
http://svn.gna.org/viewcvs/pokersource?rev=4724&view=rev
http://jpoker.aminche.com/hg/jpoker/rev/936b4f815568
http://jpoker.aminche.com/hg/jpoker/rev/f89b206308b6
http://jpoker.aminche.com/hg/jpoker/rev/53240957a3be
http://jpoker.aminche.com/hg/jpoker/rev/ffe3adba71d6
http://jpoker.aminche.com/hg/jpoker/rev/db1cf46ed760
http://jpoker.aminche.com/hg/jpoker/rev/d70f9212ca81
http://jpoker.aminche.com/hg/jpoker/rev/e27d20183faf
http://jpoker.aminche.com/hg/jpoker/rev/b6b114b5bb91
http://jpoker.aminche.com/hg/jpoker/rev/0a1a9c0ea6a8
http://jpoker.aminche.com/hg/jpoker/rev/0774f5b17357
http://jpoker.aminche.com/hg/jpoker/rev/2c14c3517b76
http://jpoker.aminche.com/hg/jpoker/rev/57fa47262f3a
http://jpoker.aminche.com/hg/jpoker/rev/eb27435ebf87
http://jpoker.aminche.com/hg/jpoker/rev/b187cb2770e7
http://jpoker.aminche.com/hg/jpoker/rev/39a6b5c60f74
http://jpoker.aminche.com/hg/jpoker/rev/4e88415c9de5
http://jpoker.aminche.com/hg/jpoker/rev/eb1efe6d34d8
http://jpoker.aminche.com/hg/jpoker/rev/4ce25c1ecd10
http://jpoker.aminche.com/hg/jpoker/rev/e6fee3d22a1f
http://jpoker.aminche.com/hg/jpoker/rev/642cbcfa815e
http://jpoker.aminche.com/hg/jpoker/rev/18444494b9da
http://jpoker.aminche.com/hg/jpoker/rev/e5a2fb4b7819
http://jpoker.aminche.com/hg/jpoker/rev/2a642643faa9
http://jpoker.aminche.com/hg/jpoker/rev/11dac071df71
http://jpoker.aminche.com/hg/jpoker/rev/d02fe1b8e91e
in order to use
{{{
jpoker_player_level_expert.jpoker_sit_out .jpoker_ptable_player_seat_background
}}}
instead of
{{{
.jpoker_table .jpoker_player_level_expert.jpoker_sit_out
.jpoker_ptable_player_seat0_background, .jpoker_table
.jpoker_player_level_expert.jpoker_sit_out
.jpoker_ptable_player_seat1_background, .jpoker_table
.jpoker_player_level_expert.jpoker_sit_out
.jpoker_ptable_player_seat2_background, .jpoker_table
.jpoker_player_level_expert.jpoker_sit_out
.jpoker_ptable_player_seat3_background, .jpoker_table
.jpoker_player_level_expert.jpoker_sit_out
.jpoker_ptable_player_seat4_background, .jpoker_table
.jpoker_player_level_expert.jpoker_sit_out
.jpoker_ptable_player_seat5_background, .jpoker_table
.jpoker_player_level_expert.jpoker_sit_out
.jpoker_ptable_player_seat6_background, .jpoker_table
.jpoker_player_level_expert.jpoker_sit_out
.jpoker_ptable_player_seat7_background, .jpoker_table
.jpoker_player_level_expert.jpoker_sit_out
.jpoker_ptable_player_seat8_background, .jpoker_table
.jpoker_player_level_expert.jpoker_sit_out
.jpoker_ptable_player_seat9_background
}}}
http://jpoker.aminche.com/hg/jpoker/rev/457feeeb6a15
http://jpoker.aminche.com/hg/jpoker/rev/19b682047255
http://jpoker.aminche.com/hg/jpoker/rev/6a221bc6d3b8
http://jpoker.aminche.com/hg/jpoker/rev/82413b36099b
http://jpoker.aminche.com/hg/jpoker/rev/f516e0c2b996
http://jpoker.aminche.com/hg/jpoker/rev/911b6d1fce3f
http://jpoker.aminche.com/hg/jpoker/rev/6bbdb15dafe1
The callback is called by the jquery widget that displays a player with the element of the player and the serial of the player.
This callback could be used to implement a custom layout for the player, such as blue for boys and pink for girls.
http://jpoker.aminche.com/hg/jpoker/rev/5f78e20792dc
http://jpoker.aminche.com/hg/jpoker/rev/b764984bbe98
http://jpoker.aminche.com/hg/jpoker/rev/b764984bbe98
http://jpoker.aminche.com/hg/jpoker/rev/d577f926a52c
http://jpoker.aminche.com/hg/jpoker/rev/2581fb800c25
http://jpoker.aminche.com/hg/jpoker/rev/c437af8bc7ba
http://jpoker.aminche.com/hg/jpoker/rev/4fb70190d2c9
to be called in a server.queueRunning(function(server) { jpoker.server.defaults.reconnectFinish(server); }) in the rejoin function immediately after the getUserInfo()
to be able to track request
implementation: ++i
http://jpoker.aminche.com/hg/jpoker/rev/0c1a16b854aa
http://jpoker.aminche.com/hg/jpoker/rev/e1b44a91720e
http://jpoker.aminche.com/hg/jpoker/rev/7677146046a3
http://jpoker.aminche.com/hg/jpoker/rev/617c31999725
http://jpoker.aminche.com/hg/jpoker/rev/7367b4521e4d
http://jpoker.aminche.com/hg/jpoker/rev/1f07f19ac32e
http://jpoker.aminche.com/hg/jpoker/rev/655c021669cd
http://jpoker.aminche.com/hg/jpoker/rev/e51fc35765f4
http://upstream.jspoker.pokersource.info/rev/6ab38a252e29
http://jpoker.aminche.com/hg/jpoker/rev/5fa24ac12100
http://jpoker.aminche.com/hg/jpoker/rev/b47c6a0a1e8f
http://svn.gna.org/viewcvs/pokersource?rev=4725&view=rev
http://jpoker.aminche.com/hg/jpoker/rev/e69e009cd6d9
http://jpoker.aminche.com/hg/jpoker/rev/8e6033a40938
http://jpoker.aminche.com/hg/jpoker/rev/a81b58360be4
http://jpoker.aminche.com/hg/jpoker/rev/af2aba6abd89
http://jpoker.aminche.com/hg/jpoker/rev/789048665066
http://jpoker.aminche.com/hg/jpoker/rev/4e8d968c1b11
http://jpoker.aminche.com/hg/jpoker/rev/c3b3f45201da
- .jpoker_list for all tabular list (table, tourney)
- .odd .even on tourneydetails table list
currently only action (raise, fold, check, call) have jpoker_button class
rebuy, exit, sit/sitout button are missing it
it should be using img src instead
fixed with http://upstream.jspoker.pokersource.info/rev/1f283e629483
* sounds like a pokerengine issue
[[bkuhn]] notes that this is a major change to pokerengine, and that [[dachary]] probably implemented this way as a simplification of the engine. Somewhere in pokerengine or pokernetwork could change this, but I think that perhaps the client side should figure this out for now. It would be quite a research project to figure out what breaks in the server should the engine start to make this distinction.
var _ = $.get.gettext;
at the beginning of the file
http://jpoker.aminche.com/hg/jpoker/rev/4a4d32dddab6
by default shows a dialog with the getplayerplaces info for the user
http://jpoker.aminche.com/hg/jpoker/rev/d12a44732586
http://jpoker.aminche.com/hg/jpoker/rev/812677d3edd4
http://svn.gna.org/viewcvs/pokersource?rev=4494&view=rev
http://jpoker.aminche.com/hg/jpoker/rev/adc5ae25e4f8
http://jpoker.aminche.com/hg/jpoker/rev/63b0835f5218
http://svn.gna.org/viewcvs/pokersource?rev=4539&view=rev
* an anonymous user join the table
* the user log in
* the user can't seat at the table
packet2table(PACKET_POKER_SEAT) return false
because avatar.tables is empty
http://jpoker.aminche.com/hg/jpoker/rev/2d58df353805
only showing the amount of chips for the logged in player for a start
http://jpoker.aminche.com/hg/jpoker/rev/8e771eaececa
it shows in the rebuy dialog box button on trunk
$.jpoker.plugins.playerSelf.rebuy_options.autoResize = false; is a workaround
{{{
Index: jquery.jpoker.js
===================================================================
--- jquery.jpoker.js (revision 5195)
+++ jquery.jpoker.js (working copy)
@@ -3432,7 +3432,7 @@
room: 'expected to be overriden by mockup.js but was not',
tourney_break: '<div>{label}</div><div>{date}</div>',
powered_by: '<a title=\'Powered by Pokersource\' href=\'javascript://\' >Powered by Pokersource</a>',
- chat: '<div class=\'jpoker_chat_input\'><input value=\'chat here\' type=\'text\' width=\'100%\' /></div><div class=\'jpoker_chat_history\'><div class=\'jpoker_chat_history_player\'></div><div class=\'jpoker_chat_history_dealer\'></div></div>',
+ chat: '<div class=\'jpoker_chat_input\'><input value=\'' + _('chat here') + '\' type=\'text\' width=\'100%\' /></div><div class=\'jpoker_chat_history\'><div class=\'jpoker_chat_history_player\'></div><div class=\'jpoker_chat_history_dealer\'></div></div>',
placeholder: _("connecting to table {name}")
};
}}}
still only 3 lines in the chat box tho
maybe put the chat and status boxes next to each other to allow for more vertical space (history)
remove horizontal scrollbar from chat
modify the chat zone so that the chat log + dealer log + input are assembled in a JS template instead of being constrained by the mockup.js layout. The default must be the same structure as it is currently.
{{{ <div>{dealer}{log}</div>{input chat} }}}
check = PASSEN, fold = PASSEN
[[see capture|bug01.jpg]]
Fold = Passen
Check = Schieben
Call = Mitgehen
Raise = Erhöhen
when a tourney sitngoX is respawning from tourney_schedule before previous sitngoX is finished
{{{
mysql> select name,serial,state from tourneys;
+----------+--------+-------------+
| name | serial | state |
+----------+--------+-------------+
| regular1 | 2 | registering |
| sitngo2 | 3 | running |
| sitngo2 | 4 | registering |
+----------+--------+-------------+
3 rows in set (0.00 sec)
mysql> select name,serial,tourney_serial from pokertables where tourney_serial != 0;
+----------+--------+----------------+
| name | serial | tourney_serial |
+----------+--------+----------------+
| sitngo22 | 82 | 4 |
| sitngo23 | 83 | 5 |
+----------+--------+----------------+
2 rows in set (0.00 sec)
}}}
Fixed issues:
* playerSelf arrive should hide, visible seat
* playerSelf leave should show, hidden seat
http://upstream.jspoker.pokersource.info/rev/472dc370b15a
Remaining issues:
---* player leave should not show the seat if playerSelf is still seated---
http://upstream.jspoker.pokersource.info/rev/4ef77236b80d
instead of moving the slider to the clicked position
<script>alert()</script> is interpreted by all clients receiving the string
is s/<script>|</script>// enought ?
use .text() instead of .html()
{"players_quota":2,"breaks_interval":3600,"name":"sitngo2","type":"PacketPokerTourney","start_time":1227017147,"breaks_first":7200,"variant":"holdem","currency_serial":1,"state":"complete","buy_in":300000,"sit_n_go":"y","breaks_duration":300,"serial":39,"description_short":"Sit and Go 2 players, Holdem","registered":1}
(12:42:21 PM) ckudige: I get an exception, but there is no stack trace (even with firebug running)
(12:46:05 PM) ckudige: so he is getting the exception even before he loads the table list or sits at a table ?
(12:46:10 PM) ckudige: (infact even before I can login)
(01:46:31 PM) ckudige: I got this : config.jpoker = { restURL : 'http://private.pokersource.eu/POKER_REST' };
(01:47:05 PM) ckudige: proppy: I also tried this - config.jpoker = { restURL : 'http://jspoker.pokersource.info/POKER_REST' };
(01:47:07 PM) ckudige: same error
(01:55:26 PM) ckudige: brb, debugging ...
{{{
Object xhr=XMLHttpRequest status=parsererror
uncaught exception: [object Object]
[Break on this error] netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
}}}
{{{
(06:32:14 PM) worf|work: si jpoker.sound est vide false ... : pas de son (donc pas appeller ces lignes : $('#jpokerSound').html('<' + jpoker.sound + ' src=\'player_hand.swf\' />');)
(06:32:38 PM) worf|work: et une autre :)
(06:32:57 PM) worf|work: avoir une variable jpoker.sound_base_path
(06:33:15 PM) worf|work: afin que je puisse mettre dedans le domain + chemin vers nos serveurs statiques
(06:34:02 PM) worf|work: donc en gros :
(06:34:02 PM) worf|work: $('#jpokerSound').html('<' + jpoker.sound + ' src=\'' + jpoker.sound_base_path + 'player_hand.swf\' />');
}}}
for IE6 transparency sake
and add the script in the upstream
http://jpoker.aminche.com/hg/jpoker/rev/90a6b77b69f2
If running jpoker client locally from desktop, if a player is seated a table and refreshes, he is no longer logged in and the table is not displayed at all.
@@config.jpoker = { restURL : 'http://jspoker.pokersource.info/POKER_REST' }@@
@@firefox file:///usr/src/jpoker/jpoker/index.html@@
{{{
Response Headers
Date Fri, 19 Sep 2008 14:30:24 GMT
Server TwistedWeb/8.0.1
Content-Length 77
Content-Type text/plain; charset="UTF-8"
Via 1.0 jspoker.pokersource.info, 1.1 jspoker.pokersource.info
Set-Cookie TWISTED_SESSION_FC1B58ED71E7416A44AFEA6FC8BD0FC65C1C6F11=9784f544750cc5b33fa80ee76f1e7c76; Path=/
Keep-Alive timeout=15, max=100
Connection Keep-Alive
}}}
{{{
Request Headers
Host jspoker.pokersource.info
User-Agent Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9) Gecko/2008062910 Iceweasel/3.0 (Debian-3.0~rc2-2)
Accept application/json, text/javascript, */*
Accept-Language en-us,en;q=0.5
Accept-Encoding gzip,deflate
Accept-Charset ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive 300
Connection keep-alive
Content-Type application/x-www-form-urlencoded; charset=UTF-8
X-Requested-With XMLHttpRequest
Content-Length 47
}}}
{{{
Response Headers
Date Fri, 19 Sep 2008 14:30:24 GMT
Server TwistedWeb/8.0.1
Content-Length 13526
Content-Type text/plain; charset="UTF-8"
Via 1.0 jspoker.pokersource.info, 1.1 jspoker.pokersource.info
Keep-Alive timeout=15, max=99
Connection Keep-Alive
}}}
{{{
Request Headers
Host jspoker.pokersource.info
User-Agent Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9) Gecko/2008062910 Iceweasel/3.0 (Debian-3.0~rc2-2)
Accept application/json, text/javascript, */*
Accept-Language en-us,en;q=0.5
Accept-Encoding gzip,deflate
Accept-Charset ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive 300
Connection keep-alive
Content-Type application/x-www-form-urlencoded; charset=UTF-8
X-Requested-With XMLHttpRequest
Content-Length 45
Cookie TWISTED_SESSION_FC1B58ED71E7416A44AFEA6FC8BD0FC65C1C6F11=9784f544750cc5b33fa80ee76f1e7c76
}}}
@@log-in using plugin.login@@
{{{
Response Headers
Date Fri, 19 Sep 2008 14:33:12 GMT
Server TwistedWeb/8.0.1
Content-Length 2
Content-Type text/plain; charset="UTF-8"
Via 1.0 jspoker.pokersource.info, 1.1 jspoker.pokersource.info
Keep-Alive timeout=15, max=29
Connection Keep-Alive
}}}
{{{
Request Headers
Host jspoker.pokersource.info
User-Agent Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9) Gecko/2008062910 Iceweasel/3.0 (Debian-3.0~rc2-2)
Accept application/json, text/javascript, */*
Accept-Language en-us,en;q=0.5
Accept-Encoding gzip,deflate
Accept-Charset ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive 300
Connection keep-alive
Content-Type application/x-www-form-urlencoded; charset=UTF-8
X-Requested-With XMLHttpRequest
Content-Length 40
Cookie TWISTED_SESSION_FC1B58ED71E7416A44AFEA6FC8BD0FC65C1C6F11=9784f544750cc5b33fa80ee76f1e7c76
}}}
@@Ctrl-R to refresh browser window@@
{{{
Response Headers
Date Fri, 19 Sep 2008 14:33:58 GMT
Server TwistedWeb/8.0.1
Content-Length 77
Content-Type text/plain; charset="UTF-8"
Via 1.0 jspoker.pokersource.info, 1.1 jspoker.pokersource.info
Keep-Alive timeout=15, max=12
Connection Keep-Alive
}}}
{{{
Request Headers
Host jspoker.pokersource.info
User-Agent Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9) Gecko/2008062910 Iceweasel/3.0 (Debian-3.0~rc2-2)
Accept application/json, text/javascript, */*
Accept-Language en-us,en;q=0.5
Accept-Encoding gzip,deflate
Accept-Charset ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive 300
Connection keep-alive
Content-Type application/x-www-form-urlencoded; charset=UTF-8
X-Requested-With XMLHttpRequest
Content-Length 47
Cookie TWISTED_SESSION_FC1B58ED71E7416A44AFEA6FC8BD0FC65C1C6F11=9784f544750cc5b33fa80ee76f1e7c76
}}}
@@user is not relogged@@
Dealer: bruno receives 120 (everyone else folded)
Dealer: bruno receives 120 (everyone else folded)
(16:17:10) worf|work: subpacket.start_time = new Date(subpacket.start_time*1000).toLocaleString();
(16:17:11) worf|work: if (link_pattern && subpacket.state != 'announced') {
(16:17:11) worf|work: var link = t.link.supplant({link: link_pattern.supplant({tourney_serial: subpacket.serial}), name: subpacket.description_short});
(16:17:11) worf|work: subpacket.description_short = link;
(16:17:12) worf|work: }
Step to reproduce:
* Go to http://jspoker.pokersource.info/jpoker/
* Dismiss disclaimer
* Login
* Click here to get a seat
* Buy in
* Click to sit
* Refresh your browser
* Disclaimer featuring copyright information is shown again
* Dismiss disclaimer
* Buy in is shown with 0 for min/max/step
* Cancel buy in
* Buy in is shown again with accurate information
* Cancel buy in
* Play
http://jpoker.aminche.com/hg/jpoker/rev/94466b521e6b
http://jpoker.aminche.com/hg/jpoker/rev/cb655f1321c8
* show tourney start date in tourneyList in text readable format instead of number of seconds since 1970
using existing #winner div element
which is not used for now:
{{{
for(var winner = 0; winner < 2; winner++) {
$('#winner' + winner + id).hide();
}
}}}
http://jpoker.aminche.com/hg/jpoker/rev/e1c4949a4803
http://jpoker.aminche.com/hg/jpoker/rev/d00f5925feb6
http://jpoker.aminche.com/hg/jpoker/rev/2f91a9a37a7c
the pot to which a player is entitled because he went all in is displayed next to the player
the server must send an additional packet with the appropriate information
http://www.perkiset.org/forum/ajax/xmlhttprequest_ie6_ssl_and_12030_error_what_is_the_solution-t442.0.html
suggests to set
{{{
1. Only use POST if you're actually submitting FORM data (no data but still using POST upsets it, use GET if there's not data or only QUERY data to send).
2. When submitting FORM data, ensure there is no preceding '?' (e.g. ?P1=V1&P2=V2 is wrong, but P1=V1&P2=V2 is fine)
3. If POSTing data, set the HEADer of your request using the following:
Content-Type: application/x-www-form-urlencoded (This should also be set when using the GET method)
Content-Length: (Length of FORM data)
Content-Disposition: form-data; name="YourAppName"
}}}
My friend tried out jpoker with me. He had a 1024x768 screen but still had trouble that needed scrolling:
http://www.canonical.org/~paulv/images/jspoker.png
http://jspoker.pokersource.info/packaging-farm/jpoker/html/build/f8.out
filesystem upgrade needed to chmod /proc which is forbiden in a vserver. The f8 chroot was upgraded elsewhere to fix the issue.
http://jspoker.pokersource.info/jpoker/
test failed
{{{
jpoker module: jpoker.copyright (1, 0, 1)
Died on test #1: TypeError: Null value
}}}
test hang
{{{
jpoker.connection:sendPacket timeout
}}}
tiddlywiki failed
{{{
on JpokerPlugin↓ 3 KBonon Yes 14ms Error Error: TypeError: Null value
}}}
featuredTable doesn't joinTable if PacketPokerTableSelect('my').length = 0 not to conflict with reconnection
however if jpoker.doReconnect = false, the player will not reconnect automaticaly to the table, and featuredTable will do nothing
In firebug, go to the Net tab and disable network monitoring.
go to options and de-activate "Show XML Errors". This is just a way to display errors that happens to show garbage on iceweasel 2.0.0.13 and firebug-1.05
http://jpoker.aminche.com/hg/jpoker/rev/70ae3f3f75a8
http://jpoker.aminche.com/hg/jpoker/rev/20e9144e06d2
http://jpoker.aminche.com/hg/jpoker/rev/6bf792d53bd8
http://jpoker.aminche.com/hg/jpoker/rev/412d62aac7c2
http://jpoker.aminche.com/hg/jpoker/rev/6c206d7c8168
http://jpoker.aminche.com/hg/jpoker/rev/61ef6e33bbad
http://jpoker.aminche.com/hg/jpoker/rev/bf5a814a2949
http://jpoker.aminche.com/hg/jpoker/rev/1e971b74ecad
http://svn.gna.org/viewcvs/pokersource?view=rev&rev=4523
(username > LOGIN > password > SIGN UP -- should be A > C > B > D)
http://jpoker.aminche.com/hg/jpoker/rev/c758ea855b63
http://jpoker.aminche.com/hg/jpoker/rev/e16ac0243898
should not be called if skin_url is defined
http://svn.gna.org/viewcvs/pokersource?rev=4763&view=rev
with or without proxy enabled
{{{
setState loging undefined
sendPacket {"type":"PacketLogin","name":"proppy11","password":""}
sendPacket {"type":"PacketPing"}
queueIncoming {"type":"PacketAuthOk","time__":1220092259612}
queueIncoming {"type":"PacketSerial","serial":4,"cookie":"","time__":1220092259617}
connection handle 0: {"type":"PacketAuthOk","time__":1220092259612}
server.handler {"type":"PacketAuthOk","uid__":"jpoker1220092250243"}
connection handle 0: {"type":"PacketSerial","serial":4,"cookie":"","time__":1220092259617}
server.handler {"type":"PacketSerial","serial":4,"cookie":"","uid__":"jpoker1220092250244"}
setState running login serial received
setState retrieving user info undefined
sendPacket {"type":"PacketPokerGetUserInfo","serial":4}
queueIncoming {"type":"PacketAuthRequest","time__":1220092260819}
connection handle 0: {"type":"PacketAuthRequest","time__":1220092260819}
server.handler {"type":"PacketAuthRequest","uid__":"jpoker1220092250245"}
}}}
{{{
2008-08-30 10:30:59+0000 [HTTPChannel,790,127.0.0.1] PokerAvatar: handlePacketLogic(0): type = LOGIN(10) name = proppy11, password =
2008-08-30 10:30:59+0000 [HTTPChannel,790,127.0.0.1] PokerService: SELECT user2money.currency_serial,user2money.amount,user2money.points,CAST(SUM(user2table.bet) + SUM(user2table.money) AS UNSIGNED) AS in_game FROM user2money LEFT JOIN (pokertables,user2table) ON (user2table.user_serial = user2money.user_serial AND user2table.table_serial = pokertables.serial AND user2money.currency_serial = pokertables.currency_serial) WHERE user2money.user_serial = 4 GROUP BY user2money.currency_serial
2008-08-30 10:30:59+0000 [HTTPChannel,790,127.0.0.1] PokerService: getUserInfo: type = POKER_USER_INFO(92) serial = 4 name = proppy11, password = , email = , rating = 1000, affiliate = 0, 1=5000000/0/0
2008-08-30 10:30:59+0000 [HTTPChannel,790,127.0.0.1] PokerAvatar: sendPacket(0): type = AUTH_OK(8)
2008-08-30 10:30:59+0000 [HTTPChannel,790,127.0.0.1] PokerExplain:explain: type = AUTH_OK(8)
2008-08-30 10:30:59+0000 [HTTPChannel,790,127.0.0.1] PokerAvatar: sendPacket(4): type = SERIAL(6) serial = 4
2008-08-30 10:30:59+0000 [HTTPChannel,790,127.0.0.1] PokerExplain:explain: type = SERIAL(6) serial = 4
2008-08-30 10:30:59+0000 [HTTPChannel,790,127.0.0.1] PokerAvatar: user proppy11/4 logged in
2008-08-30 10:30:59+0000 [HTTPChannel,790,127.0.0.1] PokerAvatar: connection lost for proppy11/4
2008-08-30 10:30:59+0000 [HTTPChannel,790,127.0.0.1] PokerXMLSimplified: render
2008-08-30 10:30:59+0000 [HTTPChannel,790,127.0.0.1] PokerAvatar: connection lost for anonymous/0
2008-08-30 10:30:59+0000 [HTTPChannel,790,127.0.0.1] PokerXMLSimplified: render
2008-08-30 10:30:59+0000 [HTTPChannel,790,127.0.0.1] PokerAvatar: handlePacketLogic(0): type = POKER_GET_USER_INFO(93) serial = 4
2008-08-30 10:30:59+0000 [HTTPChannel,790,127.0.0.1] PokerAvatar: sendPacket(0): type = AUTH_REQUEST(11)
2008-08-30 10:30:59+0000 [HTTPChannel,790,127.0.0.1] PokerExplain:explain: type = AUTH_REQUEST(11)
2008-08-30 10:30:59+0000 [HTTPChannel,790,127.0.0.1] PokerAvatar: connection lost for anonymous/0
}}}
{{{
2442 html.push(t.info.supplant({
2443 'registered' : _("{registered} players registered."),
2444 'players_quota' : _("{players_quota} players max.")
2445 }).supplant(packet.tourney));
}}}
instead we should call the gettext function _() directly on template before supplanting it
http://jspoker.pokersource.info/packaging-farm/jpoker/html/build/hardy.out
added build essential that was missing
http://jspoker.pokersource.info/upstream/
http://jpoker.aminche.com/hg/jpoker/rev/b4edd4639b62
* cash game table
{"observers":0,"name":"Cayrryns","percent_flop":0,"average_pot":0,"skin":"default","variant":"holdem","hands_per_hour":0,"betting_structure":"100-200-no-limit","currency_serial":1,"muck_timeout":5,"players":0,"waiting":0,@@"tourney_serial":0@@,"seats":10,"player_timeout":60,"type":"PacketPokerTable","id":40}
* tourney table
,{"observers":0,"name":"sitngo21","percent_flop":0,"average_pot":0,"skin":"default","variant":"holdem","hands_per_hour":0,"betting_structure":"level-15-30-no-limit","currency_serial":0,"muck_timeout":5,"players":2,"waiting":0,@@"tourney_serial":2@@,"seats":2,"player_timeout":60,"type":"PacketPokerTable","id":41}
http://jpoker.aminche.com/hg/jpoker/rev/a67cabc3868d
see jpoker_42_sitngoTourneyList
if seat is much larger than avatar it is confusing
broken as a side effect of the logic change in JoinTable
* due to recent auth mecanism changes
* timeout
* sit back
* other players see the player as being sit-out although it is sit
(11:40:33 AM) rikeko: proppy: did dachary telle you about my little "problem" with the markup of the dealer history ?
(11:40:58 AM) rikeko: <div class="jpoker_chat_line">
(11:40:59 AM) rikeko: <span class="jpoker_chat_prefix"/>
(11:40:59 AM) rikeko: <span class="jpoker_chat_message">Dealer: dealing</span>
(11:40:59 AM) rikeko: </div>
(11:41:19 AM) rikeko: proppy: why is the word "dealer" not in jpoker_chat_prefix ?
(11:41:41 AM) rikeko: proppy: on the chat side, the names of the chatters are in jpoker_chat_prefix
(11:41:52 AM) rikeko: proppy: which allows to style them differently
(11:42:08 AM) rikeko: proppy: and which makes the whole thing more readable
(11:43:20 AM) rikeko: ok, thank you
(11:44:01 AM) rikeko: proppy: the chat history looks like this :
(11:44:01 AM) rikeko: <div class="jpoker_chat_line">
(11:44:01 AM) rikeko: <span class="jpoker_chat_prefix">myself: </span>
(11:44:01 AM) rikeko: <span class="jpoker_chat_message">Message one</span>
(11:44:02 AM) rikeko: </div>
{{{
root@kun:/usr/src/jpoker-letspok/jpoker/css/images/jpoker_table# ls -1 | grep '\-on'
button-buyIn-on.png
button-call-on.png
button-check-on.png
button-dismiss-on.png
button-download_jpoker_sources-on.png
button-exit-on.png
button-fold-on.png
button-go_back_to_the_tournaments_page-on.png
button-homme-connect-on.png
button-invite-friends-on.png
button-join-monthly-on.png
button-main-on.png
button-raise-on.png
button-rebuy-on.png
button-Redeem-points-for-prizes-on.png
button-send_contact-on.png
button-visit_the_sponsors_website-on.png
header-button_contact-on.png
header-button_help-on.png
header-button_invite-on.png
header-button_myaccount-on.png
header-button_myresults-on.png
header-button_points-on.png
sit-in-on.png
sit-out-on.png
}}}
because of:
cursor.execute("SELECT user2tourney.tourney_serial FROM user2tourney,tourneys WHERE user2tourney.user_serial = %s AND user2tourney.tourney_serial = tourneys.serial AND tourneys.state = 'registering'", serial)
https://gna.org/bugs/?12480
05:56:04 PM) proppy: dachary: is there 9 pots or 10 pots max for a 10 players tables ?
(05:56:14 PM) dachary: proppy: 9
(05:56:37 PM) Tamisoft left the room (quit: "Leaving.").
(05:56:37 PM) dachary: there must be at least 2 players competing over a pot
(05:56:42 PM) proppy: this.pots = [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ];
(05:57:00 PM) dachary: it's a mistake
(05:57:06 PM) dachary: there can't be 10 pots
(05:57:10 PM) proppy: Firebug's log limit has been reached. %S entries not shown.Preferences >>> [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ].length10
(05:57:27 PM) dachary: that would mean 1 player has one pot and no opponent
Some cases display player level, some don't
should be converted to string using exception.message before calling jpoker.error
http://jpoker.aminche.com/hg/jpoker/rev/0322f3714d03
http://jpoker.aminche.com/hg/jpoker/rev/245aabe5fddd
http://jpoker.aminche.com/hg/jpoker/rev/69e3d92ba3ae
http://jpoker.aminche.com/hg/jpoker/rev/02635d973c17'
http://jpoker.aminche.com/hg/jpoker/rev/e2b6ecacf5df
* use user.serial in the hash
** use preferences only when logged
http://jpoker.aminche.com/hg/jpoker/rev/bec7af0ffcc8
http://jpoker.aminche.com/hg/jpoker/rev/7299069e2757
on initiailization gettext is not available
"Login" for example can have different meaning in french, given it's used as a Noun or a Verb.
See:
http://www.gnu.org/software/gettext/manual/gettext.html#Contexts
http://groups.google.com/group/jquery-ui/browse_thread/thread/ea61238c34cb5f33
http://ui.jquery.com/bugs/ticket/3231
http://jpoker.aminche.com/jquery-ui-dialog-test/test.html
for raise/fold/check etc.
not necessary, use reconnectFinish instead
http://jpoker.aminche.com/hg/jpoker/rev/1cbdd3509d63
http://jspoker.pokersource.info/packaging-farm/jpoker/html/build/lenny.out
added build-essentials that was missing
keep show tableDetails on click
add join table on a separate link
http://jspoker.pokersource.info/tests/test-jpoker.html?jpoker module%3A jpoker.plugins.tourneyDetails templates regular registering
strange because date.toLocaleString is used
The login box should not allow input until it is ready to accept the input. Currently I start typing my login
and a few seconds later, it resets and clears what I typed. I hate it when this happens :)
(Both IE and FF)
Loic Dachary mailto:loic@dachary.org
* (11:32:34 AM) dachary: proppy: for some reason the japanese l10n files are always updated when running make all (the french are not)
** proppy: can't reproduce it
{{{
jpoker:/usr/src/jpoker-japan-bug# make all
python test-svg2html.py
...
----------------------------------------------------------------------
Ran 3 tests in 0.130s
OK
python test-svgflatten.py
.
----------------------------------------------------------------------
Ran 1 test in 0.054s
OK
rm -fr tests ; jscoverage jpoker tests
cd tests ; x-www-browser jscoverage.html?test-jpoker.html # replace with jaxer when http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=474050 closed
/bin/sh: x-www-browser: command not found
make: [check] Error 127 (ignored)
cd jpoker ; x-www-browser index.html
/bin/sh: x-www-browser: command not found
make: [all] Error 127 (ignored)
jpoker:/usr/src/jpoker-japan-bug# make i18n
make: Nothing to be done for `i18n'.
}}}
http://jpoker.aminche.com/hg/jpoker/rev/c9290c875567
http://jpoker.aminche.com/hg/jpoker/rev/1508cc26c45f
setLocale need only be called when rejoining a table because it only translates the dealer messages
http://jspoker.pokersource.info/jpoker/ show multiple sng in registering state. Probably a cleanup bug.
The problem is probably still here (server log) but the HOWTO reproduce the bug does not allow to reproduce it at the present time (nov 15 2008).
* run a 4 players sng with seats_per_game = 2
* table 1 breaks
* player go to another table
* the http://jspoker.pokersource.info/bug00.txt occurs
* the associated server log is http://jspoker.pokersource.info/bug00-server.txt
to differentiate from 'click here to sit out' label
because the server does not implement a lang=xx message to change locale
shows on the seconds hand
fixed by bug fixing the later tourney arrival problem
click on table four
click on seat 2
buyin
reload
goes back to index.php
There should be a way to disable the call to rejoin() in the reconnect() function for multitable poker sites.
(08:53:49 PM) saqimtiaz1: proppy: onclick in chat field, the text should be cleared
http://upstream.jspoker.pokersource.info/rev/37c073abc3fe
http://jpoker.aminche.com/hg/jpoker/rev/29f8b5a4e7d0
- needs a reset of margins and paddings => not possible, unless there is a surrounding DIV.
- font sizes could be in EM so when you want to change, you only change the base size => needs a surrounding div
- a:link and a:visited are not necessary, as they both are supposed to look the same => ok
- seat backgrounds, seat names, avatars are too verbose
- jpoker_player_rank is not very visible, it should be redesigned
- muck and show button overlay each other
- .jpoker_table .jpoker_ptable_sound_control needs cursor: pointer.
- all the buttons on the table should be designed via de A element, not the parenting div for userfriendliness
to avoid the display of a semi empty page when quitting the table
Given a player name, the server returns the list of tables where this player sits. A search box allows to enter the name of the user. If the user is not found an error is returned. If the player is not sit anywhere.
* poker-network packets to query & get the result
by rank when completed
by money when running
by name otherwise
did not show in recent versions
----
{{{
sendPacket {"type":"PacketPokerTableSelect","string":""}
sendPacket {"type":"PacketPokerTableSelect","string":""}
server.handler {"players":4,"type":"PacketPokerTableList","packets":[{"observers":0,"name":"One","percent_flop":0,"average_pot":0,"seats":10,"variant":"holdem","hands_per_hour":0,"betting_structure":"2-4-limit","currency_serial":1,"muck_timeout":5,"players":4,"waiting":0,"skin":"default","id":100,"type":"PacketPokerTable","player_timeout":60},{"observers":0,"name":"Two","percent_flop":0,"average_pot":0,"seats":10,"variant":"holdem","hands_per_hour":0,"betting_structure":"10-20-limit","currency_serial":1,"muck_timeout":5,"players":0,"waiting":0,"skin":"default","id":101,"type":"PacketPokerTable","player_timeout":60},{"observers":0,"name":"Three","percent_flop":0,"average_pot":0,"seats":10,"variant":"holdem","hands_per_hour":0,"betting_structure":"10-20-pot-limit","currency_serial":1,"muck_timeout":5,"players":0,"waiting":0,"skin":"default","id":102,"type":"PacketPokerTable","player_timeout":60},{"observers":0,"name":"Four","percent_flop":0,"average_pot":0,"seats":10,"variant":"holdem","hands_per_hour":0,"betting_structure":"100-200-no-limit","currency_serial":1,"muck_timeout":5,"players":0,"waiting":0,"skin":"default","id":103,"type":"PacketPokerTable","player_timeout":60},{"observers":0,"name":"Antigua","percent_flop":0,"average_pot":0,"seats":10,"variant":"holdem","hands_per_hour":0,"betting_structure":"100-200-no-limit","currency_serial":1,"muck_timeout":5,"players":0,"waiting":0,"skin":"default","id":104,"type":"PacketPokerTable","player_timeout":60},{"observers":0,"name":"Cairo","percent_flop":0,"average_pot":0,"seats":10,"variant":"holdem","hands_per_hour":0,"betting_structure":"100-200-no-limit","currency_serial":1,"muck_timeout":5,"players":0,"waiting":0,"skin":"default","id":105,"type":"PacketPokerTable","player_timeout":60},{"observers":0,"name":"Mont","percent_flop":0,"average_pot":0,"seats":10,"variant":"holdem","hands_per_hour":0,"betting_structure":"100-200-no-limit","currency_serial":1,"muck_timeout":5,"players":0,"waiting":0,"skin":"default","id":106,"type":"PacketPokerTable","player_timeout":60},{"observers":0,"name":"Nancy","percent_flop":0,"average_pot":0,"seats":10,"variant":"holdem","hands_per_hour":0,"betting_structure":"100-200-no-limit","currency_serial":1,"muck_timeout":5,"players":0,"waiting":0,"skin":"default","id":107,"type":"PacketPokerTable","player_timeout":60},{"observers":0,"name":"Corail","percent_flop":0,"average_pot":0,"seats":10,"variant":"holdem","hands_per_hour":0,"betting_structure":"100-200-no-limit","currency_serial":1,"muck_timeout":5,"players":0,"waiting":0,"skin":"default","id":108,"type":"PacketPokerTable","player_timeout":60},{"observers":0,"name":"Legend","percent_flop":0,"average_pot":0,"seats":10,"variant":"holdem","hands_per_hour":0,"betting_structure":"100-200-no-limit","currency_serial":1,"muck_timeout":5,"players":0,"waiting":0,"skin":"default","id":109,"type":"PacketPokerTable","player_timeout":60},{"observers":0,"name":"Chip","percent_flop":0,"average_pot":0,"seats":10,"variant":"holdem","hands_per_hour":0,"betting_structure":"100-200-no-limit","currency_serial":1,"muck_timeout":5,"players":0,"waiting":0,"skin":"default","id":110,"type":"PacketPokerTable","player_timeout":60},{"observers":0,"name":"Relax","percent_flop":0,"average_pot":0,"seats":10,"variant":"holdem","hands_per_hour":0,"betting_structure":"100-200-no-limit","currency_serial":1,"muck_timeout":5,"players":0,"waiting":0,"skin":"default","id":111,"type":"PacketPokerTable","player_timeout":60},{"observers":0,"name":"Speed","percent_flop":0,"average_pot":0,"seats":10,"variant":"holdem","hands_per_hour":0,"betting_structure":"100-200-no-limit","currency_serial":1,"muck_timeout":5,"players":0,"waiting":0,"skin":"default","id":112,"type":"PacketPokerTable","player_timeout":60},{"observers":0,"name":"Un","percent_flop":0,"average_pot":0,"seats":10,"variant":"holdem","hands_per_hour":0,"betting_structure":"2-4-limit","currency_serial":1,"muck_timeout":5,"players":0,"waiting":0,"skin":"default","id":113,"type":"PacketPokerTable","player_timeout":60},{"observers":0,"name":"Deux","percent_flop":0,"average_pot":0,"seats":10,"variant":"holdem","hands_per_hour":0,"betting_structure":"10-20-limit","currency_serial":1,"muck_timeout":5,"players":0,"waiting":0,"skin":"default","id":114,"type":"PacketPokerTable","player_timeout":60},{"observers":0,"name":"Trois","percent_flop":0,"average_pot":0,"seats":10,"variant":"holdem","hands_per_hour":0,"betting_structure":"10-20-pot-limit","currency_serial":1,"muck_timeout":5,"players":0,"waiting":0,"skin":"default","id":115,"type":"PacketPokerTable","player_timeout":60},{"observers":0,"name":"Quatre","percent_flop":0,"average_pot":0,"seats":10,"variant":"holdem","hands_per_hour":0,"betting_structure":"100-200-no-limit","currency_serial":1,"muck_timeout":5,"players":0,"waiting":0,"skin":"default","id":116,"type":"PacketPokerTable","player_timeout":60},{"observers":0,"name":"Five","percent_flop":0,"average_pot":0,"seats":10,"variant":"omaha","hands_per_hour":0,"betting_structure":"2-4-limit","currency_serial":1,"muck_timeout":5,"players":0,"waiting":0,"skin":"default","id":117,"type":"PacketPokerTable","player_timeout":60},{"observers":0,"name":"Six","percent_flop":0,"average_pot":0,"seats":10,"variant":"omaha","hands_per_hour":0,"betting_structure":"10-20-limit","currency_serial":1,"muck_timeout":5,"players":0,"waiting":0,"skin":"default","id":118,"type":"PacketPokerTable","player_timeout":60},{"observers":0,"name":"Seven","percent_flop":0,"average_pot":0,"seats":10,"variant":"omaha","hands_per_hour":0,"betting_structure":"10-20-pot-limit","currency_serial":1,"muck_timeout":5,"players":0,"waiting":0,"skin":"default","id":119,"type":"PacketPokerTable","player_timeout":60},{"observers":0,"name":"Eight","percent_flop":0,"average_pot":0,"seats":10,"variant":"omaha","hands_per_hour":0,"betting_structure":"100-200-no-limit","currency_serial":1,"muck_timeout":5,"players":0,"waiting":0,"skin":"default","id":120,"type":"PacketPokerTable","player_timeout":60},{"observers":0,"name":"Nine","percent_flop":0,"average_pot":0,"seats":10,"variant":"omaha8","hands_per_hour":0,"betting_structure":"2-4-limit","currency_serial":1,"muck_timeout":5,"players":0,"waiting":0,"skin":"default","id":121,"type":"PacketPokerTable","player_timeout":60},{"observers":0,"name":"Ten","percent_flop":0,"average_pot":0,"seats":10,"variant":"omaha8","hands_per_hour":0,"betting_structure":"10-20-limit","currency_serial":1,"muck_timeout":5,"players":0,"waiting":0,"skin":"default","id":122,"type":"PacketPokerTable","player_timeout":60},{"observers":0,"name":"Eleven","percent_flop":0,"average_pot":0,"seats":10,"variant":"omaha8","hands_per_hour":0,"betting_structure":"10-20-pot-limit","currency_serial":1,"muck_timeout":5,"players":0,"waiting":0,"skin":"default","id":123,"type":"PacketPokerTable","player_timeout":60},{"observers":0,"name":"Twelve","percent_flop":0,"average_pot":0,"seats":10,"variant":"omaha8","hands_per_hour":0,"betting_structure":"100-200-no-limit","currency_serial":1,"muck_timeout":5,"players":0,"waiting":0,"skin":"default","id":124,"type":"PacketPokerTable","player_timeout":60},{"observers":0,"name":"Thirty","percent_flop":0,"average_pot":0,"seats":8,"variant":"7stud","hands_per_hour":0,"betting_structure":"ante-10-20-limit","currency_serial":1,"muck_timeout":5,"players":0,"waiting":0,"skin":"default","id":125,"type":"PacketPokerTable","player_timeout":60},{"observers":0,"name":"Fourty","percent_flop":0,"average_pot":0,"seats":8,"variant":"7stud","hands_per_hour":0,"betting_structure":"ante-5-10-limit","currency_serial":1,"muck_timeout":5,"players":0,"waiting":0,"skin":"default","id":126,"type":"PacketPokerTable","player_timeout":60},{"observers":0,"name":"Lyearnys","percent_flop":0,"average_pot":0,"seats":10,"variant":"holdem","hands_per_hour":0,"betting_structure":".02-.04-no-limit","currency_serial":1,"muck_timeout":5,"players":0,"waiting":0,"skin":"default","id":127,"type":"PacketPokerTable","player_timeout":60},{"observers":0,"name":"Ingwskel","percent_flop":0,"average_pot":0,"seats":10,"variant":"holdem","hands_per_hour":0,"betting_structure":".05-.10-no-limit","currency_serial":1,"muck_timeout":5,"players":0,"waiting":0,"skin":"default","id":128,"type":"PacketPokerTable","player_timeout":60},{"observers":0,"name":"Cerrt","percent_flop":0,"average_pot":0,"seats":10,"variant":"holdem","hands_per_hour":0,"betting_structure":".10-.25-no-limit","currency_serial":1,"muck_timeout":5,"players":0,"waiting":0,"skin":"default","id":129,"type":"PacketPokerTable","player_timeout":60},{"observers":0,"name":"Therrd","percent_flop":0,"average_pot":0,"seats":10,"variant":"holdem","hands_per_hour":0,"betting_structure":".25-.50-no-limit","currency_serial":1,"muck_timeout":5,"players":0,"waiting":0,"skin":"default","id":130,"type":"PacketPokerTable","player_timeout":60},{"observers":0,"name":"Issgar","percent_flop":0,"average_pot":0,"seats":10,"variant":"holdem","hands_per_hour":0,"betting_structure":".50-1-no-limit","currency_serial":1,"muck_timeout":5,"players":0,"waiting":0,"skin":"default","id":131,"type":"PacketPokerTable","player_timeout":60},{"observers":0,"name":"Torray","percent_flop":0,"average_pot":0,"seats":10,"variant":"holdem","hands_per_hour":0,"betting_structure":"1-2-no-limit","currency_serial":1,"muck_timeout":5,"players":0,"waiting":0,"skin":"default","id":132,"type":"PacketPokerTable","player_timeout":60},{"observers":0,"name":"Uskeluina","percent_flop":0,"average_pot":0,"seats":10,"variant":"holdem","hands_per_hour":0,"betting_structure":"2-4-no-limit","currency_serial":1,"muck_timeout":5,"players":0,"waiting":0,"skin":"default","id":133,"type":"PacketPokerTable","player_timeout":60},{"observers":0,"name":"Oilde","percent_flop":0,"average_pot":0,"seats":10,"variant":"holdem","hands_per_hour":0,"betting_structure":"3-6-no-limit","currency_serial":1,"muck_timeout":5,"players":0,"waiting":0,"skin":"default","id":134,"type":"PacketPokerTable","player_timeout":60},{"observers":0,"name":"Cheper","percent_flop":0,"average_pot":0,"seats":10,"variant":"holdem","hands_per_hour":0,"betting_structure":"5-10-no-limit","currency_serial":1,"muck_timeout":5,"players":0,"waiting":0,"skin":"default","id":135,"type":"PacketPokerTable","player_timeout":60},{"observers":0,"name":"Syfar","percent_flop":0,"average_pot":0,"seats":10,"variant":"holdem","hands_per_hour":0,"betting_structure":"10-20-no-limit","currency_serial":1,"muck_timeout":5,"players":0,"waiting":0,"skin":"default","id":136,"type":"PacketPokerTable","player_timeout":60},{"observers":0,"name":"Rhoine","percent_flop":0,"average_pot":0,"seats":10,"variant":"holdem","hands_per_hour":0,"betting_structure":"30-60-no-limit","currency_serial":1,"muck_timeout":5,"players":0,"waiting":0,"skin":"default","id":137,"type":"PacketPokerTable","player_timeout":60},{"observers":0,"name":"Mosolor","percent_flop":0,"average_pot":0,"seats":10,"variant":"holdem","hands_per_hour":0,"betting_structure":"50-100-no-limit","currency_serial":1,"muck_timeout":5,"players":0,"waiting":0,"skin":"default","id":138,"type":"PacketPokerTable","player_timeout":60},{"observers":0,"name":"Cayrryns","percent_flop":0,"average_pot":0,"seats":10,"variant":"holdem","hands_per_hour":0,"betting_structure":"100-200-no-limit","currency_serial":1,"muck_timeout":5,"players":0,"waiting":0,"skin":"default","id":139,"type":"PacketPokerTable","player_timeout":60}],"tables":40}
server.handler {"players":4,"type":"PacketPokerTableList","packets":[{"observers":0,"name":"One","percent_flop":0,"average_pot":0,"seats":10,"variant":"holdem","hands_per_hour":0,"betting_structure":"2-4-limit","currency_serial":1,"muck_timeout":5,"players":4,"waiting":0,"skin":"default","id":100,"type":"PacketPokerTable","player_timeout":60},{"observers":0,"name":"Two","percent_flop":0,"average_pot":0,"seats":10,"variant":"holdem","hands_per_hour":0,"betting_structure":"10-20-limit","currency_serial":1,"muck_timeout":5,"players":0,"waiting":0,"skin":"default","id":101,"type":"PacketPokerTable","player_timeout":60},{"observers":0,"name":"Three","percent_flop":0,"average_pot":0,"seats":10,"variant":"holdem","hands_per_hour":0,"betting_structure":"10-20-pot-limit","currency_serial":1,"muck_timeout":5,"players":0,"waiting":0,"skin":"default","id":102,"type":"PacketPokerTable","player_timeout":60},{"observers":0,"name":"Four","percent_flop":0,"average_pot":0,"seats":10,"variant":"holdem","hands_per_hour":0,"betting_structure":"100-200-no-limit","currency_serial":1,"muck_timeout":5,"players":0,"waiting":0,"skin":"default","id":103,"type":"PacketPokerTable","player_timeout":60},{"observers":0,"name":"Antigua","percent_flop":0,"average_pot":0,"seats":10,"variant":"holdem","hands_per_hour":0,"betting_structure":"100-200-no-limit","currency_serial":1,"muck_timeout":5,"players":0,"waiting":0,"skin":"default","id":104,"type":"PacketPokerTable","player_timeout":60},{"observers":0,"name":"Cairo","percent_flop":0,"average_pot":0,"seats":10,"variant":"holdem","hands_per_hour":0,"betting_structure":"100-200-no-limit","currency_serial":1,"muck_timeout":5,"players":0,"waiting":0,"skin":"default","id":105,"type":"PacketPokerTable","player_timeout":60},{"observers":0,"name":"Mont","percent_flop":0,"average_pot":0,"seats":10,"variant":"holdem","hands_per_hour":0,"betting_structure":"100-200-no-limit","currency_serial":1,"muck_timeout":5,"players":0,"waiting":0,"skin":"default","id":106,"type":"PacketPokerTable","player_timeout":60},{"observers":0,"name":"Nancy","percent_flop":0,"average_pot":0,"seats":10,"variant":"holdem","hands_per_hour":0,"betting_structure":"100-200-no-limit","currency_serial":1,"muck_timeout":5,"players":0,"waiting":0,"skin":"default","id":107,"type":"PacketPokerTable","player_timeout":60},{"observers":0,"name":"Corail","percent_flop":0,"average_pot":0,"seats":10,"variant":"holdem","hands_per_hour":0,"betting_structure":"100-200-no-limit","currency_serial":1,"muck_timeout":5,"players":0,"waiting":0,"skin":"default","id":108,"type":"PacketPokerTable","player_timeout":60},{"observers":0,"name":"Legend","percent_flop":0,"average_pot":0,"seats":10,"variant":"holdem","hands_per_hour":0,"betting_structure":"100-200-no-limit","currency_serial":1,"muck_timeout":5,"players":0,"waiting":0,"skin":"default","id":109,"type":"PacketPokerTable","player_timeout":60},{"observers":0,"name":"Chip","percent_flop":0,"average_pot":0,"seats":10,"variant":"holdem","hands_per_hour":0,"betting_structure":"100-200-no-limit","currency_serial":1,"muck_timeout":5,"players":0,"waiting":0,"skin":"default","id":110,"type":"PacketPokerTable","player_timeout":60},{"observers":0,"name":"Relax","percent_flop":0,"average_pot":0,"seats":10,"variant":"holdem","hands_per_hour":0,"betting_structure":"100-200-no-limit","currency_serial":1,"muck_timeout":5,"players":0,"waiting":0,"skin":"default","id":111,"type":"PacketPokerTable","player_timeout":60},{"observers":0,"name":"Speed","percent_flop":0,"average_pot":0,"seats":10,"variant":"holdem","hands_per_hour":0,"betting_structure":"100-200-no-limit","currency_serial":1,"muck_timeout":5,"players":0,"waiting":0,"skin":"default","id":112,"type":"PacketPokerTable","player_timeout":60},{"observers":0,"name":"Un","percent_flop":0,"average_pot":0,"seats":10,"variant":"holdem","hands_per_hour":0,"betting_structure":"2-4-limit","currency_serial":1,"muck_timeout":5,"players":0,"waiting":0,"skin":"default","id":113,"type":"PacketPokerTable","player_timeout":60},{"observers":0,"name":"Deux","percent_flop":0,"average_pot":0,"seats":10,"variant":"holdem","hands_per_hour":0,"betting_structure":"10-20-limit","currency_serial":1,"muck_timeout":5,"players":0,"waiting":0,"skin":"default","id":114,"type":"PacketPokerTable","player_timeout":60},{"observers":0,"name":"Trois","percent_flop":0,"average_pot":0,"seats":10,"variant":"holdem","hands_per_hour":0,"betting_structure":"10-20-pot-limit","currency_serial":1,"muck_timeout":5,"players":0,"waiting":0,"skin":"default","id":115,"type":"PacketPokerTable","player_timeout":60},{"observers":0,"name":"Quatre","percent_flop":0,"average_pot":0,"seats":10,"variant":"holdem","hands_per_hour":0,"betting_structure":"100-200-no-limit","currency_serial":1,"muck_timeout":5,"players":0,"waiting":0,"skin":"default","id":116,"type":"PacketPokerTable","player_timeout":60},{"observers":0,"name":"Five","percent_flop":0,"average_pot":0,"seats":10,"variant":"omaha","hands_per_hour":0,"betting_structure":"2-4-limit","currency_serial":1,"muck_timeout":5,"players":0,"waiting":0,"skin":"default","id":117,"type":"PacketPokerTable","player_timeout":60},{"observers":0,"name":"Six","percent_flop":0,"average_pot":0,"seats":10,"variant":"omaha","hands_per_hour":0,"betting_structure":"10-20-limit","currency_serial":1,"muck_timeout":5,"players":0,"waiting":0,"skin":"default","id":118,"type":"PacketPokerTable","player_timeout":60},{"observers":0,"name":"Seven","percent_flop":0,"average_pot":0,"seats":10,"variant":"omaha","hands_per_hour":0,"betting_structure":"10-20-pot-limit","currency_serial":1,"muck_timeout":5,"players":0,"waiting":0,"skin":"default","id":119,"type":"PacketPokerTable","player_timeout":60},{"observers":0,"name":"Eight","percent_flop":0,"average_pot":0,"seats":10,"variant":"omaha","hands_per_hour":0,"betting_structure":"100-200-no-limit","currency_serial":1,"muck_timeout":5,"players":0,"waiting":0,"skin":"default","id":120,"type":"PacketPokerTable","player_timeout":60},{"observers":0,"name":"Nine","percent_flop":0,"average_pot":0,"seats":10,"variant":"omaha8","hands_per_hour":0,"betting_structure":"2-4-limit","currency_serial":1,"muck_timeout":5,"players":0,"waiting":0,"skin":"default","id":121,"type":"PacketPokerTable","player_timeout":60},{"observers":0,"name":"Ten","percent_flop":0,"average_pot":0,"seats":10,"variant":"omaha8","hands_per_hour":0,"betting_structure":"10-20-limit","currency_serial":1,"muck_timeout":5,"players":0,"waiting":0,"skin":"default","id":122,"type":"PacketPokerTable","player_timeout":60},{"observers":0,"name":"Eleven","percent_flop":0,"average_pot":0,"seats":10,"variant":"omaha8","hands_per_hour":0,"betting_structure":"10-20-pot-limit","currency_serial":1,"muck_timeout":5,"players":0,"waiting":0,"skin":"default","id":123,"type":"PacketPokerTable","player_timeout":60},{"observers":0,"name":"Twelve","percent_flop":0,"average_pot":0,"seats":10,"variant":"omaha8","hands_per_hour":0,"betting_structure":"100-200-no-limit","currency_serial":1,"muck_timeout":5,"players":0,"waiting":0,"skin":"default","id":124,"type":"PacketPokerTable","player_timeout":60},{"observers":0,"name":"Thirty","percent_flop":0,"average_pot":0,"seats":8,"variant":"7stud","hands_per_hour":0,"betting_structure":"ante-10-20-limit","currency_serial":1,"muck_timeout":5,"players":0,"waiting":0,"skin":"default","id":125,"type":"PacketPokerTable","player_timeout":60},{"observers":0,"name":"Fourty","percent_flop":0,"average_pot":0,"seats":8,"variant":"7stud","hands_per_hour":0,"betting_structure":"ante-5-10-limit","currency_serial":1,"muck_timeout":5,"players":0,"waiting":0,"skin":"default","id":126,"type":"PacketPokerTable","player_timeout":60},{"observers":0,"name":"Lyearnys","percent_flop":0,"average_pot":0,"seats":10,"variant":"holdem","hands_per_hour":0,"betting_structure":".02-.04-no-limit","currency_serial":1,"muck_timeout":5,"players":0,"waiting":0,"skin":"default","id":127,"type":"PacketPokerTable","player_timeout":60},{"observers":0,"name":"Ingwskel","percent_flop":0,"average_pot":0,"seats":10,"variant":"holdem","hands_per_hour":0,"betting_structure":".05-.10-no-limit","currency_serial":1,"muck_timeout":5,"players":0,"waiting":0,"skin":"default","id":128,"type":"PacketPokerTable","player_timeout":60},{"observers":0,"name":"Cerrt","percent_flop":0,"average_pot":0,"seats":10,"variant":"holdem","hands_per_hour":0,"betting_structure":".10-.25-no-limit","currency_serial":1,"muck_timeout":5,"players":0,"waiting":0,"skin":"default","id":129,"type":"PacketPokerTable","player_timeout":60},{"observers":0,"name":"Therrd","percent_flop":0,"average_pot":0,"seats":10,"variant":"holdem","hands_per_hour":0,"betting_structure":".25-.50-no-limit","currency_serial":1,"muck_timeout":5,"players":0,"waiting":0,"skin":"default","id":130,"type":"PacketPokerTable","player_timeout":60},{"observers":0,"name":"Issgar","percent_flop":0,"average_pot":0,"seats":10,"variant":"holdem","hands_per_hour":0,"betting_structure":".50-1-no-limit","currency_serial":1,"muck_timeout":5,"players":0,"waiting":0,"skin":"default","id":131,"type":"PacketPokerTable","player_timeout":60},{"observers":0,"name":"Torray","percent_flop":0,"average_pot":0,"seats":10,"variant":"holdem","hands_per_hour":0,"betting_structure":"1-2-no-limit","currency_serial":1,"muck_timeout":5,"players":0,"waiting":0,"skin":"default","id":132,"type":"PacketPokerTable","player_timeout":60},{"observers":0,"name":"Uskeluina","percent_flop":0,"average_pot":0,"seats":10,"variant":"holdem","hands_per_hour":0,"betting_structure":"2-4-no-limit","currency_serial":1,"muck_timeout":5,"players":0,"waiting":0,"skin":"default","id":133,"type":"PacketPokerTable","player_timeout":60},{"observers":0,"name":"Oilde","percent_flop":0,"average_pot":0,"seats":10,"variant":"holdem","hands_per_hour":0,"betting_structure":"3-6-no-limit","currency_serial":1,"muck_timeout":5,"players":0,"waiting":0,"skin":"default","id":134,"type":"PacketPokerTable","player_timeout":60},{"observers":0,"name":"Cheper","percent_flop":0,"average_pot":0,"seats":10,"variant":"holdem","hands_per_hour":0,"betting_structure":"5-10-no-limit","currency_serial":1,"muck_timeout":5,"players":0,"waiting":0,"skin":"default","id":135,"type":"PacketPokerTable","player_timeout":60},{"observers":0,"name":"Syfar","percent_flop":0,"average_pot":0,"seats":10,"variant":"holdem","hands_per_hour":0,"betting_structure":"10-20-no-limit","currency_serial":1,"muck_timeout":5,"players":0,"waiting":0,"skin":"default","id":136,"type":"PacketPokerTable","player_timeout":60},{"observers":0,"name":"Rhoine","percent_flop":0,"average_pot":0,"seats":10,"variant":"holdem","hands_per_hour":0,"betting_structure":"30-60-no-limit","currency_serial":1,"muck_timeout":5,"players":0,"waiting":0,"skin":"default","id":137,"type":"PacketPokerTable","player_timeout":60},{"observers":0,"name":"Mosolor","percent_flop":0,"average_pot":0,"seats":10,"variant":"holdem","hands_per_hour":0,"betting_structure":"50-100-no-limit","currency_serial":1,"muck_timeout":5,"players":0,"waiting":0,"skin":"default","id":138,"type":"PacketPokerTable","player_timeout":60},{"observers":0,"name":"Cayrryns","percent_flop":0,"average_pot":0,"seats":10,"variant":"holdem","hands_per_hour":0,"betting_structure":"100-200-no-limit","currency_serial":1,"muck_timeout":5,"players":0,"waiting":0,"skin":"default","id":139,"type":"PacketPokerTable","player_timeout":60}],"tables":40}
sendPacket {"type":"PacketPokerExplain","value":255}
sendPacket {"type":"PacketPokerTableJoin","game_id":100}
sendPacket {"type":"PacketPing"}
server.handler {"type":"PacketAck"}
server.handler {"observers":0,"name":"One","percent_flop":0,"average_pot":0,"seats":10,"variant":"holdem","hands_per_hour":0,"betting_structure":"2-4-limit","currency_serial":1,"muck_timeout":5,"players":4,"waiting":0,"skin":"default","id":100,"type":"PacketPokerTable","player_timeout":60}
table.handler {"game_id":100,"message":"Dealer: HOTdirj8 pays 2 blind\n","cookie":"","serial":0,"type":"PacketPokerChat"}
table.handler {"game_id":100,"serial":0,"cookie":"6849644234f90c338ff68246a0018ed1","type":"PacketPokerBatchMode"}
server.handler {"count":1,"game_ids":[100],"length":9,"type":"PacketPokerCurrentGames"}
table.handler {"game_id":100,"message":"Dealer: pre-flop, 2 players\n","cookie":"","serial":0,"type":"PacketPokerChat"}
table.handler {"blind":"late","buy_in_payed":false,"auto_blind_ante":true,"name":"HOTkanzuwigsI","url":"random","auto":false,"seat":3,"outfit":"random","cookie":"","sit_out_next_turn":false,"sit_out":false,"game_id":100,"serial":48,"wait_for":false,"type":"PacketPokerPlayerArrive","remove_next_turn":false}
player.handler {"blind":"late","buy_in_payed":false,"auto_blind_ante":true,"name":"HOTkanzuwigsI","url":"random","auto":false,"seat":3,"outfit":"random","cookie":"","sit_out_next_turn":false,"sit_out":false,"game_id":100,"serial":48,"wait_for":false,"type":"PacketPokerPlayerArrive","remove_next_turn":false}
table.handler {"game_id":100,"type":"PacketPokerSeats","seats":[0,0,0,48,0,0,0,0,0,0]}
table.handler {"money":1000,"cookie":"","game_id":100,"serial":48,"type":"PacketPokerPlayerChips","bet":0}
player.handler {"money":1000,"cookie":"","game_id":100,"serial":48,"type":"PacketPokerPlayerChips","bet":0}
table.handler {"game_id":100,"serial":48,"cookie":"","type":"PacketPokerSit"}
player.handler {"game_id":100,"serial":48,"cookie":"","type":"PacketPokerSit"}
table.handler {"blind":true,"buy_in_payed":false,"auto_blind_ante":true,"name":"HOTdirj8","url":"random","auto":false,"seat":0,"outfit":"random","cookie":"","sit_out_next_turn":false,"sit_out":false,"game_id":100,"serial":45,"wait_for":false,"type":"PacketPokerPlayerArrive","remove_next_turn":false}
player.handler {"blind":true,"buy_in_payed":false,"auto_blind_ante":true,"name":"HOTdirj8","url":"random","auto":false,"seat":0,"outfit":"random","cookie":"","sit_out_next_turn":false,"sit_out":false,"game_id":100,"serial":45,"wait_for":false,"type":"PacketPokerPlayerArrive","remove_next_turn":false}
table.handler {"game_id":100,"type":"PacketPokerSeats","seats":[45,0,0,48,0,0,0,0,0,0]}
table.handler {"blind":true,"buy_in_payed":false,"auto_blind_ante":true,"name":"HOThadji","url":"random","auto":false,"seat":1,"outfit":"random","cookie":"","sit_out_next_turn":false,"sit_out":false,"game_id":100,"serial":46,"wait_for":false,"type":"PacketPokerPlayerArrive","remove_next_turn":false}
player.handler {"blind":true,"buy_in_payed":false,"auto_blind_ante":true,"name":"HOThadji","url":"random","auto":false,"seat":1,"outfit":"random","cookie":"","sit_out_next_turn":false,"sit_out":false,"game_id":100,"serial":46,"wait_for":false,"type":"PacketPokerPlayerArrive","remove_next_turn":false}
table.handler {"game_id":100,"type":"PacketPokerSeats","seats":[45,46,0,48,0,0,0,0,0,0]}
table.handler {"blind":"late","buy_in_payed":false,"auto_blind_ante":true,"name":"HOThocoyzut9","url":"random","auto":false,"seat":2,"outfit":"random","cookie":"","sit_out_next_turn":false,"sit_out":false,"game_id":100,"serial":47,"wait_for":false,"type":"PacketPokerPlayerArrive","remove_next_turn":false}
player.handler {"blind":"late","buy_in_payed":false,"auto_blind_ante":true,"name":"HOThocoyzut9","url":"random","auto":false,"seat":2,"outfit":"random","cookie":"","sit_out_next_turn":false,"sit_out":false,"game_id":100,"serial":47,"wait_for":false,"type":"PacketPokerPlayerArrive","remove_next_turn":false}
table.handler {"game_id":100,"type":"PacketPokerSeats","seats":[45,46,47,48,0,0,0,0,0,0]}
table.handler {"money":1000,"cookie":"","game_id":100,"serial":47,"type":"PacketPokerPlayerChips","bet":0}
player.handler {"money":1000,"cookie":"","game_id":100,"serial":47,"type":"PacketPokerPlayerChips","bet":0}
table.handler {"game_id":100,"serial":47,"cookie":"","type":"PacketPokerSit"}
player.handler {"game_id":100,"serial":47,"cookie":"","type":"PacketPokerSit"}
table.handler {"money":1000,"cookie":"","game_id":100,"serial":45,"type":"PacketPokerPlayerChips","bet":0}
player.handler {"money":1000,"cookie":"","game_id":100,"serial":45,"type":"PacketPokerPlayerChips","bet":0}
table.handler {"money":1000,"cookie":"","game_id":100,"serial":46,"type":"PacketPokerPlayerChips","bet":0}
player.handler {"money":1000,"cookie":"","game_id":100,"serial":46,"type":"PacketPokerPlayerChips","bet":0}
table.handler {"players":[45,46],"serial":0,"cookie":"","type":"PacketPokerInGame","game_id":100}
}}}
<<<
{{{
player has no properties
update(Object observers=0 name=One percent_flop=88 average_pot=980, Object game_id=100 serial=45 type=PacketPokerPosition, "jpoker1210101261837")jquery.jpoker.js (line 1511)
wrapper(Object observers=0 name=One percent_flop=88 average_pot=980, Object game_id=100 serial=45 type=PacketPokerPosition)jquery.jpoker.js (line 393)
notify("update", Object game_id=100 serial=45 type=PacketPokerPosition)jquery.jpoker.js (line 380)
notifyUpdate(Object game_id=100 serial=45 type=PacketPokerPosition)jquery.jpoker.js (line 387)
handler(Object mode=queue url=http://127.0.0.1/REST async=true, "100", Object game_id=100 serial=45 type=PacketPokerPosition)jquery.jpoker.js (line 1018)
(no name)(function(), 0)jquery.jpoker.js (line 550)
grep([function()], function(), undefined)jquery.js (line 1187)
handle("100", Object game_id=100 serial=45 type=PacketPokerPosition)jquery.jpoker.js (line 548)
dequeueIncoming()jquery.jpoker.js (line 685)
(no name)()jquery.jpoker.js (line 716)
[Break on this error] if(packet.serial > 0 && player.sit === true && player.seat =...
jquery.jpoker.js (line 1511)
}}}
<<<
{{{
table.handler {"game_id":100,"serial":48,"cookie":"","type":"PacketPokerSitOut"}
player.handler {"game_id":100,"serial":48,"cookie":"","type":"PacketPokerSitOut"}
table.handler {"game_id":100,"serial":45,"cookie":"","type":"PacketPokerSit"}
player.handler {"game_id":100,"serial":45,"cookie":"","type":"PacketPokerSit"}
table.handler {"game_id":100,"serial":46,"cookie":"","type":"PacketPokerSit"}
player.handler {"game_id":100,"serial":46,"cookie":"","type":"PacketPokerSit"}
table.handler {"game_id":100,"serial":47,"cookie":"","type":"PacketPokerSitOut"}
player.handler {"game_id":100,"serial":47,"cookie":"","type":"PacketPokerSitOut"}
table.handler {"game_id":100,"type":"PacketPokerDealer","dealer":0,"previous_dealer":-1}
table.handler {"hand_serial":19,"cookie":"","hands_count":0,"level":0,"game_id":100,"serial":0,"time":0,"type":"PacketPokerStart"}
table.handler {"cards":[],"game_id":100,"serial":0,"cookie":"","type":"PacketPokerBoardCards"}
table.handler {"money":1000,"cookie":"","game_id":100,"serial":45,"type":"PacketPokerPlayerChips","bet":0}
player.handler {"money":1000,"cookie":"","game_id":100,"serial":45,"type":"PacketPokerPlayerChips","bet":0}
table.handler {"money":1000,"cookie":"","game_id":100,"serial":46,"type":"PacketPokerPlayerChips","bet":0}
player.handler {"money":1000,"cookie":"","game_id":100,"serial":46,"type":"PacketPokerPlayerChips","bet":0}
table.handler {"type":"PacketPokerChipsPotReset","length":11,"cookie":"","serial":0,"game_id":100}
table.handler {"game_id":100,"serial":45,"type":"PacketPokerPosition","position":0}
player.handler {"game_id":100,"serial":45,"type":"PacketPokerPosition","position":0}
table.handler {"game_id":100,"serial":46,"type":"PacketPokerPosition","position":1}
player.handler {"game_id":100,"serial":46,"type":"PacketPokerPosition","position":1}
table.handler {"dead":0,"amount":100,"cookie":"","game_id":100,"serial":46,"type":"PacketPokerBlind"}
player.handler {"dead":0,"amount":100,"cookie":"","game_id":100,"serial":46,"type":"PacketPokerBlind"}
table.handler {"chips":[100,1],"length":15,"cookie":"","game_id":100,"serial":46,"type":"PacketPokerChipsPlayer2Bet"}
player.handler {"chips":[100,1],"length":15,"cookie":"","game_id":100,"serial":46,"type":"PacketPokerChipsPlayer2Bet"}
table.handler {"money":900,"cookie":"","game_id":100,"serial":46,"type":"PacketPokerPlayerChips","bet":100}
player.handler {"money":900,"cookie":"","game_id":100,"serial":46,"type":"PacketPokerPlayerChips","bet":100}
table.handler {"game_id":100,"serial":45,"type":"PacketPokerPosition","position":0}
player.handler {"game_id":100,"serial":45,"type":"PacketPokerPosition","position":0}
table.handler {"dead":0,"amount":200,"cookie":"","game_id":100,"serial":45,"type":"PacketPokerBlind"}
player.handler {"dead":0,"amount":200,"cookie":"","game_id":100,"serial":45,"type":"PacketPokerBlind"}
table.handler {"chips":[100,2],"length":15,"cookie":"","game_id":100,"serial":45,"type":"PacketPokerChipsPlayer2Bet"}
player.handler {"chips":[100,2],"length":15,"cookie":"","game_id":100,"serial":45,"type":"PacketPokerChipsPlayer2Bet"}
table.handler {"money":800,"cookie":"","game_id":100,"serial":45,"type":"PacketPokerPlayerChips","bet":200}
player.handler {"money":800,"cookie":"","game_id":100,"serial":45,"type":"PacketPokerPlayerChips","bet":200}
table.handler {"cards":[255,255],"game_id":100,"serial":45,"cookie":"","type":"PacketPokerPlayerCards"}
player.handler {"cards":[255,255],"game_id":100,"serial":45,"cookie":"","type":"PacketPokerPlayerCards"}
table.handler {"cards":[255,255],"game_id":100,"serial":46,"cookie":"","type":"PacketPokerPlayerCards"}
player.handler {"cards":[255,255],"game_id":100,"serial":46,"cookie":"","type":"PacketPokerPlayerCards"}
table.handler {"game_id":100,"serial":0,"cookie":"","string":"pre-flop","type":"PacketPokerState"}
table.handler {"serials":[45,46],"length":21,"numberOfCards":2,"cookie":"","game_id":100,"serial":0,"type":"PacketPokerDealCards"}
table.handler {"cards":[255,255],"game_id":100,"serial":45,"cookie":"","type":"PacketPokerPlayerCards"}
player.handler {"cards":[255,255],"game_id":100,"serial":45,"cookie":"","type":"PacketPokerPlayerCards"}
table.handler {"cards":[255,255],"game_id":100,"serial":46,"cookie":"","type":"PacketPokerPlayerCards"}
player.handler {"cards":[255,255],"game_id":100,"serial":46,"cookie":"","type":"PacketPokerPlayerCards"}
table.handler {"type":"PacketPokerBeginRound","length":11,"cookie":"","serial":0,"game_id":100}
sendPacket {"type":"PacketPing"}
table.handler {"game_id":100,"serial":46,"type":"PacketPokerPosition","position":1}
player.handler {"game_id":100,"serial":46,"type":"PacketPokerPosition","position":1}
table.handler {"game_id":100,"serial":0,"cookie":"","type":"PacketPokerStreamMode"}
sendPacket {"type":"PacketPing"}
table.handler {"game_id":100,"message":"Dealer: HOTdirj8 raises 4\n","cookie":"","serial":0,"type":"PacketPokerChat"}
table.handler {"game_id":100,"amount":400,"cookie":"6849644234f90c338ff68246a0018ed1","serial":45,"type":"PacketPokerRaise"}
player.handler {"game_id":100,"amount":400,"cookie":"6849644234f90c338ff68246a0018ed1","serial":45,"type":"PacketPokerRaise"}
table.handler {"type":"PacketPokerHighestBetIncrease","length":11,"cookie":"","serial":0,"game_id":100}
table.handler {"chips":[100,4],"length":15,"cookie":"","game_id":100,"serial":45,"type":"PacketPokerChipsPlayer2Bet"}
player.handler {"chips":[100,4],"length":15,"cookie":"","game_id":100,"serial":45,"type":"PacketPokerChipsPlayer2Bet"}
table.handler {"money":400,"cookie":"","game_id":100,"serial":45,"type":"PacketPokerPlayerChips","bet":600}
player.handler {"money":400,"cookie":"","game_id":100,"serial":45,"type":"PacketPokerPlayerChips","bet":600}
table.handler {"game_id":100,"serial":46,"type":"PacketPokerPosition","position":1}
player.handler {"game_id":100,"serial":46,"type":"PacketPokerPosition","position":1}
sendPacket {"type":"PacketPing"}
sendPacket {"type":"PacketPing"}
table.handler {"game_id":100,"message":"Dealer: HOThadji raises 4\n","cookie":"","serial":0,"type":"PacketPokerChat"}
table.handler {"game_id":100,"amount":400,"cookie":"6849644234f90c338ff68246a0018ed1","serial":46,"type":"PacketPokerRaise"}
player.handler {"game_id":100,"amount":400,"cookie":"6849644234f90c338ff68246a0018ed1","serial":46,"type":"PacketPokerRaise"}
table.handler {"type":"PacketPokerHighestBetIncrease","length":11,"cookie":"","serial":0,"game_id":100}
table.handler {"chips":[100,4],"length":15,"cookie":"","game_id":100,"serial":46,"type":"PacketPokerChipsPlayer2Bet"}
player.handler {"chips":[100,4],"length":15,"cookie":"","game_id":100,"serial":46,"type":"PacketPokerChipsPlayer2Bet"}
table.handler {"money":200,"cookie":"","game_id":100,"serial":46,"type":"PacketPokerPlayerChips","bet":800}
player.handler {"money":200,"cookie":"","game_id":100,"serial":46,"type":"PacketPokerPlayerChips","bet":800}
table.handler {"game_id":100,"serial":45,"type":"PacketPokerPosition","position":0}
player.handler {"game_id":100,"serial":45,"type":"PacketPokerPosition","position":0}
}}}
* the server must implement a GetRank and Rank packets that return the rank and level of a given player
** the GetRank packet specifies the serial and the currency_serial for which the rank and level must be retrieved
** the server will answer with PacketPokerStats which will include "rank" and "level", which will be sent after PacketPokerPlayerArrive
* the client must query the server and display the information and create a CSS tag based on the level (to display stars for instance)
* the activation of the rank display and query in the client must be configurable
!Server Implementation
!!Commits of interest
!Commits of interest
* userstats.py
** [[r4455|http://svn.gna.org/viewcvs/pokersource?rev=4455&view=rev]]
** [[r4456|http://svn.gna.org/viewcvs/pokersource?rev=4456&view=rev]]
** [[r4457|http://svn.gna.org/viewcvs/pokersource?rev=4457&view=rev]]
** [[r4458|http://svn.gna.org/viewcvs/pokersource?rev=4458&view=rev]]
** [[r4477|http://svn.gna.org/viewcvs/pokersource?rev=4477&view=rev]]
** [[r4480|http://svn.gna.org/viewcvs/pokersource?rev=4480&view=rev]]
** [[r4484|http://svn.gna.org/viewcvs/pokersource?rev=4484&view=rev]]
** [[r4488|http://svn.gna.org/viewcvs/pokersource?rev=4488&view=rev]]
** [[r4490|http://svn.gna.org/viewcvs/pokersource?rev=4490&view=rev]]
* pokerpackets.py
** [[r4478|http://svn.gna.org/viewcvs/pokersource?rev=4478&view=rev]]
** [[r4479|http://svn.gna.org/viewcvs/pokersource?rev=4479&view=rev]]
* pokerservice.py
** [[r4485|http://svn.gna.org/viewcvs/pokersource?rev=4485&view=rev]]
** [[r4487|http://svn.gna.org/viewcvs/pokersource?rev=4487&view=rev]]
** [[r4490|http://svn.gna.org/viewcvs/pokersource?rev=4490&view=rev]]
* pokertable.py, pokeravatar.py
** [[r4489|http://svn.gna.org/viewcvs/pokersource?rev=4489&view=rev]]
** [[r4490|http://svn.gna.org/viewcvs/pokersource?rev=4490&view=rev]]
!!IRC Conversations
* [[proppy and bkuhn discuss the contents of the PacketPokerStats packet and when it should be sent, starting at 14:44:37|http://pokersource.info/irc/pokersource@irc.freenode.net/2008-09-10.html]]
* [[dachary and bkuhn discuss at 22:52:56 the way the packets should work|http://pokersource.info/irc/pokersource@irc.freenode.net/2008-09-13.html]]
* [[dachary and bkuhn discuss handling of missing rank table at 21:27:15|http://pokersource.info/irc/pokersource@irc.freenode.net/2008-09-14.html]]
!!Server Work Status
Basics of UserStats objects worked out and implementation nearly complete.
!!Server Work Todo
This is basically done on the server side. PacketPokerPlayerStats is sent
after PacketPokerPlayerArrive. A few things remain:
* look at pokerclient.py -- should it do the same?
* PacketPokerStatsSupported and PacketPokerGetStatsSupported, and do we need a PacketPokerPlayerGetStats?
!!Server Next Job (bkuhn)
[[two tabs open on the same game : packets get distributed to both and its a mess]]
with current jpoker.dialog as default implementation
http://svn.gna.org/viewcvs/pokersource?rev=4934&view=rev
http://svn.gna.org/viewcvs/pokersource?rev=4520&view=rev
{{{
if(server === undefined) {
return;
}
}}}
ajouter des balises <col id="" />
pour pouvoir aligner les textes
des colonnes comme on veut
et même les faire disparaitre
(y a une petite astuce pour
que ça marche dans ff et ie, voir :
http://skyrock.com/search/songs/?q=toto)
make room in the poker table for a powered by
Most poker sites have preaction boxes, so you can plan to fold before the action gets to you, etc. jspoker should have the same.
poker-engine now has the following locales. translations for jpoker will be added soon. prepare jpoker so that it has all the necessary files, including tw for each language. Figure out a way to deal with variations of the same language (see fr_FX). bkuhn will work on it later today, the primary goal is to make it as easy as possible for him to run the tool he committed to poker-network yesterday. It means that the tw for each language should be commited separately, as if a different task.
/usr/share/locale/fr_FX/LC_MESSAGES/poker-engine.mo
/usr/share/locale/en_CA/LC_MESSAGES/poker-engine.mo
/usr/share/locale/sv/LC_MESSAGES/poker-engine.mo
/usr/share/locale/en_US/LC_MESSAGES/poker-engine.mo
/usr/share/locale/da/LC_MESSAGES/poker-engine.mo
/usr/share/locale/en/LC_MESSAGES/poker-engine.mo
/usr/share/locale/fr/LC_MESSAGES/poker-engine.mo
/usr/share/locale/fr_BE/LC_MESSAGES/poker-engine.mo
/usr/share/locale/nl/LC_MESSAGES/poker-engine.mo
/usr/share/locale/pt/LC_MESSAGES/poker-engine.mo
/usr/share/locale/de/LC_MESSAGES/poker-engine.mo
/usr/share/locale/fi/LC_MESSAGES/poker-engine.mo
/usr/share/locale/nb/LC_MESSAGES/poker-engine.mo
/usr/share/locale/es/LC_MESSAGES/poker-engine.mo
/usr/share/locale/fr_CA/LC_MESSAGES/poker-engine.mo
/usr/share/locale/it/LC_MESSAGES/poker-engine.mo
TW 2.3 translations are here: http://trac.tiddlywiki.org/wiki/Translations
sv: http://www.vizway.se/TiddlyWiki/v230_svenska.html
nl: http://www.trooijen.dds.nl/TW/
de: http://www.karadeniz.de/tiddlywiki/
it: http://pollio.maurizio.googlepages.com/MiniGuidaTiddlyWiki.html
https://gna.org/support/index.php?2177
the piece of code that prevents cycling, probably because value cannot be an index (reported with IE7 on vista)
Johan Euphrosine mailto:proppy@aminche.com
when the quit callback is called as a result of a TableMove and TableDestroy, make it so it receives the packet that triggered the call, using the uninit arguments
if the quit button in the table is clicked when the server is in a non running state, it will destroy the table, the packets won't be handled and the server will never go back to running state, blocking all other interactions
the timer shows on the wrong player, probably because of a race condition where the user serial is incorrect and therefore the calculated seat is incorrect. This was seen a while ago and will only show when playing with 4 or 5 players.
* type 1.1 in the box
* see that another amount is taken in account
the bet button always says 'raise' when it is checked to. It should say bet if there is no bet yet.
in the case where the raise is just a symbol, not the text "raise"
this is a disgrace, do something !
----
the state was not updated
(06:20:35 PM) bkuhn: when you get TourneyRank, you know you are now an observer.
(06:20:52 PM) bkuhn: and when the table gets destroyed, send them to the lobby.
(06:21:23 PM) bkuhn: On most sites I've seen.
(06:21:29 PM) bkuhn: it goes this way:
(06:21:30 PM) bkuhn: (a) you bust
(06:21:36 PM) bkuhn: (b) it leaves the table you were playing at
(06:21:47 PM) bkuhn: ... until that table is destroyed
* call a table.callback
* with default implementation: show tourneyDetails
** in order to redirect the player to tourneyDetails from tableDestroy we need to figure out which tourney belonged the table to
{{{
bkuhn: I am becoming convinced that adding tourney_serial to PacketPokerTable is maybe ok.
}}}
implement strategies to only issue a ping/poll packet when needed in jpoker
* do not poll for tournament when table is joined
** how do we know a table belong ot a tourney when receiving PacketPokerTable ?
* do not poll for finished tournament
@@the rationale for turning this feature into a RC bug is that the noise makes it very difficult to analyze bugs@@
{{{
create()()jquery.jpoker.js (line 2301)
(?)()()jquery.jpoker.js (line 2290)
each()()jquery-1.2.6.js (line 745)
each()()jquery-1.2.6.js (line 138)
table()()jquery.jpoker.js (line 2281)
jpoker()()jquery.jpoker.js (line 39)
(?)()index.html (line 3247)
invokeMacro(div.viewer, "jpokerTable", "'/REST' 100 'One'", Object source=<<jpokerTable '/REST' 100 'One'>>, Object title= Table One)index.html (line 3271)
handler()(Object source=<<jpokerTable '/REST' 100 'One'>>)index.html (line 3751)
subWikifyUnterm()(div.viewer)index.html (line 4110)
wikify("<<jpokerTable '/REST' 100 'One'>>", div.viewer, null, Object title= Table One)index.html (line 4013)
handler()(div.viewer, "view", ["text", "wikified"], null, "text wikified", Object title= Table One)index.html (line 4496)
invokeMacro(div.viewer, "view", "text wikified", null, Object title= Table One)index.html (line 3271)
applyHtmlMacros(div#tiddler Table One.tiddler, Object title= Table One)index.html (line 7665)
refreshTiddler()(" Table One", "PublicViewTemplate", false, undefined, null)index.html (line 6276)
getPluginInfo()index.html (line 3227)
createTiddler()(div#tiddlerDisplay, null, " Table One", 1, undefined)index.html (line 6184)
displayTiddler()(null, " Table One", 1, undefined, undefined, undefined, undefined)index.html (line 6138)
invokeParamifier()index.html (line 3337)
getPluginInfo()index.html (line 3232)
handler()(Object playersCount=1 tablesCount=40 mode=queue url=/REST, "0", Object observers=0 name=One percent_flop=0 average_pot=0)jquery.jpoker.js (line 912)
wrapper()()jquery.jpoker.js (line 452)
notify()("0", Object observers=0 name=One percent_flop=0 average_pot=0)jquery.jpoker.js (line 423)
handle()("0", Object observers=0 name=One percent_flop=0 average_pot=0)jquery.jpoker.js (line 637)
dequeueIncoming()()jquery.jpoker.js (line 774)
(?)()()jquery.jpoker.js (line 750)
}}}
{{{
create()()jquery.jpoker.js (line 2301)
reinit()()jquery.jpoker.js (line 2481)
wrapper()()jquery.jpoker.js (line 452)
notify()()jquery.jpoker.js (line 423)
notifyReinit()()jquery.jpoker.js (line 438)
reinit()()jquery.jpoker.js (line 1361)
handler()()jquery.jpoker.js (line 906)
wrapper()()jquery.jpoker.js (line 452)
notify()()jquery.jpoker.js (line 423)
handle()()jquery.jpoker.js (line 637)
dequeueIncoming()()jquery.jpoker.js (line 774)
(?)()()jquery.jpoker.js (line 750)
}}}
this make html and stylesheet hard to debug using firebug
maybe using a javascript templates system could help
* http://beebole.com/pure/
* http://embeddedjs.com/
http://jpoker.aminche.com/hg/jpoker/rev/2446e0f90789
because changing the type of a field is not supported in IE
jpokerSound player_arrive get called twice
only happen when refreshing
http://jpoker.aminche.com/hg/jpoker/rev/d86fe0ee481a
http://jpoker.aminche.com/hg/jpoker/rev/978e01a50f12
http://jpoker.aminche.com/hg/jpoker/rev/dff02e4583b5
http://jpoker.aminche.com/hg/jpoker/rev/8999eb9cf061
http://jpoker.aminche.com/hg/jpoker/rev/153e23e5580f
(16:10:57) dachary: this.tourney_rank = undefined;
(16:11:01) dachary: should be
(16:11:07) dachary: this.tourneyRank = undefined;
(16:11:19) dachary: it's inconsistent with the naming conventions
(16:11:20) dachary: :-)
run http://jspoker.pokersource.info/skin/test-jpoker.html on safari 3.1.2 and see the "has next page" test fail
may be due to a race condition, with closure variable and async ajax call
Saq Imtiaz mailto:lewcid@gmail.com
http://proppy.aminche.com/muck.png
As of r4379, poker-network can send localized strings to "dumb" clients so that explain packet messages come across in the correct language.
jpoker should test out this feature. Send the PokerPacketSetLocale with locale = "fr_FR.UTF-8" as a good test case. See [[the earthquake locale change feature change area|http://pokersource.info/developers/specifications/earthquake.html#%5B%5Blocale%20change%5D%5D]] for more information.
. tourney do not register a route as they should
. resthost entry for a given host must not be deleted when killing the server to avoid serial changing
{{{
Traceback (most recent call last):
File "/usr/lib/python2.5/site-packages/twisted/internet/defer.py", line 186, in addCallbacks
self._runCallbacks()
File "/usr/lib/python2.5/site-packages/twisted/internet/defer.py", line 328, in _runCallbacks
self.result = callback(self.result, *args, **kw)
File "/usr/lib/python2.5/site-packages/pokernetwork/pokersite.py", line 210, in <lambda>
self.deferred.addCallback(lambda result: self.deferRender(request, jsonp, packet))
File "/usr/lib/python2.5/site-packages/pokernetwork/pokersite.py", line 221, in deferRender
d = defer.maybeDeferred(session.avatar.handlePacketDefer, packet)
--- <exception caught here> ---
File "/usr/lib/python2.5/site-packages/twisted/internet/defer.py", line 106, in maybeDeferred
result = f(*args, **kw)
File "/usr/lib/python2.5/site-packages/pokernetwork/pokeravatar.py", line 321, in handlePacketDefer
self.handlePacketLogic(packet)
File "/usr/lib/python2.5/site-packages/pokernetwork/pokeravatar.py", line 502, in handlePacketLogic
self.sendPacketVerbose(self.service.tourneyManager(packet.tourney_serial))
File "/usr/lib/python2.5/site-packages/pokernetwork/pokerservice.py", line 949, in tourneyManager
user2properties[str(user_serial)] = {"name": user2name[user_serial],
exceptions.KeyError: 14L
}}}
db is not coherent: user_serial @@14@@ from user2tourney is missing from table users
{{{
mysql> select serial from users;
+--------+
| serial |
+--------+
| 1 |
| 2 |
| 3 |
| 9 |
| 25 |
| 26 |
| 27 |
| 28 |
| 29 |
+--------+
9 rows in set (0.00 sec)
mysql> select user_serial from user2tourney;
+-------------+
| user_serial |
+-------------+
| 14 |
| 9 |
+-------------+
2 rows in set (0.00 sec)
}}}
Fixed : bots were not removed from user2tourney when they were discarded from the database.
http://jpoker.aminche.com/hg/jpoker/rev/983d8ac069dd
needs to be reproduced but the fact that setLocale is only called on login indicates that a page reload won't do what's expected
and it must set game_id: game_id in the SetLocale packet so that it is routed to the appropriate server when there is a proxy frontend. The server has been fixed accordingly (using PacketPokerId instead of PacketSerial to derive PokerAvatar).
* show the tourney start date in the tourneyDetail of completed tournaments
* show the tourney buy in in the tourneyDetail of registering tournaments
* show the total number of players registered to a tournament in tourneyDetail (all)
* show the tourney description in the title of the tourneyDetail
* show the prize pool in SNG tournament details registering because fixed number of players
the showdown disapears too quickly
see jpoker_55_allWithSidePot on http://jspoker.pokersource.info/skin/skin.html
instead they are emptied and this does not play well with skinning.
In addition
var sidepot_element = $('#player_seat' + seat + '_sidepot' + id).removeClass().addClass('jpoker_player_sidepot jpoker_ptable_player_seat' + seat + '_sidepot');
is
Should use hide/show instead
{{{
$('#player_seat' + player.seat + '_sidepot' + id).html(html);
} else {
$('#player_seat' + player.seat + '_sidepot' + id).html('');
}}}
* if http://www.schillmania.com/projects/soundmanager2/ support simultaneous sound, switch to soundmanager
* adding a jpokerSound element by player could also be an option
Upon clicking "Click here to get a seat" sometimes nothing happens forever, sometimes there is a large
delay. Good idea to display a wait animation to avoid frustrating the user. Also timeout and throw an error
if the server is not responding at all.
server always return registered: 0
regression introduced with:
http://svn.gna.org/viewcvs/pokersource?rev=4323&view=rev
delay due to waiting for the server to acknowledge the sitin
must show sitin button : already on jpoker_05
side + pots : http://upstream.jspoker.pokersource.info/rev/98593a7cd867
text in chat areas : http://upstream.jspoker.pokersource.info/rev/29a6eb1559bc
* tourney list
* the buyin dialog never shows anywhere
sometimes when clicking show cards, the cards are not shown enought time for the opponent to notice
sometime the muck buttons disappear so fast we don't have a chance to click them
Even if seated at the table the server return players:0
{{{
2008-09-11 09:16:30+0000 [HTTPChannel,1,127.0.0.1] id = 721, name = One, variant = holdem, betting_structure = 2-4-limit, seats = 10, average_pot = 0, hands_per_hour = 0, percent_flop = 0, players = 0, observers = 0, waiting = 0, player_timeout = 60, muck_timeout = 5, currency_serial = 1, skin = default type = POKER_TABLE(73)
}}}
{{{
mysql> select name,serial,players from pokertables where name = 'One';
+------+--------+---------+
| name | serial | players |
+------+--------+---------+
| One | 721 | 0 |
+------+--------+---------+
1 row in set (0.00 sec)
mysql> select * from user2table;
+-------------+--------------+-------+-----+
| user_serial | table_serial | money | bet |
+-------------+--------------+-------+-----+
| 4 | 721 | 6000 | 0 |
+-------------+--------------+-------+-----+
1 row in set (0.00 sec)
}}}
pokertables table is updated by pokerservice.updateTableStats.
{{{
def updateTableStats(self, game, observers, waiting):
cursor = self.db.cursor()
cursor.execute("UPDATE pokertables SET " +
" average_pot = %s, " +
" hands_per_hour = %s, " +
" percent_flop = %s, " +
" players = %s, " +
" observers = %s, " +
" waiting = %s " +
" WHERE serial = %s ", (
game.stats['average_pot'],
game.stats['hands_per_hour'],
game.stats['percent_flop'],
game.allCount(),
observers,
waiting,
game.id
))
cursor.close()
}}}
Which is called at the end of the hand in pokertable.syncDatabase.
{{{
elif type == "finish":
(type, hand_serial) = event
self.factory.saveHand(self.compressedHistory(game.historyGet()), hand_serial)
self.factory.updateTableStats(game, len(self.observers), len(self.waiting))
}}}
Therefore if a player is sitting alone at the table, (not playing) waiting for another player to play with, pokertables table will still shows players = 0
After playing a hand, pokertables is updated:
{{{
mysql> select name,serial,players from pokertables where name = 'One';
+------+--------+---------+
| name | serial | players |
+------+--------+---------+
| One | 721 | 2 |
+------+--------+---------+
1 row in set (0.00 sec)
}}}
in pokertable.py the def seatPlayer must update the pokertables accordingly (call udpateTableStats).
in pokertable.py the def leavePlayer must call updateTableStats if removeplayer returns true (otherwise the stats will be updated at the end of the hand)
in pokertable.py the def kick/disconnect/quitPlayer must call updateTableStats if removeplayer returns true (otherwise the stats will be updated at the end of the hand)
{{{
mysql> select name, serial, players from pokertables;
+-----------+--------+---------+
| name | serial | players |
+-----------+--------+---------+
| One | 826 | 2 |
| Two | 827 | 0 |
| Three | 828 | 0 |
| Four | 829 | 1 |
| Antigua | 830 | 0 |
| Cairo | 831 | 0 |
| Mont | 832 | 0 |
| Nancy | 833 | 0 |
| Corail | 834 | 0 |
| Legend | 835 | 0 |
| Chip | 836 | 0 |
| Relax | 837 | 0 |
| Speed | 838 | 0 |
| Un | 839 | 0 |
| Deux | 840 | 0 |
| Trois | 841 | 0 |
| Quatre | 842 | 0 |
| Five | 843 | 0 |
| Six | 844 | 0 |
| Seven | 845 | 0 |
| Eight | 846 | 0 |
| Nine | 847 | 0 |
| Ten | 848 | 0 |
| Eleven | 849 | 0 |
| Twelve | 850 | 0 |
| Thirty | 851 | 0 |
| Fourty | 852 | 0 |
| Lyearnys | 853 | 0 |
| Ingwskel | 854 | 0 |
| Cerrt | 855 | 0 |
| Therrd | 856 | 0 |
| Issgar | 857 | 0 |
| Torray | 858 | 0 |
| Uskeluina | 859 | 0 |
| Oilde | 860 | 0 |
| Cheper | 861 | 0 |
| Syfar | 862 | 0 |
| Rhoine | 863 | 0 |
| Mosolor | 864 | 0 |
| Cayrryns | 865 | 0 |
| sitngo42 | 867 | 2 |
+-----------+--------+---------+
41 rows in set (0.00 sec)
mysql> select * from user2table;
+-------------+--------------+--------+-----+
| user_serial | table_serial | money | bet |
+-------------+--------------+--------+-----+
| 43 | 867 | 398500 | 0 |
| 52 | 867 | 397000 | 0 |
+-------------+--------------+--------+-----+
2 rows in set (0.00 sec)
}}}
and we don't see any table action
sitout/sitin is a workaround
fixed by bug fixing the later tourney arrival problem
* common
* avatar
* stats
* sidepot
* poweredby
* last action
instead of hardcoded 800x800
as per [[specifications|specs/jstable.html]]
{{{
(03:16:32 PM) proppy: rikeko: ckudige: carmie was suggesting that we put cellspacing, cellpadding = 0 by default in all html table template of jpoker, do you have any thought regarding this ?
(03:16:56 PM) ckudige: yeah I usually prefer to do that
(03:18:08 PM) ckudige: proppy: in my opinion cellspacing does not server serve much purpose except for borders, and it could be better achieved by TD borders
(03:18:46 PM) ckudige: as for cellpadding - you can always override it in CSS
}}}
with name of the table, percent flop, big blind amount and level in case of a tourney
and sorted by default:
{{{
bkuhn: here's the algorithm:
bkuhn: (a) First sort criteria: stakes
bkuhn: (b) second sort criteria: { empty, heads-up, very-short-handed, short-handed, full-ring }
bkuhn: where empty == 0
bkuhn: heads-up == 1
bkuhn: very-short-handed == 2-3
bkuhn: short-handed == 4-6
bkuhn: full-ring == 7-10
bkuhn: MAYBE you could also separate out the 10's as "no-seats-avaiable"
}}}
. modify jpoker.plugins.tableList.template.pager to show value="30" instead of value="10"
. display the table list
. only 10 rows are shown
. inspect the elements and see that value="30" is set in the DOM
. click on the first page link and see that 30 rows are shown
* make an additional template for empty table
if var element = document.getElementById(id); is undefined update callback is killed, but not the refresh loop
must be due to tablesorterpager, being called before attaching .click() handler
http://jpoker.aminche.com/hg/jpoker/rev/995afb3c08bd
it is now part of the template. Just let me know which link you want to have.
to prevent the tourney from running too fast
(04:09:49 PM) dachary: proppy: the Rank must only show if running or complete, not when registering, announced or canceled
(04:10:14 PM) proppy: dachary: is there rank when running ?
(04:10:32 PM) dachary: proppy: yes, when a player is kicked out of the tournament.
Starting from http://jspoker.pokersource.info/specs/tiddlypoker.html write specifications suitable for a RAC job with deliverables similar to https://www.rentacoder.com/RentACoder/misc/BidRequests/ShowBidRequest.asp?lngBidRequestId=877722&txtForceRefresh=392008931211450
The specs must contain all that is required from jpoker to implement the behaviour loosely described in the implementation section. The jpoker API dependency is the primary goal, the RAC description is secondary. The specification must detail what is needed from jpoker in order to implement the tw integration. This behaviour must be refined with the people at irc.freenode.net#pokersource. This work is fuzzy by nature. Best effort is required but the quality of the deliverable is left to the judgement of the implementor.
# Write a TiddlyWiki plugin that uses the jQuery javascript library and the plugin jPoker to display a list of poker tables, nicely formatted as a HTML table.
# Provide unit tests for all code written
# Use JsCoverage to demonstrate 100% code coverage for the unit tests
http://www.tiddlywiki.com/
http://jquery.com/plugins/project/jpoker
[[RAC job|https://www.rentacoder.com/RentACoder/misc/BidRequests/ShowBidRequest.asp?lngBidRequestId=877722&txtForceRefresh=392008931211450]]
[[Deliverable|http://jspoker.pokersource.info/jPoker-saqimtiaz-2008-03-08/]]
[[Demo|http://jspoker.pokersource.info/jPoker-saqimtiaz-2008-03-08/poker.html]]
[[Tests coverage|http://jspoker.pokersource.info/jPoker-saqimtiaz-2008-03-08/tests/jscoverage.html?test.html]]
A is dealer
B is not dealer
B raise
A reraise
B call (timeout bar decrease)
B is in position (timeout bar not reset)
The table tournament break do not work this way.
(12:47:39) ckudige: the sequence is this:
(12:47:42) ckudige: table 66 finished
(12:47:48) ckudige: table 67 continued for a while
(12:47:56) ckudige: and then table 67 hanged
(15:08:04) ckudige: proppy: I think I have figured out the bug, but I am not that familiar with pokerengine
(15:08:31) ckudige: basically at the end of the turn, if the tourney goes on break, it waits for all other tables to finish their turns too
(15:08:37) proppy: yep
(15:08:38) ckudige: until then it will be in breakwait
(15:08:49) ckudige: but if a table is finished, it doesnt process breaks :)
(15:08:57) ckudige: so the other tables just wait indefinitely
* login
* click tourney sng list
* click on a tourney
* register
* unregister
* click tourney sng list
* click on the same tourney
* the list of players has an empty line
* repeat the operation and a new empty line is added every time
* login
* go to tourney list
* click on a tourney in the state registering
* a notify update recursion occurs
{{{
....loading....
Firebug's log limit has been reached. %S entries not shown. Preferences
The profiler is running. Click 'Profile' again to see its report.
setState running reset
setState running reset
setState getting personal info undefined
sendPacket {"type":"PacketPokerGetPersonalInfo","serial":42}
server.handler {"rating":1000,"firstname":"John","money":{},"addr_street":"8","phone":"000-00000","cookie":"","serial":42,"password":"","addr_country":"Yours","name":"testuser","gender":"Male","birthdate":"01/01/1970","addr_street2":"Main street","addr_zip":"5000","affiliate":0,"lastname":"Doe","addr_town":"GhostTown","addr_state":"Alabama","type":"PacketPokerPersonalInfo","email":"john@doe.com","uid__":"jpoker1223287551672"}
setState running PacketPokerPersonalInfo
setState running reset
setState running reset
setState running reset
setState running reset
1000 x 6
Firebug's log limit has been reached. %S entries not shown. Preferences
Firebug's log limit has been reached. %S entries not shown. Preferences
setState running reset
setState trying to reconnect undefined
sendPacket {"type":"PacketPokerGetPlayerInfo"}
POST http://127.0.0.1/POKER_REST?name=33709A7BAC22083C22659129347E4F1D7BDA9230
http://127.0.0.1/POKER_REST?name=33709A7BAC22083C22659129347E4F1D7BDA9230
213ms jquery-1.2.6.js (line 2806)
queueIncoming {"message":"Not logged in","code":1,"type":"PacketError","other_type":123,"time__":1223288939759}
connection handle 0: {"message":"Not logged in","code":1,"type":"PacketError","other_type":123,"time__":1223288939759}
server.handler {"message":"Not logged in","code":1,"type":"PacketError","other_type":123,"uid__":"jpoker1223288938088"}
setState running PacketError reconnect
setState searching tables undefined
sendPacket {"type":"PacketPokerTableSelect","string":"my"}
POST http://127.0.0.1/POKER_REST?name=33709A7BAC22083C22659129347E4F1D7BDA9230
http://127.0.0.1/POKER_REST?name=33709A7BAC22083C22659129347E4F1D7BDA9230
19ms jquery-1.2.6.js (line 2806)
queueIncoming {"players":0,"type":"PacketPokerTableList","packets":[],"tables":40,"time__":1223288939919}
connection handle 0: {"players":0,"type":"PacketPokerTableList","packets":[],"tables":40,"time__":1223288939919}
server.handler {"players":0,"type":"PacketPokerTableList","packets":[],"tables":40,"uid__":"jpoker1223288938089"}
setState running PacketPokerTableList
setState searching tables undefined
sendPacket {"type":"PacketPokerTableSelect","string":""}
POST http://127.0.0.1/POKER_REST?name=33709A7BAC22083C22659129347E4F1D7BDA9230
http://127.0.0.1/POKER_REST?name=33709A7BAC22083C22659129347E4F1D7BDA9230
83ms jquery-1.2.6.js (line 2806)
queueIncoming {"players":0,"type":"PacketPokerTableList","packets":[{"observers":0,"name":"One","percent_flop":0,"average_pot":0,"skin":"default","variant":"holdem","hands_per_hour":0,"betting_structure":"2-4-limit","currency_serial":1,"muck_timeout":5,"players":0,"waiting":0,"tourney_serial":0,"seats":10,"player_timeout":60,"type":"PacketPokerTable","id":846},{"observers":0,"name":"Two","percent_flop":0,"average_pot":0,"skin":"default","variant":"holdem","hands_per_hour":0,"betting_structure":"10-20-limit","currency_serial":1,"muck_timeout":5,"players":0,"waiting":0,"tourney_serial":0,"seats":10,"player_timeout":60,"type":"PacketPokerTable","id":847},{"observers":0,"name":"Three","percent_flop":0,"average_pot":0,"skin":"default","variant":"holdem","hands_per_hour":0,"betting_structure":"10-20-pot-limit","currency_serial":1,"muck_timeout":5,"players":0,"waiting":0,"tourney_serial":0,"seats":10,"player_timeout":60,"type":"PacketPokerTable","id":848},{"observers":0,"name":"Four","percent_flop":0,"average_pot":0,"skin":"default","variant":"holdem","hands_per_hour":0,"betting_structure":"100-200-no-limit","currency_serial":1,"muck_timeout":5,"players":0,"waiting":0,"tourney_serial":0,"seats":10,"player_timeout":60,"type":"PacketPokerTable","id":849},{"observers":0,"name":"Antigua","percent_flop":0,"average_pot":0,"skin":"default","variant":"holdem","hands_per_hour":0,"betting_structure":"100-200-no-limit","currency_serial":1,"muck_timeout":5,"players":0,"waiting":0,"tourney_serial":0,"seats":10,"player_timeout":60,"type":"PacketPokerTable","id":850},{"observers":0,"name":"Cairo","percent_flop":0,"average_pot":0,"skin":"default","variant":"holdem","hands_per_hour":0,"betting_structure":"100-200-no-limit","currency_serial":1,"muck_timeout":5,"players":0,"waiting":0,"tourney_serial":0,"seats":10,"player_timeout":60,"type":"PacketPokerTable","id":851},{"observers":0,"name":"Mont","percent_flop":0,"average_pot":0,"skin":"default","variant":"holdem","hands_per_hour":0,"betting_structure":"100-200-no-limit","currency_serial":1,"muck_timeout":5,"players":0,"waiting":0,"tourney_serial":0,"seats":10,"player_timeout":60,"type":"PacketPokerTable","id":852},{"observers":0,"name":"Nancy","percent_flop":0,"average_pot":0,"skin":"default","variant":"holdem","hands_per_hour":0,"betting_structure":"100-200-no-limit","currency_serial":1,"muck_timeout":5,"players":0,"waiting":0,"tourney_serial":0,"seats":10,"player_timeout":60,"type":"PacketPokerTable","id":853},{"observers":0,"name":"Corail","percent_flop":0,"average_pot":0,"skin":"default","variant":"holdem","hands_per_hour":0,"betting_structure":"100-200-no-limit","currency_serial":1,"muck_timeout":5,"players":0,"waiting":0,"tourney_serial":0,"seats":10,"player_timeout":60,"type":"PacketPokerTable","id":854},{"observers":0,"name":"Legend","percent_flop":0,"average_pot":0,"skin":"default","variant":"holdem","hands_per_hour":0,"betting_structure":"100-200-no-limit","currency_serial":1,"muck_timeout":5,"players":0,"waiting":0,"tourney_serial":0,"seats":10,"player_timeout":60,"type":"PacketPokerTable","id":855},{"observers":0,"name":"Chip","percent_flop":0,"average_pot":0,"skin":"default","variant":"holdem","hands_per_hour":0,"betting_structure":"100-200-no-limit","currency_serial":1,"muck_timeout":5,"players":0,"waiting":0,"tourney_serial":0,"seats":10,"player_timeout":60,"type":"PacketPokerTable","id":856},{"observers":0,"name":"Relax","percent_flop":0,"average_pot":0,"skin":"default","variant":"holdem","hands_per_hour":0,"betting_structure":"100-200-no-limit","currency_serial":1,"muck_timeout":5,"players":0,"waiting":0,"tourney_serial":0,"seats":10,"player_timeout":60,"type":"PacketPokerTable","id":857},{"observers":0,"name":"Speed","percent_flop":0,"average_pot":0,"skin":"default","variant":"holdem","hands_per_hour":0,"betting_structure":"100-200-no-limit","currency_serial":1,"muck_timeout":5,"players":0,"waiting":0,"tourney_serial":0,"seats":10,"player_timeout":60,"type":"PacketPokerTable","id":858},{"observers":0,"name":"Un","percent_flop":0,"average_pot":0,"skin":"default","variant":"holdem","hands_per_hour":0,"betting_structure":"2-4-limit","currency_serial":1,"muck_timeout":5,"players":0,"waiting":0,"tourney_serial":0,"seats":10,"player_timeout":60,"type":"PacketPokerTable","id":859},{"observers":0,"name":"Deux","percent_flop":0,"average_pot":0,"skin":"default","variant":"holdem","hands_per_hour":0,"betting_structure":"10-20-limit","currency_serial":1,"muck_timeout":5,"players":0,"waiting":0,"tourney_serial":0,"seats":10,"player_timeout":60,"type":"PacketPokerTable","id":860},{"observers":0,"name":"Trois","percent_flop":0,"average_pot":0,"skin":"default","variant":"holdem","hands_per_hour":0,"betting_structure":"10-20-pot-limit","currency_serial":1,"muck_timeout":5,"players":0,"waiting":0,"tourney_serial":0,"seats":10,"player_timeout":60,"type":"PacketPokerTable","id":861},{"observers":0,"name":"Quatre","percent_flop":0,"average_pot":0,"skin":"default","variant":"holdem","hands_per_hour":0,"betting_structure":"100-200-no-limit","currency_serial":1,"muck_timeout":5,"players":0,"waiting":0,"tourney_serial":0,"seats":10,"player_timeout":60,"type":"PacketPokerTable","id":862},{"observers":0,"name":"Five","percent_flop":0,"average_pot":0,"skin":"default","variant":"omaha","hands_per_hour":0,"betting_structure":"2-4-limit","currency_serial":1,"muck_timeout":5,"players":0,"waiting":0,"tourney_serial":0,"seats":10,"player_timeout":60,"type":"PacketPokerTable","id":863},{"observers":0,"name":"Six","percent_flop":0,"average_pot":0,"skin":"default","variant":"omaha","hands_per_hour":0,"betting_structure":"10-20-limit","currency_serial":1,"muck_timeout":5,"players":0,"waiting":0,"tourney_serial":0,"seats":10,"player_timeout":60,"type":"PacketPokerTable","id":864},{"observers":0,"name":"Seven","percent_flop":0,"average_pot":0,"skin":"default","variant":"omaha","hands_per_hour":0,"betting_structure":"10-20-pot-limit","currency_serial":1,"muck_timeout":5,"players":0,"waiting":0,"tourney_serial":0,"seats":10,"player_timeout":60,"type":"PacketPokerTable","id":865},{"observers":0,"name":"Eight","percent_flop":0,"average_pot":0,"skin":"default","variant":"omaha","hands_per_hour":0,"betting_structure":"100-200-no-limit","currency_serial":1,"muck_timeout":5,"players":0,"waiting":0,"tourney_serial":0,"seats":10,"player_timeout":60,"type":"PacketPokerTable","id":866},{"observers":0,"name":"Nine","percent_flop":0,"average_pot":0,"skin":"default","variant":"omaha8","hands_per_hour":0,"betting_structure":"2-4-limit","currency_serial":1,"muck_timeout":5,"players":0,"waiting":0,"tourney_serial":0,"seats":10,"player_timeout":60,"type":"PacketPokerTable","id":867},{"observers":0,"name":"Ten","percent_flop":0,"average_pot":0,"skin":"default","variant":"omaha8","hands_per_hour":0,"betting_structure":"10-20-limit","currency_serial":1,"muck_timeout":5,"players":0,"waiting":0,"tourney_serial":0,"seats":10,"player_timeout":60,"type":"PacketPokerTable","id":868},{"observers":0,"name":"Eleven","percent_flop":0,"average_pot":0,"skin":"default","variant":"omaha8","hands_per_hour":0,"betting_structure":"10-20-pot-limit","currency_serial":1,"muck_timeout":5,"players":0,"waiting":0,"tourney_serial":0,"seats":10,"player_timeout":60,"type":"PacketPokerTable","id":869},{"observers":0,"name":"Twelve","percent_flop":0,"average_pot":0,"skin":"default","variant":"omaha8","hands_per_hour":0,"betting_structure":"100-200-no-limit","currency_serial":1,"muck_timeout":5,"players":0,"waiting":0,"tourney_serial":0,"seats":10,"player_timeout":60,"type":"PacketPokerTable","id":870},{"observers":0,"name":"Thirty","percent_flop":0,"average_pot":0,"skin":"default","variant":"7stud","hands_per_hour":0,"betting_structure":"ante-10-20-limit","currency_serial":1,"muck_timeout":5,"players":0,"waiting":0,"tourney_serial":0,"seats":8,"player_timeout":60,"type":"PacketPokerTable","id":871},{"observers":0,"name":"Fourty","percent_flop":0,"average_pot":0,"skin":"default","variant":"7stud","hands_per_hour":0,"betting_structure":"ante-5-10-limit","currency_serial":1,"muck_timeout":5,"players":0,"waiting":0,"tourney_serial":0,"seats":8,"player_timeout":60,"type":"PacketPokerTable","id":872},{"observers":0,"name":"Lyearnys","percent_flop":0,"average_pot":0,"skin":"default","variant":"holdem","hands_per_hour":0,"betting_structure":".02-.04-no-limit","currency_serial":1,"muck_timeout":5,"players":0,"waiting":0,"tourney_serial":0,"seats":10,"player_timeout":60,"type":"PacketPokerTable","id":873},{"observers":0,"name":"Ingwskel","percent_flop":0,"average_pot":0,"skin":"default","variant":"holdem","hands_per_hour":0,"betting_structure":".05-.10-no-limit","currency_serial":1,"muck_timeout":5,"players":0,"waiting":0,"tourney_serial":0,"seats":10,"player_timeout":60,"type":"PacketPokerTable","id":874},{"observers":0,"name":"Cerrt","percent_flop":0,"average_pot":0,"skin":"default","variant":"holdem","hands_per_hour":0,"betting_structure":".10-.25-no-limit","currency_serial":1,"muck_timeout":5,"players":0,"waiting":0,"tourney_serial":0,"seats":10,"player_timeout":60,"type":"PacketPokerTable","id":875},{"observers":0,"name":"Therrd","percent_flop":0,"average_pot":0,"skin":"default","variant":"holdem","hands_per_hour":0,"betting_structure":".25-.50-no-limit","currency_serial":1,"muck_timeout":5,"players":0,"waiting":0,"tourney_serial":0,"seats":10,"player_timeout":60,"type":"PacketPokerTable","id":876},{"observers":0,"name":"Issgar","percent_flop":0,"average_pot":0,"skin":"default","variant":"holdem","hands_per_hour":0,"betting_structure":".50-1-no-limit","currency_serial":1,"muck_timeout":5,"players":0,"waiting":0,"tourney_serial":0,"seats":10,"player_timeout":60,"type":"PacketPokerTable","id":877},{"observers":0,"name":"Torray","percent_flop":0,"average_pot":0,"skin":"default","variant":"holdem","hands_per_hour":0,"betting_structure":"1-2-no-limit","currency_serial":1,"muck_timeout":5,"players":0,"waiting":0,"tourney_serial":0,"seats":10,"player_timeout":60,"type":"PacketPokerTable","id":878},{"observers":0,"name":"Uskeluina","percent_flop":0,"average_pot":0,"skin":"default","variant":"holdem","hands_per_hour":0,"betting_structure":"2-4-no-limit","currency_serial":1,"muck_timeout":5,"players":0,"waiting":0,"tourney_serial":0,"seats":10,"player_timeout":60,"type":"PacketPokerTable","id":879},{"observers":0,"name":"Oilde","percent_flop":0,"average_pot":0,"skin":"default","variant":"holdem","hands_per_hour":0,"betting_structure":"3-6-no-limit","currency_serial":1,"muck_timeout":5,"players":0,"waiting":0,"tourney_serial":0,"seats":10,"player_timeout":60,"type":"PacketPokerTable","id":880},{"observers":0,"name":"Cheper","percent_flop":0,"average_pot":0,"skin":"default","variant":"holdem","hands_per_hour":0,"betting_structure":"5-10-no-limit","currency_serial":1,"muck_timeout":5,"players":0,"waiting":0,"tourney_serial":0,"seats":10,"player_timeout":60,"type":"PacketPokerTable","id":881},{"observers":0,"name":"Syfar","percent_flop":0,"average_pot":0,"skin":"default","variant":"holdem","hands_per_hour":0,"betting_structure":"10-20-no-limit","currency_serial":1,"muck_timeout":5,"players":0,"waiting":0,"tourney_serial":0,"seats":10,"player_timeout":60,"type":"PacketPokerTable","id":882},{"observers":0,"name":"Rhoine","percent_flop":0,"average_pot":0,"skin":"default","variant":"holdem","hands_per_hour":0,"betting_structure":"30-60-no-limit","currency_serial":1,"muck_timeout":5,"players":0,"waiting":0,"tourney_serial":0,"seats":10,"player_timeout":60,"type":"PacketPokerTable","id":883},{"observers":0,"name":"Mosolor","percent_flop":0,"average_pot":0,"skin":"default","variant":"holdem","hands_per_hour":0,"betting_structure":"50-100-no-limit","currency_serial":1,"muck_timeout":5,"players":0,"waiting":0,"tourney_serial":0,"seats":10,"player_timeout":60,"type":"PacketPokerTable","id":884},{"observers":0,"name":"Cayrryns","percent_flop":0,"average_pot":0,"skin":"default","variant":"holdem","hands_per_hour":0,"betting_structure":"100-200-no-limit","currency_serial":1,"muck_timeout":5,"players":0,"waiting":0,"tourney_serial":0,"seats":10,"player_timeout":60,"type":"PacketPokerTable","id":885}],"tables":40,"time__":1223288940292}
connection handle 0: {"players":0,"type":"PacketPokerTableList","packets":[{"observers":0,"name":"One","percent_flop":0,"average_pot":0,"skin":"default","variant":"holdem","hands_per_hour":0,"betting_structure":"2-4-limit","currency_serial":1,"muck_timeout":5,"players":0,"waiting":0,"tourney_serial":0,"seats":10,"player_timeout":60,"type":"PacketPokerTable","id":846},{"observers":0,"name":"Two","percent_flop":0,"average_pot":0,"skin":"default","variant":"holdem","hands_per_hour":0,"betting_structure":"10-20-limit","currency_serial":1,"muck_timeout":5,"players":0,"waiting":0,"tourney_serial":0,"seats":10,"player_timeout":60,"type":"PacketPokerTable","id":847},{"observers":0,"name":"Three","percent_flop":0,"average_pot":0,"skin":"default","variant":"holdem","hands_per_hour":0,"betting_structure":"10-20-pot-limit","currency_serial":1,"muck_timeout":5,"players":0,"waiting":0,"tourney_serial":0,"seats":10,"player_timeout":60,"type":"PacketPokerTable","id":848},{"observers":0,"name":"Four","percent_flop":0,"average_pot":0,"skin":"default","variant":"holdem","hands_per_hour":0,"betting_structure":"100-200-no-limit","currency_serial":1,"muck_timeout":5,"players":0,"waiting":0,"tourney_serial":0,"seats":10,"player_timeout":60,"type":"PacketPokerTable","id":849},{"observers":0,"name":"Antigua","percent_flop":0,"average_pot":0,"skin":"default","variant":"holdem","hands_per_hour":0,"betting_structure":"100-200-no-limit","currency_serial":1,"muck_timeout":5,"players":0,"waiting":0,"tourney_serial":0,"seats":10,"player_timeout":60,"type":"PacketPokerTable","id":850},{"observers":0,"name":"Cairo","percent_flop":0,"average_pot":0,"skin":"default","variant":"holdem","hands_per_hour":0,"betting_structure":"100-200-no-limit","currency_serial":1,"muck_timeout":5,"players":0,"waiting":0,"tourney_serial":0,"seats":10,"player_timeout":60,"type":"PacketPokerTable","id":851},{"observers":0,"name":"Mont","percent_flop":0,"average_pot":0,"skin":"default","variant":"holdem","hands_per_hour":0,"betting_structure":"100-200-no-limit","currency_serial":1,"muck_timeout":5,"players":0,"waiting":0,"tourney_serial":0,"seats":10,"player_timeout":60,"type":"PacketPokerTable","id":852},{"observers":0,"name":"Nancy","percent_flop":0,"average_pot":0,"skin":"default","variant":"holdem","hands_per_hour":0,"betting_structure":"100-200-no-limit","currency_serial":1,"muck_timeout":5,"players":0,"waiting":0,"tourney_serial":0,"seats":10,"player_timeout":60,"type":"PacketPokerTable","id":853},{"observers":0,"name":"Corail","percent_flop":0,"average_pot":0,"skin":"default","variant":"holdem","hands_per_hour":0,"betting_structure":"100-200-no-limit","currency_serial":1,"muck_timeout":5,"players":0,"waiting":0,"tourney_serial":0,"seats":10,"player_timeout":60,"type":"PacketPokerTable","id":854},{"observers":0,"name":"Legend","percent_flop":0,"average_pot":0,"skin":"default","variant":"holdem","hands_per_hour":0,"betting_structure":"100-200-no-limit","currency_serial":1,"muck_timeout":5,"players":0,"waiting":0,"tourney_serial":0,"seats":10,"player_timeout":60,"type":"PacketPokerTable","id":855},{"observers":0,"name":"Chip","percent_flop":0,"average_pot":0,"skin":"default","variant":"holdem","hands_per_hour":0,"betting_structure":"100-200-no-limit","currency_serial":1,"muck_timeout":5,"players":0,"waiting":0,"tourney_serial":0,"seats":10,"player_timeout":60,"type":"PacketPokerTable","id":856},{"observers":0,"name":"Relax","percent_flop":0,"average_pot":0,"skin":"default","variant":"holdem","hands_per_hour":0,"betting_structure":"100-200-no-limit","currency_serial":1,"muck_timeout":5,"players":0,"waiting":0,"tourney_serial":0,"seats":10,"player_timeout":60,"type":"PacketPokerTable","id":857},{"observers":0,"name":"Speed","percent_flop":0,"average_pot":0,"skin":"default","variant":"holdem","hands_per_hour":0,"betting_structure":"100-200-no-limit","currency_serial":1,"muck_timeout":5,"players":0,"waiting":0,"tourney_serial":0,"seats":10,"player_timeout":60,"type":"PacketPokerTable","id":858},{"observers":0,"name":"Un","percent_flop":0,"average_pot":0,"skin":"default","variant":"holdem","hands_per_hour":0,"betting_structure":"2-4-limit","currency_serial":1,"muck_timeout":5,"players":0,"waiting":0,"tourney_serial":0,"seats":10,"player_timeout":60,"type":"PacketPokerTable","id":859},{"observers":0,"name":"Deux","percent_flop":0,"average_pot":0,"skin":"default","variant":"holdem","hands_per_hour":0,"betting_structure":"10-20-limit","currency_serial":1,"muck_timeout":5,"players":0,"waiting":0,"tourney_serial":0,"seats":10,"player_timeout":60,"type":"PacketPokerTable","id":860},{"observers":0,"name":"Trois","percent_flop":0,"average_pot":0,"skin":"default","variant":"holdem","hands_per_hour":0,"betting_structure":"10-20-pot-limit","currency_serial":1,"muck_timeout":5,"players":0,"waiting":0,"tourney_serial":0,"seats":10,"player_timeout":60,"type":"PacketPokerTable","id":861},{"observers":0,"name":"Quatre","percent_flop":0,"average_pot":0,"skin":"default","variant":"holdem","hands_per_hour":0,"betting_structure":"100-200-no-limit","currency_serial":1,"muck_timeout":5,"players":0,"waiting":0,"tourney_serial":0,"seats":10,"player_timeout":60,"type":"PacketPokerTable","id":862},{"observers":0,"name":"Five","percent_flop":0,"average_pot":0,"skin":"default","variant":"omaha","hands_per_hour":0,"betting_structure":"2-4-limit","currency_serial":1,"muck_timeout":5,"players":0,"waiting":0,"tourney_serial":0,"seats":10,"player_timeout":60,"type":"PacketPokerTable","id":863},{"observers":0,"name":"Six","percent_flop":0,"average_pot":0,"skin":"default","variant":"omaha","hands_per_hour":0,"betting_structure":"10-20-limit","currency_serial":1,"muck_timeout":5,"players":0,"waiting":0,"tourney_serial":0,"seats":10,"player_timeout":60,"type":"PacketPokerTable","id":864},{"observers":0,"name":"Seven","percent_flop":0,"average_pot":0,"skin":"default","variant":"omaha","hands_per_hour":0,"betting_structure":"10-20-pot-limit","currency_serial":1,"muck_timeout":5,"players":0,"waiting":0,"tourney_serial":0,"seats":10,"player_timeout":60,"type":"PacketPokerTable","id":865},{"observers":0,"name":"Eight","percent_flop":0,"average_pot":0,"skin":"default","variant":"omaha","hands_per_hour":0,"betting_structure":"100-200-no-limit","currency_serial":1,"muck_timeout":5,"players":0,"waiting":0,"tourney_serial":0,"seats":10,"player_timeout":60,"type":"PacketPokerTable","id":866},{"observers":0,"name":"Nine","percent_flop":0,"average_pot":0,"skin":"default","variant":"omaha8","hands_per_hour":0,"betting_structure":"2-4-limit","currency_serial":1,"muck_timeout":5,"players":0,"waiting":0,"tourney_serial":0,"seats":10,"player_timeout":60,"type":"PacketPokerTable","id":867},{"observers":0,"name":"Ten","percent_flop":0,"average_pot":0,"skin":"default","variant":"omaha8","hands_per_hour":0,"betting_structure":"10-20-limit","currency_serial":1,"muck_timeout":5,"players":0,"waiting":0,"tourney_serial":0,"seats":10,"player_timeout":60,"type":"PacketPokerTable","id":868},{"observers":0,"name":"Eleven","percent_flop":0,"average_pot":0,"skin":"default","variant":"omaha8","hands_per_hour":0,"betting_structure":"10-20-pot-limit","currency_serial":1,"muck_timeout":5,"players":0,"waiting":0,"tourney_serial":0,"seats":10,"player_timeout":60,"type":"PacketPokerTable","id":869},{"observers":0,"name":"Twelve","percent_flop":0,"average_pot":0,"skin":"default","variant":"omaha8","hands_per_hour":0,"betting_structure":"100-200-no-limit","currency_serial":1,"muck_timeout":5,"players":0,"waiting":0,"tourney_serial":0,"seats":10,"player_timeout":60,"type":"PacketPokerTable","id":870},{"observers":0,"name":"Thirty","percent_flop":0,"average_pot":0,"skin":"default","variant":"7stud","hands_per_hour":0,"betting_structure":"ante-10-20-limit","currency_serial":1,"muck_timeout":5,"players":0,"waiting":0,"tourney_serial":0,"seats":8,"player_timeout":60,"type":"PacketPokerTable","id":871},{"observers":0,"name":"Fourty","percent_flop":0,"average_pot":0,"skin":"default","variant":"7stud","hands_per_hour":0,"betting_structure":"ante-5-10-limit","currency_serial":1,"muck_timeout":5,"players":0,"waiting":0,"tourney_serial":0,"seats":8,"player_timeout":60,"type":"PacketPokerTable","id":872},{"observers":0,"name":"Lyearnys","percent_flop":0,"average_pot":0,"skin":"default","variant":"holdem","hands_per_hour":0,"betting_structure":".02-.04-no-limit","currency_serial":1,"muck_timeout":5,"players":0,"waiting":0,"tourney_serial":0,"seats":10,"player_timeout":60,"type":"PacketPokerTable","id":873},{"observers":0,"name":"Ingwskel","percent_flop":0,"average_pot":0,"skin":"default","variant":"holdem","hands_per_hour":0,"betting_structure":".05-.10-no-limit","currency_serial":1,"muck_timeout":5,"players":0,"waiting":0,"tourney_serial":0,"seats":10,"player_timeout":60,"type":"PacketPokerTable","id":874},{"observers":0,"name":"Cerrt","percent_flop":0,"average_pot":0,"skin":"default","variant":"holdem","hands_per_hour":0,"betting_structure":".10-.25-no-limit","currency_serial":1,"muck_timeout":5,"players":0,"waiting":0,"tourney_serial":0,"seats":10,"player_timeout":60,"type":"PacketPokerTable","id":875},{"observers":0,"name":"Therrd","percent_flop":0,"average_pot":0,"skin":"default","variant":"holdem","hands_per_hour":0,"betting_structure":".25-.50-no-limit","currency_serial":1,"muck_timeout":5,"players":0,"waiting":0,"tourney_serial":0,"seats":10,"player_timeout":60,"type":"PacketPokerTable","id":876},{"observers":0,"name":"Issgar","percent_flop":0,"average_pot":0,"skin":"default","variant":"holdem","hands_per_hour":0,"betting_structure":".50-1-no-limit","currency_serial":1,"muck_timeout":5,"players":0,"waiting":0,"tourney_serial":0,"seats":10,"player_timeout":60,"type":"PacketPokerTable","id":877},{"observers":0,"name":"Torray","percent_flop":0,"average_pot":0,"skin":"default","variant":"holdem","hands_per_hour":0,"betting_structure":"1-2-no-limit","currency_serial":1,"muck_timeout":5,"players":0,"waiting":0,"tourney_serial":0,"seats":10,"player_timeout":60,"type":"PacketPokerTable","id":878},{"observers":0,"name":"Uskeluina","percent_flop":0,"average_pot":0,"skin":"default","variant":"holdem","hands_per_hour":0,"betting_structure":"2-4-no-limit","currency_serial":1,"muck_timeout":5,"players":0,"waiting":0,"tourney_serial":0,"seats":10,"player_timeout":60,"type":"PacketPokerTable","id":879},{"observers":0,"name":"Oilde","percent_flop":0,"average_pot":0,"skin":"default","variant":"holdem","hands_per_hour":0,"betting_structure":"3-6-no-limit","currency_serial":1,"muck_timeout":5,"players":0,"waiting":0,"tourney_serial":0,"seats":10,"player_timeout":60,"type":"PacketPokerTable","id":880},{"observers":0,"name":"Cheper","percent_flop":0,"average_pot":0,"skin":"default","variant":"holdem","hands_per_hour":0,"betting_structure":"5-10-no-limit","currency_serial":1,"muck_timeout":5,"players":0,"waiting":0,"tourney_serial":0,"seats":10,"player_timeout":60,"type":"PacketPokerTable","id":881},{"observers":0,"name":"Syfar","percent_flop":0,"average_pot":0,"skin":"default","variant":"holdem","hands_per_hour":0,"betting_structure":"10-20-no-limit","currency_serial":1,"muck_timeout":5,"players":0,"waiting":0,"tourney_serial":0,"seats":10,"player_timeout":60,"type":"PacketPokerTable","id":882},{"observers":0,"name":"Rhoine","percent_flop":0,"average_pot":0,"skin":"default","variant":"holdem","hands_per_hour":0,"betting_structure":"30-60-no-limit","currency_serial":1,"muck_timeout":5,"players":0,"waiting":0,"tourney_serial":0,"seats":10,"player_timeout":60,"type":"PacketPokerTable","id":883},{"observers":0,"name":"Mosolor","percent_flop":0,"average_pot":0,"skin":"default","variant":"holdem","hands_per_hour":0,"betting_structure":"50-100-no-limit","currency_serial":1,"muck_timeout":5,"players":0,"waiting":0,"tourney_serial":0,"seats":10,"player_timeout":60,"type":"PacketPokerTable","id":884},{"observers":0,"name":"Cayrryns","percent_flop":0,"average_pot":0,"skin":"default","variant":"holdem","hands_per_hour":0,"betting_structure":"100-200-no-limit","currency_serial":1,"muck_timeout":5,"players":0,"waiting":0,"tourney_serial":0,"seats":10,"player_timeout":60,"type":"PacketPokerTable","id":885}],"tables":40,"time__":1223288940292}
server.handler {"players":0,"type":"PacketPokerTableList","packets":[{"observers":0,"name":"One","percent_flop":0,"average_pot":0,"skin":"default","variant":"holdem","hands_per_hour":0,"betting_structure":"2-4-limit","currency_serial":1,"muck_timeout":5,"players":0,"waiting":0,"tourney_serial":0,"seats":10,"player_timeout":60,"type":"PacketPokerTable","id":846},{"observers":0,"name":"Two","percent_flop":0,"average_pot":0,"skin":"default","variant":"holdem","hands_per_hour":0,"betting_structure":"10-20-limit","currency_serial":1,"muck_timeout":5,"players":0,"waiting":0,"tourney_serial":0,"seats":10,"player_timeout":60,"type":"PacketPokerTable","id":847},{"observers":0,"name":"Three","percent_flop":0,"average_pot":0,"skin":"default","variant":"holdem","hands_per_hour":0,"betting_structure":"10-20-pot-limit","currency_serial":1,"muck_timeout":5,"players":0,"waiting":0,"tourney_serial":0,"seats":10,"player_timeout":60,"type":"PacketPokerTable","id":848},{"observers":0,"name":"Four","percent_flop":0,"average_pot":0,"skin":"default","variant":"holdem","hands_per_hour":0,"betting_structure":"100-200-no-limit","currency_serial":1,"muck_timeout":5,"players":0,"waiting":0,"tourney_serial":0,"seats":10,"player_timeout":60,"type":"PacketPokerTable","id":849},{"observers":0,"name":"Antigua","percent_flop":0,"average_pot":0,"skin":"default","variant":"holdem","hands_per_hour":0,"betting_structure":"100-200-no-limit","currency_serial":1,"muck_timeout":5,"players":0,"waiting":0,"tourney_serial":0,"seats":10,"player_timeout":60,"type":"PacketPokerTable","id":850},{"observers":0,"name":"Cairo","percent_flop":0,"average_pot":0,"skin":"default","variant":"holdem","hands_per_hour":0,"betting_structure":"100-200-no-limit","currency_serial":1,"muck_timeout":5,"players":0,"waiting":0,"tourney_serial":0,"seats":10,"player_timeout":60,"type":"PacketPokerTable","id":851},{"observers":0,"name":"Mont","percent_flop":0,"average_pot":0,"skin":"default","variant":"holdem","hands_per_hour":0,"betting_structure":"100-200-no-limit","currency_serial":1,"muck_timeout":5,"players":0,"waiting":0,"tourney_serial":0,"seats":10,"player_timeout":60,"type":"PacketPokerTable","id":852},{"observers":0,"name":"Nancy","percent_flop":0,"average_pot":0,"skin":"default","variant":"holdem","hands_per_hour":0,"betting_structure":"100-200-no-limit","currency_serial":1,"muck_timeout":5,"players":0,"waiting":0,"tourney_serial":0,"seats":10,"player_timeout":60,"type":"PacketPokerTable","id":853},{"observers":0,"name":"Corail","percent_flop":0,"average_pot":0,"skin":"default","variant":"holdem","hands_per_hour":0,"betting_structure":"100-200-no-limit","currency_serial":1,"muck_timeout":5,"players":0,"waiting":0,"tourney_serial":0,"seats":10,"player_timeout":60,"type":"PacketPokerTable","id":854},{"observers":0,"name":"Legend","percent_flop":0,"average_pot":0,"skin":"default","variant":"holdem","hands_per_hour":0,"betting_structure":"100-200-no-limit","currency_serial":1,"muck_timeout":5,"players":0,"waiting":0,"tourney_serial":0,"seats":10,"player_timeout":60,"type":"PacketPokerTable","id":855},{"observers":0,"name":"Chip","percent_flop":0,"average_pot":0,"skin":"default","variant":"holdem","hands_per_hour":0,"betting_structure":"100-200-no-limit","currency_serial":1,"muck_timeout":5,"players":0,"waiting":0,"tourney_serial":0,"seats":10,"player_timeout":60,"type":"PacketPokerTable","id":856},{"observers":0,"name":"Relax","percent_flop":0,"average_pot":0,"skin":"default","variant":"holdem","hands_per_hour":0,"betting_structure":"100-200-no-limit","currency_serial":1,"muck_timeout":5,"players":0,"waiting":0,"tourney_serial":0,"seats":10,"player_timeout":60,"type":"PacketPokerTable","id":857},{"observers":0,"name":"Speed","percent_flop":0,"average_pot":0,"skin":"default","variant":"holdem","hands_per_hour":0,"betting_structure":"100-200-no-limit","currency_serial":1,"muck_timeout":5,"players":0,"waiting":0,"tourney_serial":0,"seats":10,"player_timeout":60,"type":"PacketPokerTable","id":858},{"observers":0,"name":"Un","percent_flop":0,"average_pot":0,"skin":"default","variant":"holdem","hands_per_hour":0,"betting_structure":"2-4-limit","currency_serial":1,"muck_timeout":5,"players":0,"waiting":0,"tourney_serial":0,"seats":10,"player_timeout":60,"type":"PacketPokerTable","id":859},{"observers":0,"name":"Deux","percent_flop":0,"average_pot":0,"skin":"default","variant":"holdem","hands_per_hour":0,"betting_structure":"10-20-limit","currency_serial":1,"muck_timeout":5,"players":0,"waiting":0,"tourney_serial":0,"seats":10,"player_timeout":60,"type":"PacketPokerTable","id":860},{"observers":0,"name":"Trois","percent_flop":0,"average_pot":0,"skin":"default","variant":"holdem","hands_per_hour":0,"betting_structure":"10-20-pot-limit","currency_serial":1,"muck_timeout":5,"players":0,"waiting":0,"tourney_serial":0,"seats":10,"player_timeout":60,"type":"PacketPokerTable","id":861},{"observers":0,"name":"Quatre","percent_flop":0,"average_pot":0,"skin":"default","variant":"holdem","hands_per_hour":0,"betting_structure":"100-200-no-limit","currency_serial":1,"muck_timeout":5,"players":0,"waiting":0,"tourney_serial":0,"seats":10,"player_timeout":60,"type":"PacketPokerTable","id":862},{"observers":0,"name":"Five","percent_flop":0,"average_pot":0,"skin":"default","variant":"omaha","hands_per_hour":0,"betting_structure":"2-4-limit","currency_serial":1,"muck_timeout":5,"players":0,"waiting":0,"tourney_serial":0,"seats":10,"player_timeout":60,"type":"PacketPokerTable","id":863},{"observers":0,"name":"Six","percent_flop":0,"average_pot":0,"skin":"default","variant":"omaha","hands_per_hour":0,"betting_structure":"10-20-limit","currency_serial":1,"muck_timeout":5,"players":0,"waiting":0,"tourney_serial":0,"seats":10,"player_timeout":60,"type":"PacketPokerTable","id":864},{"observers":0,"name":"Seven","percent_flop":0,"average_pot":0,"skin":"default","variant":"omaha","hands_per_hour":0,"betting_structure":"10-20-pot-limit","currency_serial":1,"muck_timeout":5,"players":0,"waiting":0,"tourney_serial":0,"seats":10,"player_timeout":60,"type":"PacketPokerTable","id":865},{"observers":0,"name":"Eight","percent_flop":0,"average_pot":0,"skin":"default","variant":"omaha","hands_per_hour":0,"betting_structure":"100-200-no-limit","currency_serial":1,"muck_timeout":5,"players":0,"waiting":0,"tourney_serial":0,"seats":10,"player_timeout":60,"type":"PacketPokerTable","id":866},{"observers":0,"name":"Nine","percent_flop":0,"average_pot":0,"skin":"default","variant":"omaha8","hands_per_hour":0,"betting_structure":"2-4-limit","currency_serial":1,"muck_timeout":5,"players":0,"waiting":0,"tourney_serial":0,"seats":10,"player_timeout":60,"type":"PacketPokerTable","id":867},{"observers":0,"name":"Ten","percent_flop":0,"average_pot":0,"skin":"default","variant":"omaha8","hands_per_hour":0,"betting_structure":"10-20-limit","currency_serial":1,"muck_timeout":5,"players":0,"waiting":0,"tourney_serial":0,"seats":10,"player_timeout":60,"type":"PacketPokerTable","id":868},{"observers":0,"name":"Eleven","percent_flop":0,"average_pot":0,"skin":"default","variant":"omaha8","hands_per_hour":0,"betting_structure":"10-20-pot-limit","currency_serial":1,"muck_timeout":5,"players":0,"waiting":0,"tourney_serial":0,"seats":10,"player_timeout":60,"type":"PacketPokerTable","id":869},{"observers":0,"name":"Twelve","percent_flop":0,"average_pot":0,"skin":"default","variant":"omaha8","hands_per_hour":0,"betting_structure":"100-200-no-limit","currency_serial":1,"muck_timeout":5,"players":0,"waiting":0,"tourney_serial":0,"seats":10,"player_timeout":60,"type":"PacketPokerTable","id":870},{"observers":0,"name":"Thirty","percent_flop":0,"average_pot":0,"skin":"default","variant":"7stud","hands_per_hour":0,"betting_structure":"ante-10-20-limit","currency_serial":1,"muck_timeout":5,"players":0,"waiting":0,"tourney_serial":0,"seats":8,"player_timeout":60,"type":"PacketPokerTable","id":871},{"observers":0,"name":"Fourty","percent_flop":0,"average_pot":0,"skin":"default","variant":"7stud","hands_per_hour":0,"betting_structure":"ante-5-10-limit","currency_serial":1,"muck_timeout":5,"players":0,"waiting":0,"tourney_serial":0,"seats":8,"player_timeout":60,"type":"PacketPokerTable","id":872},{"observers":0,"name":"Lyearnys","percent_flop":0,"average_pot":0,"skin":"default","variant":"holdem","hands_per_hour":0,"betting_structure":".02-.04-no-limit","currency_serial":1,"muck_timeout":5,"players":0,"waiting":0,"tourney_serial":0,"seats":10,"player_timeout":60,"type":"PacketPokerTable","id":873},{"observers":0,"name":"Ingwskel","percent_flop":0,"average_pot":0,"skin":"default","variant":"holdem","hands_per_hour":0,"betting_structure":".05-.10-no-limit","currency_serial":1,"muck_timeout":5,"players":0,"waiting":0,"tourney_serial":0,"seats":10,"player_timeout":60,"type":"PacketPokerTable","id":874},{"observers":0,"name":"Cerrt","percent_flop":0,"average_pot":0,"skin":"default","variant":"holdem","hands_per_hour":0,"betting_structure":".10-.25-no-limit","currency_serial":1,"muck_timeout":5,"players":0,"waiting":0,"tourney_serial":0,"seats":10,"player_timeout":60,"type":"PacketPokerTable","id":875},{"observers":0,"name":"Therrd","percent_flop":0,"average_pot":0,"skin":"default","variant":"holdem","hands_per_hour":0,"betting_structure":".25-.50-no-limit","currency_serial":1,"muck_timeout":5,"players":0,"waiting":0,"tourney_serial":0,"seats":10,"player_timeout":60,"type":"PacketPokerTable","id":876},{"observers":0,"name":"Issgar","percent_flop":0,"average_pot":0,"skin":"default","variant":"holdem","hands_per_hour":0,"betting_structure":".50-1-no-limit","currency_serial":1,"muck_timeout":5,"players":0,"waiting":0,"tourney_serial":0,"seats":10,"player_timeout":60,"type":"PacketPokerTable","id":877},{"observers":0,"name":"Torray","percent_flop":0,"average_pot":0,"skin":"default","variant":"holdem","hands_per_hour":0,"betting_structure":"1-2-no-limit","currency_serial":1,"muck_timeout":5,"players":0,"waiting":0,"tourney_serial":0,"seats":10,"player_timeout":60,"type":"PacketPokerTable","id":878},{"observers":0,"name":"Uskeluina","percent_flop":0,"average_pot":0,"skin":"default","variant":"holdem","hands_per_hour":0,"betting_structure":"2-4-no-limit","currency_serial":1,"muck_timeout":5,"players":0,"waiting":0,"tourney_serial":0,"seats":10,"player_timeout":60,"type":"PacketPokerTable","id":879},{"observers":0,"name":"Oilde","percent_flop":0,"average_pot":0,"skin":"default","variant":"holdem","hands_per_hour":0,"betting_structure":"3-6-no-limit","currency_serial":1,"muck_timeout":5,"players":0,"waiting":0,"tourney_serial":0,"seats":10,"player_timeout":60,"type":"PacketPokerTable","id":880},{"observers":0,"name":"Cheper","percent_flop":0,"average_pot":0,"skin":"default","variant":"holdem","hands_per_hour":0,"betting_structure":"5-10-no-limit","currency_serial":1,"muck_timeout":5,"players":0,"waiting":0,"tourney_serial":0,"seats":10,"player_timeout":60,"type":"PacketPokerTable","id":881},{"observers":0,"name":"Syfar","percent_flop":0,"average_pot":0,"skin":"default","variant":"holdem","hands_per_hour":0,"betting_structure":"10-20-no-limit","currency_serial":1,"muck_timeout":5,"players":0,"waiting":0,"tourney_serial":0,"seats":10,"player_timeout":60,"type":"PacketPokerTable","id":882},{"observers":0,"name":"Rhoine","percent_flop":0,"average_pot":0,"skin":"default","variant":"holdem","hands_per_hour":0,"betting_structure":"30-60-no-limit","currency_serial":1,"muck_timeout":5,"players":0,"waiting":0,"tourney_serial":0,"seats":10,"player_timeout":60,"type":"PacketPokerTable","id":883},{"observers":0,"name":"Mosolor","percent_flop":0,"average_pot":0,"skin":"default","variant":"holdem","hands_per_hour":0,"betting_structure":"50-100-no-limit","currency_serial":1,"muck_timeout":5,"players":0,"waiting":0,"tourney_serial":0,"seats":10,"player_timeout":60,"type":"PacketPokerTable","id":884},{"observers":0,"name":"Cayrryns","percent_flop":0,"average_pot":0,"skin":"default","variant":"holdem","hands_per_hour":0,"betting_structure":"100-200-no-limit","currency_serial":1,"muck_timeout":5,"players":0,"waiting":0,"tourney_serial":0,"seats":10,"player_timeout":60,"type":"PacketPokerTable","id":885}],"tables":40,"uid__":"jpoker1223288938090"}
setState running PacketPokerTableList
setState joining table undefined
sendPacket {"type":"PacketPokerTableJoin","game_id":846}
POST http://127.0.0.1/POKER_REST?name=33709A7BAC22083C22659129347E4F1D7BDA9230
http://127.0.0.1/POKER_REST?name=33709A7BAC22083C22659129347E4F1D7BDA9230
620ms jquery-1.2.6.js (line 2806)
queueIncoming {"observers":0,"name":"One","percent_flop":0,"average_pot":0,"skin":"default","variant":"holdem","hands_per_hour":0,"betting_structure":"2-4-limit","currency_serial":1,"muck_timeout":5,"players":0,"waiting":0,"tourney_serial":0,"seats":10,"player_timeout":60,"type":"PacketPokerTable","id":846,"time__":1223288941356}
queueIncoming {"count":1,"game_ids":[846],"length":9,"type":"PacketPokerCurrentGames","time__":1223288941369}
queueIncoming {"min":1000,"max":100000000,"rebuy_min":300,"length":23,"game_id":846,"type":"PacketPokerBuyInLimits","best":6000,"time__":1223288941378}
queueIncoming {"game_id":846,"serial":0,"cookie":"","type":"PacketPokerBatchMode","time__":1223288941384}
queueIncoming {"game_id":846,"serial":0,"cookie":"","type":"PacketPokerStreamMode","time__":1223288941389}
connection handle 0: {"observers":0,"name":"One","percent_flop":0,"average_pot":0,"skin":"default","variant":"holdem","hands_per_hour":0,"betting_structure":"2-4-limit","currency_serial":1,"muck_timeout":5,"players":0,"waiting":0,"tourney_serial":0,"seats":10,"player_timeout":60,"type":"PacketPokerTable","id":846,"time__":1223288941356}
server.handler {"observers":0,"name":"One","percent_flop":0,"average_pot":0,"skin":"default","variant":"holdem","hands_per_hour":0,"betting_structure":"2-4-limit","currency_serial":1,"muck_timeout":5,"players":0,"waiting":0,"tourney_serial":0,"seats":10,"player_timeout":60,"type":"PacketPokerTable","id":846,"uid__":"jpoker1223288938091"}
sendPacket {"type":"PacketPokerPoll","game_id":846}
POST http://127.0.0.1/POKER_REST?name=33709A7BAC22083C22659129347E4F1D7BDA9230
http://127.0.0.1/POKER_REST?name=33709A7BAC22083C22659129347E4F1D7BDA9230
866ms jquery-1.2.6.js (line 2806)
plugins.table.create jpoker1223288938092 game: 846
connection handle 846: {"min":1000,"max":100000000,"rebuy_min":300,"length":23,"game_id":846,"type":"PacketPokerBuyInLimits","best":6000,"time__":1223288941378}
table.handler {"min":1000,"max":100000000,"rebuy_min":300,"length":23,"game_id":846,"type":"PacketPokerBuyInLimits","best":6000,"uid__":"jpoker1223288938093"}
connection handle 0: {"count":1,"game_ids":[846],"length":9,"type":"PacketPokerCurrentGames","time__":1223288941369}
server.handler {"count":1,"game_ids":[846],"length":9,"type":"PacketPokerCurrentGames","uid__":"jpoker1223288938094"}
connection handle 846: {"game_id":846,"serial":0,"cookie":"","type":"PacketPokerBatchMode","time__":1223288941384}
table.handler {"game_id":846,"serial":0,"cookie":"","type":"PacketPokerBatchMode","uid__":"jpoker1223288938095"}
connection handle 846: {"game_id":846,"serial":0,"cookie":"","type":"PacketPokerStreamMode","time__":1223288941389}
table.handler {"game_id":846,"serial":0,"cookie":"","type":"PacketPokerStreamMode","uid__":"jpoker1223288938096"}
setState running PacketPokerStreamMode
sendPacket {"type":"PacketPokerPoll","game_id":846}
POST http://127.0.0.1/POKER_REST?name=33709A7BAC22083C22659129347E4F1D7BDA9230
http://127.0.0.1/POKER_REST?name=33709A7BAC22083C22659129347E4F1D7BDA9230
16ms jquery-1.2.6.js (line 2806)
setState loging undefined
sendPacket {"type":"PacketLogin","name":"proppy","password":"pqsspqss"}
POST http://127.0.0.1/POKER_REST?name=33709A7BAC22083C22659129347E4F1D7BDA9230
http://127.0.0.1/POKER_REST?name=33709A7BAC22083C22659129347E4F1D7BDA9230
30ms jquery-1.2.6.js (line 2806)
queueIncoming {"type":"PacketAuthOk","time__":1223288947916}
queueIncoming {"cookie":"","serial":9,"type":"PacketSerial","time__":1223288947921}
connection handle 0: {"type":"PacketAuthOk","time__":1223288947916}
server.handler {"type":"PacketAuthOk","uid__":"jpoker1223288938097"}
connection handle 0: {"cookie":"","serial":9,"type":"PacketSerial","time__":1223288947921}
server.handler {"cookie":"","serial":9,"type":"PacketSerial","uid__":"jpoker1223288938098"}
setState running login serial received
setState retrieving user info undefined
sendPacket {"type":"PacketPokerGetUserInfo","serial":9}
POST http://127.0.0.1/POKER_REST?name=33709A7BAC22083C22659129347E4F1D7BDA9230
http://127.0.0.1/POKER_REST?name=33709A7BAC22083C22659129347E4F1D7BDA9230
19ms jquery-1.2.6.js (line 2806)
queueIncoming {"rating":1000,"name":"proppy","money":{"X1":[5000000,0,0]},"affiliate":0,"cookie":"","serial":9,"password":"","type":"PacketPokerUserInfo","email":"","time__":1223288948285}
connection handle 0: {"rating":1000,"name":"proppy","money":{"X1":[5000000,0,0]},"affiliate":0,"cookie":"","serial":9,"password":"","type":"PacketPokerUserInfo","email":"","time__":1223288948285}
server.handler {"rating":1000,"name":"proppy","money":{"X1":[5000000,0,0]},"affiliate":0,"cookie":"","serial":9,"password":"","type":"PacketPokerUserInfo","email":"","uid__":"jpoker1223288938099"}
table.handler {"rating":1000,"name":"proppy","money":{"X1":[5000000,0,0]},"affiliate":0,"cookie":"","serial":9,"password":"","type":"PacketPokerUserInfo","email":"","uid__":"jpoker1223288938099","game_id":"846"}
setState running PacketPokerUserInfo
setState searching tourneys refresh
sendPacket {"type":"PacketPokerTourneySelect","string":""}
POST http://127.0.0.1/POKER_REST?name=33709A7BAC22083C22659129347E4F1D7BDA9230
http://127.0.0.1/POKER_REST?name=33709A7BAC22083C22659129347E4F1D7BDA9230
173ms jquery-1.2.6.js (line 2806)
queueIncoming {"players":0,"packets":[{"players_quota":4,"breaks_interval":3600,"name":"sitngo2","type":"PacketPokerTourney","start_time":1223288150,"breaks_first":7200,"variant":"holdem","currency_serial":1,"state":"complete","buy_in":300000,"sit_n_go":"y","breaks_duration":300,"serial":28,"description_short":"Sit and Go 2 players, Holdem","registered":4},{"players_quota":4,"breaks_interval":3600,"name":"sitngo2","type":"PacketPokerTourney","start_time":0,"breaks_first":7200,"variant":"holdem","currency_serial":1,"state":"registering","buy_in":300000,"sit_n_go":"y","breaks_duration":300,"serial":30,"description_short":"Sit and Go 2 players, Holdem","registered":0}],"tourneys":1,"type":"PacketPokerTourneyList","time__":1223288950322}
queueIncoming {"packets":[{"cookie":"","serial":1,"type":"PacketPokerTourneyAttrs"},{"cookie":"","serial":1,"type":"PacketPokerTourneyAttrs"}],"tourneyAttrs":1,"type":"PacketPokerTourneyAttrsList","time__":1223288950331}
connection handle 0: {"players":0,"packets":[{"players_quota":4,"breaks_interval":3600,"name":"sitngo2","type":"PacketPokerTourney","start_time":1223288150,"breaks_first":7200,"variant":"holdem","currency_serial":1,"state":"complete","buy_in":300000,"sit_n_go":"y","breaks_duration":300,"serial":28,"description_short":"Sit and Go 2 players, Holdem","registered":4},{"players_quota":4,"breaks_interval":3600,"name":"sitngo2","type":"PacketPokerTourney","start_time":0,"breaks_first":7200,"variant":"holdem","currency_serial":1,"state":"registering","buy_in":300000,"sit_n_go":"y","breaks_duration":300,"serial":30,"description_short":"Sit and Go 2 players, Holdem","registered":0}],"tourneys":1,"type":"PacketPokerTourneyList","time__":1223288950322}
server.handler {"players":0,"packets":[{"players_quota":4,"breaks_interval":3600,"name":"sitngo2","type":"PacketPokerTourney","start_time":1223288150,"breaks_first":7200,"variant":"holdem","currency_serial":1,"state":"complete","buy_in":300000,"sit_n_go":"y","breaks_duration":300,"serial":28,"description_short":"Sit and Go 2 players, Holdem","registered":4},{"players_quota":4,"breaks_interval":3600,"name":"sitngo2","type":"PacketPokerTourney","start_time":0,"breaks_first":7200,"variant":"holdem","currency_serial":1,"state":"registering","buy_in":300000,"sit_n_go":"y","breaks_duration":300,"serial":30,"description_short":"Sit and Go 2 players, Holdem","registered":0}],"tourneys":1,"type":"PacketPokerTourneyList","uid__":"jpoker1223288938101"}
setState running refresh searching tourneys
connection handle 0: {"packets":[{"cookie":"","serial":1,"type":"PacketPokerTourneyAttrs"},{"cookie":"","serial":1,"type":"PacketPokerTourneyAttrs"}],"tourneyAttrs":1,"type":"PacketPokerTourneyAttrsList","time__":1223288950331}
server.handler {"packets":[{"cookie":"","serial":1,"type":"PacketPokerTourneyAttrs"},{"cookie":"","serial":1,"type":"PacketPokerTourneyAttrs"}],"tourneyAttrs":1,"type":"PacketPokerTourneyAttrsList","uid__":"jpoker1223288938102"}
sendPacket {"type":"PacketPokerPoll","game_id":846}
POST http://127.0.0.1/POKER_REST?name=33709A7BAC22083C22659129347E4F1D7BDA9230
http://127.0.0.1/POKER_REST?name=33709A7BAC22083C22659129347E4F1D7BDA9230
19ms jquery-1.2.6.js (line 2806)
setState retrieving tourney details refresh
sendPacket {"type":"PacketPokerGetTourneyManager","tourney_serial":30}
POST http://127.0.0.1/POKER_REST?name=33709A7BAC22083C22659129347E4F1D7BDA9230
http://127.0.0.1/POKER_REST?name=33709A7BAC22083C22659129347E4F1D7BDA9230
31ms jquery-1.2.6.js (line 2806)
queueIncoming {"user2properties":{},"length":3,"tourney_serial":30,"table2serials":{},"type":"PacketPokerTourneyManager","tourney":{"breaks_interval":3600,"currency_serial":1,"description_long":"Sit and Go 2 players","rank2prize":null,"serial":30,"resthost_serial":0,"rebuy_count":0,"state":"registering","buy_in":300000,"add_on_count":0,"description_short":"Sit and Go 2 players, Holdem","registered":0,"players_quota":4,"breaks_first":7200,"add_on":0,"start_time":0,"rake":0,"variant":"holdem","players_min":4,"schedule_serial":1,"betting_structure":"level-15-30-no-limit","add_on_delay":60,"name":"sitngo2","finish_time":0,"prize_min":0,"player_timeout":60,"breaks_duration":300,"seats_per_game":2,"bailor_serial":0,"sit_n_go":"y","rebuy_delay":0},"time__":1223288952077}
connection handle 0: {"user2properties":{},"length":3,"tourney_serial":30,"table2serials":{},"type":"PacketPokerTourneyManager","tourney":{"breaks_interval":3600,"currency_serial":1,"description_long":"Sit and Go 2 players","rank2prize":null,"serial":30,"resthost_serial":0,"rebuy_count":0,"state":"registering","buy_in":300000,"add_on_count":0,"description_short":"Sit and Go 2 players, Holdem","registered":0,"players_quota":4,"breaks_first":7200,"add_on":0,"start_time":0,"rake":0,"variant":"holdem","players_min":4,"schedule_serial":1,"betting_structure":"level-15-30-no-limit","add_on_delay":60,"name":"sitngo2","finish_time":0,"prize_min":0,"player_timeout":60,"breaks_duration":300,"seats_per_game":2,"bailor_serial":0,"sit_n_go":"y","rebuy_delay":0},"time__":1223288952077}
server.handler {"user2properties":{},"length":3,"tourney_serial":30,"table2serials":{},"type":"PacketPokerTourneyManager","tourney":{"breaks_interval":3600,"currency_serial":1,"description_long":"Sit and Go 2 players","rank2prize":null,"serial":30,"resthost_serial":0,"rebuy_count":0,"state":"registering","buy_in":300000,"add_on_count":0,"description_short":"Sit and Go 2 players, Holdem","registered":0,"players_quota":4,"breaks_first":7200,"add_on":0,"start_time":0,"rake":0,"variant":"holdem","players_min":4,"schedule_serial":1,"betting_structure":"level-15-30-no-limit","add_on_delay":60,"name":"sitngo2","finish_time":0,"prize_min":0,"player_timeout":60,"breaks_duration":300,"seats_per_game":2,"bailor_serial":0,"sit_n_go":"y","rebuy_delay":0},"uid__":"jpoker1223288938104"}
setState running reset
uncaught exception: notify recursion for update
[Break on this error] checkCell = (n[0].length-1),
jquery.t...sorter.js (line 251)
sendPacket {"type":"PacketPokerPoll","game_id":846}
POST http://127.0.0.1/POKER_REST?name=33709A7BAC22083C22659129347E4F1D7BDA9230
http://127.0.0.1/POKER_REST?name=33709A7BAC22083C22659129347E4F1D7BDA9230
16ms jquery-1.2.6.js (line 2806)
uncaught exception: notify recursion for update
[Break on this error] undefined
refresh waiting
sendPacket {"type":"PacketPokerPoll","game_id":846}
refresh waiting
}}}
complete list of tournament state:
TOURNAMENT_STATE_ANNOUNCED = "announced"
TOURNAMENT_STATE_REGISTERING = "registering"
TOURNAMENT_STATE_RUNNING = "running"
TOURNAMENT_STATE_BREAK_WAIT = "breakwait"
TOURNAMENT_STATE_BREAK = "break"
TOURNAMENT_STATE_COMPLETE = "complete"
TOURNAMENT_STATE_CANCELED = "canceled"
http://jpoker.aminche.com/hg/jpoker/rev/47fae4e146b5
http://svn.gna.org/viewcvs/pokersource?rev=4575&view=rev
http://jpoker.aminche.com/hg/jpoker/rev/4ec8d406d01e
solution :
* auto increment a cookie client side
* discard packet if the cookie is < to the last one received
http://jpoker.aminche.com/hg/jpoker/rev/92a4fe4e37bf
http://jpoker.aminche.com/hg/jpoker/rev/d130c32d8a75
http://svn.gna.org/viewcvs/pokersource?rev=4476&view=rev
ping the fedora package maintainer to upgrade to 1.0.7. He has agreed on 2 or 3 more uploads.
http://docs.jquery.com/QUnit
http://code.google.com/p/jqunit/
http://jpoker.aminche.com/hg/jpoker/rev/32bf981db882
http://www.filamentgroup.com/lab/update_automatically_preload_images_from_css_with_jquery/
it must be in a state that forbids all other interaction
http://jpoker.aminche.com/hg/jpoker/rev/71e7a8e357a6
* firefox skin.html
* click on the case you want to validate
* save the file locally to caseXXX.html
* firefox caseXXX.html
* ctrl+shift+a using webdevelopper FF extension
** https://addons.mozilla.org/en-US/firefox/addon/60
arrange for the uninit function to be given and argument in watchable
{{{
root@kun:/usr/src# curl -c /tmp/cookiejar -v -d '{"type":"PacketLogin", "username":"imageupload", "password":"imageupload"}' http://127.0.0.1:19384/POKER_REST
* About to connect() to 127.0.0.1 port 19384 (#0)
* Trying 127.0.0.1... connected
* Connected to 127.0.0.1 (127.0.0.1) port 19384 (#0)
> POST /POKER_REST HTTP/1.1
> User-Agent: curl/7.18.2 (i486-pc-linux-gnu) libcurl/7.18.2 OpenSSL/0.9.8g zlib/1.2.3.3 libidn/1.9 libssh2/0.18
> Host: 127.0.0.1:19384
> Accept: */*
> Content-Length: 74
> Content-Type: application/x-www-form-urlencoded
>
< HTTP/1.1 200 OK
< Date: Tue, 19 Aug 2008 16:45:47 GMT
< Content-length: 80
< Content-type: text/plain; charset="UTF-8"
< Server: TwistedWeb/8.1.0
* Added cookie TWISTED_SESSION="dde9bff3fd43a8205416c7e9b0b5f62e" for domain 127.0.0.1, path /, expire 0
< Set-Cookie: TWISTED_SESSION=dde9bff3fd43a8205416c7e9b0b5f62e; Path=/
<
* Connection #0 to host 127.0.0.1 left intact
* Closing connection #0
[{"type": "PacketAuthOk"}, {"type": "PacketSerial", "serial": 39, "cookie": ""}]root@kun:/usr/src#
root@kun:/usr/src#
root@kun:/usr/src#
root@kun:/usr/src# curl -b /tmp/cookiejar -v -F filename=@/usr/src/cropped.png http://127.0.0.1:19384/UPLOAD* About to connect() to 127.0.0.1 port 19384 (#0)
* Trying 127.0.0.1... connected
* Connected to 127.0.0.1 (127.0.0.1) port 19384 (#0)
> POST /UPLOAD HTTP/1.1
> User-Agent: curl/7.18.2 (i486-pc-linux-gnu) libcurl/7.18.2 OpenSSL/0.9.8g zlib/1.2.3.3 libidn/1.9 libssh2/0.18
> Host: 127.0.0.1:19384
> Accept: */*
> Cookie: TWISTED_SESSION=dde9bff3fd43a8205416c7e9b0b5f62e
> Content-Length: 4693
> Expect: 100-continue
> Content-Type: multipart/form-data; boundary=----------------------------04201ae24f1a
>
< HTTP/1.1 200 OK
< Date: Tue, 19 Aug 2008 16:46:00 GMT
< Content-length: 14
< Content-type: text/plain; charset="UTF-8"
< Server: TwistedWeb/8.1.0
<
* Connection #0 to host 127.0.0.1 left intact
* Closing connection #0
image uploadedroot@kun:/usr/src# curl -b /tmp/cookiejar -v -F filename=@/usr/src/cropped.jpg http://127.0.0.1:19384/UPLOAD
* About to connect() to 127.0.0.1 port 19384 (#0)
* Trying 127.0.0.1... connected
* Connected to 127.0.0.1 (127.0.0.1) port 19384 (#0)
> POST /UPLOAD HTTP/1.1
> User-Agent: curl/7.18.2 (i486-pc-linux-gnu) libcurl/7.18.2 OpenSSL/0.9.8g zlib/1.2.3.3 libidn/1.9 libssh2/0.18
> Host: 127.0.0.1:19384
> Accept: */*
> Cookie: TWISTED_SESSION=dde9bff3fd43a8205416c7e9b0b5f62e
> Content-Length: 1205
> Expect: 100-continue
> Content-Type: multipart/form-data; boundary=----------------------------bbdfc573f85b
>
< HTTP/1.1 200 OK
< Date: Tue, 19 Aug 2008 16:46:06 GMT
< Content-length: 14
< Content-type: text/plain; charset="UTF-8"
< Server: TwistedWeb/8.1.0
<
* Connection #0 to host 127.0.0.1 left intact
* Closing connection #0
image uploadedroot@kun:/usr/src# curl -b /tmp/cookiejar -v -F filename=@/usr/src/cropped.png http://127.0.0.1:19384/UPLOAD
* About to connect() to 127.0.0.1 port 19384 (#0)
* Trying 127.0.0.1... connected
* Connected to 127.0.0.1 (127.0.0.1) port 19384 (#0)
> POST /UPLOAD HTTP/1.1
> User-Agent: curl/7.18.2 (i486-pc-linux-gnu) libcurl/7.18.2 OpenSSL/0.9.8g zlib/1.2.3.3 libidn/1.9 libssh2/0.18
> Host: 127.0.0.1:19384
> Accept: */*
> Cookie: TWISTED_SESSION=dde9bff3fd43a8205416c7e9b0b5f62e
> Content-Length: 4693
> Expect: 100-continue
> Content-Type: multipart/form-data; boundary=----------------------------369e1fcf31a9
>
< HTTP/1.1 200 OK
< Date: Tue, 19 Aug 2008 16:46:12 GMT
< Content-length: 14
< Content-type: text/plain; charset="UTF-8"
< Server: TwistedWeb/8.1.0
<
* Connection #0 to host 127.0.0.1 left intact
* Closing connection #0
}}}