CBUSEVENTS
Your Columbus event dashboard
New to CBUSEVENTS?
← Back to CBUSEVENTS
My Dashboard
Welcome back
Welcome back
You have 2 upcoming events this month.
4
Saved Events
6
Tickets Purchased
2
Upcoming
Happening in Columbus
Loading events...
Loading Columbus events...
My Tickets
Loading your tickets...
/div>
New on CBUSEVENTS
Plan Your Own Event
Connect with Columbus event organizers who can make your idea a reality. Private parties, corporate events, weddings, brand activations and more.
All
Weddings
Corporate
Private
Loading organizers...
Recommended For You
Upcoming Columbus events
Loading events...
Happening Soon
Loading events...
Late Night Eats
Columbus spots open after the show
Featured
Loading...
Get There
Rideshare estimate from your location
Estimates based on distance. Actual fares vary by time, demand and traffic.
After the Event
Bars, rooftops and venues worth the stop
Featured
Loading...
// ── FEATURED SPOTS ────────────────────────────────────────── async function loadFeaturedSpots(){ try{ const res=await fetch(SB_URL+'/rest/v1/featured_spots?active=eq.true&order=featured_order.asc&select=*',{ headers:{apikey:SB_KEY,Authorization:'Bearer '+SB_KEY} }); const spots=await res.json(); if(!Array.isArray(spots))return; const lateNight=spots.filter(s=>s.section==='late_night'); const afterEvent=spots.filter(s=>s.section==='after_event'); renderSpots('lateNightContainer',lateNight,'🍟'); renderSpots('afterEventContainer',afterEvent,'🍻'); }catch(e){console.log('Featured spots error:',e);} } function renderSpots(containerId,spots,fallbackIcon){ const el=document.getElementById(containerId); if(!el)return; if(!spots||spots.length===0){ el.innerHTML='
More spots coming soon.
'; return; } el.innerHTML=spots.map(s=>`
${s.name}
${s.neighborhood||''} ${s.neighborhood&&s.category?' · ':''} ${s.category||''}
${s.badge?`${s.badge}`:''}
${s.description?`
${s.description}
`:''}
${s.hours?`
${s.hours}
`:'
'} ${s.cta_url&&s.cta_url!=='#'?`${s.cta_label||'View'} →`:''}
`).join(''); } // ── RIDESHARE CALCULATOR ───────────────────────────────────── let userLat=null,userLng=null; function getUserLocation(){ return new Promise(resolve=>{ if(navigator.geolocation){ navigator.geolocation.getCurrentPosition( p=>{userLat=p.coords.latitude;userLng=p.coords.longitude;resolve(true);}, ()=>resolve(false), {timeout:5000} ); } else resolve(false); }); } async function estimateRide(){ const dest=document.getElementById('rideDestination').value.trim(); const resultEl=document.getElementById('rideResult'); const linksEl=document.getElementById('rideLinks'); if(!dest)return; resultEl.style.display='block'; resultEl.innerHTML='
Detecting your location...
'; linksEl.style.display='none'; const hasLocation=await getUserLocation(); if(!hasLocation){ resultEl.innerHTML='
Could not detect your location. Enable location access and try again.
'; return; } // Use Google Maps geocoding to get dest coords via a free approach // Show deep links to Uber and Lyft with destination pre-filled const destEncoded=encodeURIComponent(dest); const uberUrl=`https://m.uber.com/ul/?action=setPickup&pickup=my_location&dropoff[formatted_address]=${destEncoded}`; const lyftUrl=`https://lyft.com/ride?id=lyft&pickup[latitude]=${userLat}&pickup[longitude]=${userLng}&destination[address]=${destEncoded}`; // Rough distance estimate using Haversine - Columbus center as fallback dest const R=3959; const dLat=(40.7128-userLat)*Math.PI/180; const dLon=(-74.006-userLng)*Math.PI/180; const a=Math.sin(dLat/2)*Math.sin(dLat/2)+Math.cos(userLat*Math.PI/180)*Math.cos(40.7128*Math.PI/180)*Math.sin(dLon/2)*Math.sin(dLon/2); const distMiles=R*2*Math.atan2(Math.sqrt(a),Math.sqrt(1-a)); const estMins=Math.round(distMiles*2.5+3); const estLow=(distMiles*1.8+2).toFixed(0); const estHigh=(distMiles*2.4+4).toFixed(0); resultEl.innerHTML=`
~${estMins} min
Est. ride time
$${estLow}-${estHigh}
Est. fare
`; document.getElementById('uberLink').href=uberUrl; document.getElementById('uberLink').style.display='block'; document.getElementById('lyftLink').href=lyftUrl; document.getElementById('lyftLink').style.display='block'; linksEl.style.display='flex'; } document.getElementById('rideDestination')?.addEventListener('keydown',e=>{if(e.key==='Enter')estimateRide();}); // Load spots after auth check document.addEventListener('DOMContentLoaded',function(){ setTimeout(loadFeaturedSpots,1000); });