progress mapping jabatan, folder sesuai user yang login
This commit is contained in:
parent
a1acd0679a
commit
bb6464e1a7
31
app/Http/Controllers/AuthController.php
Normal file
31
app/Http/Controllers/AuthController.php
Normal file
@ -0,0 +1,31 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers;
|
||||
|
||||
use App\Models\User;
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Support\Facades\Auth;
|
||||
use Illuminate\Support\Facades\Hash;
|
||||
class AuthController extends Controller
|
||||
{
|
||||
public function index(){
|
||||
return view('auth.index');
|
||||
}
|
||||
|
||||
public function login(Request $request){
|
||||
$user = User::where('namauser', '=', request('namauser'))->first();
|
||||
if ($user && $user->passcode === sha1($request->input('passcode'))) {
|
||||
auth()->login($user); // login manual ke Laravel Auth
|
||||
$request->session()->regenerate();
|
||||
return redirect()->intended('/');
|
||||
}
|
||||
return back()->with(['alertError' => 'Gagal Login!']);
|
||||
}
|
||||
|
||||
public function logout(){
|
||||
Auth::logout();
|
||||
request()->session()->invalidate();
|
||||
request()->session()->regenerateToken();
|
||||
return redirect('/login');
|
||||
}
|
||||
}
|
||||
80
app/Http/Controllers/DashboardController.php
Normal file
80
app/Http/Controllers/DashboardController.php
Normal file
@ -0,0 +1,80 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers;
|
||||
|
||||
use App\Models\FileDirectory;
|
||||
use App\Models\MasterKategori;
|
||||
use App\Models\MasterKlasifikasi;
|
||||
use App\Models\SubUnitKerja;
|
||||
use App\Models\UnitKerja;
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Support\Facades\DB;
|
||||
use Illuminate\Support\Facades\Storage;
|
||||
use Illuminate\Support\Str;
|
||||
|
||||
class DashboardController extends Controller
|
||||
{
|
||||
public function index(){
|
||||
dd(auth()->user());
|
||||
$unitKerja = UnitKerja::where('statusenabled', true)->select('id', 'name')->get();
|
||||
$subUnitKerja = SubUnitKerja::where('statusenabled', true)->select('id', 'name')->get();
|
||||
$katDok = MasterKategori::where('statusenabled', true)->select('master_kategori_directory_id', 'nama_kategori_directory')->get();
|
||||
$klasifikasiDok = MasterKlasifikasi::where('statusenabled', true)->select('master_klasifikasi_directory_id', 'nama_klasifikasi_directory')->get();
|
||||
$payload = [
|
||||
'title' => 'Dashboard',
|
||||
'unitKerja' => $unitKerja,
|
||||
'subUnitKerja' => $subUnitKerja,
|
||||
'katDok' => $katDok,
|
||||
'klasifikasiDok' => $klasifikasiDok,
|
||||
];
|
||||
return view('dashboard.index', $payload);
|
||||
}
|
||||
|
||||
public function dataUnitKerja(){
|
||||
$unitKerja = UnitKerja::where('statusenabled', true)->select('id', 'name')->get();
|
||||
$katDok = MasterKategori::where('statusenabled', true)->select('master_kategori_directory_id', 'nama_kategori_directory')->get();
|
||||
$data = [
|
||||
'unitKerja' => $unitKerja,
|
||||
'katDok' => $katDok
|
||||
];
|
||||
return response()->json([
|
||||
'status' => true,
|
||||
'data' => $data,
|
||||
], 200);
|
||||
}
|
||||
|
||||
public function store(){
|
||||
DB::connection('dbDirectory')->beginTransaction();
|
||||
try {
|
||||
$datas = request()->input('data');
|
||||
foreach($datas as $index => $value){
|
||||
$file = request()->file("data.$index.file");
|
||||
$payload = [
|
||||
'master_klasifikasi_directory_id' => $value['klasifikasi'],
|
||||
'id_unit_kerja' => request('id_unit_kerja') ?? null,
|
||||
'id_sub_unit_kerja' => request('id_sub_unit_kerja') ?? null,
|
||||
'master_kategori_directory_id' => request('master_kategori_directory_id') ?? null,
|
||||
'pegawai_id_entry' => auth()->user()->id ?? 1,
|
||||
'pegawai_nama_entry' => auth()->user()->namalengkap ?? 'tes',
|
||||
];
|
||||
if($file){
|
||||
$imageName = $file->getClientOriginalName();
|
||||
Storage::disk('file_directory')->put($imageName, file_get_contents($file));
|
||||
$payload['file'] =$imageName;
|
||||
}
|
||||
FileDirectory::create($payload);
|
||||
}
|
||||
DB::connection('dbDirectory')->commit();
|
||||
return response()->json([
|
||||
'status' => true,
|
||||
'message' => 'Data berhasil disimpan',
|
||||
], 200);
|
||||
} catch (\Throwable $th) {
|
||||
DB::connection('dbDirectory')->rollBack();
|
||||
return response()->json([
|
||||
'status' => false,
|
||||
'message' => $th->getMessage()
|
||||
], 500);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -39,7 +39,7 @@ class MasterKlasifikasiController extends Controller
|
||||
$datas = $request->input('data');
|
||||
foreach ($datas as $key => $value) {
|
||||
$payload = [
|
||||
'nama_klasifikasi_directory' => $value['nama_klasifikasi']
|
||||
'master_klasifikasi_directory_id' => $value['klasifikasi']
|
||||
];
|
||||
MasterKlasifikasi::create($payload);
|
||||
}
|
||||
|
||||
14
app/Models/FileDirectory.php
Normal file
14
app/Models/FileDirectory.php
Normal file
@ -0,0 +1,14 @@
|
||||
<?php
|
||||
|
||||
namespace App\Models;
|
||||
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
|
||||
class FileDirectory extends Model
|
||||
{
|
||||
protected $connection = 'dbDirectory';
|
||||
protected $table = 'public.file_directory';
|
||||
public $timestamps = false;
|
||||
protected $primaryKey = 'file_directory_id';
|
||||
protected $guarded = ['file_directory_id'];
|
||||
}
|
||||
19
app/Models/SubUnitKerja.php
Normal file
19
app/Models/SubUnitKerja.php
Normal file
@ -0,0 +1,19 @@
|
||||
<?php
|
||||
|
||||
namespace App\Models;
|
||||
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
|
||||
class SubUnitKerja extends Model
|
||||
{
|
||||
protected $connection = 'dbDirectory';
|
||||
protected $table = 'public.subunitkerja_m';
|
||||
public $timestamps = false;
|
||||
protected $primaryKey = 'id';
|
||||
protected $guarded = ['id'];
|
||||
protected $with = ['fileDirectory'];
|
||||
|
||||
public function fileDirectory(){
|
||||
return $this->hasMany(FileDirectory::class, 'id_sub_unit_kerja', 'id')->where('statusenabled', true);
|
||||
}
|
||||
}
|
||||
20
app/Models/UnitKerja.php
Normal file
20
app/Models/UnitKerja.php
Normal file
@ -0,0 +1,20 @@
|
||||
<?php
|
||||
|
||||
namespace App\Models;
|
||||
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
|
||||
class UnitKerja extends Model
|
||||
{
|
||||
protected $connection = 'dbDirectory';
|
||||
protected $table = 'public.unitkerjapegawai_m';
|
||||
public $timestamps = false;
|
||||
protected $primaryKey = 'id';
|
||||
protected $guarded = ['id'];
|
||||
protected $with = ['subUnitKerja'];
|
||||
|
||||
public function subUnitKerja(){
|
||||
return $this->hasMany(SubUnitKerja::class, 'objectunitkerjapegawaifk', 'id')->where('statusenabled', true)->select('id', 'objectunitkerjapegawaifk', 'name');
|
||||
}
|
||||
|
||||
}
|
||||
@ -17,10 +17,12 @@ class User extends Authenticatable
|
||||
*
|
||||
* @var list<string>
|
||||
*/
|
||||
protected $fillable = [
|
||||
'name',
|
||||
'email',
|
||||
'password',
|
||||
protected $connection = 'dbDirectory';
|
||||
protected $table = 'public.loginuser_s';
|
||||
public $timestamps = false;
|
||||
protected $primaryKey = "id";
|
||||
protected $guarded = [
|
||||
'id',
|
||||
];
|
||||
|
||||
/**
|
||||
@ -29,8 +31,7 @@ class User extends Authenticatable
|
||||
* @var list<string>
|
||||
*/
|
||||
protected $hidden = [
|
||||
'password',
|
||||
'remember_token',
|
||||
'katasandi'
|
||||
];
|
||||
|
||||
/**
|
||||
@ -41,8 +42,7 @@ class User extends Authenticatable
|
||||
protected function casts(): array
|
||||
{
|
||||
return [
|
||||
'email_verified_at' => 'datetime',
|
||||
'password' => 'hashed',
|
||||
'katasandi' => 'hashed',
|
||||
];
|
||||
}
|
||||
}
|
||||
|
||||
@ -60,6 +60,13 @@ return [
|
||||
'report' => false,
|
||||
],
|
||||
|
||||
'file_directory' => [
|
||||
'driver' => 'local',
|
||||
'root' => public_path('file') . '/',
|
||||
'url' => env('APP_URL') . '/',
|
||||
'visibility' => 'public',
|
||||
],
|
||||
|
||||
],
|
||||
|
||||
/*
|
||||
|
||||
BIN
public/file/CATERING RSAB HK.png
Normal file
BIN
public/file/CATERING RSAB HK.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 481 KiB |
BIN
public/file/Rumah Jooocode.png
Normal file
BIN
public/file/Rumah Jooocode.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 6.2 KiB |
BIN
public/file/WhatsApp Image 2025-09-02 at 11.19.09_2f299a7b.jpg
Normal file
BIN
public/file/WhatsApp Image 2025-09-02 at 11.19.09_2f299a7b.jpg
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 112 KiB |
BIN
public/file/WhatsApp Image 2025-09-02 at 13.53.14_88d2e96e.jpg
Normal file
BIN
public/file/WhatsApp Image 2025-09-02 at 13.53.14_88d2e96e.jpg
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 69 KiB |
BIN
public/file/WhatsApp Image 2025-09-03 at 08.52.46_5778b407.jpg
Normal file
BIN
public/file/WhatsApp Image 2025-09-03 at 08.52.46_5778b407.jpg
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 168 KiB |
BIN
public/file/default.png
Normal file
BIN
public/file/default.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 466 KiB |
2
public/js/dashboard/_init.js
Normal file
2
public/js/dashboard/_init.js
Normal file
@ -0,0 +1,2 @@
|
||||
const modalCreate = document.getElementById('modalFileCreate')
|
||||
const formCreate = $("#formFile")
|
||||
49
public/js/dashboard/action.js
Normal file
49
public/js/dashboard/action.js
Normal file
@ -0,0 +1,49 @@
|
||||
formCreate.on('submit', function(e){
|
||||
e.preventDefault();
|
||||
|
||||
const form = this;
|
||||
const formData = new FormData(form);
|
||||
|
||||
fetch(`/upload`, {
|
||||
method: 'POST',
|
||||
headers: {
|
||||
'X-CSRF-TOKEN': document.querySelector('input[name="_token"]').value,
|
||||
},
|
||||
body: formData
|
||||
}).then(async(res) => {
|
||||
const responseData = await res.json();
|
||||
if (responseData.status) {
|
||||
const handler = function () {
|
||||
Toastify({
|
||||
text: responseData.message || 'Berhasil melakukan aksi!',
|
||||
duration: 3000,
|
||||
gravity: "top", // bisa "bottom"
|
||||
position: "right", // bisa "left"
|
||||
style: {
|
||||
background: "linear-gradient(to right, #00b09b, #96c93d)", // hijau gradasi
|
||||
color: "#fff",
|
||||
}
|
||||
|
||||
}).showToast();
|
||||
$("#col_add_file").html('');
|
||||
colCount = 0; // reset counter
|
||||
formCreate[0].reset();
|
||||
index()
|
||||
modalCreate.removeEventListener('hidden.bs.modal', handler);
|
||||
};
|
||||
modalCreate.addEventListener('hidden.bs.modal', handler);
|
||||
bootstrap.Modal.getInstance(modalCreate).hide();
|
||||
} else {
|
||||
throw new Error(responseData.message || 'Terjadi kesalahan saat menyimpan data.');
|
||||
}
|
||||
|
||||
}).catch(err => {
|
||||
if (err.message) {
|
||||
Swal.fire({
|
||||
icon: 'error',
|
||||
title: 'Gagal',
|
||||
text: err.message
|
||||
});
|
||||
}
|
||||
});
|
||||
});
|
||||
45
public/js/dashboard/functions.js
Normal file
45
public/js/dashboard/functions.js
Normal file
@ -0,0 +1,45 @@
|
||||
$(document).ready(function() {
|
||||
$('.unit_kerja').select2();
|
||||
$('.sub_unit_kerja').select2();
|
||||
$('.klasifikasi_dok').select2();
|
||||
$('.kategori_dok').select2();
|
||||
});
|
||||
|
||||
|
||||
let colCount = 1;
|
||||
function addForm(){
|
||||
let col = $("#col_add_file")
|
||||
|
||||
let html = '';
|
||||
|
||||
html += ` <div class="col mt-2 d-flex align-items-start gap-2" id="col-${colCount}">
|
||||
<div class="col-md-6">
|
||||
<label>File</label>
|
||||
<input type="file" class="form-control" name="data[${colCount}][file]" placeholder="exp : Juknis" required>
|
||||
</div>
|
||||
<div class="col-md-5">
|
||||
<label>Klasifikasi File</label>
|
||||
<select class="form-select" name="data[${colCount}][klasifikasi]">
|
||||
<option value="" disable >Select Choose</option>
|
||||
${klasifikasiDok.map(kla => `
|
||||
<option value="${kla?.master_klasifikasi_directory_id}">${kla?.nama_klasifikasi_directory}</option>
|
||||
`).join('')}
|
||||
</select>
|
||||
</div>
|
||||
<div class="col-md-1">
|
||||
<button type="button" class="btn btn-danger mt-4 me-2" onclick="removeCol(${colCount})"><i class="fa-solid fa-trash"></i></button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
`
|
||||
col.append(html)
|
||||
colCount++;
|
||||
|
||||
}
|
||||
|
||||
|
||||
function removeCol(count){
|
||||
$(`#col-${count}`).remove()
|
||||
}
|
||||
|
||||
106
public/js/dashboard/index.js
Normal file
106
public/js/dashboard/index.js
Normal file
@ -0,0 +1,106 @@
|
||||
function renderTree(units, katDok) {
|
||||
if (!Array.isArray(units)) return '';
|
||||
|
||||
return `
|
||||
<ul class="file-tree-ul">
|
||||
${units.map(el => `
|
||||
<li class="file-tree-li folder">
|
||||
<span class="fw-bolder">📂 ${el.name}</span>
|
||||
|
||||
${Array.isArray(el.sub_unit_kerja) && el.sub_unit_kerja.length > 0 ? `
|
||||
<ul class="file-tree-ul mt-1 ms-2">
|
||||
${el.sub_unit_kerja.map(sub => `
|
||||
<li class="file-tree-li folder">
|
||||
<span class="fw-semibold">📂 ${sub.name}</span>
|
||||
|
||||
${Array.isArray(katDok) && katDok.length > 0 ? `
|
||||
<ul class="file-tree-ul">
|
||||
${katDok.map(kat => `
|
||||
<li class="folder file-tree-li">
|
||||
<span>📂 ${kat.nama_kategori_directory}</span>
|
||||
<ul class="file-tree-ul">
|
||||
${Array.isArray(sub.file_directory) && sub.file_directory.length > 0 ? `
|
||||
${sub.file_directory.map(file => `
|
||||
${kat.master_kategori_directory_id === file.master_kategori_directory_id ? `
|
||||
<li class="file-tree-li ms-2">
|
||||
📄 <a href="/file/${file.file}" target="_blank" rel="noopener noreferrer">${file.file}</a>
|
||||
</li>
|
||||
` : ''}
|
||||
|
||||
`).join('')}
|
||||
` : ''}
|
||||
<li class="file-tree-li ms-2">
|
||||
<button class="add-file-btn btn btn-sm btn-primary ms-2 btn-transaparent"
|
||||
onclick="addFile(this)"
|
||||
data-id_unit_kerja="${el.id}"
|
||||
data-nama_unit_kerja="${el.name || 'tidak_ada'}"
|
||||
data-id_sub_unit_kerja="${sub?.id}"
|
||||
data-nama_sub_unit_kerja="${sub?.name || 'tidak_ada'}"
|
||||
data-id_kategori="${kat?.master_kategori_directory_id}"
|
||||
data-nama_kategori="${kat?.nama_kategori_directory}">
|
||||
➕ Add File
|
||||
</button>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
`).join('')}
|
||||
</ul>
|
||||
` : ''}
|
||||
</li>
|
||||
`).join('')}
|
||||
</ul>
|
||||
` : ''}
|
||||
</li>
|
||||
`).join('')}
|
||||
</ul>
|
||||
`;
|
||||
}
|
||||
|
||||
function index() {
|
||||
fetch('/data-unit-kerja')
|
||||
.then(response => response.json())
|
||||
.then(data => {
|
||||
let file_tree = document.getElementById("file_tree");
|
||||
file_tree.innerHTML = '';
|
||||
|
||||
if (Array.isArray(data?.data?.unitKerja)) {
|
||||
file_tree.innerHTML = renderTree(data.data.unitKerja, data.data.katDok);
|
||||
|
||||
// Toggle buka/tutup folder
|
||||
file_tree.querySelectorAll(".folder > span").forEach(span => {
|
||||
span.addEventListener("click", () => {
|
||||
let li = span.parentElement;
|
||||
li.classList.toggle("collapsed");
|
||||
// Ganti ikon 📂 <-> 📁
|
||||
if (li.classList.contains("collapsed")) {
|
||||
span.textContent = span.textContent.replace("📂", "📁");
|
||||
} else {
|
||||
span.textContent = span.textContent.replace("📁", "📂");
|
||||
}
|
||||
});
|
||||
});
|
||||
} else {
|
||||
file_tree.innerHTML = '<p style="color:red">Terdapat kesalahan pada server</p>';
|
||||
}
|
||||
})
|
||||
.catch(error => console.error('Error : ', error));
|
||||
}
|
||||
|
||||
index();
|
||||
|
||||
function addFile(el){
|
||||
let id_unit_kerja =$(el).data('id_unit_kerja')
|
||||
let nama_unit_kerja =$(el).data('nama_unit_kerja')
|
||||
let id_sub_unit_kerja =$(el).data('id_sub_unit_kerja')
|
||||
let nama_sub_unit_kerja =$(el).data('nama_sub_unit_kerja')
|
||||
let id_kategori =$(el).data('id_kategori')
|
||||
let nama_kategori =$(el).data('nama_kategori')
|
||||
|
||||
$("#id_unit_kerja").val(id_unit_kerja)
|
||||
$("#id_sub_unit_kerja").val(id_sub_unit_kerja)
|
||||
$("#master_kategori_directory_id").val(id_kategori)
|
||||
$("#confirm_location_file").html(`Unit Kerja : <b>${nama_unit_kerja}</b> / Sub Unit Kerja : <b>${nama_sub_unit_kerja}</b> / Kategori : <b>${nama_kategori}</b>`)
|
||||
new bootstrap.Modal(modalCreate).show();
|
||||
|
||||
|
||||
}
|
||||
58
resources/views/auth/index.blade.php
Normal file
58
resources/views/auth/index.blade.php
Normal file
@ -0,0 +1,58 @@
|
||||
<!doctype html>
|
||||
<html lang="en">
|
||||
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<title>Login || RSAB Harapan Kita</title>
|
||||
<link rel="icon" href="favicon.ico" type="image/x-icon">
|
||||
<link rel="stylesheet" href="{{ ver('/assets/css/styles.min.css') }}" />
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<!-- Body Wrapper -->
|
||||
<div class="page-wrapper" id="main-wrapper" data-layout="vertical" data-navbarbg="skin6" data-sidebartype="full"
|
||||
data-sidebar-position="fixed" data-header-position="fixed">
|
||||
<div
|
||||
class="position-relative overflow-hidden text-bg-light min-vh-100 d-flex align-items-center justify-content-center">
|
||||
<div class="d-flex align-items-center justify-content-center w-100">
|
||||
<div class="row justify-content-center w-100">
|
||||
<div class="col-md-8 col-lg-6 col-xxl-3">
|
||||
<div class="card mb-0">
|
||||
<div class="card-body">
|
||||
<a href="/login" class="text-nowrap logo-img text-center d-block py-3 w-100">
|
||||
<img src="/logo/logo_rsabhk.png" alt="rsabhk" width="200">
|
||||
</a>
|
||||
<p class="text-center">File Directory - Rumah Sakit Harapan Kita</p>
|
||||
<form method="post" action="/login">
|
||||
@csrf
|
||||
@if (session()->has('alertError'))
|
||||
<div class="alert alert-danger fw-bold" role="alert">
|
||||
Username atau password salah!
|
||||
</div>
|
||||
@endif
|
||||
<div class="mb-3">
|
||||
<label for="exampleInputEmail1" class="form-label">Username</label>
|
||||
<input type="text" name="namauser" class="form-control" id="exampleInputEmail1" aria-describedby="emailHelp" required>
|
||||
</div>
|
||||
<div class="mb-4">
|
||||
<label for="exampleInputPassword1" class="form-label">Password</label>
|
||||
<input type="password" name="passcode" class="form-control" id="exampleInputPassword1" required>
|
||||
</div>
|
||||
|
||||
<button type="submit" class="btn btn-primary w-100 py-8 fs-4 mb-4 rounded-2">Login</a>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<script src="{{ ver('/assets/libs/jquery/dist/jquery.min.js') }}"></script>
|
||||
<script src="{{ ver('/assets/libs/bootstrap/dist/js/bootstrap.bundle.min.js') }}"></script>
|
||||
<!-- solar icons -->
|
||||
<script src="https://cdn.jsdelivr.net/npm/iconify-icon@1.0.8/dist/iconify-icon.min.js"></script>
|
||||
</body>
|
||||
|
||||
</html>
|
||||
118
resources/views/dashboard/index.blade.php
Normal file
118
resources/views/dashboard/index.blade.php
Normal file
@ -0,0 +1,118 @@
|
||||
@extends('layout.main')
|
||||
<style>
|
||||
.file-tree-ul {
|
||||
list-style: none;
|
||||
padding-left: 20px;
|
||||
position: relative;
|
||||
}
|
||||
|
||||
/* Garis vertikal */
|
||||
.file-tree-ul::before {
|
||||
content: '';
|
||||
position: absolute;
|
||||
top: 0;
|
||||
left: 10px;
|
||||
bottom: 0;
|
||||
border-left: 1px solid #ccc;
|
||||
}
|
||||
|
||||
.file-tree-li {
|
||||
margin: 4px 0;
|
||||
padding-left: 20px;
|
||||
position: relative;
|
||||
}
|
||||
|
||||
/* Garis horizontal */
|
||||
.file-tree-li::before {
|
||||
content: '';
|
||||
position: absolute;
|
||||
top: 12px;
|
||||
left: 0;
|
||||
width: 20px;
|
||||
border-top: 1px solid #ccc;
|
||||
}
|
||||
|
||||
/* Hilangkan garis di root */
|
||||
.file-tree-ul > .file-tree-li::before {
|
||||
border-top: none;
|
||||
}
|
||||
|
||||
.folder > span {
|
||||
cursor: pointer;
|
||||
user-select: none;
|
||||
}
|
||||
|
||||
.collapsed > .file-tree-ul {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.add-file-btn {
|
||||
margin-left: 8px;
|
||||
font-size: 12px;
|
||||
color: blue;
|
||||
cursor: pointer;
|
||||
}
|
||||
</style>
|
||||
@section('body_main')
|
||||
<div class="row">
|
||||
<div class="col-md-12">
|
||||
<div class="card w-100">
|
||||
<div class="card-header d-flex justify-content-between align-items-center">
|
||||
<h4 class="mb-0">Data</h4>
|
||||
</div>
|
||||
<div class="card-body p-3">
|
||||
<div class="row mb-3 mt-3">
|
||||
<div class="col-md-3">
|
||||
<label for="exampleFormControlInput1" class="form-label">Unit Kerja</label>
|
||||
<select class="unit_kerja form-control" id="unit_kerja">
|
||||
<option value="" disable >Select Choose</option>
|
||||
@foreach ($unitKerja as $unit)
|
||||
<option value="{{ $unit->id }}">{{ $unit->name }}</option>
|
||||
@endforeach
|
||||
</select>
|
||||
</div>
|
||||
<div class="col-md-3">
|
||||
<label for="exampleFormControlInput1" class="form-label">Sub Unit Kerja</label>
|
||||
<select class="sub_unit_kerja form-control" id="sub_unit_kerja">
|
||||
<option value="" disable >Select Choose</option>
|
||||
@foreach ($subUnitKerja as $sub)
|
||||
<option value="{{ $sub->id }}">{{ $sub->name }}</option>
|
||||
@endforeach
|
||||
</select>
|
||||
</div>
|
||||
<div class="col-md-2">
|
||||
<label for="exampleFormControlInput1" class="form-label">Kategori Dok.</label>
|
||||
<select class="kategori_dok form-control" id="kategori_dok">
|
||||
<option value="" disable >Select Choose</option>
|
||||
@foreach ($katDok as $kat)
|
||||
<option value="{{ $kat->id }}">{{ $kat->nama_kategori_directory }}</option>
|
||||
@endforeach
|
||||
</select>
|
||||
</div>
|
||||
<div class="col-md-2">
|
||||
<label for="exampleFormControlInput1" class="form-label">Klasifikasi Dok.</label>
|
||||
<select class="klasifikasi_dok form-control" id="klasifikasi_dok">
|
||||
<option value="" disable >Select Choose</option>
|
||||
@foreach ($klasifikasiDok as $kla)
|
||||
<option value="{{ $kla->id }}">{{ $kla->nama_klasifikasi_directory }}</option>
|
||||
@endforeach
|
||||
</select>
|
||||
</div>
|
||||
<div class="col-md-2">
|
||||
<button type="button" class="btn btn-primary mt-3">Cari</button>
|
||||
</div>
|
||||
</div>
|
||||
<div id="file_tree"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@include('dashboard.modal.create')
|
||||
<script>
|
||||
const klasifikasiDok = @json($klasifikasiDok);
|
||||
</script>
|
||||
<script src="{{ ver('/js/dashboard/_init.js') }}"></script>
|
||||
<script src="{{ ver('/js/dashboard/index.js') }}"></script>
|
||||
<script src="{{ ver('/js/dashboard/functions.js') }}"></script>
|
||||
<script src="{{ ver('/js/dashboard/action.js') }}"></script>
|
||||
@endsection
|
||||
50
resources/views/dashboard/modal/create.blade.php
Normal file
50
resources/views/dashboard/modal/create.blade.php
Normal file
@ -0,0 +1,50 @@
|
||||
<div class="modal fade" id="modalFileCreate" tabindex="-1" aria-hidden="true">
|
||||
<div class="modal-dialog modal-lg modal-dialog-centered">
|
||||
<div class="modal-content">
|
||||
|
||||
<!-- Modal Header -->
|
||||
<div class="modal-header">
|
||||
<h1 class="modal-title fs-5">Aksi <strong id="confirm_location_file"></strong></h1>
|
||||
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
|
||||
</div>
|
||||
|
||||
<!-- Modal Form -->
|
||||
<form id="formFile" action="/upload" enctype="multipart/form-data" method="POST" >
|
||||
@csrf
|
||||
<div class="modal-body">
|
||||
<div class="container" id="container_create">
|
||||
<div class="row">
|
||||
<div class="col-md-6">
|
||||
<label>File</label>
|
||||
<input type="file" class="form-control" name="data[0][file]" placeholder="exp : Juknis" required>
|
||||
<input type="hidden" class="form-control" name="id_sub_unit_kerja" id="id_sub_unit_kerja" placeholder="exp : Juknis">
|
||||
<input type="hidden" class="form-control" name="id_unit_kerja" id="id_unit_kerja" placeholder="exp : Juknis">
|
||||
<input type="hidden" class="form-control" name="master_kategori_directory_id" id="master_kategori_directory_id" placeholder="exp : Juknis">
|
||||
</div>
|
||||
<div class="col-md-6">
|
||||
<label>Klasifikasi File</label>
|
||||
<select class="form-select" name="data[0][klasifikasi]" required>
|
||||
<option value="" disable >Select Choose</option>
|
||||
@foreach ($klasifikasiDok as $klasifikasi)
|
||||
<option value="{{ $klasifikasi->master_klasifikasi_directory_id }}">{{ $klasifikasi->nama_klasifikasi_directory }}</option>
|
||||
@endforeach
|
||||
</select>
|
||||
</div>
|
||||
<div id="col_add_file"></div>
|
||||
</div>
|
||||
<button type="button" class="btn btn-outline-primary btn-sm mt-2" onclick="addForm()">
|
||||
+ Tambah Form
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Modal Footer -->
|
||||
<div class="modal-footer">
|
||||
<button type="button" class="btn btn-secondary" data-bs-dismiss="modal">Tutup</button>
|
||||
<button type="submit" class="btn btn-primary">Simpan</button>
|
||||
</div>
|
||||
</form>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@ -1,479 +0,0 @@
|
||||
@extends('layout.main')
|
||||
@section('body_main')
|
||||
<div class="row">
|
||||
<div class="col-lg-8">
|
||||
<div class="card w-100">
|
||||
<div class="card-body">
|
||||
<div class="d-md-flex align-items-center">
|
||||
<div>
|
||||
<h4 class="card-title">Sales Overview</h4>
|
||||
<p class="card-subtitle">
|
||||
Ample admin Vs Pixel admin
|
||||
</p>
|
||||
</div>
|
||||
<div class="ms-auto">
|
||||
<ul class="list-unstyled mb-0">
|
||||
<li class="list-inline-item text-primary">
|
||||
<span class="round-8 text-bg-primary rounded-circle me-1 d-inline-block"></span>
|
||||
Ample
|
||||
</li>
|
||||
<li class="list-inline-item text-info">
|
||||
<span class="round-8 text-bg-info rounded-circle me-1 d-inline-block"></span>
|
||||
Pixel Admin
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
<div id="sales-overview" class="mt-4 mx-n6"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-lg-4">
|
||||
<div class="card overflow-hidden">
|
||||
<div class="card-body pb-0">
|
||||
<div class="d-flex align-items-start">
|
||||
<div>
|
||||
<h4 class="card-title">Weekly Stats</h4>
|
||||
<p class="card-subtitle">Average sales</p>
|
||||
</div>
|
||||
<div class="ms-auto">
|
||||
<div class="dropdown">
|
||||
<a href="javascript:void(0)" class="text-muted" id="year1-dropdown" data-bs-toggle="dropdown"
|
||||
aria-expanded="false">
|
||||
<i class="ti ti-dots fs-7"></i>
|
||||
</a>
|
||||
<ul class="dropdown-menu dropdown-menu-end" aria-labelledby="year1-dropdown">
|
||||
<li>
|
||||
<a class="dropdown-item" href="javascript:void(0)">Action</a>
|
||||
</li>
|
||||
<li>
|
||||
<a class="dropdown-item" href="javascript:void(0)">Another action</a>
|
||||
</li>
|
||||
<li>
|
||||
<a class="dropdown-item" href="javascript:void(0)">Something else here</a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="mt-4 pb-3 d-flex align-items-center">
|
||||
<span class="btn btn-primary rounded-circle round-48 hstack justify-content-center">
|
||||
<i class="ti ti-shopping-cart fs-6"></i>
|
||||
</span>
|
||||
<div class="ms-3">
|
||||
<h5 class="mb-0 fw-bolder fs-4">Top Sales</h5>
|
||||
<span class="text-muted fs-3">Johnathan Doe</span>
|
||||
</div>
|
||||
<div class="ms-auto">
|
||||
<span class="badge bg-secondary-subtle text-muted">+68%</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="py-3 d-flex align-items-center">
|
||||
<span class="btn btn-warning rounded-circle round-48 hstack justify-content-center">
|
||||
<i class="ti ti-star fs-6"></i>
|
||||
</span>
|
||||
<div class="ms-3">
|
||||
<h5 class="mb-0 fw-bolder fs-4">Best Seller</h5>
|
||||
<span class="text-muted fs-3">MaterialPro Admin</span>
|
||||
</div>
|
||||
<div class="ms-auto">
|
||||
<span class="badge bg-secondary-subtle text-muted">+68%</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="py-3 d-flex align-items-center">
|
||||
<span class="btn btn-success rounded-circle round-48 hstack justify-content-center">
|
||||
<i class="ti ti-message-dots fs-6"></i>
|
||||
</span>
|
||||
<div class="ms-3">
|
||||
<h5 class="mb-0 fw-bolder fs-4">Most Commented</h5>
|
||||
<span class="text-muted fs-3">Ample Admin</span>
|
||||
</div>
|
||||
<div class="ms-auto">
|
||||
<span class="badge bg-secondary-subtle text-muted">+68%</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="pt-3 mb-7 d-flex align-items-center">
|
||||
<span class="btn btn-secondary rounded-circle round-48 hstack justify-content-center">
|
||||
<i class="ti ti-diamond fs-6"></i>
|
||||
</span>
|
||||
<div class="ms-3">
|
||||
<h5 class="mb-0 fw-bolder fs-4">Top Budgets</h5>
|
||||
<span class="text-muted fs-3">Sunil Joshi</span>
|
||||
</div>
|
||||
<div class="ms-auto">
|
||||
<span class="badge bg-secondary-subtle text-muted">+15%</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-12">
|
||||
<div class="card">
|
||||
<div class="card-body">
|
||||
<div class="d-md-flex align-items-center">
|
||||
<div>
|
||||
<h4 class="card-title">Products Performance</h4>
|
||||
<p class="card-subtitle">
|
||||
Ample Admin Vs Pixel Admin
|
||||
</p>
|
||||
</div>
|
||||
<div class="ms-auto mt-3 mt-md-0">
|
||||
<select class="form-select theme-select border-0" aria-label="Default select example">
|
||||
<option value="1">March 2025</option>
|
||||
<option value="2">March 2025</option>
|
||||
<option value="3">March 2025</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<div class="table-responsive mt-4">
|
||||
<table class="table mb-0 text-nowrap varient-table align-middle fs-3">
|
||||
<thead>
|
||||
<tr>
|
||||
<th scope="col" class="px-0 text-muted">
|
||||
Assigned
|
||||
</th>
|
||||
<th scope="col" class="px-0 text-muted">Name</th>
|
||||
<th scope="col" class="px-0 text-muted">
|
||||
Priority
|
||||
</th>
|
||||
<th scope="col" class="px-0 text-muted text-end">
|
||||
Budget
|
||||
</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td class="px-0">
|
||||
<div class="d-flex align-items-center">
|
||||
<img src="./assets/images/profile/user-3.jpg" class="rounded-circle" width="40"
|
||||
alt="flexy" />
|
||||
<div class="ms-3">
|
||||
<h6 class="mb-0 fw-bolder">Sunil Joshi</h6>
|
||||
<span class="text-muted">Web Designer</span>
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
<td class="px-0">Elite Admin</td>
|
||||
<td class="px-0">
|
||||
<span class="badge bg-info">Low</span>
|
||||
</td>
|
||||
<td class="px-0 text-dark fw-medium text-end">
|
||||
$3.9K
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="px-0">
|
||||
<div class="d-flex align-items-center">
|
||||
<img src="./assets/images/profile/user-5.jpg" class="rounded-circle" width="40"
|
||||
alt="flexy" />
|
||||
<div class="ms-3">
|
||||
<h6 class="mb-0 fw-bolder">
|
||||
Andrew McDownland
|
||||
</h6>
|
||||
<span class="text-muted">Project Manager</span>
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
<td class="px-0">Real Homes WP Theme</td>
|
||||
<td class="px-0">
|
||||
<span class="badge text-bg-primary">Medium</span>
|
||||
</td>
|
||||
<td class="px-0 text-dark fw-medium text-end">
|
||||
$24.5K
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="px-0">
|
||||
<div class="d-flex align-items-center">
|
||||
<img src="./assets/images/profile/user-6.jpg" class="rounded-circle" width="40"
|
||||
alt="flexy" />
|
||||
<div class="ms-3">
|
||||
<h6 class="mb-0 fw-bolder">
|
||||
Christopher Jamil
|
||||
</h6>
|
||||
<span class="text-muted">SEO Manager</span>
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
<td class="px-0">MedicalPro WP Theme</td>
|
||||
<td class="px-0">
|
||||
<span class="badge bg-warning">Hight</span>
|
||||
</td>
|
||||
<td class="px-0 text-dark fw-medium text-end">
|
||||
$12.8K
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="px-0">
|
||||
<div class="d-flex align-items-center">
|
||||
<img src="./assets/images/profile/user-7.jpg" class="rounded-circle" width="40"
|
||||
alt="flexy" />
|
||||
<div class="ms-3">
|
||||
<h6 class="mb-0 fw-bolder">Nirav Joshi</h6>
|
||||
<span class="text-muted">Frontend Engineer</span>
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
<td class="px-0">Hosting Press HTML</td>
|
||||
<td class="px-0">
|
||||
<span class="badge bg-danger">Low</span>
|
||||
</td>
|
||||
<td class="px-0 text-dark fw-medium text-end">
|
||||
$2.4K
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="px-0">
|
||||
<div class="d-flex align-items-center">
|
||||
<img src="./assets/images/profile/user-8.jpg" class="rounded-circle" width="40"
|
||||
alt="flexy" />
|
||||
<div class="ms-3">
|
||||
<h6 class="mb-0 fw-bolder">Micheal Doe</h6>
|
||||
<span class="text-muted">Content Writer</span>
|
||||
</div>
|
||||
</div>
|
||||
</td>
|
||||
<td class="px-0">Helping Hands WP Theme</td>
|
||||
<td class="px-0">
|
||||
<span class="badge bg-success">Low</span>
|
||||
</td>
|
||||
<td class="px-0 text-dark fw-medium text-end">
|
||||
$9.3K
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-lg-6">
|
||||
<!-- Card -->
|
||||
<div class="card">
|
||||
<div class="card-body">
|
||||
<h4 class="card-title mb-0">Recent Comments</h4>
|
||||
</div>
|
||||
<div class="comment-widgets scrollable mb-2 common-widget" style="height: 465px" data-simplebar="">
|
||||
<!-- Comment Row -->
|
||||
<div class="d-flex flex-row comment-row border-bottom p-3 gap-3">
|
||||
<div>
|
||||
<span><img src="./assets/images/profile/user-3.jpg" class="rounded-circle" alt="user"
|
||||
width="50" /></span>
|
||||
</div>
|
||||
<div class="comment-text w-100">
|
||||
<h6 class="fw-medium">James Anderson</h6>
|
||||
<p class="mb-1 fs-2 text-muted">
|
||||
Lorem Ipsum is simply dummy text of the printing and
|
||||
type etting industry
|
||||
</p>
|
||||
<div class="comment-footer mt-2">
|
||||
<div class="d-flex align-items-center">
|
||||
<span class="
|
||||
badge
|
||||
bg-info-subtle
|
||||
text-info
|
||||
|
||||
">Pending</span>
|
||||
<span class="action-icons">
|
||||
<a href="javascript:void(0)" class="ps-3"><i class="ti ti-edit fs-5"></i></a>
|
||||
<a href="javascript:void(0)" class="ps-3"><i class="ti ti-check fs-5"></i></a>
|
||||
<a href="javascript:void(0)" class="ps-3"><i class="ti ti-heart fs-5"></i></a>
|
||||
</span>
|
||||
</div>
|
||||
<span class="
|
||||
text-muted
|
||||
ms-auto
|
||||
fw-normal
|
||||
fs-2
|
||||
d-block
|
||||
mt-2
|
||||
text-end
|
||||
">April 14, 2025</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!-- Comment Row -->
|
||||
<div class="d-flex flex-row comment-row border-bottom active p-3 gap-3">
|
||||
<div>
|
||||
<span><img src="./assets/images/profile/user-5.jpg" class="rounded-circle" alt="user"
|
||||
width="50" /></span>
|
||||
</div>
|
||||
<div class="comment-text active w-100">
|
||||
<h6 class="fw-medium">Michael Jorden</h6>
|
||||
<p class="mb-1 fs-2 text-muted">
|
||||
Lorem Ipsum is simply dummy text of the printing and
|
||||
type setting industry.
|
||||
</p>
|
||||
<div class="comment-footer mt-2">
|
||||
<div class="d-flex align-items-center">
|
||||
<span class="
|
||||
badge
|
||||
bg-success-subtle
|
||||
text-success
|
||||
|
||||
">Approved</span>
|
||||
<span class="action-icons active">
|
||||
<a href="javascript:void(0)" class="ps-3"><i class="ti ti-edit fs-5"></i></a>
|
||||
<a href="javascript:void(0)" class="ps-3"><i class="ti ti-circle-x fs-5"></i></a>
|
||||
<a href="javascript:void(0)" class="ps-3"><i class="ti ti-heart text-danger fs-5"></i></a>
|
||||
</span>
|
||||
</div>
|
||||
<span class="
|
||||
text-muted
|
||||
ms-auto
|
||||
fw-normal
|
||||
fs-2
|
||||
text-end
|
||||
mt-2
|
||||
d-block
|
||||
">April 14, 2025</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!-- Comment Row -->
|
||||
<div class="d-flex flex-row comment-row border-bottom p-3 gap-3">
|
||||
<div>
|
||||
<span><img src="./assets/images/profile/user-6.jpg" class="rounded-circle" alt="user"
|
||||
width="50" /></span>
|
||||
</div>
|
||||
<div class="comment-text w-100">
|
||||
<h6 class="fw-medium">Johnathan Doeting</h6>
|
||||
<p class="mb-1 fs-2 text-muted">
|
||||
Lorem Ipsum is simply dummy text of the printing and
|
||||
type setting industry.
|
||||
</p>
|
||||
<div class="comment-footer mt-2">
|
||||
<div class="d-flex align-items-center">
|
||||
<span class="
|
||||
badge
|
||||
bg-danger-subtle
|
||||
text-danger
|
||||
|
||||
">Rejected</span>
|
||||
<span class="action-icons">
|
||||
<a href="javascript:void(0)" class="ps-3"><i class="ti ti-edit fs-5"></i></a>
|
||||
<a href="javascript:void(0)" class="ps-3"><i class="ti ti-check fs-5"></i></a>
|
||||
<a href="javascript:void(0)" class="ps-3"><i class="ti ti-heart fs-5"></i></a>
|
||||
</span>
|
||||
</div>
|
||||
<span class="
|
||||
text-muted
|
||||
ms-auto
|
||||
fw-normal
|
||||
fs-2
|
||||
d-block
|
||||
mt-2
|
||||
text-end
|
||||
">April 14, 2025</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!-- Comment Row -->
|
||||
<div class="d-flex flex-row comment-row p-3 gap-3">
|
||||
<div>
|
||||
<span><img src="./assets/images/profile/user-4.jpg" class="rounded-circle" alt="user"
|
||||
width="50" /></span>
|
||||
</div>
|
||||
<div class="comment-text w-100">
|
||||
<h6 class="fw-medium">James Anderson</h6>
|
||||
<p class="mb-1 fs-2 text-muted">
|
||||
Lorem Ipsum is simply dummy text of the printing and
|
||||
type setting industry.
|
||||
</p>
|
||||
<div class="comment-footer mt-2">
|
||||
<div class="d-flex align-items-center">
|
||||
<span class="
|
||||
badge
|
||||
bg-info-subtle
|
||||
text-info
|
||||
|
||||
">Pending</span>
|
||||
<span class="action-icons">
|
||||
<a href="javascript:void(0)" class="ps-3"><i class="ti ti-edit fs-5"></i></a>
|
||||
<a href="javascript:void(0)" class="ps-3"><i class="ti ti-check fs-5"></i></a>
|
||||
<a href="javascript:void(0)" class="ps-3"><i class="ti ti-heart fs-5"></i></a>
|
||||
</span>
|
||||
</div>
|
||||
<span class="
|
||||
text-muted
|
||||
ms-auto
|
||||
fw-normal
|
||||
fs-2
|
||||
d-block
|
||||
text-end
|
||||
mt-2
|
||||
">April 14, 2025</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-lg-6">
|
||||
<div class="card">
|
||||
<div class="card-body">
|
||||
<div class="d-flex align-items-center">
|
||||
<h4 class="card-title mb-0">Weather Report</h4>
|
||||
<select class="form-select w-auto ms-auto">
|
||||
<option selected="">Today</option>
|
||||
<option value="1">Weekly</option>
|
||||
</select>
|
||||
</div>
|
||||
<div class="d-flex align-items-center flex-row mt-4">
|
||||
<div class="p-2 display-5 text-primary">
|
||||
<i class="ti ti-cloud-snow"></i>
|
||||
<span>73<sup>°</sup></span>
|
||||
</div>
|
||||
<div class="p-2">
|
||||
<h3 class="mb-0">Saturday</h3>
|
||||
<small>Ahmedabad, India</small>
|
||||
</div>
|
||||
</div>
|
||||
<table class="table table-borderless">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>Wind</td>
|
||||
<td class="fw-medium">ESE 17 mph</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Humidity</td>
|
||||
<td class="fw-medium">83%</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Pressure</td>
|
||||
<td class="fw-medium">28.56 in</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Cloud Cover</td>
|
||||
<td class="fw-medium">78%</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Ceiling</td>
|
||||
<td class="fw-medium">25760 ft</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<hr />
|
||||
<ul class="list-unstyled row text-center city-weather-days mb-0">
|
||||
<li class="col">
|
||||
<i class="ti ti-sun-high fs-4"></i><span>09:30</span>
|
||||
<h3 class="mb-0 fs-6 lh-base">70<sup>°</sup></h3>
|
||||
</li>
|
||||
<li class="col">
|
||||
<i class="ti ti-cloud fs-4"></i><span>11:30</span>
|
||||
<h3 class="mb-0 fs-6 lh-base">72<sup>°</sup></h3>
|
||||
</li>
|
||||
<li class="col">
|
||||
<i class="ti ti-cloud-rain fs-4"></i><span>13:30</span>
|
||||
<h3 class="mb-0 fs-6 lh-base">75<sup>°</sup></h3>
|
||||
</li>
|
||||
<li class="col">
|
||||
<i class="ti ti-cloud-snow fs-4"></i><span>15:30</span>
|
||||
<h3 class="mb-0 fs-6 lh-base">76<sup>°</sup></h3>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@endsection
|
||||
@ -12,10 +12,14 @@
|
||||
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap-table@1.24.1/dist/bootstrap-table.min.css">
|
||||
<link rel="stylesheet" type="text/css" href="https://cdn.jsdelivr.net/npm/toastify-js/src/toastify.min.css">
|
||||
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/7.0.1/css/all.min.css" integrity="sha512-2SwdPD6INVrV/lHTZbO2nodKhrnDdJK9/kg2XD1r9uGqPo1cUbujc+IYdlYdEErWNu69gVcYgdxlmVmzTWnetw==" crossorigin="anonymous" referrerpolicy="no-referrer" />
|
||||
<link href="https://cdn.jsdelivr.net/npm/select2@4.1.0-rc.0/dist/css/select2.min.css" rel="stylesheet" />
|
||||
|
||||
<script src="{{ ver('/assets/libs/jquery/dist/jquery.min.js') }}"></script>
|
||||
<script src="https://cdn.jsdelivr.net/npm/sweetalert2@11"></script>
|
||||
<script src="https://cdn.jsdelivr.net/npm/bootstrap-table@1.24.1/dist/bootstrap-table.min.js"></script>
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/7.0.1/js/all.min.js" integrity="sha512-6BTOlkauINO65nLhXhthZMtepgJSghyimIalb+crKRPhvhmsCdnIuGcVbR5/aQY2A+260iC1OPy1oCdB6pSSwQ==" crossorigin="anonymous" referrerpolicy="no-referrer"></script>
|
||||
<script src="https://cdn.jsdelivr.net/npm/select2@4.1.0-rc.0/dist/js/select2.min.js"></script>
|
||||
<script type="text/javascript" src="https://cdn.jsdelivr.net/npm/toastify-js"></script>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
|
||||
@ -35,17 +35,12 @@
|
||||
<div class="message-body">
|
||||
<a href="javascript:void(0)" class="d-flex align-items-center gap-2 dropdown-item">
|
||||
<i class="ti ti-user fs-6"></i>
|
||||
<p class="mb-0 fs-3">My Profile</p>
|
||||
<p class="mb-0 fs-3">{{ auth()->user()->namauser }}</p>
|
||||
</a>
|
||||
<a href="javascript:void(0)" class="d-flex align-items-center gap-2 dropdown-item">
|
||||
<i class="ti ti-mail fs-6"></i>
|
||||
<p class="mb-0 fs-3">My Account</p>
|
||||
</a>
|
||||
<a href="javascript:void(0)" class="d-flex align-items-center gap-2 dropdown-item">
|
||||
<i class="ti ti-list-check fs-6"></i>
|
||||
<p class="mb-0 fs-3">My Task</p>
|
||||
</a>
|
||||
<a href="./authentication-login.html" class="btn btn-outline-primary mx-3 mt-2 d-block">Logout</a>
|
||||
<form action="/logout" method="POST">
|
||||
@csrf
|
||||
<button type="submit" class="btn btn-outline-primary mx-3 mt-2 d-block">Logout</button>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</li>
|
||||
|
||||
@ -1,14 +1,23 @@
|
||||
<?php
|
||||
|
||||
use App\Http\Controllers\AuthController;
|
||||
use App\Http\Controllers\DashboardController;
|
||||
use App\Http\Controllers\MasterKategoriController;
|
||||
use App\Http\Controllers\MasterKlasifikasiController;
|
||||
use Illuminate\Support\Facades\Route;
|
||||
|
||||
Route::get('/', function () {
|
||||
return view('index');
|
||||
Route::middleware(['auth'])->group(function(){
|
||||
|
||||
Route::get('/', [DashboardController::class, 'index']);
|
||||
Route::post('/upload', [DashboardController::class, 'store']);
|
||||
Route::get('/data-unit-kerja', [DashboardController::class, 'dataUnitKerja']);
|
||||
|
||||
Route::resource('/master-kategori', MasterKategoriController::class);
|
||||
Route::get('datatable/master-kategori', [MasterKategoriController::class, 'datatable']);
|
||||
Route::resource('/master-klasifikasi', MasterKlasifikasiController::class);
|
||||
Route::get('datatable/master-klasifikasi', [MasterKlasifikasiController::class, 'datatable']);
|
||||
});
|
||||
|
||||
Route::resource('/master-kategori', MasterKategoriController::class);
|
||||
Route::get('datatable/master-kategori', [MasterKategoriController::class, 'datatable']);
|
||||
Route::resource('/master-klasifikasi', MasterKlasifikasiController::class);
|
||||
Route::get('datatable/master-klasifikasi', [MasterKlasifikasiController::class, 'datatable']);
|
||||
Route::get('/login', [AuthController::class, 'index'])->name('login');
|
||||
Route::post('/login', [AuthController::class, 'login']);
|
||||
Route::post('/logout', [AuthController::class, 'logout']);
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user