change admin panel

This commit is contained in:
Emily
2025-01-03 15:39:40 +01:00
parent fb31fdcfff
commit 617de36fec

View File

@@ -5,6 +5,10 @@ import type { AdminProjectsList } from '~/server/api/admin/projects';
definePageMeta({ layout: 'dashboard' }); definePageMeta({ layout: 'dashboard' });
const filterPremium = ref<boolean>(false);
const filterAppsumo = ref<boolean>(false);
const timeRange = ref<number>(9); const timeRange = ref<number>(9);
@@ -30,8 +34,52 @@ function onHideClicked() {
} }
function isAppsumoType(type: number) {
return type > 6000 && type < 6004
}
const projectsAggregated = computed(() => { const projectsAggregated = computed(() => {
return projectsAggregatedResponseData.value?.sort((a, b) => {
let pool = projectsAggregatedResponseData.value ? [...projectsAggregatedResponseData.value] : [];
let shownPool: AdminProjectsList[] = [];
for (const element of pool) {
shownPool.push({ ...element, projects: [...element.projects] });
if (filterAppsumo.value === true) {
shownPool.forEach(e => {
e.projects = e.projects.filter(project => {
return isAppsumoType(project.premium_type)
})
})
shownPool = shownPool.filter(e => {
return e.projects.length > 0;
})
} else if (filterPremium.value === true) {
shownPool.forEach(e => {
e.projects = e.projects.filter(project => {
return project.premium === true;
})
})
shownPool = shownPool.filter(e => {
return e.projects.length > 0;
})
} else {
console.log('NO DATA')
}
}
return shownPool.sort((a, b) => {
const sumVisitsA = a.projects.reduce((pa, pe) => pa + (pe.counts?.visits || 0) + (pe.counts?.events || 0), 0); const sumVisitsA = a.projects.reduce((pa, pe) => pa + (pe.counts?.visits || 0) + (pe.counts?.events || 0), 0);
const sumVisitsB = b.projects.reduce((pa, pe) => pa + (pe.counts?.visits || 0) + (pe.counts?.events || 0), 0); const sumVisitsB = b.projects.reduce((pa, pe) => pa + (pe.counts?.visits || 0) + (pe.counts?.events || 0), 0);
return sumVisitsB - sumVisitsA; return sumVisitsB - sumVisitsA;
@@ -117,7 +165,6 @@ function getLogBg(last_logged_at?: string) {
} }
</script> </script>
@@ -150,6 +197,11 @@ function getLogBg(last_logged_at?: string) {
<div :class="{ 'text-red-200': timeRange == 9 }" @click="setTimeRange(9)"> All </div> <div :class="{ 'text-red-200': timeRange == 9 }" @click="setTimeRange(9)"> All </div>
</Card> </Card>
<Card class="p-2 flex gap-10 items-center justify-center">
<UCheckbox v-model="filterPremium" label="Filter Premium"></UCheckbox>
<UCheckbox v-model="filterAppsumo" label="Filter Appsumo"></UCheckbox>
</Card>
<Card class="p-4"> <Card class="p-4">
<div class="grid grid-cols-2 gap-1"> <div class="grid grid-cols-2 gap-1">
@@ -185,8 +237,9 @@ function getLogBg(last_logged_at?: string) {
<div class="flex justify-evenly flex-col lg:grid lg:grid-cols-3 gap-2 lg:gap-4"> <div class="flex justify-evenly flex-col lg:grid lg:grid-cols-3 gap-2 lg:gap-4">
<div v-for="project of item.projects" <div v-for="project of item.projects" :class="{
class="flex relative flex-col items-center bg-bg p-6 rounded-xl"> 'outline outline-[2px] outline-yellow-400': isAppsumoType(project.premium_type)
}" class="flex relative flex-col items-center bg-bg p-6 rounded-xl">
<div class="absolute left-2 top-2 flex items-center gap-2"> <div class="absolute left-2 top-2 flex items-center gap-2">
<div :class="getLogBg(project?.counts?.updated_at)" class="h-3 w-3 rounded-full"> </div> <div :class="getLogBg(project?.counts?.updated_at)" class="h-3 w-3 rounded-full"> </div>
@@ -194,7 +247,9 @@ function getLogBg(last_logged_at?: string) {
</div> </div>
<div class="flex gap-4"> <div class="flex gap-4">
<div class="font-bold"> {{ project.premium ? 'PREMIUM' : 'FREE' }} </div> <div class="font-bold">
{{ project.premium ? 'PREMIUM' : 'FREE' }}
</div>
<div class="text-text-sub/90"> <div class="text-text-sub/90">
{{ new Date(project.created_at).toLocaleDateString('it-IT') }} {{ new Date(project.created_at).toLocaleDateString('it-IT') }}
</div> </div>