View
216
Download
1
Embed Size (px)
Citation preview
Re-using Metadata from the Voyager Library Catalog
– CUL Metadata Working Group –
Friday October 19, 2007
Nick CappadonaInterface DesignerMann [email protected]
Tom TruttE-Reserve & Access Services SpecialistMann [email protected]
Background
• Problems pulling due date & times for multiple items (Suppressed from OPAC)
• Slow response time from the OPAC for reserves searches
• Window clutter
Solution 1• Microsoft Access Database
– Used an ODBC connection, via Microsoft Jet– Form Based
The Advantages• Allowed access to high use items
• Slow• Yet another open window• Interface issues
– Non-intuitive GUI• Not easily customizable
The Disadvantages
Solution 2• System tray based program
– Written in Visual Basic .NET
• Query Voyager’s database directly– OLeDB connection
• Small footprint• Faster response times• Ability to filter reserves by location• Customizable searches
The Advantages
The Interface
Runs From The System Tray
Right clicking on the icon will bring up available reports.
Checking Study Room Availability
Item Description Current Due Date and Time
Charged Rooms Highlighted In Yellow Overdue Rooms Highlighted In RedFree Rooms Are Not Highlighted
Checking Course Reserves
Toggles Between Mann Only and All of CUL Course Listing
Shows Selected Course Materials
Course Materials Listing
Reserves Item Information
Current Status Information, Reserve Location and Owning Location
Items are color coded as to current charged status
BIB_ITEM
BIB_ID ITEM_ID ADD_DATE OPERATOR_ID
BIB_TEXT
PK BIB_ID
AUTHOR TITLE TITLE_BRIEF UNIFORM_TITLE ....
MFHD_ITEM
MFHD_ID ITEM_ID ITEM_ENUM CHRON YEAR CAPTION FREETEXT
CIRC_TRANSACTIONS
PK CIRC_TRANSACTION_ID
ITEM_ID CIRC_POLICY_MATRIX_ID PATRON_ID .... CHARGE_DATE ... CURRENT_DUE_DATE ...
ITEM
PK ITEM_ID
PERM_LOCATION TEMP_LOCATION ITEM_TYPE_ID TEMP_ITEM_TYPE_ID COPY_NUMBER ON_RESERVE ....
TITLEAUTHOR
COPY_NUMBER
ITEM_ENUMCHRON
CHRAGE_DATE
CURRENT_DUE_DATE
BIB_STATUS_LOOKUP
TITLEITEM_ENUMCHRONCHARGE_DATECURRENT_DUE_DATE
Pull Status by BibID
In Other Words …
Where “X” is equal to the bib id of the items you wish to view.
SELECT BIB_TEXT.TITLE, MFHD_ITEM.ITEM_ENUM, MFHD_ITEM.CHRON, CIRC_TRANSACTIONS.CHARGE_DATE, CIRC_TRANSACTIONS.CURRENT_DUE_DATE, ITEM.COPY_NUMBERFROM ITEM INNER JOIN (CIRC_TRANSACTIONS RIGHT JOIN (MFHD_ITEM INNER JOIN (BIB_TEXT INNER JOIN BIB_ITEM ON BIB_TEXT.BIB_ID = BIB_ITEM.BIB_ID) ON MFHD_ITEM.ITEM_ID = BIB_ITEM.ITEM_ID) ON CIRC_TRANSACTIONS.ITEM_ID = BIB_ITEM.ITEM_ID) ON ITEM.ITEM_ID = BIB_ITEM.ITEM_IDWHERE (((BIB_ITEM.BIB_ID)="X"));
TITLE ITEM_ENUM CHRON COPY_NUMBER CHARGE_DATE CURRENT_DUE_DATEMann Library Circulation Study Rooms. Room 271 1Mann Library Circulation Study Rooms. Room 272 1Mann Library Circulation Study Rooms. Room 378 1Mann Library Circulation Study Rooms. Room 381 1 23-Dec-04 31-Dec-06Mann Library Circulation Study Rooms. Room 478 1 18-Aug-06 28-May-07Mann Library Circulation Study Rooms. Room 480 1 30-Aug-06 30-Dec-06Mann Library Circulation Study Rooms. Room 481 1 30-May-06 18-Dec-06
If an item is not charged the “CHARGE_DATE” and “CURRENT_DUE_DATE” fields return as “null” or remain empty.
Query
Query results
COURSE
PK COURSE_ID
COURSE_NAME NORMAL_COURSE_NAME COURSE_NUMBER NORMAL_COURSE_NUMBER BEGIN_DATE END_DATE CIRC_CLUSTER_ID
Pull Course Listing
INSTRUCTOR
PK INSTRUCTOR_ID
LAST_NAME NORMAL_LAST_NAME FIRST_NAME TITLE CIRC_CLUSTER_ID
RESERVE_LIST_COURSE
RESERVE_LIST_ID DEPARTMENT_ID INSTRUCTOR_ID COURSE_ID SECTION_ID
RESERVE_LIST
PK RESERVE_LIST_ID
RESERVE_LOCATION LIST_TITLE NORMAL_LIST_TITLE EFFECT_DATE EXPIRE_DATE CREATE_DATE CREATE_OPID CREATE_LOCATION_ID UPDATE_DATE UPDATE_OPID UPDATE_LOCTATION_ID
RESERVE_LIST_ID
LAST_NAME
FIRST_NAME
COURSE_NUMBER
COURSE_NAME
COURSE_LISTING
RESERVES_LIST_IDCOURSE_NUMBERCOURSE_NAMEFIRST_NAMELAST_NAME
An Example
SELECT RESERVE_LIST.RESERVE_LIST_ID, COURSE.COURSE_NUMBER, COURSE.COURSE_NAME, INSTRUCTOR.FIRST_NAME, INSTRUCTOR.LAST_NAMEFROM COURSE, RESERVE_LIST_COURSES, RESERVE_LIST, INSTRUCTORWHERE (((COURSE.COURSE_ID)=[RESERVE_LIST_COURSES].[COURSE_ID]) AND ((RESERVE_LIST_COURSES.RESERVE_LIST_ID)=[RESERVE_LIST].[RESERVE_LIST_ID]) AND ((RESERVE_LIST_COURSES.INSTRUCTOR_ID)=[INSTRUCTOR].[INSTRUCTOR_ID]) AND ((RESERVE_LIST.RESERVE_LOCATION)="79")) AND
((RESERVE_LIST.EFFECT_DATE)<Now()) AND ((RESERVE_LIST.EXPIRE_DATE)>Now()))ORDER BY COURSE.COURSE_NUMBER;
“79" corresponds to our reserves location, “Mann Reserve”. If removed the query will pull all reserves locations.
RESERVE_LIST_ID COURSE_NUMBER COURSE_NAME FIRST_NAME LAST_NAME11719 DEA 111 Making a difference: by design Sheila Danko6843 DEA 250 Environment and Social Behavior Gary Evans7242 DEA 303 Interior Materials and Sustainable Elem Rhonda Gilmore5035 DEA 325 Human Factors: Ergonomics-Anthropometri Alan Hedge9058 DEA 401 research class Gary Evans8173 DEA 408 DESIGN STUDIO VIII Sheila Danko
The “RESERVE_LIST_ID” that is shown here is passed to the second query to obtain the item lists for that class
Query
Query Results
COURSE_LISTING
RESERVES_LIST_IDCOURSE_NUMBERCOURSE_NAMEFIRST_NAMELAST_NAME
Pull Course Materials
RESERVE_LIST_ITEMS
RESERVE_LIST_ID ITEM_ID
MFHD_ITEM
MFHD_ID ITEM_ID ITEM_ENUM CHRON YEAR CAPTION FREETEXT
MFHD_MASTER
PK MFHD_ID
LOCATION_ID CALL_NO_TYPE NORMALIZED_CALL_NO DISPLAY_CALL_NO ....
BIB_ITEM
BIB_ID ITEM_ID ADD_DATE OPERATOR_ID
BIB_TEXT
PK BIB_ID
AUTHOR TITLE TITLE_BRIEF UNIFORM_TITLE ....
CIRC_TRANSACTIONS
PK CIRC_TRANSACTION_ID
ITEM_ID CIRC_POLICY_MATRIX_ID PATRON_ID .... CHARGE_DATE ... CURRENT_DUE_DATE ...
ITEM
PK ITEM_ID
PERM_LOCATION TEMP_LOCATION ITEM_TYPE_ID TEMP_ITEM_TYPE_ID COPY_NUMBER ON_RESERVE ....
LOCATION1
LOCATION_ID LOCATION_CODE LOCATION_NAME LCOATION_DISPLAY_NAME ....
ITEM_ENUMCHRON
DISPLAY_CALL_NO
AUTHORTITLE
CHARGE_DATE
CURRENT_DUE_DATE
COPY_NUMBER
LOCATION_DISPLAY_NAME
RESERVES_LIST_ITEMS
TITLEAUTHORITEM_ENUMCHRONCOPY_NUMBERDISPLAY_CALL_NOCHAREG_DATECURRENT_DUE_DATEITEM_TEMP_LOCATION
LOCATION1
LOCATION_ID LOCATION_CODE LOCATION_NAME LCOATION_DISPLAY_NAME ....
LOCATION_DISPLAY_NAME
An Example
SELECT BIB_TEXT.TITLE, BIB_TEXT.AUTHOR, MFHD_ITEM.ITEM_ENUM, MFHD_ITEM.CHRON, ITEM.COPY_NUMBER, MFHD_MASTER.DISPLAY_CALL_NO, CIRC_TRANSACTIONS.CHARGE_DATE, CIRC_TRANSACTIONS.CURRENT_DUE_DATE, LOCATION_1.LOCATION_NAME AS Temp_Location, LOCATION.LOCATION_NAME AS Perm_LocationFROM LOCATION AS LOCATION_1 RIGHT JOIN (LOCATION RIGHT JOIN (BIB_TEXT INNER JOIN (CIRC_TRANSACTIONS RIGHT JOIN (ITEM INNER JOIN (((RESERVE_LIST_ITEMS INNER JOIN MFHD_ITEM ON RESERVE_LIST_ITEMS.ITEM_ID = MFHD_ITEM.ITEM_ID) INNER JOIN BIB_ITEM ON RESERVE_LIST_ITEMS.ITEM_ID = BIB_ITEM.ITEM_ID) INNER JOIN MFHD_MASTER ON MFHD_ITEM.MFHD_ID = MFHD_MASTER.MFHD_ID) ON ITEM.ITEM_ID = RESERVE_LIST_ITEMS.ITEM_ID) ON CIRC_TRANSACTIONS.ITEM_ID = RESERVE_LIST_ITEMS.ITEM_ID) ON BIB_TEXT.BIB_ID = BIB_ITEM.BIB_ID) ON LOCATION.LOCATION_ID = ITEM.PERM_LOCATION) ON LOCATION_1.LOCATION_ID = ITEM.TEMP_LOCATIONWHERE (((RESERVE_LIST_ITEMS.RESERVE_LIST_ID)="X") AND ((ITEM.TEMP_LOCATION) In ("79")))ORDER BY BIB_TEXT.TITLE;
“Optional”
Where “X” is equal to RESERVE_LIST_ID from the first query.
TITLE AUTHOR ITEM_ENUM CHRON COPY_NUMBER DISPLAY_CALL_NO CHARGE_DATE CURRENT_DUE_DATE Temp_Location Perm_Location*Electronic Reserve Readings For DEA 250 Fall 2006 Evans 0
Electronic Reserve No call number Mann Reserve Mann Reserve
7 habits of highly effective people : restoring the character ethic / Stephen R. Covey.
Covey, Stephen R. 1 BF637.S8 C68 2004 9/18/2006 12:04 9/18/2006 14:04 Mann Reserve Hotel
Accessible housing design file / Barrier Free Environments Incorporated. 1 NA2545.P5 A17 Mann Reserve Fine Arts
Adolescence / Laurence Steinberg.
Steinberg, Laurence D., 1952- 1 HQ796 .S81x 1996 Mann Reserve Mann
If an item is not charged the “CHARGE_DATE” and “CURRENT_DUE_DATE” fields return as “null” or remain empty.
Query
Query Results
Meanwhile…
• Our Web site was under the knife• Refocused as a research tool• Empowering our patrons• Moonlighting in e-reserves
So what about those patrons?
• What if they could check the status of a study room?
• Our GPS units and camcorders?• Laptops?• Course Reserves?• And …
Study Rooms
Equipment & Laptops
Course Reserves
Behind the Scenes
• SQL + ColdFusion
Tom’s SQL
Database connection is predefined in Coldfusion AdministratorResults are cached for 2 minutes
Course Reserves: A Slight Twist
• SQL + ColdFusion + Javascript + elbow grease
ajaxCFC http://www.robgonda.com/blog/projects/ajaxcfc
• ColdFusion framework• Middleman between JavaScript and
ColdFusion• Packaged with Direct Web Remoting (DWR)
– http://getahead.ltd.uk/dwr
• Returns pure JavaScript
Course Reserves
• Initial query for course list is handled the same way as equipment and rooms
• SQL + ColdFusion XHTML
• Used to populate select field
More on Course Reserves
• When a course is selected, a JavaScript function is called
path to listener CFC
scriptName
methodName
argument
call-back function
The ColdFusion Component (CFC)
• Arguments are passed to the CFCmethodName
Argument (ex. 5309,BIO G 109: Biological Principles,1234)
The ColdFusion Component (CFC)
• The selectedReserveID is passed to the secondary query
The ColdFusion Component (CFC)
• The selectedCourseID is used to build the link to the e-reserves listing in the library catalog
finally, the query results are returned to the pagevia a JavaScript structure
The Call-Back Function
• Resides on the requesting page• Receives the returned results• Incorporates DWR utility functions to alter the
page
The Call-Back in Action
Determine table heading based on selected course
Clear table body with id=“returnedItems”
Populate table using DWRUtil.addRows and cellFuncs
The Call-Back in Action
Handy Tools for Circulation and the Web
– Endeavor Mid-Atlantic Users Group Meeting 2006 –
Hamilton College
Tuesday October 3, 2006Nick CappadonaInterface DesignerMann [email protected]
Tom TruttE-Reserve & Access Services SpecialistMann [email protected]