- Overhauled the report generator.. It's more versatile now
- Added 'filter' option to the generator, so you can filter any column by (=,
<=, >=, <, >, IS, IS NOT, LIKE, NOT LIKE). It doesn't support AND or OR
combinations, but that should cover what we need for now. Example: We can
filter "Award Name" LIKE "%Gold%" to generate a report of just the Gold medal
projects.
- Wipe out the report database, and create it again from scratch.
update.48.sql contains an example of how to add additional reports to the
system without knowing the report_ids, because after regions start adding
their own reports, we won't be able to just wipe out the whole report system
to add one.
- We handle more reports now, specifically nametags and table labels, so remove
those files, and update the reports.php file to link the old links to the new
report generator (so people don't get too confused in this transition).
- Beginnings of moving the report generator to proper LEFT JOIN style
constructs instead of just one big massive EQUALS JOIN.
- Add committee member generator
- It is now possible to generate ALL nametags the old system could generate
(needs a DB update before that happens... actually, the report generator
isn't as stable as I hoped.. I'll probably just nuke the report tables the
next upgrade and recreate them all.. I'm probably the only one who has tried
generating a custom report. :)
enough.. Currently we can't produce both a list of judges and a list of awards for each
team with the generator (how the heck would we express that with an SQL statement)
- Add an editor for that generator.. it's not flawless, but it's not hard to
use either.
- Add 19 default reports
- Replace several reports on the report page with the new generator versions
(they pretty much look the same, same info, same sort order, same pagination)
- Add a pulldown menu to the report pages so any report can be generated
- Hardcode add a special award to the top of the list "I do not wish to
nominate for any special awards". Allow the
project_specialawards_link.award_awards_id field to become NULL, and set it
to NULL if the student selects this award.
- Fix the display of the award status based on whether the student has or has
not specified that they do not wish to nominate for special awards.
- Add an option to the project editor to regenerate the project number
- Fix a bug in the project number generation. Include YEAR in the project
number check (and in the number generation) so we don't find a project from
last year (that already has a number), and decide not to generate one for a
project from this year. The $checkNumQuery was returning 2 rows.. one from
2006, one from 2007. Two projects from different years had the same
registrations.num (665983) in my test.. about 10% of the projects at the VDSF
collided with numbers from previous years.
the table, we call a method in the table helper class. That method returns 3
things.. an array of SELECT columns, an array of FROM tables, and an array of
WHERE clauses. The table editor takes these, adds ORDER, LIMIT, etc, and
runs the sql.
- Update the table editor to allow variables to be set. THe helper class reads
these variables to do pretty much anything it wants.. In this commit, it
reads the judges_show_what variable, to determine how to format the SQL for
selecting the table of judges (so the calling php can now know NOTHIGN about
the database, it just sets a variable and expects the data to be formatted
correctly.
- Update the judge manager, show all judges should now SHOW ALL JUDGES.
have admin access to access the committee editor)
- Put a "My Profile" link on the main nav bar once a committee member logs in,
so they don't have to find themselves thorugh the committee editor. It takes
them right to editing their own profile.
- Admin can use the tour manager to add tours
- Admin can use the config variables to enable tours, and select the min/max number of tour choices.
- Students will see a "Tour Selection" section of registration, which is incomplete until the student has selected at least a minimum number of tours.... actually, this may be broken.. Need to look at it further..
Add ability to create access codes for all schools and to remove access codes from all schools
Update generatePassword to accept a password length as a parameter, defaults to 8
Add two new projectnumber options: c=category shortform, d=division shortform, eg (JLS01 = Junior, Life Science, Project #01)
Add shortform field for age category
Fix bug in config editor where it was updating values for ALL years, instead of just the current year!
Bump version number to development version
table
- Add complete and year options to the judge manager, filter by ALL, active and
inactive for the current year, or active only.
- Add the "complete" status the the judge info page (the judge info popup page
needs to be integrated with the new judge manager, somehow.. so we can remove
the judges_judges list page).
- Put a total at the top of the judge manager list
- Add to the table editor:
- Change the filter to accept a single argument, so we're not
restricted to the `$k`='$v' syntax, we want to be able to filter on a
table JOIN.
- Add a additionalListTable variable, and additionalListTable()
function, to specify additional tables that should be part of the
table select statement. I guess ideally the class would implmenent
their own if alternative behaviour was desired. But this way is
pretty generic. The table editor can now, for example, select judges
by year.
should be SELECTED in the select type. If the keys are 0, and there is no
data, PHP does a numeric compare and matches them, when they shouldn't
actually be matched.
- Add Load/Save for the judge category preferences
- Enable saving to mysql. It works.
- Update the tableeditor css to use the same colours as sfiab
that allows you to customize the size of the labels to suit _ANY_ label
stock paper.
Add to label generator the option to get judge mailing labels, and award
sponsor mailing labels, and make it easy to add more mailing labels
down the road (students? committee? etc?)
Add two default label stocks (Avery 1"x4" and Avery 2"x4")
- Added a "multicheck" input type for languages (english, french)
- Added a proof of concept cross reference to the judge class, it pulls the
languages out of the judges_language database
- Completely broke the save mechanism.
- Converted the tableeditor edit routines to read from the input class
- Converted the tableeditor edit routines to use assoc arrays, instead of ->
(easier to pull from mysql and then add cross references to it.
- Add the table editor style sheet, and load it in the header (needs editing)
- Add a judge class (not complete)
- Add a judge manager php file that doesn't interfere with what's already in the system
THis is a proof of concept, it sorta works, but the table editor is still reading directly from the judges class. It will be updated to make calls only into the calling class type, thus abstracting away all the SQL stuff, and allowing the group class (judge in this case) to hide
all the cross table references we need to make for loading, saving, deleting, etc.
should contain. If the config doesn't find those variables for the current
year, they are automatically copied in from year=-1. This means that
we can update a database and add new config variables and not have to manually
add each variable to the current year. It also means someone can't mess
up the system and accidentally delete config variables, because they
will be recreated.
looking any further. This significantly reduces the timeslot scheduling time.
In most cases we reach 0 in a couple thousand iterations, but we need high
effort because some timeslot scheduling problems are hard to assign.
prevent a project from getting too many judges in a row, and also a judge from
judging 2 projects at the same time (which would be more of a problem).
Still need to write a verifier to check all the results. But the annealer
tests look pretty good. Unfortunately it takes a pretty long time to run. :(
all issues EXCEPT that the timetable scheduler may assign two judging teams
to the same project at the same time. I will fix that soon. But everything
else should now work.
in the scheduler so we can only select judges that are NOT already part of a
judging team
- Fix a numbering issue where sometimes an divisional team created by the
scheduler wouldn't get created because of conflicting team numbers. Now, use
MAX(num) to find the highest team number and increment team numbers from that
number.
- Missing: Having a project judged more than once by different judging teams is
untested, I don't htink it'll work properly, still working on that part.
- Missing: Auto updating the configuration if any of the variables are missing.
- Missing: A way to preserve judging questions (like willing_chair), so the
user doesn't delete them and break the scheduler, OR, notice saying that the
question has been deleted and the scheduler won't use the chair calculations,
then we need a way to add them back in with the click of a button.
Separate the 'requirement check' into a separate file and run it on both the config page, and as a double check on the actual annealer page incase they decide to manually type in the address or bookmark or somkething.
If specialawardnomination is set to "none" (fair doesnt use special award self-nominations) then the pick winners page will instead show all projects that are eligible for the award to choose a winner, instead of those that are nominated for it (which is none).
Thanks Justin!
Update i18n function to accept a third parameter, which is an array that describes the arguments in the string to make translation much easier
Update some of the config/admin pages to make sure i18n is properly used, and that argument descriptions are set
Update invitation system to keep track of the number that have been invited and not allow the school to invite more than they are allowed
Update the schools editor, to allow specifying the max number of projects and whether the max is total for the school, or per age category
Add required fields to the schools table
Update the config variable for special awards registration to allow turning special awards registration off