CSV Import is now working

This commit is contained in:
Mann Patel
2025-09-03 14:35:47 -06:00
parent 7f2b7e481a
commit 86d733e80e
20 changed files with 2160 additions and 1626 deletions

View File

@@ -8,11 +8,20 @@
class="w-full lg:w-1/2 flex flex-col gap-4 sm:gap-6 sticky top-0 self-start h-fit"
>
<!-- Today's Overview -->
<div class="bg-white border-b border-gray-200">
<div class="px-4 sm:px-6 py-4">
<h3 class="text-sm font-semibold text-gray-900 mb-4">
<div class="bg-white border-b border-gray-200" x-data="{ open: true }">
<div
class="px-4 sm:px-6 py-4 flex justify-between items-center cursor-pointer"
@click="open = !open"
>
<h3 class="text-sm font-semibold text-gray-900">
Today's Overview
</h3>
<i
class="fas"
:class="open ? 'fa-chevron-up' : 'fa-chevron-down'"
></i>
</div>
<div class="px-4 sm:px-6 pb-4" x-show="open" x-collapse>
<div class="space-y-4">
<div class="flex items-center justify-between">
<div class="flex items-center gap-3">
@@ -23,9 +32,9 @@
</div>
<span class="text-sm text-gray-700">Appointments Today</span>
</div>
<span class="text-lg font-semibold text-gray-900">
{{ .Statistics.AppointmentsToday }}
</span>
<span class="text-lg font-semibold text-gray-900"
>{{ .Statistics.AppointmentsToday }}</span
>
</div>
<div class="flex items-center justify-between">
@@ -39,9 +48,9 @@
>Appointments Tomorrow</span
>
</div>
<span class="text-lg font-semibold text-gray-900">
{{ .Statistics.AppointmentsTomorrow }}
</span>
<span class="text-lg font-semibold text-gray-900"
>{{ .Statistics.AppointmentsTomorrow }}</span
>
</div>
<div class="flex items-center justify-between">
@@ -53,20 +62,29 @@
</div>
<span class="text-sm text-gray-700">This Week</span>
</div>
<span class="text-lg font-semibold text-gray-900">
{{ .Statistics.AppointmentsThisWeek }}
</span>
<span class="text-lg font-semibold text-gray-900"
>{{ .Statistics.AppointmentsThisWeek }}</span
>
</div>
</div>
</div>
</div>
<!-- Polling Progress -->
<div class="bg-white border-b border-gray-200">
<div class="px-4 sm:px-6 py-4">
<h3 class="text-sm font-semibold text-gray-900 mb-4">
<div class="bg-white border-b border-gray-200" x-data="{ open: true }">
<div
class="px-4 sm:px-6 py-4 flex justify-between items-center cursor-pointer"
@click="open = !open"
>
<h3 class="text-sm font-semibold text-gray-900">
Polling Progress
</h3>
<i
class="fas"
:class="open ? 'fa-chevron-up' : 'fa-chevron-down'"
></i>
</div>
<div class="px-4 sm:px-6 pb-4" x-show="open" x-collapse>
<div class="space-y-4">
<div class="flex items-center justify-between">
<div class="flex items-center gap-3">
@@ -77,9 +95,9 @@
</div>
<span class="text-sm text-gray-700">Polls Completed</span>
</div>
<span class="text-lg font-semibold text-green-600">
{{ .Statistics.PollsCompleted }}
</span>
<span class="text-lg font-semibold text-green-600"
>{{ .Statistics.PollsCompleted }}</span
>
</div>
<div class="flex items-center justify-between">
@@ -91,9 +109,9 @@
</div>
<span class="text-sm text-gray-700">Polls Remaining</span>
</div>
<span class="text-lg font-semibold text-orange-600">
{{ .Statistics.PollsRemaining }}
</span>
<span class="text-lg font-semibold text-orange-600"
>{{ .Statistics.PollsRemaining }}</span
>
</div>
<!-- Progress Bar -->
@@ -117,6 +135,44 @@
</div>
</div>
</div>
<!-- Team Members -->
<div class="bg-white border-b border-gray-200" x-data="{ open: true }">
<div
class="px-4 sm:px-6 py-4 flex justify-between items-center cursor-pointer"
@click="open = !open"
>
<h3 class="text-sm font-semibold text-gray-900">Team Members</h3>
<i
class="fas"
:class="open ? 'fa-chevron-up' : 'fa-chevron-down'"
></i>
</div>
<div class="px-4 sm:px-6 pb-4" x-show="open" x-collapse>
<div class="space-y-3">
{{ range .Teammates }}
<div class="flex items-center justify-between">
<div>
<p class="text-sm font-medium text-gray-900">
{{ .FullName }} {{ if .IsLead }}
<span class="ml-2 text-xs text-blue-600 font-semibold"
>{{ .Role }}</span
>
{{ else }}
<span class="ml-2 text-xs text-gray-500">{{ .Role }}</span>
{{ end }}
</p>
</div>
<div class="text-sm text-gray-700">
<i class="fas fa-phone mr-1 text-gray-500"></i>{{ .Phone }}
</div>
</div>
{{ else }}
<p class="text-gray-500 text-sm">No teammates found</p>
{{ end }}
</div>
</div>
</div>
</div>
<!-- Right Column - Statistics -->
<div class="flex-1 lg:flex-none lg:w-1/2 overflow-y-auto pr-2">