| <!DOCTYPE html> |
| <html lang="en"> |
| <head> |
| <meta charset="UTF-8"> |
| <meta name="viewport" content="width=device-width, initial-scale=1.0"> |
| <title>Outreach Marketing Dashboard</title> |
| <script src="https://cdn.tailwindcss.com"></script> |
| <script src="https://cdn.jsdelivr.net/npm/chart.js"></script> |
| <link href="https://unpkg.com/aos@2.3.1/dist/aos.css" rel="stylesheet"> |
| <script src="https://unpkg.com/aos@2.3.1/dist/aos.js"></script> |
| <script src="https://cdn.jsdelivr.net/npm/feather-icons/dist/feather.min.js"></script> |
| <script src="https://unpkg.com/feather-icons"></script> |
| <style> |
| body { |
| background: linear-gradient(135deg, rgba(40, 40, 50, 0.7), rgba(30, 30, 40, 0.7)); |
| color: #e0e0e0; |
| min-height: 100vh; |
| } |
| .card { |
| background: rgba(30, 30, 40, 0.6); |
| border: 1px solid rgba(192, 192, 192, 0.15); |
| box-shadow: 0 4px 6px rgba(0, 0, 0, 0.15); |
| backdrop-filter: blur(10px); |
| } |
| .title-gradient { |
| background: linear-gradient(90deg, #c0c0c0, #e0e0e0); |
| -webkit-background-clip: text; |
| background-clip: text; |
| color: transparent; |
| } |
| .nav-link { |
| transition: all 0.3s ease; |
| } |
| .nav-link:hover { |
| background: rgba(192, 192, 192, 0.1); |
| } |
| .metric-card { |
| transition: transform 0.3s ease; |
| } |
| .metric-card:hover { |
| transform: translateY(-5px); |
| } |
| .tab-active { |
| border-bottom: 2px solid #e0e0e0; |
| } |
| </style> |
| </head> |
| <body class="font-sans"> |
| <div class="container mx-auto px-4 py-8"> |
| |
| <header class="mb-10"> |
| <h1 class="text-4xl font-bold mb-2 title-gradient">Outreach Marketing Dashboard</h1> |
| <p class="text-gray-300">Track and analyze your outreach campaign performance</p> |
| </header> |
|
|
| |
| <nav class="flex space-x-4 mb-8 border-b border-gray-700 pb-4"> |
| <a href="#" id="overview-tab" class="nav-link px-4 py-2 rounded-t-lg tab-active">Overview</a> |
| <a href="#" id="campaigns-tab" class="nav-link px-4 py-2 rounded-t-lg">Campaign Metrics</a> |
| <a href="#" id="abtesting-tab" class="nav-link px-4 py-2 rounded-t-lg">A/B Testing</a> |
| </nav> |
|
|
| |
| <div id="overview-dashboard" class="dashboard-section"> |
| <div class="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-4 gap-6 mb-8"> |
| |
| <div class="card metric-card rounded-lg p-6"> |
| <div class="flex items-center justify-between mb-4"> |
| <h3 class="text-lg font-semibold">Total Messages Sent</h3> |
| <i data-feather="send" class="text-gray-400"></i> |
| </div> |
| <p class="text-3xl font-bold">1,200</p> |
| <p class="text-sm text-gray-400 mt-2">Across all campaigns</p> |
| </div> |
|
|
| |
| <div class="card metric-card rounded-lg p-6"> |
| <div class="flex items-center justify-between mb-4"> |
| <h3 class="text-lg font-semibold">Avg. Response Rate</h3> |
| <i data-feather="message-square" class="text-gray-400"></i> |
| </div> |
| <p class="text-3xl font-bold">14.75%</p> |
| <p class="text-sm text-gray-400 mt-2">+1.75% from last month</p> |
| </div> |
|
|
| |
| <div class="card metric-card rounded-lg p-6"> |
| <div class="flex items-center justify-between mb-4"> |
| <h3 class="text-lg font-semibold">Total Pipeline</h3> |
| <i data-feather="dollar-sign" class="text-gray-400"></i> |
| </div> |
| <p class="text-3xl font-bold">1,750,000 DKK</p> |
| <p class="text-sm text-gray-400 mt-2">From all campaigns</p> |
| </div> |
|
|
| |
| <div class="card metric-card rounded-lg p-6"> |
| <div class="flex items-center justify-between mb-4"> |
| <h3 class="text-lg font-semibold">Total Revenue</h3> |
| <i data-feather="trending-up" class="text-gray-400"></i> |
| </div> |
| <p class="text-3xl font-bold">570,000 DKK</p> |
| <p class="text-sm text-gray-400 mt-2">From all campaigns</p> |
| </div> |
| </div> |
|
|
| |
| <div class="card rounded-lg p-6 mb-8"> |
| <div class="flex justify-between items-center mb-6"> |
| <h2 class="text-xl font-semibold">Campaign Performance</h2> |
| <div class="flex space-x-2"> |
| <button class="px-3 py-1 text-sm rounded bg-gray-700">Messages</button> |
| <button class="px-3 py-1 text-sm rounded bg-gray-700">Response Rate</button> |
| <button class="px-3 py-1 text-sm rounded bg-gray-700">Pipeline</button> |
| </div> |
| </div> |
| <canvas id="campaignChart" height="300"></canvas> |
| </div> |
|
|
| |
| <div class="card rounded-lg p-6"> |
| <h2 class="text-xl font-semibold mb-6">Recent Activity</h2> |
| <div class="space-y-4"> |
| <div class="flex items-center justify-between p-3 hover:bg-gray-800 rounded-lg transition"> |
| <div class="flex items-center space-x-3"> |
| <div class="p-2 rounded-full bg-blue-900/30"> |
| <i data-feather="mail" class="text-blue-400"></i> |
| </div> |
| <div> |
| <p class="font-medium">Campaign 2 - Email</p> |
| <p class="text-sm text-gray-400">13% response rate (39 responses)</p> |
| </div> |
| </div> |
| <span class="text-sm text-gray-400">2 hours ago</span> |
| </div> |
| <div class="flex items-center justify-between p-3 hover:bg-gray-800 rounded-lg transition"> |
| <div class="flex items-center space-x-3"> |
| <div class="p-2 rounded-full bg-purple-900/30"> |
| <i data-feather="linkedin" class="text-purple-400"></i> |
| </div> |
| <div> |
| <p class="font-medium">Campaign 1 - LinkedIn</p> |
| <p class="text-sm text-gray-400">16% response rate (48 responses)</p> |
| </div> |
| </div> |
| <span class="text-sm text-gray-400">5 hours ago</span> |
| </div> |
| <div class="flex items-center justify-between p-3 hover:bg-gray-800 rounded-lg transition"> |
| <div class="flex items-center space-x-3"> |
| <div class="p-2 rounded-full bg-green-900/30"> |
| <i data-feather="dollar-sign" class="text-green-400"></i> |
| </div> |
| <div> |
| <p class="font-medium">New Deal Closed</p> |
| <p class="text-sm text-gray-400">From Campaign 2 - 120,000 DKK</p> |
| </div> |
| </div> |
| <span class="text-sm text-gray-400">1 day ago</span> |
| </div> |
| </div> |
| </div> |
| </div> |
|
|
| |
| <div id="campaigns-dashboard" class="dashboard-section hidden"> |
| <div class="mb-8"> |
| <h2 class="text-2xl font-semibold mb-4">Campaign Performance</h2> |
| |
| |
| <div class="card rounded-lg p-6 mb-6"> |
| <div class="flex justify-between items-center mb-4"> |
| <h3 class="text-xl font-semibold">Kampagne 1</h3> |
| <div class="flex items-center space-x-4"> |
| <div class="relative w-32"> |
| <div class="h-2 bg-gray-700 rounded-full"> |
| <div class="h-2 bg-blue-500 rounded-full" style="width: 75%"></div> |
| </div> |
| <div class="absolute -top-8 left-0 px-2 py-1 bg-gray-800 rounded text-xs opacity-0 hovered-element:opacity-100 transition-opacity"> |
| Contacted: 450/600 (75%) |
| </div> |
| </div> |
| <span class="px-3 py-1 rounded-full bg-blue-900/30 text-blue-400 text-sm">Active</span> |
| </div> |
| </div> |
| |
| <div class="overflow-x-auto"> |
| <table class="min-w-full divide-y divide-gray-700"> |
| <thead> |
| <tr> |
| <th class="px-4 py-3 text-left text-xs font-medium text-gray-300 uppercase tracking-wider">Channel</th> |
| <th class="px-4 py-3 text-left text-xs font-medium text-gray-300 uppercase tracking-wider">Messages Sent</th> |
| <th class="px-4 py-3 text-left text-xs font-medium text-gray-300 uppercase tracking-wider">Response Rate</th> |
| <th class="px-4 py-3 text-left text-xs font-medium text-gray-300 uppercase tracking-wider">Positive Rate</th> |
| <th class="px-4 py-3 text-left text-xs font-medium text-gray-300 uppercase tracking-wider">Meetings</th> |
| <th class="px-4 py-3 text-left text-xs font-medium text-gray-300 uppercase tracking-wider">Leads</th> |
| <th class="px-4 py-3 text-left text-xs font-medium text-gray-300 uppercase tracking-wider">Pipeline (DKK)</th> |
| <th class="px-4 py-3 text-left text-xs font-medium text-gray-300 uppercase tracking-wider">Revenue (DKK)</th> |
| </tr> |
| </thead> |
| <tbody class="divide-y divide-gray-700"> |
| <tr> |
| <td class="px-4 py-3 whitespace-nowrap">Email</td> |
| <td class="px-4 py-3 whitespace-nowrap">300</td> |
| <td class="px-4 py-3 whitespace-nowrap">10%</td> |
| <td class="px-4 py-3 whitespace-nowrap">5%</td> |
| <td class="px-4 py-3 whitespace-nowrap">8</td> |
| <td class="px-4 py-3 whitespace-nowrap">6</td> |
| <td class="px-4 py-3 whitespace-nowrap">300,000</td> |
| <td class="px-4 py-3 whitespace-nowrap">100,000</td> |
| </tr> |
| <tr> |
| <td class="px-4 py-3 whitespace-nowrap">LinkedIn</td> |
| <td class="px-4 py-3 whitespace-nowrap">300</td> |
| <td class="px-4 py-3 whitespace-nowrap">16%</td> |
| <td class="px-4 py-3 whitespace-nowrap">9%</td> |
| <td class="px-4 py-3 whitespace-nowrap">12</td> |
| <td class="px-4 py-3 whitespace-nowrap">10</td> |
| <td class="px-4 py-3 whitespace-nowrap">500,000</td> |
| <td class="px-4 py-3 whitespace-nowrap">150,000</td> |
| </tr> |
| <tr class="font-semibold bg-gray-800/50"> |
| <td class="px-4 py-3 whitespace-nowrap">Total</td> |
| <td class="px-4 py-3 whitespace-nowrap">600</td> |
| <td class="px-4 py-3 whitespace-nowrap">13%</td> |
| <td class="px-4 py-3 whitespace-nowrap">7%</td> |
| <td class="px-4 py-3 whitespace-nowrap">20</td> |
| <td class="px-4 py-3 whitespace-nowrap">16</td> |
| <td class="px-4 py-3 whitespace-nowrap">800,000</td> |
| <td class="px-4 py-3 whitespace-nowrap">250,000</td> |
| </tr> |
| </tbody> |
| </table> |
| </div> |
| </div> |
| |
| |
| <div class="card rounded-lg p-6"> |
| <div class="flex justify-between items-center mb-4"> |
| <h3 class="text-xl font-semibold">Kampagne 2</h3> |
| <div class="flex items-center space-x-4"> |
| <div class="relative w-32"> |
| <div class="h-2 bg-gray-700 rounded-full"> |
| <div class="h-2 bg-green-500 rounded-full" style="width: 100%"></div> |
| </div> |
| <div class="absolute -top-8 left-0 px-2 py-1 bg-gray-800 rounded text-xs opacity-0 hovered-element:opacity-100 transition-opacity"> |
| Contacted: 600/600 (100%) |
| </div> |
| </div> |
| <span class="px-3 py-1 rounded-full bg-green-900/30 text-green-400 text-sm">Completed</span> |
| </div> |
| </div> |
| |
| <div class="overflow-x-auto"> |
| <table class="min-w-full divide-y divide-gray-700"> |
| <thead> |
| <tr> |
| <th class="px-4 py-3 text-left text-xs font-medium text-gray-300 uppercase tracking-wider">Channel</th> |
| <th class="px-4 py-3 text-left text-xs font-medium text-gray-300 uppercase tracking-wider">Messages Sent</th> |
| <th class="px-4 py-3 text-left text-xs font-medium text-gray-300 uppercase tracking-wider">Response Rate</th> |
| <th class="px-4 py-3 text-left text-xs font-medium text-gray-300 uppercase tracking-wider">Positive Rate</th> |
| <th class="px-4 py-3 text-left text-xs font-medium text-gray-300 uppercase tracking-wider">Meetings</th> |
| <th class="px-4 py-3 text-left text-xs font-medium text-gray-300 uppercase tracking-wider">Leads</th> |
| <th class="px-4 py-3 text-left text-xs font-medium text-gray-300 uppercase tracking-wider">Pipeline (DKK)</th> |
| <th class="px-4 py-3 text-left text-xs font-medium text-gray-300 uppercase tracking-wider">Revenue (DKK)</th> |
| </tr> |
| </thead> |
| <tbody class="divide-y divide-gray-700"> |
| <tr> |
| <td class="px-4 py-3 whitespace-nowrap">Email</td> |
| <td class="px-4 py-3 whitespace-nowrap">300</td> |
| <td class="px-4 py-3 whitespace-nowrap">13%</td> |
| <td class="px-4 py-3 whitespace-nowrap">7%</td> |
| <td class="px-4 py-3 whitespace-nowrap">10</td> |
| <td class="px-4 py-3 whitespace-nowrap">7</td> |
| <td class="px-4 py-3 whitespace-nowrap">350,000</td> |
| <td class="px-4 py-3 whitespace-nowrap">120,000</td> |
| </tr> |
| <tr> |
| <td class="px-4 py-3 whitespace-nowrap">LinkedIn</td> |
| <td class="px-4 py-3 whitespace-nowrap">300</td> |
| <td class="px-4 py-3 whitespace-nowrap">20%</td> |
| <td class="px-4 py-3 whitespace-nowrap">11%</td> |
| <td class="px-4 py-3 whitespace-nowrap">15</td> |
| <td class="px-4 py-3 whitespace-nowrap">12</td> |
| <td class="px-4 py-3 whitespace-nowrap">600,000</td> |
| <td class="px-4 py-3 whitespace-nowrap">200,000</td> |
| </tr> |
| <tr class="font-semibold bg-gray-800/50"> |
| <td class="px-4 py-3 whitespace-nowrap">Total</td> |
| <td class="px-4 py-3 whitespace-nowrap">600</td> |
| <td class="px-4 py-3 whitespace-nowrap">16.5%</td> |
| <td class="px-4 py-3 whitespace-nowrap">9%</td> |
| <td class="px-4 py-3 whitespace-nowrap">25</td> |
| <td class="px-4 py-3 whitespace-nowrap">19</td> |
| <td class="px-4 py-3 whitespace-nowrap">950,000</td> |
| <td class="px-4 py-3 whitespace-nowrap">320,000</td> |
| </tr> |
| </tbody> |
| </table> |
| </div> |
| </div> |
| </div> |
| </div> |
|
|
| |
| <div id="abtesting-dashboard" class="dashboard-section hidden"> |
| <div class="mb-8"> |
| <h2 class="text-2xl font-semibold mb-4">A/B Testing Results</h2> |
| |
| |
| <div class="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-6 mb-8"> |
| <div class="card rounded-lg p-6"> |
| <h3 class="text-lg font-semibold mb-2">Test Group A</h3> |
| <div class="space-y-2"> |
| <p class="flex justify-between"><span>Avg. Response Rate:</span> <span class="font-medium">12.67%</span></p> |
| <p class="flex justify-between"><span>Avg. Positive Rate:</span> <span class="font-medium">6.67%</span></p> |
| <p class="flex justify-between"><span>Total Pipeline:</span> <span class="font-medium">420,000 DKK</span></p> |
| </div> |
| </div> |
| |
| <div class="card rounded-lg p-6"> |
| <h3 class="text-lg font-semibold mb-2">Test Group B</h3> |
| <div class="space-y-2"> |
| <p class="flex justify-between"><span>Avg. Response Rate:</span> <span class="font-medium">15.67%</span></p> |
| <p class="flex justify-between"><span>Avg. Positive Rate:</span> <span class="font-medium">8.33%</span></p> |
| <p class="flex justify-between"><span>Total Pipeline:</span> <span class="font-medium">510,000 DKK</span></p> |
| </div> |
| </div> |
| |
| <div class="card rounded-lg p-6"> |
| <h3 class="text-lg font-semibold mb-2">Improvement</h3> |
| <div class="space-y-2"> |
| <p class="flex justify-between"><span>Response Rate:</span> <span class="font-medium text-green-400">+3.0%</span></p> |
| <p class="flex justify-between"><span>Positive Rate:</span> <span class="font-medium text-green-400">+1.66%</span></p> |
| <p class="flex justify-between"><span>Pipeline:</span> <span class="font-medium text-green-400">+90,000 DKK</span></p> |
| </div> |
| </div> |
| </div> |
| |
| |
| <div class="card rounded-lg p-6 mb-6"> |
| <div class="overflow-x-auto"> |
| <table class="min-w-full divide-y divide-gray-700"> |
| <thead> |
| <tr> |
| <th class="px-4 py-3 text-left text-xs font-medium text-gray-300 uppercase tracking-wider">Test Group</th> |
| <th class="px-4 py-3 text-left text-xs font-medium text-gray-300 uppercase tracking-wider">Data Source</th> |
| <th class="px-4 py-3 text-left text-xs font-medium text-gray-300 uppercase tracking-wider">Subject Line</th> |
| <th class="px-4 py-3 text-left text-xs font-medium text-gray-300 uppercase tracking-wider">Messages Sent</th> |
| <th class="px-4 py-3 text-left text-xs font-medium text-gray-300 uppercase tracking-wider">Response Rate</th> |
| <th class="px-4 py-3 text-left text-xs font-medium text-gray-300 uppercase tracking-wider">Positive Rate</th> |
| <th class="px-4 py-3 text-left text-xs font-medium text-gray-300 uppercase tracking-wider">Meetings</th> |
| <th class="px-4 py-3 text-left text-xs font-medium text-gray-300 uppercase tracking-wider">Leads</th> |
| <th class="px-4 py-3 text-left text-xs font-medium text-gray-300 uppercase tracking-wider">Pipeline (DKK)</th> |
| <th class="px-4 py-3 text-left text-xs font-medium text-gray-300 uppercase tracking-wider">Revenue (DKK)</th> |
| </tr> |
| </thead> |
| <tbody class="divide-y divide-gray-700"> |
| <tr> |
| <td class="px-4 py-3 whitespace-nowrap">A</td> |
| <td class="px-4 py-3 whitespace-nowrap">LinkedIn</td> |
| <td class="px-4 py-3 whitespace-nowrap">Emnelinje 1</td> |
| <td class="px-4 py-3 whitespace-nowrap">150</td> |
| <td class="px-4 py-3 whitespace-nowrap">18%</td> |
| <td class="px-4 py-3 whitespace-nowrap">10%</td> |
| <td class="px-4 py-3 whitespace-nowrap">8</td> |
| <td class="px-4 py-3 whitespace-nowrap">6</td> |
| <td class="px-4 py-3 whitespace-nowrap">250,000</td> |
| <td class="px-4 py-3 whitespace-nowrap">90,000</td> |
| </tr> |
| <tr> |
| <td class="px-4 py-3 whitespace-nowrap">B</td> |
| <td class="px-4 py-3 whitespace-nowrap">LinkedIn</td> |
| <td class="px-4 py-3 whitespace-nowrap">Emnelinje 2</td> |
| <td class="px-4 py-3 whitespace-nowrap">150</td> |
| <td class="px-4 py-3 whitespace-nowrap">22%</td> |
| <td class="px-4 py-3 whitespace-nowrap">12%</td> |
| <td class="px-4 py-3 whitespace-nowrap">10</td> |
| <td class="px-4 py-3 whitespace-nowrap">8</td> |
| <td class="px-4 py-3 whitespace-nowrap">300,000</td> |
| <td class="px-4 py-3 whitespace-nowrap">120,000</td> |
| </tr> |
| <tr> |
| <td class="px-4 py-3 whitespace-nowrap">A</td> |
| <td class="px-4 py-3 whitespace-nowrap">Google</td> |
| <td class="px-4 py-3 whitespace-nowrap">Emnelinje 1</td> |
| <td class="px-4 py-3 whitespace-nowrap">100</td> |
| <td class="px-4 py-3 whitespace-nowrap">12%</td> |
| <td class="px-4 py-3 whitespace-nowrap">6%</td> |
| <td class="px-4 py-3 whitespace-nowrap">5</td> |
| <td class="px-4 py-3 whitespace-nowrap">3</td> |
| <td class="px-4 py-3 whitespace-nowrap">120,000</td> |
| <td class="px-4 py-3 whitespace-nowrap">50,000</td> |
| </tr> |
| <tr> |
| <td class="px-4 py-3 whitespace-nowrap">B</td> |
| <td class="px-4 py-3 whitespace-nowrap">Google</td> |
| <td class="px-4 py-3 whitespace-nowrap">Emnelinje 2</td> |
| <td class="px-4 py-3 whitespace-nowrap">100</td> |
| <td class="px-4 py-3 whitespace-nowrap">15%</td> |
| <td class="px-4 py-3 whitespace-nowrap">8%</td> |
| <td class="px-4 py-3 whitespace-nowrap">6</td> |
| <td class="px-4 py-3 whitespace-nowrap">4</td> |
| <td class="px-4 py-3 whitespace-nowrap">150,000</td> |
| <td class="px-4 py-3 whitespace-nowrap">70,000</td> |
| </tr> |
| <tr> |
| <td class="px-4 py-3 whitespace-nowrap">A</td> |
| <td class="px-4 py-3 whitespace-nowrop">Website</td> |
| <td class="px-4 py-3 whitespace-nowrap">Emnelinje 1</td> |
| <td class="px-4 py-3 whitespace-nowrap">50</td> |
| <td class="px-4 py-3 whitespace-nowrap">8%</td> |
| <td class="px-4 py-3 whitespace-nowrap">4%</td> |
| <td class="px-4 py-3 whitespace-nowrap">2</td> |
| <td class="px-4 py-3 whitespace-nowrap">1</td> |
| <td class="px-4 py-3 whitespace-nowrap">50,000</td> |
| <td class="px-4 py-3 whitespace-nowrap">20,000</td> |
| </tr> |
| <tr> |
| <td class="px-4 py-3 whitespace-nowrap">B</td> |
| <td class="px-4 py-3 whitespace-nowrap">Website</td> |
| <td class="px-4 py-3 whitespace-nowrap">Emnelinje 2</td> |
| <td class="px-4 py-3 whitespace-nowrap">50</td> |
| <td class="px-4 py-3 whitespace-nowrap">10%</td> |
| <td class="px-4 py-3 whitespace-nowrap">5%</td> |
| <td class="px-4 py-3 whitespace-nowrap">3</td> |
| <td class="px-4 py-3 whitespace-nowrap">2</td> |
| <td class="px-4 py-3 whitespace-nowrap">60,000</td> |
| <td class="px-4 py-3 whitespace-nowrap">25,000</td> |
| </tr> |
| </tbody> |
| </table> |
| </div> |
| </div> |
| |
| |
| <div class="grid grid-cols-1 lg:grid-cols-2 gap-6"> |
| <div class="card rounded-lg p-6"> |
| <h3 class="text-lg font-semibold mb-4">Response Rate by Channel</h3> |
| <canvas id="responseRateChart" height="250"></canvas> |
| </div> |
| <div class="card rounded-lg p-6"> |
| <h3 class="text-lg font-semibold mb-4">Pipeline Generated by Channel</h3> |
| <canvas id="pipelineChart" height="250"></canvas> |
| </div> |
| </div> |
| </div> |
| </div> |
| </div> |
|
|
| <script> |
| |
| document.getElementById('overview-tab').addEventListener('click', function(e) { |
| e.preventDefault(); |
| document.querySelectorAll('.dashboard-section').forEach(section => { |
| section.classList.add('hidden'); |
| }); |
| document.getElementById('overview-dashboard').classList.remove('hidden'); |
| |
| document.querySelectorAll('nav a').forEach(link => { |
| link.classList.remove('tab-active'); |
| }); |
| this.classList.add('tab-active'); |
| }); |
| |
| document.getElementById('campaigns-tab').addEventListener('click', function(e) { |
| e.preventDefault(); |
| document.querySelectorAll('.dashboard-section').forEach(section => { |
| section.classList.add('hidden'); |
| }); |
| document.getElementById('campaigns-dashboard').classList.remove('hidden'); |
| |
| document.querySelectorAll('nav a').forEach(link => { |
| link.classList.remove('tab-active'); |
| }); |
| this.classList.add('tab-active'); |
| }); |
| |
| document.getElementById('abtesting-tab').addEventListener('click', function(e) { |
| e.preventDefault(); |
| document.querySelectorAll('.dashboard-section').forEach(section => { |
| section.classList.add('hidden'); |
| }); |
| document.getElementById('abtesting-dashboard').classList.remove('hidden'); |
| |
| document.querySelectorAll('nav a').forEach(link => { |
| link.classList.remove('tab-active'); |
| }); |
| this.classList.add('tab-active'); |
| }); |
| |
| |
| document.addEventListener('DOMContentLoaded', function() { |
| feather.replace(); |
| AOS.init(); |
| |
| |
| const campaignCtx = document.getElementById('campaignChart').getContext('2d'); |
| const campaignChart = new Chart(campaignCtx, { |
| type: 'bar', |
| data: { |
| labels: ['Kampagne 1', 'Kampagne 2'], |
| datasets: [ |
| { |
| label: 'Messages Sent', |
| data: [600, 600], |
| backgroundColor: 'rgba(99, 102, 241, 0.7)', |
| borderColor: 'rgba(99, 102, 241, 1)', |
| borderWidth: 1 |
| }, |
| { |
| label: 'Response Rate', |
| data: [13, 16.5], |
| backgroundColor: 'rgba(16, 185, 129, 0.7)', |
| borderColor: 'rgba(16, 185, 129, 1)', |
| borderWidth: 1, |
| type: 'line', |
| yAxisID: 'y1' |
| }, |
| { |
| label: 'Pipeline (DKK)', |
| data: [800, 950], |
| backgroundColor: 'rgba(245, 158, 11, 0.7)', |
| borderColor: 'rgba(245, 158, 11, 1)', |
| borderWidth: 1 |
| } |
| ] |
| }, |
| options: { |
| responsive: true, |
| scales: { |
| y: { |
| beginAtZero: true, |
| title: { |
| display: true, |
| text: 'Count/Amount' |
| } |
| }, |
| y1: { |
| position: 'right', |
| beginAtZero: true, |
| max: 100, |
| title: { |
| display: true, |
| text: 'Percentage (%)' |
| }, |
| grid: { |
| drawOnChartArea: false |
| } |
| } |
| } |
| } |
| }); |
| |
| |
| const responseRateCtx = document.getElementById('responseRateChart').getContext('2d'); |
| const responseRateChart = new Chart(responseRateCtx, { |
| type: 'bar', |
| data: { |
| labels: ['LinkedIn', 'Google', 'Website'], |
| datasets: [ |
| { |
| label: 'Group A', |
| data: [18, 12, 8], |
| backgroundColor: 'rgba(99, 102, 241, 0.7)' |
| }, |
| { |
| label: 'Group B', |
| data: [22, 15, 10], |
| backgroundColor: 'rgba(16, 185, 129, 0.7)' |
| } |
| ] |
| }, |
| options: { |
| responsive: true, |
| scales: { |
| y: { |
| beginAtZero: true, |
| title: { |
| display: true, |
| text: 'Response Rate (%)' |
| } |
| } |
| } |
| } |
| }); |
| |
| const pipelineCtx = document.getElementById('pipelineChart').getContext('2d'); |
| const pipelineChart = new Chart(pipelineCtx, { |
| type: 'bar', |
| data: { |
| labels: ['LinkedIn', 'Google', 'Website'], |
| datasets: [ |
| { |
| label: 'Group A', |
| data: [250, 120, 50], |
| backgroundColor: 'rgba(99, 102, 241, 0.7)' |
| }, |
| { |
| label: 'Group B', |
| data: [300, 150, 60], |
| backgroundColor: 'rgba(16, 185, 129, 0.7)' |
| } |
| ] |
| }, |
| options: { |
| responsive: true, |
| scales: { |
| y: { |
| beginAtZero: true, |
| title: { |
| display: true, |
| text: 'Pipeline (DKK)' |
| } |
| } |
| } |
| } |
| }); |
| }); |
| </script> |
| </body> |
| </html> |
|
|