nicholasmr / obblm

Automatically exported from code.google.com/p/obblm
26 stars 54 forks source link

Planning for Tabletop module #367

Closed GoogleCodeExporter closed 9 years ago

GoogleCodeExporter commented 9 years ago
I'm starting to look at the tabletop module, and by listing the features
that I intend to include I hope to see if someone else is interested in the
features (or maybe already have implemented them!).

- Support for replacing teams in the league. The idea is that the replace
feature will only affect the standings page for a particular tournament.
Any already played games will remain the same, and any unplayed but
scheduled games will be changed to the new team instead of the replaced one.

- User scheduled games, as discussed in Issue 338. My current
implementation is based on having a custom round for all user scheduled
games, any comment and input on this?

- A printable match report PDF for use to use as a template in offline
games. (This is not directly related to the OBBLM core system, but it would
be convenient to share the template with others once created.)

Original issue reported on code.google.com by setomi...@gmail.com on 21 Feb 2010 at 5:44

GoogleCodeExporter commented 9 years ago
The first one is not really possible. 
Once you change the owner ID or such of a team, any syncing WILL set the new 
team
properties _everywhere_. This means you cannot just replace the team in a 
tournament,
since the replacement would have a global affect . Also, what do you mean by 
replace?
You can't delete teams having played games, this breaks the statistics 
dependencies.

Original comment by Nimda...@gmail.com on 21 Feb 2010 at 7:00

GoogleCodeExporter commented 9 years ago

Original comment by Nimda...@gmail.com on 21 Feb 2010 at 7:00

GoogleCodeExporter commented 9 years ago
http://code.google.com/p/obblm/source/browse/trunk/modules/leegmgr/class_upload_
botocs.php
starting at line 208 may give you some ideas.  You have to check that other 
matches
aren't already scheduled.  You don't necessarily have to schedule much in 
advance
then let the match be reported.  You can have the user fill in a report and 
have it
create and submit the match data.

Original comment by funnyfin...@hotmail.com on 21 Feb 2010 at 11:20

GoogleCodeExporter commented 9 years ago
About the team replacement: I'm only considering a pretty small proceedure, 
something
like:

- Add a "Replacing Team ID" column to the teams table
- When summarizing the tournament standings table, add the tournament points
generated by (all) the previous team(s) to the ones generated by the new team.
- When replacing a team, also re-schedule any unplayed games to point to the 
new team
instad of the old.

This means the old team data is still left as is, and the only thing that has 
to be
changed is the points summary.

The background for replacing teams is that we allow coaches to restart their 
teams if
they get a bad start (but they keep any tournament points generated by their 
previous
team), and having them create a new team and then use the Replace feature would 
make
OBBLM support this.

Original comment by setomi...@gmail.com on 22 Feb 2010 at 5:59

GoogleCodeExporter commented 9 years ago
Unfortunately, it's not a small procedure, it's in fact very large and affects 
almost
all core parts of OBBLM. The thing is that OBBLM has no (none at _all_) support 
for
shared relations of data.
I won't be doing this change any time soon, sorry.
But if you can make your module do it, that's fine by me.

Original comment by Nimda...@gmail.com on 22 Feb 2010 at 7:00

GoogleCodeExporter commented 9 years ago
I've implemented the first two parts (Team replacement and User scheduled 
games), and
if you want to play around with the feature you can visit:

http://www8.cs.umu.se/~danielh/obblm/bubble-v2/

User / Password: obblm will give you site admin rights, which you need if you 
want to
check the replace feature out.

The replace feature can be found at: Admin -> Management Coaches & Teams
User scheduled games is done on a per-tournament level, so this is done at the
tournament page.

(Also note that there are several minor changes in our version)

Any comments / reports of quirks are appreciated :)

Original comment by setomi...@gmail.com on 25 Feb 2010 at 7:25

GoogleCodeExporter commented 9 years ago
Oh and the team replacement is currently only done for the table on the front 
page, I
haven't decided if modifying the standings page is worth it.

Original comment by setomi...@gmail.com on 25 Feb 2010 at 7:26

GoogleCodeExporter commented 9 years ago
Your match report for that replaced team is messed up now.

Original comment by funnyfin...@hotmail.com on 25 Feb 2010 at 7:49

GoogleCodeExporter commented 9 years ago
Basically you don't get to view what happened in the previous matches it looks 
like.

Original comment by funnyfin...@hotmail.com on 25 Feb 2010 at 7:50

GoogleCodeExporter commented 9 years ago
I also tried to un-replace:

Request failed : You do not have permissions to manage the selected coach or 
team.

Original comment by funnyfin...@hotmail.com on 25 Feb 2010 at 7:52

GoogleCodeExporter commented 9 years ago
I can't emphasize enough how much you should NOT implement the replacement 
feature.
The ID schema/data relations of OBBLM objects (players, teams, coaches, races) 
are so
entangled that implementing this "replacement ID" requires heavily modifying the
OBBLM SQL core if you want it to be done probably. 
Also, I can't give proper support/help you if you mess stuff up.

Original comment by Nimda...@gmail.com on 25 Feb 2010 at 7:58

GoogleCodeExporter commented 9 years ago
As you see the goal of any matches remaining the same is already missed.

What is the goal of replacing a team?  If you want to replace in a tournament, 
why
not just replace it in the actual matches that haven't been played?

I just don't see the reasoning here.

Original comment by funnyfin...@hotmail.com on 25 Feb 2010 at 8:03

GoogleCodeExporter commented 9 years ago
Ok, let me explain a bit more about the background and the procedure to 
implement 
this.

The usage scenario is simple: We allow coaches to restart / replace their teams 
during a tournament, while keeping their tournament score. 

In practice, this means adding the score of the replaced team to the score of 
the 
new team when displaying the standings table, and this is exactly what my code 
does! 
This means that NOTHING in the OBBLM SQL core is modified _at all_. There is a 
stand-
alone "replacements" table that maps between a pair of team_ids, and there is a 
method for rearranging the $teams array obtained from Stats:getRaw before 
generating 
the fp_standings table, nothing more!

Funny: About the team reports, these are very bogus and I've only bothered 
entering 
the score field when testing the sorting of teams. Is there any other bug you 
can 
find? 

About "You do not have permission", I'll look into this, but I guess it is the 
call 
to retire a team that fails (and I haven't quite figured out how the Security 
ring 
stuff works, do you need site-wide permissions to retire teams? If so, 
replacement 
wont work for the "obblm" account.)

Original comment by setomi...@gmail.com on 26 Feb 2010 at 7:49

GoogleCodeExporter commented 9 years ago
Still you no longer meet your requirement of showing matches of the previous 
teams. 
The old match shows the new team.  Why not just replace a team that wants out 
with a
new team in just the future matches?  You can then just add the two teams 
together
for points.  Much simpler and I believe it does what you want without breaking 
the
past matches as I think you have done...

Original comment by funnyfin...@hotmail.com on 26 Feb 2010 at 4:16

GoogleCodeExporter commented 9 years ago
Thats exacly what I do already. :)

I do have a problem though, sometimes a team is dropped from the mv_teams table,
could this have something to do with me retiring the old team? 

Original comment by setomi...@gmail.com on 26 Feb 2010 at 6:38

GoogleCodeExporter commented 9 years ago
I don't see how that is what you do.  You are switching the teams in previously
played matches as well...  You need to switch team ids in unlocked matches 
only...

Original comment by funnyfin...@hotmail.com on 26 Feb 2010 at 6:47

GoogleCodeExporter commented 9 years ago
If it is what you are doing I don't see it and you haven't explained it that 
way.

I don't think Nicholas would have a problem with you just switching team ids of
future matches that haven't been played yet.  It doesn't mess with anything at 
all
that I can tell.

Original comment by funnyfin...@hotmail.com on 26 Feb 2010 at 6:49

GoogleCodeExporter commented 9 years ago
Ok, maybe I should have been more clear about that. :) (But the first post 
says; "Any
already played games will remain the same, and any unplayed but scheduled games 
will
be changed to the new team instead of the replaced one.")

Anyway, I've implemented everything mentioned above apart from the match-report 
PDF.
You won't be able to see it running at the moment (as I'm currently traveling 
with my
test machine), but I'll try to pack it up as a module within shortly.

Original comment by setomi...@gmail.com on 1 Mar 2010 at 10:52

GoogleCodeExporter commented 9 years ago
Regarding the match report PDF - what is it used for? Both coaches signing off 
the
changes to their teams and handing it to commish? Or an easier way to, during 
the
game, keep track of changes? (Like CAS, MNG's, TD's etc)

There was some italian guy wanting me to do that quite some time ago. (Fabio 
maybe?)

Daniel - catch me in chatt if you want some tips for FPDF. It's a bit 
cumbersome to
work with. (Depends on how ambitious you are though. A simple table is quite 
easy.)

/Daniel

Original comment by blodae@gmail.com on 2 Mar 2010 at 1:32

GoogleCodeExporter commented 9 years ago
Both of the above actually. :) We're running a table top tournament using our 
league
teams, and since we want the results to be entered into OBBLM afterwards I 
think it
will be a lot easier if there is a predefined form that can be filled out for 
every
game, and entered into OBBLM after the tournament. The same form could of 
course also
be used during an ordinary game to keep track of things until the game is over.

Thanks! It started out quite well since I'm re-using your PDF code right away, 
only
changing the calls made to the predefined method. :) However, I'll let you know 
if I
get stuck.

Original comment by setomi...@gmail.com on 2 Mar 2010 at 3:43

GoogleCodeExporter commented 9 years ago

Original comment by Nimda...@gmail.com on 9 Mar 2010 at 2:52

GoogleCodeExporter commented 9 years ago
Could you also post the code here you mailed me?

Original comment by Nimda...@gmail.com on 21 Mar 2010 at 1:25

GoogleCodeExporter commented 9 years ago
Sure thing, here goes:

Original comment by setomi...@gmail.com on 22 Mar 2010 at 10:07

Attachments:

GoogleCodeExporter commented 9 years ago
I'm taking these one step at a time, I'm a little busy atm.

I've added the user scheduler, but made some changes. I won't add a new round 
type
like the one you suggested. Instead I've restructured the scheduling page and 
made a
direct link from the plug-ins menu.

Like what you have done so far.

Original comment by Nimda...@gmail.com on 26 Mar 2010 at 11:06

GoogleCodeExporter commented 9 years ago
I've now added the remaining two modules.

Excellent work I must say. I'm very impressed. Great contributions.

Only one comment: Why do you fade in/out the different parts of the in-focus 
box?
There is space enough to display it all at once? 
Why not instead shift between a couple of teams?

Original comment by Nimda...@gmail.com on 1 Apr 2010 at 9:09

GoogleCodeExporter commented 9 years ago
Great! I'm glad the code made it in there :) I'll check the latest official 
version
out right away!

About the in-focus box: I wanted to keep the box as small as possible to make 
sure
the other standing boxes (most CAS, TD etc.) where not pushed away too far, but 
that
could of course be changed. It is also possible to add additional information 
about a
team simply by adding another "page" in the loop, without affecting the layout 
of the
page at all. (Or the script by the way, just create another <div> element and 
it will
be included.)

Another alternative would be to loop through the teams one by one, starting 
with t1
page 1, t1 page 2, t2 page 1 and so on.

Original comment by setomi...@gmail.com on 8 Apr 2010 at 6:58

GoogleCodeExporter commented 9 years ago
Well, I frankly think it's too big (am I alone on this?). E.g. the team image 
could
be smaller. Text could be side by side using the full width of the box with 
maybe
smaller text. Change fonts for headlines etc..
Just still kind'a has a beta feel to it/does not look done? Just me?

Original comment by Nimda...@gmail.com on 9 Apr 2010 at 12:51

GoogleCodeExporter commented 9 years ago
Come to think of it, I never sent you the .css for the InFocus box did I?

It should look something like it does on our frontpage:

http://stridshammaren.se/bubble/

Original comment by setomi...@gmail.com on 11 Apr 2010 at 7:43

GoogleCodeExporter commented 9 years ago
That's probably why, please send it!

Original comment by Nimda...@gmail.com on 25 Apr 2010 at 3:17

GoogleCodeExporter commented 9 years ago
This should do:

/* InFocus Mod */

#inFocusBox .leftContentTd{
    font-weight: bold;
    padding-right: 1em;
}

#inFocusBox .teamLogo {
    float: left;
    margin: 0 36px 0 20px;
}

#inFocusBox .teamName {
    font-weight: bold;
}

#inFocusContent {
    position:relative;
    left: 160px;
    height: 80px;
}

#inFocusContent P {
    font-variant: small-caps;
    font-weight: bold;
    margin-top: 5px;
    margin-bottom: 5px;
}

#inFocusContent DIV {
    position:absolute;
    top:0;
    left:0;
    z-index:8;
}

#inFocusContent DIV.invisible {
    display: none;
}

#inFocusContent DIV.inFocus {
    z-index:10;
    display: inline;
}

#inFocusContent DIV.last-inFocus {
    z-index:9;
}

Original comment by setomi...@gmail.com on 27 Apr 2010 at 11:58

GoogleCodeExporter commented 9 years ago
All modules are implemented.
I have also added the CSS properly - looks good now.

r719.

Original comment by Nimda...@gmail.com on 9 Jun 2010 at 1:09