From 80057c1accd684652a2535ae6704f437fd328aec Mon Sep 17 00:00:00 2001 From: MufridaFaraDiani27 Date: Fri, 29 May 2026 12:53:08 +0700 Subject: [PATCH] laporan bulanan --- app/Http/Controllers/LaporanController.php | 199 ++---- resources/views/analisis/index.blade.php | 58 +- resources/views/laporan/bulanan.blade.php | 617 ++++++++++-------- resources/views/ulasan/riwayat.blade.php | 284 +++++++- routes/web.php | 17 +- .../01393f9a13853138207ac2c39f957ff5.php | 12 - .../02255f5465ee3f0b00b21396f74d58e8.php | 51 -- .../0ffbbb43ae44ab9731454b1bcd822cb7.php | 33 - .../1cc8f9ec5179878be8cb506988c342cb.php | 60 -- .../4ddda1d400d20a99c44d449f2ad28fac.php | 117 ---- .../51d817e6f87880f25ba24a789f4694de.php | 186 ------ .../5a7ca1a5955aebc99d08fafed8d8566e.php | 40 -- .../5e10586ea85f27a52809d2a4db76680d.php | 12 - .../5fd932f7a53f435288301570d161158b.php | 377 +++++++++++ .../85d32a0e7976e768b836f46c63cb5631.php | 4 - .../9466373cf194e81d673d71f3c52f4732.php | 12 - .../95fd4118cc419d74b5f43aee685a79d5.php | 4 - .../9ffa9783eb7ad81c70c9955ed7601fc8.php | 194 ------ .../ab3ba8940f81b3715d18ea258bfa635c.php | 117 ---- .../ab74199a13c3c0dfdc9e27669a8ce84b.php | 110 ---- .../bc4cd3286ab3e7fad9f5631387c6dcec.php | 150 ----- .../e4943447826b401e3ae79b116caad596.php | 164 ----- .../efff736ac6713c641f28af9593bf95e4.php | 8 - .../f06c714e529d7b336cf1277434e6c2dc.php | 366 ----------- .../f71e45552383a8f681cb76f2112991b4.php | 70 -- .../f808e5b45ff9a0735aa2c22ec906831d.php | 204 ------ .../fb843eb1366f55ecbc0d64d0bcaf77ad.php | 57 +- .../fc5d5071b5d09a668269efaa445d4eb5.php | 49 -- 28 files changed, 1118 insertions(+), 2454 deletions(-) delete mode 100644 storage/framework/views/01393f9a13853138207ac2c39f957ff5.php delete mode 100644 storage/framework/views/02255f5465ee3f0b00b21396f74d58e8.php delete mode 100644 storage/framework/views/0ffbbb43ae44ab9731454b1bcd822cb7.php delete mode 100644 storage/framework/views/1cc8f9ec5179878be8cb506988c342cb.php delete mode 100644 storage/framework/views/4ddda1d400d20a99c44d449f2ad28fac.php delete mode 100644 storage/framework/views/51d817e6f87880f25ba24a789f4694de.php delete mode 100644 storage/framework/views/5a7ca1a5955aebc99d08fafed8d8566e.php delete mode 100644 storage/framework/views/5e10586ea85f27a52809d2a4db76680d.php create mode 100644 storage/framework/views/5fd932f7a53f435288301570d161158b.php delete mode 100644 storage/framework/views/85d32a0e7976e768b836f46c63cb5631.php delete mode 100644 storage/framework/views/9466373cf194e81d673d71f3c52f4732.php delete mode 100644 storage/framework/views/95fd4118cc419d74b5f43aee685a79d5.php delete mode 100644 storage/framework/views/9ffa9783eb7ad81c70c9955ed7601fc8.php delete mode 100644 storage/framework/views/ab3ba8940f81b3715d18ea258bfa635c.php delete mode 100644 storage/framework/views/ab74199a13c3c0dfdc9e27669a8ce84b.php delete mode 100644 storage/framework/views/bc4cd3286ab3e7fad9f5631387c6dcec.php delete mode 100644 storage/framework/views/e4943447826b401e3ae79b116caad596.php delete mode 100644 storage/framework/views/efff736ac6713c641f28af9593bf95e4.php delete mode 100644 storage/framework/views/f06c714e529d7b336cf1277434e6c2dc.php delete mode 100644 storage/framework/views/f71e45552383a8f681cb76f2112991b4.php delete mode 100644 storage/framework/views/f808e5b45ff9a0735aa2c22ec906831d.php delete mode 100644 storage/framework/views/fc5d5071b5d09a668269efaa445d4eb5.php diff --git a/app/Http/Controllers/LaporanController.php b/app/Http/Controllers/LaporanController.php index 5b44065..5666d2e 100644 --- a/app/Http/Controllers/LaporanController.php +++ b/app/Http/Controllers/LaporanController.php @@ -4,42 +4,50 @@ use Illuminate\Http\Request; use Illuminate\Support\Facades\DB; -use Barryvdh\DomPDF\Facade\Pdf; class LaporanController extends Controller { - // ───────────────────────────────────────────── - // Laporan BULANAN → /laporan/bulanan?periode_id=X - // ───────────────────────────────────────────── - public function downloadBulanan(Request $request, $periode) + public function downloadBulanan($periode) { - $periodeId = $periode; + $periodeData = DB::table('periode_analisis') + ->where('id', $periode) + ->first(); - // Ambil info periode - $periode = DB::table('periode_analisis')->where('id', $periodeId)->first(); - if (!$periode) { - return back()->with('error', 'Periode tidak ditemukan.'); + if (!$periodeData) { + return back()->with('error', 'Periode tidak ditemukan'); } - $data = $this->collectData($periodeId); - $data['periode'] = $periode; - $data['judulLaporan'] = 'Laporan Analisis Sentimen — ' . $periode->nama; + $data = $this->collectData($periode); - $pdf = Pdf::loadView('laporan.bulanan', $data) - ->setPaper('a4', 'portrait') - ->setOptions(['dpi' => 110, 'defaultFont' => 'sans-serif', 'isHtml5ParserEnabled' => true]); + $data['periode'] = $periodeData; + $data['judulLaporan'] = 'Laporan Analisis Sentimen - ' . ($periodeData->nama ?? '-'); + $data['evaluasi'] = DB::table('evaluasi_model')->orderByDesc('id')->first() + ?? (object)['accuracy' => 0]; - $filename = 'laporan-sentimen-' . strtolower(str_replace(' ', '-', $periode->nama)) . '.pdf'; + // Ulasan KOTOR — dari tabel ulasan mentah + $data['totalUlasanKotor'] = DB::table('ulasan') + ->where('periode_id', $periode) + ->count(); - return $pdf->download($filename); + // Trend by tanggal ULASAN (bukan created_at analisis) + $data['trendHarian'] = DB::table('hasil_analisis') + ->select( + DB::raw('DATE(created_at) as tanggal'), // ✅ ganti tanggal → created_at + DB::raw("SUM(CASE WHEN sentimen='positif' THEN 1 ELSE 0 END) as positif"), + DB::raw("SUM(CASE WHEN sentimen='netral' THEN 1 ELSE 0 END) as netral"), + DB::raw("SUM(CASE WHEN sentimen='negatif' THEN 1 ELSE 0 END) as negatif") + ) + ->where('periode_id', $periode) + ->groupBy(DB::raw('DATE(created_at)')) // ✅ ganti tanggal → created_at + ->orderBy(DB::raw('DATE(created_at)')) // ✅ ganti tanggal → created_at + ->get(); + + return view('laporan.bulanan', $data); } - // ───────────────────────────────────────────── - // Laporan TAHUNAN → /laporan/tahunan?tahun=2025 - // ───────────────────────────────────────────── - public function downloadTahunan(Request $request, $tahun) + public function downloadTahunan(Request $request) { - $tahun = $request->input('tahun', now()->year); + $tahun = $request->tahun; $periodeList = DB::table('periode_analisis') ->where('tahun', $tahun) @@ -47,130 +55,59 @@ public function downloadTahunan(Request $request, $tahun) ->get(); if ($periodeList->isEmpty()) { - return back()->with('error', "Tidak ada data untuk tahun $tahun."); + return back()->with('error', 'Tidak ada data tahun tersebut'); } - // Kumpulkan data per bulan - $dataBulanan = []; - foreach ($periodeList as $periode) { - $dataBulanan[] = array_merge( - ['periode' => $periode], - $this->collectData($periode->id) - ); - } - - // Agregat tahunan - $totalUlasan = collect($dataBulanan)->sum(fn($d) => $d['totalUlasan']); - $totalPositif = collect($dataBulanan)->sum(fn($d) => $d['totalPositif']); - $totalNegatif = collect($dataBulanan)->sum(fn($d) => $d['totalNegatif']); - $totalNetral = collect($dataBulanan)->sum(fn($d) => $d['totalNetral']); - - $pdf = Pdf::loadView('laporan.tahunan', [ - 'tahun' => $tahun, - 'judulLaporan' => "Laporan Analisis Sentimen Tahunan — $tahun", - 'dataBulanan' => $dataBulanan, - 'totalUlasan' => $totalUlasan, - 'totalPositif' => $totalPositif, - 'totalNegatif' => $totalNegatif, - 'totalNetral' => $totalNetral, - 'persen' => $totalUlasan > 0 ? [ - 'positif' => round(($totalPositif / $totalUlasan) * 100, 1), - 'negatif' => round(($totalNegatif / $totalUlasan) * 100, 1), - 'netral' => round(($totalNetral / $totalUlasan) * 100, 1), - ] : ['positif' => 0, 'negatif' => 0, 'netral' => 0], - ]) - ->setPaper('a4', 'portrait') - ->setOptions(['dpi' => 110, 'defaultFont' => 'sans-serif', 'isHtml5ParserEnabled' => true]); - - return $pdf->download("laporan-sentimen-$tahun.pdf"); + return view('laporan.tahunan', compact('tahun', 'periodeList')); } - // ───────────────────────────────────────────── - // Helper: kumpulkan semua data untuk satu periode - // ───────────────────────────────────────────── - private function collectData(int $periodeId): array + private function collectData($periodeId) { - // Statistik sentimen - $totalUlasan = DB::table('hasil_analisis')->where('periode_id', $periodeId)->count(); - $totalPositif = DB::table('hasil_analisis')->where('periode_id', $periodeId)->where('sentimen', 'positif')->count(); - $totalNegatif = DB::table('hasil_analisis')->where('periode_id', $periodeId)->where('sentimen', 'negatif')->count(); - $totalNetral = DB::table('hasil_analisis')->where('periode_id', $periodeId)->where('sentimen', 'netral')->count(); - - $persen = $totalUlasan > 0 ? [ - 'positif' => round(($totalPositif / $totalUlasan) * 100, 1), - 'negatif' => round(($totalNegatif / $totalUlasan) * 100, 1), - 'netral' => round(($totalNetral / $totalUlasan) * 100, 1), - ] : ['positif' => 0, 'negatif' => 0, 'netral' => 0]; - - // Evaluasi model - $evaluasi = DB::table('evaluasi_model') + $totalUlasan = DB::table('hasil_analisis') ->where('periode_id', $periodeId) - ->latest() - ->first(); + ->count(); - // Per destinasi - $perWisata = DB::table('hasil_analisis') + $totalPositif = DB::table('hasil_analisis') ->where('periode_id', $periodeId) - ->select('wisata', - DB::raw('COUNT(*) as total'), - DB::raw("SUM(CASE WHEN sentimen='positif' THEN 1 ELSE 0 END) as positif"), - DB::raw("SUM(CASE WHEN sentimen='negatif' THEN 1 ELSE 0 END) as negatif"), - DB::raw("SUM(CASE WHEN sentimen='netral' THEN 1 ELSE 0 END) as netral") - ) - ->groupBy('wisata') - ->get(); + ->where('sentimen', 'positif') + ->count(); - // Tabel hasil analisis (maks 200 baris agar PDF tidak terlalu besar) - $hasilAnalisis = DB::table('hasil_analisis') + $totalNetral = DB::table('hasil_analisis') ->where('periode_id', $periodeId) - ->select('wisata', 'ulasan_asli', 'sentimen', 'probabilitas') - ->orderBy('wisata') - ->limit(200) - ->get(); + ->where('sentimen', 'netral') + ->count(); - // Rekomendasi (rule-based dari ulasan negatif) - $ulasanNegatif = DB::table('hasil_analisis') + $totalNegatif = DB::table('hasil_analisis') ->where('periode_id', $periodeId) ->where('sentimen', 'negatif') - ->pluck('ulasan_bersih') - ->implode(' '); + ->count(); - $rekomendasi = $this->generateRekomendasi($ulasanNegatif); - - return compact( - 'totalUlasan', 'totalPositif', 'totalNegatif', 'totalNetral', - 'persen', 'evaluasi', 'perWisata', 'hasilAnalisis', 'rekomendasi' - ); - } - - // ───────────────────────────────────────────── - // Rule-based rekomendasi (sama seperti RekomendasiController) - // ───────────────────────────────────────────── - private function generateRekomendasi(string $text): array - { - $issueRules = [ - 'Kebersihan' => ['keywords' => ['kotor','sampah','jorok','kumuh','toilet','wc','bau'], - 'icon' => '🧹', 'tip' => 'Tambah tempat sampah & jadwal pembersihan rutin.'], - 'Aksesibilitas' => ['keywords' => ['parkir','parkiran','motor','mobil','jalan','macet'], - 'icon' => '🚗', 'tip' => 'Sistem parkir lebih rapi dan transparan.'], - 'Harga / Tiket' => ['keywords' => ['mahal','harga','tiket','bayar','biaya','tarif'], - 'icon' => '🎟️', 'tip' => 'Penyesuaian harga tiket agar lebih terjangkau.'], - 'Fasilitas' => ['keywords' => ['fasilitas','gazebo','warung','kantin','musholla','wifi','bangku'], - 'icon' => '🏗️', 'tip' => 'Fasilitas lengkap & terawat meningkatkan kepuasan.'], + $persen = [ + 'positif' => $totalUlasan ? round(($totalPositif / $totalUlasan) * 100, 2) : 0, + 'netral' => $totalUlasan ? round(($totalNetral / $totalUlasan) * 100, 2) : 0, + 'negatif' => $totalUlasan ? round(($totalNegatif / $totalUlasan) * 100, 2) : 0, ]; - $result = []; - foreach ($issueRules as $nama => $rule) { - $skor = 0; - foreach ($rule['keywords'] as $kw) { - $skor += substr_count(strtolower($text), $kw); - } - if ($skor > 0) { - $result[] = ['nama' => $nama, 'skor' => $skor, 'icon' => $rule['icon'], 'tip' => $rule['tip']]; - } - } + $perWisata = DB::table('hasil_analisis') + ->select( + 'wisata', + DB::raw('COUNT(*) as total'), + DB::raw("SUM(CASE WHEN sentimen='positif' THEN 1 ELSE 0 END) as positif"), + DB::raw("SUM(CASE WHEN sentimen='netral' THEN 1 ELSE 0 END) as netral"), + DB::raw("SUM(CASE WHEN sentimen='negatif' THEN 1 ELSE 0 END) as negatif") + ) + ->where('periode_id', $periodeId) + ->groupBy('wisata') + ->orderByDesc('positif') + ->get(); - usort($result, fn($a, $b) => $b['skor'] - $a['skor']); - return array_slice($result, 0, 5); + return [ + 'totalUlasan' => $totalUlasan, + 'totalPositif' => $totalPositif, + 'totalNetral' => $totalNetral, + 'totalNegatif' => $totalNegatif, + 'persen' => $persen, + 'perWisata' => $perWisata, + ]; } } \ No newline at end of file diff --git a/resources/views/analisis/index.blade.php b/resources/views/analisis/index.blade.php index b7731d2..79dc46b 100644 --- a/resources/views/analisis/index.blade.php +++ b/resources/views/analisis/index.blade.php @@ -59,43 +59,51 @@ - + {{-- ================= FILTER ================= --}} -
+
- + - + + - - + - @foreach($wisataList as $item) + @foreach($wisataList as $item) + + @endforeach - + - @endforeach + - + - + - + + Lihat Riwayat + + +
{{-- ================= TABLE ================= --}}
diff --git a/resources/views/laporan/bulanan.blade.php b/resources/views/laporan/bulanan.blade.php index a8736df..384e3b3 100644 --- a/resources/views/laporan/bulanan.blade.php +++ b/resources/views/laporan/bulanan.blade.php @@ -1,313 +1,376 @@ - + - + +{{ $judulLaporan }} + + + -{{-- HEADER --}} -
-
-
-
- @php $logoPath = public_path('images/logo-sentara.png'); @endphp - @if(file_exists($logoPath)) - Logo - @else -
DISPAR
- @endif -
-
DINAS PARIWISATA
-
KABUPATEN JEMBER
-
-
-
-
LAPORAN ANALISIS SENTIMEN
-
Wisata Kabupaten Jember
-
Laporan ini berisi hasil analisis sentimen terhadap ulasan wisata dari Google Maps menggunakan metode Naive Bayes.
-
-
Periode Analisis
-
{{ $periode->nama }}
-
-
-
+{{-- ── ACTION BAR pojok kanan atas ── --}} +
+
-
+
-{{-- RINGKASAN --}} -
-
📊 RINGKASAN SENTIMEN
-
-
-
💬
-
Total Ulasan
{{ $totalUlasan }}
100% dari keseluruhan
-
-
-
😊
-
Sentimen Positif
{{ $totalPositif }}
{{ $persen['positif'] }}%
-
-
-
😟
-
Sentimen Negatif
{{ $totalNegatif }}
{{ $persen['negatif'] }}%
-
-
-
😐
-
Sentimen Netral
{{ $totalNetral }}
{{ $persen['netral'] }}%
-
-
-
+ {{-- LOGO --}} + -{{-- DISTRIBUSI + EVALUASI --}} -
-
-
🍩 DISTRIBUSI SENTIMEN
- @php - $t = max($totalUlasan, 1); - $r = 38; $circ = 2 * 3.14159 * $r; - $pP = $totalPositif / $t; - $pN = $totalNegatif / $t; - $pNt = $totalNetral / $t; - @endphp -
-
- - - @if($pP > 0)@endif - @if($pN > 0)@endif - @if($pNt > 0)@endif - - -
-
-
Positif{{ $persen['positif'] }}% ({{ $totalPositif }})
-
Negatif{{ $persen['negatif'] }}% ({{ $totalNegatif }})
-
Netral{{ $persen['netral'] }}% ({{ $totalNetral }})
-
+ {{-- HERO --}} +
+
+
LAPORAN ANALISIS SENTIMEN
PER BULAN
+
SISTEM ANALISIS SENTIMEN WISATA JEMBER
+
+
+ Periode
+ {{ $periode->nama ?? '-' }}

+ Tanggal Cetak
+ {{ now()->format('d M Y H:i') }}
-
-
🎯 EVALUASI MODEL
- @if($evaluasi) -
-
Precision
{{ number_format($evaluasi->precision,2) }}
-
Recall
{{ number_format($evaluasi->recall,2) }}
-
F1 Score
{{ number_format($evaluasi->f1_score,2) }}
-
Akurasi
{{ number_format($evaluasi->accuracy,2) }}
-
- @else -

Data evaluasi belum tersedia.

- @endif -
-
-{{-- TABEL PER DESTINASI --}} -
-
-
🔭 TOTAL DATA PER DESTINASI
-
- - - - @foreach($perWisata as $i => $w) - - @endforeach - - -
NoDestinasi WisataTotal Ulasan
{{ $i+1 }}{{ $w->wisata }}{{ $w->total }}
Total{{ $totalUlasan }}
-
-
-
-
📉 SENTIMEN PER DESTINASI
-
- - - - @foreach($perWisata as $i => $w) - - - - - - - @endforeach - - - - - - - -
NoDestinasi WisataPositifNegatifNetral
{{ $i+1 }}{{ $w->wisata }}{{ $w->positif }}{{ $w->negatif }}{{ $w->netral }}
Total{{ $totalPositif }}{{ $totalNegatif }}{{ $totalNetral }}
-
-
-
+ {{-- RINGKASAN --}} +
Ringkasan
-{{-- DETAIL + REKOMENDASI --}} -
-
-
📋 DETAIL HASIL ANALISIS
-
- - - - @foreach($hasilAnalisis->take(8) as $i => $item) - - - - - - - - @endforeach - -
NoDestinasiUlasanSentimenProb.
{{ $i+1 }}{{ $item->wisata }}{{ \Illuminate\Support\Str::limit($item->ulasan_asli ?? '-', 75) }}{{ ucfirst($item->sentimen) }}{{ number_format($item->probabilitas,2) }}
+
+
+
Total Ulasan
+

{{ $totalUlasanKotor }}

+
Ulasan Masuk
- @if($hasilAnalisis->count() > 8) -

* Lihat semua data ulasan pada sistem ›

- @endif -
-
-
💡 REKOMENDASI LAYANAN
- @php $iconColors = ['red','orange','green','blue','purple']; @endphp - @forelse($rekomendasi as $i => $r) - @php $c = $iconColors[$i % count($iconColors)]; @endphp -
-
{{ $r['icon'] }}
-
{{ $r['nama'] }}
{{ $r['tip'] }}
+
+
Hasil Analisis
+

{{ $totalUlasan }}

+
Data Bersih
+
+
+
Wisata Dibahas
+

{{ count($perWisata) }}

+
Destinasi
+
+
+
Akurasi Analisis
+

{{ number_format(($evaluasi->accuracy ?? 0) * 100, 2) }}%

+
Model
- @empty -

Tidak ada keluhan signifikan. 🎉

- @endforelse
-
+ + {{-- CHARTS --}} +
Visualisasi
+ +
+
+

Distribusi Sentimen

+ +
+
+

Sentimen per Destinasi

+ +
+
+ + {{-- TABEL --}} +
Top Wisata Berdasarkan Sentimen Positif
+ + + + + + + + + + + + @foreach($perWisata as $i => $w) + + + + + + + + + + @endforeach +
NoWisataTotalPositifNetralNegatif% Positif
{{ $i + 1 }}{{ $w->wisata }}{{ $w->total }}{{ $w->positif }}{{ $w->netral }}{{ $w->negatif }}{{ $w->total > 0 ? round(($w->positif / $w->total) * 100, 2) : 0 }}%
+ + {{-- KESIMPULAN --}} +
+ KESIMPULAN +

+ Pada periode {{ $periode->nama ?? '' }}, + terdapat {{ $totalUlasanKotor }} ulasan masuk dengan + {{ $totalUlasan }} data berhasil dianalisis. + Sentimen positif mendominasi dengan persentase {{ $persen['positif'] ?? 0 }}%, + diikuti netral {{ $persen['netral'] ?? 0 }}% + dan negatif {{ $persen['negatif'] ?? 0 }}%. +

+
+ + {{-- FOOTER --}} +
-{{-- FOOTER --}} -
-
-

METODOLOGI

-

Analisis sentimen dilakukan menggunakan metode Naive Bayes Classifier pada data ulasan Google Maps yang telah melalui proses preprocessing (teks cleaning, case folding, tokenizing, filtering, stemming).

-
-
-
Dicetak pada: {{ now()->translatedFormat('d F Y H:i') }} WIB
-
Sistem Analisis Sentimen Wisata
-
Kabupaten Jember
-
-
+ \ No newline at end of file diff --git a/resources/views/ulasan/riwayat.blade.php b/resources/views/ulasan/riwayat.blade.php index c69b6dd..72872a2 100644 --- a/resources/views/ulasan/riwayat.blade.php +++ b/resources/views/ulasan/riwayat.blade.php @@ -5,14 +5,64 @@
+
-

Riwayat Analisis

+

+ Riwayat Analisis +

+

Periode tersimpan otomatis setiap kali Ambil Data dijalankan.

- + {{-- TAMBAHAN BUTTON CETAK TAHUNAN --}} +{{-- TAMBAHAN BUTTON CETAK TAHUNAN --}} +
+ +
+ + + +
+ + + +
+
@if(session('success')) @@ -20,6 +70,7 @@ {{ session('success') }}
@endif + @if(session('error'))
{{ session('error') }} @@ -27,23 +78,46 @@ @endif
-

Import Data Lama dari CSV

+ +

+ Import Data Lama dari CSV +

+

- Gunakan untuk memasukkan ulasan historis. Kolom wajib: wisata, rating, ulasan, tanggal. Kolom reviewer boleh ada. + Gunakan untuk memasukkan ulasan historis. Kolom wajib: + wisata, rating, ulasan, tanggal. + Kolom reviewer boleh ada.

-
+ @csrf - - + + + + + +
@if($errors->any()) @@ -51,61 +125,207 @@ class="border rounded-lg px-3 py-2 text-sm bg-white shadow-sm min-w-0" required> {{ $errors->first() }}
@endif +
+
+ + + - - - - - - + + + + + + + + + + + + + + + + @forelse($riwayat as $item) + - - - - - + + + + + + + + + + + @empty + - + + @endforelse + +
PeriodeTotal UlasanHasil AnalisisWisataTerakhir AnalisisAksi + Periode + + Total Ulasan + + Hasil Analisis + + Wisata + + Terakhir Analisis + + Aksi +
{{ $item->nama }}{{ $item->total_ulasan }}{{ $item->total_hasil }}{{ $item->total_wisata }} - {{ $item->terakhir_analisis ? \Carbon\Carbon::parse($item->terakhir_analisis)->format('d M Y H:i') : '-' }} + + + {{ $item->nama }} + {{ $item->total_ulasan }} + + {{ $item->total_hasil }} + + {{ $item->total_wisata }} + + + {{ $item->terakhir_analisis + ? \Carbon\Carbon::parse( + $item->terakhir_analisis + )->format('d M Y H:i') + : '-' }} + + +
- + + Analisis + - + + + Ulasan + + + {{-- TAMBAHAN CETAK BULANAN --}} + + Cetak Laporan + +
+
- Belum ada riwayat analisis. Jalankan Ambil Data terlebih dahulu. + + + + Belum ada riwayat analisis. + Jalankan Ambil Data terlebih dahulu. +
+
- @if($riwayat->hasPages()) -
- {{ $riwayat->links() }} + {{-- ================= PAGINATION ================= --}} + + @if($riwayat->hasPages()) + @php + $current = $riwayat->currentPage(); + $last = $riwayat->lastPage(); + $query = http_build_query(request()->except('page')); + $window = collect(range(max(1, $current - 2), min($last, $current + 2))); + @endphp + +
+ + {{-- Info --}} +

Menampilkan {{ $riwayat->firstItem() }} – {{ $riwayat->lastItem() }} dari {{ $riwayat->total() }} data

+ + {{-- Tombol --}} +
+ + {{-- « --}} + @if($riwayat->onFirstPage()) + « + @else + « + @endif + + {{-- Halaman 1 --}} + @if(!$window->contains(1)) + 1 + @if($window->min() > 2) + ... + @endif + @endif + + {{-- Window --}} + @foreach($window as $page) + @if($page == $current) + {{ $page }} + @else + {{ $page }} + @endif + @endforeach + + {{-- Halaman terakhir --}} + @if(!$window->contains($last)) + @if($window->max() < $last - 1) + ... + @endif + {{ $last }} + @endif + + {{-- » --}} + @if($riwayat->hasMorePages()) + » + @else + » + @endif +
- @endif +
+ @endif +
diff --git a/routes/web.php b/routes/web.php index f2272de..be4be32 100644 --- a/routes/web.php +++ b/routes/web.php @@ -9,11 +9,11 @@ use App\Http\Controllers\UserController; use App\Http\Controllers\Auth\ForgotPasswordController; use App\Http\Controllers\Auth\ResetPasswordController; +use App\Http\Controllers\LaporanController; /* -|-------------------------------------------------------------------------- | ROUTE AWAL |-------------------------------------------------------------------------- */ @@ -124,6 +124,21 @@ [UlasanController::class, 'kosongkanPeriode'] )->name('ulasan.kosongkan-periode'); + + /* + |-------------------------------------------------------------------------- + | LAPORAN + |-------------------------------------------------------------------------- + */ + + Route::get('/laporan/bulanan/{periode}', + [LaporanController::class, 'downloadBulanan'] + )->name('laporan.bulanan'); + + Route::get('/laporan/tahunan', + [LaporanController::class, 'downloadTahunan'] + )->name('laporan.tahunan'); + /* |-------------------------------------------------------------------------- | PROSES ANALISIS diff --git a/storage/framework/views/01393f9a13853138207ac2c39f957ff5.php b/storage/framework/views/01393f9a13853138207ac2c39f957ff5.php deleted file mode 100644 index d7af217..0000000 --- a/storage/framework/views/01393f9a13853138207ac2c39f957ff5.php +++ /dev/null @@ -1,12 +0,0 @@ - - -> - - - \ No newline at end of file diff --git a/storage/framework/views/02255f5465ee3f0b00b21396f74d58e8.php b/storage/framework/views/02255f5465ee3f0b00b21396f74d58e8.php deleted file mode 100644 index b723f4f..0000000 --- a/storage/framework/views/02255f5465ee3f0b00b21396f74d58e8.php +++ /dev/null @@ -1,51 +0,0 @@ - - - 'laravel-exceptions-renderer::components.card','data' => []] + (isset($attributes) && $attributes instanceof Illuminate\View\ComponentAttributeBag ? $attributes->all() : [])); ?> -withName('laravel-exceptions-renderer::card'); ?> -shouldRender()): ?> -startComponent($component->resolveView(), $component->data()); ?> - -except(\Illuminate\View\AnonymousComponent::ignoredParameterNames()); ?> - -withAttributes([]); ?> -
-
-
- - - class()), -1))); ?> - - -
-
- message()); ?> - -
-
- - -
- renderComponent(); ?> - - - - - - - - - - \ No newline at end of file diff --git a/storage/framework/views/0ffbbb43ae44ab9731454b1bcd822cb7.php b/storage/framework/views/0ffbbb43ae44ab9731454b1bcd822cb7.php deleted file mode 100644 index bf6dc5c..0000000 --- a/storage/framework/views/0ffbbb43ae44ab9731454b1bcd822cb7.php +++ /dev/null @@ -1,33 +0,0 @@ -frames(); $__env->addLoop($__currentLoopData); foreach($__currentLoopData as $frame): $__env->incrementLoopIndices(); $loop = $__env->getLastLoop(); ?> -
-
-
-
- - - - file()); ?> - - - file()); ?> - - - :line()); ?> -
-
-
-
-
-
-
-popLoop(); $loop = $__env->getLastLoop(); ?> - \ No newline at end of file diff --git a/storage/framework/views/1cc8f9ec5179878be8cb506988c342cb.php b/storage/framework/views/1cc8f9ec5179878be8cb506988c342cb.php deleted file mode 100644 index fe9937e..0000000 --- a/storage/framework/views/1cc8f9ec5179878be8cb506988c342cb.php +++ /dev/null @@ -1,60 +0,0 @@ - - - - - - - - <?php echo e(config('app.name', 'Laravel')); ?> - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/storage/framework/views/4ddda1d400d20a99c44d449f2ad28fac.php b/storage/framework/views/4ddda1d400d20a99c44d449f2ad28fac.php deleted file mode 100644 index e88393e..0000000 --- a/storage/framework/views/4ddda1d400d20a99c44d449f2ad28fac.php +++ /dev/null @@ -1,117 +0,0 @@ -hasPages()): ?> - - - \ No newline at end of file diff --git a/storage/framework/views/51d817e6f87880f25ba24a789f4694de.php b/storage/framework/views/51d817e6f87880f25ba24a789f4694de.php deleted file mode 100644 index 893ebe2..0000000 --- a/storage/framework/views/51d817e6f87880f25ba24a789f4694de.php +++ /dev/null @@ -1,186 +0,0 @@ - - - - 'laravel-exceptions-renderer::components.card','data' => ['class' => 'mt-6 overflow-x-auto']] + (isset($attributes) && $attributes instanceof Illuminate\View\ComponentAttributeBag ? $attributes->all() : [])); ?> -withName('laravel-exceptions-renderer::card'); ?> -shouldRender()): ?> -startComponent($component->resolveView(), $component->data()); ?> - -except(\Illuminate\View\AnonymousComponent::ignoredParameterNames()); ?> - -withAttributes(['class' => 'mt-6 overflow-x-auto']); ?> -
- Request -
- -
- request()->method()); ?> - request()->path(), '/')); ?> -
- -
- Headers -
- -
- requestHeaders(); $__env->addLoop($__currentLoopData); foreach($__currentLoopData as $key => $value): $__env->incrementLoopIndices(); $loop = $__env->getLastLoop(); $__empty_1 = false; ?> -
- - - - - -
-
-
- popLoop(); $loop = $__env->getLastLoop(); if ($__empty_1): ?> - -
No headers data
-
- -
- -
- Body -
- -
-
- -
requestBody() ?: 'No body data'); ?>
-
-
-
- - renderComponent(); ?> - - - - - - - - - - - - - 'laravel-exceptions-renderer::components.card','data' => ['class' => 'mt-6 overflow-x-auto']] + (isset($attributes) && $attributes instanceof Illuminate\View\ComponentAttributeBag ? $attributes->all() : [])); ?> -withName('laravel-exceptions-renderer::card'); ?> -shouldRender()): ?> -startComponent($component->resolveView(), $component->data()); ?> - -except(\Illuminate\View\AnonymousComponent::ignoredParameterNames()); ?> - -withAttributes(['class' => 'mt-6 overflow-x-auto']); ?> -
- Application -
- -
- Routing -
- -
- applicationRouteContext(); $__env->addLoop($__currentLoopData); foreach($__currentLoopData as $name => $value): $__env->incrementLoopIndices(); $loop = $__env->getLastLoop(); $__empty_1 = false; ?> -
- - -
-
-
- popLoop(); $loop = $__env->getLastLoop(); if ($__empty_1): ?> - -
No routing data
-
- -
- - applicationRouteParametersContext()): ?> -
- Routing Parameters -
- -
-
- -
-
-
-
- - -
- Database Queries - - applicationQueries()) === 100): ?> - only the first 100 queries are displayed - - -
- -
- applicationQueries(); $__env->addLoop($__currentLoopData); foreach($__currentLoopData as ['connectionName' => $connectionName, 'sql' => $sql, 'time' => $time]): $__env->incrementLoopIndices(); $loop = $__env->getLastLoop(); $__empty_1 = false; ?> -
-
- - -
- -
-
-
- popLoop(); $loop = $__env->getLastLoop(); if ($__empty_1): ?> - -
No query data
-
- -
- renderComponent(); ?> - - - - - - - - - - \ No newline at end of file diff --git a/storage/framework/views/5a7ca1a5955aebc99d08fafed8d8566e.php b/storage/framework/views/5a7ca1a5955aebc99d08fafed8d8566e.php deleted file mode 100644 index f06d2de..0000000 --- a/storage/framework/views/5a7ca1a5955aebc99d08fafed8d8566e.php +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - Password Berhasil Direset - - - - - -
- -
-
- - - -
-
- -

- Password Berhasil Direset -

- -

- Password akun Anda berhasil diperbarui. Silakan login kembali menggunakan password baru. -

- - - Kembali ke Login - - -
- - - \ No newline at end of file diff --git a/storage/framework/views/5e10586ea85f27a52809d2a4db76680d.php b/storage/framework/views/5e10586ea85f27a52809d2a4db76680d.php deleted file mode 100644 index c79b6b1..0000000 --- a/storage/framework/views/5e10586ea85f27a52809d2a4db76680d.php +++ /dev/null @@ -1,12 +0,0 @@ - - -> - - - \ No newline at end of file diff --git a/storage/framework/views/5fd932f7a53f435288301570d161158b.php b/storage/framework/views/5fd932f7a53f435288301570d161158b.php new file mode 100644 index 0000000..6f7c9f0 --- /dev/null +++ b/storage/framework/views/5fd932f7a53f435288301570d161158b.php @@ -0,0 +1,377 @@ + + + + +<?php echo e($judulLaporan); ?> + + + + + + + + +
+ +
+ +
+ + + + + +
+
+
LAPORAN ANALISIS SENTIMEN
PER BULAN
+
SISTEM ANALISIS SENTIMEN WISATA JEMBER
+
+
+ Periode
+ nama ?? '-'); ?>

+ Tanggal Cetak
+ format('d M Y H:i')); ?> + +
+
+ + +
Ringkasan
+ +
+
+
Total Ulasan
+

+
Ulasan Masuk
+
+
+
Hasil Analisis
+

+
Data Bersih
+
+
+
Wisata Dibahas
+

+
Destinasi
+
+
+
Akurasi Analisis
+

accuracy ?? 0) * 100, 2)); ?>%

+
Model
+
+
+ + +
Visualisasi
+ +
+
+

Distribusi Sentimen

+ +
+
+

Sentimen per Destinasi

+ +
+
+ + +
Top Wisata Berdasarkan Sentimen Positif
+ + + + + + + + + + + + addLoop($__currentLoopData); foreach($__currentLoopData as $i => $w): $__env->incrementLoopIndices(); $loop = $__env->getLastLoop(); ?> + + + + + + + + + + popLoop(); $loop = $__env->getLastLoop(); ?> +
NoWisataTotalPositifNetralNegatif% Positif
wisata); ?>total); ?>positif); ?>netral); ?>negatif); ?>total > 0 ? round(($w->positif / $w->total) * 100, 2) : 0); ?>%
+ + +
+ KESIMPULAN +

+ Pada periode nama ?? ''); ?>, + terdapat ulasan masuk dengan + data berhasil dianalisis. + Sentimen positif mendominasi dengan persentase %, + diikuti netral % + dan negatif %. +

+
+ + + + +
+ + + + + \ No newline at end of file diff --git a/storage/framework/views/85d32a0e7976e768b836f46c63cb5631.php b/storage/framework/views/85d32a0e7976e768b836f46c63cb5631.php deleted file mode 100644 index c340b41..0000000 --- a/storage/framework/views/85d32a0e7976e768b836f46c63cb5631.php +++ /dev/null @@ -1,4 +0,0 @@ - - - - \ No newline at end of file diff --git a/storage/framework/views/9466373cf194e81d673d71f3c52f4732.php b/storage/framework/views/9466373cf194e81d673d71f3c52f4732.php deleted file mode 100644 index b5ee46d..0000000 --- a/storage/framework/views/9466373cf194e81d673d71f3c52f4732.php +++ /dev/null @@ -1,12 +0,0 @@ - - -> - - - \ No newline at end of file diff --git a/storage/framework/views/95fd4118cc419d74b5f43aee685a79d5.php b/storage/framework/views/95fd4118cc419d74b5f43aee685a79d5.php deleted file mode 100644 index 0dce7f0..0000000 --- a/storage/framework/views/95fd4118cc419d74b5f43aee685a79d5.php +++ /dev/null @@ -1,4 +0,0 @@ - - - - \ No newline at end of file diff --git a/storage/framework/views/9ffa9783eb7ad81c70c9955ed7601fc8.php b/storage/framework/views/9ffa9783eb7ad81c70c9955ed7601fc8.php deleted file mode 100644 index 6d685a8..0000000 --- a/storage/framework/views/9ffa9783eb7ad81c70c9955ed7601fc8.php +++ /dev/null @@ -1,194 +0,0 @@ - - -
- - - -
- \ No newline at end of file diff --git a/storage/framework/views/ab3ba8940f81b3715d18ea258bfa635c.php b/storage/framework/views/ab3ba8940f81b3715d18ea258bfa635c.php deleted file mode 100644 index 5b0ec17..0000000 --- a/storage/framework/views/ab3ba8940f81b3715d18ea258bfa635c.php +++ /dev/null @@ -1,117 +0,0 @@ -startSection('content'); ?> - -
- -
-
-

Riwayat Analisis

-

- Periode tersimpan otomatis setiap kali Ambil Data dijalankan. -

-
- - -
- - -
- - -
- - -
- - -
- - -
-

Import Data Lama dari CSV

-

- Gunakan untuk memasukkan ulasan historis. Kolom wajib: wisata, rating, ulasan, tanggal. Kolom reviewer boleh ada. -

- -
- - - - - - -
- - any()): ?> -
- first()); ?> - -
- -
- -
-
- - - - - - - - - - - - - addLoop($__currentLoopData); foreach($__currentLoopData as $item): $__env->incrementLoopIndices(); $loop = $__env->getLastLoop(); $__empty_1 = false; ?> - - - - - - - - - popLoop(); $loop = $__env->getLastLoop(); if ($__empty_1): ?> - - - - - -
PeriodeTotal UlasanHasil AnalisisWisataTerakhir AnalisisAksi
nama); ?>total_ulasan); ?>total_hasil); ?>total_wisata); ?> - terakhir_analisis ? \Carbon\Carbon::parse($item->terakhir_analisis)->format('d M Y H:i') : '-'); ?> - - - -
- Belum ada riwayat analisis. Jalankan Ambil Data terlebih dahulu. -
-
- - hasPages()): ?> -
- links()); ?> - -
- -
- -
- -stopSection(); ?> -make('layouts.sentara', array_diff_key(get_defined_vars(), ['__data' => 1, '__path' => 1]))->render(); ?> \ No newline at end of file diff --git a/storage/framework/views/ab74199a13c3c0dfdc9e27669a8ce84b.php b/storage/framework/views/ab74199a13c3c0dfdc9e27669a8ce84b.php deleted file mode 100644 index cdf7d19..0000000 --- a/storage/framework/views/ab74199a13c3c0dfdc9e27669a8ce84b.php +++ /dev/null @@ -1,110 +0,0 @@ - - - 'laravel-exceptions-renderer::components.layout','data' => ['exception' => $exception]] + (isset($attributes) && $attributes instanceof Illuminate\View\ComponentAttributeBag ? $attributes->all() : [])); ?> -withName('laravel-exceptions-renderer::layout'); ?> -shouldRender()): ?> -startComponent($component->resolveView(), $component->data()); ?> - -except(\Illuminate\View\AnonymousComponent::ignoredParameterNames()); ?> - -withAttributes(['exception' => \Illuminate\View\Compilers\BladeCompiler::sanitizeComponentAttribute($exception)]); ?> -
- - - 'laravel-exceptions-renderer::components.navigation','data' => ['exception' => $exception]] + (isset($attributes) && $attributes instanceof Illuminate\View\ComponentAttributeBag ? $attributes->all() : [])); ?> -withName('laravel-exceptions-renderer::navigation'); ?> -shouldRender()): ?> -startComponent($component->resolveView(), $component->data()); ?> - -except(\Illuminate\View\AnonymousComponent::ignoredParameterNames()); ?> - -withAttributes(['exception' => \Illuminate\View\Compilers\BladeCompiler::sanitizeComponentAttribute($exception)]); ?> -renderComponent(); ?> - - - - - - - - - - -
-
- - - 'laravel-exceptions-renderer::components.header','data' => ['exception' => $exception]] + (isset($attributes) && $attributes instanceof Illuminate\View\ComponentAttributeBag ? $attributes->all() : [])); ?> -withName('laravel-exceptions-renderer::header'); ?> -shouldRender()): ?> -startComponent($component->resolveView(), $component->data()); ?> - -except(\Illuminate\View\AnonymousComponent::ignoredParameterNames()); ?> - -withAttributes(['exception' => \Illuminate\View\Compilers\BladeCompiler::sanitizeComponentAttribute($exception)]); ?> -renderComponent(); ?> - - - - - - - - - - - - - 'laravel-exceptions-renderer::components.trace-and-editor','data' => ['exception' => $exception]] + (isset($attributes) && $attributes instanceof Illuminate\View\ComponentAttributeBag ? $attributes->all() : [])); ?> -withName('laravel-exceptions-renderer::trace-and-editor'); ?> -shouldRender()): ?> -startComponent($component->resolveView(), $component->data()); ?> - -except(\Illuminate\View\AnonymousComponent::ignoredParameterNames()); ?> - -withAttributes(['exception' => \Illuminate\View\Compilers\BladeCompiler::sanitizeComponentAttribute($exception)]); ?> -renderComponent(); ?> - - - - - - - - - - - - - 'laravel-exceptions-renderer::components.context','data' => ['exception' => $exception]] + (isset($attributes) && $attributes instanceof Illuminate\View\ComponentAttributeBag ? $attributes->all() : [])); ?> -withName('laravel-exceptions-renderer::context'); ?> -shouldRender()): ?> -startComponent($component->resolveView(), $component->data()); ?> - -except(\Illuminate\View\AnonymousComponent::ignoredParameterNames()); ?> - -withAttributes(['exception' => \Illuminate\View\Compilers\BladeCompiler::sanitizeComponentAttribute($exception)]); ?> -renderComponent(); ?> - - - - - - - - - -
-
-
- renderComponent(); ?> - - - - - - - - - - \ No newline at end of file diff --git a/storage/framework/views/bc4cd3286ab3e7fad9f5631387c6dcec.php b/storage/framework/views/bc4cd3286ab3e7fad9f5631387c6dcec.php deleted file mode 100644 index c104d55..0000000 --- a/storage/framework/views/bc4cd3286ab3e7fad9f5631387c6dcec.php +++ /dev/null @@ -1,150 +0,0 @@ - - - - - - -Reset Password - SENTARA - - - - - - - - -
- - -
- -
- - logo - -

- Buat Password Baru -

- -

- Masukkan password baru Anda - pada form di samping. -

- -
- -
- 🔐 -
- -
- - -
- -

- Reset Password -

- -

- Masukkan password baru untuk akun Anda. -

- - any()): ?> -
- first()); ?> - -
- - -
- - - - - - - - - - -
- - - - - - - Minimal 8 karakter - - -
- - - -
- - - - - -
- - - -
- -
- -
- - - \ No newline at end of file diff --git a/storage/framework/views/e4943447826b401e3ae79b116caad596.php b/storage/framework/views/e4943447826b401e3ae79b116caad596.php deleted file mode 100644 index cc09dac..0000000 --- a/storage/framework/views/e4943447826b401e3ae79b116caad596.php +++ /dev/null @@ -1,164 +0,0 @@ - - \ No newline at end of file diff --git a/storage/framework/views/efff736ac6713c641f28af9593bf95e4.php b/storage/framework/views/efff736ac6713c641f28af9593bf95e4.php deleted file mode 100644 index cfca894..0000000 --- a/storage/framework/views/efff736ac6713c641f28af9593bf95e4.php +++ /dev/null @@ -1,8 +0,0 @@ -
merge(['class' => "@container flex flex-col p-6 sm:p-12 bg-white dark:bg-gray-900/80 text-gray-900 dark:text-gray-100 rounded-lg default:col-span-full default:lg:col-span-6 default:row-span-1 dark:ring-1 dark:ring-gray-800 shadow-xl"])); ?> - -> - - -
- \ No newline at end of file diff --git a/storage/framework/views/f06c714e529d7b336cf1277434e6c2dc.php b/storage/framework/views/f06c714e529d7b336cf1277434e6c2dc.php deleted file mode 100644 index 073e6d2..0000000 --- a/storage/framework/views/f06c714e529d7b336cf1277434e6c2dc.php +++ /dev/null @@ -1,366 +0,0 @@ - - - - - -Login - SENTARA - - - - - - - - - - -
- - -
- - - - any()): ?> - - - - - -
- Selamat Datang Kembali! -
- -
- Login untuk mengakses Dashboard Analisis Sentimen Wisata Jember -
- -
- - -
- - -
- -
- -
- - 👁 -
- - -
- - - -
- -
- - -
- - bg - -
- -

- Memahami opini,
- meningkatkan pariwisata
- Jember. -

- - -
- -
- -
- - - - - \ No newline at end of file diff --git a/storage/framework/views/f71e45552383a8f681cb76f2112991b4.php b/storage/framework/views/f71e45552383a8f681cb76f2112991b4.php deleted file mode 100644 index febfb57..0000000 --- a/storage/framework/views/f71e45552383a8f681cb76f2112991b4.php +++ /dev/null @@ -1,70 +0,0 @@ - - - 'laravel-exceptions-renderer::components.card','data' => ['class' => 'mt-6 overflow-x-auto']] + (isset($attributes) && $attributes instanceof Illuminate\View\ComponentAttributeBag ? $attributes->all() : [])); ?> -withName('laravel-exceptions-renderer::card'); ?> -shouldRender()): ?> -startComponent($component->resolveView(), $component->data()); ?> - -except(\Illuminate\View\AnonymousComponent::ignoredParameterNames()); ?> - -withAttributes(['class' => 'mt-6 overflow-x-auto']); ?> -
-
- - - 'laravel-exceptions-renderer::components.trace','data' => ['exception' => $exception]] + (isset($attributes) && $attributes instanceof Illuminate\View\ComponentAttributeBag ? $attributes->all() : [])); ?> -withName('laravel-exceptions-renderer::trace'); ?> -shouldRender()): ?> -startComponent($component->resolveView(), $component->data()); ?> - -except(\Illuminate\View\AnonymousComponent::ignoredParameterNames()); ?> - -withAttributes(['exception' => \Illuminate\View\Compilers\BladeCompiler::sanitizeComponentAttribute($exception)]); ?> -renderComponent(); ?> - - - - - - - - - - - - 'laravel-exceptions-renderer::components.editor','data' => ['exception' => $exception]] + (isset($attributes) && $attributes instanceof Illuminate\View\ComponentAttributeBag ? $attributes->all() : [])); ?> -withName('laravel-exceptions-renderer::editor'); ?> -shouldRender()): ?> -startComponent($component->resolveView(), $component->data()); ?> - -except(\Illuminate\View\AnonymousComponent::ignoredParameterNames()); ?> - -withAttributes(['exception' => \Illuminate\View\Compilers\BladeCompiler::sanitizeComponentAttribute($exception)]); ?> -renderComponent(); ?> - - - - - - - - - -
-
- renderComponent(); ?> - - - - - - - - - - \ No newline at end of file diff --git a/storage/framework/views/f808e5b45ff9a0735aa2c22ec906831d.php b/storage/framework/views/f808e5b45ff9a0735aa2c22ec906831d.php deleted file mode 100644 index b628896..0000000 --- a/storage/framework/views/f808e5b45ff9a0735aa2c22ec906831d.php +++ /dev/null @@ -1,204 +0,0 @@ -startSection('content'); ?> - -
- - -
-
-

Data Ulasan

-

- Periode aktif: nama ?? 'Belum ada data'); ?> - - Lihat riwayat -

-
-
-
- - - - - -
-
- - - -
-
-
- -
- - -
-
-
-
📄
-
-

Total Ulasan

-

-
-
-
-
📍
-
-

Total Wisata

-

-
-
-
-
📅
-
-

Terakhir Update

-

- format('d M Y H:i') : '-'); ?> - -

-
-
-
-
- - - -
- - -
- - -
- - -
- - - -
- - - - - - - - - - - -
- - - - - - -
-
- - - - - - - - - - - - addLoop($__currentLoopData); foreach($__currentLoopData as $i => $item): $__env->incrementLoopIndices(); $loop = $__env->getLastLoop(); $__empty_1 = false; ?> - - - - - - - - popLoop(); $loop = $__env->getLastLoop(); if ($__empty_1): ?> - - - - - -
NoNama WisataRatingUlasanTanggal
firstItem() + $i); ?>wisata); ?> - rating))); ?> - - rating); ?> - -
ulasan); ?>
-
- tanggal - ? \Carbon\Carbon::parse($item->tanggal)->format('d M Y') - : '-'; - } catch (\Throwable $e) { - $tanggalUlasan = $item->tanggal ?: '-'; - } - ?> - - -
Belum ada data
-
- -
-
- Menampilkan firstItem() ?? 0); ?> - lastItem() ?? 0); ?> - - dari total()); ?> data -
-
- onFirstPage()): ?> - « - - « - - - lastPage(); $i++): ?> - currentPage()): ?> - - $mentah->lastPage() - 2 || abs($i - $mentah->currentPage()) <= 1): ?> - - lastPage() - 3): ?> - ... - - - - hasMorePages()): ?> - » - - » - -
-
-
- -stopSection(); ?> - -make('layouts.sentara', array_diff_key(get_defined_vars(), ['__data' => 1, '__path' => 1]))->render(); ?> \ No newline at end of file diff --git a/storage/framework/views/fb843eb1366f55ecbc0d64d0bcaf77ad.php b/storage/framework/views/fb843eb1366f55ecbc0d64d0bcaf77ad.php index 54e54e5..8bf74ac 100644 --- a/storage/framework/views/fb843eb1366f55ecbc0d64d0bcaf77ad.php +++ b/storage/framework/views/fb843eb1366f55ecbc0d64d0bcaf77ad.php @@ -63,45 +63,52 @@
- + -
+
- + - + + - - + - addLoop($__currentLoopData); foreach($__currentLoopData as $item): $__env->incrementLoopIndices(); $loop = $__env->getLastLoop(); ?> + addLoop($__currentLoopData); foreach($__currentLoopData as $item): $__env->incrementLoopIndices(); $loop = $__env->getLastLoop(); ?> + + popLoop(); $loop = $__env->getLastLoop(); ?> - > - + - + - popLoop(); $loop = $__env->getLastLoop(); ?> + - + - + + Lihat Riwayat + - +
diff --git a/storage/framework/views/fc5d5071b5d09a668269efaa445d4eb5.php b/storage/framework/views/fc5d5071b5d09a668269efaa445d4eb5.php deleted file mode 100644 index edf9838..0000000 --- a/storage/framework/views/fc5d5071b5d09a668269efaa445d4eb5.php +++ /dev/null @@ -1,49 +0,0 @@ -
-
-
-
-
- - - -
- - - title()); ?> - - -
- -
- - - 'laravel-exceptions-renderer::components.theme-switcher','data' => []] + (isset($attributes) && $attributes instanceof Illuminate\View\ComponentAttributeBag ? $attributes->all() : [])); ?> -withName('laravel-exceptions-renderer::theme-switcher'); ?> -shouldRender()): ?> -startComponent($component->resolveView(), $component->data()); ?> - -except(\Illuminate\View\AnonymousComponent::ignoredParameterNames()); ?> - -withAttributes([]); ?> -renderComponent(); ?> - - - - - - - - - -
-
-
-
- \ No newline at end of file