feat: introducing metrics to admin dashboard homepage (#47)

This commit is contained in:
Joel Jacob Stephen
2023-03-20 19:26:03 +05:30
committed by GitHub
parent 73a0255ae8
commit c611b39f52
3 changed files with 72 additions and 24 deletions

View File

@@ -2,62 +2,87 @@
<div class="sm:px-6 p-4">
<h3 class="text-3xl font-bold text-gray-200 mb-6">Dashboard</h3>
<div class="mt-4">
<div class="grid md:grid-cols-2 lg:grid-cols-4 gap-6">
<div v-if="fetching" class="flex justify-center">
<HoppSmartSpinner />
</div>
<div v-else-if="error">
<p class="text-xl">No Metrics Found..</p>
</div>
<div v-else class="mt-4">
<div class="grid lg:grid-cols-2 gap-6">
<div class="w-full">
<div
class="flex items-center px-5 py-6 bg-zinc-800 rounded-md shadow-sm"
class="flex items-center px-15 py-6 bg-primaryLight rounded-md shadow-sm h-50"
>
<icon-lucide-user-cog class="text-2xl text-emerald-500" />
<icon-lucide-user-cog class="text-5xl text-emerald-500" />
<div class="mx-5">
<h4 class="text-2xl font-semibold text-gray-200">1000</h4>
<div class="text-gray-400">Total Users</div>
<div class="mx-10">
<h4 class="text-4xl font-semibold text-gray-200">
{{ metrics?.usersCount }}
</h4>
<div class="text-gray-400 font-bold text-xl">Total Users</div>
</div>
</div>
</div>
<div class="w-full">
<div
class="flex items-center px-5 py-6 bg-zinc-800 rounded-md shadow-sm"
class="flex items-center px-15 py-6 bg-primaryLight rounded-md shadow-sm h-50"
>
<icon-lucide-users class="text-2xl text-pink-400" />
<icon-lucide-users class="text-5xl text-pink-400" />
<div class="mx-5">
<h4 class="text-2xl font-semibold text-gray-200">200</h4>
<div class="text-gray-400">Total Teams</div>
<div class="mx-10">
<h4 class="text-4xl font-semibold text-gray-200">
{{ metrics?.teamsCount }}
</h4>
<div class="text-gray-400 font-bold text-xl">Total Teams</div>
</div>
</div>
</div>
<div class="w-full">
<div
class="flex items-center px-5 py-6 bg-zinc-800 rounded-md shadow-sm"
class="flex items-center px-15 py-6 bg-primaryLight rounded-md shadow-sm h-50"
>
<icon-lucide-line-chart class="text-2xl text-cyan-400" />
<icon-lucide-line-chart class="text-5xl text-cyan-400" />
<div class="mx-5">
<h4 class="text-2xl font-semibold text-gray-200">20</h4>
<div class="text-gray-400">Total Requests</div>
<div class="mx-10">
<h4 class="text-4xl font-semibold text-gray-200">
{{ metrics?.teamRequestsCount }}
</h4>
<div class="text-gray-400 font-bold text-xl">Total Requests</div>
</div>
</div>
</div>
<div class="w-full">
<div
class="flex items-center px-5 py-6 bg-zinc-800 rounded-md shadow-sm"
class="flex items-center px-15 py-6 bg-primaryLight rounded-md shadow-sm h-50"
>
<icon-lucide-folder-tree class="text-2xl text-orange-400" />
<icon-lucide-folder-tree class="text-5xl text-orange-400" />
<div class="mx-5">
<h4 class="text-2xl font-semibold text-gray-200">215</h4>
<div class="text-gray-400">Total Collections</div>
<div class="mx-10">
<h4 class="text-4xl font-semibold text-gray-200">
{{ metrics?.teamCollectionsCount }}
</h4>
<div class="text-gray-400 font-bold text-xl">
Total Collections
</div>
</div>
</div>
</div>
</div>
</div>
<div class="mt-8"></div>
</div>
</template>
<script setup lang="ts">
import { computed } from 'vue';
import { useQuery } from '@urql/vue';
import { MetricsDocument } from '../helpers/backend/graphql';
// Get Metrics Data
const { fetching, error, data } = useQuery({ query: MetricsDocument });
const metrics = computed(() => data?.value?.admin);
</script>