One of the last uncoded basic functions is now in place, Saint detail pages. At the bottom of the Saint popup, where there are links to the matching MS, there's now a link to full details. This page includes all the data in the Saint table, as well as all of the matching entries, for comparing spellings, etc. Eventually there will be checkboxes as another way into the "compare" mode, but not yet. There is, however, a basic perm-link setup for this. Similar in syntax to that for the saints /p/v100/saint/NNNN will take to to the saint with that ID, eg. /p/v100/saint/2850 will give you ALL the possible ways that "All Saints" can be written.
Future plans also include some graphing powers, but like the MS pages, those are part of future work
Finally completed a bunch of prep work to get the secondary saints working. The saint and color tables are now joined to the main calendar_entry table in 2 places, one for each saint. ALL of the saints, well mostly all, there are probably some straglers, have been properly coded so they can be broken between primary and secondary. So everything is in place to do color and link work for them, it's just not been done
A lot of moving parts moved to add one new feature, there's now a "Browse Saint by Name". This required adding a short_name column to the saints table (easy), and populating it with the minimal name of the saint, so removing all the titles (Bishop, Virgin, Martyr, etc) and all the localizing info (of Benevento, eg). That required some regex parsing of the saints and then a bunch of manual fixup, since the regex can't tell that the 'Virgin' of "of the Blessed Virgin Mary" is important to keep, even though in "Agnes, Virgin" it is not. Once that was completed, the new field was added to the Saints class and a new get_by_name function added to Saints, allowing one to retrieve a hash with the key as the short_name, rather than date. Along with that the get_by_name can restrict by letter of the alphabet, if you only want saints from a-c or somesuch.
All of that was rolled up into the new browse, which uses a series of vertical tabs to segment the alphabet into manigable lists of saints. The final display mode is mostly similar to "saints by date", with the same issues around gridlines to work out, but it's all live and working.
Tasks remaining are a better popup when you click a saint, probably including all name variants from the MS, and better display UI/UX
The "Saints by Date" page has been completely reformatted, using Foundation's Accordion as the main layout scheme and block-grid for each month. It's WAY less template code and actually works on a small screen, rather then just pretending. Currently there are still issues with the boxes around each day in the medium and large views, but that's on the short list to be fixed.
A personal code-victory, the entire layout was changed, and not a single line of code had to be touched. I had sucessfully kept all the layout in the template and only had to touch that!
The first of the clever functions has been implemented in a basic way, saints are cross-referenced. In a calendar listing, any saint with a proper identity is slightly bolder-face and a hyperlink. Clicking will bring up a dialog with the cannonical name, date and links to see all MS either containing the saint, or missing the saint, see screenshot below.
At the moment this only works for the primary saint, not the secondary one. Breaking the link into 2 parts is a harder problem and will be tackled later-on. The lookup works for both however.
Some less exciting improvements, but improvements none the less:
- Started work on the saints class. Currently it can pull a saint from the Db and identify which calendars/manuscripts containt it. There's some logic to handle primary versus secondary, but it's only internal, not yet exposed. The feast_type tags are not yet integrated
- tests! I've been terribly remiss in writing unit tests, but I've been keeping up with them for the parts of Saint, and started some work to rebuild them for the Manuscript class. Also wrote one for basic class loading
- added an 'id' tag to each row of a calendar when output in the form day_monthnum-day, i.e. day_10-10 for October 10th, the feast of St Gereon. This will be used later for the "find all manuscripts with saint XXX" function