MAJOR CHANGE: moved sql_lib() from M::Base to new M::Role::Query; moved all M::R::QueryFormatter methods into M::R::Query; removed sql_lib() from ScriptHelpers - using new M::Roles::Query method; removed lims_dbix() from M::Base - now loaded via M::Role::DBIxSimple on demand; moved get_sql_with_constraint() from M::R::DBIxSimple to M::R::Query; method gets dbh from lims_db not lims_dbix in M::LabSection::update_lab_sections() & M::Specimen::update_specimens(); added elements() to Local::QueryLibrary
refactored user_workload to allocate 1 unit per request, not 1 unit per specimen; added totals and percentages cdata to user_workload; moved user_workload query back to RDBO from dbix
removed link to survey from 'home' page & added info about cookies; moved blank label control to yml file for immunocytochemistry labels; adjusted popup + chart dimensions for outreach params; replaced decimal = 3 with sigfigs = 3 in outreach charts; initial changes to lantronix script to accomodate 1-2-many request results for haem data
added _parse_data_val() function to C::Roles::Chart to return ::NoValue for null vals, so setGapColor() works as intended; moved make_chart logic from report/default.tt and record/body.tt to separate site/make_chart.tt; some tweaks to cron scripts
new chimerism chart; moved 'just testing' warnings from templates into L::Mail::_verify_service_status() for appending to all messages if not in production mode - can be overriden with '_safe_message' flag from caller