diff --git a/index.html b/index.html index a0e010f..7b04716 100644 --- a/index.html +++ b/index.html @@ -41,6 +41,14 @@ +
No subscriptions recorded yet. Add your first subscription above!
'; + return; + } + + const subscriptionsHTML = subscriptions.map(subscription => this.createSubscriptionHTML(subscription)).join(''); + container.innerHTML = subscriptionsHTML; + } + + createSubscriptionHTML(subscription) { + const monthlyPrice = subscription.billingCycle === 'monthly' + ? subscription.monthlyPrice + : (subscription.annualPrice / 12); + + const currency = this.getCurrencySymbol(subscription.currency); + const nextBilling = this.calculateNextBilling(subscription.startDate, subscription.billingCycle); + const startDate = new Date(subscription.startDate).toLocaleDateString(); + + return ` +No subscriptions yet
'; + return; + } + + // Show top 5 subscriptions by monthly cost + const sortedSubscriptions = subscriptions + .map(sub => ({ + ...sub, + monthlyEquivalent: sub.billingCycle === 'monthly' + ? sub.monthlyPrice + : (sub.annualPrice / 12) + })) + .sort((a, b) => b.monthlyEquivalent - a.monthlyEquivalent) + .slice(0, 5); + + let nextBillingDate = null; + let nextBillingService = ''; + + const subscriptionItems = sortedSubscriptions.map(subscription => { + const currency = this.getCurrencySymbol(subscription.currency); + const nextBilling = this.calculateNextBilling(subscription.startDate, subscription.billingCycle); + + // Track the nearest billing date + const billingDateObj = new Date(nextBilling.split('/').reverse().join('-')); + if (!nextBillingDate || billingDateObj < nextBillingDate) { + nextBillingDate = billingDateObj; + nextBillingService = subscription.serviceName; + } + + return ` +