// app/modules/loyalty/static/vendor/js/loyalty-card-detail.js // noqa: js-006 - async init pattern is safe, loadData has try/catch const loyaltyCardDetailLog = window.LogConfig.loggers.loyaltyCardDetail || window.LogConfig.createLogger('loyaltyCardDetail'); function vendorLoyaltyCardDetail() { return { ...data(), currentPage: 'loyalty-card-detail', cardId: null, card: null, transactions: [], loading: false, error: null, async init() { loyaltyCardDetailLog.info('=== LOYALTY CARD DETAIL PAGE INITIALIZING ==='); if (window._loyaltyCardDetailInitialized) return; window._loyaltyCardDetailInitialized = true; // Extract card ID from URL const pathParts = window.location.pathname.split('/'); const cardsIndex = pathParts.indexOf('cards'); if (cardsIndex !== -1 && pathParts[cardsIndex + 1]) { this.cardId = parseInt(pathParts[cardsIndex + 1]); } if (!this.cardId) { this.error = 'Invalid card ID'; return; } await this.loadData(); loyaltyCardDetailLog.info('=== LOYALTY CARD DETAIL PAGE INITIALIZATION COMPLETE ==='); }, async loadData() { this.loading = true; this.error = null; try { await Promise.all([ this.loadCard(), this.loadTransactions() ]); } catch (error) { loyaltyCardDetailLog.error('Failed to load data:', error); this.error = error.message; } finally { this.loading = false; } }, async loadCard() { const response = await apiClient.get(`/vendor/loyalty/cards/${this.cardId}`); if (response) { this.card = response; loyaltyCardDetailLog.info('Card loaded:', this.card.card_number); } }, async loadTransactions() { try { const response = await apiClient.get(`/vendor/loyalty/cards/${this.cardId}/transactions?limit=50`); if (response && response.transactions) { this.transactions = response.transactions; loyaltyCardDetailLog.info(`Loaded ${this.transactions.length} transactions`); } } catch (error) { loyaltyCardDetailLog.warn('Failed to load transactions:', error.message); } }, formatNumber(num) { return num == null ? '0' : new Intl.NumberFormat('en-US').format(num); }, formatDate(dateString) { if (!dateString) return '-'; try { return new Date(dateString).toLocaleDateString('en-US', { year: 'numeric', month: 'short', day: 'numeric' }); } catch (e) { return dateString; } }, formatDateTime(dateString) { if (!dateString) return '-'; try { return new Date(dateString).toLocaleString('en-US', { year: 'numeric', month: 'short', day: 'numeric', hour: '2-digit', minute: '2-digit' }); } catch (e) { return dateString; } } }; } if (!window.LogConfig.loggers.loyaltyCardDetail) { window.LogConfig.loggers.loyaltyCardDetail = window.LogConfig.createLogger('loyaltyCardDetail'); } loyaltyCardDetailLog.info('Loyalty card detail module loaded');