Fixed problems with date and quatity selection on start page.
authorChuck Scott <cscott@gaslightmedia.com>
Thu, 18 Jul 2019 14:28:44 +0000 (10:28 -0400)
committerChuck Scott <cscott@gaslightmedia.com>
Thu, 18 Jul 2019 14:28:44 +0000 (10:28 -0400)
views/front/PointerBoat/Shop/start.html

index 112e49f..c8e77c2 100755 (executable)
 <!--    <input type="hidden" name="SectionID" value="{sectionDetail.id}"> -->
 {end:}
     <!-- List of Locations -->
-    {foreach:membersList,m}     
+    {foreach:membersList,m}
         <div class="glmSection startSection">
             <div class="glmBlock startBlock">
                 <div class="glmBlockContentLeft memberDescription">
                     <!-- <div class="glmBlockHeader">
-                        <div class="glmBlockName">{*m.name:h*}</div>   
+                        <div class="glmBlockName">{*m.name:h*}</div>
                     </div>-->
                     <div style="clear: both;">
                         <!--<div class="glmDescr"><span class="glmBold">Address</span>: {m.addr1}{if:m.addr2}, {m.addr2}{end:}, {m.city}</div>
                     {if:!showTickets}
 <!--                             <a href="{baseSCRIPT}&Action=Shop_sectionSelect&PerformanceID={p.id}" class="glmNavItem chooser">{term.nav.select}</a> -->
                     {end:}
-                                
-                    
+
+
                         <!-- For each section for this performance -->
                                                {foreach:p.sections,s}
                                                        <p style="clear: both;">&nbsp;</p> <!-- Please look at spacing here -->
                                                        <div class="glmBlock sectionDetail">
-                                                           <div class="glmBlockContent">     
+                                                           <div class="glmBlockContent">
                                                                <div class="glmDescr">
                                                      {if:!p.oneSectionOnly}
                                                                    {s.sectionDetail.name}<br>
                                                                <!--<p>{p.descr:h}</p>-->
                                                            </div>
                                                        </div>
-                                                   
+
                                                    <!-- For each ticket in this section -->
                             {foreach:s.ticketsData,x}
-                               {if:!x.tooLateToBuy}                            
+                               {if:!x.tooLateToBuy}
                                    <div class="glmBlock">
                              {if:option.ticket_selection.include_options_in_ticket_list}
                                        <div class="glmBlockContentRight">
                                            <div class="glmBlockContent">
                                                <div class="glmTicketsSelectPrompt">Price:&nbsp;</div>
-                                               <div class="glmTicketsSelectValue"> 
+                                               <div class="glmTicketsSelectValue">
                                                    <div class="glmInput">{x.price}</div>
                                                </div>
                                            </div>
                                            <div id="GLMeventDateSelect_{x.id}" class="glmBlockContent">
                                                <div class="glmTicketsSelectPrompt">Select date:&nbsp;</div>
-                                               <div class="glmTicketsSelectValue"> 
+                                               <div class="glmTicketsSelectValue">
                                                   <div id="GLMeventDate_{x.id}" class="glmInput">
                                                      <input type="hidden" id="GLMeventInvID_{x.id}" name="ticket_inv_array[{x.id}]" value="">
                                                      <input type="text" id="GLMeventDateInput_{x.id}" class="glmEventDateInput" name="ticket_date[{x.id}]" value="">
                                                </div>
                                            </div>
                                            <div class="glmBlockContent">
-                                               <div class="glmTicketsSelectPrompt">Quant:&nbsp;</div>
-                                               <div class="glmTicketsSelectValue"> 
+                                               <div class="glmTicketsSelectPrompt">Select from available tickets:&nbsp;</div>
+                                               <div class="glmTicketsSelectValue">
                                                    <div id="GLMticketQuantContainer_{x.id}" class="glmInput">(select date)</div>
                                                </div>
                                            </div>
                                        </div> <!-- glmBLockContentRight -->
                              {end:}
-                                       <div class="glmBlockContentLeft"> 
+                                       <div class="glmBlockContentLeft">
                              {if:option.ticket_selection.include_options_in_ticket_list}
                                            <div class="glmBlockName">{x.title}</div>
                              {else:}
                                             </div>
 
                                       </div>
-</div>                                     
+</div>
                                {end:}
                                    </div><!--/.glmBlock-->
                             {end:}
                            {end:}
                                                    </div>
-                                                   
+
                                                {end:} <!--/performances-->
-                    
-                    
-                    
-                        </div>    
+
+
+
+                        </div>
                     {end:}
                 </div>
             </div>
 {startScript:h}
 
     var addButtonPushed = false;
-       
+
        // Dates for inventory data
        var tickets = {ticketsJSON:h};
-       
+
        var ticketQuantSelection = '\
                    <select id="glmQuantSelector_[id]" name="quant[[id]]" class="glmTicketQuant">[ticket-quants]</select>\
        ';
-       
+
        var ticketTooLate = '\
            <p>\
                Sorry, too late to select these {term.ticket.plur} on-line.\
            </p>\
-       '; 
-       
+       ';
+
+
 
-       
        $(document).ready(function(){
-       
-           // Code to kick off the geolocation-display feature 
+
+           // Code to kick off the geolocation-display feature
         function doLocationMap(id) {
                $("#locationMap_" + id).geolocate({
                    lat: "#lat_" + id,
            {foreach:membersList,m}
               doLocationMap({m.id});
            {end:}
-           
-        // DatePicker action
-        function avail(date) {
-            m = (date.getMonth()+1);
-                if (m < 10) {
-                    m = '0' + m;
-                }
-            d = date.getDate();
-                if (d < 10) {
-                    d = '0' + d;
-                }
-            y = date.getFullYear();
-            mdy = m + '/' + d + '/' + y;
-            if (dates[mdy]) {
-                return [true,"","Available"];
-              } else {
-                return [false,"","Not Available"];
-            }
-        }
-        
+
         // for each ticket
         $.each(tickets, function(index, ticket) {
 
 
                // Count the number of dates
                dateCount++;
-               
+
                // If this is the first one, store it in case it's the only one
                dateData = date;
-           
+
             }); // each date
 
             // if there's no date specific tickets
             if (!ticket.dateSpecific) {
 
-                // Populate date input field        
+                // Populate date input field
                 $('#GLMeventDateSelect_' + ticket.id).html('<input type="hidden" name="ticket_inv_array[' + ticket.id + ']" value="' + dateData.id + '">');
                 doQuantSelection(ticket.id, dateData.id, dateData.available, dateData.tooLate);
 
             // if there's only one date, then display that and move on.
             } else if (!ticket.dateSpecific || dateCount == 1) {
-        
+
                 // populate date input field
                 $('#GLMeventDate_' + ticket.id).html('<div class="glmTicketsSelect"><div class="glmTicketsSelectPrompt">Date: </div><div class="glmTicketsSelectValue">' + dateData['date'] + '<input type="hidden" name="ticket_inv_array[' + dateData['date'] + ']" value="' + dateData.id + '"></div></div><div id="GLMticketsSelectionContainer"></div>');
                 doQuantSelection(ticket.id, dateData.id, dateData.available, dateData.tooLate);
-                
+
             } else {
-            
+
+                function appendToMonth() {
+                    if($('#mouseOverMsg').length == 0) {
+                        $('.ui-datepicker-header').append('<div id="mouseOverMsg" style="font-size: .6em; text-align: center; padding: 0; margin: 0;">Hover mouse over date to see availability.</div>');
+                    }
+                    $('#mouseOverMsg').fadeOut('slow').fadeIn('slow').fadeOut('slow').fadeIn('slow').fadeOut('slow').fadeIn('slow');
+                }
+
+                $('#GLMeventDateInput_' + ticket.id).on('click', function(){
+                    setTimeout(appendToMonth, 100);
+                })
+
                 // DatePicker action
                 function avail(date) {
                     m = (date.getMonth()+1);
                     y = date.getFullYear();
                     mdy = m + '/' + d + '/' + y;
                     if (inventory[mdy]) {
-                        return [true,"","Available"];
+                        if (inventory[mdy]["available"] != "0") {
+                            return [true,"",inventory[mdy]["available"] + " Available"];
+                        } else {
+                            return [false,"","Not Available"];
+                        }
                       } else {
                         return [false,"","Not Available"];
                     }
+                    setTimeout(sayit(), 2000);
                 }
-                        
+
                 // Use the date picker to select a date
                 $('#GLMeventDateInput_' + ticket.id).datepicker({
                     beforeShowDay: avail,
                     dateFormat: "mm/dd/yy",
-// *** NEED TO FIX REFERENCE TO "performanceDetail" since that's not available on this page                    
                     minDate: "{performanceDetail.start_date.date}",
                     maxDate: "{performanceDetail.end_date.date}",
                     onSelect: function(selectedDate, inst) {
                         $('#GLMeventInvID_' + ticket.id).val(dateData.id);
                         doQuantSelection(ticket.id, dateData.id, dateData.available, dateData.tooLate);
                     } // Date Selection
-                    
                 }); // Date Picker
-            
-            
+
             }
-        
+
         }); // each ticket
-                
+
         function doQuantSelection(id, invId, available, tooLate) {
 
             // Build the ticket quant options
             if (tooLate) {
                 $('#GLMticketQuantContainer_' + id).html(ticketTooLate);
             } else {
-            
+
                 // note that the braced lte below is needed to inject a less-than-or-equal-to operator without having flexy chew on it.
                 for (var i = 1; i {lte:h} (selectMax*1); i++) {
-                    ticketQuants = ticketQuants.concat('<option value="' + i + '">' + i + '</option>');    
+                    ticketQuants = ticketQuants.concat('<option value="' + i + '">' + i + '</option>');
                 }
 
                 // Populate the ticket quantity container
                 setBlocker();
                 $('#GLMselectForm').submit();
             } else {
-                alert('Please select a {term.ticket.norm} quantity.')   
+                alert('Please select a {term.ticket.norm} quantity.')
                 return false;
             }
-            
+
         });
-        
+
         function setBlocker() {
             $('#glmReloadBlocker').show();
         }
-        
+
        });
 
 </script>