cubing / ccm Goto Github PK
View Code? Open in Web Editor NEWCubing Competition Manager
Home Page: https://live.cubing.net
License: GNU General Public License v3.0
Cubing Competition Manager
Home Page: https://live.cubing.net
License: GNU General Public License v3.0
Some organizers like to close registration a week before a competition. This would be a good thing to support for Phase 1.
(pulled this out of #6)
We need some way of asking organizers for start and end times for the rounds they plan to run.
(There are a lot of cool things we could do here. A drag and drop calendar ui would be nice. We could also estimate how realistic a schedule is as a function of the number of staff/stations, or even autogenerating 1 or several suggested schedules. All of that is out of scope for Phase 1)
I think this is a good idea. See https://gentlenode.com/journal/meteor-20-verify-an-email-with-meteor-accounts/42. Mandrill seems like a pretty good service to handle mass emailing: https://github.com/timmyg/meteor-mandrill
Search as you type/choose with a # (vimperator style) selecting of competitor. Enter all solves with only numpad. Talk to Chester and Shelley about this.
Phase 2 - support entering 1 solve at a time. I don't think there's any value in creating webui for that though, it will only happen through the mobile app.
To register, users must have the following:
This could let us show scramblers the correct color scheme.
We should also not allow people to create competitions until they've verified their email address.
I didn't like the original behavior of meteor-autocomplete, but it seems to have changed: Meteor-Community-Packages/meteor-autocomplete#64 (comment).
Our current solution is great, but won't work for selecting data that can't fit client side. Right now, we simply ship everything over to the client, but that wouldn't work if we want to let people choose from all users, rather than only the users that are registered for the competition (not sure that's something I we want to support anyways).
Not making this block Phase 1 for now, as I don't see a need for the more advanced features meteor-autocomplete would give us.
We need to give organizers a UI to enter prices (can those prices change over time?).
The requires asking the user for a number of people to advance, and copying them all over. We should handle the case where they decide to add or remove people to the round before it starts.
For each event on the competition organization page, there will be an "Add Round" (glyphicon-plus-sign ?) button that will create a new new round. This can be done before or during a competition, and doesn't require any results to be entered in round 1 to create round 2, for instance.
For each ongoing round, we'll have a "Close Round" (glyphicon-ok-sign or glyphicon-arrow-right?) button that will probably pop up a modal dialog that will show any issues with the previous round, and let you choose how many people advance to the next round (following the regulations, of course!). It will then copy over the correct number of people, and mark the previously open round as no longer open.
Later on, we can consider how to support organizers that want to announce the rules for advancing to the next round (# of people, percentage, or a some sort of time cutoff). See #14 for this.
This is a lot of work.
Jim suggested this, as it's something that cubingusa does.
I talked to Devin about this, and we're not wild about it for a few reasons.
Right now, there's nothing warning/preventing you from scheduling round 2 of an event before round 1 of that event.
We can punt on this for Phase 1.
;-)
We should also show who advanced in the Round template.
"site admins" would be the ones who assign wca id's to competitions and mark them as "listed". This is basically anyone we know and trust. It does not have to be WCA board members, but they would certainly be good canditates for this job.
Right now we just blindly delete the round. I think we could also give a nice visual indicator of the fact that the user can delete the round if they really need to, but that we're going to prompt them. Perhaps a red button with a tooltip?
James pointed out http://www.cubingusa.com/usnationals2014/schedule.php. It would be pretty slick to support something like that.
This isn't necessary for tiny local competitions, so we're going to punt on this for Phase 1.
This is something only a select few should be able to do. Right now, everyone who creates a competition is allowed to list it.
This will require importing the latest wca db export. I think we can punt on this for Phase 1.
cubingusa has this, and it's pretty cool. See http://koii.cubingusa.com/, http://ca.cubingusa.com/, and http://union.cubingusa.com/
Ideas for improvement:
Since we're not going to export to excel, we need to generate WCA JSON for submission. This requires that organizers upload scrambles, because the WCA JSON contains scrambles.
Ok, so competitions need a lot of things, but once we have their physical locations, we could do something cool like showing a map of all ongoing/soon/recent competitions on the home page, rather than a boring list.
This is useful for stuff like Lunch, or Registration. We need to do this for Phase 1.
Idea for whether event panels are collapsed or open by default:
We're planning to create "anonymous" accounts to handle people checking in for a competition that they didn't register for, so we need to make sure that nobody can log into those accounts.
See thewca/wca-workbook-assistant#48
This depends on #2, but should be fairly easy. I don't want to do it until the end because our schema may change.
This is either # of people, percentage, or a some sort of time cutoff. We will definitely punt on this for Phase 1.
So people don't have to do stuff like this: http://www.cubingusa.com/michiganmystery2014/register.php.
Definitely not a priority for Phase 1.
Right now, the only way to become a site admin is by manually editing the database.
https://github.com/nate-strauser/meteor-connection-banner/ looks pretty easy.
This seems like a good thing to have for Phase 1, but if it proves tricky, we can punt on it.
This could be with Stripe or Paypal.
James and Devin both mentioned square integration, but I'm not convinced we can do anything useful there.
I'm also unsure if this is a necessary feature for Phase 1. I believe regional comps usually don't do any online payment, and instead just ask for money at the door. I would rather see organizers require online payment if they're going to restrict the number of people that can register (#39).
While we can punt on online payment for Phase 1, we have to have a UI for organizers to enter prices, otherwise we won't be able to show the requisite information on the competition home page. I've created a separate issue for this (#40).
I looked into this a while ago, ran into some issues, and gave up. I believe it is really critical to get some light testing, it's amazing how often I find myself breaking stuff and not realizing for quite some time.
Dumping a couple of links I saved to look into:
Once we have scrambles (#2), it becomes possible to serve scrambles for ongoing rounds to staff members. This seems way better than distributing a large zip file around.
This is not critical for Phase 1, and could totally get pushed back.
I don't know if this should be a per event limit, or an overall limit on the size of the competition.
@jbcm627 could you comment on what, if anything, cubingusa does here?
I'm unsure if this needs to be done for Phase 1.
See for example eventCode
, which is currently optional: https://github.com/jfly/ccm/blob/b6b0f138505fb1db221bbe1c059e4173c6f56ae2/both/collections/round.js#L353-L357
mailto links seem like they only scale up to ~500 emails before you start running into limits. It would probably be best and most reliable to give organizers a textbox and use mandrill for this.
Right now everything says live.cubing.net
, and it makes the browser history useless. http://stackoverflow.com/a/19883907 seems like a decent way of doing this.
Right now, we just display a competition with empty data, which is quite confusing. I think we could also make it clearer what's going on when you look at the edit competition page for a competition you're not an organizer of.
There's a lot here.
This is a page where site admins can do site adminy stuff, such as:
First off, some definitions:
Registration is the thing that competitors do online before a competition. (They'll pick the events they're interested in, maybe pay for those events, and may volunteer to judge and scramble, and may say they're going to bring guests.)
Check-in is something that AFAIK, happens at every competition. This is when competitors show up and pay for the events they registered for but didn't pay for, and score cards are possibly filled out, or reorganized. When we get around to Phase 2, this may be when we give competitors their id card for the competition =).
@jbcm627's addition of a Registration collection is designed to handle registration. However, in order to enter times for a competitor, we need there to be an document in the Results collection for them. Registration does not place a competitor in any Results collection. Check-in will copy competitors from Registration to Results so that a competitor's list of registered events will equal the list of events they're "checked in for".
Here's a rough sketch of what the check-in table will look like:
Name | 333 | 444 | |
---|---|---|---|
Jeremy | X | Check in button | |
Jim | X | X | Check in button |
Devin | X | Check in button |
Each row corresponds to a competitor. Every cell is a checkbox that is checked if the competitor is registered for that event (if an organizer clicks this checkboxes, it will togger the competitor's registration for that event). If registered != checked-in for any cell, then we color the background of the cell red to draw attention.
If a competitor's registered events != their checked in events, we show either a "Check in!" button, or an "Update check in" button according to whether they've already checked in.
NOTE: In the interest of not ever deleting data without it being very obvious beforehand, we will disable checkboxes corresponding to events for which times have already been entered.
Just looking at the code, it looks like there's nothing that would cause a publication to refresh when this.userId becomes not-null.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.