admin
This commit is contained in:
parent
eba04dd44b
commit
d30e407d8c
270
app/Http/Controllers/AdminController.php
Normal file
270
app/Http/Controllers/AdminController.php
Normal file
@ -0,0 +1,270 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Http\Controllers;
|
||||||
|
|
||||||
|
use App\Models\Jawaban;
|
||||||
|
use App\Models\SoalDetail;
|
||||||
|
use Illuminate\Http\Request;
|
||||||
|
use Illuminate\Support\Facades\DB;
|
||||||
|
use Yajra\DataTables\DataTables;
|
||||||
|
|
||||||
|
class AdminController extends Controller
|
||||||
|
{
|
||||||
|
//
|
||||||
|
public function index()
|
||||||
|
{
|
||||||
|
$data['list_unit_kerja'] = [
|
||||||
|
"Direktur Utama dan Direksi",
|
||||||
|
"Satuan Pengawas Internal",
|
||||||
|
"Komite Mutu",
|
||||||
|
"Komite Medik",
|
||||||
|
"Komite Keperawatan",
|
||||||
|
"Komite PPI & PRA",
|
||||||
|
"KTKL",
|
||||||
|
"KFT",
|
||||||
|
"KEH",
|
||||||
|
"ULP",
|
||||||
|
"Timker Yankep",
|
||||||
|
"Timker Yanjang",
|
||||||
|
"Timker Perencanaan, Evaluasi dan Program",
|
||||||
|
"Timker Hukum dan Humas",
|
||||||
|
"Timker Yanmed",
|
||||||
|
"Timker Perencanaan dan Evaluasi Anggaran",
|
||||||
|
"Timker Akutansi dan BMN",
|
||||||
|
"Timker Organisasi dan Sumber Daya Manusia",
|
||||||
|
"Timker TU & RT",
|
||||||
|
"Timker Diklat",
|
||||||
|
"Timker Penelitian",
|
||||||
|
"Timker Pelaksanan Keuangan",
|
||||||
|
"Instalasi Rawat Inap",
|
||||||
|
"Instalasi Rawat Jalan Reguler",
|
||||||
|
"Instalasi Rawat Intensif / ICU",
|
||||||
|
"Instalasi Rehabilitasi Medik",
|
||||||
|
"Instalasi Gizi",
|
||||||
|
"Instalasi Laboratorium Terpadu",
|
||||||
|
"Instalasi Sistem Informasi Manajemen Rumah Sakit (SIMRS)",
|
||||||
|
"Instalasi Bedah Sentral",
|
||||||
|
"Instalasi Radiologi",
|
||||||
|
"Instalasi Farmasi",
|
||||||
|
"Instalasi Rekam Medis",
|
||||||
|
"Instalasi Gawat Darurat",
|
||||||
|
"Instalasi Verifikasi dan Penjaminan Pasien",
|
||||||
|
"Instalasi KL & K3RS",
|
||||||
|
"ISSB",
|
||||||
|
"IPT",
|
||||||
|
"IPJNI",
|
||||||
|
"IPSPRS",
|
||||||
|
"IPPB",
|
||||||
|
"IPPISGB",
|
||||||
|
"Instalasi Rawat Jalan Eksekutif",
|
||||||
|
"Instalasi Teknologi Berbantu (TRB)",
|
||||||
|
"Klinik Utama Bintaro",
|
||||||
|
"KSM Anak",
|
||||||
|
"KSM Obstetri & Ginekologi",
|
||||||
|
"KSM Bedah",
|
||||||
|
"KSM Anestesi",
|
||||||
|
"KSM Gigi & Mulut",
|
||||||
|
"KSM Spesialis Lain",
|
||||||
|
"KSM Umum",
|
||||||
|
"Lainnya (Mahasiswa dan Outsourcing)"
|
||||||
|
];
|
||||||
|
return view('admin.dashboard', $data);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function get_data_pegawai_sudah_survey(Request $request)
|
||||||
|
{
|
||||||
|
$query = Jawaban::query();
|
||||||
|
|
||||||
|
if ($request->nama_pegawai) {
|
||||||
|
$query->where('nama', 'ILIKE', '%' . $request->nama_pegawai . '%');
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($request->unit_kerja) {
|
||||||
|
$query->whereIn('unit', $request->unit_kerja);
|
||||||
|
}
|
||||||
|
|
||||||
|
return DataTables::of($query)->make(true);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public function dashboard_analisis()
|
||||||
|
{
|
||||||
|
$data['list_unit_kerja'] = [
|
||||||
|
"Direktur Utama dan Direksi",
|
||||||
|
"Satuan Pengawas Internal",
|
||||||
|
"Komite Mutu",
|
||||||
|
"Komite Medik",
|
||||||
|
"Komite Keperawatan",
|
||||||
|
"Komite PPI & PRA",
|
||||||
|
"KTKL",
|
||||||
|
"KFT",
|
||||||
|
"KEH",
|
||||||
|
"ULP",
|
||||||
|
"Timker Yankep",
|
||||||
|
"Timker Yanjang",
|
||||||
|
"Timker Perencanaan, Evaluasi dan Program",
|
||||||
|
"Timker Hukum dan Humas",
|
||||||
|
"Timker Yanmed",
|
||||||
|
"Timker Perencanaan dan Evaluasi Anggaran",
|
||||||
|
"Timker Akutansi dan BMN",
|
||||||
|
"Timker Organisasi dan Sumber Daya Manusia",
|
||||||
|
"Timker TU & RT",
|
||||||
|
"Timker Diklat",
|
||||||
|
"Timker Penelitian",
|
||||||
|
"Timker Pelaksanan Keuangan",
|
||||||
|
"Instalasi Rawat Inap",
|
||||||
|
"Instalasi Rawat Jalan Reguler",
|
||||||
|
"Instalasi Rawat Intensif / ICU",
|
||||||
|
"Instalasi Rehabilitasi Medik",
|
||||||
|
"Instalasi Gizi",
|
||||||
|
"Instalasi Laboratorium Terpadu",
|
||||||
|
"Instalasi Sistem Informasi Manajemen Rumah Sakit (SIMRS)",
|
||||||
|
"Instalasi Bedah Sentral",
|
||||||
|
"Instalasi Radiologi",
|
||||||
|
"Instalasi Farmasi",
|
||||||
|
"Instalasi Rekam Medis",
|
||||||
|
"Instalasi Gawat Darurat",
|
||||||
|
"Instalasi Verifikasi dan Penjaminan Pasien",
|
||||||
|
"Instalasi KL & K3RS",
|
||||||
|
"ISSB",
|
||||||
|
"IPT",
|
||||||
|
"IPJNI",
|
||||||
|
"IPSPRS",
|
||||||
|
"IPPB",
|
||||||
|
"IPPISGB",
|
||||||
|
"Instalasi Rawat Jalan Eksekutif",
|
||||||
|
"Instalasi Teknologi Berbantu (TRB)",
|
||||||
|
"Klinik Utama Bintaro",
|
||||||
|
"KSM Anak",
|
||||||
|
"KSM Obstetri & Ginekologi",
|
||||||
|
"KSM Bedah",
|
||||||
|
"KSM Anestesi",
|
||||||
|
"KSM Gigi & Mulut",
|
||||||
|
"KSM Spesialis Lain",
|
||||||
|
"KSM Umum",
|
||||||
|
"Lainnya (Mahasiswa dan Outsourcing)"
|
||||||
|
];
|
||||||
|
return view('admin.dashboard_analisis', $data);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function get_data_dashboard_analisis(Request $request)
|
||||||
|
{
|
||||||
|
try {
|
||||||
|
$soal = SoalDetail::all()->sortBy('id')->values()->toArray();
|
||||||
|
|
||||||
|
$data = [];
|
||||||
|
foreach ($soal as $key => $value) {
|
||||||
|
$jawaban = [];
|
||||||
|
$soal_json = json_decode($value['soal'], true);
|
||||||
|
$sub = DB::table('lms_mutu_jawaban_detail')
|
||||||
|
->select('lms_mutu_soal_detail_id', DB::raw('COUNT(*) AS total_semua'))
|
||||||
|
->join(
|
||||||
|
'lms_mutu_jawaban',
|
||||||
|
'lms_mutu_jawaban_detail.lms_mutu_jawaban_id',
|
||||||
|
'=',
|
||||||
|
'lms_mutu_jawaban.id'
|
||||||
|
)
|
||||||
|
->where('lms_mutu_soal_detail_id', $value['id']);
|
||||||
|
if($request->unit_kerja) {
|
||||||
|
$sub->whereIn('lms_mutu_jawaban.unit', $request->unit_kerja);
|
||||||
|
}
|
||||||
|
$sub->groupBy('lms_mutu_soal_detail_id');
|
||||||
|
|
||||||
|
$result = DB::table('lms_mutu_jawaban_detail AS d')
|
||||||
|
->joinSub($sub, 't', function($join) {
|
||||||
|
$join->on('t.lms_mutu_soal_detail_id', '=', 'd.lms_mutu_soal_detail_id');
|
||||||
|
})
|
||||||
|
->join(
|
||||||
|
'lms_mutu_jawaban',
|
||||||
|
'd.lms_mutu_jawaban_id',
|
||||||
|
'=',
|
||||||
|
'lms_mutu_jawaban.id'
|
||||||
|
)
|
||||||
|
->selectRaw(
|
||||||
|
'd.lms_mutu_soal_detail_id,
|
||||||
|
d.jawaban,
|
||||||
|
COUNT(*) AS total_jawaban,
|
||||||
|
t.total_semua,
|
||||||
|
ROUND((COUNT(*)::numeric / t.total_semua::numeric) * 100) AS percent'
|
||||||
|
)
|
||||||
|
->where('d.lms_mutu_soal_detail_id', $value['id'])
|
||||||
|
->groupBy('d.lms_mutu_soal_detail_id', 'd.jawaban', 't.total_semua');
|
||||||
|
if($request->unit_kerja) {
|
||||||
|
$result->whereIn('lms_mutu_jawaban.unit', $request->unit_kerja);
|
||||||
|
}
|
||||||
|
$result->orderBy('d.lms_mutu_soal_detail_id', 'asc');
|
||||||
|
|
||||||
|
if(count($soal_json['options']) > 0){
|
||||||
|
foreach ($soal_json['options'] as $v) {
|
||||||
|
|
||||||
|
if($v != 'Lainnya'){
|
||||||
|
$row = (clone $result)->where('d.jawaban', $v)
|
||||||
|
->first();
|
||||||
|
|
||||||
|
if($row) {
|
||||||
|
$data_per_jawaban = [
|
||||||
|
'name' => $v,
|
||||||
|
'y' => (float) $row->percent,
|
||||||
|
'value' => $row->total_jawaban,
|
||||||
|
'total' => $row->total_semua
|
||||||
|
];
|
||||||
|
|
||||||
|
array_push($jawaban, $data_per_jawaban);
|
||||||
|
} else {
|
||||||
|
$data_per_jawaban = [
|
||||||
|
'name' => $v,
|
||||||
|
'y' => 0
|
||||||
|
];
|
||||||
|
array_push($jawaban, $data_per_jawaban);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
$get_data = (clone $result)->whereNotIn('d.jawaban', $soal_json['options'])
|
||||||
|
->get()
|
||||||
|
->toArray();
|
||||||
|
|
||||||
|
foreach ($get_data as $val) {
|
||||||
|
$data_per_jawaban = [
|
||||||
|
'name' => $val->jawaban,
|
||||||
|
'y' => (float) $val->percent,
|
||||||
|
'value' => $val->total_jawaban,
|
||||||
|
'total' => $val->total_semua
|
||||||
|
];
|
||||||
|
array_push($jawaban, $data_per_jawaban);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
$get_data = $result->get()
|
||||||
|
->toArray();
|
||||||
|
foreach ($get_data as $val) {
|
||||||
|
$data_per_jawaban = [
|
||||||
|
'name' => $val->jawaban,
|
||||||
|
'y' => (float) $val->percent,
|
||||||
|
'value' => $val->total_jawaban,
|
||||||
|
'total' => $val->total_semua
|
||||||
|
];
|
||||||
|
array_push($jawaban, $data_per_jawaban);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
$data_persoal = [
|
||||||
|
'soal' => $soal_json['soal'],
|
||||||
|
'jawaban' => $jawaban
|
||||||
|
];
|
||||||
|
|
||||||
|
array_push($data, $data_persoal);
|
||||||
|
}
|
||||||
|
|
||||||
|
return response()->json([
|
||||||
|
'msg' => 'Berhasil',
|
||||||
|
'data' => $data
|
||||||
|
], 200);
|
||||||
|
} catch (\ErrorException $th) {
|
||||||
|
return response()->json([
|
||||||
|
'msg' => 'Oops something wrong!',
|
||||||
|
'data' => null,
|
||||||
|
'msg_dev' => $th
|
||||||
|
], 500);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -8,7 +8,8 @@
|
|||||||
"require": {
|
"require": {
|
||||||
"php": "^8.2",
|
"php": "^8.2",
|
||||||
"laravel/framework": "^11.31",
|
"laravel/framework": "^11.31",
|
||||||
"laravel/tinker": "^2.9"
|
"laravel/tinker": "^2.9",
|
||||||
|
"yajra/laravel-datatables-oracle": "11.0"
|
||||||
},
|
},
|
||||||
"require-dev": {
|
"require-dev": {
|
||||||
"fakerphp/faker": "^1.23",
|
"fakerphp/faker": "^1.23",
|
||||||
|
|||||||
91
composer.lock
generated
91
composer.lock
generated
@ -4,7 +4,7 @@
|
|||||||
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
|
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
|
||||||
"This file is @generated automatically"
|
"This file is @generated automatically"
|
||||||
],
|
],
|
||||||
"content-hash": "626b9e7ddd47fb7eff9aaa53cce0c9ad",
|
"content-hash": "7ae784044cc087af521c6abbb3c6e2c8",
|
||||||
"packages": [
|
"packages": [
|
||||||
{
|
{
|
||||||
"name": "brick/math",
|
"name": "brick/math",
|
||||||
@ -5916,6 +5916,95 @@
|
|||||||
}
|
}
|
||||||
],
|
],
|
||||||
"time": "2024-11-21T01:49:47+00:00"
|
"time": "2024-11-21T01:49:47+00:00"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "yajra/laravel-datatables-oracle",
|
||||||
|
"version": "v11.0.0",
|
||||||
|
"source": {
|
||||||
|
"type": "git",
|
||||||
|
"url": "https://github.com/yajra/laravel-datatables.git",
|
||||||
|
"reference": "f4d8a8df5fd2ac26fb6384f9caa41596bd79c305"
|
||||||
|
},
|
||||||
|
"dist": {
|
||||||
|
"type": "zip",
|
||||||
|
"url": "https://api.github.com/repos/yajra/laravel-datatables/zipball/f4d8a8df5fd2ac26fb6384f9caa41596bd79c305",
|
||||||
|
"reference": "f4d8a8df5fd2ac26fb6384f9caa41596bd79c305",
|
||||||
|
"shasum": ""
|
||||||
|
},
|
||||||
|
"require": {
|
||||||
|
"illuminate/database": "^11",
|
||||||
|
"illuminate/filesystem": "^11",
|
||||||
|
"illuminate/http": "^11",
|
||||||
|
"illuminate/support": "^11",
|
||||||
|
"illuminate/view": "^11",
|
||||||
|
"php": "^8.2"
|
||||||
|
},
|
||||||
|
"require-dev": {
|
||||||
|
"algolia/algoliasearch-client-php": "^3.4.1",
|
||||||
|
"larastan/larastan": "^2.9.1",
|
||||||
|
"laravel/pint": "^1.14",
|
||||||
|
"laravel/scout": "^10.8.3",
|
||||||
|
"meilisearch/meilisearch-php": "^1.6.1",
|
||||||
|
"orchestra/testbench": "^9",
|
||||||
|
"rector/rector": "^1.0"
|
||||||
|
},
|
||||||
|
"suggest": {
|
||||||
|
"yajra/laravel-datatables-buttons": "Plugin for server-side exporting of dataTables.",
|
||||||
|
"yajra/laravel-datatables-editor": "Plugin to use DataTables Editor (requires a license).",
|
||||||
|
"yajra/laravel-datatables-export": "Plugin for server-side exporting using livewire and queue worker.",
|
||||||
|
"yajra/laravel-datatables-fractal": "Plugin for server-side response using Fractal.",
|
||||||
|
"yajra/laravel-datatables-html": "Plugin for server-side HTML builder of dataTables."
|
||||||
|
},
|
||||||
|
"type": "library",
|
||||||
|
"extra": {
|
||||||
|
"laravel": {
|
||||||
|
"aliases": {
|
||||||
|
"DataTables": "Yajra\\DataTables\\Facades\\DataTables"
|
||||||
|
},
|
||||||
|
"providers": [
|
||||||
|
"Yajra\\DataTables\\DataTablesServiceProvider"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"branch-alias": {
|
||||||
|
"dev-master": "11.x-dev"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"autoload": {
|
||||||
|
"files": [
|
||||||
|
"src/helper.php"
|
||||||
|
],
|
||||||
|
"psr-4": {
|
||||||
|
"Yajra\\DataTables\\": "src/"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"notification-url": "https://packagist.org/downloads/",
|
||||||
|
"license": [
|
||||||
|
"MIT"
|
||||||
|
],
|
||||||
|
"authors": [
|
||||||
|
{
|
||||||
|
"name": "Arjay Angeles",
|
||||||
|
"email": "aqangeles@gmail.com"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"description": "jQuery DataTables API for Laravel",
|
||||||
|
"keywords": [
|
||||||
|
"datatables",
|
||||||
|
"jquery",
|
||||||
|
"laravel",
|
||||||
|
"yajra"
|
||||||
|
],
|
||||||
|
"support": {
|
||||||
|
"issues": "https://github.com/yajra/laravel-datatables/issues",
|
||||||
|
"source": "https://github.com/yajra/laravel-datatables/tree/v11.0.0"
|
||||||
|
},
|
||||||
|
"funding": [
|
||||||
|
{
|
||||||
|
"url": "https://github.com/sponsors/yajra",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"time": "2024-03-14T04:05:21+00:00"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"packages-dev": [
|
"packages-dev": [
|
||||||
|
|||||||
127
config/datatables.php
Normal file
127
config/datatables.php
Normal file
@ -0,0 +1,127 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
return [
|
||||||
|
/*
|
||||||
|
* DataTables search options.
|
||||||
|
*/
|
||||||
|
'search' => [
|
||||||
|
/*
|
||||||
|
* Smart search will enclose search keyword with wildcard string "%keyword%".
|
||||||
|
* SQL: column LIKE "%keyword%"
|
||||||
|
*/
|
||||||
|
'smart' => true,
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Multi-term search will explode search keyword using spaces resulting into multiple term search.
|
||||||
|
*/
|
||||||
|
'multi_term' => true,
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Case insensitive will search the keyword in lower case format.
|
||||||
|
* SQL: LOWER(column) LIKE LOWER(keyword)
|
||||||
|
*/
|
||||||
|
'case_insensitive' => true,
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Wild card will add "%" in between every characters of the keyword.
|
||||||
|
* SQL: column LIKE "%k%e%y%w%o%r%d%"
|
||||||
|
*/
|
||||||
|
'use_wildcards' => false,
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Perform a search which starts with the given keyword.
|
||||||
|
* SQL: column LIKE "keyword%"
|
||||||
|
*/
|
||||||
|
'starts_with' => false,
|
||||||
|
],
|
||||||
|
|
||||||
|
/*
|
||||||
|
* DataTables internal index id response column name.
|
||||||
|
*/
|
||||||
|
'index_column' => 'DT_RowIndex',
|
||||||
|
|
||||||
|
/*
|
||||||
|
* List of available builders for DataTables.
|
||||||
|
* This is where you can register your custom dataTables builder.
|
||||||
|
*/
|
||||||
|
'engines' => [
|
||||||
|
'eloquent' => Yajra\DataTables\EloquentDataTable::class,
|
||||||
|
'query' => Yajra\DataTables\QueryDataTable::class,
|
||||||
|
'collection' => Yajra\DataTables\CollectionDataTable::class,
|
||||||
|
'resource' => Yajra\DataTables\ApiResourceDataTable::class,
|
||||||
|
],
|
||||||
|
|
||||||
|
/*
|
||||||
|
* DataTables accepted builder to engine mapping.
|
||||||
|
* This is where you can override which engine a builder should use
|
||||||
|
* Note, only change this if you know what you are doing!
|
||||||
|
*/
|
||||||
|
'builders' => [
|
||||||
|
//Illuminate\Database\Eloquent\Relations\Relation::class => 'eloquent',
|
||||||
|
//Illuminate\Database\Eloquent\Builder::class => 'eloquent',
|
||||||
|
//Illuminate\Database\Query\Builder::class => 'query',
|
||||||
|
//Illuminate\Support\Collection::class => 'collection',
|
||||||
|
],
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Nulls last sql pattern for PostgreSQL & Oracle.
|
||||||
|
* For MySQL, use 'CASE WHEN :column IS NULL THEN 1 ELSE 0 END, :column :direction'
|
||||||
|
*/
|
||||||
|
'nulls_last_sql' => ':column :direction NULLS LAST',
|
||||||
|
|
||||||
|
/*
|
||||||
|
* User friendly message to be displayed on user if error occurs.
|
||||||
|
* Possible values:
|
||||||
|
* null - The exception message will be used on error response.
|
||||||
|
* 'throw' - Throws a \Yajra\DataTables\Exceptions\Exception. Use your custom error handler if needed.
|
||||||
|
* 'custom message' - Any friendly message to be displayed to the user. You can also use translation key.
|
||||||
|
*/
|
||||||
|
'error' => env('DATATABLES_ERROR', null),
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Default columns definition of dataTable utility functions.
|
||||||
|
*/
|
||||||
|
'columns' => [
|
||||||
|
/*
|
||||||
|
* List of columns hidden/removed on json response.
|
||||||
|
*/
|
||||||
|
'excess' => ['rn', 'row_num'],
|
||||||
|
|
||||||
|
/*
|
||||||
|
* List of columns to be escaped. If set to *, all columns are escape.
|
||||||
|
* Note: You can set the value to empty array to disable XSS protection.
|
||||||
|
*/
|
||||||
|
'escape' => '*',
|
||||||
|
|
||||||
|
/*
|
||||||
|
* List of columns that are allowed to display html content.
|
||||||
|
* Note: Adding columns to list will make us available to XSS attacks.
|
||||||
|
*/
|
||||||
|
'raw' => ['action'],
|
||||||
|
|
||||||
|
/*
|
||||||
|
* List of columns are forbidden from being searched/sorted.
|
||||||
|
*/
|
||||||
|
'blacklist' => ['password', 'remember_token'],
|
||||||
|
|
||||||
|
/*
|
||||||
|
* List of columns that are only allowed fo search/sort.
|
||||||
|
* If set to *, all columns are allowed.
|
||||||
|
*/
|
||||||
|
'whitelist' => '*',
|
||||||
|
],
|
||||||
|
|
||||||
|
/*
|
||||||
|
* JsonResponse header and options config.
|
||||||
|
*/
|
||||||
|
'json' => [
|
||||||
|
'header' => [],
|
||||||
|
'options' => 0,
|
||||||
|
],
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Default condition to determine if a parameter is a callback or not.
|
||||||
|
* Callbacks needs to start by those terms, or they will be cast to string.
|
||||||
|
*/
|
||||||
|
'callback' => ['$', '$.', 'function'],
|
||||||
|
];
|
||||||
81
resources/views/admin/dashboard.blade.php
Normal file
81
resources/views/admin/dashboard.blade.php
Normal file
@ -0,0 +1,81 @@
|
|||||||
|
@extends('layouts.template_admin')
|
||||||
|
|
||||||
|
@section('title', 'Dashboard | Mutu RSAB Harapan Kita')
|
||||||
|
@section('custom_css')
|
||||||
|
@endsection
|
||||||
|
|
||||||
|
@section('content')
|
||||||
|
<div class="card">
|
||||||
|
<div class="card-body">
|
||||||
|
<div class="card-title fs-4 fw-bold">Dashboard</div>
|
||||||
|
<div class="mt-5">
|
||||||
|
<div class="d-flex gap-2 align-items-end">
|
||||||
|
<div class="form-group w-50">
|
||||||
|
<label for="nama_pegawai" class="form-label">Nama Pegawai</label>
|
||||||
|
<input type="text" class="form-control" id="nama_pegawai" placeholder="John Doe" />
|
||||||
|
</div>
|
||||||
|
<div class="form-group w-75">
|
||||||
|
<label for="select_unit_kerja" class="form-label">Unit Kerja</label>
|
||||||
|
<select id="select_unit_kerja" class="select2 form-select" multiple>
|
||||||
|
@foreach ($list_unit_kerja as $item)
|
||||||
|
<option value="{{ $item }}">{{ $item }}</option>
|
||||||
|
@endforeach
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
|
<div class="w-100">
|
||||||
|
<div class="btn btn-primary" id="search_button">
|
||||||
|
Cari
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="mt-3">
|
||||||
|
<div class="table-responsive">
|
||||||
|
<table id="table" class="dt-complex-header table table-bordered">
|
||||||
|
<thead class="bg-primary" id="table_header">
|
||||||
|
<tr>
|
||||||
|
<th class="text-white fs-5">Nama Pegawai</th>
|
||||||
|
<th class="text-white fs-5">Unit Kerja</th>
|
||||||
|
<th class="text-white fs-5">Tanggal Isi</th>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
@endsection
|
||||||
|
|
||||||
|
@section('custom_js')
|
||||||
|
<script>
|
||||||
|
let table = null;
|
||||||
|
$(document).ready(function(){
|
||||||
|
$(".select2").select2();
|
||||||
|
$('#search_button').click(function(){
|
||||||
|
$('#table').DataTable().ajax.reload();
|
||||||
|
});
|
||||||
|
generateTable();
|
||||||
|
});
|
||||||
|
|
||||||
|
function generateTable() {
|
||||||
|
$('#table').DataTable({
|
||||||
|
processing: true,
|
||||||
|
serverSide: true,
|
||||||
|
ajax: {
|
||||||
|
url: `{{ url('/admin/get_data_pegawai_sudah_survey') }}`,
|
||||||
|
type: 'POST',
|
||||||
|
data: function (d) {
|
||||||
|
d.nama_pegawai = $('#nama_pegawai').val();
|
||||||
|
d.unit_kerja = $('#select_unit_kerja').val();
|
||||||
|
d._token = '{{ csrf_token() }}';
|
||||||
|
}
|
||||||
|
},
|
||||||
|
columns: [
|
||||||
|
{ data: 'nama' },
|
||||||
|
{ data: 'unit' },
|
||||||
|
{ data: 'tanggal_isi' }
|
||||||
|
]
|
||||||
|
});
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
@endsection
|
||||||
117
resources/views/admin/dashboard_analisis.blade.php
Normal file
117
resources/views/admin/dashboard_analisis.blade.php
Normal file
@ -0,0 +1,117 @@
|
|||||||
|
@extends('layouts.template_admin')
|
||||||
|
|
||||||
|
@section('title', 'Dashboard | Mutu RSAB Harapan Kita')
|
||||||
|
@section('custom_css')
|
||||||
|
@endsection
|
||||||
|
|
||||||
|
@section('content')
|
||||||
|
<div class="card">
|
||||||
|
<div class="card-body">
|
||||||
|
<div class="card-title fs-4 fw-bold">Dashboard Analisis</div>
|
||||||
|
<div class="mt-5">
|
||||||
|
<div class="d-flex gap-2 align-items-end">
|
||||||
|
<div class="form-group w-75">
|
||||||
|
<label for="select_unit_kerja" class="form-label">Unit Kerja</label>
|
||||||
|
<select id="select_unit_kerja" class="select2 form-select" multiple>
|
||||||
|
@foreach ($list_unit_kerja as $item)
|
||||||
|
<option value="{{ $item }}">{{ $item }}</option>
|
||||||
|
@endforeach
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
|
<div class="w-100">
|
||||||
|
<div class="btn btn-primary" id="search_button">
|
||||||
|
Cari
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="mt-3" id="body_chart" style="max-height: 80vh; overflow-y: auto;">
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
@endsection
|
||||||
|
|
||||||
|
@section('custom_js')
|
||||||
|
<script>
|
||||||
|
$(document).ready(function(){
|
||||||
|
$(".select2").select2();
|
||||||
|
$('#search_button').click(function(){
|
||||||
|
get_data_analisis();
|
||||||
|
})
|
||||||
|
});
|
||||||
|
|
||||||
|
function get_data_analisis() {
|
||||||
|
$('#body_chart').html(`<div class="p-10 d-flex justify-content-center">
|
||||||
|
<div>
|
||||||
|
<!-- Fold -->
|
||||||
|
<div class="sk-fold">
|
||||||
|
<div class="sk-fold-cube"></div>
|
||||||
|
<div class="sk-fold-cube"></div>
|
||||||
|
<div class="sk-fold-cube"></div>
|
||||||
|
<div class="sk-fold-cube"></div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>`);
|
||||||
|
$.ajax({
|
||||||
|
url: "{{ url('/admin/get_data_dashboard_jawaban') }}",
|
||||||
|
type: "POST",
|
||||||
|
data: {
|
||||||
|
unit_kerja: $('#select_unit_kerja').val(),
|
||||||
|
_token: "{{ csrf_token() }}"
|
||||||
|
},
|
||||||
|
success: function(res) {
|
||||||
|
$('#body_chart').html("");
|
||||||
|
res.data.forEach((element, index) => {
|
||||||
|
const id = `chart_analisis_${index}`;
|
||||||
|
$('#body_chart').append(`<div id="${id}" class="my-3"></div>`);
|
||||||
|
generateChart(element.jawaban, id, element.soal);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
function generateChart(data, id, soal) {
|
||||||
|
Highcharts.chart(id, {
|
||||||
|
chart: { type: 'column' },
|
||||||
|
title: { text: soal },
|
||||||
|
xAxis: {
|
||||||
|
categories: [soal] // cuma 1 kategori (soal)
|
||||||
|
},
|
||||||
|
yAxis: {
|
||||||
|
min: 0,
|
||||||
|
max: 100
|
||||||
|
},
|
||||||
|
credits: { enabled: false },
|
||||||
|
tooltip: {
|
||||||
|
useHTML: true,
|
||||||
|
formatter: function() {
|
||||||
|
console.log(this.point);
|
||||||
|
|
||||||
|
const totalUser = this.point.total_user ?? 0;
|
||||||
|
const totalSemua = this.point.total_semua ?? 0;
|
||||||
|
return `
|
||||||
|
<b>${this.series.name}</b><br>
|
||||||
|
Nilai: ${this.y}%<br>
|
||||||
|
Total Jawaban: ${totalUser}<br>
|
||||||
|
Total Semua: ${totalSemua}
|
||||||
|
`;
|
||||||
|
}
|
||||||
|
},
|
||||||
|
series: data.map(j => ({
|
||||||
|
name: j.name,
|
||||||
|
type: 'column',
|
||||||
|
data: [{y: j.y, total_user: j.value, total_semua: j.total}]
|
||||||
|
})),
|
||||||
|
dataLabels: {
|
||||||
|
enabled: true,
|
||||||
|
formatter: function() {
|
||||||
|
return this.y + '%'; // ⬅️ Tampilkan angka + %
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
</script>
|
||||||
|
@endsection
|
||||||
@ -1,6 +1,6 @@
|
|||||||
@extends('layouts.template_auth')
|
@extends('layouts.template_auth')
|
||||||
|
|
||||||
@section('title', 'Login | SIMPATIK RSAB Harapan Kita')
|
@section('title', 'Login | Survey Mutu RSAB Harapan Kita')
|
||||||
@section('custom_css')
|
@section('custom_css')
|
||||||
<style>
|
<style>
|
||||||
@media (min-width: 768px) {
|
@media (min-width: 768px) {
|
||||||
@ -57,89 +57,9 @@
|
|||||||
$('#button_login').attr('disabled', 'true');
|
$('#button_login').attr('disabled', 'true');
|
||||||
|
|
||||||
const username = $('#user_name').val();
|
const username = $('#user_name').val();
|
||||||
if(username == 'admin_pembelajaran'){
|
const password = $('#password').val();
|
||||||
$.ajax({
|
if(username == 'admin' && password == 'admin'){
|
||||||
url: "{{ url('admin/login/action') }}",
|
window.location.href = '{{ url("/admin") }}';
|
||||||
type: "GET",
|
|
||||||
success: function(res) {
|
|
||||||
$.cookie("token", res.data, { expires: 7, path: "/" });
|
|
||||||
Swal.fire({
|
|
||||||
position: "top-end",
|
|
||||||
icon: "success",
|
|
||||||
text: "Berhasil Login",
|
|
||||||
showConfirmButton: false,
|
|
||||||
timer: 1500
|
|
||||||
}).then((result) => {
|
|
||||||
window.location.href = '{{ url("/admin") }}';
|
|
||||||
}).catch((err) => {
|
|
||||||
|
|
||||||
});
|
|
||||||
},
|
|
||||||
error: function(err) {
|
|
||||||
console.log(err.responseJSON);
|
|
||||||
$('#button_login').removeAttr('disabled');
|
|
||||||
Swal.fire({
|
|
||||||
position: "top-end",
|
|
||||||
icon: "error",
|
|
||||||
text: err?.responseJSON?.message ?? 'oops something wrong!',
|
|
||||||
showConfirmButton: false,
|
|
||||||
timer: 1500
|
|
||||||
});
|
|
||||||
|
|
||||||
if(err.status == 422){
|
|
||||||
const dataErrors = err.responseJSON.errors;
|
|
||||||
|
|
||||||
for (let field in dataErrors) {
|
|
||||||
$(`#${field}_error`).html(dataErrors[field].join(", "));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
} else {
|
|
||||||
$.ajax({
|
|
||||||
url: "{{ getenv('URL_BE') }}publik/login/pegawai",
|
|
||||||
type: "POST",
|
|
||||||
data: formData,
|
|
||||||
processData: false,
|
|
||||||
contentType: false,
|
|
||||||
headers: {
|
|
||||||
"x-klien": 1
|
|
||||||
},
|
|
||||||
success: function(res) {
|
|
||||||
$.cookie("token", res.response.access_token, { expires: 7, path: "/" });
|
|
||||||
Swal.fire({
|
|
||||||
position: "top-end",
|
|
||||||
icon: "success",
|
|
||||||
text: "Berhasil Login",
|
|
||||||
showConfirmButton: false,
|
|
||||||
timer: 1500
|
|
||||||
}).then((result) => {
|
|
||||||
window.location.href = '{{ url("/") }}';
|
|
||||||
// window.location.href = '{{ url("/admin") }}';
|
|
||||||
}).catch((err) => {
|
|
||||||
|
|
||||||
});
|
|
||||||
},
|
|
||||||
error: function(err) {
|
|
||||||
console.log(err.responseJSON);
|
|
||||||
$('#button_login').removeAttr('disabled');
|
|
||||||
Swal.fire({
|
|
||||||
position: "top-end",
|
|
||||||
icon: "error",
|
|
||||||
text: err?.responseJSON?.message ?? 'oops something wrong!',
|
|
||||||
showConfirmButton: false,
|
|
||||||
timer: 1500
|
|
||||||
});
|
|
||||||
|
|
||||||
if(err.status == 422){
|
|
||||||
const dataErrors = err.responseJSON.errors;
|
|
||||||
|
|
||||||
for (let field in dataErrors) {
|
|
||||||
$(`#${field}_error`).html(dataErrors[field].join(", "));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -5,7 +5,7 @@
|
|||||||
<head>
|
<head>
|
||||||
<meta charset="utf-8" />
|
<meta charset="utf-8" />
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||||
<title>@yield('title', 'SIMPATIK RSAB Harapan Kita')</title>
|
<title>@yield('title', 'Survey Mutu RSAB Harapan Kita')</title>
|
||||||
|
|
||||||
<!-- Favicon -->
|
<!-- Favicon -->
|
||||||
<link rel="icon" type="image/png" href="{{ asset('vuexy/assets/img/favicon/favicon.png') }}" />
|
<link rel="icon" type="image/png" href="{{ asset('vuexy/assets/img/favicon/favicon.png') }}" />
|
||||||
@ -51,23 +51,6 @@
|
|||||||
<a class="navbar-brand" href="{{ url('/') }}">
|
<a class="navbar-brand" href="{{ url('/') }}">
|
||||||
<img src="{{ asset('assets/img/logo-fullname-negatif.png') }}" alt="Logo" height="40" class="d-inline-block align-text-top">
|
<img src="{{ asset('assets/img/logo-fullname-negatif.png') }}" alt="Logo" height="40" class="d-inline-block align-text-top">
|
||||||
</a>
|
</a>
|
||||||
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarSupportedContent" aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation">
|
|
||||||
<span class="navbar-toggler-icon" style="filter: invert(1);"></span>
|
|
||||||
</button>
|
|
||||||
<div class="collapse navbar-collapse" id="navbarSupportedContent">
|
|
||||||
<div class="navbar-nav me-auto">
|
|
||||||
|
|
||||||
</div>
|
|
||||||
<div class="dropdown-center">
|
|
||||||
<button type="button" class="btn btn-primary d-flex gap-3" data-bs-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
|
|
||||||
<span id="name_account"></span>
|
|
||||||
<i class="fa fa-user"></i>
|
|
||||||
</button>
|
|
||||||
<ul class="dropdown-menu">
|
|
||||||
<li id="btn_logout"><div class="dropdown-item">Logout</div></li>
|
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
</nav>
|
</nav>
|
||||||
<div class="container-fluid">
|
<div class="container-fluid">
|
||||||
|
|||||||
@ -5,7 +5,7 @@
|
|||||||
<head>
|
<head>
|
||||||
<meta charset="utf-8" />
|
<meta charset="utf-8" />
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||||
<title>@yield('title', 'SIMPATIK RSAB Harapan Kita')</title>
|
<title>@yield('title', 'Mutu RSAB Harapan Kita')</title>
|
||||||
|
|
||||||
<!-- Favicon -->
|
<!-- Favicon -->
|
||||||
<link rel="icon" type="image/png" href="{{ asset('vuexy/assets/img/favicon/favicon.png') }}" />
|
<link rel="icon" type="image/png" href="{{ asset('vuexy/assets/img/favicon/favicon.png') }}" />
|
||||||
@ -33,6 +33,7 @@
|
|||||||
href="{{ asset('vuexy/assets/vendor/libs/datatables-responsive-bs5/responsive.bootstrap5.css') }}" />
|
href="{{ asset('vuexy/assets/vendor/libs/datatables-responsive-bs5/responsive.bootstrap5.css') }}" />
|
||||||
<link rel="stylesheet" href="{{ asset('vuexy/assets/vendor/libs/sweetalert2/sweetalert2.css') }}" />
|
<link rel="stylesheet" href="{{ asset('vuexy/assets/vendor/libs/sweetalert2/sweetalert2.css') }}" />
|
||||||
<link rel="stylesheet" href="{{ asset('vuexy/assets/vendor/libs/select2/select2.css') }} " />
|
<link rel="stylesheet" href="{{ asset('vuexy/assets/vendor/libs/select2/select2.css') }} " />
|
||||||
|
<link rel="stylesheet" href="{{ asset('vuexy/assets/vendor/libs/spinkit/spinkit.css') }}" />
|
||||||
|
|
||||||
<!-- Helpers -->
|
<!-- Helpers -->
|
||||||
<script src="{{ asset('vuexy/assets/vendor/js/helpers.js') }}"></script>
|
<script src="{{ asset('vuexy/assets/vendor/js/helpers.js') }}"></script>
|
||||||
@ -100,7 +101,7 @@
|
|||||||
</nav>
|
</nav>
|
||||||
<div class="row pe-5">
|
<div class="row pe-5">
|
||||||
<!-- Sidebar desktop -->
|
<!-- Sidebar desktop -->
|
||||||
<aside class="col-md-4 col-lg-3 d-none d-md-block sidebar">
|
<aside class="col-md-4 col-lg-3 d-none d-md-block sidebar vh-100">
|
||||||
<div class="card rounded-0 h-100">
|
<div class="card rounded-0 h-100">
|
||||||
<div class="card-body px-0">
|
<div class="card-body px-0">
|
||||||
<div class="text-center mb-5">
|
<div class="text-center mb-5">
|
||||||
@ -113,30 +114,12 @@
|
|||||||
</div>
|
</div>
|
||||||
<i class="fa-solid fa-chevron-right"></i>
|
<i class="fa-solid fa-chevron-right"></i>
|
||||||
</a>
|
</a>
|
||||||
<a href="{{ url('/admin/kategori_soal') }}" class="nav-link px-0 list-materi-hover px-3 d-flex justify-content-between align-items-center fs-5">
|
<a href="{{ url('/admin/dashboard_jawaban') }}" class="nav-link px-0 list-materi-hover px-3 d-flex justify-content-between align-items-center fs-5">
|
||||||
<div class="d-flex gap-2 align-items-center">
|
<div class="d-flex gap-2 align-items-center">
|
||||||
<i class="fa-solid fa-circle-question"></i> Kategori Soal
|
<i class="fa-solid fa-gauge-high"></i> Dashboard Analisis
|
||||||
</div>
|
</div>
|
||||||
<i class="fa-solid fa-chevron-right"></i>
|
<i class="fa-solid fa-chevron-right"></i>
|
||||||
</a>
|
</a>
|
||||||
<a href="{{ url('/admin/kategori_jawaban') }}" class="nav-link px-0 list-materi-hover px-3 d-flex justify-content-between align-items-center fs-5">
|
|
||||||
<div class="d-flex gap-2 align-items-center">
|
|
||||||
<i class="fa-solid fa-chalkboard"></i> Kategori Pembelajaran
|
|
||||||
</div>
|
|
||||||
<i class="fa-solid fa-chevron-right"></i>
|
|
||||||
</a>
|
|
||||||
<a href="{{ url('/admin/bank_soal') }}" class="nav-link px-0 list-materi-hover px-3 d-flex justify-content-between align-items-center fs-5">
|
|
||||||
<div class="d-flex gap-2 align-items-center">
|
|
||||||
<i class="fa-solid fa-file-circle-question"></i> Bank Soal
|
|
||||||
</div>
|
|
||||||
<i class="fa-solid fa-chevron-right"></i>
|
|
||||||
</a>
|
|
||||||
<div class="nav-link px-0 list-materi-hover px-3 d-flex justify-content-between align-items-center fs-5">
|
|
||||||
<div class="d-flex gap-2 align-items-center">
|
|
||||||
<i class="fa-solid fa-graduation-cap"></i> Pembelajaran
|
|
||||||
</div>
|
|
||||||
<i class="fa-solid fa-chevron-right"></i>
|
|
||||||
</div>
|
|
||||||
</nav>
|
</nav>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@ -154,36 +137,18 @@
|
|||||||
<div class="sidebar">
|
<div class="sidebar">
|
||||||
<div class="px-3">
|
<div class="px-3">
|
||||||
<nav class="nav flex-column list-materi">
|
<nav class="nav flex-column list-materi">
|
||||||
<div class="nav-link px-0 list-materi-hover px-3 d-flex justify-content-between align-items-center fs-5">
|
<a href="{{ url('/admin') }}" class="nav-link px-0 list-materi-hover px-3 d-flex justify-content-between align-items-center fs-5">
|
||||||
<div class="d-flex gap-2 align-items-center">
|
<div class="d-flex gap-2 align-items-center">
|
||||||
<i class="fa-solid fa-gauge-high"></i> Dashboard
|
<i class="fa-solid fa-gauge-high"></i> Dashboard
|
||||||
</div>
|
</div>
|
||||||
<i class="fa-solid fa-chevron-right"></i>
|
<i class="fa-solid fa-chevron-right"></i>
|
||||||
</div>
|
</a>
|
||||||
<div class="nav-link px-0 list-materi-hover px-3 d-flex justify-content-between align-items-center fs-5">
|
<a href="{{ url('/admin/dashboard_jawaban') }}" class="nav-link px-0 list-materi-hover px-3 d-flex justify-content-between align-items-center fs-5">
|
||||||
<div class="d-flex gap-2 align-items-center">
|
<div class="d-flex gap-2 align-items-center">
|
||||||
<i class="fa-solid fa-circle-question"></i> Kategori Soal
|
<i class="fa-solid fa-gauge-high"></i> Dashboard
|
||||||
</div>
|
</div>
|
||||||
<i class="fa-solid fa-chevron-right"></i>
|
<i class="fa-solid fa-chevron-right"></i>
|
||||||
</div>
|
</a>
|
||||||
<div class="nav-link px-0 list-materi-hover px-3 d-flex justify-content-between align-items-center fs-5">
|
|
||||||
<div class="d-flex gap-2 align-items-center">
|
|
||||||
<i class="fa-solid fa-chalkboard"></i> Kategori Pembelajaran
|
|
||||||
</div>
|
|
||||||
<i class="fa-solid fa-chevron-right"></i>
|
|
||||||
</div>
|
|
||||||
<div class="nav-link px-0 list-materi-hover px-3 d-flex justify-content-between align-items-center fs-5">
|
|
||||||
<div class="d-flex gap-2 align-items-center">
|
|
||||||
<i class="fa-solid fa-file-circle-question"></i> Bank Soal
|
|
||||||
</div>
|
|
||||||
<i class="fa-solid fa-chevron-right"></i>
|
|
||||||
</div>
|
|
||||||
<div class="nav-link px-0 list-materi-hover px-3 d-flex justify-content-between align-items-center fs-5">
|
|
||||||
<div class="d-flex gap-2 align-items-center">
|
|
||||||
<i class="fa-solid fa-graduation-cap"></i> Pembelajaran
|
|
||||||
</div>
|
|
||||||
<i class="fa-solid fa-chevron-right"></i>
|
|
||||||
</div>
|
|
||||||
</nav>
|
</nav>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@ -213,6 +178,7 @@
|
|||||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery-cookie/1.4.1/jquery.cookie.min.js"></script>
|
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery-cookie/1.4.1/jquery.cookie.min.js"></script>
|
||||||
<script src="{{ asset('vuexy/assets/vendor/libs/datatables-bs5/datatables-bootstrap5.js') }}"></script>
|
<script src="{{ asset('vuexy/assets/vendor/libs/datatables-bs5/datatables-bootstrap5.js') }}"></script>
|
||||||
<script src="{{ asset('vuexy/assets/vendor/libs/select2/select2.js') }}"></script>
|
<script src="{{ asset('vuexy/assets/vendor/libs/select2/select2.js') }}"></script>
|
||||||
|
<script src="https://code.highcharts.com/highcharts.js"></script>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
const token = $.cookie('token');
|
const token = $.cookie('token');
|
||||||
|
|||||||
@ -1,7 +1,14 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
|
use App\Http\Controllers\AdminController;
|
||||||
|
use App\Http\Controllers\AuthController;
|
||||||
use App\Http\Controllers\SoalController;
|
use App\Http\Controllers\SoalController;
|
||||||
use Illuminate\Support\Facades\Route;
|
use Illuminate\Support\Facades\Route;
|
||||||
|
|
||||||
|
Route::get('/login', [AuthController::class, 'login']);
|
||||||
Route::get('/', [SoalController::class, 'index'])->name('soal.index');
|
Route::get('/', [SoalController::class, 'index'])->name('soal.index');
|
||||||
Route::post('/jawaban', [SoalController::class, 'store'])->name('soal.store');
|
Route::post('/jawaban', [SoalController::class, 'store'])->name('soal.store');
|
||||||
|
Route::get('/admin', [AdminController::class, 'index']);
|
||||||
|
Route::post('/admin/get_data_pegawai_sudah_survey', [AdminController::class, 'get_data_pegawai_sudah_survey']);
|
||||||
|
Route::get('/admin/dashboard_jawaban', [AdminController::class, 'dashboard_analisis']);
|
||||||
|
Route::post('/admin/get_data_dashboard_jawaban', [AdminController::class, 'get_data_dashboard_analisis']);
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user