diff --git a/app/Http/Controllers/AturanController.php b/app/Http/Controllers/AturanController.php index 05c0a6c..fab4010 100644 --- a/app/Http/Controllers/AturanController.php +++ b/app/Http/Controllers/AturanController.php @@ -6,6 +6,7 @@ use App\Models\Aturan; use App\Models\Gejala; use App\Models\Penyakit; +use Illuminate\Support\Facades\DB; class AturanController extends Controller { /** @@ -17,6 +18,7 @@ public function index() $Gejala = Gejala::all(); $Penyakit = Penyakit::all(); $gejalas = Gejala::orderBy('id_gejala')->get(); + return view("aturan.aturan", compact('aturan','gejalas')); } diff --git a/app/Http/Controllers/Auth/ConfirmPasswordController.php b/app/Http/Controllers/Auth/ConfirmPasswordController.php new file mode 100644 index 0000000..3559954 --- /dev/null +++ b/app/Http/Controllers/Auth/ConfirmPasswordController.php @@ -0,0 +1,39 @@ +middleware('auth'); + } +} diff --git a/app/Http/Controllers/Auth/ForgotPasswordController.php b/app/Http/Controllers/Auth/ForgotPasswordController.php new file mode 100644 index 0000000..465c39c --- /dev/null +++ b/app/Http/Controllers/Auth/ForgotPasswordController.php @@ -0,0 +1,22 @@ +middleware('guest')->except('logout'); + } +} diff --git a/app/Http/Controllers/Auth/RegisterController.php b/app/Http/Controllers/Auth/RegisterController.php new file mode 100644 index 0000000..961ea36 --- /dev/null +++ b/app/Http/Controllers/Auth/RegisterController.php @@ -0,0 +1,72 @@ +middleware('guest'); + } + + /** + * Get a validator for an incoming registration request. + * + * @param array $data + * @return \Illuminate\Contracts\Validation\Validator + */ + protected function validator(array $data) + { + return Validator::make($data, [ + 'name' => ['required', 'string', 'max:255'], + 'email' => ['required', 'string', 'email', 'max:255', 'unique:users'], + 'password' => ['required', 'string', 'min:8', 'confirmed'], + ]); + } + + /** + * Create a new user instance after a valid registration. + * + * @param array $data + * @return \App\Models\User + */ + protected function create(array $data) + { + return User::create([ + 'name' => $data['name'], + 'email' => $data['email'], + 'password' => Hash::make($data['password']), + ]); + } +} diff --git a/app/Http/Controllers/Auth/ResetPasswordController.php b/app/Http/Controllers/Auth/ResetPasswordController.php new file mode 100644 index 0000000..fe965b2 --- /dev/null +++ b/app/Http/Controllers/Auth/ResetPasswordController.php @@ -0,0 +1,29 @@ +middleware('auth'); + $this->middleware('signed')->only('verify'); + $this->middleware('throttle:6,1')->only('verify', 'resend'); + } +} diff --git a/app/Http/Controllers/HomeController.php b/app/Http/Controllers/HomeController.php new file mode 100644 index 0000000..7cbc2c3 --- /dev/null +++ b/app/Http/Controllers/HomeController.php @@ -0,0 +1,28 @@ +middleware('auth'); + } + + /** + * Show the application dashboard. + * + * @return \Illuminate\Contracts\Support\Renderable + */ + public function index() + { + return view('home'); + } +} diff --git a/app/Http/Controllers/KonsultasiController.php b/app/Http/Controllers/KonsultasiController.php new file mode 100644 index 0000000..5e3b9e5 --- /dev/null +++ b/app/Http/Controllers/KonsultasiController.php @@ -0,0 +1,267 @@ +all()); + } + /** + * Display the specified resource. + */ + public function showdata($data_diagnosa) + { + $dataDiagnosa = Hasil::find($data_diagnosa)->toArray(); + + $dataTampilan = [ + 'navLink' => 'diagnosa', + 'dataDiagnosa' => $dataDiagnosa, + 'hasilDiagnosa' => json_decode($dataDiagnosa['hasil_diagnosa']) + ]; + + return view('konsultasi.hasilDiagnosa', $dataTampilan); + } + + public function hitungKonsultasi(Request $request) + { + $validateReq = $request->validate([ + 'nama' => 'required', + 'alamat' => 'required', + 'jenis_sapi' => 'required' + ]); + + $arrHasilUser = $request->input('resultGejala'); + + if ($arrHasilUser == null) { + return back()->withInput()->with('error', 'Anda belum memilih gejala'); + } else { + if (count($arrHasilUser) < 2) { + return back()->withInput()->with('error', 'Minimal gejala yang dipilih adalah 2 gejala'); + } else { + foreach ($arrHasilUser as $key => $value) { + $dataPenyakit[$key] = Aturan::where('kode_gejala', $value) + ->select('kode_penyakit') + ->get() + ->toArray(); + foreach ($dataPenyakit[$key] as $a => $b) { + $resultData[$key]['daftar_penyakit'][$a] = $b['kode_penyakit']; + } + $dataNilaiDensitas[$key] = Gejala::where('kode_gejala', $value) + ->select('nilai_densitas', 'gejala') + ->get() + ->toArray(); + $dataGejala[$key] = $dataNilaiDensitas[$key][0]['gejala']; + $resultData[$key]['belief'] = $dataNilaiDensitas[$key][0]['nilai_densitas']; + $resultData[$key]['plausibility'] = 1 - $dataNilaiDensitas[$key][0]['nilai_densitas']; + } + + $variabelTampilan = $this->mulaiPerhitungan($resultData); + + foreach ($dataGejala as $key => $value) { + $variabelTampilan['Gejala_Penyakit'][$key]['kode_gejala'] = $arrHasilUser[$key]; + $variabelTampilan['Gejala_Penyakit'][$key]['nama_gejala'] = $value; + } + + // Penyimpanan Step Pertama + $diagnosa = new Diagnosa(); + $diagnosa->nama = $validateReq['nama']; + $diagnosa->alamat = $validateReq['alamat']; + $diagnosa->save(); + $idDiagnosa = $diagnosa->id_diagnosa; + + // Penyimpanan Step Kedua + $hasil = new Hasil(); + $hasil->nama = $validateReq['nama']; + $hasil->alamat = $validateReq['alamat']; + $hasil->jenis_sapi = $validateReq['jenis_sapi']; + $hasil->hasil_diagnosa = json_encode($variabelTampilan); + $hasil->solusi = $variabelTampilan['Solusi_Penyakit']['solusi']; + $hasil->save(); + $idHasil = $hasil->id_hasil; + + if ($idDiagnosa == $idHasil) { + return redirect()->to('diagnosa/' . $idDiagnosa); + } else { + return back()->withInput(); + } + } + } + } + + public function mulaiPerhitungan($dataAcuan) + { + $x = 0; + for ($i = 0; $i < count($dataAcuan); $i++) { + $hasilKonversi[$i]['data'][0]['array'] = $dataAcuan[$i]['daftar_penyakit']; + $hasilKonversi[$i]['data'][0]['value'] = $dataAcuan[$i]['belief']; + $hasilKonversi[$i]['data'][1]['array'] = []; + $hasilKonversi[$i]['data'][1]['value'] = $dataAcuan[$i]['plausibility']; + + $x++; + } + + $result = $this->startingPoint(count($hasilKonversi) - 2, $hasilKonversi); + + $arrResult = []; + foreach ($result['data'] as $key => $value) { + $arrResult[$key] = $value['value']; + } + + $indexMaxValue = array_search(max($arrResult), $arrResult); + $nilaiBelief = round($result['data'][$indexMaxValue]['value'], 2); + $persentase = (round($result['data'][$indexMaxValue]['value'], 2) * 100) . " %"; + + $kodePenyakit = $result['data'][$indexMaxValue]['array'][0]; + $dataPenyakit = Penyakit::where('kode_penyakit', $kodePenyakit) + ->select('nama_penyakit') + ->get() + ->toArray()[0]; + $dataSolusi = Penyakit::where('kode_penyakit', $kodePenyakit) + ->select('solusi') + ->get() + ->toArray()[0]; + + $jsonData = [ + 'Nama_Penyakit' => $dataPenyakit, + 'Nilai_Belief_Penyakit' => $nilaiBelief, + 'Persentase_Penyakit' => $persentase, + 'Solusi_Penyakit' => $dataSolusi, + ]; + + return $jsonData; + } + + public function startingPoint(int $jumlah, array $myData, $data = [], int $indeks = 0) + { + if (count($data) == 0) { + $hasilAkhir = $this->kalkulatorPerhitungan($myData[$indeks], $myData[$indeks + 1]); + } else { + $hasilAkhir = $this->kalkulatorPerhitungan($data, $myData[$indeks + 1]); + } + + if ($indeks < $jumlah) { + return $this->startingPoint($jumlah, $myData, $hasilAkhir, $indeks + 1); + } else { + return $hasilAkhir; + } + } + + public function kalkulatorPerhitungan($array1, $array2) + { + $hasilAkhir['data'] = []; + + $hasilSementara = []; + $z = 0; + for ($x = 0; $x < count($array1['data']); $x++) { + for ($y = 0; $y < count($array2['data']); $y++) { + if (count($array1['data'][$x]['array']) != 0 && count($array2['data'][$y]['array']) != 0) { + $hasilSementara[$z]['array'] = json_encode(array_values(array_intersect($array1['data'][$x]['array'], $array2['data'][$y]['array']))); + if (count(json_decode($hasilSementara[$z]['array'])) == 0) { + $hasilSementara[$z]['status'] = "Himpunan Kosong"; + } + } else { + $hasilSementara[$z]['array'] = json_encode(array_merge($array1['data'][$x]['array'], $array2['data'][$y]['array'])); + } + $hasilSementara[$z]['value'] = $array1['data'][$x]['value'] * $array2['data'][$y]['value']; + $z++; + } + } + + $pushArray = []; + foreach ($hasilSementara as $hasil) { + array_push($pushArray, $hasil['array']); + } + + $pushArrayCat = []; + foreach (array_count_values($pushArray) as $key => $value) { + array_push($pushArrayCat, $key); + } + + $tetapan = 0; + foreach ($hasilSementara as $datahasil) { + if (isset($datahasil['status']) && $datahasil['status'] == "Himpunan Kosong") { + $tetapan += $datahasil['value']; + } + } + + $tetapan = 1 - $tetapan; + + $finalResult = []; + for ($y = 0; $y < count($pushArrayCat); $y++) { + $decode[$y] = json_decode($pushArrayCat[$y]); + $finalResult[$y]['array'] = $decode[$y]; + $finalResult[$y]['value'] = 0; + for ($x = 0; $x < count($hasilSementara); $x++) { + $array[$x] = json_decode($hasilSementara[$x]['array']); + if ($decode[$y] == $array[$x]) { + if (!isset($hasilSementara[$x]['status'])) { + $finalResult[$y]['value'] += $hasilSementara[$x]['value']; + } + } + } + $finalResult[$y]['value'] = $finalResult[$y]['value'] / $tetapan; + } + + for ($i = 0; $i < count($finalResult); $i++) { + $hasilAkhir['data'][$i] = $finalResult[$i]; + } + + return $hasilAkhir; + } + + /** + * Show the form for editing the specified resource. + */ + public function edit(string $id) + { + // + } + + /** + * Update the specified resource in storage. + */ + public function update(Request $request, string $id) + { + // + } + + /** + * Remove the specified resource from storage. + */ + public function destroy(string $id) + { + // + } +} diff --git a/app/Models/Diagnosa.php b/app/Models/Diagnosa.php new file mode 100644 index 0000000..ce541cf --- /dev/null +++ b/app/Models/Diagnosa.php @@ -0,0 +1,16 @@ +string('email')->index(); + $table->string('token'); + $table->timestamp('created_at')->nullable(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('password_resets'); + } +}; diff --git a/database/migrations/2024_02_13_014922_create_gejala_table.php b/database/migrations/2024_02_13_014922_create_gejala_table.php index c154f93..40d2b50 100644 --- a/database/migrations/2024_02_13_014922_create_gejala_table.php +++ b/database/migrations/2024_02_13_014922_create_gejala_table.php @@ -14,6 +14,7 @@ public function up(): void $table->id('id_gejala'); $table->string('kode_gejala'); $table->string('gejala'); + $table->double('nilai_densitas'); $table->timestamps(); }); diff --git a/database/migrations/2024_02_13_015637_create_penyakit_table.php b/database/migrations/2024_02_13_015637_create_penyakit_table.php index 5f81b06..ed5ee01 100644 --- a/database/migrations/2024_02_13_015637_create_penyakit_table.php +++ b/database/migrations/2024_02_13_015637_create_penyakit_table.php @@ -16,7 +16,7 @@ public function up(): void $table->string('kode_penyakit'); $table->string('nama_penyakit'); $table->string('deskripsi_penyakit'); - $table->string('solusi_penyakit'); + $table->longText('solusi'); }); } diff --git a/database/migrations/2024_02_13_015750_create_aturan_table.php b/database/migrations/2024_02_13_015750_create_aturan_table.php index 0404954..9786e31 100644 --- a/database/migrations/2024_02_13_015750_create_aturan_table.php +++ b/database/migrations/2024_02_13_015750_create_aturan_table.php @@ -13,15 +13,12 @@ public function up(): void { Schema::create('aturan', function (Blueprint $table) { $table->id('id_aturan'); - $table->unsignedBigInteger('id_gejala'); - $table->unsignedBigInteger('id_penyakit'); - $table->float('belief'); - - - $table->foreign('id_gejala')->references('id_gejala')->on('gejala')->onDelete('cascade'); - $table->foreign('id_penyakit')->references('id_penyakit')->on('penyakit')->onDelete('cascade'); + $table->string('kode_penyakit'); + $table->string('kode_gejala'); + $table->timestamps(); }); + } /** diff --git a/database/migrations/2024_02_29_063759_create_tabel_data_hasil.php b/database/migrations/2024_02_29_063759_create_tabel_data_hasil.php new file mode 100644 index 0000000..e8fca9f --- /dev/null +++ b/database/migrations/2024_02_29_063759_create_tabel_data_hasil.php @@ -0,0 +1,32 @@ +id('id_hasil'); + $table->string('nama'); + $table->text('alamat'); + $table->string('jenis_sapi'); + $table->longText('hasil_diagnosa'); + $table->longText('solusi'); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::dropIfExists('table_data_hasil'); + } +}; diff --git a/database/migrations/2024_02_29_070831_create_tabel_diagnosa.php b/database/migrations/2024_02_29_070831_create_tabel_diagnosa.php new file mode 100644 index 0000000..fa0900a --- /dev/null +++ b/database/migrations/2024_02_29_070831_create_tabel_diagnosa.php @@ -0,0 +1,31 @@ +id('id_diagnosa'); + $table->string('nama'); + $table->text('alamat'); + $table->timestamps(); + }); + } + + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::dropIfExists('tabel_diagnosa'); + } +}; diff --git a/database/seeders/AturanSeeder.php b/database/seeders/AturanSeeder.php new file mode 100644 index 0000000..6a3ed2d --- /dev/null +++ b/database/seeders/AturanSeeder.php @@ -0,0 +1,92 @@ +insert([ + [ + 'kode_penyakit' => 'P1', + 'kode_gejala' =>'G1', + ], + [ + 'kode_penyakit' => 'P1', + 'kode_gejala' =>'G2', + ], + [ + 'kode_penyakit' => 'P1', + 'kode_gejala' =>'G3', + ], + [ + 'kode_penyakit' => 'P2', + 'kode_gejala' =>'G3', + ], + + [ + 'kode_penyakit' => 'P1', + 'kode_gejala' =>'G4', + ], + [ + 'kode_penyakit' => 'P2', + 'kode_gejala' =>'G4', + ], + [ + 'kode_penyakit' => 'P1', + 'kode_gejala' =>'G5', + ], + [ + 'kode_penyakit' => 'P2', + 'kode_gejala' =>'G5', + ], + [ + 'kode_penyakit' => 'P1', + 'kode_gejala' =>'G6', + ], + [ + 'kode_penyakit' => 'P2', + 'kode_gejala' =>'G6', + ], + [ + 'kode_penyakit' => 'P1', + 'kode_gejala' =>'G7', + ], + [ + 'kode_penyakit' => 'P1', + 'kode_gejala' =>'G8', + ], + + [ + 'kode_penyakit' => 'P2', + 'kode_gejala' =>'G8', + ], + [ + 'kode_penyakit' => 'P1', + 'kode_gejala' =>'G9', + ], + [ + 'kode_penyakit' => 'P2', + 'kode_gejala' =>'G9', + ], + [ + 'kode_penyakit' => 'P1', + 'kode_gejala' =>'G10', + ], + [ + 'kode_penyakit' => 'P2', + 'kode_gejala' =>'G11', + ], + [ + 'kode_penyakit' => 'P2', + 'kode_gejala' =>'G12', + ], + ]); + } +} diff --git a/database/seeders/GejalaSeeder.php b/database/seeders/GejalaSeeder.php index 92fffcd..e2fd8b9 100644 --- a/database/seeders/GejalaSeeder.php +++ b/database/seeders/GejalaSeeder.php @@ -17,51 +17,65 @@ public function run(): void [ [ 'kode_gejala' => 'G1', - 'gejala' =>'Terdapat ulcer atau luka di lidah, bibir, mulut, dan kuku kaki' + 'gejala' =>'Terdapat ulcer atau luka di lidah, bibir, mulut, dan kuku kaki', + 'nilai_densitas'=>'0.9', ], [ 'kode_gejala' => 'G2', - 'gejala' =>'Sapi mengalami demam dan lesu' + 'gejala' =>'Sapi mengalami demam dan lesu', + 'nilai_densitas'=>'0.5', ], [ 'kode_gejala' => 'G3', - 'gejala' =>'Sapi mengalami kehilangan nafsu makan' + 'gejala' =>'Sapi mengalami kehilangan nafsu makan', + 'nilai_densitas'=>'0.4', ], [ 'kode_gejala' => 'G4', - 'gejala' =>' Produksi susu sapi menurun' + 'gejala' =>' Produksi susu sapi menurun', + 'nilai_densitas'=>'0.4', ], [ 'kode_gejala' => 'G5', - 'gejala' =>'Sapi mengalami kesulitan bergerak atau berjalan karena rasa sakit yang dialami' + 'gejala' =>'Sapi mengalami kesulitan bergerak atau berjalan karena rasa sakit yang dialami', + 'nilai_densitas'=>'0.5', + ], [ 'kode_gejala' => 'G6', - 'gejala' =>'Kuku kaki mengalami pembengkakan dan kerusakan' + 'gejala' =>'Kuku kaki mengalami pembengkakan dan kerusakan', + 'nilai_densitas'=>'0.9', ], [ 'kode_gejala' => 'G7', - 'gejala' =>'keluar air liur yang berlebihan' + 'gejala' =>'keluar air liur yang berlebihan', + 'nilai_densitas'=>'0.9', ], [ 'kode_gejala' => 'G8', - 'gejala' =>'Ambruk atau tidak dapat berdiri' + 'gejala' =>'Ambruk atau tidak dapat berdiri', + 'nilai_densitas'=>'0.9', ], [ 'kode_gejala' => 'G9', - 'gejala' =>' Kondisi fisik yang kurus atau menurun' + 'gejala' =>' Kondisi fisik yang kurus atau menurun', + 'nilai_densitas'=>'0.4', ], [ 'kode_gejala' => 'G10', - 'gejala' =>'Terjadi tanda-tanda pernapasan yang abnormal, seperti kesulitan bernapas dan batuk' + 'gejala' =>'Terjadi tanda-tanda pernapasan yang abnormal, seperti kesulitan bernapas dan batuk', + 'nilai_densitas'=>'0.4', ], [ 'kode_gejala' => 'G11', - 'gejala' =>'Luka atau bisul pada kuku atau jari kaki' + 'gejala' =>'Luka atau bisul pada kuku atau jari kaki', + 'nilai_densitas'=>'0.5', ], [ 'kode_gejala' => 'G12', - 'gejala' =>'Terlihat cairan atau nanah keluar dari kuku atau jari kaki' + 'gejala' =>'Terlihat cairan atau nanah keluar dari kuku atau jari kaki', + 'nilai_densitas'=>'0.6', + ] ]); } diff --git a/database/seeders/PenyakitSeeder.php b/database/seeders/PenyakitSeeder.php index 733c7f1..677f924 100644 --- a/database/seeders/PenyakitSeeder.php +++ b/database/seeders/PenyakitSeeder.php @@ -5,6 +5,7 @@ use Illuminate\Database\Console\Seeds\WithoutModelEvents; use Illuminate\Database\Seeder; use Illuminate\Support\Facades\DB; + class PenyakitSeeder extends Seeder { /** @@ -14,17 +15,19 @@ public function run(): void { DB::table("Penyakit")->insert( [ - [ - 'kode_penyakit'=>'P1', - 'nama_penyakit'=> 'Penyakit Mulut dan Kuku ( PMK )', - 'deskripsi_penyakit'=> 'Penyakit yang diakitbatkan oleh virus dan menyebabkan kematian yang sangat tinggi', - 'solusi_penyakit'=> 'Memanggil dokter hewan secepatnya' - ], - [ - 'kode_penyakit'=> 'P2', - 'nama_penyakit'=> 'Penyakit Kuku Bukan PMK', - 'deskripsi_penyakit'=> 'Penyakit yang diakibatkan oleh virus atau bakteri dan tidak memiliki efek yang berbahaya seperti PMK', - 'solusi_penyakit'=> 'Ke dokter Hewan Secepatnya'] - ]); + [ + 'kode_penyakit' => 'P1', + 'nama_penyakit' => 'Penyakit Mulut dan Kuku (PMK)', + 'deskripsi_penyakit' => 'Penyakit yang disebabkan oleh virus dan menyebabkan kematian yang sangat tinggi', + 'solusi' => json_encode(['Memanggil dokter hewan secepatnya']) + ], + [ + 'kode_penyakit' => 'P2', + 'nama_penyakit' => 'Penyakit Kuku Bukan PMK', + 'deskripsi_penyakit' => 'Penyakit yang disebabkan oleh virus atau bakteri dan tidak memiliki efek yang berbahaya seperti PMK', + 'solusi' => json_encode(['Ke dokter Hewan secepatnya']) + ] + ] + ); } } diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..4bf0f58 --- /dev/null +++ b/package-lock.json @@ -0,0 +1,686 @@ +{ + "name": "sistemPakar", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "devDependencies": { + "axios": "^1.1.2", + "laravel-vite-plugin": "^0.8.0", + "vite": "^4.0.0" + } + }, + "node_modules/@esbuild/android-arm": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.18.20.tgz", + "integrity": "sha512-fyi7TDI/ijKKNZTUJAQqiG5T7YjJXgnzkURqmGj13C6dCqckZBLdl4h7bkhHt/t0WP+zO9/zwroDvANaOqO5Sw==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-arm64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.18.20.tgz", + "integrity": "sha512-Nz4rJcchGDtENV0eMKUNa6L12zz2zBDXuhj/Vjh18zGqB44Bi7MBMSXjgunJgjRhCmKOjnPuZp4Mb6OKqtMHLQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.18.20.tgz", + "integrity": "sha512-8GDdlePJA8D6zlZYJV/jnrRAi6rOiNaCC/JclcXpB+KIuvfBN4owLtgzY2bsxnx666XjJx2kDPUmnTtR8qKQUg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/darwin-arm64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.18.20.tgz", + "integrity": "sha512-bxRHW5kHU38zS2lPTPOyuyTm+S+eobPUnTNkdJEfAddYgEcll4xkT8DB9d2008DtTbl7uJag2HuE5NZAZgnNEA==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/darwin-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.18.20.tgz", + "integrity": "sha512-pc5gxlMDxzm513qPGbCbDukOdsGtKhfxD1zJKXjCCcU7ju50O7MeAZ8c4krSJcOIJGFR+qx21yMMVYwiQvyTyQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.18.20.tgz", + "integrity": "sha512-yqDQHy4QHevpMAaxhhIwYPMv1NECwOvIpGCZkECn8w2WFHXjEwrBn3CeNIYsibZ/iZEUemj++M26W3cNR5h+Tw==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/freebsd-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.18.20.tgz", + "integrity": "sha512-tgWRPPuQsd3RmBZwarGVHZQvtzfEBOreNuxEMKFcd5DaDn2PbBxfwLcj4+aenoh7ctXcbXmOQIn8HI6mCSw5MQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-arm": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.18.20.tgz", + "integrity": "sha512-/5bHkMWnq1EgKr1V+Ybz3s1hWXok7mDFUMQ4cG10AfW3wL02PSZi5kFpYKrptDsgb2WAJIvRcDm+qIvXf/apvg==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-arm64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.18.20.tgz", + "integrity": "sha512-2YbscF+UL7SQAVIpnWvYwM+3LskyDmPhe31pE7/aoTMFKKzIc9lLbyGUpmmb8a8AixOL61sQ/mFh3jEjHYFvdA==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-ia32": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.18.20.tgz", + "integrity": "sha512-P4etWwq6IsReT0E1KHU40bOnzMHoH73aXp96Fs8TIT6z9Hu8G6+0SHSw9i2isWrD2nbx2qo5yUqACgdfVGx7TA==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-loong64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.18.20.tgz", + "integrity": "sha512-nXW8nqBTrOpDLPgPY9uV+/1DjxoQ7DoB2N8eocyq8I9XuqJ7BiAMDMf9n1xZM9TgW0J8zrquIb/A7s3BJv7rjg==", + "cpu": [ + "loong64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-mips64el": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.18.20.tgz", + "integrity": "sha512-d5NeaXZcHp8PzYy5VnXV3VSd2D328Zb+9dEq5HE6bw6+N86JVPExrA6O68OPwobntbNJ0pzCpUFZTo3w0GyetQ==", + "cpu": [ + "mips64el" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-ppc64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.18.20.tgz", + "integrity": "sha512-WHPyeScRNcmANnLQkq6AfyXRFr5D6N2sKgkFo2FqguP44Nw2eyDlbTdZwd9GYk98DZG9QItIiTlFLHJHjxP3FA==", + "cpu": [ + "ppc64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-riscv64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.18.20.tgz", + "integrity": "sha512-WSxo6h5ecI5XH34KC7w5veNnKkju3zBRLEQNY7mv5mtBmrP/MjNBCAlsM2u5hDBlS3NGcTQpoBvRzqBcRtpq1A==", + "cpu": [ + "riscv64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-s390x": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.18.20.tgz", + "integrity": "sha512-+8231GMs3mAEth6Ja1iK0a1sQ3ohfcpzpRLH8uuc5/KVDFneH6jtAJLFGafpzpMRO6DzJ6AvXKze9LfFMrIHVQ==", + "cpu": [ + "s390x" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.18.20.tgz", + "integrity": "sha512-UYqiqemphJcNsFEskc73jQ7B9jgwjWrSayxawS6UVFZGWrAAtkzjxSqnoclCXxWtfwLdzU+vTpcNYhpn43uP1w==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/netbsd-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.18.20.tgz", + "integrity": "sha512-iO1c++VP6xUBUmltHZoMtCUdPlnPGdBom6IrO4gyKPFFVBKioIImVooR5I83nTew5UOYrk3gIJhbZh8X44y06A==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/openbsd-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.18.20.tgz", + "integrity": "sha512-e5e4YSsuQfX4cxcygw/UCPIEP6wbIL+se3sxPdCiMbFLBWu0eiZOJ7WoD+ptCLrmjZBK1Wk7I6D/I3NglUGOxg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/sunos-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.18.20.tgz", + "integrity": "sha512-kDbFRFp0YpTQVVrqUd5FTYmWo45zGaXe0X8E1G/LKFC0v8x0vWrhOWSLITcCn63lmZIxfOMXtCfti/RxN/0wnQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-arm64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.18.20.tgz", + "integrity": "sha512-ddYFR6ItYgoaq4v4JmQQaAI5s7npztfV4Ag6NrhiaW0RrnOXqBkgwZLofVTlq1daVTQNhtI5oieTvkRPfZrePg==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-ia32": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.18.20.tgz", + "integrity": "sha512-Wv7QBi3ID/rROT08SABTS7eV4hX26sVduqDOTe1MvGMjNd3EjOz4b7zeexIR62GTIEKrfJXKL9LFxTYgkyeu7g==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.18.20.tgz", + "integrity": "sha512-kTdfRcSiDfQca/y9QIkng02avJ+NCaQvrMejlsB3RRv5sE9rRoeBPISaZpKxHELzRxZyLvNts1P27W3wV+8geQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", + "dev": true + }, + "node_modules/axios": { + "version": "1.6.7", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.6.7.tgz", + "integrity": "sha512-/hDJGff6/c7u0hDkvkGxR/oy6CbCs8ziCsC7SqmhjfozqiJGc8Z11wrv9z9lYfY4K8l+H9TpjcMDX0xOZmx+RA==", + "dev": true, + "dependencies": { + "follow-redirects": "^1.15.4", + "form-data": "^4.0.0", + "proxy-from-env": "^1.1.0" + } + }, + "node_modules/combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "dev": true, + "dependencies": { + "delayed-stream": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", + "dev": true, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/esbuild": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.18.20.tgz", + "integrity": "sha512-ceqxoedUrcayh7Y7ZX6NdbbDzGROiyVBgC4PriJThBKSVPWnnFHZAkfI1lJT8QFkOwH4qOS2SJkS4wvpGl8BpA==", + "dev": true, + "hasInstallScript": true, + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=12" + }, + "optionalDependencies": { + "@esbuild/android-arm": "0.18.20", + "@esbuild/android-arm64": "0.18.20", + "@esbuild/android-x64": "0.18.20", + "@esbuild/darwin-arm64": "0.18.20", + "@esbuild/darwin-x64": "0.18.20", + "@esbuild/freebsd-arm64": "0.18.20", + "@esbuild/freebsd-x64": "0.18.20", + "@esbuild/linux-arm": "0.18.20", + "@esbuild/linux-arm64": "0.18.20", + "@esbuild/linux-ia32": "0.18.20", + "@esbuild/linux-loong64": "0.18.20", + "@esbuild/linux-mips64el": "0.18.20", + "@esbuild/linux-ppc64": "0.18.20", + "@esbuild/linux-riscv64": "0.18.20", + "@esbuild/linux-s390x": "0.18.20", + "@esbuild/linux-x64": "0.18.20", + "@esbuild/netbsd-x64": "0.18.20", + "@esbuild/openbsd-x64": "0.18.20", + "@esbuild/sunos-x64": "0.18.20", + "@esbuild/win32-arm64": "0.18.20", + "@esbuild/win32-ia32": "0.18.20", + "@esbuild/win32-x64": "0.18.20" + } + }, + "node_modules/follow-redirects": { + "version": "1.15.5", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.5.tgz", + "integrity": "sha512-vSFWUON1B+yAw1VN4xMfxgn5fTUiaOzAJCKBwIIgT/+7CuGy9+r+5gITvP62j3RmaD5Ph65UaERdOSRGUzZtgw==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], + "engines": { + "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } + } + }, + "node_modules/form-data": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", + "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", + "dev": true, + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "dev": true, + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/laravel-vite-plugin": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/laravel-vite-plugin/-/laravel-vite-plugin-0.8.1.tgz", + "integrity": "sha512-fxzUDjOA37kOsYq8dP+3oPIlw8/kJVXwu0hOXLun82R1LpV02shGeWGYKx2lbpKffL5I0sfPPjfqbYxuqBluAA==", + "dev": true, + "dependencies": { + "picocolors": "^1.0.0", + "vite-plugin-full-reload": "^1.0.5" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "vite": "^3.0.0 || ^4.0.0" + } + }, + "node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "dev": true, + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/nanoid": { + "version": "3.3.7", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz", + "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/picocolors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", + "dev": true + }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/postcss": { + "version": "8.4.35", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.35.tgz", + "integrity": "sha512-u5U8qYpBCpN13BsiEB0CbR1Hhh4Gc0zLFuedrHJKMctHCHAGrMdG0PRM/KErzAL3CU6/eckEtmHNB3x6e3c0vA==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "nanoid": "^3.3.7", + "picocolors": "^1.0.0", + "source-map-js": "^1.0.2" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/proxy-from-env": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", + "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==", + "dev": true + }, + "node_modules/rollup": { + "version": "3.29.4", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-3.29.4.tgz", + "integrity": "sha512-oWzmBZwvYrU0iJHtDmhsm662rC15FRXmcjCk1xD771dFDx5jJ02ufAQQTn0etB2emNk4J9EZg/yWKpsn9BWGRw==", + "dev": true, + "bin": { + "rollup": "dist/bin/rollup" + }, + "engines": { + "node": ">=14.18.0", + "npm": ">=8.0.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/source-map-js": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", + "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/vite": { + "version": "4.5.2", + "resolved": "https://registry.npmjs.org/vite/-/vite-4.5.2.tgz", + "integrity": "sha512-tBCZBNSBbHQkaGyhGCDUGqeo2ph8Fstyp6FMSvTtsXeZSPpSMGlviAOav2hxVTqFcx8Hj/twtWKsMJXNY0xI8w==", + "dev": true, + "dependencies": { + "esbuild": "^0.18.10", + "postcss": "^8.4.27", + "rollup": "^3.27.1" + }, + "bin": { + "vite": "bin/vite.js" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/vitejs/vite?sponsor=1" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + }, + "peerDependencies": { + "@types/node": ">= 14", + "less": "*", + "lightningcss": "^1.21.0", + "sass": "*", + "stylus": "*", + "sugarss": "*", + "terser": "^5.4.0" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "less": { + "optional": true + }, + "lightningcss": { + "optional": true + }, + "sass": { + "optional": true + }, + "stylus": { + "optional": true + }, + "sugarss": { + "optional": true + }, + "terser": { + "optional": true + } + } + }, + "node_modules/vite-plugin-full-reload": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/vite-plugin-full-reload/-/vite-plugin-full-reload-1.1.0.tgz", + "integrity": "sha512-3cObNDzX6DdfhD9E7kf6w2mNunFpD7drxyNgHLw+XwIYAgb+Xt16SEXo0Up4VH+TMf3n+DSVJZtW2POBGcBYAA==", + "dev": true, + "dependencies": { + "picocolors": "^1.0.0", + "picomatch": "^2.3.1" + } + } + } +} diff --git a/package.json b/package.json index 0e6480f..2796b73 100644 --- a/package.json +++ b/package.json @@ -6,8 +6,11 @@ "build": "vite build" }, "devDependencies": { + "@popperjs/core": "^2.11.6", "axios": "^1.1.2", + "bootstrap": "^5.2.3", "laravel-vite-plugin": "^0.8.0", + "sass": "^1.56.1", "vite": "^4.0.0" } } diff --git a/resources/js/bootstrap.js b/resources/js/bootstrap.js index 846d350..46f7a33 100644 --- a/resources/js/bootstrap.js +++ b/resources/js/bootstrap.js @@ -1,3 +1,5 @@ +import 'bootstrap'; + /** * We'll load the axios HTTP library which allows us to easily issue requests * to our Laravel back-end. This library automatically handles sending the @@ -24,7 +26,7 @@ window.axios.defaults.headers.common['X-Requested-With'] = 'XMLHttpRequest'; // broadcaster: 'pusher', // key: import.meta.env.VITE_PUSHER_APP_KEY, // cluster: import.meta.env.VITE_PUSHER_APP_CLUSTER ?? 'mt1', -// wsHost: import.meta.env.VITE_PUSHER_HOST ? import.meta.env.VITE_PUSHER_HOST : `ws-${import.meta.env.VITE_PUSHER_APP_CLUSTER}.pusher.com`, +// wsHost: import.meta.env.VITE_PUSHER_HOST ?? `ws-${import.meta.env.VITE_PUSHER_APP_CLUSTER}.pusher.com`, // wsPort: import.meta.env.VITE_PUSHER_PORT ?? 80, // wssPort: import.meta.env.VITE_PUSHER_PORT ?? 443, // forceTLS: (import.meta.env.VITE_PUSHER_SCHEME ?? 'https') === 'https', diff --git a/resources/sass/_variables.scss b/resources/sass/_variables.scss new file mode 100644 index 0000000..172daaa --- /dev/null +++ b/resources/sass/_variables.scss @@ -0,0 +1,7 @@ +// Body +$body-bg: #f8fafc; + +// Typography +$font-family-sans-serif: 'Nunito', sans-serif; +$font-size-base: 0.9rem; +$line-height-base: 1.6; diff --git a/resources/sass/app.scss b/resources/sass/app.scss new file mode 100644 index 0000000..1026a0b --- /dev/null +++ b/resources/sass/app.scss @@ -0,0 +1,8 @@ +// Fonts +@import url('https://fonts.bunny.net/css?family=Nunito'); + +// Variables +@import 'variables'; + +// Bootstrap +@import 'bootstrap/scss/bootstrap'; diff --git a/resources/views/aturan/add.-aturan.blade.php b/resources/views/aturan/add.-aturan.blade.php new file mode 100644 index 0000000..e69de29 diff --git a/resources/views/aturan/aturan.blade.php b/resources/views/aturan/aturan.blade.php index a644c57..33f1f56 100644 --- a/resources/views/aturan/aturan.blade.php +++ b/resources/views/aturan/aturan.blade.php @@ -2,6 +2,9 @@ @section('title', 'aturan') @section('konten') +
+ Tambah Aturan +
@@ -17,26 +20,27 @@ - @php - $gejalaGroups = $aturan->groupBy('gejala_id'); - @endphp - @foreach ($gejalaGroups as $gejalaId => $group) + @foreach ($aturan as $data) - - + + + + + + - - + {{-- @include('dashboard.user.edit') --}} + @endforeach
{{ $loop->iteration }}{{ optional($group->first()->gejala)->kode_gejala}}{{ optional($group->first()->gejala)->gejala}}{{ optional($data->gejala)->kode_gejala}}{{ optional($data->gejala)->gejala}}{{ optional($data->penyakit)->nama_penyakit}} ( {{optional($data->penyakit)->kode_penyakit}}) {{ $data->belief }} - @foreach ($group as $data) - {{ $data->penyakit->nama_penyakit }} ({{ $data->penyakit->kode_penyakit }})
- @endforeach -
{{ $group->first()->belief }} - + + + {{-- + + --}}
diff --git a/resources/views/auth/login.blade.php b/resources/views/auth/login.blade.php new file mode 100644 index 0000000..ea9ac94 --- /dev/null +++ b/resources/views/auth/login.blade.php @@ -0,0 +1,73 @@ +@extends('layouts.app') + +@section('content') +
+
+
+
+
{{ __('Login') }}
+ +
+
+ @csrf + +
+ + +
+ + + @error('email') + + {{ $message }} + + @enderror +
+
+ +
+ + +
+ + + @error('password') + + {{ $message }} + + @enderror +
+
+ +
+
+
+ + + +
+
+
+ +
+
+ + + @if (Route::has('password.request')) + + {{ __('Forgot Your Password?') }} + + @endif +
+
+
+
+
+
+
+
+@endsection diff --git a/resources/views/auth/passwords/confirm.blade.php b/resources/views/auth/passwords/confirm.blade.php new file mode 100644 index 0000000..f8c8e61 --- /dev/null +++ b/resources/views/auth/passwords/confirm.blade.php @@ -0,0 +1,49 @@ +@extends('layouts.app') + +@section('content') +
+
+
+
+
{{ __('Confirm Password') }}
+ +
+ {{ __('Please confirm your password before continuing.') }} + +
+ @csrf + +
+ + +
+ + + @error('password') + + {{ $message }} + + @enderror +
+
+ +
+
+ + + @if (Route::has('password.request')) + + {{ __('Forgot Your Password?') }} + + @endif +
+
+
+
+
+
+
+
+@endsection diff --git a/resources/views/auth/passwords/email.blade.php b/resources/views/auth/passwords/email.blade.php new file mode 100644 index 0000000..d1ac783 --- /dev/null +++ b/resources/views/auth/passwords/email.blade.php @@ -0,0 +1,47 @@ +@extends('layouts.app') + +@section('content') +
+
+
+
+
{{ __('Reset Password') }}
+ +
+ @if (session('status')) + + @endif + +
+ @csrf + +
+ + +
+ + + @error('email') + + {{ $message }} + + @enderror +
+
+ +
+
+ +
+
+
+
+
+
+
+
+@endsection diff --git a/resources/views/auth/passwords/reset.blade.php b/resources/views/auth/passwords/reset.blade.php new file mode 100644 index 0000000..dccf6c6 --- /dev/null +++ b/resources/views/auth/passwords/reset.blade.php @@ -0,0 +1,65 @@ +@extends('layouts.app') + +@section('content') +
+
+
+
+
{{ __('Reset Password') }}
+ +
+
+ @csrf + + + +
+ + +
+ + + @error('email') + + {{ $message }} + + @enderror +
+
+ +
+ + +
+ + + @error('password') + + {{ $message }} + + @enderror +
+
+ +
+ + +
+ +
+
+ +
+
+ +
+
+
+
+
+
+
+
+@endsection diff --git a/resources/views/auth/register.blade.php b/resources/views/auth/register.blade.php new file mode 100644 index 0000000..12cad1a --- /dev/null +++ b/resources/views/auth/register.blade.php @@ -0,0 +1,77 @@ +@extends('layouts.app') + +@section('content') +
+
+
+
+
{{ __('Register') }}
+ +
+
+ @csrf + +
+ + +
+ + + @error('name') + + {{ $message }} + + @enderror +
+
+ +
+ + +
+ + + @error('email') + + {{ $message }} + + @enderror +
+
+ +
+ + +
+ + + @error('password') + + {{ $message }} + + @enderror +
+
+ +
+ + +
+ +
+
+ +
+
+ +
+
+
+
+
+
+
+
+@endsection diff --git a/resources/views/auth/verify.blade.php b/resources/views/auth/verify.blade.php new file mode 100644 index 0000000..9f8c1bc --- /dev/null +++ b/resources/views/auth/verify.blade.php @@ -0,0 +1,28 @@ +@extends('layouts.app') + +@section('content') +
+
+
+
+
{{ __('Verify Your Email Address') }}
+ +
+ @if (session('resent')) + + @endif + + {{ __('Before proceeding, please check your email for a verification link.') }} + {{ __('If you did not receive the email') }}, +
+ @csrf + . +
+
+
+
+
+
+@endsection diff --git a/resources/views/home.blade.php b/resources/views/home.blade.php new file mode 100644 index 0000000..1f34466 --- /dev/null +++ b/resources/views/home.blade.php @@ -0,0 +1,23 @@ +@extends('layouts.app') + +@section('content') +
+
+
+
+
{{ __('Dashboard') }}
+ +
+ @if (session('status')) + + @endif + + {{ __('You are logged in!') }} +
+
+
+
+
+@endsection diff --git a/resources/views/konsultasi.blade.php b/resources/views/konsultasi.blade.php deleted file mode 100644 index b2a02ba..0000000 --- a/resources/views/konsultasi.blade.php +++ /dev/null @@ -1,6 +0,0 @@ -@extends('layouts.master') -@section('title', 'konsultasi') - -@section('konten') - -@endsection diff --git a/resources/views/konsultasi/diagnosa.blade.php b/resources/views/konsultasi/diagnosa.blade.php new file mode 100644 index 0000000..931a2ed --- /dev/null +++ b/resources/views/konsultasi/diagnosa.blade.php @@ -0,0 +1,133 @@ +@extends('layouts.master') +@section('title', 'konsultasi') + +@section('konten') +
+
+ +
+
PILIH GEJALA
+ +
+
+
+
+ Konsultasi Gejala +
+
+
+ @csrf +
+ +
+ + @error('nama') +
+ {{ $message }} +
+ @enderror +
+
+
+ +
+ + @error('alamat') +
+ {{ $message }} +
+ @enderror +
+
+
+ +
+ + @error('jenis_sapi') +
+ {{ $message }} +
+ @enderror +
+
+ @if (session()->has('error')) + + + + + + + + + + + + + @endif + + + + + + + + + + + + + + + + + @php + $i = 1; + @endphp + @foreach ($dataGejala as $gejala) + + + + + + + + @php + $i++; + @endphp + @endforeach + +
No.Kode GejalaNama Gejala
{{ $i }}{{ $gejala['kode_gejala'] }}{{ $gejala['gejala'] }} + +
+
+ + +
+
+
+ +
+
+@endsection + diff --git a/resources/views/konsultasi/hasilDiagnosa.blade.php b/resources/views/konsultasi/hasilDiagnosa.blade.php new file mode 100644 index 0000000..b1b357d --- /dev/null +++ b/resources/views/konsultasi/hasilDiagnosa.blade.php @@ -0,0 +1,73 @@ +@extends('layouts.master') + +@section('konten') + + +
+
+ Hasil Diagnosa +
+
+
+
1. Pengunjung
+
+
+
+
+
Nama:
+

{{ $dataDiagnosa['nama'] }}

+
+
+
+
+
+
+
Jenis Sapi:
+

{{ $dataDiagnosa['jenis_sapi'] }}

+
+
+
+
+
+
+
Alamat:
+

{{ $dataDiagnosa['alamat'] }}

+
+
+
+
+
+ +
+
2. Gejala yang dialami
+
+ @foreach ($hasilDiagnosa->Gejala_Penyakit as $gejala) + {{ $gejala->nama_gejala }} + @endforeach +
+
+ +
+
3. Penyakit
+
+
    +
  • Nama Penyakit: {{ $hasilDiagnosa->Nama_Penyakit->nama_penyakit }}
  • +
  • Nilai Kepercayaan: {!! '' . $hasilDiagnosa->Persentase_Penyakit . '' . ' / (' . $hasilDiagnosa->Nilai_Belief_Penyakit . ')' !!}
  • +
+
+
+ +
+
4. Solusi
+
+ @foreach (json_decode($hasilDiagnosa->Solusi_Penyakit->solusi) as $solusi) + {{ $solusi }} + @endforeach +
+
+
+ +
+ Diagnosa Ulang + +@endsection diff --git a/resources/views/layouts/app.blade.php b/resources/views/layouts/app.blade.php new file mode 100644 index 0000000..a6970da --- /dev/null +++ b/resources/views/layouts/app.blade.php @@ -0,0 +1,80 @@ + + + + + + + + + + {{ config('app.name', 'Laravel') }} + + + + + + + @vite(['resources/sass/app.scss', 'resources/js/app.js']) + + +
+ + +
+ @yield('content') +
+
+ + diff --git a/resources/views/layouts/master.blade.php b/resources/views/layouts/master.blade.php index 6bd21fb..b0108b8 100644 --- a/resources/views/layouts/master.blade.php +++ b/resources/views/layouts/master.blade.php @@ -16,6 +16,48 @@ + + + + + + + + + + + + + + + + + + + + + + @@ -39,7 +81,7 @@