Deploy Laravel rebuild via Coolify
Point Docker and Coolify compose to the Laravel rebuild app so mahasiswa, dosen, and admin flows are served from the new Laravel public entrypoint.
This commit is contained in:
25
rebuild/resources/views/dosen/pages/bimbingan.blade.php
Normal file
25
rebuild/resources/views/dosen/pages/bimbingan.blade.php
Normal file
@@ -0,0 +1,25 @@
|
||||
<x-dosen.partials.page-shell :title="$title" :sidebar="$sidebar" :page-title="$pageTitle" :page-description="$pageDescription" :page-date="$pageDate" :user="$user">
|
||||
<section class="rounded-xl border border-[#E5E7EB] bg-white p-6 shadow-[0_8px_12px_rgba(13,10,44,0.04)]">
|
||||
<div class="space-y-4">
|
||||
@forelse ($bimbingan as $item)
|
||||
<article class="rounded-xl border border-[#E5E7EB] bg-[#F9FAFB] p-5">
|
||||
<div class="flex flex-col gap-4 lg:flex-row lg:items-start lg:justify-between">
|
||||
<div class="min-w-0 flex-1">
|
||||
<h3 class="break-words text-lg font-semibold leading-7 text-[#15171A]">{{ $item['judul'] }}</h3>
|
||||
<div class="mt-3 grid gap-2 text-sm text-[#6B7280] sm:grid-cols-2 xl:grid-cols-3">
|
||||
<span class="break-words">{{ $item['mahasiswa'] }}</span>
|
||||
<span>{{ $item['periode'] }}</span>
|
||||
<span>{{ $item['tanggal'] }}</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="shrink-0">
|
||||
<a href="{{ $item['reviewHref'] }}" class="inline-flex rounded-md border border-[#D1D5DB] bg-white px-3 py-2 text-xs font-medium text-[#15171A] hover:bg-[#F9FAFB]">Lihat Data</a>
|
||||
</div>
|
||||
</div>
|
||||
</article>
|
||||
@empty
|
||||
<div class="rounded-xl border border-dashed border-[#D1D5DB] bg-[#F9FAFB] p-6 text-center text-[#6B7280]">Belum ada data bimbingan.</div>
|
||||
@endforelse
|
||||
</div>
|
||||
</section>
|
||||
</x-dosen.partials.page-shell>
|
||||
34
rebuild/resources/views/dosen/pages/cari.blade.php
Normal file
34
rebuild/resources/views/dosen/pages/cari.blade.php
Normal file
@@ -0,0 +1,34 @@
|
||||
<x-dosen.partials.page-shell :title="$title" :sidebar="$sidebar" :page-title="$pageTitle" :page-description="$pageDescription" :page-date="$pageDate" :user="$user">
|
||||
<section class="rounded-xl border border-[#E5E7EB] bg-white p-6 shadow-[0_8px_12px_rgba(13,10,44,0.04)]">
|
||||
<form method="GET" class="grid gap-4 lg:grid-cols-[220px_minmax(0,1fr)_120px]">
|
||||
<select name="by" class="template-input">
|
||||
<option value="nim" @selected($searchBy === 'nim')>NIM</option>
|
||||
<option value="judul" @selected($searchBy === 'judul')>Judul Praoutline</option>
|
||||
<option value="dosen" @selected($searchBy === 'dosen')>Pembimbing/Penguji</option>
|
||||
</select>
|
||||
<input type="text" name="q" value="{{ $keyword }}" class="template-input" placeholder="Cari...">
|
||||
<button type="submit" class="template-button-dark">Cari</button>
|
||||
</form>
|
||||
|
||||
<div class="mt-6 space-y-4">
|
||||
@if ($keyword !== '' && $results === [])
|
||||
<div class="rounded-xl border border-dashed border-[#D1D5DB] bg-[#F9FAFB] p-6 text-center text-[#6B7280]">Tidak ada hasil untuk `{{ $keyword }}`.</div>
|
||||
@endif
|
||||
|
||||
@foreach ($results as $item)
|
||||
<article class="rounded-xl border border-[#E5E7EB] bg-[#F9FAFB] p-5">
|
||||
<h3 class="text-lg font-semibold text-[#15171A]">{{ $item['judul'] }}</h3>
|
||||
<p class="mt-2 text-sm text-[#4B5563]">{{ $item['deskripsi'] }}</p>
|
||||
<div class="mt-3 flex flex-wrap gap-3 text-sm text-[#6B7280]">
|
||||
<span>{{ $item['mahasiswa'] }}</span>
|
||||
<span>{{ $item['tanggal'] }}</span>
|
||||
<span>{{ $item['status'] }}</span>
|
||||
</div>
|
||||
<div class="mt-4">
|
||||
<a href="{{ $item['reviewHref'] }}" class="rounded-md bg-[#15171A] px-3 py-2 text-xs font-medium text-white hover:opacity-90">Buka Review</a>
|
||||
</div>
|
||||
</article>
|
||||
@endforeach
|
||||
</div>
|
||||
</section>
|
||||
</x-dosen.partials.page-shell>
|
||||
26
rebuild/resources/views/dosen/pages/daftar-usulan.blade.php
Normal file
26
rebuild/resources/views/dosen/pages/daftar-usulan.blade.php
Normal file
@@ -0,0 +1,26 @@
|
||||
<x-dosen.partials.page-shell :title="$title" :sidebar="$sidebar" :page-title="$pageTitle" :page-description="$pageDescription" :page-date="$pageDate" :user="$user">
|
||||
<section class="rounded-xl border border-[#E5E7EB] bg-white p-6 shadow-[0_8px_12px_rgba(13,10,44,0.04)]">
|
||||
<div class="space-y-4">
|
||||
@forelse ($usulan as $item)
|
||||
<article class="rounded-xl border border-[#E5E7EB] bg-[#F9FAFB] p-5">
|
||||
<div class="flex flex-wrap items-start justify-between gap-4">
|
||||
<div>
|
||||
<h3 class="text-lg font-semibold text-[#15171A]">{{ $item['judul'] }}</h3>
|
||||
<p class="mt-2 text-sm text-[#4B5563]">{{ $item['mahasiswa'] }}</p>
|
||||
<p class="mt-2 text-sm text-[#6B7280]">{{ $item['periode'] }} · {{ $item['tanggal'] }}</p>
|
||||
<div class="mt-4 flex flex-wrap gap-2">
|
||||
<a href="{{ $item['reviewHref'] }}" class="rounded-md bg-[#15171A] px-3 py-2 text-xs font-medium text-white hover:opacity-90">Review</a>
|
||||
</div>
|
||||
</div>
|
||||
<div class="text-right">
|
||||
<div class="rounded-full bg-white px-3 py-1 text-xs font-semibold text-[#15171A]">{{ $item['status'] }}</div>
|
||||
<p class="mt-3 text-sm text-[#6B7280]">KK: {{ $item['kk'] }}</p>
|
||||
</div>
|
||||
</div>
|
||||
</article>
|
||||
@empty
|
||||
<div class="rounded-xl border border-dashed border-[#D1D5DB] bg-[#F9FAFB] p-6 text-center text-[#6B7280]">Tidak ada usulan aktif.</div>
|
||||
@endforelse
|
||||
</div>
|
||||
</section>
|
||||
</x-dosen.partials.page-shell>
|
||||
70
rebuild/resources/views/dosen/pages/early-warning.blade.php
Normal file
70
rebuild/resources/views/dosen/pages/early-warning.blade.php
Normal file
@@ -0,0 +1,70 @@
|
||||
<x-dosen.partials.page-shell :title="$title" :sidebar="$sidebar" :page-title="$pageTitle" :page-description="$pageDescription" :page-date="$pageDate" :user="$user">
|
||||
<section class="grid gap-5 lg:grid-cols-6">
|
||||
<article class="rounded-xl border border-[#3B0A0A] bg-[#FFF1F1] p-5 shadow-[0_8px_12px_rgba(13,10,44,0.04)]">
|
||||
<p class="text-sm font-semibold uppercase tracking-[0.16em] text-[#7F1D1D]">Ancaman DO</p>
|
||||
<p class="mt-3 text-3xl font-bold text-[#3B0A0A]">{{ $summary['dropoutCount'] }}</p>
|
||||
<p class="mt-2 text-sm leading-6 text-[#7F1D1D]">Mahasiswa angkatan lama di ambang akhir masa studi.</p>
|
||||
</article>
|
||||
<article class="rounded-xl border border-rose-300 bg-rose-50 p-5 shadow-[0_8px_12px_rgba(13,10,44,0.04)]">
|
||||
<p class="text-sm font-semibold uppercase tracking-[0.16em] text-rose-700">Kritis</p>
|
||||
<p class="mt-3 text-3xl font-bold text-rose-800">{{ $summary['criticalCount'] }}</p>
|
||||
<p class="mt-2 text-sm leading-6 text-rose-700">Tahun akhir studi dan berisiko tinggi.</p>
|
||||
</article>
|
||||
<article class="rounded-xl border border-rose-200 bg-rose-50 p-5 shadow-[0_8px_12px_rgba(13,10,44,0.04)]">
|
||||
<p class="text-sm font-semibold uppercase tracking-[0.16em] text-rose-700">Warning</p>
|
||||
<p class="mt-3 text-3xl font-bold text-rose-800">{{ $summary['warningCount'] }}</p>
|
||||
<p class="mt-2 text-sm leading-6 text-rose-700">Sudah masuk fase studi lanjut dan perlu follow-up.</p>
|
||||
</article>
|
||||
<article class="rounded-xl border border-amber-200 bg-amber-50 p-5 shadow-[0_8px_12px_rgba(13,10,44,0.04)]">
|
||||
<p class="text-sm font-semibold uppercase tracking-[0.16em] text-amber-700">Perlu Pantau</p>
|
||||
<p class="mt-3 text-3xl font-bold text-amber-800">{{ $summary['watchCount'] }}</p>
|
||||
<p class="mt-2 text-sm leading-6 text-amber-700">Mulai masuk tahun studi yang perlu perhatian.</p>
|
||||
</article>
|
||||
<article class="rounded-xl border border-emerald-200 bg-emerald-50 p-5 shadow-[0_8px_12px_rgba(13,10,44,0.04)]">
|
||||
<p class="text-sm font-semibold uppercase tracking-[0.16em] text-emerald-700">Aman</p>
|
||||
<p class="mt-3 text-3xl font-bold text-emerald-800">{{ $summary['safeCount'] }}</p>
|
||||
<p class="mt-2 text-sm leading-6 text-emerald-700">Masih dalam rentang monitoring rutin.</p>
|
||||
</article>
|
||||
<article class="rounded-xl border border-[#E5E7EB] bg-white p-5 shadow-[0_8px_12px_rgba(13,10,44,0.04)]">
|
||||
<p class="text-sm font-semibold uppercase tracking-[0.16em] text-[#979797]">Total Data</p>
|
||||
<p class="mt-3 text-3xl font-bold text-[#15171A]">{{ $summary['totalCount'] }}</p>
|
||||
<p class="mt-2 text-sm leading-6 text-[#4B5563]">Seluruh mahasiswa bimbingan yang termonitor.</p>
|
||||
</article>
|
||||
</section>
|
||||
|
||||
<section class="rounded-xl border border-[#E5E7EB] bg-white p-6 shadow-[0_8px_12px_rgba(13,10,44,0.04)]">
|
||||
<div class="mb-5 rounded-xl border border-rose-200 bg-rose-50 p-4 text-sm leading-7 text-rose-800">
|
||||
Prioritaskan mahasiswa dengan status <strong>Ancaman DO</strong>, <strong>Kritis</strong>, dan <strong>Warning</strong>. Penilaian risiko memakai angkatan mahasiswa dan umur studi, dengan fallback pembacaan angkatan dari pola NIM.
|
||||
</div>
|
||||
|
||||
<div class="space-y-4">
|
||||
@forelse ($records as $item)
|
||||
<article class="rounded-xl border border-[#E5E7EB] bg-[#F9FAFB] p-5">
|
||||
<div class="flex flex-col gap-4 lg:flex-row lg:items-start lg:justify-between">
|
||||
<div class="min-w-0 flex-1">
|
||||
<div class="flex flex-wrap items-center gap-2">
|
||||
<h3 class="text-lg font-semibold text-[#15171A]">{{ $item['mahasiswa'] }}</h3>
|
||||
<span class="rounded-full px-2.5 py-1 text-[11px] font-semibold {{ $item['statusClass'] }}">{{ $item['status'] }}</span>
|
||||
</div>
|
||||
<p class="mt-3 break-words text-sm leading-7 text-[#4B5563]">{{ $item['judul'] }}</p>
|
||||
<div class="mt-3 flex flex-wrap gap-3 text-sm text-[#6B7280]">
|
||||
<span>Angkatan {{ $item['angkatan'] ?? '-' }}</span>
|
||||
<span>{{ !is_null($item['tahunStudi']) ? $item['tahunStudi'].' tahun studi' : 'Tahun studi tidak diketahui' }}</span>
|
||||
<span>{{ $item['tanggal'] }}</span>
|
||||
@if (!is_null($item['days']))
|
||||
<span>{{ $item['days'] }} hari sejak keputusan</span>
|
||||
@endif
|
||||
</div>
|
||||
<p class="mt-3 text-sm leading-6 {{ in_array($item['severity'], ['dropout', 'critical', 'warning'], true) ? 'text-rose-700' : ($item['severity'] === 'watch' ? 'text-amber-700' : 'text-emerald-700') }}">{{ $item['warningText'] }}</p>
|
||||
</div>
|
||||
<div class="shrink-0">
|
||||
<a href="{{ $item['detailHref'] }}" target="_blank" rel="noreferrer" class="inline-flex rounded-md border border-[#D1D5DB] bg-white px-3 py-2 text-xs font-medium text-[#15171A] hover:bg-[#F9FAFB]">Buka Monitoring Lengkap</a>
|
||||
</div>
|
||||
</div>
|
||||
</article>
|
||||
@empty
|
||||
<div class="rounded-xl border border-dashed border-[#D1D5DB] bg-[#F9FAFB] p-6 text-center text-[#6B7280]">Belum ada data early warning.</div>
|
||||
@endforelse
|
||||
</div>
|
||||
</section>
|
||||
</x-dosen.partials.page-shell>
|
||||
19
rebuild/resources/views/dosen/pages/pemberitahuan.blade.php
Normal file
19
rebuild/resources/views/dosen/pages/pemberitahuan.blade.php
Normal file
@@ -0,0 +1,19 @@
|
||||
<x-dosen.partials.page-shell :title="$title" :sidebar="$sidebar" :page-title="$pageTitle" :page-description="$pageDescription" :page-date="$pageDate" :user="$user">
|
||||
<section class="rounded-xl border border-[#E5E7EB] bg-white p-6 shadow-[0_8px_12px_rgba(13,10,44,0.04)]">
|
||||
<div class="space-y-3">
|
||||
@forelse ($pemberitahuan as $item)
|
||||
<article class="rounded-xl border border-[#E5E7EB] bg-[#F9FAFB] p-4">
|
||||
<p class="text-sm text-[#6B7280]">{{ \Carbon\Carbon::parse($item['tgl'])->locale('id')->translatedFormat('j F Y, H:i') }}</p>
|
||||
<p class="mt-2 text-[#15171A]">{{ $item['msg'] }}</p>
|
||||
@if ($item['reviewHref'])
|
||||
<div class="mt-4">
|
||||
<a href="{{ $item['reviewHref'] }}" class="rounded-md border border-[#D1D5DB] bg-white px-3 py-2 text-xs font-medium text-[#15171A] hover:bg-[#F9FAFB]">Buka Review</a>
|
||||
</div>
|
||||
@endif
|
||||
</article>
|
||||
@empty
|
||||
<div class="rounded-xl border border-dashed border-[#D1D5DB] bg-[#F9FAFB] p-6 text-center text-[#6B7280]">Tidak Ada Pemberitahuan Terbaru</div>
|
||||
@endforelse
|
||||
</div>
|
||||
</section>
|
||||
</x-dosen.partials.page-shell>
|
||||
31
rebuild/resources/views/dosen/pages/penawaran-form.blade.php
Normal file
31
rebuild/resources/views/dosen/pages/penawaran-form.blade.php
Normal file
@@ -0,0 +1,31 @@
|
||||
<x-dosen.partials.page-shell :title="$title" :sidebar="$sidebar" :page-title="$pageTitle" :page-description="$pageDescription" :page-date="$pageDate" :user="$user">
|
||||
<section class="rounded-xl border border-[#E5E7EB] bg-white p-6 shadow-[0_8px_12px_rgba(13,10,44,0.04)]">
|
||||
<form method="POST" action="{{ $formAction }}" class="space-y-6">
|
||||
@csrf
|
||||
@if ($formMethod !== 'POST')
|
||||
@method($formMethod)
|
||||
@endif
|
||||
|
||||
<div>
|
||||
<label for="judul_penawaran" class="mb-2 block text-sm font-medium text-[#15171A]">Judul</label>
|
||||
<input id="judul_penawaran" type="text" name="judul_penawaran" value="{{ $penawaranItem['judul'] }}" class="template-input" required>
|
||||
@error('judul_penawaran')
|
||||
<p class="mt-2 text-sm text-rose-600">{{ $message }}</p>
|
||||
@enderror
|
||||
</div>
|
||||
|
||||
<div>
|
||||
<label for="keterangan_penawaran" class="mb-2 block text-sm font-medium text-[#15171A]">Keterangan</label>
|
||||
<textarea id="keterangan_penawaran" name="keterangan_penawaran" rows="10" class="template-input">{{ $penawaranItem['deskripsi'] }}</textarea>
|
||||
@error('keterangan_penawaran')
|
||||
<p class="mt-2 text-sm text-rose-600">{{ $message }}</p>
|
||||
@enderror
|
||||
</div>
|
||||
|
||||
<div class="flex flex-wrap gap-3">
|
||||
<button type="submit" class="template-button-dark">{{ $formMode === 'create' ? 'Simpan Data' : 'Simpan Perubahan' }}</button>
|
||||
<a href="{{ route('dosen.penawaran.index') }}" class="rounded-md border border-[#D1D5DB] bg-white px-4 py-2.5 text-sm font-medium text-[#15171A] hover:bg-[#F9FAFB]">Kembali</a>
|
||||
</div>
|
||||
</form>
|
||||
</section>
|
||||
</x-dosen.partials.page-shell>
|
||||
94
rebuild/resources/views/dosen/pages/penawaran.blade.php
Normal file
94
rebuild/resources/views/dosen/pages/penawaran.blade.php
Normal file
@@ -0,0 +1,94 @@
|
||||
<x-dosen.partials.page-shell :title="$title" :sidebar="$sidebar" :page-title="$pageTitle" :page-description="$pageDescription" :page-date="$pageDate" :user="$user" :page-actions="$pageActions ?? []">
|
||||
<section class="rounded-xl border border-[#E5E7EB] bg-white p-6 shadow-[0_8px_12px_rgba(13,10,44,0.04)]">
|
||||
<form method="GET" class="grid gap-4 border-b border-[#E5E7EB] pb-6 lg:grid-cols-4">
|
||||
<label class="block text-sm text-[#374151]">
|
||||
<span class="mb-2 block font-medium text-[#15171A]">Tampilkan :</span>
|
||||
<select name="sumber" class="template-input">
|
||||
<option value="0" @selected($source === '0')>Judul Saya</option>
|
||||
<option value="1" @selected($source === '1')>Semua Dosen</option>
|
||||
</select>
|
||||
</label>
|
||||
|
||||
<label class="block text-sm text-[#374151]">
|
||||
<span class="mb-2 block font-medium text-[#15171A]">Status :</span>
|
||||
<select name="status" class="template-input">
|
||||
<option value="Semua" @selected($statusFilter === 'Semua')>Semua</option>
|
||||
<option value="Belum Diambil" @selected($statusFilter === 'Belum Diambil')>Belum Diambil</option>
|
||||
<option value="Belum Diproses" @selected($statusFilter === 'Belum Diproses')>Belum Diproses</option>
|
||||
<option value="Diterima" @selected($statusFilter === 'Diterima')>Diterima</option>
|
||||
</select>
|
||||
</label>
|
||||
|
||||
<label class="block text-sm text-[#374151]">
|
||||
<span class="mb-2 block font-medium text-[#15171A]">Status :</span>
|
||||
<select name="kk" class="template-input">
|
||||
<option value="all" @selected($kkFilter === 'all')>Semua KK</option>
|
||||
@foreach ($kkOptions as $option)
|
||||
<option value="{{ $option['value'] }}" @selected($kkFilter === $option['value'])>{{ $option['label'] }}</option>
|
||||
@endforeach
|
||||
</select>
|
||||
</label>
|
||||
|
||||
<div class="flex items-end gap-3">
|
||||
<button type="submit" class="template-button-dark w-full lg:w-auto">Filter</button>
|
||||
</div>
|
||||
</form>
|
||||
|
||||
<div class="mt-6 overflow-x-auto">
|
||||
<table class="min-w-full divide-y divide-[#E5E7EB] text-sm">
|
||||
<thead>
|
||||
<tr class="text-left text-[#6B7280]">
|
||||
<th class="px-4 py-3 font-semibold">No.</th>
|
||||
<th class="px-4 py-3 font-semibold">Judul</th>
|
||||
<th class="px-4 py-3 font-semibold">Deskripsi</th>
|
||||
<th class="px-4 py-3 font-semibold">Ditawarkan Oleh</th>
|
||||
<th class="px-4 py-3 font-semibold">Status</th>
|
||||
<th class="px-4 py-3 font-semibold">Diambil Oleh</th>
|
||||
<th class="px-4 py-3 font-semibold">Aksi</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody class="divide-y divide-[#F1F5F9]">
|
||||
@forelse ($penawaran as $index => $item)
|
||||
<tr>
|
||||
<td class="px-4 py-4 text-[#374151]">{{ $index + 1 }}</td>
|
||||
<td class="px-4 py-4 align-top">
|
||||
<p class="font-semibold text-[#15171A]">{{ $item['judul'] }}</p>
|
||||
<p class="mt-1 text-xs text-[#6B7280]">{{ $item['waktu'] }}</p>
|
||||
</td>
|
||||
<td class="px-4 py-4 text-[#374151]">{{ $item['deskripsi'] }}</td>
|
||||
<td class="px-4 py-4 text-[#374151]">{{ $item['ditawarkanOleh'] }}</td>
|
||||
<td class="px-4 py-4 text-[#374151]">{{ $item['status'] }}</td>
|
||||
<td class="px-4 py-4 text-[#374151]">{{ $item['mahasiswa'] }}</td>
|
||||
<td class="px-4 py-4">
|
||||
<div class="flex flex-wrap gap-2">
|
||||
@if ($item['canApprove'])
|
||||
<form method="POST" action="{{ $item['approveHref'] }}">
|
||||
@csrf
|
||||
<button type="submit" class="rounded-md border border-emerald-200 bg-emerald-50 px-3 py-1.5 text-xs font-medium text-emerald-700 hover:bg-emerald-100">Setujui</button>
|
||||
</form>
|
||||
<form method="POST" action="{{ $item['rejectHref'] }}">
|
||||
@csrf
|
||||
<button type="submit" class="rounded-md border border-amber-200 bg-amber-50 px-3 py-1.5 text-xs font-medium text-amber-700 hover:bg-amber-100">Tolak</button>
|
||||
</form>
|
||||
@endif
|
||||
@if ($item['isMine'])
|
||||
<a href="{{ $item['editHref'] }}" class="rounded-md bg-[#15171A] px-3 py-1.5 text-xs font-medium text-white hover:opacity-90">Edit</a>
|
||||
<form method="POST" action="{{ $item['destroyHref'] }}" onsubmit="return confirm('Hapus data penawaran judul ini?');">
|
||||
@csrf
|
||||
@method('DELETE')
|
||||
<button type="submit" class="rounded-md border border-rose-200 bg-rose-50 px-3 py-1.5 text-xs font-medium text-rose-700 hover:bg-rose-100">Hapus</button>
|
||||
</form>
|
||||
@endif
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
@empty
|
||||
<tr>
|
||||
<td colspan="7" class="px-4 py-8 text-center text-[#6B7280]">Mengambil Data . . .</td>
|
||||
</tr>
|
||||
@endforelse
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</section>
|
||||
</x-dosen.partials.page-shell>
|
||||
@@ -0,0 +1,10 @@
|
||||
<x-dosen.partials.page-shell :title="$title" :sidebar="$sidebar" :page-title="$pageTitle" :page-description="$pageDescription" :page-date="$pageDate" :user="$user">
|
||||
<section class="rounded-xl border border-[#E5E7EB] bg-white p-6 shadow-[0_8px_12px_rgba(13,10,44,0.04)]">
|
||||
<h2 class="text-2xl font-semibold text-[#15171A]">{{ $pengumumanItem->judul }}</h2>
|
||||
<p class="mt-2 text-sm text-[#6B7280]">Diposting {{ \Carbon\Carbon::parse($pengumumanItem->tgl)->locale('id')->translatedFormat('j F Y, H:i') }}</p>
|
||||
<div class="prose mt-6 max-w-none text-[#374151]">{!! $pengumumanItem->isi !!}</div>
|
||||
<div class="mt-6">
|
||||
<a href="{{ route('dosen.pengumuman.index') }}" class="inline-flex items-center rounded-md border border-[#D1D5DB] bg-white px-4 py-2.5 text-sm font-medium text-[#15171A] hover:bg-[#F9FAFB]">Kembali</a>
|
||||
</div>
|
||||
</section>
|
||||
</x-dosen.partials.page-shell>
|
||||
17
rebuild/resources/views/dosen/pages/pengumuman.blade.php
Normal file
17
rebuild/resources/views/dosen/pages/pengumuman.blade.php
Normal file
@@ -0,0 +1,17 @@
|
||||
<x-dosen.partials.page-shell :title="$title" :sidebar="$sidebar" :page-title="$pageTitle" :page-description="$pageDescription" :page-date="$pageDate" :user="$user">
|
||||
<section class="rounded-xl border border-[#E5E7EB] bg-white p-6 shadow-[0_8px_12px_rgba(13,10,44,0.04)]">
|
||||
<div class="space-y-4">
|
||||
@forelse ($pengumuman as $item)
|
||||
<article class="rounded-xl border border-[#E5E7EB] bg-[#F9FAFB] p-5">
|
||||
<a href="{{ $item['detailHref'] }}" class="text-lg font-semibold text-[#15171A] hover:text-[#625DF5]">{{ $item['judul'] }}</a>
|
||||
<p class="mt-2 text-sm text-[#6B7280]">{{ \Carbon\Carbon::parse($item['tgl'])->locale('id')->translatedFormat('j F Y, H:i') }}</p>
|
||||
<div class="mt-4 flex flex-wrap gap-2">
|
||||
<a href="{{ $item['detailHref'] }}" class="rounded-md bg-[#15171A] px-3 py-2 text-xs font-medium text-white hover:opacity-90">Lihat Detail</a>
|
||||
</div>
|
||||
</article>
|
||||
@empty
|
||||
<div class="rounded-xl border border-dashed border-[#D1D5DB] bg-[#F9FAFB] p-6 text-center text-[#6B7280]">Belum ada pengumuman.</div>
|
||||
@endforelse
|
||||
</div>
|
||||
</section>
|
||||
</x-dosen.partials.page-shell>
|
||||
12
rebuild/resources/views/dosen/pages/pra-lirs.blade.php
Normal file
12
rebuild/resources/views/dosen/pages/pra-lirs.blade.php
Normal file
@@ -0,0 +1,12 @@
|
||||
<x-dosen.partials.page-shell :title="$title" :sidebar="$sidebar" :page-title="$pageTitle" :page-description="$pageDescription" :page-date="$pageDate" :user="$user">
|
||||
<section class="rounded-xl border border-[#E5E7EB] bg-white p-6 shadow-[0_8px_12px_rgba(13,10,44,0.04)]">
|
||||
<h3 class="text-xl font-semibold text-[#15171A]">Integrasi Pra LIRS</h3>
|
||||
<p class="mt-4 max-w-[820px] text-sm leading-7 text-[#4B5563]">Modul lama mengambil data Pra LIRS dari layanan eksternal Informatika. Untuk tahap overhaul ini, jalur modul dikembalikan sebagai halaman rebuild dan sumber integrasinya dipertahankan sama agar perilaku existing tidak berubah mendadak.</p>
|
||||
<div class="mt-6 rounded-xl border border-[#E5E7EB] bg-[#F9FAFB] p-5 text-sm text-[#374151]">
|
||||
Endpoint sumber: <span class="font-mono text-[13px]">{{ $externalUrl }}</span>
|
||||
</div>
|
||||
<div class="mt-6">
|
||||
<a href="https://informatika.untan.ac.id/konsultasi/" target="_blank" rel="noreferrer" class="inline-flex items-center rounded-md bg-[#15171A] px-4 py-2.5 text-sm font-medium text-white hover:opacity-90">Buka Layanan Terkait</a>
|
||||
</div>
|
||||
</section>
|
||||
</x-dosen.partials.page-shell>
|
||||
65
rebuild/resources/views/dosen/pages/profile.blade.php
Normal file
65
rebuild/resources/views/dosen/pages/profile.blade.php
Normal file
@@ -0,0 +1,65 @@
|
||||
<x-dosen.partials.page-shell :title="$title" :sidebar="$sidebar" :page-title="$pageTitle" :page-description="$pageDescription" :page-date="$pageDate" :user="$user">
|
||||
<section class="grid gap-5 lg:grid-cols-[minmax(0,1.2fr)_minmax(320px,0.8fr)]">
|
||||
<article class="rounded-xl border border-[#E5E7EB] bg-white p-6 shadow-[0_8px_12px_rgba(13,10,44,0.04)]">
|
||||
<h3 class="text-xl font-semibold text-[#15171A]">Edit Profil</h3>
|
||||
<form method="POST" action="{{ route('dosen.profile.update', [], false) }}" class="mt-5 space-y-5">
|
||||
@csrf
|
||||
@method('PUT')
|
||||
|
||||
<div class="grid gap-5 md:grid-cols-2">
|
||||
<label class="block text-sm text-[#374151]">
|
||||
<span class="mb-2 block font-medium text-[#15171A]">NIP</span>
|
||||
<input type="text" value="{{ $profile->nip ?? '-' }}" class="template-input bg-[#F9FAFB]" readonly>
|
||||
</label>
|
||||
|
||||
<label class="block text-sm text-[#374151]">
|
||||
<span class="mb-2 block font-medium text-[#15171A]">Nama Lengkap</span>
|
||||
<input type="text" name="nmLengkap" value="{{ old('nmLengkap', $profile->nmLengkap ?? '') }}" class="template-input @error('nmLengkap') border-rose-300 ring-rose-100 @enderror" required>
|
||||
@error('nmLengkap')<p class="mt-2 text-xs text-rose-600">{{ $message }}</p>@enderror
|
||||
</label>
|
||||
|
||||
<label class="block text-sm text-[#374151]">
|
||||
<span class="mb-2 block font-medium text-[#15171A]">Email</span>
|
||||
<input type="email" name="email" value="{{ old('email', $profile->email ?? '') }}" class="template-input @error('email') border-rose-300 ring-rose-100 @enderror">
|
||||
@error('email')<p class="mt-2 text-xs text-rose-600">{{ $message }}</p>@enderror
|
||||
</label>
|
||||
|
||||
<label class="block text-sm text-[#374151]">
|
||||
<span class="mb-2 block font-medium text-[#15171A]">No Telp/HP</span>
|
||||
<input type="text" name="nohp" value="{{ old('nohp', $profile->nohp ?? '') }}" class="template-input @error('nohp') border-rose-300 ring-rose-100 @enderror">
|
||||
@error('nohp')<p class="mt-2 text-xs text-rose-600">{{ $message }}</p>@enderror
|
||||
</label>
|
||||
|
||||
<label class="block text-sm text-[#374151]">
|
||||
<span class="mb-2 block font-medium text-[#15171A]">Password Baru</span>
|
||||
<input type="password" name="password" class="template-input @error('password') border-rose-300 ring-rose-100 @enderror" placeholder="Kosongkan jika tidak diubah">
|
||||
@error('password')<p class="mt-2 text-xs text-rose-600">{{ $message }}</p>@enderror
|
||||
</label>
|
||||
|
||||
<label class="block text-sm text-[#374151]">
|
||||
<span class="mb-2 block font-medium text-[#15171A]">Konfirmasi Password</span>
|
||||
<input type="password" name="password_again" class="template-input @error('password_again') border-rose-300 ring-rose-100 @enderror" placeholder="Ulangi password baru">
|
||||
@error('password_again')<p class="mt-2 text-xs text-rose-600">{{ $message }}</p>@enderror
|
||||
</label>
|
||||
</div>
|
||||
|
||||
<div class="flex flex-wrap gap-3 border-t border-[#E5E7EB] pt-5">
|
||||
<button type="submit" class="rounded-md bg-[#15171A] px-4 py-2.5 text-sm font-medium text-white hover:opacity-90">Simpan Perubahan</button>
|
||||
</div>
|
||||
</form>
|
||||
</article>
|
||||
|
||||
<article class="rounded-xl border border-[#E5E7EB] bg-white p-6 shadow-[0_8px_12px_rgba(13,10,44,0.04)]">
|
||||
<h3 class="text-xl font-semibold text-[#15171A]">Ringkasan Akun</h3>
|
||||
<div class="mt-5 space-y-4 text-sm text-[#374151]">
|
||||
<div><span class="font-semibold text-[#15171A]">NIP:</span> {{ $profile->nip ?? '-' }}</div>
|
||||
<div><span class="font-semibold text-[#15171A]">Jenis Dosen:</span> {{ ($profile->jenis ?? 'D') === 'K' ? 'Ketua Program Studi' : 'Dosen' }}</div>
|
||||
<div><span class="font-semibold text-[#15171A]">Status Akun:</span> {{ ($profile->status ?? 'N') === 'A' ? 'Aktif' : 'Nonaktif' }}</div>
|
||||
<div><span class="font-semibold text-[#15171A]">Jabatan:</span> {{ $profile->jabatan ?: '-' }}</div>
|
||||
</div>
|
||||
<div class="mt-6 rounded-xl border border-[#E5E7EB] bg-[#F9FAFB] p-4 text-sm leading-7 text-[#4B5563]">
|
||||
Perubahan foto profil belum dipindahkan ke rebuild. Saat ini yang sudah aktif native adalah pembaruan nama lengkap, email, nomor HP, dan password.
|
||||
</div>
|
||||
</article>
|
||||
</section>
|
||||
</x-dosen.partials.page-shell>
|
||||
59
rebuild/resources/views/dosen/pages/review-detail.blade.php
Normal file
59
rebuild/resources/views/dosen/pages/review-detail.blade.php
Normal file
@@ -0,0 +1,59 @@
|
||||
<x-dosen.partials.page-shell :title="$title" :sidebar="$sidebar" :page-title="$pageTitle" :page-description="$pageDescription" :page-date="$pageDate" :user="$user" :page-actions="$pageActions ?? []">
|
||||
<section class="space-y-5">
|
||||
<article class="rounded-xl border border-[#E5E7EB] bg-white p-6 shadow-[0_8px_12px_rgba(13,10,44,0.04)]">
|
||||
<div class="flex flex-col gap-4 lg:flex-row lg:items-start lg:justify-between">
|
||||
<div class="min-w-0 flex-1">
|
||||
<h2 class="break-words text-[22px] font-semibold leading-8 text-[#15171A]">{{ $outline['judul'] }}</h2>
|
||||
<p class="mt-3 text-sm text-[#4B5563]">{{ $outline['mahasiswa'] }}</p>
|
||||
<div class="mt-3 flex flex-wrap gap-3 text-sm text-[#6B7280]">
|
||||
<span>{{ $outline['periode'] }}</span>
|
||||
<span>{{ $outline['tanggal'] }}</span>
|
||||
<span>KK: {{ $outline['kk'] }}</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="shrink-0 rounded-full bg-[#F9FAFB] px-3 py-1 text-xs font-semibold text-[#15171A]">
|
||||
{{ $outline['status'] }}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="mt-5 rounded-xl border border-[#E5E7EB] bg-[#F9FAFB] p-4 text-sm leading-7 text-[#374151]">
|
||||
{!! $outline['deskripsi'] ?: '<span class="text-[#6B7280]">Tidak ada deskripsi.</span>' !!}
|
||||
</div>
|
||||
</article>
|
||||
|
||||
<section id="post_review" class="rounded-xl border border-[#E5E7EB] bg-white p-6 shadow-[0_8px_12px_rgba(13,10,44,0.04)]">
|
||||
<div class="flex items-center justify-between gap-3">
|
||||
<div>
|
||||
<p class="text-sm font-semibold uppercase tracking-[0.16em] text-[#979797]">Diskusi</p>
|
||||
<h3 class="mt-2 text-xl font-semibold text-[#15171A]">Riwayat Review</h3>
|
||||
</div>
|
||||
<span class="rounded-full border border-[#E5E7EB] bg-[#F9FAFB] px-3 py-1 text-xs font-semibold text-[#4B5563]">{{ count($reviews) }} entri</span>
|
||||
</div>
|
||||
|
||||
<div class="mt-5 space-y-4">
|
||||
@forelse ($reviews as $review)
|
||||
<article class="rounded-xl border border-[#E5E7EB] bg-[#F9FAFB] p-5">
|
||||
<div class="flex flex-col gap-3 sm:flex-row sm:items-start sm:justify-between">
|
||||
<div>
|
||||
<div class="flex flex-wrap items-center gap-2">
|
||||
<p class="font-semibold text-[#15171A]">{{ $review['author'] }}</p>
|
||||
<span class="rounded-full bg-white px-2.5 py-1 text-[11px] font-semibold text-[#4B5563]">{{ $review['role'] }}</span>
|
||||
<span class="rounded-full px-2.5 py-1 text-[11px] font-semibold {{ $review['type'] === 'Putusan' ? 'bg-amber-100 text-amber-800' : 'bg-slate-100 text-slate-700' }}">{{ $review['type'] }}</span>
|
||||
@if ($review['decision'])
|
||||
<span class="rounded-full px-2.5 py-1 text-[11px] font-semibold {{ $review['decision'] === 'Setuju' ? 'bg-emerald-100 text-emerald-700' : 'bg-rose-100 text-rose-700' }}">{{ $review['decision'] }}</span>
|
||||
@endif
|
||||
</div>
|
||||
<p class="mt-2 text-xs text-[#6B7280]">{{ $review['timestamp'] }}</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="prose prose-sm mt-4 max-w-none text-[#374151] prose-p:leading-7">
|
||||
{!! $review['body'] !!}
|
||||
</div>
|
||||
</article>
|
||||
@empty
|
||||
<div class="rounded-xl border border-dashed border-[#D1D5DB] bg-[#F9FAFB] p-6 text-center text-[#6B7280]">Belum ada review untuk usulan ini.</div>
|
||||
@endforelse
|
||||
</div>
|
||||
</section>
|
||||
</section>
|
||||
</x-dosen.partials.page-shell>
|
||||
36
rebuild/resources/views/dosen/pages/review-saya.blade.php
Normal file
36
rebuild/resources/views/dosen/pages/review-saya.blade.php
Normal file
@@ -0,0 +1,36 @@
|
||||
<x-dosen.partials.page-shell :title="$title" :sidebar="$sidebar" :page-title="$pageTitle" :page-description="$pageDescription" :page-date="$pageDate" :user="$user">
|
||||
<section class="rounded-xl border border-[#E5E7EB] bg-white p-6 shadow-[0_8px_12px_rgba(13,10,44,0.04)]">
|
||||
<div class="overflow-x-auto">
|
||||
<table class="min-w-[1100px] divide-y divide-[#E5E7EB] text-sm">
|
||||
<thead>
|
||||
<tr class="text-left text-[#6B7280]">
|
||||
<th class="w-[220px] px-4 py-3 font-semibold">Mahasiswa</th>
|
||||
<th class="w-[420px] px-4 py-3 font-semibold">Judul Usulan</th>
|
||||
<th class="w-[160px] px-4 py-3 font-semibold">Periode</th>
|
||||
<th class="w-[180px] px-4 py-3 font-semibold">Tanggal</th>
|
||||
<th class="w-[140px] px-4 py-3 font-semibold">Status</th>
|
||||
<th class="w-[140px] px-4 py-3 font-semibold">Aksi</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody class="divide-y divide-[#F1F5F9]">
|
||||
@forelse ($reviews as $item)
|
||||
<tr class="align-top">
|
||||
<td class="px-4 py-4 text-[#374151]">{{ $item['mahasiswa'] }}</td>
|
||||
<td class="px-4 py-4 font-medium leading-6 text-[#15171A]">{{ $item['judul'] }}</td>
|
||||
<td class="px-4 py-4 text-[#374151]">{{ $item['periode'] }}</td>
|
||||
<td class="px-4 py-4 text-[#374151]">{{ $item['tanggal'] }}</td>
|
||||
<td class="px-4 py-4 text-[#374151]">{{ $item['status'] }}</td>
|
||||
<td class="whitespace-nowrap px-4 py-4">
|
||||
<a href="{{ $item['reviewHref'] }}" class="inline-flex rounded-md border border-[#D1D5DB] bg-white px-3 py-1.5 text-xs font-medium text-[#15171A] hover:bg-[#F9FAFB]">Lihat Review</a>
|
||||
</td>
|
||||
</tr>
|
||||
@empty
|
||||
<tr>
|
||||
<td colspan="6" class="px-4 py-8 text-center text-[#6B7280]">Belum ada data review.</td>
|
||||
</tr>
|
||||
@endforelse
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</section>
|
||||
</x-dosen.partials.page-shell>
|
||||
43
rebuild/resources/views/dosen/pages/statistik.blade.php
Normal file
43
rebuild/resources/views/dosen/pages/statistik.blade.php
Normal file
@@ -0,0 +1,43 @@
|
||||
<x-dosen.partials.page-shell :title="$title" :sidebar="$sidebar" :page-title="$pageTitle" :page-description="$pageDescription" :page-date="$pageDate" :user="$user">
|
||||
<section class="grid gap-5 xl:grid-cols-2">
|
||||
<article class="rounded-xl border border-[#E5E7EB] bg-white p-6 shadow-[0_8px_12px_rgba(13,10,44,0.04)]">
|
||||
<h3 class="text-xl font-semibold text-[#15171A]">Statistik Draft Praoutline</h3>
|
||||
<div class="mt-5 overflow-x-auto">
|
||||
<table class="min-w-full divide-y divide-[#E5E7EB] text-sm">
|
||||
<thead>
|
||||
<tr class="text-left text-[#6B7280]">
|
||||
<th class="px-4 py-3 font-semibold">Semester</th>
|
||||
<th class="px-4 py-3 font-semibold">Proses</th>
|
||||
<th class="px-4 py-3 font-semibold">Disetujui</th>
|
||||
<th class="px-4 py-3 font-semibold">Ditolak</th>
|
||||
<th class="px-4 py-3 font-semibold">Gugur</th>
|
||||
<th class="px-4 py-3 font-semibold">Total</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody class="divide-y divide-[#F1F5F9]">
|
||||
@foreach ($draftStats as $item)
|
||||
<tr>
|
||||
<td class="px-4 py-4">{{ $item->semester }}</td>
|
||||
<td class="px-4 py-4">{{ $item->proses }}</td>
|
||||
<td class="px-4 py-4">{{ $item->terima }}</td>
|
||||
<td class="px-4 py-4">{{ $item->tolak }}</td>
|
||||
<td class="px-4 py-4">{{ $item->gugur }}</td>
|
||||
<td class="px-4 py-4">{{ $item->totaldraft }}</td>
|
||||
</tr>
|
||||
@endforeach
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</article>
|
||||
|
||||
<article class="rounded-xl border border-[#E5E7EB] bg-white p-6 shadow-[0_8px_12px_rgba(13,10,44,0.04)]">
|
||||
<h3 class="text-xl font-semibold text-[#15171A]">Statistik Dosen</h3>
|
||||
<div class="mt-5 grid gap-4 sm:grid-cols-2">
|
||||
<div class="metric-card"><p class="text-sm text-[#6B7280]">Pembimbing 1</p><p class="mt-2 text-3xl font-bold text-[#15171A]">{{ $dosenStats->pemb1 ?? 0 }}</p></div>
|
||||
<div class="metric-card"><p class="text-sm text-[#6B7280]">Pembimbing 2</p><p class="mt-2 text-3xl font-bold text-[#15171A]">{{ $dosenStats->pemb2 ?? 0 }}</p></div>
|
||||
<div class="metric-card"><p class="text-sm text-[#6B7280]">Penguji 1</p><p class="mt-2 text-3xl font-bold text-[#15171A]">{{ $dosenStats->peng1 ?? 0 }}</p></div>
|
||||
<div class="metric-card"><p class="text-sm text-[#6B7280]">Penguji 2</p><p class="mt-2 text-3xl font-bold text-[#15171A]">{{ $dosenStats->peng2 ?? 0 }}</p></div>
|
||||
</div>
|
||||
</article>
|
||||
</section>
|
||||
</x-dosen.partials.page-shell>
|
||||
Reference in New Issue
Block a user