876 lines
34 KiB
HTML
876 lines
34 KiB
HTML
<!DOCTYPE html>
|
||
<html lang="en">
|
||
<head>
|
||
<meta charset="UTF-8">
|
||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||
<title>Outpatient Satisfaction Survey - Survey Analytics Report</title>
|
||
<script src="https://cdn.jsdelivr.net/npm/apexcharts"></script>
|
||
<script src="https://cdn.jsdelivr.net/npm/marked/marked.min.js"></script>
|
||
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/css/bootstrap.min.css" rel="stylesheet">
|
||
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap-icons@1.11.0/font/bootstrap-icons.css">
|
||
<style>
|
||
:root {
|
||
--primary-color: #2563eb;
|
||
--success-color: #10b981;
|
||
--warning-color: #f59e0b;
|
||
--danger-color: #ef4444;
|
||
--info-color: #06b6d4;
|
||
}
|
||
|
||
body {
|
||
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
|
||
background-color: #f8fafc;
|
||
color: #1e293b;
|
||
}
|
||
|
||
.navbar {
|
||
background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
|
||
box-shadow: 0 4px 6px -1px rgba(0,0,0,0.1);
|
||
}
|
||
|
||
.stat-card {
|
||
background: white;
|
||
border-radius: 16px;
|
||
padding: 1.5rem;
|
||
box-shadow: 0 4px 6px -1px rgba(0,0,0,0.1);
|
||
transition: transform 0.2s;
|
||
}
|
||
|
||
.stat-card:hover {
|
||
transform: translateY(-2px);
|
||
}
|
||
|
||
.stat-value {
|
||
font-size: 2rem;
|
||
font-weight: 700;
|
||
color: var(--primary-color);
|
||
}
|
||
|
||
.stat-label {
|
||
color: #64748b;
|
||
font-size: 0.875rem;
|
||
text-transform: uppercase;
|
||
letter-spacing: 0.05em;
|
||
}
|
||
|
||
.score-excellent { color: var(--success-color); }
|
||
.score-good { color: var(--info-color); }
|
||
.score-average { color: var(--warning-color); }
|
||
.score-poor { color: var(--danger-color); }
|
||
|
||
.question-card {
|
||
background: white;
|
||
border-radius: 12px;
|
||
padding: 1.5rem;
|
||
margin-bottom: 1.5rem;
|
||
box-shadow: 0 1px 3px rgba(0,0,0,0.1);
|
||
border-left: 4px solid var(--primary-color);
|
||
}
|
||
|
||
.question-header {
|
||
display: flex;
|
||
justify-content: space-between;
|
||
align-items: flex-start;
|
||
margin-bottom: 1rem;
|
||
}
|
||
|
||
.question-number {
|
||
background: var(--primary-color);
|
||
color: white;
|
||
width: 32px;
|
||
height: 32px;
|
||
border-radius: 50%;
|
||
display: flex;
|
||
align-items: center;
|
||
justify-content: center;
|
||
font-weight: 600;
|
||
margin-right: 0.75rem;
|
||
}
|
||
|
||
.chart-container {
|
||
background: white;
|
||
border-radius: 12px;
|
||
padding: 1.5rem;
|
||
margin-bottom: 1.5rem;
|
||
box-shadow: 0 1px 3px rgba(0,0,0,0.1);
|
||
}
|
||
|
||
.insight-badge {
|
||
display: inline-flex;
|
||
align-items: center;
|
||
padding: 0.375rem 0.75rem;
|
||
border-radius: 9999px;
|
||
font-size: 0.75rem;
|
||
font-weight: 600;
|
||
margin-right: 0.5rem;
|
||
margin-bottom: 0.5rem;
|
||
}
|
||
|
||
.insight-positive { background: #d1fae5; color: #065f46; }
|
||
.insight-warning { background: #fef3c7; color: #92400e; }
|
||
.insight-negative { background: #fee2e2; color: #991b1b; }
|
||
.insight-info { background: #dbeafe; color: #1e40af; }
|
||
|
||
.distribution-bar {
|
||
height: 24px;
|
||
border-radius: 12px;
|
||
display: flex;
|
||
overflow: hidden;
|
||
margin-top: 0.5rem;
|
||
}
|
||
|
||
.distribution-segment {
|
||
display: flex;
|
||
align-items: center;
|
||
justify-content: center;
|
||
color: white;
|
||
font-size: 0.75rem;
|
||
font-weight: 600;
|
||
}
|
||
|
||
.trend-indicator {
|
||
display: inline-flex;
|
||
align-items: center;
|
||
font-size: 0.875rem;
|
||
}
|
||
|
||
.trend-up { color: var(--success-color); }
|
||
.trend-down { color: var(--danger-color); }
|
||
.trend-stable { color: #64748b; }
|
||
|
||
.response-sample {
|
||
background: #f8fafc;
|
||
border-radius: 8px;
|
||
padding: 0.75rem;
|
||
margin-bottom: 0.5rem;
|
||
font-size: 0.875rem;
|
||
}
|
||
|
||
.metric-grid {
|
||
display: grid;
|
||
grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
|
||
gap: 1rem;
|
||
margin: 1.5rem 0;
|
||
}
|
||
|
||
.metric-item {
|
||
background: #f8fafc;
|
||
padding: 1rem;
|
||
border-radius: 8px;
|
||
text-align: center;
|
||
}
|
||
|
||
.metric-value {
|
||
font-size: 1.5rem;
|
||
font-weight: 700;
|
||
color: var(--primary-color);
|
||
}
|
||
|
||
.metric-label {
|
||
font-size: 0.75rem;
|
||
color: #64748b;
|
||
text-transform: uppercase;
|
||
}
|
||
|
||
.sticky-sidebar {
|
||
position: sticky;
|
||
top: 20px;
|
||
}
|
||
|
||
.nav-link {
|
||
color: #64748b;
|
||
padding: 0.5rem 0;
|
||
border-left: 3px solid transparent;
|
||
padding-left: 1rem;
|
||
margin-left: -1rem;
|
||
}
|
||
|
||
.nav-link:hover, .nav-link.active {
|
||
color: var(--primary-color);
|
||
border-left-color: var(--primary-color);
|
||
}
|
||
|
||
.comparison-table th,
|
||
.comparison-table td {
|
||
padding: 0.75rem;
|
||
border-bottom: 1px solid #e2e8f0;
|
||
}
|
||
|
||
.comparison-table th {
|
||
background: #f8fafc;
|
||
font-weight: 600;
|
||
text-align: left;
|
||
}
|
||
|
||
@media print {
|
||
.no-print { display: none !important; }
|
||
.question-card { break-inside: avoid; }
|
||
}
|
||
</style>
|
||
</head>
|
||
<body>
|
||
<!-- Navigation -->
|
||
<nav class="navbar navbar-dark no-print">
|
||
<div class="container-fluid">
|
||
<a class="navbar-brand" href="index.html">
|
||
<i class="bi bi-arrow-left me-2"></i>Back to Reports Index
|
||
</a>
|
||
<span class="navbar-text text-white">
|
||
Outpatient Satisfaction Survey
|
||
</span>
|
||
<button class="btn btn-light btn-sm" onclick="window.print()">
|
||
<i class="bi bi-printer me-2"></i>Print Report
|
||
</button>
|
||
</div>
|
||
</nav>
|
||
|
||
<div class="container-fluid py-4">
|
||
<div class="row">
|
||
<!-- Sidebar Navigation -->
|
||
<div class="col-lg-2 d-none d-lg-block no-print">
|
||
<div class="sticky-sidebar">
|
||
<h6 class="text-uppercase text-muted mb-3">Report Sections</h6>
|
||
<nav class="nav flex-column">
|
||
<a class="nav-link" href="#overview">Overview</a>
|
||
<a class="nav-link" href="#trends">Trends</a>
|
||
<a class="nav-link" href="#questions">Questions Analysis</a>
|
||
<a class="nav-link" href="#insights">Key Insights</a>
|
||
<a class="nav-link" href="#details">Detailed Metrics</a>
|
||
</nav>
|
||
</div>
|
||
</div>
|
||
|
||
<!-- Main Content -->
|
||
<div class="col-lg-10">
|
||
<!-- Header -->
|
||
<div class="mb-4">
|
||
<h1 class="display-5 fw-bold">Outpatient Satisfaction Survey</h1>
|
||
<p class="text-muted">
|
||
<i class="bi bi-calendar3 me-2"></i>2025-02-08 to 2026-02-08
|
||
<span class="mx-3">|</span>
|
||
<i class="bi bi-clock me-2"></i>Generated: 2026-02-08T09:35:00
|
||
</p>
|
||
</div>
|
||
|
||
<!-- Overview Stats -->
|
||
<section id="overview" class="mb-5">
|
||
<h2 class="h4 mb-4">Overview</h2>
|
||
<div class="row g-4">
|
||
<div class="col-md-3">
|
||
<div class="stat-card">
|
||
<div class="stat-label">Surveys Sent</div>
|
||
<div class="stat-value">14</div>
|
||
</div>
|
||
</div>
|
||
<div class="col-md-3">
|
||
<div class="stat-card">
|
||
<div class="stat-label">Completed</div>
|
||
<div class="stat-value">1</div>
|
||
<small class="text-muted">7.14% completion</small>
|
||
</div>
|
||
</div>
|
||
<div class="col-md-3">
|
||
<div class="stat-card">
|
||
<div class="stat-label">Average Score</div>
|
||
<div class="stat-value score-poor">
|
||
0.0/5.0
|
||
</div>
|
||
<small class="text-muted">σ = 0.0</small>
|
||
</div>
|
||
</div>
|
||
<div class="col-md-3">
|
||
<div class="stat-card">
|
||
<div class="stat-label">Negative Surveys</div>
|
||
<div class="stat-value text-danger">1</div>
|
||
<small class="text-muted">100.0% of total</small>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<!-- Score Distribution -->
|
||
<div class="chart-container mt-4">
|
||
<h5 class="mb-3">Score Distribution</h5>
|
||
<div class="distribution-bar">
|
||
<div class="distribution-segment" style="width: 100.0%; background: #ef4444;"></div>
|
||
</div>
|
||
<div class="row mt-3 text-center">
|
||
<div class="col-3">
|
||
<div class="text-success fw-bold">0</div>
|
||
<small class="text-muted">Excellent (0.0%)</small>
|
||
</div>
|
||
<div class="col-3">
|
||
<div class="text-info fw-bold">0</div>
|
||
<small class="text-muted">Good (0.0%)</small>
|
||
</div>
|
||
<div class="col-3">
|
||
<div class="text-warning fw-bold">0</div>
|
||
<small class="text-muted">Average (0.0%)</small>
|
||
</div>
|
||
<div class="col-3">
|
||
<div class="text-danger fw-bold">1</div>
|
||
<small class="text-muted">Poor (100.0%)</small>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</section>
|
||
|
||
<!-- Monthly Trends -->
|
||
<section id="trends" class="mb-5">
|
||
<h2 class="h4 mb-4">Monthly Trends</h2>
|
||
<div class="chart-container">
|
||
<div id="monthlyTrendsChart" style="height: 400px;"></div>
|
||
</div>
|
||
</section>
|
||
|
||
<!-- Questions Analysis -->
|
||
<section id="questions" class="mb-5">
|
||
<h2 class="h4 mb-4">Question-Level Analysis</h2>
|
||
<p class="text-muted mb-4">
|
||
Detailed analysis of 8 questions with statistical metrics,
|
||
score distributions, and performance trends.
|
||
</p>
|
||
|
||
<div class="question-card" id="question_1">
|
||
<div class="question-header">
|
||
<div class="d-flex align-items-start">
|
||
<div class="question-number">1</div>
|
||
<div>
|
||
<h5 class="mb-1">Did the doctor explained everything about your case?</h5>
|
||
<p class="text-muted mb-0 small">هل شرح الطبيب كل شيء عن حالتك؟</p>
|
||
<div class="mt-2">
|
||
<span class="badge bg-secondary">MULTIPLE_CHOICE</span>
|
||
<span class="badge bg-warning text-dark">Required</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="text-end">
|
||
<div class="stat-value score-poor">N/A</div>
|
||
<small class="text-muted">Average Score</small>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="row mt-4">
|
||
<div class="col-md-8">
|
||
<h6 class="text-muted">Choice Distribution</h6><table class="table table-sm"><thead><tr><th>Choice</th><th>Count</th><th>Percentage</th></tr></thead><tbody><tr><td>1</td><td>1</td><td>100.0%</td></tr></tbody></table>
|
||
</div>
|
||
<div class="col-md-4">
|
||
<div class="metric-grid" style="margin-top: 0;">
|
||
<div class="metric-item">
|
||
<div class="metric-value">1</div>
|
||
<div class="metric-label">Responses</div>
|
||
</div>
|
||
<div class="metric-item">
|
||
<div class="metric-value">100.0%</div>
|
||
<div class="metric-label">Response Rate</div>
|
||
</div>
|
||
|
||
|
||
</div>
|
||
|
||
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
|
||
<div class="question-card" id="question_2">
|
||
<div class="question-header">
|
||
<div class="d-flex align-items-start">
|
||
<div class="question-number">2</div>
|
||
<div>
|
||
<h5 class="mb-1">Did the pharmacist explained to you the medication clearly?</h5>
|
||
<p class="text-muted mb-0 small">هل شرح الصيدلي لك الدواء بشكل واضح؟</p>
|
||
<div class="mt-2">
|
||
<span class="badge bg-secondary">MULTIPLE_CHOICE</span>
|
||
<span class="badge bg-warning text-dark">Required</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="text-end">
|
||
<div class="stat-value score-poor">N/A</div>
|
||
<small class="text-muted">Average Score</small>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="row mt-4">
|
||
<div class="col-md-8">
|
||
<h6 class="text-muted">Choice Distribution</h6><table class="table table-sm"><thead><tr><th>Choice</th><th>Count</th><th>Percentage</th></tr></thead><tbody><tr><td>3</td><td>1</td><td>100.0%</td></tr></tbody></table>
|
||
</div>
|
||
<div class="col-md-4">
|
||
<div class="metric-grid" style="margin-top: 0;">
|
||
<div class="metric-item">
|
||
<div class="metric-value">1</div>
|
||
<div class="metric-label">Responses</div>
|
||
</div>
|
||
<div class="metric-item">
|
||
<div class="metric-value">100.0%</div>
|
||
<div class="metric-label">Response Rate</div>
|
||
</div>
|
||
|
||
|
||
</div>
|
||
|
||
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
|
||
<div class="question-card" id="question_3">
|
||
<div class="question-header">
|
||
<div class="d-flex align-items-start">
|
||
<div class="question-number">3</div>
|
||
<div>
|
||
<h5 class="mb-1">Did the staff attended your needs in an understandable language?</h5>
|
||
<p class="text-muted mb-0 small">هل قام الموظفون بتلبية احتياجاتك بلغة مفهومة؟</p>
|
||
<div class="mt-2">
|
||
<span class="badge bg-secondary">MULTIPLE_CHOICE</span>
|
||
<span class="badge bg-warning text-dark">Required</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="text-end">
|
||
<div class="stat-value score-poor">N/A</div>
|
||
<small class="text-muted">Average Score</small>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="row mt-4">
|
||
<div class="col-md-8">
|
||
<h6 class="text-muted">Choice Distribution</h6><table class="table table-sm"><thead><tr><th>Choice</th><th>Count</th><th>Percentage</th></tr></thead><tbody><tr><td>3</td><td>1</td><td>100.0%</td></tr></tbody></table>
|
||
</div>
|
||
<div class="col-md-4">
|
||
<div class="metric-grid" style="margin-top: 0;">
|
||
<div class="metric-item">
|
||
<div class="metric-value">1</div>
|
||
<div class="metric-label">Responses</div>
|
||
</div>
|
||
<div class="metric-item">
|
||
<div class="metric-value">100.0%</div>
|
||
<div class="metric-label">Response Rate</div>
|
||
</div>
|
||
|
||
|
||
</div>
|
||
|
||
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
|
||
<div class="question-card" id="question_4">
|
||
<div class="question-header">
|
||
<div class="d-flex align-items-start">
|
||
<div class="question-number">4</div>
|
||
<div>
|
||
<h5 class="mb-1">Were you satisfied with your interaction with the doctor?</h5>
|
||
<p class="text-muted mb-0 small">هل كنت راضٍ عن تفاعلك مع الطبيب؟</p>
|
||
<div class="mt-2">
|
||
<span class="badge bg-secondary">MULTIPLE_CHOICE</span>
|
||
<span class="badge bg-warning text-dark">Required</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="text-end">
|
||
<div class="stat-value score-poor">N/A</div>
|
||
<small class="text-muted">Average Score</small>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="row mt-4">
|
||
<div class="col-md-8">
|
||
<h6 class="text-muted">Choice Distribution</h6><table class="table table-sm"><thead><tr><th>Choice</th><th>Count</th><th>Percentage</th></tr></thead><tbody><tr><td>4</td><td>1</td><td>100.0%</td></tr></tbody></table>
|
||
</div>
|
||
<div class="col-md-4">
|
||
<div class="metric-grid" style="margin-top: 0;">
|
||
<div class="metric-item">
|
||
<div class="metric-value">1</div>
|
||
<div class="metric-label">Responses</div>
|
||
</div>
|
||
<div class="metric-item">
|
||
<div class="metric-value">100.0%</div>
|
||
<div class="metric-label">Response Rate</div>
|
||
</div>
|
||
|
||
|
||
</div>
|
||
|
||
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
|
||
<div class="question-card" id="question_5">
|
||
<div class="question-header">
|
||
<div class="d-flex align-items-start">
|
||
<div class="question-number">5</div>
|
||
<div>
|
||
<h5 class="mb-1">Were you served by Laboratory Receptionists as required?</h5>
|
||
<p class="text-muted mb-0 small">هل قدمت لك خدمة استقبال المختبر كما هو مطلوب؟</p>
|
||
<div class="mt-2">
|
||
<span class="badge bg-secondary">MULTIPLE_CHOICE</span>
|
||
<span class="badge bg-warning text-dark">Required</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="text-end">
|
||
<div class="stat-value score-poor">N/A</div>
|
||
<small class="text-muted">Average Score</small>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="row mt-4">
|
||
<div class="col-md-8">
|
||
<h6 class="text-muted">Choice Distribution</h6><table class="table table-sm"><thead><tr><th>Choice</th><th>Count</th><th>Percentage</th></tr></thead><tbody><tr><td>5</td><td>1</td><td>100.0%</td></tr></tbody></table>
|
||
</div>
|
||
<div class="col-md-4">
|
||
<div class="metric-grid" style="margin-top: 0;">
|
||
<div class="metric-item">
|
||
<div class="metric-value">1</div>
|
||
<div class="metric-label">Responses</div>
|
||
</div>
|
||
<div class="metric-item">
|
||
<div class="metric-value">100.0%</div>
|
||
<div class="metric-label">Response Rate</div>
|
||
</div>
|
||
|
||
|
||
</div>
|
||
|
||
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
|
||
<div class="question-card" id="question_6">
|
||
<div class="question-header">
|
||
<div class="d-flex align-items-start">
|
||
<div class="question-number">6</div>
|
||
<div>
|
||
<h5 class="mb-1">Were you served by Radiology Receptionists as required?</h5>
|
||
<p class="text-muted mb-0 small">هل قدمت لك خدمة استقبال الأشعة كما هو مطلوب؟</p>
|
||
<div class="mt-2">
|
||
<span class="badge bg-secondary">MULTIPLE_CHOICE</span>
|
||
<span class="badge bg-warning text-dark">Required</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="text-end">
|
||
<div class="stat-value score-poor">N/A</div>
|
||
<small class="text-muted">Average Score</small>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="row mt-4">
|
||
<div class="col-md-8">
|
||
<h6 class="text-muted">Choice Distribution</h6><table class="table table-sm"><thead><tr><th>Choice</th><th>Count</th><th>Percentage</th></tr></thead><tbody><tr><td>5</td><td>1</td><td>100.0%</td></tr></tbody></table>
|
||
</div>
|
||
<div class="col-md-4">
|
||
<div class="metric-grid" style="margin-top: 0;">
|
||
<div class="metric-item">
|
||
<div class="metric-value">1</div>
|
||
<div class="metric-label">Responses</div>
|
||
</div>
|
||
<div class="metric-item">
|
||
<div class="metric-value">100.0%</div>
|
||
<div class="metric-label">Response Rate</div>
|
||
</div>
|
||
|
||
|
||
</div>
|
||
|
||
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
|
||
<div class="question-card" id="question_7">
|
||
<div class="question-header">
|
||
<div class="d-flex align-items-start">
|
||
<div class="question-number">7</div>
|
||
<div>
|
||
<h5 class="mb-1">Were you served by Receptionists as required?</h5>
|
||
<p class="text-muted mb-0 small">هل قدمت لك خدمة الاستقبال كما هو مطلوب؟</p>
|
||
<div class="mt-2">
|
||
<span class="badge bg-secondary">MULTIPLE_CHOICE</span>
|
||
<span class="badge bg-warning text-dark">Required</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="text-end">
|
||
<div class="stat-value score-poor">N/A</div>
|
||
<small class="text-muted">Average Score</small>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="row mt-4">
|
||
<div class="col-md-8">
|
||
<h6 class="text-muted">Choice Distribution</h6><table class="table table-sm"><thead><tr><th>Choice</th><th>Count</th><th>Percentage</th></tr></thead><tbody><tr><td>4</td><td>1</td><td>100.0%</td></tr></tbody></table>
|
||
</div>
|
||
<div class="col-md-4">
|
||
<div class="metric-grid" style="margin-top: 0;">
|
||
<div class="metric-item">
|
||
<div class="metric-value">1</div>
|
||
<div class="metric-label">Responses</div>
|
||
</div>
|
||
<div class="metric-item">
|
||
<div class="metric-value">100.0%</div>
|
||
<div class="metric-label">Response Rate</div>
|
||
</div>
|
||
|
||
|
||
</div>
|
||
|
||
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
|
||
<div class="question-card" id="question_8">
|
||
<div class="question-header">
|
||
<div class="d-flex align-items-start">
|
||
<div class="question-number">8</div>
|
||
<div>
|
||
<h5 class="mb-1">Would you recommend the hospital to your friends and family?</h5>
|
||
<p class="text-muted mb-0 small">هل توصي بالمستشفى لأصدقائك وعائلتك؟</p>
|
||
<div class="mt-2">
|
||
<span class="badge bg-secondary">MULTIPLE_CHOICE</span>
|
||
<span class="badge bg-warning text-dark">Required</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="text-end">
|
||
<div class="stat-value score-poor">N/A</div>
|
||
<small class="text-muted">Average Score</small>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="row mt-4">
|
||
<div class="col-md-8">
|
||
<h6 class="text-muted">Choice Distribution</h6><table class="table table-sm"><thead><tr><th>Choice</th><th>Count</th><th>Percentage</th></tr></thead><tbody><tr><td>5</td><td>1</td><td>100.0%</td></tr></tbody></table>
|
||
</div>
|
||
<div class="col-md-4">
|
||
<div class="metric-grid" style="margin-top: 0;">
|
||
<div class="metric-item">
|
||
<div class="metric-value">1</div>
|
||
<div class="metric-label">Responses</div>
|
||
</div>
|
||
<div class="metric-item">
|
||
<div class="metric-value">100.0%</div>
|
||
<div class="metric-label">Response Rate</div>
|
||
</div>
|
||
|
||
|
||
</div>
|
||
|
||
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
</section>
|
||
|
||
<!-- Key Insights -->
|
||
<section id="insights" class="mb-5">
|
||
<h2 class="h4 mb-4">Key Insights & Recommendations</h2>
|
||
<div class="row">
|
||
<div class="col-md-6">
|
||
<div class="card border-0 shadow-sm">
|
||
<div class="card-header bg-white">
|
||
<h6 class="mb-0">Top Performing Questions</h6>
|
||
</div>
|
||
<div class="card-body">
|
||
<p class="text-muted">No numeric questions available.</p>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="col-md-6">
|
||
<div class="card border-0 shadow-sm">
|
||
<div class="card-header bg-white">
|
||
<h6 class="mb-0">Questions Needing Attention</h6>
|
||
</div>
|
||
<div class="card-body">
|
||
<p class="text-muted">No numeric questions available.</p>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</section>
|
||
|
||
<!-- Channel Performance -->
|
||
<section id="details" class="mb-5">
|
||
<h2 class="h4 mb-4">Channel Performance</h2>
|
||
<div class="chart-container">
|
||
<div id="channelChart" style="height: 350px;"></div>
|
||
</div>
|
||
|
||
<div class="row mt-4">
|
||
|
||
<div class="col-md-4">
|
||
<div class="card border-0 shadow-sm">
|
||
<div class="card-body text-center">
|
||
<i class="bi bi-phone fs-1 text-primary mb-3"></i>
|
||
<h5>SMS</h5>
|
||
<div class="row mt-3">
|
||
<div class="col-6">
|
||
<div class="text-muted small">Sent</div>
|
||
<div class="fw-bold">0</div>
|
||
</div>
|
||
<div class="col-6">
|
||
<div class="text-muted small">Completed</div>
|
||
<div class="fw-bold">0</div>
|
||
</div>
|
||
</div>
|
||
<div class="mt-2">
|
||
<span class="badge bg-success">0% completion</span>
|
||
</div>
|
||
<div class="mt-1">
|
||
<small class="text-muted">Avg Score: 0.0</small>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
|
||
<div class="col-md-4">
|
||
<div class="card border-0 shadow-sm">
|
||
<div class="card-body text-center">
|
||
<i class="bi bi-whatsapp fs-1 text-primary mb-3"></i>
|
||
<h5>WHATSAPP</h5>
|
||
<div class="row mt-3">
|
||
<div class="col-6">
|
||
<div class="text-muted small">Sent</div>
|
||
<div class="fw-bold">0</div>
|
||
</div>
|
||
<div class="col-6">
|
||
<div class="text-muted small">Completed</div>
|
||
<div class="fw-bold">0</div>
|
||
</div>
|
||
</div>
|
||
<div class="mt-2">
|
||
<span class="badge bg-success">0% completion</span>
|
||
</div>
|
||
<div class="mt-1">
|
||
<small class="text-muted">Avg Score: 0.0</small>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
|
||
<div class="col-md-4">
|
||
<div class="card border-0 shadow-sm">
|
||
<div class="card-body text-center">
|
||
<i class="bi bi-envelope fs-1 text-primary mb-3"></i>
|
||
<h5>EMAIL</h5>
|
||
<div class="row mt-3">
|
||
<div class="col-6">
|
||
<div class="text-muted small">Sent</div>
|
||
<div class="fw-bold">0</div>
|
||
</div>
|
||
<div class="col-6">
|
||
<div class="text-muted small">Completed</div>
|
||
<div class="fw-bold">0</div>
|
||
</div>
|
||
</div>
|
||
<div class="mt-2">
|
||
<span class="badge bg-success">0% completion</span>
|
||
</div>
|
||
<div class="mt-1">
|
||
<small class="text-muted">Avg Score: 0.0</small>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
</div>
|
||
</section>
|
||
|
||
<!-- Footer -->
|
||
<footer class="text-center text-muted py-4 border-top mt-5">
|
||
<p class="mb-0">PX360 Survey Analytics Report</p>
|
||
<small>Generated on 2026-02-08T09:35:00</small>
|
||
</footer>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<script>
|
||
|
||
// Monthly trends for survey
|
||
new ApexCharts(document.querySelector("#monthlyTrendsChart"), {
|
||
series: [
|
||
{ name: 'Average Score', type: 'line', data: [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0] },
|
||
{ name: 'Survey Count', type: 'column', data: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1] }
|
||
],
|
||
chart: {
|
||
height: 400,
|
||
type: 'line',
|
||
toolbar: { show: true }
|
||
},
|
||
stroke: { width: [3, 0] },
|
||
xaxis: { categories: ['February 2025', 'March 2025', 'April 2025', 'May 2025', 'June 2025', 'July 2025', 'August 2025', 'September 2025', 'October 2025', 'November 2025', 'December 2025', 'January 2026', 'February 2026'] },
|
||
yaxis: [
|
||
{ title: { text: 'Average Score' }, min: 0, max: 5 },
|
||
{ opposite: true, title: { text: 'Count' } }
|
||
],
|
||
colors: ['#2563eb', '#10b981'],
|
||
title: { text: 'Monthly Survey Performance' }
|
||
}).render();
|
||
|
||
|
||
// Channel performance chart
|
||
new ApexCharts(document.querySelector("#channelChart"), {
|
||
series: [
|
||
{ name: 'Completion Rate (%)', data: [0, 0, 0] },
|
||
{ name: 'Average Score', data: [0.0, 0.0, 0.0] }
|
||
],
|
||
chart: {
|
||
type: 'bar',
|
||
height: 350
|
||
},
|
||
xaxis: { categories: ['sms', 'whatsapp', 'email'] },
|
||
colors: ['#2563eb', '#10b981'],
|
||
title: { text: 'Performance by Channel' }
|
||
}).render();
|
||
|
||
|
||
// Smooth scroll for navigation
|
||
document.querySelectorAll('a[href^="#"]').forEach(anchor => {
|
||
anchor.addEventListener('click', function (e) {
|
||
e.preventDefault();
|
||
document.querySelector(this.getAttribute('href')).scrollIntoView({
|
||
behavior: 'smooth'
|
||
});
|
||
});
|
||
});
|
||
|
||
// Highlight active section in navigation
|
||
const sections = document.querySelectorAll('section[id]');
|
||
const navLinks = document.querySelectorAll('.nav-link');
|
||
|
||
window.addEventListener('scroll', () => {
|
||
let current = '';
|
||
sections.forEach(section => {
|
||
const sectionTop = section.offsetTop;
|
||
if (scrollY >= sectionTop - 200) {
|
||
current = section.getAttribute('id');
|
||
}
|
||
});
|
||
|
||
navLinks.forEach(link => {
|
||
link.classList.remove('active');
|
||
if (link.getAttribute('href') === '#' + current) {
|
||
link.classList.add('active');
|
||
}
|
||
});
|
||
});
|
||
</script>
|
||
</body>
|
||
</html>
|