GithubHelp home page GithubHelp logo

cubing / ccm Goto Github PK

View Code? Open in Web Editor NEW
11.0 11.0 11.0 3.47 MB

Cubing Competition Manager

Home Page: https://live.cubing.net

License: GNU General Public License v3.0

JavaScript 83.29% CSS 0.85% CoffeeScript 0.66% HTML 11.98% Nginx 0.95% Shell 0.80% Python 1.47%

ccm's People

Contributors

baiqiang avatar coder13 avatar darrenk avatar fatboyxpc avatar jbmertens avatar jfly avatar keemy avatar larspetrus avatar patriciali avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

ccm's Issues

Show PBs/NRs/WRs

This will require importing the latest wca db export. I think we can punt on this for Phase 1.

Site admins

"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.

Entering times

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.

404 for edit competition page

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.

Event Toggle Fields Thing

Idea for whether event panels are collapsed or open by default:

  • If there are no events with rounds, everything is uncollapsed.
  • Otherwise only events with rounds are uncollapsed
  • Possibly store collapsed state in cookies?

Navbar improvements

Ideas for improvement:

  • keyboard shortcuts to navigate anywhere! Perhaps something inspired by the office ribbon would work nicely?
  • Nav in data entry section should jump to latest open round (like the results pages do)

Show schedule

(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)

Registration and check-in

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.

Enforce registration requirements

To register, users must have the following:

  • a verified email address
  • a non-empty name
  • a birthday
  • #100 wca-id (this is obviously optional, but is certainly nice to have, we should import the wca export and be able to help with this a la cubingusa)
  • citizenship
  • gender

Creating a competition

This should actually be pretty simple.

  • Name
  • WCA competition id (see #12)
  • Date
  • Location (#22)

Most of the work is going to be in adding/editing events (and rounds).

Online payment for registration

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).

Switch back to meteor-autocomplete from twitter's typeahead?

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.

Scramble server

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.

Add registration window(s)

Some organizers like to close registration a week before a competition. This would be a good thing to support for Phase 1.

Competitions need a location

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.

Ask for competitor locations when they create an account?

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.

  • Most importantly, it's not strictly needed, so definitely isn't going to happen for Phase 1.
  • Depending on how it it done, it could feel invasive/be a legitimate privacy concern

Preregistration and registration

There's a lot here.

  • Parse cubingusa's registration format
  • Parse the WCA's registration format
  • UI to mark people as having registered, and sign up/drop out of events (this is called "check-in", see #51)
  • Create our own registration website? (this is going to have to happen for Phase 1) (also being tracked in #51)

Limit size of registration

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.

Site admin dashboard

This is a page where site admins can do site adminy stuff, such as:

  • Assign new site admins (#34)
  • Handle requests for sites to be listed? Not sure how we want to do this. Having organizers email site admins is probably good enough.

Add round and close round buttons

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.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.