CINXE.COM

Space Availability - Study Room C33 (Main Level) - Yale Library Study Spaces Scheduling - Yale University Library

<!DOCTYPE html> <html lang="en"> <head> <!-- iid: 457 --> <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 = "dddd, MMMM D, YYYY"; springSpace.timeFormat = "h:mma"; springSpace.timezone = 'America/New_York'; 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 - Study Room C33 (Main Level) - Yale Library Study Spaces Scheduling - Yale University Library </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: #14951f none !important; border-color: #14951f !important; } .s-lc-eq-avail:hover, .s-lc-eq-period-available:hover { background: #095212 none !important; border-color: #095212 !important; } .s-lc-eq-pending, .label-eq-pending, .s-lc-eq-period-pending { background: #F59F16 none !important; border-color: #F59F16 !important; } .s-lc-eq-checkout, .s-lc-eq-r-unavailable, .s-lc-eq-r-padding, .label-eq-unavailable, .s-lc-eq-period-booked { background: #c91908 none !important; border-color: #c91908 !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> <!-- Google Tag Manager --> <script>(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start': new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0], j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src= 'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f); })(window,document,'script','dataLayer','GTM-PBL779');</script> <!-- End Google Tag Manager --> <meta name="google-site-verification" content="BBhNJt23s9tI2nix40f0uZSO-4e58ToAkPyl5VHva_Q" /> <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.4.1/css/bootstrap.min.css"> <script> function renderBanner() { fetch("https://banner.library.yale.edu/banner.json") .then(response => response.json()) .then(data => { let allBanners = data.banners; if ("global" in allBanners) { let banners = allBanners.global; if (banners.length > 0) { let banner = banners[0]; let bannerClass = ''; switch (banner.level) { case "warning": bannerClass = 'banner-warning'; break; case "severe": bannerClass = 'banner-severe'; break; default: bannerClass = 'banner-default'; } let container = document.getElementById("banner"); container.className += " " + bannerClass; container.innerHTML += "<h2>" + banner.header + "</h2>"; container.innerHTML += "<p>" + banner.message + "</p>"; } } }) .catch(error => { console.error('Error:', error); }); } </script> <!-- Begin custom CSS for LibCal --> <style type="text/css"> @font-face { font-family: 'mallory_mpmedium'; src: url('https://libweb.library.yale.edu/fonts/MalloryMP/MalloryMP-Medium.woff2') format('woff2'), url('https://libweb.library.yale.edu/fonts/MalloryMP/MalloryMP-Medium.woff') format('woff'); font-weight: normal; font-style: normal; } @font-face { font-family: 'mallory_mpbold'; src: url('https://libweb.library.yale.edu/fonts/MalloryMP/MalloryMP-Bold.woff2') format('woff2'), url('https://libweb.library.yale.edu/fonts/MalloryMP/MalloryMP-Bold.woff') format('woff'); font-weight: normal; font-style: normal; } @font-face { font-family: 'YaleNew-Roman'; src: url('https://libweb.library.yale.edu/fonts/YaleNew/YaleNew-Roman.woff2') format('woff2'), url('https://libweb.library.yale.edu/fonts/YaleNew/YaleNew-Roman.woff') format('woff'); font-weight: normal; font-style: normal; } @font-face { font-family: 'mallory_mplight'; src: url('https://libweb.library.yale.edu/fonts/MalloryMP/MalloryMP-Light.woff2') format('woff2'), url('https://libweb.library.yale.edu/fonts/MalloryMP/MalloryMP-Light.woff') format('woff'); font-weight: normal; font-style: normal; } @font-face { font-family: 'fontawesome'; src: url('https://libweb.library.yale.edu/fonts/fontawesome-webfont.woff') format('woff'), url('https://libweb.library.yale.edu/fonts/fontawesome-webfont.ttf') format('ttf'); font-weight: normal; font-style: normal; } .navbar-default{ background-color:#00356b; } .navbar-default .navbar-nav > li > a, .navbar-default .navbar-nav>.open>a { color:#ffffff; } .navbar-brand, .navbar-brand:hover, .navbar-default .navbar-brand, .navbar-default .navbar-brand:hover { color:#ffffff; font-size: 30px; } .dropdown-menu { background-color:#00356b; font-color:#00000; } ul.nav li a, ul.nav li.active a, ul.nav li a:visited, ul.nav li a:hover, ul.nav li a:active { background-color:#00356b; color: #ffffff; } .dropdown-menu > li > a:focus, .dropdown-menu > li > a:hover, .dropdown-header { color: #ffffff; text-decoration: none; background-color: #00356b !important; } .dropdown-toggle:hover, .dropdown-toggle:focus { background-color:#00356b; color: #ffffff !important; } { background-color:#00356b; color: #ffffff !important; } .navbar-default .navbar-nav > li > a:focus, .navbar-default .navbar-nav > li > a:hover { background-color:#00356b; color: #ffffff !important; } .navbar-default .navbar-nav > .open > a, .navbar-default .navbar-nav > .open > a:focus, .navbar-default .navbar-nav > .open > a:hover, .navbar-nav > .open > a, .navbar-nav > .open > a:focus, .navbar-nav > .open > a:hover { background-color:#00356b; color: #ffffff !important; } #s-lc-page-maincontent { font-family:'mallory_mpmedium'; font-size:12px; color:#043669; padding-top:20px; } #s-lc-content-eqlist-54481 a{ font-family:'mallory_mpbold'; font-size:18px; color:#043669; line-height:2.0; text-decoration:none; } #s-lc-content-eqlist-54481 ul li { list-style:none; border-bottom: 1px solid #CCC ; } #s-lc-public-bc{ color:##043669; } #s-lc-public-header { display:none; } #s-lc-public-header-title { display:none; } .sss { height: 117px; background-color:#f6f7f7; font-size: 30px; padding-top: 21px; padding-bottom: 21px; color: #043669; font-family: 'YaleNew-Roman'; } /*Footer Code*/ #footer { vertical-align: baseline; height:141px; font-family: 'YaleNew-Roman'; color:#ffffff; font-size: 30px; padding-top: 20px; } .primary-footer a { float: right; color: white; text-align: center; padding: 12px; text-decoration: none; line-height: 25px; border-radius: 4px; font-family:'mallory_mpmedium'; font-size: 12px; font-weight: 500; font-stretch: normal; font-style: normal; line-height: normal; letter-spacing: 0.3px; } .primary-footer a.logo { font-size: 24px; color:white; font-family: 'YaleNew-Roman'; padding: 12px 0px } .primary-footer-right { float: right; margin-right: -18px font-family: 'mallory_mpmedium'; } .secondary-footer { background-color: #00336d; } .secondary-footer a { float: left; color: white; text-align: center; padding: 5px 10px; text-decoration: none; font-size: 10px; line-height: 15px; border-radius: 4px; } .secondary-footer-right { float: right; margin-right: -8px; } .pfooter { color: #ffffff; font-family: 'YaleNew-Roman'; font-size: 29px; height: 30px; } .pfooter a { font-family: ‘mallory_mpmedium’; color:#ffffff; float: right; font-size: 12px; padding: 8px; text-decoration:none; } .sfooter { clear:both; height: 50px; background-color: #00336d; } .sfooter a{ padding:2px; color:#ffffff; font-size: 11px; text-decoration:none; font-family: 'Mallory-Light'; } #sfooterright { float: right; font-family: 'mallory_mpmedium'; } #primary-footer-right{ font-family:'mallorymp-medium'; } ul.narrow{ margin-right:0px; margin-top:6px; } ul.narrow>li>a{ padding-right:5px; } .s-lc-public-footer{ font-family: 'mallory_mpmedium'; font-size: 12px; background-color:#ffffff; border-color:#ffffff; padding-top:50px; padding-bottom; -25px color:#968d85; #s-lc-public-footer-brand { display: none; } } .s-lc-public-footer a { color:#043669; } .btn-sm:hover { background-color: #e6e6e6 !important; color: #000000; } .s-lc-c-l li{ background-color: #e6e6e6 !important; color: #ffffff !important; } .s-lc-c-l .dropdown-menu-open{ background-color: #e6e6e6 !important; } .s-lc-hm-loc{ background-color: #f5f5f5 !important; color: #968d85; } .dropdown-menu.inner{ background-color: #e6e6e6 !important; } #cal-form .open>.dropdown-menu { background-color: #e6e6e6 !important; } .datepicker{ background-color: #ffffff !important; } .covid { height: 60px; background-color:#bd531a; font-size: 16px; padding-top:5px; padding-bottom: 21px; color: #fff; font-family: 'YaleNew-Roman'; } #banner{ background-color:#bd531a; padding-left: 10px; height:50px; } #banner h2{ color: #fff; font-family: 'YaleNew-Roman'; font-size: 24px; font-weight: bold;font-weight: bold; } #banner p { color:#fff; font-family:'mallory_mpmedium'; font-size: 14px; } </style> </head> <body id="equip_" class="s-lc-public s-lc-public-page-5"> <a class="s-lc-skiplink alert-info" href="/r/accessible?lid=9059&gid=9990"> 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"><head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1"> </head> <body onload="renderBanner();"> <div class=""> <!-- <nav class="nav navbar-default" id="PrimaryHeader" style= height:65px; padding-top:10px;">--> <div class="container" style="background-color:#00356b;"> <div class="navbar-header" style="font-family:'YaleNew-Roman';color:#ffffff; font-size:30px;"> <a href="https://www.library.yale.edu/" class="navbar-brand" >Yale University Library</a> </div> <ul class="nav navbar-nav navbar-right" style="font-family:'mallory_mpmedium'; font-size:12px; padding-top:4px;"> <li> <a href="http://orbis.library.yale.edu/vwebv/myAccount">Your Library Account</a></li> <li> <a href="http://ask.library.yale.edu/">Ask Yale Library</a></li> <li> <a href="https://schedule.yale.edu/">Reserve Rooms</a></li> <li> <a href="https://web.library.yale.edu/places/to-study">Places to Study</a></li> </ul> </div> <!-- </nav>--> <div class="container" style="width:1px; height:1px;"></div> <!-- <nav class="nav navbar-default" style="height:52px; padding-top:-3px; margin-left:116px">--> <div class="container" style="background-color:#00356b;" > <ul class="nav navbar-nav" id="SecondaryHeaderLinks" style="font-family:'YaleNew-Roman'; font-size:20px;"> <li> <a href="#" class="dropdown-toggle" data-toggle="dropdown">RESEARCH <i class="fa fa-chevron-down" aria-hidden="true" style="font-size:12px; vertical-align:3px;"></i></a> <ul class="dropdown-menu"> <li> <a href="http://search.library.yale.edu/">Quicksearch</a></li> <li> <a href="http://orbis.library.yale.edu/vwebv/">Search Library Catalog (Orbis)</a></li> <li> <a href="http://morris.law.yale.edu/">Search Law Library Catalog (MORRIS)</a></li> <li> <a href="https://resources.library.yale.edu/cas/borrowdirect.aspx">Search Borrow Direct</a></li> <li> <a href="https://yale.idm.oclc.org/login?url=http://firstsearch.oclc.org/dbname=WorldCat;autho=100157622;FSIP">Search WorldCat</a></li> <li> <a href="http://yale.summon.serialssolutions.com/">Search Articles+</a></li> <li> <a href="http://web.library.yale.edu/digital-collections">Search Digital Collections</a></li> <li> <a href="http://archives.yale.edu/">Search Archives at Yale</a></li> <li> <a href="http://guides.library.yale.edu/">Research Guides</a></li> <li> <a href="http://search.library.yale.edu/databases">Find Databases by Title</a></li> <li> <a href="http://wa4py6yj8t.search.serialssolutions.com/">Find eJournals by Title</a></li> <li> <a href="http://guides.library.yale.edu/specialcollections">Guide to Using Special Collections</a></li> </ul> </li> <li> <a href="#" class="dropdown-toggle" data-toggle="dropdown">SERVICES <i class="fa fa-chevron-down" aria-hidden="true" style="font-size:12px; vertical-align:3px;"></i></a> <ul class="dropdown-menu"> <li> <a href="https://web.library.yale.edu/pl">Your Personal Librarian</a></li> <li> <a href="https://web.library.yale.edu/subject-specialists">Subject Specialists</a></li> <li> <a href="http://guides.library.yale.edu/research-help">Research Support and Workshops</a></li> <li> <a href="http://guides.library.yale.edu/citationmanagement">Citation Tools</a></li> <li> <a href="http://guides.library.yale.edu/getit">Get It @Yale (Borrow Direct, Interlibrary Loan, Scan & Deliver)</a></li> <li> <a href="http://guides.library.yale.edu/reserves">Course Reserves</a></li> <li> <a href="https://web.library.yale.edu/help/off-campus-access-vpn">Off-Campus Access</a></li> <li> <a href="http://elischolar.library.yale.edu/">EliScholar</a></li> <li> <a href="http://yale.lib.overdrive.com/">OverDrive: Popular Audio and eBooks</a></li> <li> <a href="https://reservations.yale.edu/bmec/">Bass Media Equipment</a></li> </ul> </li> <li> <a href="#" class="dropdown-toggle" data-toggle="dropdown">LIBRARIES & COLLECTIONS <i class="fa fa-chevron-down" aria-hidden="true" style="font-size:12px; vertical-align:3px;"></i></a> <ul class="dropdown-menu"> <li> <a href="https://web.library.yale.edu/building/arts-library">Arts Library</a></li> <li> <a href="https://web.library.yale.edu/building/bass-library">Bass Library</a></li> <li> <a href="https://web.library.yale.edu/building/beinecke-library">Beinecke Library</a></li> <li> <a href="https://web.library.yale.edu/building/classics-library">Classics Library</a></li> <li> <a href="https://web.library.yale.edu/building/divinity-library">Divinity Library</a></li> <li> <a href="https://web.library.yale.edu/film">Film Study Center</a></li> <li> <a href="http://www.library.yale.edu/testimonies/">Fortunoff Archive</a></li> <li> <a href="https://web.library.yale.edu/humanities">Humanities Collections</a></li> <li> <a href="https://web.library.yale.edu/international-collections">International Collections</a></li> <li> <a href="https://web.library.yale.edu/building/law-library">Law Library</a></li> <li> <a href="https://web.library.yale.edu/building/lewis-walpole-library">Lewis Walpole Library</a></li> <li> <a href="https://web.library.yale.edu/departments/lcs">Library Collection Services</a></li> <li> <a href="https://web.library.yale.edu/mssa">Manuscripts & Archives</a></li> <li> <a href="http://www.library.yale.edu/maps">Map Collection</a></li> <li> <a href="https://web.library.yale.edu/building/marx-science-and-social-science-library">Marx Science & Social Science Library</a></li> <li> <a href="https://web.library.yale.edu/building/medical-library">Medical Library</a></li> <li> <a href="https://web.library.yale.edu/music">Music Library</a></li> <li> <a href="https://web.library.yale.edu/building/sterling-library">Sterling Library</a></li> <li> <a href="https://britishart.yale.edu/while-we-are-closed ">Yale Center for British Art</a></li> </ul> </li> <li> <a href="#" class="dropdown-toggle" data-toggle="dropdown">INFORMATION & POLICIES <i class="fa fa-chevron-down" aria-hidden="true" style="font-size:12px; vertical-align:3px;"></i></a> <ul class="dropdown-menu"> <li> <a href="https://web.library.yale.edu/buildings">Library Hours</a></li> <li> <a href="https://web.library.yale.edu/sd">Departments & Staff</a></li> <li> <a href="http://guides.library.yale.edu/borrow">Borrowing & Circulation</a></li> <li> <a href="https://web.library.yale.edu/services-persons-disabilities">Services for Persons with Disabilities</a></li> <li> <a href="http://guides.library.yale.edu/copyright-guidance/copyright-basics">Copyright Basics</a></li> <li> <a href="https://web.library.yale.edu/help/scanning-printing-copying">Scanning, Printing & Copying</a></li> <li> <a href="https://web.library.yale.edu/help/computers-and-wireless">Computers & Wireless</a></li> <li> <a href="http://guides.library.yale.edu/about/policies">Library Policies</a></li> <li> <a href="http://guides.library.yale.edu/about">About the Library</a></li> <li> <a href="https://web.library.yale.edu/development">Giving to the Library</a></li> <li> <a href="https://web.library.yale.edu/form/purchase-request">Purchase Request</a></li> <li> <a href="http://guides.library.yale.edu/work">Working at the Library</a></li> <li> <a href="https://guides.library.yale.edu/about/policies/access">Terms Governing Use of Materials</a></li> </ul> </li> </ul> </div> <!-- <div class="covid" style="padding-left:13px;" > <span color=" #fff;"> Sterling Memorial Library and Bass Library will delay opening to patrons until noon on Monday, Aug. 22, due to university events on Cross-Campus. <a style="color: #fff;" href="https://web.library.yale.edu/buildings">See all library hours.</a> </p> --> </span> </div> </body> </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="http://web.library.yale.edu/">Yale University Library</a></li> <li class="s-lc-desktop-only"><a href="https://schedule.yale.edu">Yale Library Study Spaces Scheduling</a></li> <li><a href="/spaces?lid=9059&amp;gid=9990">Marx Library Study Spaces</a></li> <li class="active s-lc-desktop-only">Space Availability - Study Room C33 (Main Level)</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"> Study Room C33 (Main Level) <small> (Marx Library) </small> <small> Capacity: 5 </small> </h1> <div id="s-lc-item-title-area"> <div class="row"> <div class="col-md-4"> <img src="https://libapps.s3.amazonaws.com/accounts/262398/images/C33_Marx_Group_Study.jpg" class="img-thumbnail" alt="Study Room C33 (Main Level)" /> </div> <div class="col-md-8"> <div class="s-lc-section-description" role="region" aria-label="description"> <h2 class="sr-only"> Description </h2> <p> <ul> <li>Four chairs</li> <li>Large meeting table</li> <li>Whiteboards</li> </ul> </p> <p> <i class="fa fa-plug" aria-hidden="true"></i> Power Available <br> </p> </div> <div class="s-lc-section-directions" role="region" aria-label="directions"> <h2 class="s-lc-section-header"> Directions </h2> <p> This study room is on the Library's main floor, near the restrooms and stairs to the lower level. </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-2">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:george.ouellette@yale.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=9059&gid=9990"> 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://yale.libapps.com/libapps/login.php?site_id=5421&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> </div> <div id="s-lc-public-cust-footer"> <div id="footer"> <div class="container" style="background-color:#00356B;"> <div class="navbar-header" style="font-family:'YaleNew-Roman';color:#ffffff; font-size:30px;"> <a href="https://web.library.yale.edu/" class="navbar-brand" >Yale University Library</a> </div> <ul class="nav navbar-nav navbar-right narrow" style="font-family:'mallory_mpmedium'; font-size:12px; "> <li><a href="http://web.library.yale.edu/search/google" title="">Search</a></li> <li><a href="http://web.library.yale.edu/development">Giving</a></li> <li><a href="http://calendar.yale.edu/cal/library/" title="">Events</a></li> <li><a href="http://web.library.yale.edu/news" title="">News</a></li> <li><a href="https://secure-stats.pingdom.com/2i9hmxvpr6ug">System Status</a></li> <li><a href="http://www.yale.edu/privacy.html" title="Yale Privacy Policy">Privacy Policy</a></li> <li><a href="http://web.library.yale.edu/feedback?previous_app=LibGuides" title="">Feedback</a></li> <li><a href="https://web.library.yale.edu/data-use">Data Use</a></li> <li><a href="https://usability.yale.edu/web-accessibility/accessibility-yale">Accessibility</a></li> </ul> </div> <div class="container sfooter"> <span style="word-spacing: -10px;"> <a href="https://twitter.com/yalelibrary" style="margin-left:10px;"><img border="0" alt="Twitter" src="https://libapps.s3.amazonaws.com/customers/11/images/icon-twitter@2x.png" width="22px" height="22px"></a> <a href="http://www.facebook.com/yalelibrary"><img border="0" alt="Facebook" src="https://libapps.s3.amazonaws.com/customers/11/images/icon-facebook@2x.png" width="22px" height="22px"></a> <a href="http://instagram.com/yalelibrary"><img border="0" alt="Instagram" src="https://libapps.s3.amazonaws.com/customers/11/images/icon-instagram@2x.png" width="22px" height="22px"></a> <a href="https://web.library.yale.edu/#"><img border="0" alt="Yale University Library Web Site" src="https://libapps.s3.amazonaws.com/customers/11/images/icon-mail@2x.png" width="22px" height="22px"></a> </span> <span id="sfooterright" style="float:right;"> <a href="https://www.yale.edu" style="font-family: 'mallory_mplight';">> Yale University Website</a> </span> </div> </div> </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\u002D02\u002D17\u002004\u003A55', nowIndicator: true, scrollTime: '03\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: '33%', initialDate: '2025\u002D02\u002D17', }, itemId: 161351, isSeatBooking: 0, seatId: 0, zoneId: 0, filterIds: [], searchFilters: {"4320":{"id":4320,"icon":"fa-plug","name":"Power Available"}}, isDailyBookings: 0, locationId: 9059, groupId: 9990, 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\/161351', unavailableUrl: window.location.href, pageIndex: 0, pageSize: 18, resourceCount: 1, bookingMethod: 12, autoCreateBookingDate: null, isBookNow: 0, }; var resources = [ { id: "eid_161351", title: "Study\u0020Room\u0020C33\u0020\u0028Main\u0020Level\u0029 (Capacity 5)", eid: 161351, gid: 9990, lid: 9059, grouping: "Marx\u0020Library\u0020Study\u0020Spaces", gtype: 2, capacity: 5, hasInfo: false, thumbnail: "https\u003A\/\/libapps.s3.amazonaws.com\/accounts\/262398\/images\/C33_Marx_Group_Study.jpg", filterIds: [4320], }, ]; var resourceNameIdMap = { "eid_161351": "Study\u0020Room\u0020C33\u0020\u0028Main\u0020Level\u0029", }; 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: 9059, gid: 9990, start: moment(view.activeStart).format(dateFormatDayOfYear), end: moment(view.activeEnd).format(dateFormatDayOfYear), bookings: preparePendingBookingsPayload(), } return pendingRoomBookingsUpdateListAndAvailability(payload, fcInstance); } function updatePendingBookingDuration(changedBooking) { var fcInstance = getCurrentTimelineInstance(9059); var view = fcInstance.view; var selectedElement = changedBooking.find(':selected'); var payload = { update: { id: changedBooking.data('booking'), checksum: selectedElement.data('crc'), end: changedBooking.val() }, lid: 9059, gid: 9990, 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: 9059, gid: 9990, 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> </body> </html>

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