Looking at Meet Entries

I have started looking at generating meet entries (SDIF) directly from wp-SwimTeam.  When you factor in events, strokes, registrations, scratches, and relays, the problem of generating meet entries becomes fairly complicated.  I’ve been sitting on the couch watching golf and perusing the SDIF specification and have a pretty good idea of what I want to do, now I just need to decide how to do it.  For the time being, I think I am going to focus on individual events as they are much easier generate than the relay events.  However, I don’t want code myself into a corner and make relay events hard to implement so I can’t decide what to do.  I also need to decide if I approach this from a roster perspective (ie by swimmer) or from the meet perspective (ie by event).  Hmmm …. decisions, decisions!

Job Reminder E-mails

Several clubs, including my own, have asked if I would add a feature to send out reminder e-mails to people for the Jobs they have signed up for.  Today I implemented this feature and am in the process of testing it on the wp-SwimTeam Demo site.

The Job Reminder e-mail will look fairly similar to a Job Sign Up e-mail and will be sent when the Admin chooses to initiate the action.  E-mails can be controlled to limit who receives them based on the Job Duration (Full Meet, Partial Meet, Full Season, etc.).  In most cases, the Reminders need to be sent out to the people working the Meet Jobs.

Look for this update in the next day or so after I’ve done a bit of testing with it.

wp-SwimTeam v1.8.642 now available

Over the past week or so I’ve been working on some new functionality that is finally ready to go.  The opt-in/opt-out module has been based on strokes since the initial implementation and this model worked well for the MacDolphins but some other teams prefer to register (or scratch) swimmers on a per event basis.

Events have been supported for a while but other than adding them to a swim meet, nothing has been done with them.  The existing event functionality is the basis for the results work I hope to complete some day.  Because the Event information is already defined, allowing the Opt-In/Opt-Out module to be based on the actual events was pretty straight forward.  There is a new setting on the Options->Swim Team tab which controls which Opt-In/Opt-Out model wp-SwimTeam uses (Event or Stroke).  By default it will continue to use Stroke since that was the original functionality.

The new functionality had a ripple effect across much of the plugin, causing changes to the Reports module and other places too.  While working on the Reports I decided to expose the Job Assignments and Swimmers Reports for all users however non-admin users will only see their own job assignments or their own swimmers.  This new functionality also came from one of the MacDolphins parents who wanted to be able to see which jobs she had signed up for.  In the same conversation, another parent asked me if I could make it so she could see if she had scratched her swimmers.  These two requests led to exposing some of the Reports in a limited fashion to all users.

The last major feature is the ability to run a report that shows the parents of active swimmers and their status against the volunteer (jobs) commitment set by the team (set it to zero for no commitment).  This is a feature our volunteer coordinator has been after me to implement for some time.  While the Report works fine, it is a little slow, particularly the first time it is run so be patient.

The new version modifies the database tables so PLEASE BACKUP your database before you install it.  I don’t expect any issues and I’ve been running it on the MacDolphins site for the last two days but it is always a good idea to backup your database before upgrading.

There are a few other minor bug fixes and cosmetic changes that I made while working on these improvements.  I ran into one very odd bug that only exposed itself on Chrome – I’ve changed the Load All Events functionality because the Javascript that pulled all of the events from one list box to another didn’t work on Chrome.

There are still some things to improve – I’d like the list of events a swimmer can be registered for be limited to the events for their age group but don’t have good solution for that right now.  I am considering using icons across the action bar instead of the drop down menu.  I had moved away from buttons because they didn’t fit but the dropdown actions are confusing so don’t be surprised to see icons in the near future if I can find some I like!

The WordPress plugin repository has been updated so the plugin should begin to auto-update soon too but in the meantime, you can find the latest release on the download page.

Finished the Job Commitment Report

This evening I finished the Job Commitment Report.  I am not sure why but I had a tough time getting going on this one.  It will appear as a new tab on the Reports menu and will report the total number of credits a user has committed to for the requested season.  The report is limited to the users who have swimmers registered for the specified season.

While working on this new functionality I also found a couple of minor bug which I have also fixed.  One of the bug failed to account for a swimmer unregistering for a season so they still would have been seen as active.

I hope to have a release  out in the next day or so.

New Opt-In/Opt-Out Event model running

I have completed all of changes to support the opt-in/opt-out event model I described late last week.  I have not released the update yet as I am still doing some testing.  I have it running on the wp-SwimTeam demo site.  You can see an example of what one of the reports would look like when swimmers are registered on an event basis instead of a stroke basis.

While working on this I found some problems with the Events module which I have also fixed.  One was a very odd case which only was exposed in Chrome as it worked fine under IE9 and FireFox 4.  It turned out to be some sort of a Javascript difference between browsers so I have changed the GUI for the Load Events form.

If you switch from the stroke based model to the event based model for opt-in/opt-out, you may see some empty or unknown events for existing records.  These are due to a non-existent event id in the record.  It doesn’t really hurt anything but does look odd on the report so I plan to look into it.

I am looking for someone to do some testing before I release an update, if you want to help, get in touch with me.

Changes coming for Opt-In/Opt-Out

I’ve had an ongoing dialog with a team in Texas using wp-SwimTeam that has a much different usage model for participating in Swim Meets than the MacDolphins do.  Instead of registering or scratching for a meet, their team has their swimmers register for particular events.  In speaking with a parent of one of our year round swimmers, they do the same type of thing for their year round meets.

Wp-SwimTeam doesn’t currently support this usage model but I can see the need to do so.  The system already allows the definition and assignment of events to a swim meet, it needs to be extended to allow swimmers to register to particular events instead of the global Opt-In/Opt-Out option which is currently available.

I don’t plan to eliminate the current usage model because it works well for our swim team but I plan to extend it by allowing what I am referring to as the Opt-In/Opt-Out usage model which will either be by Stroke (the existing model) or by Event (the new model).

Fortunately the data model I set up when I first implemented Opt-In/Opt-Out will handle this change fairly easily with one exception.  For some odd reason I called the field in the database which stores the stroke code ‘eventcode’.  This was a bad idea and I am going to change it to ‘strokecode’ in the next release of the plugin which will cause a bump in the database version.  This isn’t the first time I’ve changed a database column name so I am not too worried about it but I wanted to be up front about what I am doing and why.

In the current Opt-In/Opt-Out Stroke based usage model a user can start from a swim meet and update all of their swimmers on a per meet basis or they can start from a swimmer and update all of the meets on a per swimmer basis.  This will remain the case.

However, for the Event based usage model all action will have to be initiated from the swimmer, it will not be possible to update multiple swimmers for a single meet.  This change is due to the swimmers being in different age groups so the events have to be relevant to a swimmer which isn’t possible (or easy anyway, I guess anything is possible) for multiple swimmers.

What about swim ups?  I am not sure how I want to handle swim ups right now.  In the first implementation I will allow an Admin user to register a swimmer into any event but a parent/guardian (standard user) will only be allowed to register their swimmer for the events that correspond to the swimmer’s age group.

Feel free to comment on whether or not I have missed anything and I am looking for someone to validate the usage model once I have it up and running on the wp-SwimTeam Demo site.

wp-SwimTeam v1.7.608 now available

A quick turnaround on the bug reported a short time ago.  It has been fixed and I have posted v1.7.608 of wp-SwimTeam.  This fixes the bug which essentially made the Manage->Users tab almost unusable unless you had a very small number of users.

This release has also been pushed to the WordPress plugin repository so it should be available via the plugin updater fairly soon.

What isn’t in v1.6.605?

The major feature that I had been working on which I didn’t complete is the ability to generate a Jobs vs. Commitment report.  The Jobs module allows each job to assigned some number of credits and there is a setting to set the minimum number of credits each user is responsible for.  By default the system will use zero which means there isn’t a minimum.  In the latest release, when a user looks at their My Jobs tab, it will show the jobs they have committed to and sum up the credits.  If the sum of the credits is less than the minimum, an error notification will be displayed for the user.

Right now this message is only displayed on the My Jobs tab but an administrator will also see it when view selecting the Jobs action for any user from the Manage->Users tab.  I had given some thought to displaying the notification anytime a user logged in but have conclude that would be too intrusive.  I may make it an optional setting at some point though.

The one thing I haven’t figured out is how to handle a situation like we have with our own team. On our team we ask each family to volunteer four times (four credits) for the season regardless of how many swimmers they have.  If both parents are in the system (primary and secondary contacts) right now they would be erroneously flagged if each signed up for two jobs because together, they have met our requirement.

Reporting  job commitments versus user is pretty easy and I will do that in the next few days but I have also considered reporting job commitments versus swimmer so that both contacts can be accounted for.  In speaking with some teams locally, they require two volunteer commitments per swimmer so that is yet another permutation to account for.  In the short term I will likely only report commitments versus users and leave it at that for now and revisit it after the season as there are some other things I need for our season which starts in three weeks:  Results, Meet Entries, and some work on WinSwim/Hy-tek interoperability.

Potential Report Bug

There is a bug with the User and Swimmer reports which will manifest itself when either the User or Swimmer optional field count is set to zero AND the table where the optional fields are stored is completely empty.  I have fixed the bug and checked it but am not quite ready to do a release due to some other changes I am in the process of making not being finished yet.  The bug will also manifest itself when trying to export a list of users or swimmers as CSV.

If you run into this problem, let me know – there is a fairly easy work-around that will prevent it from happening.