feat(assessment-form): create assessment form page
This commit is contained in:
parent
9c88807fb2
commit
19328a7ff6
|
@ -0,0 +1,13 @@
|
|||
<?php
|
||||
|
||||
namespace App\Http\Controllers;
|
||||
|
||||
use Illuminate\Http\Request;
|
||||
|
||||
class AssesmentFormController extends Controller
|
||||
{
|
||||
public function index()
|
||||
{
|
||||
return view('assesment-form.index');
|
||||
}
|
||||
}
|
|
@ -64,5 +64,7 @@ class Kernel extends HttpKernel
|
|||
'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class,
|
||||
'verified' => \Illuminate\Auth\Middleware\EnsureEmailIsVerified::class,
|
||||
'verifiedAcount' => \App\Http\Middleware\verifiedAcount::class,
|
||||
'admin' => \App\Http\Middleware\AdminMiddleware::class,
|
||||
'officer' => \App\Http\Middleware\OfficerMiddleware::class
|
||||
];
|
||||
}
|
||||
|
|
|
@ -0,0 +1,26 @@
|
|||
<?php
|
||||
|
||||
namespace App\Http\Middleware;
|
||||
|
||||
use Closure;
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Support\Facades\Auth;
|
||||
use Symfony\Component\HttpFoundation\Response;
|
||||
|
||||
class AdminMiddleware
|
||||
{
|
||||
/**
|
||||
* Handle an incoming request.
|
||||
*
|
||||
* @param \Closure(\Illuminate\Http\Request): (\Symfony\Component\HttpFoundation\Response) $next
|
||||
*/
|
||||
public function handle(Request $request, Closure $next): Response
|
||||
{
|
||||
if (Auth::check() && Auth::user()->role == 'admin') {
|
||||
return $next($request);
|
||||
}
|
||||
|
||||
toast('Anda tidak memiliki akses', 'warning')->position('top')->autoclose(3000);
|
||||
return redirect()->back();
|
||||
}
|
||||
}
|
|
@ -0,0 +1,26 @@
|
|||
<?php
|
||||
|
||||
namespace App\Http\Middleware;
|
||||
|
||||
use Closure;
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Support\Facades\Auth;
|
||||
use Symfony\Component\HttpFoundation\Response;
|
||||
|
||||
class OfficerMiddleware
|
||||
{
|
||||
/**
|
||||
* Handle an incoming request.
|
||||
*
|
||||
* @param \Closure(\Illuminate\Http\Request): (\Symfony\Component\HttpFoundation\Response) $next
|
||||
*/
|
||||
public function handle(Request $request, Closure $next): Response
|
||||
{
|
||||
if (Auth::check() && Auth::user()->role == 'user') {
|
||||
return $next($request);
|
||||
}
|
||||
|
||||
toast('Anda tidak memiliki akses', 'warning')->position('top')->autoclose(3000);
|
||||
return redirect()->back();
|
||||
}
|
||||
}
|
|
@ -0,0 +1,20 @@
|
|||
document.addEventListener("DOMContentLoaded", function () {
|
||||
const inputs = document.querySelectorAll(
|
||||
"#pH-field, #ketinggian_tempat-field",
|
||||
"#ketersediaan_air-field",
|
||||
"#curah_hujan-field"
|
||||
);
|
||||
|
||||
inputs.forEach((input) => {
|
||||
input.addEventListener("input", function () {
|
||||
this.value = this.value.replace(/[^0-9.]/g, "");
|
||||
this.value = this.value.replace(/^(\.)/, "");
|
||||
if ((this.value.match(/\./g) || []).length > 1) {
|
||||
this.value = this.value.substring(
|
||||
0,
|
||||
this.value.lastIndexOf(".")
|
||||
);
|
||||
}
|
||||
});
|
||||
});
|
||||
});
|
|
@ -0,0 +1,115 @@
|
|||
@extends('layouts.app')
|
||||
@push('title', 'Form Penilaian')
|
||||
@section('content')
|
||||
<div class="page-content">
|
||||
<div class="container-fluid">
|
||||
<!-- start page title -->
|
||||
<div class="row">
|
||||
<div class="col-12">
|
||||
<div class="page-title-box d-sm-flex align-items-center justify-content-between">
|
||||
<h4 class="mb-sm-0">Form Penilaian</h4>
|
||||
|
||||
<div class="page-title-right">
|
||||
<ol class="breadcrumb m-0">
|
||||
<li class="breadcrumb-item">
|
||||
<a href="javascript: void(0);">Menu</a>
|
||||
</li>
|
||||
<li class="breadcrumb-item active">Form Penilaian</li>
|
||||
</ol>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!-- end page title -->
|
||||
|
||||
<div class="row">
|
||||
<div class="col-xl-8 col-md-6">
|
||||
<div class="card">
|
||||
<div class="card-header">
|
||||
<h4 class="card-title mb-0">Form Penilaian</h4>
|
||||
</div>
|
||||
<form action="" class="needs-validation" method="POST" novalidate id="add-form">
|
||||
<div class="card-body">
|
||||
<div class="mb-3">
|
||||
<label for="" class="form-label">pH Tanah</label>
|
||||
<div class="input-group">
|
||||
<input type="text" class="form-control" name="pH" id="pH-field"
|
||||
placeholder="Masukan nilai pH Tanah" aria-label="Masukan nilai pH Tanah"
|
||||
required autofocus>
|
||||
<span class="input-group-text" id="pH-addon">pH</span>
|
||||
<div class="invalid-feedback">
|
||||
Masukan nilai pH
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="mb-3">
|
||||
<label for="" class="form-label">Ketinggian Tempat</label>
|
||||
<div class="input-group">
|
||||
<input type="text" class="form-control" name="ketinggian_tempat"
|
||||
id="ketinggian_tempat-field" placeholder="Masukan nilai Ketinggian Tempat"
|
||||
aria-label="Masukan nilai Ketinggian Tempat" required>
|
||||
<span class="input-group-text" id="ketinggian_tempat-addon">m</span>
|
||||
<div class="invalid-feedback">
|
||||
Masukan nilai Ketinggian Tempat
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="mb-3">
|
||||
<label for="" class="form-label">Ketersediaan Air</label>
|
||||
<div class="input-group">
|
||||
<input type="text" class="form-control" name="ketersediaan_air"
|
||||
id="ketersediaan_air-field" placeholder="Masukan nilai Ketersediaan Air"
|
||||
aria-label="Masukan nilai Ketersediaan Air" required>
|
||||
<span class="input-group-text" id="ketersediaan_air-addon">%</span>
|
||||
<div class="invalid-feedback">
|
||||
Masukan nilai Ketersediaan Air
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="mb-3">
|
||||
<label for="" class="form-label">Curah Hujan</label>
|
||||
<div class="input-group">
|
||||
<input type="text" class="form-control" name="curah_hujan" id="curah_hujan-field"
|
||||
placeholder="Masukan nilai Curah Hujan" aria-label="Masukan nilai Curah Hujan"
|
||||
required>
|
||||
<span class="input-group-text" id="curah_hujan-addon">mm</span>
|
||||
<div class="invalid-feedback">
|
||||
Masukan nilai Curah Hujan
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="card-footer d-flex justify-content-end">
|
||||
<button type="submit" class="btn btn-success">Simpan</button>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-xl-4 col-md-6">
|
||||
<div class="card">
|
||||
<div class="card-header">
|
||||
<h4 class="card-title mb-0">Hasil Penilaian</h4>
|
||||
</div>
|
||||
<form action="">
|
||||
<div class="card-body"></div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<!-- container-fluid -->
|
||||
</div>
|
||||
|
||||
@push('other-js')
|
||||
<!-- prismjs plugin -->
|
||||
<script src="assets/libs/prismjs/prism.js"></script>
|
||||
<script src="assets/libs/list.js/list.min.js"></script>
|
||||
<script src="assets/libs/list.pagination.js/list.pagination.min.js"></script>
|
||||
|
||||
<!-- listjs init -->
|
||||
<script src="assets/js/pages/form-validation.init.js"></script>
|
||||
|
||||
<script src="assets/js/pages/customJs/assesment-form/index.js"></script>
|
||||
@endpush
|
||||
@endsection
|
|
@ -66,7 +66,7 @@
|
|||
</div>
|
||||
|
||||
<!-- Theme Settings -->
|
||||
<div class="offcanvas offcanvas-end border-0" tabindex="-1" id="theme-settings-offcanvas">
|
||||
{{-- <div class="offcanvas offcanvas-end border-0" tabindex="-1" id="theme-settings-offcanvas">
|
||||
<div class="d-flex align-items-center bg-primary bg-gradient p-3 offcanvas-header">
|
||||
<h5 class="m-0 me-2 text-white">Theme Customizer</h5>
|
||||
|
||||
|
@ -590,7 +590,7 @@ class="form-check-input">
|
|||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div> --}}
|
||||
@include('sweetalert::alert')
|
||||
|
||||
<!-- JAVASCRIPT -->
|
||||
|
|
|
@ -86,6 +86,13 @@ class="nav-link {{ request()->routeIs('master_data.aturan.*') ? 'active' : '' }}
|
|||
data-key="t-dashboards">Dashboards</span>
|
||||
</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link menu-link {{ request()->routeIs('assesment_form.index') ? 'active' : '' }}"
|
||||
href="{{ route('assesment_form.index') }}">
|
||||
<i data-feather="file-text" class="icon-dual"></i> <span
|
||||
data-key="t-dashboards">Form Penilaian</span>
|
||||
</a>
|
||||
</li>
|
||||
@endif <!-- end Dashboard Menu -->
|
||||
|
||||
{{-- <li class="menu-title"><i class="ri-more-fill"></i> <span data-key="t-pages">Pages</span>
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
<?php
|
||||
|
||||
use App\Http\Controllers\AssesmentFormController;
|
||||
use App\Http\Controllers\Auth\AuthenticatedSessionController;
|
||||
use App\Http\Controllers\Auth\PasswordResetLinkController;
|
||||
use App\Http\Controllers\Auth\RegisteredUserController;
|
||||
|
@ -10,6 +11,7 @@
|
|||
use App\Http\Controllers\MasterData\RuleController;
|
||||
use App\Http\Controllers\MasterData\UserController;
|
||||
use Illuminate\Routing\RouteGroup;
|
||||
use Illuminate\Routing\RouteUrlGenerator;
|
||||
use Illuminate\Support\Facades\Route;
|
||||
|
||||
/*
|
||||
|
@ -56,10 +58,8 @@
|
|||
Route::middleware(['auth', 'verifiedAcount'])->group(function () {
|
||||
Route::post('/logout', [AuthenticatedSessionController::class, 'destroy'])->name('auth.logout');
|
||||
|
||||
Route::controller(DashboardController::class)->name('dashboard.')->group(function () {
|
||||
Route::get('/dashboard-admin', 'admin')->name('admin');
|
||||
Route::get('/dashboard-petugas', 'petugas')->name('petugas');
|
||||
});
|
||||
Route::middleware('admin')->group(function () {
|
||||
Route::get('/dashboard-admin', [DashboardController::class, 'admin'])->name('dashboard.admin');
|
||||
|
||||
Route::name('master_data.')->group(function () {
|
||||
|
||||
|
@ -91,4 +91,13 @@
|
|||
// Route::delete('/{id}', 'destroy')->name('destroy');
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
Route::middleware('officer')->group(function () {
|
||||
Route::get('/dashboard-petugas', [DashboardController::class, 'petugas'])->name('dashboard.petugas');
|
||||
|
||||
Route::prefix('form-penilaian')->controller(AssesmentFormController::class)->name('assesment_form.')->group(function () {
|
||||
Route::get('/', 'index')->name('index');
|
||||
});
|
||||
});
|
||||
});
|
||||
|
|
Loading…
Reference in New Issue