Change api status
This commit is contained in:
@@ -13,13 +13,13 @@ export async function GET(request: Request) {
|
|||||||
const tahunAngkatan = searchParams.get('tahunAngkatan');
|
const tahunAngkatan = searchParams.get('tahunAngkatan');
|
||||||
|
|
||||||
let query = supabase
|
let query = supabase
|
||||||
.from('status_mahasiswa')
|
.from('mahasiswa')
|
||||||
.select('semester, mahasiswa!inner(tahun_angkatan, kabupaten, nim)')
|
.select('semester, tahun_angkatan, kabupaten, nim')
|
||||||
.eq('status_kuliah', 'Lulus')
|
.eq('status_kuliah', 'Lulus')
|
||||||
.lte('semester', 8);
|
.lte('semester', 8);
|
||||||
|
|
||||||
if (tahunAngkatan && tahunAngkatan !== 'all') {
|
if (tahunAngkatan && tahunAngkatan !== 'all') {
|
||||||
query = query.eq('mahasiswa.tahun_angkatan', parseInt(tahunAngkatan));
|
query = query.eq('tahun_angkatan', parseInt(tahunAngkatan));
|
||||||
}
|
}
|
||||||
|
|
||||||
const { data, error } = await query;
|
const { data, error } = await query;
|
||||||
@@ -34,8 +34,8 @@ export async function GET(request: Request) {
|
|||||||
|
|
||||||
// Group by tahun_angkatan and kabupaten
|
// Group by tahun_angkatan and kabupaten
|
||||||
const groupedData = data.reduce((acc, item: any) => {
|
const groupedData = data.reduce((acc, item: any) => {
|
||||||
const tahun_angkatan = item.mahasiswa.tahun_angkatan;
|
const tahun_angkatan = item.tahun_angkatan;
|
||||||
const kabupaten = item.mahasiswa.kabupaten;
|
const kabupaten = item.kabupaten;
|
||||||
const key = `${tahun_angkatan}-${kabupaten}`;
|
const key = `${tahun_angkatan}-${kabupaten}`;
|
||||||
acc[key] = (acc[key] || 0) + 1;
|
acc[key] = (acc[key] || 0) + 1;
|
||||||
return acc;
|
return acc;
|
||||||
|
|||||||
@@ -15,12 +15,12 @@ export async function GET(request: Request) {
|
|||||||
|
|
||||||
try {
|
try {
|
||||||
let query = supabase
|
let query = supabase
|
||||||
.from('status_mahasiswa')
|
.from('mahasiswa')
|
||||||
.select('status_kuliah, mahasiswa!inner(kabupaten, tahun_angkatan, nim)')
|
.select('status_kuliah, kabupaten, tahun_angkatan, nim')
|
||||||
.eq('status_kuliah', statusKuliah);
|
.eq('status_kuliah', statusKuliah);
|
||||||
|
|
||||||
if (tahunAngkatan && tahunAngkatan !== 'all') {
|
if (tahunAngkatan && tahunAngkatan !== 'all') {
|
||||||
query = query.eq('mahasiswa.tahun_angkatan', parseInt(tahunAngkatan));
|
query = query.eq('tahun_angkatan', parseInt(tahunAngkatan));
|
||||||
}
|
}
|
||||||
|
|
||||||
const { data, error } = await query;
|
const { data, error } = await query;
|
||||||
@@ -43,8 +43,8 @@ export async function GET(request: Request) {
|
|||||||
|
|
||||||
// Group by kabupaten, tahun_angkatan (optional), status_kuliah
|
// Group by kabupaten, tahun_angkatan (optional), status_kuliah
|
||||||
const groupedData = data.reduce((acc, item: any) => {
|
const groupedData = data.reduce((acc, item: any) => {
|
||||||
const kabupaten = item.mahasiswa.kabupaten;
|
const kabupaten = item.kabupaten;
|
||||||
const tahun_angkatan = tahunAngkatan && tahunAngkatan !== 'all' ? item.mahasiswa.tahun_angkatan : undefined;
|
const tahun_angkatan = tahunAngkatan && tahunAngkatan !== 'all' ? item.tahun_angkatan : undefined;
|
||||||
const status_kuliah = item.status_kuliah;
|
const status_kuliah = item.status_kuliah;
|
||||||
const key = tahun_angkatan !== undefined
|
const key = tahun_angkatan !== undefined
|
||||||
? `${kabupaten}-${tahun_angkatan}-${status_kuliah}`
|
? `${kabupaten}-${tahun_angkatan}-${status_kuliah}`
|
||||||
@@ -108,4 +108,4 @@ export async function GET(request: Request) {
|
|||||||
}
|
}
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -12,14 +12,14 @@ export async function GET(request: Request) {
|
|||||||
const tahunAngkatan = searchParams.get('tahunAngkatan');
|
const tahunAngkatan = searchParams.get('tahunAngkatan');
|
||||||
|
|
||||||
let query = supabase
|
let query = supabase
|
||||||
.from('status_mahasiswa')
|
.from('mahasiswa')
|
||||||
.select('semester, mahasiswa!inner(tahun_angkatan, ipk)')
|
.select('semester, tahun_angkatan, ipk')
|
||||||
.eq('status_kuliah', 'Lulus')
|
.eq('status_kuliah', 'Lulus')
|
||||||
.lte('semester', 8)
|
.lte('semester', 8)
|
||||||
.not('mahasiswa.ipk', 'is', null);
|
.not('ipk', 'is', null);
|
||||||
|
|
||||||
if (tahunAngkatan && tahunAngkatan !== 'all') {
|
if (tahunAngkatan && tahunAngkatan !== 'all') {
|
||||||
query = query.eq('mahasiswa.tahun_angkatan', parseInt(tahunAngkatan));
|
query = query.eq('tahun_angkatan', parseInt(tahunAngkatan));
|
||||||
}
|
}
|
||||||
|
|
||||||
const { data, error } = await query;
|
const { data, error } = await query;
|
||||||
@@ -34,8 +34,8 @@ export async function GET(request: Request) {
|
|||||||
|
|
||||||
// Group by tahun_angkatan and calculate average IPK
|
// Group by tahun_angkatan and calculate average IPK
|
||||||
const groupedData = data.reduce((acc, item: any) => {
|
const groupedData = data.reduce((acc, item: any) => {
|
||||||
const tahun_angkatan = item.mahasiswa.tahun_angkatan;
|
const tahun_angkatan = item.tahun_angkatan;
|
||||||
const ipk = item.mahasiswa.ipk;
|
const ipk = item.ipk;
|
||||||
|
|
||||||
if (!acc[tahun_angkatan]) {
|
if (!acc[tahun_angkatan]) {
|
||||||
acc[tahun_angkatan] = {
|
acc[tahun_angkatan] = {
|
||||||
|
|||||||
@@ -23,13 +23,13 @@ export async function GET(request: Request) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
let query = supabase
|
let query = supabase
|
||||||
.from('status_mahasiswa')
|
.from('mahasiswa')
|
||||||
.select('status_kuliah, mahasiswa!inner(tahun_angkatan, ipk, nim)')
|
.select('tahun_angkatan, ipk, nim')
|
||||||
.eq('status_kuliah', statusKuliah)
|
.eq('status_kuliah', statusKuliah)
|
||||||
.not('mahasiswa.ipk', 'is', null);
|
.not('ipk', 'is', null);
|
||||||
|
|
||||||
if (tahunAngkatan && tahunAngkatan !== 'all') {
|
if (tahunAngkatan && tahunAngkatan !== 'all') {
|
||||||
query = query.eq('mahasiswa.tahun_angkatan', parseInt(tahunAngkatan));
|
query = query.eq('tahun_angkatan', parseInt(tahunAngkatan));
|
||||||
}
|
}
|
||||||
|
|
||||||
const { data, error } = await query;
|
const { data, error } = await query;
|
||||||
@@ -44,9 +44,9 @@ export async function GET(request: Request) {
|
|||||||
|
|
||||||
// Group by tahun_angkatan and status_kuliah
|
// Group by tahun_angkatan and status_kuliah
|
||||||
const groupedData = data.reduce((acc, item: any) => {
|
const groupedData = data.reduce((acc, item: any) => {
|
||||||
const tahun_angkatan = item.mahasiswa.tahun_angkatan;
|
const tahun_angkatan = item.tahun_angkatan;
|
||||||
const status_kuliah = item.status_kuliah;
|
const status_kuliah = item.status_kuliah;
|
||||||
const ipk = item.mahasiswa.ipk;
|
const ipk = item.ipk;
|
||||||
const key = `${tahun_angkatan}-${status_kuliah}`;
|
const key = `${tahun_angkatan}-${status_kuliah}`;
|
||||||
|
|
||||||
if (!acc[key]) {
|
if (!acc[key]) {
|
||||||
|
|||||||
@@ -13,13 +13,13 @@ export async function GET(request: Request) {
|
|||||||
const tahunAngkatan = searchParams.get('tahun_angkatan');
|
const tahunAngkatan = searchParams.get('tahun_angkatan');
|
||||||
|
|
||||||
let query = supabase
|
let query = supabase
|
||||||
.from('status_mahasiswa')
|
.from('mahasiswa')
|
||||||
.select('semester, mahasiswa!inner(tahun_angkatan, jenis_pendaftaran, nim)')
|
.select('semester, tahun_angkatan, jenis_pendaftaran, nim')
|
||||||
.eq('status_kuliah', 'Lulus')
|
.eq('status_kuliah', 'Lulus')
|
||||||
.lte('semester', 8);
|
.lte('semester', 8);
|
||||||
|
|
||||||
if (tahunAngkatan && tahunAngkatan !== 'all') {
|
if (tahunAngkatan && tahunAngkatan !== 'all') {
|
||||||
query = query.eq('mahasiswa.tahun_angkatan', parseInt(tahunAngkatan));
|
query = query.eq('tahun_angkatan', parseInt(tahunAngkatan));
|
||||||
}
|
}
|
||||||
|
|
||||||
const { data, error } = await query;
|
const { data, error } = await query;
|
||||||
@@ -34,8 +34,8 @@ export async function GET(request: Request) {
|
|||||||
|
|
||||||
// Group by tahun_angkatan and jenis_pendaftaran
|
// Group by tahun_angkatan and jenis_pendaftaran
|
||||||
const groupedData = data.reduce((acc, item: any) => {
|
const groupedData = data.reduce((acc, item: any) => {
|
||||||
const tahun_angkatan = item.mahasiswa.tahun_angkatan;
|
const tahun_angkatan = item.tahun_angkatan;
|
||||||
const jenis_pendaftaran = item.mahasiswa.jenis_pendaftaran;
|
const jenis_pendaftaran = item.jenis_pendaftaran;
|
||||||
const key = `${tahun_angkatan}-${jenis_pendaftaran}`;
|
const key = `${tahun_angkatan}-${jenis_pendaftaran}`;
|
||||||
acc[key] = (acc[key] || 0) + 1;
|
acc[key] = (acc[key] || 0) + 1;
|
||||||
return acc;
|
return acc;
|
||||||
|
|||||||
@@ -15,12 +15,12 @@ export async function GET(request: Request) {
|
|||||||
|
|
||||||
try {
|
try {
|
||||||
let query = supabase
|
let query = supabase
|
||||||
.from('status_mahasiswa')
|
.from('mahasiswa')
|
||||||
.select('status_kuliah, mahasiswa!inner(jenis_pendaftaran, tahun_angkatan, nim)')
|
.select('status_kuliah, jenis_pendaftaran, tahun_angkatan, nim')
|
||||||
.eq('status_kuliah', statusKuliah);
|
.eq('status_kuliah', statusKuliah);
|
||||||
|
|
||||||
if (tahunAngkatan && tahunAngkatan !== 'all') {
|
if (tahunAngkatan && tahunAngkatan !== 'all') {
|
||||||
query = query.eq('mahasiswa.tahun_angkatan', parseInt(tahunAngkatan));
|
query = query.eq('tahun_angkatan', parseInt(tahunAngkatan));
|
||||||
}
|
}
|
||||||
|
|
||||||
const { data, error } = await query;
|
const { data, error } = await query;
|
||||||
@@ -43,8 +43,8 @@ export async function GET(request: Request) {
|
|||||||
|
|
||||||
// Group by jenis_pendaftaran, tahun_angkatan, status_kuliah
|
// Group by jenis_pendaftaran, tahun_angkatan, status_kuliah
|
||||||
const groupedData = data.reduce((acc, item: any) => {
|
const groupedData = data.reduce((acc, item: any) => {
|
||||||
const jenis_pendaftaran = item.mahasiswa.jenis_pendaftaran;
|
const jenis_pendaftaran = item.jenis_pendaftaran;
|
||||||
const tahun_angkatan = item.mahasiswa.tahun_angkatan;
|
const tahun_angkatan = item.tahun_angkatan;
|
||||||
const status_kuliah = item.status_kuliah;
|
const status_kuliah = item.status_kuliah;
|
||||||
const key = `${jenis_pendaftaran}-${tahun_angkatan}-${status_kuliah}`;
|
const key = `${jenis_pendaftaran}-${tahun_angkatan}-${status_kuliah}`;
|
||||||
acc[key] = (acc[key] || 0) + 1;
|
acc[key] = (acc[key] || 0) + 1;
|
||||||
|
|||||||
@@ -13,13 +13,13 @@ export async function GET(request: Request) {
|
|||||||
const tahunAngkatan = searchParams.get('tahun_angkatan');
|
const tahunAngkatan = searchParams.get('tahun_angkatan');
|
||||||
|
|
||||||
let query = supabase
|
let query = supabase
|
||||||
.from('status_mahasiswa')
|
.from('mahasiswa')
|
||||||
.select('semester, mahasiswa!inner(tahun_angkatan, jk, nim)')
|
.select('semester, tahun_angkatan, jk, nim')
|
||||||
.eq('status_kuliah', 'Lulus')
|
.eq('status_kuliah', 'Lulus')
|
||||||
.lte('semester', 8);
|
.lte('semester', 8);
|
||||||
|
|
||||||
if (tahunAngkatan && tahunAngkatan !== 'all') {
|
if (tahunAngkatan && tahunAngkatan !== 'all') {
|
||||||
query = query.eq('mahasiswa.tahun_angkatan', parseInt(tahunAngkatan));
|
query = query.eq('tahun_angkatan', parseInt(tahunAngkatan));
|
||||||
}
|
}
|
||||||
|
|
||||||
const { data, error } = await query;
|
const { data, error } = await query;
|
||||||
@@ -34,8 +34,8 @@ export async function GET(request: Request) {
|
|||||||
|
|
||||||
// Group by tahun_angkatan and jk
|
// Group by tahun_angkatan and jk
|
||||||
const groupedData = data.reduce((acc, item: any) => {
|
const groupedData = data.reduce((acc, item: any) => {
|
||||||
const tahun_angkatan = item.mahasiswa.tahun_angkatan;
|
const tahun_angkatan = item.tahun_angkatan;
|
||||||
const jk = item.mahasiswa.jk;
|
const jk = item.jk;
|
||||||
const key = `${tahun_angkatan}-${jk}`;
|
const key = `${tahun_angkatan}-${jk}`;
|
||||||
acc[key] = (acc[key] || 0) + 1;
|
acc[key] = (acc[key] || 0) + 1;
|
||||||
return acc;
|
return acc;
|
||||||
|
|||||||
@@ -14,13 +14,8 @@ export async function GET(request: Request) {
|
|||||||
|
|
||||||
let query = supabase
|
let query = supabase
|
||||||
.from('mahasiswa')
|
.from('mahasiswa')
|
||||||
.select(`
|
.select('tahun_angkatan, status_kuliah')
|
||||||
tahun_angkatan,
|
.in('status_kuliah', ['Lulus', 'Cuti', 'Aktif', 'DO']);
|
||||||
status_mahasiswa!inner(
|
|
||||||
status_kuliah
|
|
||||||
)
|
|
||||||
`)
|
|
||||||
.in('status_mahasiswa.status_kuliah', ['Lulus', 'Cuti', 'Aktif', 'DO']);
|
|
||||||
|
|
||||||
if (tahunAngkatan && tahunAngkatan !== 'all') {
|
if (tahunAngkatan && tahunAngkatan !== 'all') {
|
||||||
query = query.eq('tahun_angkatan', tahunAngkatan);
|
query = query.eq('tahun_angkatan', tahunAngkatan);
|
||||||
@@ -46,7 +41,7 @@ export async function GET(request: Request) {
|
|||||||
// Group and count the data in JavaScript
|
// Group and count the data in JavaScript
|
||||||
const groupedData = data.reduce((acc: any[], row: any) => {
|
const groupedData = data.reduce((acc: any[], row: any) => {
|
||||||
const tahunAngkatanValue = row.tahun_angkatan;
|
const tahunAngkatanValue = row.tahun_angkatan;
|
||||||
const statusKuliah = row.status_mahasiswa?.status_kuliah;
|
const statusKuliah = row.status_kuliah;
|
||||||
|
|
||||||
if (!tahunAngkatanValue || !statusKuliah) return acc;
|
if (!tahunAngkatanValue || !statusKuliah) return acc;
|
||||||
|
|
||||||
|
|||||||
@@ -14,12 +14,12 @@ export async function GET(request: Request) {
|
|||||||
|
|
||||||
try {
|
try {
|
||||||
let query = supabase
|
let query = supabase
|
||||||
.from('status_mahasiswa')
|
.from('mahasiswa')
|
||||||
.select('status_kuliah, mahasiswa!inner(tahun_angkatan, jk)')
|
.select('tahun_angkatan, jk')
|
||||||
.eq('status_kuliah', statusKuliah);
|
.eq('status_kuliah', statusKuliah);
|
||||||
|
|
||||||
if (tahunAngkatan && tahunAngkatan !== 'all') {
|
if (tahunAngkatan && tahunAngkatan !== 'all') {
|
||||||
query = query.eq('mahasiswa.tahun_angkatan', parseInt(tahunAngkatan));
|
query = query.eq('tahun_angkatan', parseInt(tahunAngkatan));
|
||||||
}
|
}
|
||||||
|
|
||||||
const { data, error } = await query;
|
const { data, error } = await query;
|
||||||
@@ -41,8 +41,8 @@ export async function GET(request: Request) {
|
|||||||
|
|
||||||
// Group by tahun_angkatan and jk
|
// Group by tahun_angkatan and jk
|
||||||
const groupedData = data.reduce((acc, item: any) => {
|
const groupedData = data.reduce((acc, item: any) => {
|
||||||
const tahun_angkatan = item.mahasiswa.tahun_angkatan;
|
const tahun_angkatan = item.tahun_angkatan;
|
||||||
const jk = item.mahasiswa.jk;
|
const jk = item.jk;
|
||||||
const key = `${tahun_angkatan}-${jk}`;
|
const key = `${tahun_angkatan}-${jk}`;
|
||||||
acc[key] = (acc[key] || 0) + 1;
|
acc[key] = (acc[key] || 0) + 1;
|
||||||
return acc;
|
return acc;
|
||||||
|
|||||||
@@ -10,8 +10,8 @@ interface StatusData {
|
|||||||
export async function GET() {
|
export async function GET() {
|
||||||
try {
|
try {
|
||||||
const { data, error } = await supabase
|
const { data, error } = await supabase
|
||||||
.from('status_mahasiswa')
|
.from('mahasiswa')
|
||||||
.select('status_kuliah, mahasiswa!inner(tahun_angkatan)')
|
.select('status_kuliah, tahun_angkatan')
|
||||||
.in('status_kuliah', ['Lulus', 'Cuti', 'Aktif', 'DO']);
|
.in('status_kuliah', ['Lulus', 'Cuti', 'Aktif', 'DO']);
|
||||||
|
|
||||||
if (error) {
|
if (error) {
|
||||||
@@ -24,7 +24,7 @@ export async function GET() {
|
|||||||
|
|
||||||
// Group by tahun_angkatan and status_kuliah
|
// Group by tahun_angkatan and status_kuliah
|
||||||
const groupedData = data.reduce((acc, item: any) => {
|
const groupedData = data.reduce((acc, item: any) => {
|
||||||
const tahun_angkatan = item.mahasiswa.tahun_angkatan;
|
const tahun_angkatan = item.tahun_angkatan;
|
||||||
const status_kuliah = item.status_kuliah;
|
const status_kuliah = item.status_kuliah;
|
||||||
const key = `${tahun_angkatan}-${status_kuliah}`;
|
const key = `${tahun_angkatan}-${status_kuliah}`;
|
||||||
acc[key] = (acc[key] || 0) + 1;
|
acc[key] = (acc[key] || 0) + 1;
|
||||||
|
|||||||
@@ -30,8 +30,6 @@ export async function GET() {
|
|||||||
.sort((a, b) => b - a) // Sort descending
|
.sort((a, b) => b - a) // Sort descending
|
||||||
.slice(0, 7); // Take only 7 most recent years
|
.slice(0, 7); // Take only 7 most recent years
|
||||||
|
|
||||||
console.log('Available years:', uniqueYears); // Debug log
|
|
||||||
|
|
||||||
return NextResponse.json(uniqueYears, {
|
return NextResponse.json(uniqueYears, {
|
||||||
headers: {
|
headers: {
|
||||||
'Cache-Control': 'public, max-age=60, stale-while-revalidate=30',
|
'Cache-Control': 'public, max-age=60, stale-while-revalidate=30',
|
||||||
|
|||||||
@@ -44,29 +44,29 @@ export async function GET() {
|
|||||||
|
|
||||||
// Get mahasiswa aktif
|
// Get mahasiswa aktif
|
||||||
const { count: mahasiswaAktif } = await supabase
|
const { count: mahasiswaAktif } = await supabase
|
||||||
.from('status_mahasiswa')
|
.from('mahasiswa')
|
||||||
.select('nim', { count: 'exact', head: true })
|
.select('*', { count: 'exact', head: true })
|
||||||
.eq('status_kuliah', 'Aktif');
|
.eq('status_kuliah', 'Aktif');
|
||||||
|
|
||||||
// Get total lulus
|
// Get total lulus
|
||||||
const { count: totalLulus } = await supabase
|
const { count: totalLulus } = await supabase
|
||||||
.from('status_mahasiswa')
|
.from('mahasiswa')
|
||||||
.select('nim', { count: 'exact', head: true })
|
.select('*', { count: 'exact', head: true })
|
||||||
.eq('status_kuliah', 'Lulus');
|
.eq('status_kuliah', 'Lulus');
|
||||||
|
|
||||||
// Get pria lulus
|
// Get pria lulus
|
||||||
const { count: priaLulus } = await supabase
|
const { count: priaLulus } = await supabase
|
||||||
.from('status_mahasiswa')
|
.from('mahasiswa')
|
||||||
.select('nim, mahasiswa!inner(jk)', { count: 'exact', head: true })
|
.select('*', { count: 'exact', head: true })
|
||||||
.eq('status_kuliah', 'Lulus')
|
.eq('status_kuliah', 'Lulus')
|
||||||
.eq('mahasiswa.jk', 'Pria');
|
.eq('jk', 'Pria');
|
||||||
|
|
||||||
// Get wanita lulus
|
// Get wanita lulus
|
||||||
const { count: wanitaLulus } = await supabase
|
const { count: wanitaLulus } = await supabase
|
||||||
.from('status_mahasiswa')
|
.from('mahasiswa')
|
||||||
.select('nim, mahasiswa!inner(jk)', { count: 'exact', head: true })
|
.select('*', { count: 'exact', head: true })
|
||||||
.eq('status_kuliah', 'Lulus')
|
.eq('status_kuliah', 'Lulus')
|
||||||
.eq('mahasiswa.jk', 'Wanita');
|
.eq('jk', 'Wanita');
|
||||||
|
|
||||||
// Get total berprestasi
|
// Get total berprestasi
|
||||||
const { count: totalBerprestasi } = await supabase
|
const { count: totalBerprestasi } = await supabase
|
||||||
@@ -87,30 +87,30 @@ export async function GET() {
|
|||||||
|
|
||||||
// Get total mahasiswa aktif + lulus
|
// Get total mahasiswa aktif + lulus
|
||||||
const { count: totalMahasiswaAktifLulus } = await supabase
|
const { count: totalMahasiswaAktifLulus } = await supabase
|
||||||
.from('status_mahasiswa')
|
.from('mahasiswa')
|
||||||
.select('nim', { count: 'exact', head: true })
|
.select('*', { count: 'exact', head: true })
|
||||||
.in('status_kuliah', ['Aktif', 'Lulus']);
|
.in('status_kuliah', ['Aktif', 'Lulus']);
|
||||||
|
|
||||||
// Get IPK rata-rata aktif
|
// Get IPK rata-rata aktif
|
||||||
const { data: ipkAktifData } = await supabase
|
const { data: ipkAktifData } = await supabase
|
||||||
.from('status_mahasiswa')
|
.from('mahasiswa')
|
||||||
.select('nim, mahasiswa!inner(ipk)')
|
.select('ipk')
|
||||||
.eq('status_kuliah', 'Aktif')
|
.eq('status_kuliah', 'Aktif')
|
||||||
.not('mahasiswa.ipk', 'is', null);
|
.not('ipk', 'is', null);
|
||||||
|
|
||||||
const ipkRataRataAktif = ipkAktifData && ipkAktifData.length > 0
|
const ipkRataRataAktif = ipkAktifData && ipkAktifData.length > 0
|
||||||
? Math.round((ipkAktifData.reduce((sum, item: any) => sum + (item.mahasiswa.ipk || 0), 0) / ipkAktifData.length) * 100) / 100
|
? Math.round((ipkAktifData.reduce((sum, item: any) => sum + (item.ipk || 0), 0) / ipkAktifData.length) * 100) / 100
|
||||||
: 0;
|
: 0;
|
||||||
|
|
||||||
// Get IPK rata-rata lulus
|
// Get IPK rata-rata lulus
|
||||||
const { data: ipkLulusData } = await supabase
|
const { data: ipkLulusData } = await supabase
|
||||||
.from('status_mahasiswa')
|
.from('mahasiswa')
|
||||||
.select('nim, mahasiswa!inner(ipk)')
|
.select('ipk')
|
||||||
.eq('status_kuliah', 'Lulus')
|
.eq('status_kuliah', 'Lulus')
|
||||||
.not('mahasiswa.ipk', 'is', null);
|
.not('ipk', 'is', null);
|
||||||
|
|
||||||
const ipkRataRataLulus = ipkLulusData && ipkLulusData.length > 0
|
const ipkRataRataLulus = ipkLulusData && ipkLulusData.length > 0
|
||||||
? Math.round((ipkLulusData.reduce((sum, item: any) => sum + (item.mahasiswa.ipk || 0), 0) / ipkLulusData.length) * 100) / 100
|
? Math.round((ipkLulusData.reduce((sum, item: any) => sum + (item.ipk || 0), 0) / ipkLulusData.length) * 100) / 100
|
||||||
: 0;
|
: 0;
|
||||||
|
|
||||||
const results: MahasiswaTotal = {
|
const results: MahasiswaTotal = {
|
||||||
|
|||||||
@@ -220,7 +220,7 @@ export default function LandingPage() {
|
|||||||
</div>
|
</div>
|
||||||
<Button type="submit" className="w-full" disabled={loading}>
|
<Button type="submit" className="w-full" disabled={loading}>
|
||||||
{loading && <Loader2 className="mr-2 h-4 w-4 animate-spin" />}
|
{loading && <Loader2 className="mr-2 h-4 w-4 animate-spin" />}
|
||||||
Login sebagai Dosen
|
Login
|
||||||
</Button>
|
</Button>
|
||||||
</form>
|
</form>
|
||||||
|
|
||||||
@@ -280,7 +280,7 @@ export default function LandingPage() {
|
|||||||
</div>
|
</div>
|
||||||
<Button type="submit" className="w-full" disabled={loading}>
|
<Button type="submit" className="w-full" disabled={loading}>
|
||||||
{loading && <Loader2 className="mr-2 h-4 w-4 animate-spin" />}
|
{loading && <Loader2 className="mr-2 h-4 w-4 animate-spin" />}
|
||||||
Login sebagai Admin
|
Login
|
||||||
</Button>
|
</Button>
|
||||||
</form>
|
</form>
|
||||||
</TabsContent>
|
</TabsContent>
|
||||||
@@ -356,7 +356,7 @@ export default function LandingPage() {
|
|||||||
</div>
|
</div>
|
||||||
<Button type="submit" className="w-full" disabled={loading}>
|
<Button type="submit" className="w-full" disabled={loading}>
|
||||||
{loading && <Loader2 className="mr-2 h-4 w-4 animate-spin" />}
|
{loading && <Loader2 className="mr-2 h-4 w-4 animate-spin" />}
|
||||||
Daftar sebagai Dosen
|
Daftar
|
||||||
</Button>
|
</Button>
|
||||||
</form>
|
</form>
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user