Major fixes and improvements: - Fixed edit event button functionality with proper event handlers and DOM ready state checking - Added status column to tickets table via Supabase migration to resolve 500 API errors - Updated stats API to correctly calculate revenue from decimal price values - Resolved authentication redirect loops by fixing cookie configuration for Docker environment - Fixed Permissions-Policy header syntax errors - Added comprehensive debugging and error handling for event management - Implemented modal-based event editing with form validation and API integration - Enhanced event data loading with proper error handling and user feedback 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
98 lines
19 KiB
JSON
98 lines
19 KiB
JSON
{
|
|
"route": "/events/7ac12bd2-8509-4db3-b1bc-98a808646311/manage",
|
|
"status": "fail",
|
|
"timestamp": "2025-07-15T00:10:05.663Z",
|
|
"page_info": {
|
|
"title": "Login - Black Canyon Tickets",
|
|
"url": "http://192.168.0.46:3000/login-new",
|
|
"loaded": true
|
|
},
|
|
"screenshot": "/home/tyler/apps/bct-whitelabel/screenshots/event-manage-debug.png",
|
|
"failed_requests": [],
|
|
"missing_components": [
|
|
".stats-block",
|
|
".attendee-list",
|
|
".qr-code-preview",
|
|
"[data-testid=\"event-stats\"]",
|
|
"[data-testid=\"ticket-types\"]",
|
|
"[data-testid=\"orders-section\"]",
|
|
".tab-content",
|
|
".event-management",
|
|
".card",
|
|
".glassmorphism"
|
|
],
|
|
"found_components": [],
|
|
"console_errors": [
|
|
{
|
|
"type": "error",
|
|
"message": "Error with Permissions-Policy header: Parse of permissions policy failed because of errors reported by structured header parser.",
|
|
"timestamp": "2025-07-15T00:09:59.513Z"
|
|
}
|
|
],
|
|
"visible_errors": [
|
|
{
|
|
"tag": "HTML",
|
|
"text": "Login - Black Canyon Ticketsdocument.addEventListener(\"DOMContentLoaded\",()=>{const t=\"dark\";document.body.classList.remove(\"light\",\"dark\"),document.body.classList.add(t),window.addEventListener(\"themeChanged\",e=>{e.preventDefault(),e.stopPropagation(),document.documentElement.setAttribute(\"data-theme\",\"dark\"),document.documentElement.classList.remove(\"light\"),document.documentElement.classList.add(\"dark\"),document.body.classList.remove(\"light\"),document.body.classList.add(\"dark\")},!0)});\n Skip to main content Welcome Back Sign in to your account \nEmail Address\n \nPassword\n \nSign In\n \nDon't have an account?\n\nContact us to get started\n Cookie Preferences \nWe use essential cookies to make our website work and analytics cookies to understand how you interact with our site.\n\nLearn more in our Privacy Policy\n \nManage Preferences\n \nAccept All\n Cookie Preferences \nWe use cookies to enhance your experience on our website. You can choose which types of cookies to allow below.\n Essential Cookies \nAlways Active\n \nThese cookies are necessary for the website to function and cannot be disabled. They include authentication, security, and basic functionality.\n View details • Authentication tokens (Supabase) • CSRF protection tokens • Session management • Security preferences Analytics Cookies \nHelp us understand how visitors interact with our website by collecting and reporting information anonymously.\n View details • Page views and user interactions • Performance metrics • Error tracking (anonymized) • Usage patterns (no personal data) Marketing Cookies \nThese cookies track your activity to deliver more relevant advertisements and marketing communications.\n View details • Advertising preferences • Email campaign effectiveness • Social media integration • Retargeting pixels \nReject All\n \nSave Preferences\n \nAccept All\n class n{consentKey=\"bct_cookie_consent\";banner;modal;constructor(){this.banner=document.getElementById(\"cookie-consent-banner\"),this.modal=document.getElementById(\"cookie-preferences-modal\"),this.init()}init(){const e=this.getConsent();e?this.applyConsent(e):this.showBanner(),this.bindEvents()}bindEvents(){document.getElementById(\"cookie-accept-btn\")?.addEventListener(\"click\",()=>{this.acceptAll()}),document.getElementById(\"cookie-settings-btn\")?.addEventListener(\"click\",()=>{this.showModal()}),document.getElementById(\"cookie-modal-close\")?.addEventListener(\"click\",()=>{this.hideModal()}),document.getElementById(\"cookie-accept-all\")?.addEventListener(\"click\",()=>{this.acceptAll()}),document.getElementById(\"cookie-reject-all\")?.addEventListener(\"click\",()=>{this.rejectAll()}),document.getElementById(\"cookie-save-preferences\")?.addEventListener(\"click\",()=>{this.savePreferences()}),this.modal.addEventListener(\"click\",e=>{e.target===this.modal&&this.hideModal()})}showBanner(){this.banner.style.display=\"block\",setTimeout(()=>{this.banner.classList.remove(\"translate-y-full\")},100)}hideBanner(){this.banner.classList.add(\"translate-y-full\"),setTimeout(()=>{this.banner.style.display=\"none\"},300)}showModal(){const e=this.getConsent();e&&(document.getElementById(\"analytics-toggle\").checked=e.analytics,document.getElementById(\"marketing-toggle\").checked=e.marketing),this.modal.style.display=\"flex\",document.body.style.overflow=\"hidden\"}hideModal(){this.modal.style.display=\"none\",document.body.style.overflow=\"\"}acceptAll(){const e={essential:!0,analytics:!0,marketing:!0,timestamp:Date.now()};this.saveConsent(e),this.applyConsent(e),this.hideBanner(),this.hideModal()}rejectAll(){const e={essential:!0,analytics:!1,marketing:!1,timestamp:Date.now()};this.saveConsent(e),this.applyConsent(e),this.hideBanner(),this.hideModal()}savePreferences(){const e=document.getElementById(\"analytics-toggle\"),t=document.getElementById(\"marketing-toggle\"),s={essential:!0,analytics:e.checked,marketing:t.checked,timestamp:Date.now()};this.saveConsent(s),this.applyConsent(s),this.hideBanner(),this.hideModal()}saveConsent(e){localStorage.setItem(this.consentKey,JSON.stringify(e)),document.cookie=`${this.consentKey}=${JSON.stringify(e)}; max-age=31536000; path=/; SameSite=Strict; Secure`}getConsent(){try{const e=localStorage.getItem(this.consentKey);if(e){const t=JSON.parse(e);return Date.now()-t.timestamp>365*24*60*60*1e3?null:t}}catch(e){console.error(\"Error reading cookie consent:\",e)}return null}applyConsent(e){e.analytics?this.enableAnalytics():this.disableAnalytics(),e.marketing?this.enableMarketing():this.disableMarketing(),window.dispatchEvent(new CustomEvent(\"cookieConsentUpdated\",{detail:e}))}enableAnalytics(){console.log(\"Analytics enabled\")}disableAnalytics(){console.log(\"Analytics disabled\")}enableMarketing(){console.log(\"Marketing enabled\")}disableMarketing(){console.log(\"Marketing disabled\")}showPreferences(){this.showModal()}}document.readyState===\"loading\"?document.addEventListener(\"DOMContentLoaded\",()=>{new n}):new n;window.cookieConsent=n; (function(){const e=\"dark\";document.documentElement.setAttribute(\"data-theme\",e),document.documentElement.classList.add(e),document.documentElement.classList.remove(\"light\"),document.body.classList.add(e),document.body.classList.remove(\"light\"),window.__INITIAL_THEME__=e,window.__FORCE_DARK_MODE__=!0;const n=localStorage.setItem;localStorage.setItem=function(o,t){if(o===\"theme\"&&t!==\"dark\"){console.log(\"[THEME] Blocking theme change to:\",t);return}return n.call(this,o,t)},console.log(\"[THEME] Forced dark mode initialized\")})(); document.getElementById(\"login-form\").addEventListener(\"submit\",async s=>{s.preventDefault();const a=document.getElementById(\"email\").value,r=document.getElementById(\"password\").value,t=document.getElementById(\"error-message\"),e=document.getElementById(\"login-btn\");t.classList.add(\"hidden\"),e.disabled=!0,e.textContent=\"Signing in...\";try{const n=await fetch(\"/api/auth/login\",{method:\"POST\",headers:{\"Content-Type\":\"application/json\"},body:JSON.stringify({email:a,password:r})}),o=await n.json();n.ok&&o.success?window.location.href=o.redirectTo||\"/dashboard\":(t.textContent=o.error||\"Login failed. Please try again.\",t.classList.remove(\"hidden\"),e.disabled=!1,e.textContent=\"Sign In\")}catch(n){console.error(\"Login error:\",n),t.textContent=\"An error occurred. Please try again.\",t.classList.remove(\"hidden\"),e.disabled=!1,e.textContent=\"Sign In\"}});",
|
|
"className": "dark"
|
|
},
|
|
{
|
|
"tag": "BODY",
|
|
"text": "Skip to main content Welcome Back Sign in to your account \nEmail Address\n \nPassword\n \nSign In\n \nDon't have an account?\n\nContact us to get started\n Cookie Preferences \nWe use essential cookies to make our website work and analytics cookies to understand how you interact with our site.\n\nLearn more in our Privacy Policy\n \nManage Preferences\n \nAccept All\n Cookie Preferences \nWe use cookies to enhance your experience on our website. You can choose which types of cookies to allow below.\n Essential Cookies \nAlways Active\n \nThese cookies are necessary for the website to function and cannot be disabled. They include authentication, security, and basic functionality.\n View details • Authentication tokens (Supabase) • CSRF protection tokens • Session management • Security preferences Analytics Cookies \nHelp us understand how visitors interact with our website by collecting and reporting information anonymously.\n View details • Page views and user interactions • Performance metrics • Error tracking (anonymized) • Usage patterns (no personal data) Marketing Cookies \nThese cookies track your activity to deliver more relevant advertisements and marketing communications.\n View details • Advertising preferences • Email campaign effectiveness • Social media integration • Retargeting pixels \nReject All\n \nSave Preferences\n \nAccept All\n class n{consentKey=\"bct_cookie_consent\";banner;modal;constructor(){this.banner=document.getElementById(\"cookie-consent-banner\"),this.modal=document.getElementById(\"cookie-preferences-modal\"),this.init()}init(){const e=this.getConsent();e?this.applyConsent(e):this.showBanner(),this.bindEvents()}bindEvents(){document.getElementById(\"cookie-accept-btn\")?.addEventListener(\"click\",()=>{this.acceptAll()}),document.getElementById(\"cookie-settings-btn\")?.addEventListener(\"click\",()=>{this.showModal()}),document.getElementById(\"cookie-modal-close\")?.addEventListener(\"click\",()=>{this.hideModal()}),document.getElementById(\"cookie-accept-all\")?.addEventListener(\"click\",()=>{this.acceptAll()}),document.getElementById(\"cookie-reject-all\")?.addEventListener(\"click\",()=>{this.rejectAll()}),document.getElementById(\"cookie-save-preferences\")?.addEventListener(\"click\",()=>{this.savePreferences()}),this.modal.addEventListener(\"click\",e=>{e.target===this.modal&&this.hideModal()})}showBanner(){this.banner.style.display=\"block\",setTimeout(()=>{this.banner.classList.remove(\"translate-y-full\")},100)}hideBanner(){this.banner.classList.add(\"translate-y-full\"),setTimeout(()=>{this.banner.style.display=\"none\"},300)}showModal(){const e=this.getConsent();e&&(document.getElementById(\"analytics-toggle\").checked=e.analytics,document.getElementById(\"marketing-toggle\").checked=e.marketing),this.modal.style.display=\"flex\",document.body.style.overflow=\"hidden\"}hideModal(){this.modal.style.display=\"none\",document.body.style.overflow=\"\"}acceptAll(){const e={essential:!0,analytics:!0,marketing:!0,timestamp:Date.now()};this.saveConsent(e),this.applyConsent(e),this.hideBanner(),this.hideModal()}rejectAll(){const e={essential:!0,analytics:!1,marketing:!1,timestamp:Date.now()};this.saveConsent(e),this.applyConsent(e),this.hideBanner(),this.hideModal()}savePreferences(){const e=document.getElementById(\"analytics-toggle\"),t=document.getElementById(\"marketing-toggle\"),s={essential:!0,analytics:e.checked,marketing:t.checked,timestamp:Date.now()};this.saveConsent(s),this.applyConsent(s),this.hideBanner(),this.hideModal()}saveConsent(e){localStorage.setItem(this.consentKey,JSON.stringify(e)),document.cookie=`${this.consentKey}=${JSON.stringify(e)}; max-age=31536000; path=/; SameSite=Strict; Secure`}getConsent(){try{const e=localStorage.getItem(this.consentKey);if(e){const t=JSON.parse(e);return Date.now()-t.timestamp>365*24*60*60*1e3?null:t}}catch(e){console.error(\"Error reading cookie consent:\",e)}return null}applyConsent(e){e.analytics?this.enableAnalytics():this.disableAnalytics(),e.marketing?this.enableMarketing():this.disableMarketing(),window.dispatchEvent(new CustomEvent(\"cookieConsentUpdated\",{detail:e}))}enableAnalytics(){console.log(\"Analytics enabled\")}disableAnalytics(){console.log(\"Analytics disabled\")}enableMarketing(){console.log(\"Marketing enabled\")}disableMarketing(){console.log(\"Marketing disabled\")}showPreferences(){this.showModal()}}document.readyState===\"loading\"?document.addEventListener(\"DOMContentLoaded\",()=>{new n}):new n;window.cookieConsent=n; (function(){const e=\"dark\";document.documentElement.setAttribute(\"data-theme\",e),document.documentElement.classList.add(e),document.documentElement.classList.remove(\"light\"),document.body.classList.add(e),document.body.classList.remove(\"light\"),window.__INITIAL_THEME__=e,window.__FORCE_DARK_MODE__=!0;const n=localStorage.setItem;localStorage.setItem=function(o,t){if(o===\"theme\"&&t!==\"dark\"){console.log(\"[THEME] Blocking theme change to:\",t);return}return n.call(this,o,t)},console.log(\"[THEME] Forced dark mode initialized\")})(); document.getElementById(\"login-form\").addEventListener(\"submit\",async s=>{s.preventDefault();const a=document.getElementById(\"email\").value,r=document.getElementById(\"password\").value,t=document.getElementById(\"error-message\"),e=document.getElementById(\"login-btn\");t.classList.add(\"hidden\"),e.disabled=!0,e.textContent=\"Signing in...\";try{const n=await fetch(\"/api/auth/login\",{method:\"POST\",headers:{\"Content-Type\":\"application/json\"},body:JSON.stringify({email:a,password:r})}),o=await n.json();n.ok&&o.success?window.location.href=o.redirectTo||\"/dashboard\":(t.textContent=o.error||\"Login failed. Please try again.\",t.classList.remove(\"hidden\"),e.disabled=!1,e.textContent=\"Sign In\")}catch(n){console.error(\"Login error:\",n),t.textContent=\"An error occurred. Please try again.\",t.classList.remove(\"hidden\"),e.disabled=!1,e.textContent=\"Sign In\"}});",
|
|
"className": "min-h-screen dark"
|
|
},
|
|
{
|
|
"tag": "DIV",
|
|
"text": "Cookie Preferences \nWe use cookies to enhance your experience on our website. You can choose which types of cookies to allow below.\n Essential Cookies \nAlways Active\n \nThese cookies are necessary for the website to function and cannot be disabled. They include authentication, security, and basic functionality.\n View details • Authentication tokens (Supabase) • CSRF protection tokens • Session management • Security preferences Analytics Cookies \nHelp us understand how visitors interact with our website by collecting and reporting information anonymously.\n View details • Page views and user interactions • Performance metrics • Error tracking (anonymized) • Usage patterns (no personal data) Marketing Cookies \nThese cookies track your activity to deliver more relevant advertisements and marketing communications.\n View details • Advertising preferences • Email campaign effectiveness • Social media integration • Retargeting pixels \nReject All\n \nSave Preferences\n \nAccept All",
|
|
"className": "fixed inset-0 z-50 bg-black bg-opacity-50 flex items-center justify-center p-4"
|
|
},
|
|
{
|
|
"tag": "DIV",
|
|
"text": "Cookie Preferences \nWe use cookies to enhance your experience on our website. You can choose which types of cookies to allow below.\n Essential Cookies \nAlways Active\n \nThese cookies are necessary for the website to function and cannot be disabled. They include authentication, security, and basic functionality.\n View details • Authentication tokens (Supabase) • CSRF protection tokens • Session management • Security preferences Analytics Cookies \nHelp us understand how visitors interact with our website by collecting and reporting information anonymously.\n View details • Page views and user interactions • Performance metrics • Error tracking (anonymized) • Usage patterns (no personal data) Marketing Cookies \nThese cookies track your activity to deliver more relevant advertisements and marketing communications.\n View details • Advertising preferences • Email campaign effectiveness • Social media integration • Retargeting pixels \nReject All\n \nSave Preferences\n \nAccept All",
|
|
"className": "bg-white rounded-2xl shadow-2xl max-w-2xl w-full max-h-[90vh] overflow-y-auto"
|
|
},
|
|
{
|
|
"tag": "DIV",
|
|
"text": "We use cookies to enhance your experience on our website. You can choose which types of cookies to allow below.\n Essential Cookies \nAlways Active\n \nThese cookies are necessary for the website to function and cannot be disabled. They include authentication, security, and basic functionality.\n View details • Authentication tokens (Supabase) • CSRF protection tokens • Session management • Security preferences Analytics Cookies \nHelp us understand how visitors interact with our website by collecting and reporting information anonymously.\n View details • Page views and user interactions • Performance metrics • Error tracking (anonymized) • Usage patterns (no personal data) Marketing Cookies \nThese cookies track your activity to deliver more relevant advertisements and marketing communications.\n View details • Advertising preferences • Email campaign effectiveness • Social media integration • Retargeting pixels",
|
|
"className": "p-6 space-y-6"
|
|
},
|
|
{
|
|
"tag": "DIV",
|
|
"text": "Analytics Cookies \nHelp us understand how visitors interact with our website by collecting and reporting information anonymously.\n View details • Page views and user interactions • Performance metrics • Error tracking (anonymized) • Usage patterns (no personal data)",
|
|
"className": "border border-gray-200 rounded-lg p-4"
|
|
},
|
|
{
|
|
"tag": "DETAILS",
|
|
"text": "View details • Page views and user interactions • Performance metrics • Error tracking (anonymized) • Usage patterns (no personal data)",
|
|
"className": "text-xs text-gray-500"
|
|
},
|
|
{
|
|
"tag": "DIV",
|
|
"text": "• Page views and user interactions • Performance metrics • Error tracking (anonymized) • Usage patterns (no personal data)",
|
|
"className": "mt-2 pl-4 border-l-2 border-gray-200"
|
|
},
|
|
{
|
|
"tag": "UL",
|
|
"text": "• Page views and user interactions • Performance metrics • Error tracking (anonymized) • Usage patterns (no personal data)",
|
|
"className": "space-y-1"
|
|
},
|
|
{
|
|
"tag": "LI",
|
|
"text": "• Error tracking (anonymized)",
|
|
"className": ""
|
|
}
|
|
],
|
|
"auth_state": {
|
|
"hasSupabaseClient": false,
|
|
"hasAuthUser": null,
|
|
"hasOrganizationId": null,
|
|
"cookies": "",
|
|
"localStorage": 1,
|
|
"sessionStorage": 0
|
|
},
|
|
"network_summary": {
|
|
"total_requests": 4,
|
|
"api_requests": 0,
|
|
"failed_requests": 0
|
|
},
|
|
"notes": "10 UI components missing: .stats-block, .attendee-list, .qr-code-preview, [data-testid=\"event-stats\"], [data-testid=\"ticket-types\"], [data-testid=\"orders-section\"], .tab-content, .event-management, .card, .glassmorphism. 1 console errors detected. Supabase client not initialized. No authenticated user detected"
|
|
} |