120 likes | 219 Views
Data Warehousing our Library data Our Dashboard. One interface to rule them all. Our environment. University Library 800,000+ physical assets 5 levels + 2 branch libraries Multiple departments fulfilling dozens of services Dedicated technology department. Where are we now?.
E N D
Data Warehousing our Library dataOur Dashboard One interface to rule them all... 2013 Ball State University Ball State University Libraries
Our environment • University Library • 800,000+ physical assets • 5 levels + 2 branch libraries • Multiple departments fulfilling dozens of services • Dedicated technology department
Where are we now? • “Factories” with informative “widgets” • Custom Reporting to answer detailed questions
Why we built...and why you should, too! • Our Dean • We are collecting some amazing statistics • What we don’t know, can hurt us • Anecdotes and estimating can mislead • Save time (i.e., $$$!) • Share & democratize information • Get money / funding
How is this possible? Techniques / tools brought together • PHP • CSS / CSS3 • Databases / Publically available APIs • MySQL • MSSQL • Facebook • Google Analytics • JavaScript • jQuery& jQueryUI
DB Structure (in progress)(beyond factory-specific tables) • factories (name, anyone_access, has_reporting, has_data_entry, default_color) • widgets (factory, description, anyone_access) • user_factory_permissions (factory, user, can_view_all_widgets, view_reports, data_entry) • user_factory_preferences (factory, user, order, show_or_not, show_on_load, color) • user_widget_permissions (widget, user) • user_widget_preferences (widget, user, order, show) • user_widget_favorites (user, widget, timestamp) WARNING Overkill Proceed only if you like LEFT OUTER JOINs!
First Attempt • PHP Code: • echo “<div class=‘factory’>”;echo "<h3>DMR Factory</h3>"; include(“dmrPieces.php”); echo "</div>"; wash...rinse...repeat...or write a function • Drawback • Output (most likely) will wait until final factory completes (in sequence)
Picking up the pieces (files) • Each factory has its own • Query to find significant figure(s) • Output the content in HTML chunks • Metric • Description • Long description, tables, and/or graphs • Help • Timestamp for how current the metric / widget is • Basic layout:<div class=‘widget’> <h1>[Metric]</h1> <div class=‘brief’>Description</div> <div class=‘extra_info’>Long description</div></div> • The rest is ‘formatting’ handled by CSS
Take two – AJAX via jQuery • The simplest form • jQuery code:$.get(“someFactoryPieces.php“, function(widgets) { $(".someFactory").html(widgets);}); • Advantages: • Factories are displayed ASAP • Graceful failure
Challenges • Knowing what to feature • Adoption – YMMV • Training / education • A widget for everything is overwhelming • Explaining caveats; what exactly is being counted? • Managing user permissions with fine granularity • Speed / System Performance • Initial investment (time/resources) • Data migration
Insights / Tips for success • Ensure top-down managerial interest, need, and involvement (across-the-board if possible) • Seek out what is important to your organization • “Good help” is hard to [write]...but important • Invite others “in charge” of factories to create the metrics • Patience • Timestamp your data
Questions And/or further show and tell!