it's not blocking development - everyone is synced up
X-Wing List Juggler
Just wanted to post a THANK YOU to Sozin for adding the "copy" functionality! I'm entering last weekend's store champs and it's SOOOOO much easier already (darn those rebel and TIE swarms
). Cheers!
Axel and I hooked up; we're going to create an API that the iOS app can use. here's a google doc where we are stashing the API spec.
Thanks Sozin! I assume it's too late for the tournament that already happened and used XWing TO app?
For the moment, I'd like the export to the List Juggler action to be manual. That will be done by pressing the "export" button on the results page that already allows you to export results as text or print them out.
You'll be able to export all tournaments previously created.
So just a kind of theoretical analytics question for you Sozin. Noticed the Upgrades Tableau chart factors in points spent, doesn't that misrepresent upgrades with 0 or negative costs? Why do you hate Chardaan and BTL-A4 et al?
yeah, it does misrepresent them. right now the tableau stuff is just dumbly sitting on top the sql db backend ... I need to create a view or something that normalizes for chaardan, btl, tie x1, etc.
Hey Sozin, another issue with ListJuggler. For some reason, the top 2 players for "Randy's House of Games" does not show up in the "Tourney Champion" list, but the 3-8 players do. Do you know why that is?
I'm trying to add in my SC to Listjuggler, but it's FUBAR. Either I'm stupid or the website doesn't work from either IE or Firefox while I'm at work. I'm trying to edit my PBKW Store Championship. Any clue as to how I can get it put in?
hiya. I'm not sure if IE will work, but firefox should. to edit a record, click on the record, and then hit the edit button. the row should turn shaded blue when it is selected.
Hey Sozin, another issue with ListJuggler. For some reason, the top 2 players for "Randy's House of Games" does not show up in the "Tourney Champion" list, but the 3-8 players do. Do you know why that is?
yeah, check the 'Championships list only' checkbox on the store champs page and you'll see their lists. (I recommend first typing in 'randy' in into the filter to narrow the results down first.)
I need to think about this more when my brain isn't wracked with jet lag, probably the default view should show championship lists ...
Hey Sozin, another issue with ListJuggler. For some reason, the top 2 players for "Randy's House of Games" does not show up in the "Tourney Champion" list, but the 3-8 players do. Do you know why that is?
yeah, check the 'Championships list only' checkbox on the store champs page and you'll see their lists. (I recommend first typing in 'randy' in into the filter to narrow the results down first.)
I need to think about this more when my brain isn't wracked with jet lag, probably the default view should show championship lists ...
Oh weird, didn't realize I had to check that. What's the difference? How come without it checked, the 3-8th place players show up instead of #1 and 2?
I shouldn't have to; I had a bug in the filtering logic which I just fixed, but here is how it works.
Some store championships didn't cut to swiss rounds. I changed the filter name to be " Show only tournaments that cut to championship rounds" so it is more intention revealing; when selected, it will only show tourneys that had a cut.
Ahh ok, it works now. Thanks!
hiya. I'm not sure if IE will work, but firefox should. to edit a record, click on the record, and then hit the edit button. the row should turn shaded blue when it is selected.
I'm not able to add lists is the problem. I try using the built in and it's just not doing it. I don't have links to the various systems and I don't want to add everyone else's list to my squadrons.
Well, that and I ADDED players instead of EDITING the existing. So, there are double players.
Sozin, I've got a bug report for you. I was unable to enter a list containing Accuracy Corrector on Xizor w/Virago. The Systems slot did not contain an option for Accuracy Corrector (though it did have an option for Advanced Targeting Computer, which is not yet released). Could you please look into this so we can enter the list properly? (Or tell me how I'm screwing up...) Thanks!
Oops! It was, in fact, missing. Thank you! I've added it, should be ok now. Cheers
ok, I got around to implementing a few pieces of the api specification .
1) Get tournaments:
http://lists.starwarsclubhouse.com/api/v1/tournaments
Returns (json):
"{"tournaments": [81, 63, 124, 125, 37, 79, 248, 169, 230, 157, 98, 215, 229, 86, 145, 91, 174, 198, 234, 84, 94, 192, 240, 242, 117, 218, 246, 33, 156, 227, 178, 175, 53, 85, 28, 165, 252, 214, 176, 244, 245, 237, 136, 199, 148, 56, 166, 149, 112, 251, 228, 223, 82, 65, 179, 168, 238, 197, 239, 233, 150, 122, 147, 107, 194, 232, 146, 209, 131, 154, 133, 143, 59, 105, 256, 193, 188, 118, 207, 195, 153, 151, 152, 126, 254, 181, 43, 55, 187, 180, 213, 216, 222, 196, 97, 241, 212, 210, 167, 250, 219, 128, 235, 120, 257, 182, 64, 58, 103, 104, 158, 140, 258, 32, 80, 109, 110, 142, 173, 184, 221, 247, 123, 226, 220, 236, 186, 164, 116, 134, 121, 253, 127, 135, 170, 249, 96, 132, 1, 2, 99, 189, 255]}"
2) Get a particular tourney: http://lists.starwarsclubhouse.com/api/v1/tournament/53
Returns (json):
"{"tournament": {"name": "Dice Dojo 2015 Store Championship", "round_length": 60, "rounds": [{"matches": [{"player2": "Brandon Prokos", "player1": "Lyle Hayhurst", "player1points": 100, "result": "win", "player2points": 48}, {"player2": "Phil Kalata", "player1": "Zach Carriger", "player1points": 32, "result": "win", "player2points": 0}, {"player2": "David Pontier", "player1": "Elliot Moore", "player1points": 18, "result": "win", "player2points": 100}, {"player2": "Matt Babiash", "player1": "Daniel Schneiber", "player1points": 0, "result": "win", "player2points": 100}, {"player2": "Rob Ross", "player1": "Luke Fritz", "player1points": 99, "result": "win", "player2points": 34}, {"player2": "Javier Perez", "player1": "Ryan Cassidy", "player1points": 52, "result": "win", "player2points": 47}, {"player2": "Bill Sullivan", "player1": "Dom Cairo", "player1points": 100, "result": "win", "player2points": 24}, {"player2": "Russell Roberts", "player1": "Jerry Skizzydek", "player1points": 100, "result": "win", "player2points": 0}, {"player2": "", "player1": "Jerry Skizzydek", "player1points": null, "result": "bye", "player2points": null}, {"player2": "Steven Smith", "player1": "Nate Moore", "player1points": 100, "result": "win", "player2points": 0}], "round-number": 1, "round-type": "swiss"}, {"matches": [{"player2": "Nate Moore", "player1": "Matt Babiash", "player1points": 99, "result": "win", "player2points": 44}, {"player2": "Jerry Skizzydek", "player1": "David Pontier", "player1points": 100, "result": "win", "player2points": 30}, {"player2": "Dom Cairo", "player1": "Rob Ross", "player1points": 24, "result": "win", "player2points": 100}, {"player2": "Lyle Hayhurst", "player1": "Louie Fabicon", "player1points": 0, "result": "win", "player2points": 100}, {"player2": "Phil Kalata", "player1": "Ryan Cassidy", "player1points": 33, "result": "win", "player2points": 100}, {"player2": "Javier Perez", "player1": "Zach Carriger", "player1points": 100, "result": "win", "player2points": 24}, {"player2": "Luke Fritz", "player1": "Brandon Prokos", "player1points": 99, "result": "win", "player2points": 0}, {"player2": "Elliot Moore", "player1": "Russell Roberts", "player1points": 50, "result": "win", "player2points": 25}, {"player2": "Bill Sullivan", "player1": "Daniel Schneiber", "player1points": 79, "result": "win", "player2points": 64}], "round-number": 2, "round-type": "swiss"}, {"matches": [{"player2": "Lyle Hayhurst", "player1": "Dom Cairo", "player1points": 24, "result": "win", "player2points": 48}, {"player2": "David Pontier", "player1": "Matt Babiash", "player1points": 52, "result": "win", "player2points": 56}, {"player2": "Nate Moore", "player1": "Phil Kalata", "player1points": 100, "result": "win", "player2points": 0}, {"player2": "Zach Carriger", "player1": "Brandon Prokos", "player1points": 100, "result": "win", "player2points": 0}, {"player2": "Rob Ross", "player1": "Jerry Skizzydek", "player1points": 47, "result": "win", "player2points": 38}, {"player2": "Ryan Cassidy", "player1": "Russell Roberts", "player1points": 100, "result": "win", "player2points": 0}, {"player2": "Bill Sullivan", "player1": "Louie Fabicon", "player1points": 0, "result": "win", "player2points": 100}, {"player2": "Daniel Schneiber", "player1": "Elliot Moore", "player1points": null, "result": "draw", "player2points": null}, {"player2": "", "player1": "Elliot Moore", "player1points": null, "result": "bye", "player2points": null}], "round-number": 3, "round-type": "swiss"}, {"matches": [{"player2": "David Pontier", "player1": "Lyle Hayhurst", "player1points": 70, "result": "win", "player2points": 24}, {"player2": "Bill Sullivan", "player1": "Phil Kalata", "player1points": 100, "result": "win", "player2points": 33}, {"player2": "Matt Babiash", "player1": "Brandon Prokos", "player1points": 100, "result": "win", "player2points": 0}, {"player2": "Luke Fritz", "player1": "Russell Roberts", "player1points": 100, "result": "win", "player2points": 25}, {"player2": "Nate Moore", "player1": "Dom Cairo", "player1points": 99, "result": "win", "player2points": 24}, {"player2": "Ryan Cassidy", "player1": "Jerry Skizzydek", "player1points": 74, "result": "win", "player2points": 27}, {"player2": "Elliot Moore", "player1": "Louie Fabicon", "player1points": 100, "result": "win", "player2points": 0}, {"player2": "Rob Ross", "player1": "Zach Carriger", "player1points": 12, "result": "win", "player2points": 32}, {"player2": "", "player1": "Zach Carriger", "player1points": null, "result": "bye", "player2points": null}], "round-number": 4, "round-type": "swiss"}], "players": [{"sos": 5, "score": 0, "name": "Steven Smith", "rank": {"swiss": 0}, "mov": 0}, {"sos": 15, "score": 0, "name": "Javier Perez", "rank": {"swiss": 0}, "mov": 119}, {"sos": 50, "score": 20, "name": "Lyle Hayhurst", "rank": {"swiss": 1}, "mov": 622}, {"sos": 45, "score": 15, "name": "Brandon Prokos", "rank": {"swiss": 2}, "mov": 647}, {"sos": 45, "score": 15, "name": "Dom Cairo", "rank": {"swiss": 3}, "mov": 603}, {"sos": 35, "score": 15, "name": "Phil Kalata", "rank": {"swiss": 4}, "mov": 602}, {"sos": 44, "score": 15, "name": "David Pontier", "rank": {"swiss": 5}, "mov": 510}, {"sos": 34, "score": 15, "name": "Russell Roberts", "rank": {"swiss": 6}, "mov": 500}, {"sos": 41, "score": 15, "name": "Bill Sullivan", "rank": {"swiss": 7}, "mov": 342}, {"sos": 41, "score": 10, "name": "Matt Babiash", "rank": {"swiss": 8}, "mov": 451}, {"sos": 35, "score": 10, "name": "Luke Fritz", "rank": {"swiss": 9}, "mov": 341}, {"sos": 38, "score": 10, "name": "Ryan Cassidy", "rank": {"swiss": 10}, "mov": 191}, {"sos": 45, "score": 8, "name": "Jerry Skizzydek", "rank": {"swiss": 11}, "mov": 486}, {"sos": 31, "score": 6, "name": "Daniel Schneiber", "rank": {"swiss": 12}, "mov": 365}, {"sos": 41, "score": 6, "name": "Elliot Moore", "rank": {"swiss": 13}, "mov": 193}, {"sos": 56, "score": 5, "name": "Louie Fabicon", "rank": {"swiss": 14}, "mov": 400}, {"sos": 35, "score": 5, "name": "Zach Carriger", "rank": {"swiss": 15}, "mov": 388}, {"sos": 40, "score": 5, "name": "Nate Moore", "rank": {"swiss": 16}, "mov": 270}, {"sos": 38, "score": 5, "name": "Rob Ross", "rank": {"swiss": 17}, "mov": 270}], "date": "2015-01-10", "type": "Store championship", "id": 53}}"
Next up are create tournament and update tournament.
Edited by sozinCreate tourney api nearly done. Delete and update is next.
Because I'm a glutton for punishment, I'm now thinking about the next big feature: list exploration.
Here's a mockup of what I'm thinking:
The Big Idea here is to provide the ability to build expressions which filter out all the various lists submitted. For example, here I've said that I want any list that contains Soontir and Whisper with Gunner, OR Chiraneau and Echo with Rebel Captive.
Any feedback? Operators I'm missing? Functionality you'd like to see? I'm a bit fearful of taking on this feature as its going to stretch my very limited Javascript skills, but at the same time its one that I think would be quite useful.
Cheers!
Edited by sozincreate api is done. example code here . doing delete now, pending an api question to Axel.
re: missing operators: one obvious missing one is a ( group ) operator, to allow you to chain together boolean groups, ie
( soontir and ( whisper or echo ) ) or ( chiraneau or howrunner )
another missing operator is the ship operator, ie
( soontir and phantom ) or ( v595 or howlrunner )
re: feedback, before I jump into doing this like I'd love to know if it is going to be useful or not, as it represents a decent amount of work. help ! :-)
Sozin, looks like you PM box is full.
Seems like something is amiss in the Scum upgade choices? In the 'crew' options for Scum ships, I see 'K4 Security Droid' listed twice, however 'Outlaw Tech' isn't available as an option...
Oops! Fixed. thank you :-)
Heads up, subtle bug right now in cryodex json output. Currently receiving:
{
"player1"
:
"Thomas
"
Tycho
"
Skörd"
,
"player1points"
:
24
,
"player2"
:
"Robin Broberg"
,
"player2points"
:
50
,
"result"
:
"win"
},
As per json standards the double quote characters need to be back slash escaped; ie
{
"player1"
:
"Thomas
\"
Tycho
\"
Skörd"
,
"player1points"
:
24
,
"player2"
:
"Robin Broberg"
,
"player2points"
:
50
,
"result"
:
"win"
},
delete api is implemented. update is next.
the solution we came up with (well, axel did
) was for juggler to return a token to the caller on tourney creation. the token is a
uuid
.
from the spec
:
POST /tournaments
Content-type: application/json
Accept: application/json
{
“api_token”: “de305d54-75b4-431b-adbe-eb6b9e546013”
“tournament”:
{
“id”: 1,
“name”: “A new name for this tournament”
}
}
that token is then used when updating or deleting the tourney:
DELETE /tournament/{id}
Content-type: application/json
Accept: application/json
{
‘api_token’ : “de305d54-75b4-431b-adbe-eb6b9e546013”
}
Edited by sozinAdded support for alternate tourney formats.
When you create a tourney, you can add a format - standard 100 point dogfight, escalation, epic -- or your own format. also added to api.
Just published the latest tableau stats. we have a new most popular pilot in store championship season -- the blue b-wing!
Just published the latest tableau stats. we have a new most popular pilot in store championship season -- the blue b-wing!
Not surprised, the amount of them showing up is crazy. If you look at the count values they're only barely behind Bandits and cost nearly twice as much!
Edited by stmack