CINXE.COM

Space Availability - Studio 2B - University Library - Iowa State University

<!DOCTYPE html> <html lang="en"> <head> <!-- iid: 3287 --> <meta charset="utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=Edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <link href="https://static-assets-us.libcal.com/bootstrap_13/bootstrap3.min.css" rel="stylesheet"> <link href="//cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css" rel="stylesheet"> <link href="https://static-assets-us.libcal.com/css_708/LibCal_public.min.css" rel="stylesheet"> <link href="https://static-assets-us.libcal.com/css_708/print.min.css" rel="stylesheet" media="print"> <script src="https://static-assets-us.libcal.com/jquery_16/jquery.min.js"></script> <script src="https://static-assets-us.libcal.com/bootstrap_13/bootstrap3.min.js"></script> <script src="https://static-assets-us.libcal.com/js_708/LibCal_public.min.js"></script> <script> springSpace.dateFormat = "dddd, MMMM D, YYYY"; springSpace.dateShortFormat = "MM/DD/YYYY"; springSpace.timeFormat = "h:mma"; springSpace.timezone = 'America/Chicago'; springSpace.currency = "USD"; springSpace.currencySymbol = "$"; springSpace.language = 'en'; // en springSpace.locale = 'en-US'; // en-US springSpace.phpTimeFormat = 'g:ia'; springSpace.bootstrapAsset = 'https://static-assets-us.libcal.com/bootstrap_13/bootstrap3_16.min.css'; springSpace.publicCssAsset = 'https://static-assets-us.libcal.com/css_708/LibCal_public.min.css'; springSpace.adminCssAsset = 'https://static-assets-us.libcal.com/css_708/LibCal_admin.min.css'; </script> <title> Space Availability - Studio 2B - University Library - Iowa State University </title> <style> #s-lc-public-banner { padding: 0; margin: 0; } .s-lc-public-footer { margin: 0; } </style> <link rel="stylesheet" href="https://static-assets-us.libcal.com/fullcalendar_14/fullcalendar.min.css"/> <style> .s-lc-eq-avail, .label-eq-avail, .s-lc-eq-period-available { background: #F1BE48 linear-gradient(90deg, rgba(255,255,255,.2) 25%, transparent 25%, transparent 50%, rgba(255,255,255,.2) 50%, rgba(255,255,255,.2) 75%, transparent 75%, transparent) !important; border-color: #F1BE48 !important; } .s-lc-eq-avail:hover, .s-lc-eq-period-available:hover { background: #F1BE48 linear-gradient(0deg, rgba(255,255,255,.2) 25%, transparent 25%, transparent 50%, rgba(255,255,255,.2) 50%, rgba(255,255,255,.2) 75%, transparent 75%, transparent) !important; border-color: #F1BE48 !important; } .s-lc-eq-pending, .label-eq-pending, .s-lc-eq-period-pending { background: #EBEBEB linear-gradient(0deg, rgba(255,255,255,.2) 25%, transparent 25%, transparent 50%, rgba(255,255,255,.2) 50%, rgba(255,255,255,.2) 75%, transparent 75%, transparent) !important; border-color: #EBEBEB !important; } .s-lc-eq-checkout, .s-lc-eq-r-unavailable, .s-lc-eq-r-padding, .label-eq-unavailable, .s-lc-eq-period-booked { background: #C8102E linear-gradient(45deg, rgba(255,255,255,.2) 25%, transparent 25%, transparent 50%, rgba(255,255,255,.2) 50%, rgba(255,255,255,.2) 75%, transparent 75%, transparent) !important; border-color: #C8102E !important; } </style> <style> @media (max-width: 768px) { .fc-timeline .fc-cell-text { font-size: 12px !important; } } </style> <style> .fc .fc-toolbar.fc-header-toolbar { margin-bottom: 10px; } .fc .fc-toolbar-title { font-size: 18px!important; font-weight: 700; } </style> <meta name="google-site-verification" content="so5kt4SYuwh36X6fF0D4_Uk7fQB5yzakOmwnT1wfVc0" /> <style> /* ---------------------------------------------------------------- GENERAL BODY STYLES These styles define the base font, color, and padding for the body. ---------------------------------------------------------------- */ body { font-family: Nimbus Sans, sans-serif; color: #4a4a4a; font-size: 1.5rem; padding-top: 65px; } /* ---------------------------------------------------------------- HEADING STYLES Styles for heading elements (h1, h2, h3, h4, h5), including color, font, size, weight, and spacing. ---------------------------------------------------------------- */ h1, h2 { color: #c8102e; font-family: Merriweather, serif; font-weight: 400; letter-spacing: 0; } h1 { font-size: 3.125rem; line-height: 1.2; margin: 3rem 0 1rem; } h2 { font-size: 1.875rem; font-weight: 700; line-height: 1.4; padding-bottom: 1.75rem; margin: 3rem 0 1.375rem; position: relative; } h3 { color: #c8102e; font-family: Nimbus Sans, sans-serif; font-size: 1.3125rem; font-weight: 700; line-height: 1.42857; margin: 2.375rem 0 .5625rem; } h4, h5 { color: #7c2529; font-family: Nimbus Sans, sans-serif; font-weight: 700; margin: 3rem 0 1rem; } /* ---------------------------------------------------------------- PARAGRAPH AND LINK STYLES Basic styling for paragraphs and links, including color and margins. ---------------------------------------------------------------- */ p { margin: 1.125rem 0; } a, a:hover { color: #7c2529; font-weight: 700; font-family: Nimbus Sans, sans-serif; } a:hover { color: #c8102e; } /* ---------------------------------------------------------------- LABEL AND CONTROL LABEL STYLES Specific styles for LibCal labels and booking statuses. ---------------------------------------------------------------- */ .s-lc-info-label { font-family: Nimbus Sans, sans-serif; display: inline-block; padding: 2px 4px; background-color: #C8102E; color: #fff; } .s-lc-pending-booking .control-label { color: #7c2529; font-weight: 700; } /* ---------------------------------------------------------------- BUTTON STYLES Standard and primary button styling, emphasizing the LibCal red theme. ---------------------------------------------------------------- */ .btn, .btn-primary, .btn-info { padding: .5rem 1rem; border-radius: 0; font-weight: 700; text-decoration: none; } .btn-primary, .btn-info { color: #fff; background-color: #c8102e; border-color: #c8102e; } .btn-primary:hover, .btn-info:hover, .btn-primary:active, .btn-primary:active:hover, .btn-info:active, .btn-info:active:hover { color: #fff; background-color: #7c2529; border-color: #7c2529; } /* ---------------------------------------------------------------- ALERT STYLES Alert components customization following the LibCal theme colors. ---------------------------------------------------------------- */ .alert { padding: 15px; margin-bottom: 20px; border: none; border-radius: 0; } .alert-warning, .alert-success, .alert-info { color: #fff; background-color: #c8102e; font-weight: 700; } .alert-info { background-color: #7c2529; } /* ---------------------------------------------------------------- BREADCRUMB AND FOOTER STYLES Styling for LibCal breadcrumb navigation and the footer component. ---------------------------------------------------------------- */ #s-lc-public-bc .breadcrumb { color: #7c2529; } .breadcrumb { display: none; } .s-lc-public-footer { padding-top: 25px; padding-bottom: 5px; background-color: #fff; } /* ---------------------------------------------------------------- WELL COMPONENT STYLES Design settings for the well component in LibCal. ---------------------------------------------------------------- */ .well { background-color: #f5f5f5; border: 0 transparent; border-radius: 0; } /* ---------------------------------------------------------------- FULLCALENDAR TABLE STYLES Style modifications for the calendar tables in LibCal. ---------------------------------------------------------------- */ .fc table { font-size: 12px; } .s-lc-event-dl { background-color: #f5f5f5; border-radius: 0px; border: none; } /* ---------------------------------------------------------------- ADDITIONAL EVENT STYLES New styles for event date markers and event card contents. ---------------------------------------------------------------- */ .s-lc-evt-date-m { background-color: #c8102e; } .s-lc-eventcard-content { border: 1px solid #ccc; border-radius: 0px; } /* Hide the Facebook share button */ #s-lc-event-b-f, /* Hide the Google Calendar add button */ #s-lc-event-b-g, /* Hide the Twitter share button */ #s-lc-event-b-t { display: none; } .site-footer__social { list-style-type: none; /* Removes the default list bullets */ margin: 0; /* Removes default margin */ padding: 0; /* Removes default padding */ text-align: center; /* Centers the icons */ } .site-footer__social li { display: inline-block; /* Displays list items inline */ margin-right: 10px; /* Adds spacing between icons, adjust as needed */ } .svg-inline--fa { display: inline-block; height: 1em; overflow: visible; vertical-align: -.125em; } .site-footer__social li a { width: 5rem !important; height: 5rem !important; color: #f1be48; text-decoration: none; color: #f1be48 !important; display: flex; align-items: center; justify-content: center; } .site-footer__social li a svg { width: 25px; /* Set a fixed width */ height: 25px; /* Set a fixed height */ display: block; /* Ensure that the SVG is block-level to fill the anchor tag */ } .site-footer__primary-nav { margin:2.0625rem auto 2.6875rem } @media (min-width:1200px) { .site-footer__primary-nav { margin:.625rem 0 2.1875rem; width:100% } } @media (min-width:768px) { .site-footer__primary-nav ul { display: flex; justify-content: flex-start; /* or 'center' if you want to center the items */ list-style-type: none; /* Remove default list styling */ padding: 0; /* Remove default padding */ margin: 0; /* Remove default margin */ display:-webkit-box; display:flex; -webkit-box-pack:justify; justify-content:space-between; border-bottom: .20rem solid #f1be48; } } @media (min-width:1200px) { .site-footer__primary-nav ul { -webkit-box-pack:end; justify-content:flex-end; border-bottom:none } } .site-footer__primary-nav ul { list-style-type: none; /* Removes bullet points */ margin: 0; /* Reset default margin if needed */ padding: 0; /* Reset default padding if needed */ } @media (min-width:768px) { .site-footer--ecosystem .site-footer__primary-nav ul { flex-wrap:wrap; -webkit-box-pack:start; justify-content:flex-start; border-bottom:none } } @media (min-width:1200px) { .site-footer--ecosystem .site-footer__primary-nav ul { -webkit-box-pack:end; justify-content:flex-end } } .site-footer__primary-nav ul li { border-bottom: .20rem solid #f1be48; text-align:left; margin-left:-2.25rem; margin-right:-2.25rem } @media (min-width:768px) { .site-footer__primary-nav ul li { padding:0 1.875rem; margin-left:0; margin-right:0; border-bottom:0 } } .site-footer__primary-nav ul li { border-bottom: .20rem solid #f1be48; } .site-footer--ecosystem .site-footer__primary-nav ul li { padding:0 1.875rem 0 0; border-bottom: .20rem solid #f1be48; } .site-footer__primary-nav ul li:first-child { border-top: .20rem solid #f1be48; } .site-footer__secondary-nav { border-bottom: .20rem solid #f1be48; } .site-footer__primary-nav ul li a { color:#fff; text-decoration:none; display:block; font-family:Nimbus Sans,sans-serif; font-weight:700; font-size:1.3125rem; line-height:1.61905; margin:1.0625rem auto; -webkit-transition:color .2s ease-in-out; transition:color .2s ease-in-out; max-width:14.75rem; white-space:nowrap; position:relative } @media (min-width:768px) { .site-footer__primary-nav ul li a { text-align:center; display:inline-block; max-width:none; margin-bottom:.3125rem } } @media (min-width:1200px) { .site-footer__primary-nav ul li a { margin:1.0625rem auto } } @media (min-width:768px) { .site-footer--ecosystem .site-footer__primary-nav ul li a { font-size:1.125rem; line-height:1.77778; margin-bottom:.4375rem; } } .site-footer__primary-nav ul li a:hover { color:#f1be48; } .site-footer__primary-nav ul li a:hover:before { right:-.3125rem; } /* Add to your existing CSS */ .site-footer__primary-nav ul li a span { color: #FFF; font-family: Nimbus Sans, sans-serif; font-size: 16px; font-weight: 700; margin-left: 8px; } .site-footer__primary-nav ul li a svg { width: 18px; /* Example size, adjust as needed */ height: 18px; /* Match the width for square icons */ flex-shrink: 0; /* Prevents the icon from shrinking if there is not enough space */ } .site-footer__primary-nav ul li a svg { stroke-width: 2; /* Adjust the stroke-width as needed */ } .site-footer__primary-nav ul li a:before { content:""; position:absolute; right:0; top:.75rem; width:.5625rem; height:.5625rem; border-bottom: .20rem solid #f1be48; border-bottom: .20rem solid #f1be48; -webkit-transform:rotate(315deg); transform:rotate(315deg); -webkit-transform-origin:center; transform-origin:center; -webkit-transition:right .2s ease-in-out; transition:right .2s ease-in-out } @media (min-width:768px) { .site-footer__primary-nav ul li a:before { display:none } } .site-footer__secondary-nav { border-bottom: .20rem solid #f1be48 !important; } .site-footer--ecosystem .site-footer__primary-nav ul li { border-bottom: .20rem solid #f1be48 !important } </style> <script> // This script enhances navigation within the LibCal breadcrumb component document.addEventListener('DOMContentLoaded', function() { var links = document.querySelectorAll('#s-lc-public-bc a'); links.forEach(function(link) { var normalizedHref = link.href .replace('http://', 'https://') .replace('www.', '') .replace(/\/$/, ''); if (normalizedHref === 'https://iastate.libcal.com') { link.href = "https://www.lib.iastate.edu"; link.textContent = "University Library"; } }); }); </script> </head> <body id="equip_" class="s-lc-public s-lc-public-page-5"> <a class="s-lc-skiplink alert-info" href="/r/accessible?lid=19760&gid=41509"> Alternate page for screen reader Users </a> <a id="s-lc-public-skiplink" class="s-lc-skiplink alert-info" href="#s-lc-public-title-area">Skip to Main Content</a> <div id="s-lc-public-cust-header" role="banner"><link href="https://fonts.googleapis.com/css2?family=Merriweather:wght@400;700&display=swap" rel="stylesheet"> <!DOCTYPE html> <html lang="en" dir="ltr" prefix="og: https://ogp.me/ns#" class="js fontawesome-i2svg-active fontawesome-i2svg-complete"> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <link rel="stylesheet" media="screen" href="https://d2jv02qf7xgjwx.cloudfront.net/sites/19/include/hh4-tmp-font.css"> <title>Iowa State University Library</title> </head> <body> <header class="site-header site-header--ecosystem"> <div class="site-header__top"> <div class="site-header__logo-name-wrap"> <a href="https://www.iastate.edu/" class="site-header__logo"> <img src="https://cdn.theme.iastate.edu/img/iastate22/iowa-state-university-logo-no-tagline-red.svg" alt="Iowa State University" loading="lazy" width="224" height="17"> </a> <a class="site-header__parent-unit-name" href="https://lib.iastate.edu/">University Library</a> </div> <div class="site-header__website-title"> <a href="https://lib.iastate.edu/">University Library</a> </div> </div> <!--<nav aria-label="Utility" class="site-header__utility"> <ul class="sandy"> <li><a href="https://www.lib.iastate.edu/hours"><span class="label-text">Hours</span></a></li> <li><a href="https://www.lib.iastate.edu/information-for"><span class="label-text">Information For</span></a></li> <li><a href="https://www.lib.iastate.edu/ask-a-librarian"><span class="label-text">Ask a Librarian</span></a></li> <li><a href="https://quicksearch.lib.iastate.edu/discovery/account?vid=01IASU_INST:01IASU&section=overview"><span class="label-text">Library Account</span></a></li> </ul> </nav>--> </div> </div> </header> </body> </html> </div> <div class="container"> <div id="s-lc-public-bc" class="row"> <div class="col-md-12"> <nav aria-label="Breadcrumb"> <ol class="breadcrumb"> <li><a href="https://www.lib.iastate.edu/">Iowa State University</a></li> <li class="s-lc-desktop-only"><a href="https://iastate.libcal.com">University Library</a></li> <li><a href="/reserve/studio2b">Studio 2B</a></li> <li class="active s-lc-desktop-only">Space Availability - Studio 2B</li> </ol> </nav> </div> </div> <noscript> <div class="alert alert-danger" id="noscript">Your browser has javascript disabled. Without javascript some functions will not work.</div> </noscript> <div id="s-lc-public-title-area"> </div> <main> <div id="s-lc-public-main" class="s-lc-public-main"> <div id="s-lc-public-page-content" class="row"> <div id="s-lc-eq-title-div" class="col-md-12 center s-lc-spaces-setup-info"> <div id="s-lc-group-description"> <h1 id="s-lc-public-header-title"> Studio 2B <small> (0002B) </small> <small> Capacity: 1 </small> </h1> <div id="s-lc-item-title-area"> <div class="row"> <div class="col-md-4"> <img src="https://d2jv02qf7xgjwx.cloudfront.net/customers/18/images/0002b.jpg" class="img-thumbnail" alt="Studio 2B" /> </div> <div class="col-md-8"> <div class="s-lc-section-description" role="region" aria-label="description"> <h2 class="sr-only"> Description </h2> <p> <h3>Featuring a One Button Studio and a Lightboard</h3> <p><span style="font-size:16px;">Looking for a space to create or stream professional-grade quality engaging videos with ease? Studio 2B is the place you are searching for. <span data-mce-fragment="1">Easy startup and shutdown of the entire&nbsp;studio with the press of&nbsp;</span><b data-mce-fragment="1">one button -</b><span data-mce-fragment="1">&nbsp;begin recording in seconds!</span></span></p> <ul> <li>Real-time left-right flip of video image.</li> <li>Streamlined FHD 1080p workflow allows you to: <ul> <li>Live stream video using plug-and-play USB connection</li> <li>Operate as a self-service studio with One Button recording to USB drive</li> <li>Easily add content from PowerPoint, an internet browser and more in real time for fast, dynamic&nbsp;presentations.&nbsp;</li> <li>Choose from a variety of presentation scenes including overlay and picture-in-picture modes using a touchscreen user interface.</li> </ul> </li> <li>Dual displays function as: <ul> <li>Confidence monitor</li> <li>Live video conference participants and/or presenter notes display</li> <li>One Buttion Studio includes a teleprompter</li> </ul> </li> <li><span>BYOD! Bring your own</span><span>&nbsp;laptop and use as the overlay source just by plugging in an HDMI.</span></li> <li>Height-adjustable<strong>&nbsp;</strong>with the press of a button, adjust for any user to accommodate presenting while seated or standing at any height.</li> <li>Real-time video production&nbsp;- All desired effects are implemented <em><span style="text-decoration: underline;">live,</span></em> no post-production or video editing is needed.</li> <li>Zoom &amp; Microsoft Teams compatible to be used for live synchronous classes or conversations.</li> <li>Fast file transfer<strong>&nbsp;</strong>- within seconds, transfer recorded video files directly to studio computer, laptop, cloud storage, learning management system, or other preferred locations.</li> <li>Laminated instructions on how to use the equipment are stored in the room.</li> </ul> <p>If you would like training on how to use the room, that can be scheduled with this link - <a href="https://go.iastate.edu/JMVBOF" target="_blank">https://go.iastate.edu/JMVBOF</a></p> <p>One Button Studio and Lightboard can not be used at the same time.</p> </p> </div> </div> </div> </div> </div> </div> <div id="col1" class="col-md-12 center" > <div id="s-lc-window-limit-warning" class="alert alert-info margin-top-med margin-bottom-none" role="alert" style="display: none;"> You have reached the end of the bookable window. No availability will be shown past this point. </div> <div id="time_grid_cont" class="s-lc-spaces-time-grid s-lc-spaces-setup-info" role="grid" > <div id="eq-time-grid"> </div> <div id="s-lc-time-grid-pagination" class="s-lc-time-grid-pagination"> </div> <div class="s-lc-time-grid-legend" id="eq-time-grid-legend"> <span class="label-eq-cont" data-toggle="tooltip" data-placement="top" title="Slot is available, click to book!"><span class="label label-eq-avail">&nbsp;&nbsp;</span> Available</span> <span class="label-eq-cont" data-toggle="tooltip" data-placement="top" title="Your pending booking."><span class="label label-eq-pending">&nbsp;&nbsp;</span> Your Booking</span> <span class="label-eq-cont" data-toggle="tooltip" data-placement="top" title="This slot is unavailable for starting a new booking. Bookings may occasionally extend into this slot."><span class="label label-eq-unavailable">&nbsp;&nbsp;</span> Unavailable/Padding</span> </div> </div> <div id="s-lc-eq-form-box" class="s-lc-spaces-setup-info" style="display: none;" role="region" aria-label="booking form" aria-live="polite"> <form id="s-lc-eq-form-times" class="form-horizontal" method="post"> <fieldset> <div id="s-lc-eq-bwell" class="well" tabindex="0">&nbsp;</div> <div id="s-lc-eq-bform-inner" class="col-sm-offset-5"> <button class="btn btn-primary" name="submit_times" id="submit_times"> Submit Times </button>&nbsp; </div> </fieldset> </form> </div> <div id="s-lc-eq-form" style="clear:both; display: none;" role="region" aria-live="polite" aria-label="Booking details"></div> <div id="s-lc-eq-errors" class="alert alert-danger" style="display: none;" role="region" aria-live="polite" aria-label="Error encountered"></div> <div id="s-lc-eq-success" style="display: none;" role="region" aria-live="polite" aria-labelledby="s-lc-eq-success-title"> </div> </div> </div> </div> </main> <footer id="s-lc-public-footer" class="row s-lc-public-footer"> <div id="s-lc-public-footer-brand"> <span title="libcal-us-1">Powered by</span> <a href="https://www.springshare.com">Springshare</a>. </div> <div id="s-lc-public-footer-rights"> All rights reserved. </div> <div id="s-lc-footer-support-link"> <a href="mailto:lib-support@iastate.edu">Report a tech support issue.</a> </div> <div id="s-lc-public-footer-print-link"> View this page in a format suitable for <a href="/r/accessible?lid=19760&gid=41509"> screen-readers and keyboard-only users </a> </div> <div id="s-lc-public-footer-admin-links" role="navigation" aria-label="Admin Footer"> <a id="s-lc-sign-in" href="https://iastate.libapps.com/libapps/login.php?site_id=7324&amp;target=">Login to LibApps</a> </div> <div class="s-lc-public-footer-actions"> <div id="s-lc-language"> <select id="s-lc-language-selector" aria-label="Select Language"> <option value="ca" >català</option> <option value="cy" >Cymraeg</option> <option value="en" selected>English</option> <option value="es" >español</option> <option value="fr" >français</option> <option value="ga" >Irish</option> <option value="ja" >日本語 Nihongo</option> <option value="nl" >Nederlands</option> <option value="sl" >slovenski jezik</option> <option value="vi" >Tiếng Việt</option> <option value="zh" >中文 Zhōngwén</option> </select> </div> </div> </footer> <!-- Google tag (gtag.js) --> <script async src="https://www.googletagmanager.com/gtag/js?id=G-VZYMPY53XG"></script> <script> window.dataLayer = window.dataLayer || []; function gtag(){dataLayer.push(arguments);} gtag('js', new Date()); gtag('config', 'G-VZYMPY53XG'); </script> </div> <div id="s-lc-public-cust-footer"><!-- THIS IS THE NEW FOOTER HTML CODE with Springshare settings FOR ISU LIBRARY @ date 11/06/2023 --> <!-- Font Awesome Icons --> <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.1/css/all.min.css"> <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.0.0-beta3/css/all.min.css"> <link media="screen" rel="stylesheet" href="https://d2jv02qf7xgjwx.cloudfront.net/sites/19/include/indexf-tmp-v05-font.css"> <!-- Optional: <link rel="stylesheet" media="screen" href="../ori.css"> --> <div class="off-canvas"> <div class="max-bound"> <footer class="site-footer site-footer--ecosystem"> <div class="site-footer__flex-wrap"> <div class="site-footer__logo-social-links-wrap"> <a href="https://www.iastate.edu" class="site-footer__logo"> <img src="https://cdn.theme.iastate.edu/img/iastate22/iowa-state-university-logo-with-tagline-sci-tech.svg" alt="Iowa State University of Science and Technology" loading="lazy" width="516" height="69"> </a> <ul class="site-footer__social"> <li> <a href="https://www.facebook.com/iowastateu.library" target="_blank" aria-label="Facebook"> <svg class="svg-inline--fa fa-facebook" aria-hidden="true" focusable="false" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512" width="25" height="25"> <path fill="currentColor" d="M512 256C512 114.6 397.4 0 256 0S0 114.6 0 256C0 376 82.7 476.8 194.2 504.5V334.2H141.4V256h52.8V222.3c0-87.1 39.4-127.5 125-127.5c16.2 0 44.2 3.2 55.7 6.4V172c-6-.6-16.5-1-29.6-1c-42 0-58.2 15.9-58.2 57.2V256h83.6l-14.4 78.2H287V510.1C413.8 494.8 512 386.9 512 256h0z"> </path> </svg> <span class="visible-for-screen-readers">Facebook</span> </a> </li> <li> <a href="https://www.instagram.com/isu_library/" target="_blank" aria-label="Instagram"> <svg class="svg-inline--fa fa-instagram" aria-hidden="true" focusable="false" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 630 512" width="25" height="25"> <path fill="currentColor" d="M340.48.32h16.704c25.248 0 37.888.288 50.24.736l4.928.192 13.248.672a188.448 188.448 0 0162.016 11.904 125.216 125.216 0 0145.088 29.44 120.032 120.032 0 0129.28 45.44 187.616 187.616 0 0111.904 62.016c1.056 24.352 1.408 33.888 1.472 85.088v40.608q0 31.776-.64 63.552l-.32 8.832-.512 12.8a187.808 187.808 0 01-11.904 62.048 130.72 130.72 0 01-74.72 74.752 187.616 187.616 0 01-62.016 11.904c-24.384 1.056-33.888 1.408-85.088 1.472h-40.48q-32.16 0-64.32-.704l-4.96-.32-15.744-.64a186.848 186.848 0 01-62.048-11.904 125.248 125.248 0 01-45.248-29.536 124.416 124.416 0 01-29.536-45.28 185.856 185.856 0 01-11.904-62.016c-.256-5.344-.416-9.952-.608-14.496l-.256-6.784q-.64-23.52-.576-47.04v-74.112c0-36.96.48-46.912 1.44-68.384a186.848 186.848 0 0111.904-62.048 125.248 125.248 0 0129.536-45.248 124.8 124.8 0 0145.408-29.536 186.048 186.048 0 0162.048-11.904C236.224.864 246.208.48 283.104.384h16.768zM320.192 124.8a131.2 131.2 0 000 262.688 131.2 131.2 0 100-262.688zm136.512-35.872a30.688 30.688 0 1030.688 30.688 30.656 30.656 0 00-30.688-30.688z"> </path> </svg> <span class="visible-for-screen-readers">Instagram</span> </a> </li> <li> <a href="https://twitter.com/ISU_Library" target="_blank" aria-label="Twitter"> <svg class="svg-inline--fa fa-twitter" aria-hidden="true" focusable="false" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512" width="25" height="25"> <path fill="currentColor" d="M389.2 48h70.6L305.6 224.2 487 464H345L233.7 318.6 106.5 464H35.8L200.7 275.5 26.8 48H172.4L272.9 180.9 389.2 48zM364.4 421.8h39.1L151.1 88h-42L364.4 421.8z"> </path> </svg> <span class="visible-for-screen-readers">Twitter</span> </a> </li> <li> <a href="https://www.youtube.com/@ISU_Library" target="_blank" aria-label="YouTube"> <!-- YouTube SVG Icon --> <svg class="svg-inline--fa fa-youtube" aria-hidden="true" focusable="false" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 576 512" width="25" height="25"> <path fill="currentColor" d="M549.655 124.083c-6.281-23.65-24.787-42.276-48.284-48.597C458.781 64 288 64 288 64S117.22 64 74.629 75.486c-23.497 6.322-42.003 24.947-48.284 48.597-11.412 42.867-11.412 132.305-11.412 132.305s0 89.438 11.412 132.305c6.281 23.65 24.787 41.5 48.284 47.821C117.22 448 288 448 288 448s170.78 0 213.371-11.486c23.497-6.321 42.003-24.171 48.284-47.821 11.412-42.867 11.412-132.305 11.412-132.305s0-89.438-11.412-132.305zm-317.51 213.508V175.185l142.739 81.205-142.739 81.201z"> </path> </svg> <span class="visible-for-screen-readers">YouTube</span> </a> </li> </ul> </div> <nav class="site-footer__primary-nav" aria-label="Footer Primary"> <ul class="site-footer-primary-links"> <li> <a href="https://www.lib.iastate.edu/ask-a-librarian"> <svg class="svg-inline--fa fa-messages-question label-icon" aria-hidden="true" focusable="false" data-prefix="fal" data-icon="messages-question" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 640 512" data-fa-i2svg=""> <path fill="currentColor" d="M202.7 288H352c17.7 0 32-14.3 32-32V64c0-17.7-14.3-32-32-32H64C46.3 32 32 46.3 32 64V256c0 17.7 14.3 32 32 32H96c17.7 0 32 14.3 32 32v16l55.5-41.6c5.5-4.2 12.3-6.4 19.2-6.4zM352 320H202.7l-81.1 60.8c-4.8 3.6-11.3 4.2-16.8 1.5s-8.8-8.2-8.8-14.3V352 320H64c-35.3 0-64-28.7-64-64V64C0 28.7 28.7 0 64 0H352c35.3 0 64 28.7 64 64V256c0 35.3-28.7 64-64 64zM320 448c-35.3 0-64-28.7-64-64V352h32v32c0 17.7 14.3 32 32 32H437.3c6.9 0 13.7 2.2 19.2 6.4L512 464V448c0-17.7 14.3-32 32-32h32c17.7 0 32-14.3 32-32V192c0-17.7-14.3-32-32-32H448V128H576c35.3 0 64 28.7 64 64V384c0 35.3-28.7 64-64 64H544v32 16c0 6.1-3.4 11.6-8.8 14.3s-11.9 2.1-16.8-1.5L437.3 448H320zM184.3 70.3c-16.4 0-31 10.3-36.4 25.7l-.3 .9c-3 8.3 1.4 17.5 9.7 20.4s17.5-1.4 20.4-9.7l.3-.9c.9-2.7 3.5-4.4 6.3-4.4h41.3c6.5 0 11.7 5.3 11.7 11.7c0 4.2-2.2 8.1-5.9 10.2l-31.4 18c-5 2.9-8 8.1-8 13.9v9.5c0 8.8 7.2 16 16 16s16-7.2 16-16v-.3L247.4 152c13.6-7.8 22-22.3 22-37.9c0-24.2-19.6-43.7-43.7-43.7H184.3zM208 250.7a22.7 22.7 0 1 0 0-45.3 22.7 22.7 0 1 0 0 45.3z"></path> </svg> <span>Ask</span> </a> </li> <li> <a href="https://www.lib.iastate.edu/give"> <svg class="svg-inline--fa fa-gift label-icon" aria-hidden="true" focusable="false" data-prefix="fal" data-icon="gift" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512" data-fa-i2svg=""> <path fill="currentColor" d="M365.1 32c-17.6 0-33.9 9-43.2 23.9l-45 72.1H288h80c26.5 0 48-21.5 48-48s-21.5-48-48-48h-2.9zm-130 96l-45-72.1C180.8 41 164.5 32 146.9 32H144c-26.5 0-48 21.5-48 48s21.5 48 48 48h80 11.1zM256 101l38.8-62c15.2-24.2 41.7-39 70.3-39H368c44.2 0 80 35.8 80 80c0 18-6 34.6-16 48h32c26.5 0 48 21.5 48 48v64c0 20.9-13.4 38.7-32 45.3V288 448c0 35.3-28.7 64-64 64H96c-35.3 0-64-28.7-64-64V288v-2.7C13.4 278.7 0 260.9 0 240V176c0-26.5 21.5-48 48-48H80C70 114.6 64 98 64 80C64 35.8 99.8 0 144 0h2.9c28.6 0 55.2 14.7 70.3 39L256 101zM144 160H48c-8.8 0-16 7.2-16 16v64c0 8.8 7.2 16 16 16H64 240V160H224 144zm128 0v96H448h16c8.8 0 16-7.2 16-16V176c0-8.8-7.2-16-16-16H368 288 272zM240 288H64V448c0 17.7 14.3 32 32 32H240V288zm32 192H416c17.7 0 32-14.3 32-32V288H272V480z"></path> </svg> <span>Give</span> </a> </li> <li> <a href="https://quicksearch.lib.iastate.edu/discovery/search?vid=01IASU_INST%3A01IASU"> <svg class="svg-inline--fa fa-magnifying-glass label-icon" aria-hidden="true" focusable="false" data-prefix="fal" data-icon="magnifying-glass" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512" data-fa-i2svg=""> <path fill="currentColor" d="M384 208A176 176 0 1 0 32 208a176 176 0 1 0 352 0zM343.3 366C307 397.2 259.7 416 208 416C93.1 416 0 322.9 0 208S93.1 0 208 0S416 93.1 416 208c0 51.7-18.8 99-50 135.3L507.3 484.7c6.2 6.2 6.2 16.4 0 22.6s-16.4 6.2-22.6 0L343.3 366z"></path> </svg> <span>Quick Search</span> </a> </li> </ul> </nav> <nav class="site-footer__secondary-nav" aria-label="Footer Secondary"> <h2 class="site-footer__section-label">Quick Links</h2> <ul class="sandy"> <li><a href="https://www.lib.iastate.edu/information-for/people-with-accessibility-needs"><u>Accessibility needs</u></a></li> <li><a href="https://www.lib.iastate.edu/about-us/jobs"><u>Jobs at the library</u></a></li> <li><a href="https://www.lib.iastate.edu/information-for/faculty-and-researchers"><u>Faculty and Researchers</u></a></li> <li><a href="https://www.lib.iastate.edu/information-for/undergraduate-students"><u>Undergrad Students</u></a></li> <li><a href="https://www.lib.iastate.edu/information-for/graduate-students"><u>Grad Students</u></a></li> <li><a href="https://www.lib.iastate.edu/information-for/instructors"><u>Instructors</u></a></li> <li><a href="https://www.lib.iastate.edu/information-for/guests-and-alumni"><u>Guests and Alumni</u></a> </li> </ul> </nav> <div class="site-footer__site-org-contact-info"> <div class="site-footer__address_email_phone_S"> <p>701 Morrill Rd <br> Ames, IA 50011-2102 </p> </div> <div class="site-footer__site-org-contact-email-phone-wrap"> <div class="site-footer__address_email_phone_S"> <p>515-294-3642</p> </div> <div class="site-footer__address_email_phone_S"> <p>Main Desk: <a href="mailto: circdesk@iastate.edu"><u>circdesk@iastate.edu</u></a></p> <p>Website Feedback: <a href="mailto: libweb@iastate.edu"><u>libweb@iastate.edu</u></a></p> <p>Library IT Help: <a href="mailto: lib-support@iastate.edu"><u>lib-support@iastate.edu</u></a></p> </div> </div> </div> </div> <div class="site-footer__bottom-wrap"> <nav class="site-footer__utility-nav" aria-label="Footer Utility"> <ul class="sandy"> <li><a href="https://www.iastate.edu/disclaimers-and-terms">Privacy Policy</a></li> <li><a href="https://www.policy.iastate.edu/policy/discrimination">Non-discrimination Policy</a></li> <li><a href="https://www.digitalaccess.iastate.edu/">Digital Access and Accessibility</a></li> <li><a href="https://www.iastate.edu/consumer-information">Consumer Information</a></li> </ul> </nav> <div class="site-footer__copyright"> <p>© Iowa State University of Science and Technology</p> </div> </div> </div> </div> </footer></div> <script defer src="https://static-assets-us.libcal.com/fullcalendar_14/fullcalendar.min.js"></script> <script defer src="https://static-assets-us.libcal.com/js_708/datepicker.min.js"></script> <link rel="stylesheet" href="https://static-assets-us.libcal.com/css_708/datepicker.min.css"/> <script> var springyFullCalendar = { commonOptions: { schedulerLicenseKey: '0391239527-fcs-1659132663', now: '2025\u002D03\u002D01\u002017\u003A17', nowIndicator: true, scrollTime: '16\u003A00\u003A00', lazyFetching: false, locale: springSpace.language, themeSystem: 'bootstrap', eventTextColor: '#222', eventDisplay: 'block', moreLinkClick: 'day', bootstrapFontAwesome: { goToDate: 'fa-calendar', goToNextAvailable: 'fa-fast-forward', refresh: 'fa-refresh', }, navLinks: true, // https://fullcalendar.io/docs/navLinks resourceOrder: false, // https://fullcalendar.io/docs/resourceOrder stickyHeaderDates: false, // https://fullcalendar.io/docs/stickyHeaderDates && https://github.com/springshare/LibCal/issues/11801 dayCellContent: function (info) { // regardless of language, show the day as a number with no extra characters return info.date.getDate(); }, }, timelineOptions: { height: 'auto', refetchResourcesOnNavigate: false, eventOverlap: false, displayEventTime: false, slotDuration: '00\u003A15', titleFormat: springSpace.dateFormat, views: { timelineSingleDay: { type: 'resourceTimeline', buttonText: 'Day\u0020View', duration: {days: 1}, slotLabelFormat: springSpace.timeFormat, }, timelineHourlyShort: { type: 'resourceTimeline', duration: {days: 3}, slotLabelFormat: [springSpace.dateFormat, springSpace.timeFormat], }, timelineHourlyLong: { type: 'resourceTimeline', duration: {days: 7}, slotLabelFormat: [springSpace.dateFormat, springSpace.timeFormat], }, timelineDailyLong: { type: 'resourceTimeline', slotDuration: '24:00', duration: {days: 28}, slotLabelFormat: ['dd D'], nowIndicator: false }, resourceTimeGridWeek: { buttonText: 'Week\u0020View', slotLabelFormat: springSpace.timeFormat, } }, }, publicTexts: { allDay: 'All\u0020Day', available: 'Available', dayGridMonth: 'Month', dayGridWeek: 'Agenda', goToDate: 'Go\u0020To\u0020Date', goToNextAvailable: 'Next\u0020Available', next: 'Next', prev: 'Previous', timeGridDay: 'Day', timeGridWeek: 'Week', today: 'Today', unavailable: 'Unavailable\/Padding', yourBooking: 'Your\u0020Booking', listWeek: 'Week\u0020List', }, adminTexts: { goToDate: 'Go\u0020To\u0020Date', refresh: 'Refresh', prev: 'Previous', next: 'Next', today: 'Today', week: 'Week', month: 'Month', day: 'Day', dayGridWeek: 'Agenda', allDay: 'All\u0020Day', atLocation: '\u0025title\u0025\u0020at\u0020\u0025location\u0025', }, dateTimeFormats: { monthViewTitle: 'MMMM YYYY', }, }; // placeholder for dynamic content boxes with a full calendar var calendarList = {}; function reRenderCalendarList() { for (var calId in calendarList) { calendarList[calId].render(); } } </script> <script defer src="https://static-assets-us.libcal.com/js_708/direct/full-calendar-common.min.js"></script> <script> var springLang = { eq_js_until_det: 'until...', eq_js_rem_pending: 'Remove\u0020Pending\u0020Booking', eq_js_cart_tt: 'Create\u0020a\u0020shopping\u0020cart\u0020with\u0020these\u0020space\u0020bookings,\u0020and\u0020go\u0020to\u0020equipment\u0020booking\u0020page\u0020to\u0020add\u0020more\u0020items\u0020to\u0020the\u0020cart.', eq_js_isRequired: 'is\u0020required\u0021', }; </script> <script defer src="https://static-assets-us.libcal.com/js_708/direct/public/equipment/common.min.js"></script> <script defer src="https://static-assets-us.libcal.com/js_708/direct/public/equipment/spaces.min.js"></script> <script defer src="https://static-assets-us.libcal.com/js_708/direct/public/equipment/session.min.js"></script> <script> var pendingRoomBookings = []; var pendingBookingNextId = 1; var pendingBookingsBlowAwayCart = false; function addError(msg, id) { jQuery(".s-lc-eq-" + id).addClass("has-error").find(".form-control").attr("aria-invalid", true); jQuery(".s-lc-eq-" + id).find(".s-lc-eq-flab").append('<div class="error-message">' + msg + "</div>"); jQuery("#" + id).focus(); return false; } function removeErrors() { jQuery(".s-lc-eq-q").removeClass("has-error").find(".error-message").remove(); } function agreeToTermsAndConditions() { jQuery("#bform-terms-container").hide(); jQuery("#bform-form-container").show(); scrollAndFocusOnElement('#s-lc-bform-help'); return false; } function toggleSubmitButton() { var isTermsAgreedTo = jQuery(this).is(':checked'); jQuery('#btn-form-submit').prop('disabled', !isTermsAgreedTo); } function customFormValidation() { // exists to be overwritten by the specific group validation function } function preFormValidationAndPayload() { removeErrors(); jQuery("#s-lc-eq-errors").hide(); if (!isVisibleFieldsValid()) { return false; } if (!customFormValidation()) { return false; } pageBusyBegin("#btn-form-submit"); var formElement = '#s-lc-eq-bform'; var bookings = preparePendingBookingsPayload(); var bookingsPayload = JSON.stringify(bookings); springyCommon.appendHiddenInput('bookings', bookingsPayload, formElement); springyCommon.appendHiddenInput('returnUrl', springySpaces.getReturnUrl(), formElement); springyCommon.appendHiddenInput('pickupHolds', jQuery('#s-lc-pickup-holds').val(), formElement); springyCommon.appendHiddenInput('method', springyPage.bookingMethod, formElement); return true; } function bookingSuccessCallback(data) { pageBusyEnd("#btn-form-submit"); if (data.error) { jQuery("#s-lc-eq-errors").html(data.error).show(); return; } jQuery('#s-lc-eq-form, .s-lc-spaces-setup-info').hide(); jQuery('#s-lc-eq-success').html(data.html).show().focus(); springySession.clear(); return; } function bookingErrorCallback(xhr) { pageBusyEnd("#btn-form-submit"); var errorMessage = ajaxErrorGetText(xhr); jQuery('#s-lc-eq-errors').html(errorMessage).show().focus(); } function submitPendingTimes() { var payload = { patron: springySpaces.patron, patronHash: springySpaces.patronHash, returnUrl: springySpaces.getReturnUrl(), bookings: preparePendingBookingsPayload(), method: springyPage.bookingMethod, }; pageBusyBegin("#submit_times"); jQuery.ajax({ type: 'post', url: '/ajax/space/times', data: payload, dataType: 'json', }) .always(function () { pageBusyEnd("#submit_times"); }) .done(function(data) { if (data.redirect) { // redirect to libauth checkout page window.location = data.redirect; return; } // hide a bunch of stuff jQuery('.s-lc-spaces-setup-info').hide(); // setup booking form + terms html jQuery("#s-lc-eq-form").html(data.html).show(); // scroll to the top of the page window.scrollTo(0, 0); }) .fail(ajaxErrorHandler); return false; } function makeCartAndGoToEquipPage() { // we only allow user to do this if all the room bookings start at the same time if (pendingRoomBookings.length > 1) { var startTime = pendingRoomBookings[0].start; for (var i = 1; i < pendingRoomBookings.length; i++) { var bookingInfo = pendingRoomBookings[i]; if (!bookingInfo.start.isSame(startTime)) { errorAlert('You can only create an Equipment Cart if all your room bookings begin at the same time.'); return false; } } } var payload = { blowAwayCart: pendingBookingsBlowAwayCart, returnUrl: springySpaces.getReturnUrl(), bookings: preparePendingBookingsPayload(), method: springyPage.bookingMethod, }; workingAlert(); jQuery.ajax({ type: 'post', url: "/ajax/space/createcart", data: payload, dataType: 'json', }) .always(function (data) { stopAlert(); }) .done(function(data) { if (data.success) { // redirect to new page window.location = data.redirect; } else if (data.hasItems) { errorAlert("Cart already has items in it. If you click the shopping cart again, the existing items in the cart will be replaced by the selected rooms."); pendingBookingsBlowAwayCart = true; } else { errorAlert(data.error); } }) .fail(ajaxErrorHandler); return false; } function changeBookingTimes() { // show the old form box + availability grid jQuery('.s-lc-spaces-setup-info').show(); // hide the terms + booking form jQuery('#s-lc-eq-form, #s-lc-eq-errors').hide(); return false; } function getSpaceResourceContent(info) { var html = ''; var resourceData = info.resource.extendedProps; var resourceId = springyPage.isSeatBooking ? resourceData.seatId : resourceData.eid; var title = escapeHtml(info.fieldValue); if (resourceData.hasInfo) { html += '<a href="#" class="s-lc-item-more-info" data-eid="' + resourceId + '"' + ' aria-label="Click\u0020for\u0020more\u0020info\u0020about ' + title + '">' + '<span class="s-lc-info-label">Info</span>' + '</a>'; } var additionalClasses = ''; var additionalIcons = ''; var filterIds = resourceData.filterIds || []; for (var i = 0; i < filterIds.length; i++) { var filterId = filterIds[i]; if (filterId in springyPage.searchFilters) { var filter = springyPage.searchFilters[filterId]; additionalClasses += ' s-lc-filter-' + filterId; additionalIcons += ' <i class="fa ' + filter.icon + ' fa-lg" aria-hidden="true"></i>'; } } var resourceLabel = '<span class="fc-cell-text' + additionalClasses + '">' + title + additionalIcons + '</span>'; if (resourceData.url !== undefined) { html += '<a href="' + resourceData.url + '">' + resourceLabel + '</a>'; } else { html += resourceLabel; } return { html: html, }; } jQuery(function () { springyPublic.registerClearBackForwardCache(); jQuery('#lid').on('change', goToPageForLocation); jQuery('#gid').on('change', goToPageForGroup); jQuery('#eq_cart').on('click', makeCartAndGoToEquipPage); jQuery('#s-lc-eq-form-times').on('submit', submitPendingTimes); }); </script> <script src="https://static-assets-us.libcal.com/js_708/direct/pagination.min.js"></script> <script defer src="https://static-assets-us.libcal.com/js_708/direct/public/equipment/space-individual.min.js"></script> <script> var springyPage = { wantAlternatingBackground: false, timelineOptions: { resourceAreaWidth: '30%', initialDate: '2025\u002D03\u002D01', }, itemId: 168131, isSeatBooking: 0, seatId: 0, zoneId: 0, filterIds: [], searchFilters: [], isDailyBookings: 0, locationId: 19760, groupId: 41509, language: { resourceColumnLabel: 'Space', infoLabel: 'Info', clickMoreInfoLabel: 'Click\u0020for\u0020more\u0020info\u0020about', gridHelp: 'First\u0020select\u0020a\u0020start\u0020time\u0020from\u0020the\u0020grid\u0020below.\u0020You\u0020will\u0020then\u0020be\u0020able\u0020to\u0020modify\u0020the\u0020end\u0020date\/time\u0020in\u0020the\u0020dropdown\u0020below\u0020the\u0020grid.', }, viewMode: 'timelineSingleDay', returnUrl: '\/space\/168131', unavailableUrl: window.location.href, pageIndex: 0, pageSize: 18, resourceCount: 1, bookingMethod: 12, autoCreateBookingDate: null, isBookNow: 0, }; var resources = [ { id: "eid_168131", title: "Studio\u00202B (Capacity 1)", eid: 168131, gid: 41509, lid: 19760, grouping: "Studio\u00202B", gtype: 2, capacity: 1, hasInfo: false, thumbnail: "https\u003A\/\/d2jv02qf7xgjwx.cloudfront.net\/customers\/18\/images\/0002b.jpg", filterIds: [], }, ]; var resourceNameIdMap = { "eid_168131": "Studio\u00202B", }; var paginatedResources = springyPagination.createPaginatedResources(resources, springyPage.pageSize); </script> <script> var pendingBookingsLimitIssues = null; var dateFormatStartTimeDict = "MMDDHHmm"; var dateFormatDayOfYear = "YYYY-MM-DD"; var issueTypeAdditionalText = { "duration": " minutes", "frequency": " bookings", }; var frequencyDisplayStrings = { "d": " per\u0020day", "w": " per\u0020week", "m": " per\u0020month", "y": " per\u0020year", "t": " at\u0020a\u0020time", }; function pendingRoomBookingsAreNowEmpty() { jQuery("#s-lc-eq-form-box").hide(); } function renderPendingRoomBookings() { // ensure all tooltips are hidden jQuery(".tooltip").hide(); if (pendingRoomBookings.length == 0) { pendingRoomBookingsAreNowEmpty(); return; } // refresh the shown cart items // format the room data as html var html = '<div>'; var startDateTimeFormat = springyPage.isDailyBookings ? springSpace.dateFormat : springSpace.getDateTimeFormat(); var endDateTimeFormat = springyPage.isDailyBookings ? springSpace.dateFormat : springSpace.getShortDateTimeFormat(); var totalCost = 0; for (var i = 0; i < pendingRoomBookings.length; i++) { var bookingInfo = pendingRoomBookings[i]; var bookingCost = bookingInfo.cost; var resourceId = bookingInfo.seat_id > 0 ? bookingInfo.seat_id : bookingInfo.eid; var resourceName = resourceNameIdMap['eid_' + resourceId]; html += '<div class="form-group s-lc-pending-booking" id="pending_booking_' + bookingInfo.id + '">'; html += ' <label class="col-md-5 control-label" for="bookingend_' + bookingInfo.id + '"><strong>' + resourceName + '</strong>: ' + bookingInfo.start.format(startDateTimeFormat) + ' ' + springLang.eq_js_until_det + '</label>'; html += ' <div class="col-md-3">'; html += ' <div class="input-group">'; html += ' <select id="bookingend_' + bookingInfo.id + '" name="bookingend_' + bookingInfo.id + '" data-booking="' + bookingInfo.id + '" class="form-control input-sm b-end-date">'; for (var selectionIndex = 0; selectionIndex < bookingInfo.options.length; selectionIndex++) { var selected = bookingInfo.optionSelected == selectionIndex ? 'selected="selected"' : ''; var value = bookingInfo.options[selectionIndex]; var name = moment(value).format(endDateTimeFormat); var checksum = bookingInfo.optionChecksums[selectionIndex]; html += '<option value="' + value + '" ' + selected + ' data-crc="' + checksum + '">' + name + '</option>'; } html += ' </select>'; html += ' <div class="input-group-btn">'; html += ' <button type="button" class="btn btn-default btn-sm" onclick="return removePendingBooking(' + bookingInfo.id + ',' + bookingInfo.lid + ');"><i class="fa fa-trash-o" aria-hidden="true"></i><span class="sr-only">' + springLang.eq_js_rem_pending + '</span></button>'; html += ' </div>'; html += ' </div>'; html += ' </div>'; if (bookingCost > 0) { var costDisplay = springSpace.formatCurrency(bookingCost); var costPreview = "\u007Bamount\u007D".replace("\u007Bamount\u007D", costDisplay).replace("\u007Brate\u007D", ""); html += '<label class="col-md-3 control-label s-lc-billing-cost-single">' + costPreview + '</label>'; } html += ' </div>'; html += ' </div>'; html += '</div>'; totalCost += bookingCost; } var bookingDurationOkay = true; if (pendingBookingsLimitIssues) { bookingDurationOkay = false; pendingBookingsLimitIssues.forEach(function(issueDetails) { var limitDisplay = issueDetails.allowed + issueTypeAdditionalText[issueDetails.type] + frequencyDisplayStrings[issueDetails.frequency]; var usedDisplay = issueDetails.used + issueTypeAdditionalText[issueDetails.type]; var issueDisplay = 'Sorry,\u0020you\u0020can\u0020only\u0020reserve\u0020\u007BlimitAmount\u007D,\u0020and\u0020you\u0020currently\u0020have\u0020\u007BusedAmount\u007D.\u0020Please\u0020adjust\u0020your\u0020booking.'.replace('{limitAmount}', limitDisplay).replace('{usedAmount}', usedDisplay); var issueHtml = '<strong>' + issueDetails.group + '</strong>: ' + issueDisplay; html += '\ <div class="form-group">\ <div class="col-md-offset-1 col-md-10">\ <div class="alert alert-warning">' + issueHtml + '</div>\ </div>\ </div>'; }); } if (totalCost > 0) { html += '\ <div class="form-group s-lc-pending-booking">\ <label class="col-md-5 control-label">Total\u0020cost\u0020for\u0020this\u0020reservation\u003A</label>\ <label class="col-md-5 control-label s-lc-billing-cost-total">' + springSpace.formatCurrency(totalCost) + '</label>\ </div>'; } html += '</div>'; // show the booking form box which contains the booking well, the terms + conditions and the booking form jQuery("#s-lc-eq-form-box").show(); // put the item in the displayed cart + set the window focus to the cart var roomCart = jQuery("#s-lc-eq-bwell"); roomCart.empty(); roomCart.html(html); roomCart.focus(); // disable the add equipment and form submission buttons until the times are okay jQuery("#submit_times, #eq_cart").prop('disabled', !bookingDurationOkay); // setup delete icon tooltips accessibleIcons(); // make the tooltip for the cart icon jQuery("#eq_cart").tooltip({ title: springLang.eq_js_cart_tt, html: true, container: "body" }); jQuery('.b-end-date').on('change', function() { var changedBooking = jQuery(this); updatePendingBookingDuration(changedBooking); }); } function preparePendingBookingsPayload() { var payload = []; for (var i = 0; i < pendingRoomBookings.length; i++) { var bookingInfo = pendingRoomBookings[i]; payload.push({ id: bookingInfo.id, eid: bookingInfo.eid, seat_id: bookingInfo.seat_id, gid: bookingInfo.gid, lid: bookingInfo.lid, start: bookingInfo.start.format(springSpace.phpDateTimeFormat), end: bookingInfo.end.format(springSpace.phpDateTimeFormat), checksum: bookingInfo.checksum, }); } return payload; } function updatePendingBookingsFromData(bookings) { pendingRoomBookings = []; for (var i = 0; i < bookings.length; i++) { var booking = bookings[i]; pendingRoomBookings.push({ id: booking.id, eid: booking.eid, seat_id: booking.seat_id, gid: booking.gid, lid: booking.lid, cost: booking.cost, checksum: booking.checksum, name: booking.name, start: moment(booking.start), end: moment(booking.end), options: booking.options, optionSelected: booking.optionSelected, optionChecksums: booking.optionChecksums, }); } } function pendingRoomBookingsUpdateListAndAvailability(payload, fcInstance) { // if we are adding rooms, we might need to hide the previous booking success message jQuery("#s-lc-eq-success").hide(); workingAlert(); // find out booking information jQuery.ajax({ type: "post", url: "/spaces/availability/booking/add", data: payload, dataType: "json", }) .always(stopAlert) .done(function(data) { if (data.error) { if (data.isRefreshRequired) { fcInstance.refetchEvents(); } return errorAlert(data.error); } // success! the entire pending bookings array can be re-created now pendingBookingsLimitIssues = data.limitIssues; updatePendingBookingsFromData(data.bookings); // this request might have came back with updated grid data // if it did not - refresh the whole grid if (data.gridUpdateData) { updateGridEventsForItem(data.gridUpdateData, fcInstance); } else if (fcInstance) { fcInstance.refetchEvents(); } renderPendingRoomBookings(); }) .fail(ajaxErrorHandler); return false; } function createStartTimeToClassMap(gridData) { var startTimeToClassMap = {}; gridData.forEach(function(gridElement) { var startMoment = moment(gridElement.start); startTimeToClassMap[startMoment.format(dateFormatStartTimeDict)] = [gridElement.className]; }); return startTimeToClassMap; } function updateGridEventsForItem(gridUpdateData, fcInstance) { var changedItemId = gridUpdateData.itemId; var changedRangeStart = moment(gridUpdateData.dateStart, springSpace.phpDateTimeFormat); var changedRangeEnd = moment(gridUpdateData.dateEnd, springSpace.phpDateTimeFormat); var startTimeToClassMap = createStartTimeToClassMap(gridUpdateData.gridData); fcInstance.batchRendering(function() { fcInstance.getEvents().forEach(function (clientEvent) { if (clientEvent.extendedProps.itemId !== changedItemId) { return; } var clientEventStart = moment(clientEvent.start); // if this event is before the day of events that was changed - forget it // and we only want to process events that start before the changed range "end" if (clientEventStart.isBefore(changedRangeStart) || !clientEventStart.isBefore(changedRangeEnd)) { return; } var startKey = clientEventStart.format(dateFormatStartTimeDict); if (startKey in startTimeToClassMap) { // this slot is unavailable clientEvent.setProp('classNames', startTimeToClassMap[startKey]); clientEvent.setExtendedProp('status', 1); } else { // this slot is available clientEvent.setProp('classNames', ["s-lc-eq-avail"]); clientEvent.setExtendedProp('status', 0); } }); }); } function timeGridClickedOnAvailableRoom(calEvent, fcInstance) { var resource = calEvent.getResources()[0]; var resourceData = resource.extendedProps; var timeslotData = calEvent.extendedProps; var view = fcInstance.view; var payload = { add: { eid: resourceData.eid, seat_id: resourceData.seatId, gid: resourceData.gid, lid: resourceData.lid, start: moment(calEvent.start).format(springSpace.phpDateTimeFormat), checksum: timeslotData.checksum, }, lid: 19760, gid: 41509, start: moment(view.activeStart).format(dateFormatDayOfYear), end: moment(view.activeEnd).format(dateFormatDayOfYear), bookings: preparePendingBookingsPayload(), } return pendingRoomBookingsUpdateListAndAvailability(payload, fcInstance); } function updatePendingBookingDuration(changedBooking) { var fcInstance = getCurrentTimelineInstance(19760); var view = fcInstance.view; var selectedElement = changedBooking.find(':selected'); var payload = { update: { id: changedBooking.data('booking'), checksum: selectedElement.data('crc'), end: changedBooking.val() }, lid: 19760, gid: 41509, start: moment(view.activeStart).format(dateFormatDayOfYear), end: moment(view.activeEnd).format(dateFormatDayOfYear), bookings: preparePendingBookingsPayload(), } return pendingRoomBookingsUpdateListAndAvailability(payload, fcInstance); } function removePendingBooking(pendingId, locationId) { var timeline = getCurrentTimelineInstance(locationId); var view = timeline.view; var payload = { removeId: pendingId, lid: 19760, gid: 41509, start: moment(view.activeStart).format(dateFormatDayOfYear), end: moment(view.activeEnd).format(dateFormatDayOfYear), bookings: preparePendingBookingsPayload(), } return pendingRoomBookingsUpdateListAndAvailability(payload, timeline); } function formatEventsForFullCalendar(events) { events.forEach(function(eventData) { eventData.resourceId = "eid_" + eventData.itemId; if (eventData.className) { // this slot is unavailable eventData.status = 1; eventData.classNames = [eventData.className]; } else { // this slot is available eventData.classNames = ["s-lc-eq-avail"]; eventData.status = 0; } }); return events; } function timeGridRoomFetchEventsForTimePeriod(start, end, callback, lid, gid, eid) { var data = { lid: lid, gid: gid, eid: eid, seat: springyPage.isSeatBooking, seatId: springyPage.seatId, zone: springyPage.zoneId, filters: springyPage.filterIds, start: moment(start).format(dateFormatDayOfYear), end: moment(end).format(dateFormatDayOfYear), bookings: preparePendingBookingsPayload(), pageIndex: springyPage.pageIndex, pageSize: springyPage.pageSize, }; var url = '/spaces/availability/grid'; if (typeof springyPage.autoCreateBookingDate === 'string') { url = '/spaces/availability/grid/pre-create' data.autoCreateBookingDate = springyPage.autoCreateBookingDate; springyPage.autoCreateBookingDate = null; } springyCommon.closeAllPopups(); jQuery.ajax({ type: 'post', url: url, data: data, dataType: 'json', }) .done(function(data) { callback(formatEventsForFullCalendar(data.slots)); // sometimes on an initial view of the availability grid we auto-create a booking // (currently this is only possible via maps) if (data.isPreCreatedBooking) { updatePendingBookingsFromData(data.bookings); renderPendingRoomBookings(); } var isAtEndOfWindowLimit = data.windowEnd === true; jQuery('#s-lc-window-limit-warning').toggle(isAtEndOfWindowLimit); jQuery('.fc-next-button').prop('disabled', isAtEndOfWindowLimit); var selectorPrefix = ''; var isNextAvailableButtonWanted = (document.querySelector(selectorPrefix + '.s-lc-eq-avail') === null); jQuery(selectorPrefix + '.fc-goToNextAvailable-button').toggle(isNextAvailableButtonWanted); }) .fail(function(xhr) { // let fullcalendar know that the request has completed with no results callback([]); // and display the error to the user ajaxErrorHandler(xhr); }); } </script> <div id="s-lc-privacy-statement" class="modal fade" role="dialog"> <div class="modal-dialog"> <div class="modal-content"> <div class="modal-header"> <button type="button" class="close" data-dismiss="modal">&times;</button> <h4 class="modal-title">Privacy Statement</h4> </div> <div class="modal-body"> <p>To use this platform, the system writes one or more cookies in your browser. These cookies are not shared with any third parties. In addition, your IP address and browser information is stored in server logs and used to generate anonymized usage statistics. Your institution uses these statistics to gauge the use of library content, and the information is not shared with any third parties.</p> </div> <div class="modal-footer"> <button type="button" class="btn btn-default" data-dismiss="modal">Close</button> </div> </div> </div> </div> <script> springSpace.cookieConsent.alert({ okay: "OK", placement: "bottom", consent_message: "This site uses cookies and stores your IP address for usage statistics. <a href='#' id='s-ui-cc-read-more-link'>Read\u0020More</a>", read_more_callback: function () { jQuery("#s-lc-privacy-statement").modal("show"); } }); </script> </body> </html>

Pages: 1 2 3 4 5 6 7 8 9 10