forked from rdunlop/unicycling-registration
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathdesign.txt
205 lines (148 loc) · 8.25 KB
/
design.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
Unicycling Software - Overall Design Document
=============================================
Purpose:
* Describe the interfaces and responsibilities of each system in the Unicycling software ecosystem.
* Reference each of the software pieces, so that you can choose which one(s) you need for your event.
EventClass
==========
An EventClass has the following effects:
- Competition: how do "places" get calculated?
- Competition: what is the printed description of the results ("Time", "Score", etc)
- Competition: can_calculated_age_group_results? which enables calculating placings per-age-group (ie: before the whole competition data is entered)
- AwardLabel: do we print the name of the competition along with the Event name, or just the competition name ***** do some other way?
- Competitor: does a competitor have any results, based on the way that the competition is being calculated
- Competitor: what is the current score/result for the competitor
- JudgeType: Display this judge-type as an option when
- CompetitionController: what are all of the results for a competiton (be able to destroy them all)
- CompetitionController: when setting all places, where do I redirect to (XXX can be eliminated with helpers?)
- CompetitionController: export_function chooses the results (should be combined with the competitor.result probably)
- EventsController: chooses which events to show on each of the pages o
- ImportController: determine the type of data being importetd for a competition (Time, or External)
- ImportController: determine how to convert from an ImportResult into a true result (Time, or External)
- EventsHelper: Where are scores entered
- EventsHelper: Where are scores summarized
- EventsHelper: some others (not needed?)
# def self.scoring_options
# {
# # How to gather
# # results
# # How to calculate scores from those results
# #
# # Settings: ArtScorClass ArtScorClass2015 StreetScoreClass StreetScoreClass
# # ArtResCalc ArtResCalc2015, StreetResCalc, StreetFinalResCalc
# "Artistic" => ["Freestyle <= 2014", "Freestyle 2015+", "Street Comp Prelim", "Street Comp Final"],
# start_entry => []
# end_entry=> [(implied) "Judges"]
#
# # ExternalResultResCalc BOTH ...but different PointsScoringClass invocations?
# "Points" => ["Low to High", "High to Low"],
# start_entry => [nil, "Mass Start"] (allows multiple waves for Trials, for example)
# end_entry=> ["One Data Per Line", "Externally Ranked (CSV)"]
#
# # RaceResultCalculator BOTH...but different RaceScoringClass Invokations?
# "Timed" => ["Shortest Time", "Longest Time", "Shortest Time Multi-Lap"],
# start_entry => ["Two Data Per Line", "One Data Per Line", "Mass Start" (allows Wave entry, and Geared/Crank entry too, for now)]
# end_entry=> ["Two Data Per Line", "One Data Per Line", "Track E-Timer", "Externally Ranked (CSV)", "Chip-Timing"]
# note: Setting "end_entry" to "Track E-Timer" Enables the heat/lane assignment system
# note: cannot set start_entry to anything if end_entry is Track E-Timer
#
# "High/Long" => ["<= 2014", "2015+"],
# end_entry=> [(implied) "High/Long Judges"]
#
# "Overall", => [],
# }
# end
#
# Migration:
# end_entry of Track E-Timer => start_entry= nil (and confirm that uses_lane_assignments: true)
# DROP uses_lane_assignments (part of the Scoring Class now )
# ScoringClass migrations:
# Freestyle => ""
# it might be useful to separate the Wave-Recording from the Geared/CrankSize recording, for some events gather that during check-in
Registration (Ruby on Rails)
============
The Registration system is an online application which is designed to be hosted months before the competition.
It allows the event organizers to configure the offered events, and set the prices for competitor/non-competitor registrations.
It is easily able to be configured to work with paypal for online payment processing.
Inputs:
* Requires configuration of the details of the unicycling competition
* Which races/competitions
* Date of competition
Outputs:
* Set of unique registration records, each of which is associated with multiple events, and multiple details for those events.
Judging (Ruby on Rails)
=======
The Judging application is to be used by judges during the competitins themselves.
It is designed to be used by the judges for data entry/transcription.
Inputs:
* Requires configuration of the events, as well as the list of judges who can judge the event.
* This is an output from UCP
Outputs:
1) A report of raw scores, which can be imported into UCP
2) [soon] A report of the resulting scores, places, which can be used for other reporting purposes?
-------------------------
Data Flow analysis/ideas:
1) Registration Details:
- Name/Contact
- Event sign up choices
2) Event Configuration Details:
- Event names
- Event choices
3) Event-Competitor Details:
- Name/ID - Event configuration
Used for configuring the Judging Application
4) Judging Results:
- Competitor, Judge, Scores
Used for transferring data back into UCP for the "official" calculations.
------
ROLES:
------
SuperAdmin: (e.g.: Robin)
- Configures the system, is given the power to destroy everything, and shoot themselves in the foot often.
Admin: (e.g. Connie)
- Able to do many things that normal users cannot
- Able to view/modify Payment/Registration data
Judge:
- Able to view/use the judge-data entry system
- Able to judge any event, in any way (judges are not event-specific)
- Able to ONLY view their own scores
Chief Judge (for an event):
- Able to do assign judges
- Able to do everything a judge can do (when they self-assign themselves as a judge)
- Able to see the results that judges have entered
- Able to "Lock" event_categories once scoring is completed
=============================
How would I like it to work?
Registration gathering:
- Event organizers configure the events being offered, adding/removing as desired.
- Event organizers define the prices and price-increase schedule
- Registration opens, and payment is received.
Event Configuration:
- Event organizers can use the initial event-configuration to seed this system, which then presents them with the options/configuration-dials necessary to fully define each event/age-groups.
- This system can run independently of the Registration site, and does not require any "payment" system integration (allows import of excel file for registrant details)
- Outputs a list of Event/competitor lists, which can be used to determine who is competing when/where.
Judging data application:
- Is designed to be used by trusted/trained personnel for inputting race data.
- Each race may initially be configured with a list of "competitors in this event"
- Each race may initially be configured with the judging rules, which determines the "type" of the race, such as Slow race, multi-lap, group, etc.
- Data-verification steps are built in, which allow easy manual-checking of data entry.
- Outputs a list of raw data entered
- This system can also import data from itself, which allows the system to be used in a distributed manner, and re-synchronized easily.
- The data file will contain everything that has been entered, which allows re-creation of the same results on any other instance of the system.
Awards printing and results printing/displaying:
- Outputs a list of results of competition, which can be posted, and shows who-won, etc.
- Maintains a list of "released reports", for ease of publishing results/etc.
- Data can be entered via import of electronic-data files, or manually.
QUESITON:
- Which system deals with calculating the overall winners? (probably the judging data application?)
------
Things that UCP does that are not handled by the above design:
- Generate reports of Overall chamipions
- Generate repotrs for "Expert T-Shirts"
- Standard Skill Data entry/judging/reporting
- Medals formatting and report printing
- Basketball data entry/processing (UCP doesn't really do this either)
- Report of the results for a competitor (summary format)
- Printing Start-lists (well, maybe by the new judging system?)
- Allow easy addition of new registrants (multiple systems need multiple-updates)
-