Compare commits
10 Commits
fix/revisi
...
fix/dashbo
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
006c008542 | ||
|
|
39bb8e6d5f | ||
|
|
7994a62cea | ||
|
|
3a09e2e68a | ||
|
|
116dc1c8c7 | ||
|
|
f10bc153b4 | ||
|
|
06a3bb8c8b | ||
|
|
6c936d4c14 | ||
|
|
d4d0a485cd | ||
|
|
864fb26471 |
@@ -21,7 +21,6 @@ class TourismController extends Controller
|
||||
*/
|
||||
public function index(Request $request)
|
||||
{
|
||||
info($request);
|
||||
$perPage = $request->input('per_page', 15);
|
||||
$search = $request->input('search', '');
|
||||
|
||||
@@ -31,12 +30,9 @@ class TourismController extends Controller
|
||||
$tourisms->getCollection()->transform(function ($tourisms) {
|
||||
$village = DB::table('villages')->where('village_code', $tourisms->village_code)->first();
|
||||
$tourisms->village_name = $village ? $village->village_name : null;
|
||||
|
||||
$district = DB::table('districts')->where('district_code', $tourisms->district_code)->first();
|
||||
$tourisms->district_name = $district ? $district->district_name : null;
|
||||
|
||||
$business_type = DB::table('business_type')->where('id', $tourisms->business_type_id)->first();
|
||||
$tourisms->business_type = $business_type ? $business_type->business_type : null;
|
||||
$district = DB::table('districts')->where('district_code', $tourisms->district_code)->first();
|
||||
$tourisms->district_name = $village ? $village->village_name : null;
|
||||
return $tourisms;
|
||||
});
|
||||
|
||||
@@ -46,7 +42,7 @@ class TourismController extends Controller
|
||||
'total' => $tourisms->total(),
|
||||
'per_page' => $tourisms->perPage(),
|
||||
'current_page' => $tourisms->currentPage(),
|
||||
'last_page' => $tourisms->lastPage(),
|
||||
'last_page'=>$tourisms->lastPage(),
|
||||
]
|
||||
]);
|
||||
}
|
||||
@@ -62,11 +58,12 @@ class TourismController extends Controller
|
||||
|
||||
$data['district_code'] = $district_code;
|
||||
$data['village_code'] = $village_code;
|
||||
|
||||
return Tourism::create($data);
|
||||
}
|
||||
|
||||
/**
|
||||
* Import advertisements from Excel or CSV
|
||||
* Import advertisements from Excel
|
||||
*/
|
||||
public function importFromFile(Request $request)
|
||||
{
|
||||
@@ -77,21 +74,21 @@ class TourismController extends Controller
|
||||
|
||||
if ($validator->fails()) {
|
||||
return response()->json([
|
||||
'message' => 'File validation failed.',
|
||||
'errors' => $validator->errors()
|
||||
'message'=>'File validation failed.',
|
||||
'errors'=>$validator->errors()
|
||||
], 400);
|
||||
}
|
||||
|
||||
|
||||
try {
|
||||
$file = $request->file('file');
|
||||
Excel::import(new TourismImport, $file);
|
||||
return response()->json([
|
||||
'message' => 'File uploaded and imported successfully!'
|
||||
'message'=>'File uploaded and imported successfully!'
|
||||
], 200);
|
||||
} catch (\Exception $e) {
|
||||
return response()->json([
|
||||
'message' => 'Error during file import.',
|
||||
'error' => $e->getMessage()
|
||||
'message'=>'Error during file import.',
|
||||
'error'=>$e->getMessage()
|
||||
], 500);
|
||||
}
|
||||
}
|
||||
@@ -109,7 +106,17 @@ class TourismController extends Controller
|
||||
*/
|
||||
public function update(TourismRequest $request, Tourism $tourism): Tourism
|
||||
{
|
||||
$tourism->update($request->validated());
|
||||
$data = $request->validated();
|
||||
|
||||
// Cari district_code berdasarkan district_name
|
||||
$district_code = DB::table('districts')->where('district_name', $data['district_name'])->value('district_code');
|
||||
// Cari village_code berdasarkan village_name
|
||||
$village_code = DB::table('villages')->where('village_name', $data['village_name'])->where('district_code', $district_code)->value('village_code');
|
||||
// Tambahkan village_code dan district_code ke data
|
||||
$data['village_code'] = $village_code;
|
||||
$data['district_code'] = $district_code;
|
||||
|
||||
$tourism->update($data);
|
||||
|
||||
return $tourism;
|
||||
}
|
||||
|
||||
@@ -69,9 +69,9 @@ class UmkmController extends Controller
|
||||
// Cari kode berdasarkan nama
|
||||
$district_code = DB::table('districts')->where('district_name', $data['district_name'])->value('district_code');
|
||||
$village_code = DB::table('villages')->where('village_name', $data['village_name'])->where('district_code', $district_code)->value('village_code');
|
||||
$business_scale_id = DB::table('business_scale')->where('id', $data['business_scale'])->value('id');
|
||||
$permit_status_id = DB::table('permit_status')->where('id', $data['permit_status'])->value('id');
|
||||
$business_form_id = DB::table('business_form')->where('id', $data['business_form'])->value('id');
|
||||
$business_scale_id = DB::table('business_scale')->where('id', $data['business_scale_id'])->value('id');
|
||||
$permit_status_id = DB::table('permit_status')->where('id', $data['permit_status_id'])->value('id');
|
||||
$business_form_id = DB::table('business_form')->where('id', $data['business_form_id'])->value('id');
|
||||
|
||||
info($business_scale_id);
|
||||
|
||||
|
||||
@@ -0,0 +1,13 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers\Dashboards;
|
||||
|
||||
use App\Http\Controllers\Controller;
|
||||
use Illuminate\Http\Request;
|
||||
|
||||
class LackOfPotentialController extends Controller
|
||||
{
|
||||
public function lack_of_potential(){
|
||||
return view('dashboards.lack_of_potential');
|
||||
}
|
||||
}
|
||||
@@ -36,9 +36,7 @@ class TourismController extends Controller
|
||||
// Mengambil data untuk dropdown
|
||||
$dropdownOptions = [
|
||||
'village_name' => DB::table('villages')->orderBy('village_name')->pluck('village_name', 'village_code'),
|
||||
'district_name' => DB::table('districts')->orderBy('district_name')->pluck('district_name', 'district_code'),
|
||||
'business_type_id' => DB::table('business_type')->orderBy('business_type')->pluck('business_type', 'id'),
|
||||
'business_scale_id' => DB::table('business_scale')->orderBy('business_scale')->pluck('business_scale', 'id'),
|
||||
'district_name' => DB::table('districts')->orderBy('district_name')->pluck('district_name', 'district_code')
|
||||
];
|
||||
|
||||
$fields = $this->getFields();
|
||||
@@ -70,13 +68,9 @@ class TourismController extends Controller
|
||||
$district = DB::table('districts')->where('district_code', $modelInstance->district_code)->first();
|
||||
$modelInstance->district_name = $district ? $district->district_name : null;
|
||||
|
||||
$business_type = DB::table('business_type')->where('id', $modelInstance->business_type_id)->first();
|
||||
$modelInstance->business_scale_id = $business_type ? $business_type->id : null;
|
||||
|
||||
$dropdownOptions = [
|
||||
'village_name' => DB::table('villages')->orderBy('village_name')->pluck('village_name', 'village_code'),
|
||||
'district_name' => DB::table('districts')->orderBy('district_name')->pluck('district_name', 'district_code'),
|
||||
'business_type_id' => DB::table('business_type')->orderBy('business_type')->pluck('business_type', 'id'),
|
||||
'district_name' => DB::table('districts')->orderBy('district_name')->pluck('district_name', 'district_code')
|
||||
];
|
||||
|
||||
$fields = $this->getFields();
|
||||
@@ -90,46 +84,62 @@ class TourismController extends Controller
|
||||
private function getFields()
|
||||
{
|
||||
return [
|
||||
"business_name" => "Nama Usaha",
|
||||
"business_form" => "Bentuk Usaha",
|
||||
"project_name" => "Nama Project",
|
||||
"project_id" => "ID Proyek",
|
||||
"project_type_id" => "Jenis Proyek",
|
||||
"nib" => "NIB",
|
||||
"business_name" => "Nama Perusahaan",
|
||||
"oss_publication_date" => "Tanggal Terbit OSS",
|
||||
"investment_status_description" => "Uraian Status Penanaman Modal",
|
||||
"business_form" => "Uraian Jenis Perusahaan",
|
||||
"project_risk" => "Risiko Proyek",
|
||||
"project_name" => "Nama Proyek",
|
||||
"business_scale" => "Uraian Skala Usaha",
|
||||
"business_address" => "Alamat Usaha",
|
||||
"district_name" => "Kecamatan",
|
||||
"village_name" => "Desa",
|
||||
"land_area" => "Luas Tanah",
|
||||
"longitude" => "Longitude",
|
||||
"latitude" => "Latitude",
|
||||
"project_submission_date" => "Tanggal Pengajuan Project",
|
||||
"kbli" => "KBLI",
|
||||
"kbli_title" => "Judul KBLI",
|
||||
"supervisory_sector" => "Sektor Pembina",
|
||||
"user_name" => "Nama User",
|
||||
"email" => "Email",
|
||||
"contact" => "Kontak",
|
||||
"land_area_in_m2" => "Luas Tanah (m2)",
|
||||
"investment_amount" => "Jumlah Investasi",
|
||||
"number_of_employee" => "TKI",
|
||||
"business_type_id" => "Jenis Usaha",
|
||||
"project_id" => "Priject ID",
|
||||
"nib" => "NIB",
|
||||
"jenis_proyek" => "Jenis Proyek",
|
||||
"status_penanaman_modal" => "Status Penanaman Modal",
|
||||
"uraian_resiko_proyek" => "Uraian Resiko Proyek",
|
||||
"business_scale_id" => "Skala Bisnis/Usaha",
|
||||
"terbit_oss" => "Terbit OSS",
|
||||
"tki" => "TKI",
|
||||
];
|
||||
}
|
||||
|
||||
private function getFieldTypes()
|
||||
{
|
||||
return [
|
||||
"project_id" => "text",
|
||||
"project_type_id" => "text",
|
||||
"nib" => "text",
|
||||
"business_name" => "text",
|
||||
"oss_publication_date" => "date",
|
||||
"investment_status_description" => "text",
|
||||
"business_form" => "text",
|
||||
"project_risk" => "text",
|
||||
"project_name" => "text",
|
||||
"business_address" => "textarea",
|
||||
"business_scale" => "text",
|
||||
"business_address" => "text",
|
||||
"district_name" => "combobox",
|
||||
"village_name" => "combobox",
|
||||
"land_area" => "text",
|
||||
"longitude" => "text",
|
||||
"latitude" => "text",
|
||||
"project_submission_date" => "date",
|
||||
"kbli" => "text",
|
||||
"kbli_title" => "text",
|
||||
"supervisory_sector" => "text",
|
||||
"user_name" => "text",
|
||||
"email" => "text",
|
||||
"contact" => "text",
|
||||
"land_area_in_m2" => "text",
|
||||
"investment_amount" => "text",
|
||||
"number_of_employee" => "text",
|
||||
"business_type_id" => "select",
|
||||
"project_id" => "text",
|
||||
"nib" => "text",
|
||||
"jenis_proyek" => "text",
|
||||
"status_penanaman_modal" => "text",
|
||||
"uraian_resiko_proyek" => "text",
|
||||
"business_scale_id" => "select",
|
||||
"terbit_oss" => "date"
|
||||
"tki" => "text",
|
||||
];
|
||||
}
|
||||
}
|
||||
@@ -3,7 +3,7 @@
|
||||
namespace App\Http\Controllers\Report;
|
||||
|
||||
use App\Http\Controllers\Controller;
|
||||
use App\Models\BusinessTypeCount;
|
||||
use App\Models\TourismBasedKBLI;
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Support\Facades\DB;
|
||||
|
||||
@@ -14,8 +14,8 @@ class ReportTourismController extends Controller
|
||||
*/
|
||||
public function index()
|
||||
{
|
||||
$businessTypeCounts = BusinessTypeCount::all();
|
||||
info($businessTypeCounts);
|
||||
return view('report.tourisms.index', compact('businessTypeCounts'));
|
||||
$tourismBasedKBLI = TourismBasedKBLI::all();
|
||||
info($tourismBasedKBLI);
|
||||
return view('report.tourisms.index', compact('tourismBasedKBLI'));
|
||||
}
|
||||
}
|
||||
@@ -22,23 +22,31 @@ class TourismRequest extends FormRequest
|
||||
public function rules(): array
|
||||
{
|
||||
return [
|
||||
'jenis_proyek' => 'required|string',
|
||||
'nib' => 'string',
|
||||
'business_name' => 'required|string',
|
||||
'status_penanaman_modal' => 'string',
|
||||
'business_form' => 'string',
|
||||
'uraian_resiko_proyek' => 'string',
|
||||
'project_name' => 'required|string',
|
||||
'project_id' => 'required|string',
|
||||
'project_type_id' => 'required|string',
|
||||
'nib' => 'required|string',
|
||||
'business_name' => 'required|string',
|
||||
'oss_publication_date' => 'required',
|
||||
'investment_status_description' => 'required|string',
|
||||
'business_form' => 'required|string',
|
||||
'project_risk' => 'required|string',
|
||||
'project_name' => 'required|string',
|
||||
'business_scale' => 'required|string',
|
||||
'business_address' => 'required|string',
|
||||
'district_name' => 'required|string',
|
||||
'village_name' => 'required|string',
|
||||
'land_area' => 'required|string',
|
||||
'district_name' => 'required',
|
||||
'village_name' => 'required',
|
||||
'longitude' => 'required|string',
|
||||
'latitude' => 'required|string',
|
||||
'project_submission_date' => 'required',
|
||||
'kbli' => 'required|string',
|
||||
'kbli_title' => 'required|string',
|
||||
'supervisory_sector' => 'required|string',
|
||||
'user_name' => 'required|string',
|
||||
'email' => 'required|string',
|
||||
'contact' => 'required|string',
|
||||
'land_area_in_m2' => 'required|string',
|
||||
'investment_amount' => 'required|string',
|
||||
'number_of_employee' => 'required|string',
|
||||
'business_type_id' => 'required|string',
|
||||
'terbit_oss' => 'required|date',
|
||||
'business_scale_id' => 'required',
|
||||
'tki' => 'required|string',
|
||||
];
|
||||
}
|
||||
}
|
||||
|
||||
@@ -65,7 +65,7 @@ class UmkmRequest extends FormRequest
|
||||
|
||||
'business_id_number.string' => 'Nomor ID usaha harus berupa teks.',
|
||||
|
||||
'business_scale.required' => 'Skala usaha wajib diisi.',
|
||||
'business_scale_id.required' => 'Skala usaha wajib diisi.',
|
||||
|
||||
'owner_id.required' => 'ID pemilik wajib diisi.',
|
||||
'owner_id.string' => 'ID pemilik harus berupa teks.',
|
||||
@@ -96,7 +96,7 @@ class UmkmRequest extends FormRequest
|
||||
|
||||
'number_of_employee.required' => 'Jumlah karyawan wajib diisi.',
|
||||
|
||||
'permit_status.required' => 'Status izin wajib diisi.',
|
||||
'permit_status_id.required' => 'Status izin wajib diisi.',
|
||||
|
||||
'land_area.required' => 'Luas lahan wajib diisi.',
|
||||
'land_area.integer' => 'Luas lahan harus berupa angka bulat.',
|
||||
|
||||
@@ -7,6 +7,7 @@ use Illuminate\Support\Collection;
|
||||
use Maatwebsite\Excel\Concerns\ToCollection;
|
||||
use Illuminate\Support\Facades\DB;
|
||||
use DateTime;
|
||||
use Carbon\Carbon;
|
||||
|
||||
class TourismImport implements ToCollection
|
||||
{
|
||||
@@ -41,13 +42,11 @@ class TourismImport implements ToCollection
|
||||
if ($headerIndex === false) {
|
||||
return;
|
||||
}
|
||||
|
||||
info($rows);
|
||||
|
||||
|
||||
foreach ($rows->skip(1) as $row) {
|
||||
// Normalisasi nama kecamatan dan desa
|
||||
$districtName = strtolower(trim(str_replace('Kecamatan', '', $row[13])));
|
||||
$villageName = strtolower(trim($row[14]));
|
||||
$districtName = strtolower(trim(str_replace('Kecamatan', '', $row[12])));
|
||||
$villageName = strtolower(trim($row[13]));
|
||||
|
||||
// Cari distric_code dari table districts
|
||||
$districtCode = $districts[$districtName] ?? null;
|
||||
@@ -66,24 +65,51 @@ class TourismImport implements ToCollection
|
||||
// ambill village code yang village_name sama dengan $villageName
|
||||
$villageCode = $listTrueVillage[$villageName]['village_code'] ?? '000000';
|
||||
|
||||
|
||||
// if (empty($row[16])) {
|
||||
// info("Data kosong");
|
||||
// } else {
|
||||
// info("Baris ke- | Nilai: " . $row[16]);
|
||||
// }
|
||||
|
||||
$excelSerialDate = $row[16];
|
||||
if (is_numeric($excelSerialDate)) {
|
||||
$projectSubmissionDate = Carbon::createFromFormat('Y-m-d', '1899-12-30')
|
||||
->addDays($excelSerialDate)
|
||||
->format('Y-m-d H:i:s');
|
||||
} else {
|
||||
$projectSubmissionDate = Carbon::createFromFormat('m/d/Y', $excelSerialDate)
|
||||
->format('Y-m-d H:i:s');
|
||||
}
|
||||
|
||||
info("Tanggal dikonversi: " . $projectSubmissionDate);
|
||||
|
||||
$dataToInsert[] = [
|
||||
'project_id' => $row[1],
|
||||
'jenis_proyek' => $row[2],
|
||||
'project_type_id' => $row[2],
|
||||
'nib' => $row[3],
|
||||
'business_name' => $row[4],
|
||||
'terbit_oss' => DateTime::createFromFormat('d/m/Y', $row[5])->format('Y-m-d'),
|
||||
'status_penanaman_modal' => $row[6],
|
||||
'oss_publication_date' => DateTime::createFromFormat('d/m/Y', $row[5]),
|
||||
'investment_status_description' => $row[6],
|
||||
'business_form' => $row[7],
|
||||
'uraian_resiko_proyek' => $row[8],
|
||||
'project_risk' => $row[8],
|
||||
'project_name' => $row[9],
|
||||
'business_type_id' => $row[10],
|
||||
'business_scale_id' => (int) $row[11],
|
||||
'business_scale' => $row[10],
|
||||
'business_address' => $row[12],
|
||||
'district_code' => $districtCode,
|
||||
'village_code' => $villageCode,
|
||||
'land_area' => $row[15],
|
||||
'investment_amount' => (string) $row[16],
|
||||
'number_of_employee' => (string) $row[17],
|
||||
'longitude' => $row[14],
|
||||
'latitude' => (string) $row[15],
|
||||
'project_submission_date' => $projectSubmissionDate,
|
||||
'kbli'=> $row[17],
|
||||
'kbli_title'=>$row[18],
|
||||
'supervisory_sector'=>$row[19],
|
||||
'user_name'=>$row[20],
|
||||
'email'=>$row[21],
|
||||
'contact'=>$row[22],
|
||||
'land_area_in_m2'=>$row[23],
|
||||
'investment_amount'=>$row[24],
|
||||
'tki'=>$row[25]
|
||||
];
|
||||
}
|
||||
|
||||
|
||||
@@ -1,14 +0,0 @@
|
||||
<?php
|
||||
|
||||
namespace App\Models;
|
||||
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
|
||||
class BusinessTypeCount extends Model
|
||||
{
|
||||
protected $table = 'business_type_counts';
|
||||
protected $primaryKey = null;
|
||||
|
||||
public $timestamps = false;
|
||||
protected $fillable = ['business_type', 'count'];
|
||||
}
|
||||
@@ -8,25 +8,33 @@ use Illuminate\Database\Eloquent\Model;
|
||||
* Class Tourism
|
||||
*
|
||||
* @property $id
|
||||
* @property $project_id
|
||||
* @property $jenis_proyek
|
||||
* @property $nib
|
||||
* @property $created_at
|
||||
* @property $updated_at
|
||||
* @property $project_id
|
||||
* @property $project_type_id
|
||||
* @property $nib
|
||||
* @property $business_name
|
||||
* @property $terbit_oss
|
||||
* @property $status_penanaman_modal
|
||||
* @property $oss_publication_date
|
||||
* @property $investment_status_description
|
||||
* @property $business_form
|
||||
* @property $uraian_resiko_proyek
|
||||
* @property $project_risk
|
||||
* @property $project_name
|
||||
* @property $business_scale_id
|
||||
* @property $business_scale
|
||||
* @property $business_address
|
||||
* @property $district_code
|
||||
* @property $village_code
|
||||
* @property $land_area
|
||||
* @property $longitude
|
||||
* @property $latitude
|
||||
* @property $project_submission_date
|
||||
* @property $kbli
|
||||
* @property $kbli_title
|
||||
* @property $supervisory_sector
|
||||
* @property $user_name
|
||||
* @property $email
|
||||
* @property $contact
|
||||
* @property $land_area_in_m2
|
||||
* @property $investment_amount
|
||||
* @property $number_of_employee
|
||||
* @property $business_type_id
|
||||
* @property $tki
|
||||
*
|
||||
* @package App
|
||||
* @mixin \Illuminate\Database\Eloquent\Builder
|
||||
@@ -41,7 +49,7 @@ class Tourism extends Model
|
||||
*
|
||||
* @var array<int, string>
|
||||
*/
|
||||
protected $fillable = ['project_id', 'jenis_proyek', 'nib', 'business_name', 'terbit_oss', 'status_penanaman_modal', 'business_form', 'uraian_resiko_proyek', 'project_name', 'business_scale_id', 'business_address', 'district_code', 'village_code', 'land_area', 'investment_amount', 'number_of_employee', 'business_type_id'];
|
||||
protected $fillable = ['project_id', 'project_type_id', 'nib', 'business_name', 'oss_publication_date', 'investment_status_description', 'business_form', 'project_risk', 'project_name', 'business_scale', 'business_address', 'district_code', 'village_code', 'longitude', 'latitude', 'project_submission_date', 'kbli', 'kbli_title', 'supervisory_sector', 'user_name', 'email', 'contact', 'land_area_in_m2', 'investment_amount', 'tki'];
|
||||
|
||||
|
||||
}
|
||||
|
||||
14
app/Models/TourismBasedKBLI.php
Normal file
14
app/Models/TourismBasedKBLI.php
Normal file
@@ -0,0 +1,14 @@
|
||||
<?php
|
||||
|
||||
namespace App\Models;
|
||||
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
|
||||
class TourismBasedKBLI extends Model
|
||||
{
|
||||
protected $table = 'v_tourisms_based_kbli';
|
||||
protected $primaryKey = null;
|
||||
|
||||
public $timestamps = false;
|
||||
protected $fillable = ['kbli_title', 'total_records'];
|
||||
}
|
||||
26
app/View/Components/CustomCircle.php
Normal file
26
app/View/Components/CustomCircle.php
Normal file
@@ -0,0 +1,26 @@
|
||||
<?php
|
||||
|
||||
namespace App\View\Components;
|
||||
|
||||
use Closure;
|
||||
use Illuminate\Contracts\View\View;
|
||||
use Illuminate\View\Component;
|
||||
|
||||
class CustomCircle extends Component
|
||||
{
|
||||
/**
|
||||
* Create a new component instance.
|
||||
*/
|
||||
public function __construct()
|
||||
{
|
||||
//
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the view / contents that represent the component.
|
||||
*/
|
||||
public function render(): View|Closure|string
|
||||
{
|
||||
return view('components.custom-circle');
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,54 @@
|
||||
<?php
|
||||
|
||||
use Illuminate\Database\Migrations\Migration;
|
||||
use Illuminate\Database\Schema\Blueprint;
|
||||
use Illuminate\Support\Facades\Schema;
|
||||
|
||||
return new class extends Migration
|
||||
{
|
||||
/**
|
||||
* Run the migrations.
|
||||
*/
|
||||
public function up(): void
|
||||
{
|
||||
Schema::dropIfExists('tourisms');
|
||||
Schema::create('tourisms', function (Blueprint $table) {
|
||||
$table->id();
|
||||
$table->timestamp('created_at')->default(DB::raw('CURRENT_TIMESTAMP'));
|
||||
$table->timestamp('updated_at')->default(DB::raw('CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP'));
|
||||
$table->string('project_id');
|
||||
$table->string('project_type_id');
|
||||
$table->string('nib');
|
||||
$table->string('business_name');
|
||||
$table->datetime('oss_publication_date');
|
||||
$table->string('investment_status_description');
|
||||
$table->string('business_form');
|
||||
$table->string('project_risk');
|
||||
$table->string('project_name');
|
||||
$table->string('business_scale');
|
||||
$table->string('business_address');
|
||||
$table->integer('district_code');
|
||||
$table->integer('village_code');
|
||||
$table->string('longitude');
|
||||
$table->string('latitude');
|
||||
$table->datetime('project_submission_date');
|
||||
$table->string('kbli');
|
||||
$table->string('kbli_title');
|
||||
$table->string('supervisory_sector');
|
||||
$table->string('user_name');
|
||||
$table->string('email');
|
||||
$table->string('contact');
|
||||
$table->string('land_area_in_m2');
|
||||
$table->string('investment_amount');
|
||||
$table->string('tki');
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Reverse the migrations.
|
||||
*/
|
||||
public function down(): void
|
||||
{
|
||||
Schema::dropIfExists('tourisms');
|
||||
}
|
||||
};
|
||||
@@ -0,0 +1,28 @@
|
||||
<?php
|
||||
|
||||
use Illuminate\Database\Migrations\Migration;
|
||||
use Illuminate\Database\Schema\Blueprint;
|
||||
use Illuminate\Support\Facades\Schema;
|
||||
|
||||
return new class extends Migration
|
||||
{
|
||||
/**
|
||||
* Run the migrations.
|
||||
*/
|
||||
public function up(): void
|
||||
{
|
||||
Schema::table('tourisms', function (Blueprint $table) {
|
||||
$table->string('village_code')->change();
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Reverse the migrations.
|
||||
*/
|
||||
public function down(): void
|
||||
{
|
||||
Schema::table('tourisms', function (Blueprint $table) {
|
||||
$table->integer('village_code')->change();
|
||||
});
|
||||
}
|
||||
};
|
||||
@@ -109,6 +109,13 @@ class UsersRoleMenuSeeder extends Seeder
|
||||
"parent_id" => $dashboard->id,
|
||||
"sort_order" => 2,
|
||||
],
|
||||
[
|
||||
"name" => "Dashboard Potensi",
|
||||
"url" => "dashboard.lack_of_potential",
|
||||
"icon" => null,
|
||||
"parent_id" => $dashboard->id,
|
||||
"sort_order" => 3,
|
||||
],
|
||||
[
|
||||
"name" => "Users",
|
||||
"url" => "users.index",
|
||||
@@ -205,6 +212,7 @@ class UsersRoleMenuSeeder extends Seeder
|
||||
$pariwisata = Menu::where('name', 'Pariwisata')->first();
|
||||
$laporan_pariwisata = Menu::where('name', 'Lap Pariwisata')->first();
|
||||
$umkm = Menu::where('name', 'UMKM')->first();
|
||||
$lack_of_potentials = Menu::where('name', 'Dashboard Potensi')->first();
|
||||
|
||||
// Superadmin gets all menus
|
||||
$superadmin->menus()->sync([
|
||||
@@ -229,6 +237,7 @@ class UsersRoleMenuSeeder extends Seeder
|
||||
$pariwisata->id => ["allow_show" => true, "allow_create" => true, "allow_update" => true, "allow_destroy" => true],
|
||||
$laporan_pariwisata->id => ["allow_show" => true, "allow_create" => true, "allow_update" => true, "allow_destroy" => true],
|
||||
$umkm->id => ["allow_show" => true, "allow_create" => true, "allow_update" => true, "allow_destroy" => true],
|
||||
$lack_of_potentials->id => ["allow_show" => true, "allow_create" => true, "allow_update" => true, "allow_destroy" => true],
|
||||
]);
|
||||
|
||||
// Admin gets limited menus
|
||||
|
||||
2
package-lock.json
generated
2
package-lock.json
generated
@@ -1,5 +1,5 @@
|
||||
{
|
||||
"name": "sibedas-pbg-web",
|
||||
"name": "sibedas-pbg",
|
||||
"lockfileVersion": 3,
|
||||
"requires": true,
|
||||
"packages": {
|
||||
|
||||
@@ -1,506 +0,0 @@
|
||||
{
|
||||
"__commonjsHelpers-C4iS2aBk.js": {
|
||||
"file": "assets/_commonjsHelpers-C4iS2aBk.js",
|
||||
"name": "_commonjsHelpers"
|
||||
},
|
||||
"_apexcharts.common-7mov3gaG.js": {
|
||||
"file": "assets/apexcharts.common-7mov3gaG.js",
|
||||
"name": "apexcharts.common",
|
||||
"imports": [
|
||||
"__commonjsHelpers-C4iS2aBk.js"
|
||||
]
|
||||
},
|
||||
"_dropzone-B5tMhgFp.js": {
|
||||
"file": "assets/dropzone-B5tMhgFp.js",
|
||||
"name": "dropzone"
|
||||
},
|
||||
"_global-config-9uDKFQ8j.js": {
|
||||
"file": "assets/global-config-9uDKFQ8j.js",
|
||||
"name": "global-config"
|
||||
},
|
||||
"_gridjs.umd-BiCNXlqL.js": {
|
||||
"file": "assets/gridjs.umd-BiCNXlqL.js",
|
||||
"name": "gridjs.umd",
|
||||
"imports": [
|
||||
"__commonjsHelpers-C4iS2aBk.js"
|
||||
]
|
||||
},
|
||||
"_table-generator-DPFVsCqk.js": {
|
||||
"file": "assets/table-generator-DPFVsCqk.js",
|
||||
"name": "table-generator",
|
||||
"imports": [
|
||||
"_gridjs.umd-BiCNXlqL.js"
|
||||
]
|
||||
},
|
||||
"_world-BH8KG5u4.js": {
|
||||
"file": "assets/world-BH8KG5u4.js",
|
||||
"name": "world",
|
||||
"imports": [
|
||||
"__commonjsHelpers-C4iS2aBk.js"
|
||||
]
|
||||
},
|
||||
"node_modules/flatpickr/dist/flatpickr.min.css": {
|
||||
"file": "assets/flatpickr-CksuuEqD.css",
|
||||
"src": "node_modules/flatpickr/dist/flatpickr.min.css",
|
||||
"isEntry": true
|
||||
},
|
||||
"node_modules/flatpickr/dist/themes/dark.css": {
|
||||
"file": "assets/dark-CLxH30By.css",
|
||||
"src": "node_modules/flatpickr/dist/themes/dark.css",
|
||||
"isEntry": true
|
||||
},
|
||||
"node_modules/gridjs/dist/theme/mermaid.css": {
|
||||
"file": "assets/mermaid-B5wPN5RC.css",
|
||||
"src": "node_modules/gridjs/dist/theme/mermaid.css",
|
||||
"isEntry": true
|
||||
},
|
||||
"node_modules/gridjs/dist/theme/mermaid.min.css": {
|
||||
"file": "assets/mermaid-1KsrsKla.css",
|
||||
"src": "node_modules/gridjs/dist/theme/mermaid.min.css",
|
||||
"isEntry": true
|
||||
},
|
||||
"node_modules/quill/dist/quill.bubble.css": {
|
||||
"file": "assets/quill-BzaoboQ1.css",
|
||||
"src": "node_modules/quill/dist/quill.bubble.css",
|
||||
"isEntry": true
|
||||
},
|
||||
"node_modules/quill/dist/quill.snow.css": {
|
||||
"file": "assets/quill-D-Ncpkvi.css",
|
||||
"src": "node_modules/quill/dist/quill.snow.css",
|
||||
"isEntry": true
|
||||
},
|
||||
"public/images/bg-dashboard.jpg": {
|
||||
"file": "assets/bg-dashboard-CUwt8_jP.jpg",
|
||||
"src": "public/images/bg-dashboard.jpg"
|
||||
},
|
||||
"resources/fonts/boxicons.eot": {
|
||||
"file": "assets/boxicons-0t2gX1vj.eot",
|
||||
"src": "resources/fonts/boxicons.eot"
|
||||
},
|
||||
"resources/fonts/boxicons.svg": {
|
||||
"file": "assets/boxicons-KSR1BgPC.svg",
|
||||
"src": "resources/fonts/boxicons.svg"
|
||||
},
|
||||
"resources/fonts/boxicons.ttf": {
|
||||
"file": "assets/boxicons-BEZXjQG5.ttf",
|
||||
"src": "resources/fonts/boxicons.ttf"
|
||||
},
|
||||
"resources/fonts/boxicons.woff": {
|
||||
"file": "assets/boxicons-CEgI8ccS.woff",
|
||||
"src": "resources/fonts/boxicons.woff"
|
||||
},
|
||||
"resources/fonts/boxicons.woff2": {
|
||||
"file": "assets/boxicons-C7pETWQJ.woff2",
|
||||
"src": "resources/fonts/boxicons.woff2"
|
||||
},
|
||||
"resources/js/app.js": {
|
||||
"file": "assets/app-Wz_4hh3O.js",
|
||||
"name": "app",
|
||||
"src": "resources/js/app.js",
|
||||
"isEntry": true,
|
||||
"imports": [
|
||||
"__commonjsHelpers-C4iS2aBk.js"
|
||||
]
|
||||
},
|
||||
"resources/js/business-industries/create.js": {
|
||||
"file": "assets/create-CiRhiWZV.js",
|
||||
"name": "create",
|
||||
"src": "resources/js/business-industries/create.js",
|
||||
"isEntry": true,
|
||||
"imports": [
|
||||
"_dropzone-B5tMhgFp.js",
|
||||
"_global-config-9uDKFQ8j.js"
|
||||
]
|
||||
},
|
||||
"resources/js/business-industries/index.js": {
|
||||
"file": "assets/index-BIXijOG8.js",
|
||||
"name": "index",
|
||||
"src": "resources/js/business-industries/index.js",
|
||||
"isEntry": true,
|
||||
"imports": [
|
||||
"_gridjs.umd-BiCNXlqL.js",
|
||||
"_global-config-9uDKFQ8j.js",
|
||||
"__commonjsHelpers-C4iS2aBk.js"
|
||||
]
|
||||
},
|
||||
"resources/js/business-industries/update.js": {
|
||||
"file": "assets/update-C8VOvIbF.js",
|
||||
"name": "update",
|
||||
"src": "resources/js/business-industries/update.js",
|
||||
"isEntry": true
|
||||
},
|
||||
"resources/js/config.js": {
|
||||
"file": "assets/config-DqV4EBmE.js",
|
||||
"name": "config",
|
||||
"src": "resources/js/config.js",
|
||||
"isEntry": true
|
||||
},
|
||||
"resources/js/dashboards/bigdata.js": {
|
||||
"file": "assets/bigdata-Cyb9tZIY.js",
|
||||
"name": "bigdata",
|
||||
"src": "resources/js/dashboards/bigdata.js",
|
||||
"isEntry": true,
|
||||
"imports": [
|
||||
"_global-config-9uDKFQ8j.js"
|
||||
],
|
||||
"css": [
|
||||
"assets/flatpickr-CksuuEqD.css"
|
||||
]
|
||||
},
|
||||
"resources/js/data-settings/create.js": {
|
||||
"file": "assets/create-C1IbeTHP.js",
|
||||
"name": "create",
|
||||
"src": "resources/js/data-settings/create.js",
|
||||
"isEntry": true
|
||||
},
|
||||
"resources/js/data-settings/index.js": {
|
||||
"file": "assets/index-C4raIbBK.js",
|
||||
"name": "index",
|
||||
"src": "resources/js/data-settings/index.js",
|
||||
"isEntry": true,
|
||||
"imports": [
|
||||
"_gridjs.umd-BiCNXlqL.js",
|
||||
"_global-config-9uDKFQ8j.js",
|
||||
"__commonjsHelpers-C4iS2aBk.js"
|
||||
]
|
||||
},
|
||||
"resources/js/data-settings/update.js": {
|
||||
"file": "assets/update-nNw3P4hj.js",
|
||||
"name": "update",
|
||||
"src": "resources/js/data-settings/update.js",
|
||||
"isEntry": true
|
||||
},
|
||||
"resources/js/data/advertisements/data-advertisements.js": {
|
||||
"file": "assets/data-advertisements-ckr1EtLP.js",
|
||||
"name": "data-advertisements",
|
||||
"src": "resources/js/data/advertisements/data-advertisements.js",
|
||||
"isEntry": true,
|
||||
"imports": [
|
||||
"_gridjs.umd-BiCNXlqL.js",
|
||||
"_global-config-9uDKFQ8j.js",
|
||||
"_table-generator-DPFVsCqk.js",
|
||||
"__commonjsHelpers-C4iS2aBk.js"
|
||||
]
|
||||
},
|
||||
"resources/js/data/advertisements/form-create-update.js": {
|
||||
"file": "assets/form-create-update-CyN97GsU.js",
|
||||
"name": "form-create-update",
|
||||
"src": "resources/js/data/advertisements/form-create-update.js",
|
||||
"isEntry": true,
|
||||
"imports": [
|
||||
"_global-config-9uDKFQ8j.js"
|
||||
]
|
||||
},
|
||||
"resources/js/data/advertisements/form-upload.js": {
|
||||
"file": "assets/form-upload-tA9zPESO.js",
|
||||
"name": "form-upload",
|
||||
"src": "resources/js/data/advertisements/form-upload.js",
|
||||
"isEntry": true,
|
||||
"imports": [
|
||||
"_dropzone-B5tMhgFp.js",
|
||||
"_global-config-9uDKFQ8j.js"
|
||||
]
|
||||
},
|
||||
"resources/js/data/tourisms/data-tourisms.js": {
|
||||
"file": "assets/data-tourisms-Db9aMSJn.js",
|
||||
"name": "data-tourisms",
|
||||
"src": "resources/js/data/tourisms/data-tourisms.js",
|
||||
"isEntry": true,
|
||||
"imports": [
|
||||
"_gridjs.umd-BiCNXlqL.js",
|
||||
"_global-config-9uDKFQ8j.js",
|
||||
"_table-generator-DPFVsCqk.js",
|
||||
"__commonjsHelpers-C4iS2aBk.js"
|
||||
]
|
||||
},
|
||||
"resources/js/data/tourisms/form-create-update.js": {
|
||||
"file": "assets/form-create-update-SviVezNW.js",
|
||||
"name": "form-create-update",
|
||||
"src": "resources/js/data/tourisms/form-create-update.js",
|
||||
"isEntry": true,
|
||||
"imports": [
|
||||
"_global-config-9uDKFQ8j.js"
|
||||
]
|
||||
},
|
||||
"resources/js/data/tourisms/form-upload.js": {
|
||||
"file": "assets/form-upload-BtbLOLpA.js",
|
||||
"name": "form-upload",
|
||||
"src": "resources/js/data/tourisms/form-upload.js",
|
||||
"isEntry": true,
|
||||
"imports": [
|
||||
"_dropzone-B5tMhgFp.js",
|
||||
"_global-config-9uDKFQ8j.js"
|
||||
]
|
||||
},
|
||||
"resources/js/data/umkm/data-umkm.js": {
|
||||
"file": "assets/data-umkm-CLB33rMj.js",
|
||||
"name": "data-umkm",
|
||||
"src": "resources/js/data/umkm/data-umkm.js",
|
||||
"isEntry": true,
|
||||
"imports": [
|
||||
"_gridjs.umd-BiCNXlqL.js",
|
||||
"_global-config-9uDKFQ8j.js",
|
||||
"_table-generator-DPFVsCqk.js",
|
||||
"__commonjsHelpers-C4iS2aBk.js"
|
||||
]
|
||||
},
|
||||
"resources/js/data/umkm/form-create-update.js": {
|
||||
"file": "assets/form-create-update-BrB0xTMN.js",
|
||||
"name": "form-create-update",
|
||||
"src": "resources/js/data/umkm/form-create-update.js",
|
||||
"isEntry": true,
|
||||
"imports": [
|
||||
"_global-config-9uDKFQ8j.js"
|
||||
]
|
||||
},
|
||||
"resources/js/data/umkm/form-upload.js": {
|
||||
"file": "assets/form-upload-BDyAWo4b.js",
|
||||
"name": "form-upload",
|
||||
"src": "resources/js/data/umkm/form-upload.js",
|
||||
"isEntry": true,
|
||||
"imports": [
|
||||
"_dropzone-B5tMhgFp.js",
|
||||
"_global-config-9uDKFQ8j.js"
|
||||
]
|
||||
},
|
||||
"resources/js/master/users/create.js": {
|
||||
"file": "assets/create-BfiYISiN.js",
|
||||
"name": "create",
|
||||
"src": "resources/js/master/users/create.js",
|
||||
"isEntry": true
|
||||
},
|
||||
"resources/js/master/users/update.js": {
|
||||
"file": "assets/update-DhoG4v8r.js",
|
||||
"name": "update",
|
||||
"src": "resources/js/master/users/update.js",
|
||||
"isEntry": true
|
||||
},
|
||||
"resources/js/master/users/users.js": {
|
||||
"file": "assets/users-jfWUOWyP.js",
|
||||
"name": "users",
|
||||
"src": "resources/js/master/users/users.js",
|
||||
"isEntry": true,
|
||||
"imports": [
|
||||
"_gridjs.umd-BiCNXlqL.js",
|
||||
"_global-config-9uDKFQ8j.js",
|
||||
"__commonjsHelpers-C4iS2aBk.js"
|
||||
]
|
||||
},
|
||||
"resources/js/menus/create.js": {
|
||||
"file": "assets/create-ChUgh-yc.js",
|
||||
"name": "create",
|
||||
"src": "resources/js/menus/create.js",
|
||||
"isEntry": true
|
||||
},
|
||||
"resources/js/menus/index.js": {
|
||||
"file": "assets/index-C4xA1kYa.js",
|
||||
"name": "index",
|
||||
"src": "resources/js/menus/index.js",
|
||||
"isEntry": true,
|
||||
"imports": [
|
||||
"_gridjs.umd-BiCNXlqL.js",
|
||||
"_global-config-9uDKFQ8j.js",
|
||||
"__commonjsHelpers-C4iS2aBk.js"
|
||||
]
|
||||
},
|
||||
"resources/js/menus/update.js": {
|
||||
"file": "assets/update-8JQOGES4.js",
|
||||
"name": "update",
|
||||
"src": "resources/js/menus/update.js",
|
||||
"isEntry": true
|
||||
},
|
||||
"resources/js/pages/chart.js": {
|
||||
"file": "assets/chart-DQBoD9wk.js",
|
||||
"name": "chart",
|
||||
"src": "resources/js/pages/chart.js",
|
||||
"isEntry": true,
|
||||
"imports": [
|
||||
"_apexcharts.common-7mov3gaG.js",
|
||||
"__commonjsHelpers-C4iS2aBk.js"
|
||||
]
|
||||
},
|
||||
"resources/js/pages/dashboard.js": {
|
||||
"file": "assets/dashboard-nkb3Omy9.js",
|
||||
"name": "dashboard",
|
||||
"src": "resources/js/pages/dashboard.js",
|
||||
"isEntry": true,
|
||||
"imports": [
|
||||
"_apexcharts.common-7mov3gaG.js",
|
||||
"_world-BH8KG5u4.js",
|
||||
"__commonjsHelpers-C4iS2aBk.js"
|
||||
]
|
||||
},
|
||||
"resources/js/pages/form-fileupload.js": {
|
||||
"file": "assets/form-fileupload-DGbdX8GT.js",
|
||||
"name": "form-fileupload",
|
||||
"src": "resources/js/pages/form-fileupload.js",
|
||||
"isEntry": true,
|
||||
"imports": [
|
||||
"_dropzone-B5tMhgFp.js"
|
||||
]
|
||||
},
|
||||
"resources/js/pages/form-flatepicker.js": {
|
||||
"file": "assets/form-flatepicker-ChSlk6xC.js",
|
||||
"name": "form-flatepicker",
|
||||
"src": "resources/js/pages/form-flatepicker.js",
|
||||
"isEntry": true,
|
||||
"imports": [
|
||||
"__commonjsHelpers-C4iS2aBk.js"
|
||||
]
|
||||
},
|
||||
"resources/js/pages/form-quilljs.js": {
|
||||
"file": "assets/form-quilljs-pSObT4Ti.js",
|
||||
"name": "form-quilljs",
|
||||
"src": "resources/js/pages/form-quilljs.js",
|
||||
"isEntry": true,
|
||||
"imports": [
|
||||
"__commonjsHelpers-C4iS2aBk.js"
|
||||
]
|
||||
},
|
||||
"resources/js/pages/maps-canada.js": {
|
||||
"file": "assets/maps-canada-Btz07hSk.js",
|
||||
"name": "maps-canada",
|
||||
"src": "resources/js/pages/maps-canada.js",
|
||||
"isEntry": true
|
||||
},
|
||||
"resources/js/pages/maps-google.js": {
|
||||
"file": "assets/maps-google-KamR_rNw.js",
|
||||
"name": "maps-google",
|
||||
"src": "resources/js/pages/maps-google.js",
|
||||
"isEntry": true,
|
||||
"imports": [
|
||||
"__commonjsHelpers-C4iS2aBk.js"
|
||||
]
|
||||
},
|
||||
"resources/js/pages/maps-iraq.js": {
|
||||
"file": "assets/maps-iraq-Blhf9V_8.js",
|
||||
"name": "maps-iraq",
|
||||
"src": "resources/js/pages/maps-iraq.js",
|
||||
"isEntry": true
|
||||
},
|
||||
"resources/js/pages/maps-russia.js": {
|
||||
"file": "assets/maps-russia-C3XucoMP.js",
|
||||
"name": "maps-russia",
|
||||
"src": "resources/js/pages/maps-russia.js",
|
||||
"isEntry": true
|
||||
},
|
||||
"resources/js/pages/maps-spain.js": {
|
||||
"file": "assets/maps-spain-CdBIHB66.js",
|
||||
"name": "maps-spain",
|
||||
"src": "resources/js/pages/maps-spain.js",
|
||||
"isEntry": true
|
||||
},
|
||||
"resources/js/pages/maps-vector.js": {
|
||||
"file": "assets/maps-vector-C2WpvMU7.js",
|
||||
"name": "maps-vector",
|
||||
"src": "resources/js/pages/maps-vector.js",
|
||||
"isEntry": true,
|
||||
"imports": [
|
||||
"_world-BH8KG5u4.js",
|
||||
"__commonjsHelpers-C4iS2aBk.js"
|
||||
]
|
||||
},
|
||||
"resources/js/pages/table-gridjs.js": {
|
||||
"file": "assets/table-gridjs-BQh80cFh.js",
|
||||
"name": "table-gridjs",
|
||||
"src": "resources/js/pages/table-gridjs.js",
|
||||
"isEntry": true,
|
||||
"imports": [
|
||||
"_gridjs.umd-BiCNXlqL.js",
|
||||
"__commonjsHelpers-C4iS2aBk.js"
|
||||
]
|
||||
},
|
||||
"resources/js/pbg-task/index.js": {
|
||||
"file": "assets/index-CqcfkvSL.js",
|
||||
"name": "index",
|
||||
"src": "resources/js/pbg-task/index.js",
|
||||
"isEntry": true,
|
||||
"imports": [
|
||||
"_gridjs.umd-BiCNXlqL.js",
|
||||
"_global-config-9uDKFQ8j.js",
|
||||
"__commonjsHelpers-C4iS2aBk.js"
|
||||
]
|
||||
},
|
||||
"resources/js/roles/create.js": {
|
||||
"file": "assets/create-Dd-lHOwF.js",
|
||||
"name": "create",
|
||||
"src": "resources/js/roles/create.js",
|
||||
"isEntry": true
|
||||
},
|
||||
"resources/js/roles/index.js": {
|
||||
"file": "assets/index-C_kI_q7O.js",
|
||||
"name": "index",
|
||||
"src": "resources/js/roles/index.js",
|
||||
"isEntry": true,
|
||||
"imports": [
|
||||
"_gridjs.umd-BiCNXlqL.js",
|
||||
"_global-config-9uDKFQ8j.js",
|
||||
"__commonjsHelpers-C4iS2aBk.js"
|
||||
]
|
||||
},
|
||||
"resources/js/roles/role_menu.js": {
|
||||
"file": "assets/role_menu-BuFAi1wM.js",
|
||||
"name": "role_menu",
|
||||
"src": "resources/js/roles/role_menu.js",
|
||||
"isEntry": true
|
||||
},
|
||||
"resources/js/roles/update.js": {
|
||||
"file": "assets/update-CapXnAP8.js",
|
||||
"name": "update",
|
||||
"src": "resources/js/roles/update.js",
|
||||
"isEntry": true
|
||||
},
|
||||
"resources/js/settings/general/general-settings.js": {
|
||||
"file": "assets/general-settings-BoJeYQk1.js",
|
||||
"name": "general-settings",
|
||||
"src": "resources/js/settings/general/general-settings.js",
|
||||
"isEntry": true,
|
||||
"imports": [
|
||||
"_gridjs.umd-BiCNXlqL.js",
|
||||
"_global-config-9uDKFQ8j.js",
|
||||
"__commonjsHelpers-C4iS2aBk.js"
|
||||
]
|
||||
},
|
||||
"resources/js/settings/syncronize/syncronize.js": {
|
||||
"file": "assets/syncronize-DjtcngRb.js",
|
||||
"name": "syncronize",
|
||||
"src": "resources/js/settings/syncronize/syncronize.js",
|
||||
"isEntry": true,
|
||||
"imports": [
|
||||
"_gridjs.umd-BiCNXlqL.js",
|
||||
"_global-config-9uDKFQ8j.js",
|
||||
"__commonjsHelpers-C4iS2aBk.js"
|
||||
]
|
||||
},
|
||||
"resources/js/tables/common-table.js": {
|
||||
"file": "assets/common-table-KF_NVAIE.js",
|
||||
"name": "common-table",
|
||||
"src": "resources/js/tables/common-table.js",
|
||||
"isEntry": true,
|
||||
"imports": [
|
||||
"_gridjs.umd-BiCNXlqL.js",
|
||||
"_global-config-9uDKFQ8j.js",
|
||||
"__commonjsHelpers-C4iS2aBk.js"
|
||||
]
|
||||
},
|
||||
"resources/scss/components/_circle.scss": {
|
||||
"file": "assets/_circle-DgPqpfJw.css",
|
||||
"src": "resources/scss/components/_circle.scss",
|
||||
"isEntry": true
|
||||
},
|
||||
"resources/scss/dashboards/_bigdata.scss": {
|
||||
"file": "assets/_bigdata-Syu0AGbZ.css",
|
||||
"src": "resources/scss/dashboards/_bigdata.scss",
|
||||
"isEntry": true
|
||||
},
|
||||
"resources/scss/icons.scss": {
|
||||
"file": "assets/icons-CHxf0fE3.css",
|
||||
"src": "resources/scss/icons.scss",
|
||||
"isEntry": true
|
||||
},
|
||||
"resources/scss/style.scss": {
|
||||
"file": "assets/style-C8C4w8xF.css",
|
||||
"src": "resources/scss/style.scss",
|
||||
"isEntry": true
|
||||
}
|
||||
}
|
||||
@@ -118,7 +118,7 @@ class BigData {
|
||||
this.dataNonVerification.total
|
||||
);
|
||||
this.percentageResultNonVerification =
|
||||
this.bigTotalNonVerification <= 0 || this.bigTotalPotensi
|
||||
this.bigTotalNonVerification <= 0 || this.bigTotalPotensi <= 0
|
||||
? 0
|
||||
: this.bigTotalNonVerification
|
||||
.div(this.bigTotalPotensi)
|
||||
@@ -138,7 +138,7 @@ class BigData {
|
||||
// business documents
|
||||
this.bigTotalBusiness = new Big(this.dataBusiness.total);
|
||||
this.percentageResultBusiness =
|
||||
this.bigTotalNonVerification <= 0
|
||||
this.bigTotalNonVerification <= 0 || this.bigTotalBusiness <= 0
|
||||
? 0
|
||||
: this.bigTotalBusiness
|
||||
.div(this.bigTotalNonVerification)
|
||||
|
||||
119
resources/js/dashboards/lack-of-potential.js
Normal file
119
resources/js/dashboards/lack-of-potential.js
Normal file
@@ -0,0 +1,119 @@
|
||||
import Big from "big.js";
|
||||
import GlobalConfig, { addThousandSeparators } from "../global-config.js";
|
||||
|
||||
class LackOfPotential {
|
||||
async init() {
|
||||
this.bigTotalLackPotential = 0;
|
||||
this.totalPotensi = await this.getDataTotalPotensi(2025);
|
||||
this.totalTargetPAD = await this.getDataSettings("TARGET_PAD");
|
||||
|
||||
this.bigTargetPAD = new Big(this.totalTargetPAD ?? 0);
|
||||
this.bigTotalPotensi = new Big(this.totalPotensi.totalData ?? 0);
|
||||
this.bigTotalLackPotential = this.bigTargetPAD - this.bigTotalPotensi;
|
||||
this.initChartKekuranganPotensi();
|
||||
}
|
||||
async getDataTotalPotensi(year) {
|
||||
try {
|
||||
const response = await fetch(
|
||||
`${GlobalConfig.apiHost}/api/all-task-documents?year=${year}`,
|
||||
{
|
||||
credentials: "include",
|
||||
headers: {
|
||||
Authorization: `Bearer ${
|
||||
document.querySelector("meta[name='api-token']")
|
||||
.content
|
||||
}`,
|
||||
"Content-Type": "application/json",
|
||||
},
|
||||
}
|
||||
);
|
||||
|
||||
if (!response.ok) {
|
||||
console.error("Network response was not ok", response);
|
||||
}
|
||||
|
||||
const data = await response.json();
|
||||
return {
|
||||
countData: data.data.count,
|
||||
totalData: data.data.total,
|
||||
};
|
||||
} catch (error) {
|
||||
console.error("Error fetching chart data:", error);
|
||||
return null;
|
||||
}
|
||||
}
|
||||
async getDataSettings(string_key) {
|
||||
try {
|
||||
const response = await fetch(
|
||||
`${GlobalConfig.apiHost}/api/api-data-settings?search=${string_key}`,
|
||||
{
|
||||
credentials: "include",
|
||||
headers: {
|
||||
Authorization: `Bearer ${
|
||||
document.querySelector("meta[name='api-token']")
|
||||
.content
|
||||
}`,
|
||||
"Content-Type": "application/json",
|
||||
},
|
||||
}
|
||||
);
|
||||
|
||||
if (!response.ok) {
|
||||
console.error("Network response was not ok", response);
|
||||
}
|
||||
|
||||
const data = await response.json();
|
||||
return data.data[0].value;
|
||||
} catch (error) {
|
||||
console.error("Error fetching chart data:", error);
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
initChartKekuranganPotensi() {
|
||||
document
|
||||
.querySelectorAll(".document-count.chart-lack-of-potential")
|
||||
.forEach((element) => {
|
||||
element.innerText = ``;
|
||||
});
|
||||
document
|
||||
.querySelectorAll(".document-total.chart-lack-of-potential")
|
||||
.forEach((element) => {
|
||||
element.innerText = `Rp.${addThousandSeparators(
|
||||
this.bigTotalLackPotential.toString()
|
||||
)}`;
|
||||
});
|
||||
document
|
||||
.querySelectorAll(".small-percentage.chart-lack-of-potential")
|
||||
.forEach((element) => {
|
||||
element.innerText = ``;
|
||||
});
|
||||
}
|
||||
}
|
||||
document.addEventListener("DOMContentLoaded", async function (e) {
|
||||
await new LackOfPotential().init();
|
||||
});
|
||||
|
||||
function resizeDashboard() {
|
||||
let targetElement = document.getElementById("lack-of-potential-wrapper");
|
||||
let dashboardElement = document.getElementById(
|
||||
"lack-of-potential-fixed-container"
|
||||
);
|
||||
|
||||
let targetWidth = targetElement.offsetWidth;
|
||||
let dashboardWidth = 1400;
|
||||
|
||||
let scaleFactor = (targetWidth / dashboardWidth).toFixed(2);
|
||||
|
||||
// Prevent scaling beyond 1 (100%) to avoid overflow
|
||||
scaleFactor = Math.min(scaleFactor, 1);
|
||||
|
||||
dashboardElement.style.transformOrigin = "left top";
|
||||
dashboardElement.style.transition = "transform 0.2s ease-in-out";
|
||||
dashboardElement.style.transform = `scale(${scaleFactor})`;
|
||||
|
||||
// Ensure horizontal scrolling is allowed if necessary
|
||||
document.body.style.overflowX = "auto";
|
||||
}
|
||||
|
||||
window.addEventListener("load", resizeDashboard);
|
||||
window.addEventListener("resize", resizeDashboard);
|
||||
@@ -5,37 +5,38 @@ import GlobalConfig from "../../global-config.js";
|
||||
import GeneralTable from "../../table-generator.js";
|
||||
|
||||
const dataTourismsColumns = [
|
||||
"Proyek ID",
|
||||
"Jenis Proyek",
|
||||
"NIB",
|
||||
"Nama Perusahaan",
|
||||
"Terbit OSS",
|
||||
"Status Penanaman Modal",
|
||||
"Bentuk Bisnis",
|
||||
"Uraian Resiko Proyek",
|
||||
"Nama Proyek",
|
||||
"Alamat Usaha",
|
||||
"Kecamatan",
|
||||
"Desa",
|
||||
"Luas Tanah",
|
||||
"Luas Tanah (m2)",
|
||||
"Jumlah Investasi",
|
||||
"TKI",
|
||||
"Tipe Usaha",
|
||||
"Longitude",
|
||||
"Latitude",
|
||||
{
|
||||
name: "Actions",
|
||||
widht: "120px",
|
||||
formatter: function (cell, row) {
|
||||
const id = row.cells[16].data;
|
||||
const id = row.cells[10].data;
|
||||
const long = row.cells[8].data;
|
||||
const lat = row.cells[9].data;
|
||||
const model = "data/tourisms";
|
||||
return gridjs.html(`
|
||||
<div class="d-flex justify-items-end gap-10">
|
||||
<button class="btn btn-warning me-2 btn-edit"
|
||||
data-id="${id}"
|
||||
data-model="${model}">
|
||||
<i class='bx bx-edit' ></i></button>
|
||||
<i class='bx bx-edit'></i></button>
|
||||
|
||||
<button class="btn btn-info me-2 btn-view"
|
||||
data-long="${long}" data-lat="${lat}">
|
||||
<i class='bx bx-map'></i></button>
|
||||
|
||||
<button class="btn btn-red btn-delete"
|
||||
data-id="${id}">
|
||||
<i class='bx bxs-trash' ></i></button>
|
||||
data-id="${id}">
|
||||
<i class='bx bxs-trash'></i></button>
|
||||
</div>
|
||||
`);
|
||||
},
|
||||
@@ -53,26 +54,42 @@ document.addEventListener("DOMContentLoaded", () => {
|
||||
table.processData = function (data) {
|
||||
return data.data.map((item) => {
|
||||
return [
|
||||
item.project_id,
|
||||
item.jenis_proyek,
|
||||
item.nib,
|
||||
item.business_name,
|
||||
item.terbit_oss,
|
||||
item.status_penanaman_modal,
|
||||
item.business_form,
|
||||
item.uraian_resiko_proyek,
|
||||
item.project_name,
|
||||
item.business_address,
|
||||
item.district_name,
|
||||
item.village_name,
|
||||
item.land_area,
|
||||
item.land_area_in_m2,
|
||||
item.investment_amount,
|
||||
item.number_of_employee,
|
||||
item.business_type,
|
||||
item.tki,
|
||||
item.longitude,
|
||||
item.latitude,
|
||||
item.id,
|
||||
];
|
||||
});
|
||||
};
|
||||
|
||||
table.init();
|
||||
|
||||
// Event listener untuk tombol "View" yang memunculkan modal
|
||||
document.addEventListener("click", function (e) {
|
||||
if (e.target && e.target.classList.contains("btn-view")) {
|
||||
const long = e.target.getAttribute("data-long");
|
||||
const lat = e.target.getAttribute("data-lat");
|
||||
|
||||
// Menyiapkan URL iframe dengan koordinat yang didapatkan
|
||||
const iframeSrc = `https://www.google.com/maps?q=${lat},${long}&hl=es;z=14&output=embed`;
|
||||
|
||||
// Menemukan modal dan iframe di dalam modal
|
||||
const modal = document.querySelector(".modalGMaps");
|
||||
const iframe = modal.querySelector("iframe");
|
||||
|
||||
// Set src iframe untuk menampilkan peta dengan koordinat yang relevan
|
||||
iframe.src = iframeSrc;
|
||||
|
||||
// Menampilkan modal
|
||||
var modalInstance = new bootstrap.Modal(modal);
|
||||
modalInstance.show();
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
@@ -2,14 +2,14 @@ import gridjs from "gridjs/dist/gridjs.umd.js";
|
||||
import "gridjs/dist/gridjs.umd.js";
|
||||
|
||||
// Mengambil data dari input dengan id="business_type_counts"
|
||||
const businessTypeCountsElement = document.getElementById("business_type_counts");
|
||||
const businessTypeCountsElement = document.getElementById("tourism_based_KBLI");
|
||||
console.log(businessTypeCountsElement);
|
||||
const businessTypeCounts = JSON.parse(businessTypeCountsElement.value); // Cek apakah data sudah terbawa dengan benar
|
||||
|
||||
// Membuat Grid.js instance
|
||||
new gridjs.Grid({
|
||||
columns: ["Jenis Bisnis Pariwisata", "Jumlah Total"], // Nama kolom
|
||||
data: businessTypeCounts.map(item => [item.business_type, item.count]), // Mengubah data untuk Grid.js
|
||||
data: businessTypeCounts.map(item => [item.kbli_title, item.total_records]), // Mengubah data untuk Grid.js
|
||||
search: true, // Menambahkan fitur pencarian
|
||||
pagination: true, // Menambahkan fitur pagination
|
||||
sort: true, // Menambahkan fitur sorting
|
||||
|
||||
53
resources/scss/components/_custom_circle.scss
Normal file
53
resources/scss/components/_custom_circle.scss
Normal file
@@ -0,0 +1,53 @@
|
||||
//
|
||||
// custom_circle.scss
|
||||
//
|
||||
|
||||
.custom-circle-wrapper {
|
||||
width: 100px; // Default width
|
||||
height: 100px; // Default height
|
||||
border: 4px solid white;
|
||||
border-radius: 50%;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
background-color: rgb(1, 44, 124);
|
||||
box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1); /* Efek bayangan */
|
||||
text-align: center;
|
||||
|
||||
&.large {
|
||||
width: 150px;
|
||||
height: 150px;
|
||||
}
|
||||
|
||||
&.small {
|
||||
width: 95px;
|
||||
height: 95px;
|
||||
}
|
||||
}
|
||||
|
||||
.custom-circle-content {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
.custom-circle-text {
|
||||
font-size: 14px;
|
||||
font-weight: bold;
|
||||
color: white;
|
||||
padding: 0;
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
.custom-circle-data {
|
||||
font-size: 12px;
|
||||
color: white;
|
||||
background-color: #f0195b;
|
||||
padding: 0 5px;
|
||||
border-radius: 3px;
|
||||
}
|
||||
|
||||
.custom-circle-data-type {
|
||||
font-size: 12px;
|
||||
color: white;
|
||||
}
|
||||
234
resources/scss/dashboards/_lack-of-potential.scss
Normal file
234
resources/scss/dashboards/_lack-of-potential.scss
Normal file
@@ -0,0 +1,234 @@
|
||||
//
|
||||
// lack-of-potential.scss
|
||||
//
|
||||
|
||||
.square {
|
||||
height: 100px;
|
||||
width: 100px;
|
||||
position: absolute;
|
||||
z-index: -1;
|
||||
}
|
||||
|
||||
.dia-top-left-bottom-right:after {
|
||||
content: "";
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
position: absolute;
|
||||
|
||||
top: 0;
|
||||
left: 0;
|
||||
background: linear-gradient(
|
||||
to top right,
|
||||
transparent calc(50% - 2px),
|
||||
black,
|
||||
transparent calc(50% + 2px)
|
||||
);
|
||||
}
|
||||
|
||||
.dia-top-right-bottom-left:after {
|
||||
content: "";
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
position: absolute;
|
||||
top: 0;
|
||||
left: 0;
|
||||
background: linear-gradient(
|
||||
to top left,
|
||||
transparent calc(50% - 2px),
|
||||
black,
|
||||
transparent calc(50% + 2px)
|
||||
);
|
||||
}
|
||||
|
||||
.lack-of-potential-wrapper {
|
||||
background-image: url("/public/images/bg-dashboard.jpg");
|
||||
background-size: cover;
|
||||
background-position: center;
|
||||
background-color: rgba(255, 255, 255, 0.7);
|
||||
max-width: 100vw;
|
||||
}
|
||||
|
||||
.lack-of-potential-wrapper::before {
|
||||
content: "";
|
||||
position: absolute;
|
||||
pointer-events: none; /* Prevents the overlay from blocking interaction */
|
||||
top: 0;
|
||||
left: 0;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
background-color: rgba(255, 255, 255, 0.7);
|
||||
}
|
||||
// #lack-of-potential-fixed-container {
|
||||
// min-width: 1110px;
|
||||
// max-width: unset; /* Allow it to grow if needed */
|
||||
// }
|
||||
|
||||
// @media (max-width: 768px) {
|
||||
// #lack-of-potential-fixed-container {
|
||||
// transform: scale(0.8); /* Adjust the scale as needed */
|
||||
// }
|
||||
// }
|
||||
|
||||
// line degrees
|
||||
.line {
|
||||
background-color: black;
|
||||
position: absolute;
|
||||
height: 3px;
|
||||
}
|
||||
.home-to-non-usaha {
|
||||
width: 100px;
|
||||
top: 13%;
|
||||
left: 38%;
|
||||
transform: rotate(90deg);
|
||||
}
|
||||
.restoran-to-bapenda {
|
||||
width: 110px;
|
||||
top: 14%;
|
||||
left: 60%;
|
||||
transform: rotate(40deg);
|
||||
}
|
||||
.pbb-to-bapenda {
|
||||
width: 80px;
|
||||
top: 21%;
|
||||
left: 80%;
|
||||
}
|
||||
.reklame-to-bapenda {
|
||||
width: 120px;
|
||||
left: 75%;
|
||||
top: 30%;
|
||||
transform: rotateZ(142deg);
|
||||
}
|
||||
.non-usaha-to-bapenda {
|
||||
width: 116px;
|
||||
left: 18%;
|
||||
top: 33%;
|
||||
transform: rotateZ(124deg);
|
||||
}
|
||||
.non-usaha-to-pdam {
|
||||
width: 100px;
|
||||
left: 38%;
|
||||
top: 34%;
|
||||
transform: rotateZ(90deg);
|
||||
}
|
||||
.non-usaha-to-kecamatan {
|
||||
width: 140px;
|
||||
left: 55%;
|
||||
top: 33%;
|
||||
transform: rotateZ(237deg);
|
||||
}
|
||||
.bapenda-to-usaha {
|
||||
width: 114px;
|
||||
left: 18%;
|
||||
top: 49%;
|
||||
transform: rotateZ(56deg);
|
||||
}
|
||||
.pdam-to-usaha {
|
||||
width: 88px;
|
||||
left: 39%;
|
||||
top: 49%;
|
||||
transform: rotateZ(90deg);
|
||||
}
|
||||
.kecamatan-to-usaha {
|
||||
width: 118px;
|
||||
left: 56%;
|
||||
top: 50%;
|
||||
transform: rotateZ(117deg);
|
||||
}
|
||||
.usaha-to-villa {
|
||||
width: 100px;
|
||||
left: 10%;
|
||||
top: 63%;
|
||||
transform: rotateZ(143deg);
|
||||
}
|
||||
.usaha-to-pabrik {
|
||||
width: 150px;
|
||||
left: 15%;
|
||||
top: 70%;
|
||||
transform: rotateZ(143deg);
|
||||
}
|
||||
.usaha-to-pariwisata {
|
||||
width: 150px;
|
||||
left: 43%;
|
||||
top: 70%;
|
||||
transform: rotateZ(38deg);
|
||||
}
|
||||
.usaha-to-protocol {
|
||||
width: 106px;
|
||||
left: 36%;
|
||||
top: 71%;
|
||||
transform: rotateZ(86deg);
|
||||
}
|
||||
.pariwisata-to-disbudpar {
|
||||
width: 86px;
|
||||
left: 54%;
|
||||
top: 83%;
|
||||
transform: rotateZ(150deg);
|
||||
}
|
||||
.non-usaha-to-wasdal {
|
||||
width: 300px;
|
||||
left: -32%;
|
||||
top: 34%;
|
||||
transform: rotateZ(226deg);
|
||||
}
|
||||
.usaha-to-wasdal {
|
||||
width: 300px;
|
||||
left: -34%;
|
||||
top: 50%;
|
||||
transform: rotateZ(129deg);
|
||||
}
|
||||
.wasdal-to-upt {
|
||||
width: 155px;
|
||||
left: 3%;
|
||||
top: -67%;
|
||||
transform: rotateZ(127deg);
|
||||
}
|
||||
.wasdal-to-satpol {
|
||||
width: 155px;
|
||||
left: 19%;
|
||||
top: -52%;
|
||||
transform: rotateZ(76deg);
|
||||
}
|
||||
.wasdal-to-kejari {
|
||||
width: 182px;
|
||||
left: 25%;
|
||||
top: -55%;
|
||||
transform: rotateZ(51deg);
|
||||
}
|
||||
.wasdal-to-tni {
|
||||
width: 260px;
|
||||
left: 29%;
|
||||
top: -62%;
|
||||
transform: rotateZ(30deg);
|
||||
}
|
||||
.wasdal-to-potential {
|
||||
width: 50px;
|
||||
left: 28%;
|
||||
top: 41%;
|
||||
}
|
||||
.potential-to-tata-ruang {
|
||||
width: 50px;
|
||||
left: 72%;
|
||||
top: 41%;
|
||||
}
|
||||
.tata-ruang-to-non-usaha {
|
||||
width: 220px;
|
||||
left: 0%;
|
||||
top: 30%;
|
||||
transform: rotateZ(144deg);
|
||||
}
|
||||
.tata-ruang-to-usaha {
|
||||
width: 280px;
|
||||
left: 0%;
|
||||
top: 52%;
|
||||
transform: rotateZ(224deg);
|
||||
}
|
||||
.tata-ruang-to-peta {
|
||||
width: 122px;
|
||||
left: 8%;
|
||||
top: 41%;
|
||||
}
|
||||
.peta-to-tapak {
|
||||
width: 30px;
|
||||
left: 47%;
|
||||
top: 41%;
|
||||
}
|
||||
@@ -45,6 +45,8 @@
|
||||
@import "components/tooltip";
|
||||
@import "components/widgets";
|
||||
@import "components/circle";
|
||||
@import "components/custom_circle";
|
||||
@import "dashboards/lack-of-potential";
|
||||
|
||||
// Plugin
|
||||
@import "plugins/simplebar";
|
||||
|
||||
@@ -36,10 +36,10 @@ class="authentication-bg"
|
||||
|
||||
<div class="mb-3">
|
||||
<label for="email" class="form-label">Email Address</label>
|
||||
<input type="email" class="form-control" id="email" name="email" value="user@demo.com" placeholder="Enter your email">
|
||||
<input type="email" class="form-control" id="email" name="email" placeholder="Enter your email">
|
||||
</div>
|
||||
<div class="mb-3">
|
||||
<input type="password" class="form-control" id="password" name="password" value="password" placeholder="Enter your password">
|
||||
<input type="password" class="form-control" id="password" name="password" placeholder="Enter your password">
|
||||
</div>
|
||||
<div class="d-grid">
|
||||
<button class="btn btn-dark btn-lg fw-medium" type="submit">Sign In</button>
|
||||
|
||||
30
resources/views/components/custom-circle.blade.php
Normal file
30
resources/views/components/custom-circle.blade.php
Normal file
@@ -0,0 +1,30 @@
|
||||
@props(['title' => 'title component', 'visible_data' => false, 'data' => 'data text', 'visible_data_type' => false,
|
||||
'data_type' => '','style' => '', 'size' => '', 'line' => []])
|
||||
|
||||
@section('css')
|
||||
@vite(['resources/scss/components/_custom_circle.scss'])
|
||||
@endsection
|
||||
|
||||
<div class="custom-circle-wrapper {{ $size }}" style="{{ $style }}">
|
||||
<div class="custom-circle-content">
|
||||
<p class="custom-circle-text">{{ $title }}</p>
|
||||
@if ($visible_data === "true")
|
||||
<div class="custom-circle-data">{{ $data }}</div>
|
||||
@endif
|
||||
@if ($visible_data_type === "true")
|
||||
<div class="custom-circle-data-type">{{ $data_type }}</div>
|
||||
@endif
|
||||
@if (!empty($lines))
|
||||
<svg class="absolute w-full h-full" viewBox="0 0 100 100" preserveAspectRatio="none">
|
||||
@foreach ($lines as $line)
|
||||
<line
|
||||
x1="{{ $line['x1'] }}" y1="{{ $line['y1'] }}"
|
||||
x2="{{ $line['x2'] }}" y2="{{ $line['y2'] }}"
|
||||
stroke="{{ $line['color'] ?? 'black' }}"
|
||||
stroke-width="{{ $line['width'] ?? 2 }}"
|
||||
/>
|
||||
@endforeach
|
||||
</svg>
|
||||
@endif
|
||||
</div>
|
||||
</div>
|
||||
@@ -33,7 +33,7 @@
|
||||
<div id="dashboard-fixed-container" class="row" style="width:1110px;height:770px;position:relative;margin:auto;">
|
||||
@component('components.circle', [
|
||||
'document_title' => 'Kekurangan Potensi',
|
||||
'document_color' => '#911701',
|
||||
'document_color' => '#ff5757',
|
||||
'document_type' => '',
|
||||
'document_id' => 'chart-kekurangan-potensi',
|
||||
'visible_small_circle' => true,
|
||||
@@ -43,7 +43,7 @@
|
||||
|
||||
@component('components.circle', [
|
||||
'document_title' => 'Target PAD 2024',
|
||||
'document_color' => '#020e42',
|
||||
'document_color' => '#204f6b',
|
||||
'document_type' => '',
|
||||
'document_id' => 'chart-target-pad',
|
||||
'visible_small_circle' => true,
|
||||
@@ -61,7 +61,7 @@
|
||||
|
||||
@component('components.circle', [
|
||||
'document_title' => 'Total Potensi Berkas',
|
||||
'document_color' => '#02acfa',
|
||||
'document_color' => '#0097b3',
|
||||
'document_type' => 'Pemohon',
|
||||
'document_id' => 'chart-total-potensi',
|
||||
'visible_small_circle' => true,
|
||||
@@ -77,7 +77,7 @@
|
||||
|
||||
@component('components.circle', [
|
||||
'document_title' => 'Perkiraan Potensi PBG Dari Tata Ruang',
|
||||
'document_color' => '#bf04bc',
|
||||
'document_color' => '#ed9d2e',
|
||||
'document_type' => '',
|
||||
'document_id' => 'chart-potensi-tata-ruang',
|
||||
'visible_small_circle' => true,
|
||||
@@ -90,7 +90,7 @@
|
||||
|
||||
@component('components.circle', [
|
||||
'document_title' => 'Non Usaha',
|
||||
'document_color' => '#028399',
|
||||
'document_color' => '#399787',
|
||||
'document_type' => 'Berkas',
|
||||
'document_id' => 'chart-non-business',
|
||||
'visible_small_circle' => true,
|
||||
@@ -100,7 +100,7 @@
|
||||
|
||||
@component('components.circle', [
|
||||
'document_title' => 'Usaha',
|
||||
'document_color' => '#616b7d',
|
||||
'document_color' => '#5e7c89',
|
||||
'document_type' => 'Berkas',
|
||||
'document_id' => 'chart-business',
|
||||
'visible_small_circle' => true,
|
||||
@@ -110,7 +110,7 @@
|
||||
|
||||
@component('components.circle', [
|
||||
'document_title' => 'Berkas Terverifikasi',
|
||||
'document_color' => '#0561f5',
|
||||
'document_color' => '#5170ff',
|
||||
'document_type' => 'Berkas',
|
||||
'document_id' => 'chart-berkas-terverifikasi',
|
||||
'visible_small_circle' => true,
|
||||
@@ -126,7 +126,7 @@
|
||||
|
||||
@component('components.circle', [
|
||||
'document_title' => 'Berkas Belum Terverifikasi',
|
||||
'document_color' => '#b973ff',
|
||||
'document_color' => '#5170ff',
|
||||
'document_type' => 'Berkas',
|
||||
'document_id' => 'chart-berkas-belum-terverifikasi',
|
||||
'visible_small_circle' => true,
|
||||
@@ -143,7 +143,7 @@
|
||||
|
||||
@component('components.circle',[
|
||||
'document_title' => 'Realisasi Terbit PBG',
|
||||
'document_color' => '#09ab5a',
|
||||
'document_color' => '#8cc540',
|
||||
'document_type' => 'Berkas',
|
||||
'document_id' => 'chart-realisasi-tebit-pbg',
|
||||
'visible_small_circle' => true,
|
||||
@@ -156,7 +156,7 @@
|
||||
|
||||
@component('components.circle',[
|
||||
'document_title' => 'Menunggu Klik DPMPTSP',
|
||||
'document_color' => '#0294ad',
|
||||
'document_color' => '#00bf61',
|
||||
'document_type' => 'Berkas',
|
||||
'document_id' => 'chart-menunggu-klik-dpmptsp',
|
||||
'visible_small_circle' => true,
|
||||
@@ -169,7 +169,7 @@
|
||||
|
||||
@component('components.circle',[
|
||||
'document_title' => 'Berproses Di Dinas Teknis',
|
||||
'document_color' => '#422519',
|
||||
'document_color' => '#737373',
|
||||
'document_type' => 'Berkas',
|
||||
'document_id' => 'chart-proses-dinas-teknis',
|
||||
'visible_small_circle' => true,
|
||||
|
||||
119
resources/views/dashboards/lack_of_potential.blade.php
Normal file
119
resources/views/dashboards/lack_of_potential.blade.php
Normal file
@@ -0,0 +1,119 @@
|
||||
@extends('layouts.vertical', ['subtitle' => 'Dashboards'])
|
||||
|
||||
@section('css')
|
||||
@vite(['resources/scss/dashboards/_lack-of-potential.scss'])
|
||||
@endsection
|
||||
|
||||
@section('content')
|
||||
@include('layouts.partials.page-title', ['title' => 'Dashboards', 'subtitle' => 'Lack Of Potential'])
|
||||
|
||||
<div class="lack-of-potential-wrapper">
|
||||
<div class="row" id="lack-of-potential-wrapper">
|
||||
<div class="col-12">
|
||||
<h3 class="mt-3 ms-2 text-danger">
|
||||
ANALISA BIG DATA MELALUI APLIKASI SIBEDAS PBG
|
||||
</h3>
|
||||
</div>
|
||||
</div>
|
||||
<div class="">
|
||||
<div class="">
|
||||
<div id="lack-of-potential-fixed-container" class="" style="width:1400px;height:770px;position:relative;margin:auto;z-index:1;">
|
||||
<div style="position: absolute; top: 200px; left: 50px;">
|
||||
<x-custom-circle title="Restoran" size="small" style="background-color: #0e4753;" />
|
||||
<div class="square dia-top-left-bottom-right" style="top:30px;left:50px;width:150px;height:120px;"></div>
|
||||
<x-custom-circle title="PBB Bangunan" visible_data="true" data="649.157" size="small" style="background-color: #0e4753;" />
|
||||
<div class="square" style="width:150px;height:2px;background-color:black;left:50px;top:150px;"></div>
|
||||
<x-custom-circle title="Reklame" visible_data="true" data="2.428" size="small" style="background-color: #0e4753;" />
|
||||
<div class="square dia-top-right-bottom-left" style="top:140px;left:50px;width:150px;height:120px;"></div>
|
||||
</div>
|
||||
|
||||
<div style="position: absolute; top: 300px; left: 200px;">
|
||||
<div class="square dia-top-right-bottom-left" style="top:-100px;left:30px;width:150px;height:120px;"></div>
|
||||
<div class="square dia-top-left-bottom-right" style="top:-100px;left:120px;width:120px;height:120px;"></div>
|
||||
<x-custom-circle title="BAPENDA" size="small" style="float:left;background-color: #234f6c;" />
|
||||
<x-custom-circle title="PDAM" visible_data="true" data="9.022" visible_data_type="true" data_type="Pelanggan" size="small" style="float:left;background-color: #234f6c;" />
|
||||
<x-custom-circle title="KECAMATAN" size="small" style="float:left;background-color: #234f6c;" />
|
||||
|
||||
</div>
|
||||
|
||||
<div style="position: absolute; top: 0px; left: 270px;">
|
||||
<div class="square" style="width:5px;height:600px;background-color:black;left:70px;top:50px;"></div>
|
||||
<div class="square dia-top-left-bottom-right" style="top:350px;left:-50px;width:120px;height:120px;"></div>
|
||||
<div class="square dia-top-right-bottom-left" style="top:350px;left:70px;width:120px;height:120px;"></div>
|
||||
<x-custom-circle title="Rumah Tinggal" size="small" style="background-color: #234f6c;margin:auto;" />
|
||||
<x-custom-circle title="Non Usaha" size="large" style="background-color: #3a968b;margin-top:20px;" />
|
||||
<x-custom-circle title="USAHA" size="large" style="background-color: #627c8b;margin-top:150px;" />
|
||||
</div>
|
||||
|
||||
<div style="position: absolute; top: 650px; left: 110px;">
|
||||
<div class="square dia-top-right-bottom-left" style="top:-110px;left:40px;width:200px;height:120px;"></div>
|
||||
<div class="square dia-top-right-bottom-left" style="top:-110px;left:90px;width:150px;height:170px;"></div>
|
||||
<div class="square dia-top-left-bottom-right" style="top:-110px;left:230px;width:150px;height:170px;"></div>
|
||||
<div class="square dia-top-left-bottom-right" style="top:-110px;left:260px;width:200px;height:180px;"></div>
|
||||
<x-custom-circle title="Villa" size="small" style="float:left;background-color: #234f6c;" />
|
||||
<x-custom-circle title="Pabrik" size="small" style="float:left;background-color: #234f6c;" />
|
||||
<x-custom-circle title="Jalan Protocol" size="small" style="float:left;background-color: #234f6c;" />
|
||||
<x-custom-circle title="Ruko" size="small" style="float:left;background-color: #234f6c;" />
|
||||
<x-custom-circle title="Pariwisata" size="small" style="float:left;background-color: #234f6c; margin-right: 20px;" />
|
||||
<div class="square" style="width:150px;height:2px;background-color:black;left:350px;top:50px;"></div>
|
||||
<x-custom-circle title="DISBUDPAR" size="small" style="background-color: #3a968b;" />
|
||||
</div>
|
||||
|
||||
<div style="position: absolute; top: 280px; left: 550px;">
|
||||
<div class="square dia-top-left-bottom-right" style="top:-110px;left:-150px;width:200px;height:180px;"></div>
|
||||
<div class="square dia-top-right-bottom-left" style="top:70px;left:-150px;width:200px;height:130px;"></div>
|
||||
<x-custom-circle title="Tim Wasdal Gabungan" size="large" style="background-color: #da6635;float:left" />
|
||||
<div class="square" style="width:650px;height:5px;background-color:black;left:100px;top:75px;"></div>
|
||||
@component('components.circle', [
|
||||
'document_title' => 'Kekurangan Potensi',
|
||||
'document_color' => '#ff5757',
|
||||
'document_type' => '',
|
||||
'document_id' => 'chart-lack-of-potential',
|
||||
'visible_small_circle' => false,
|
||||
'style' => 'margin-left:180px;top:-20px;'
|
||||
])
|
||||
@endcomponent
|
||||
|
||||
<x-custom-circle title="Tata Ruang" size="large" style="background-color: #da6635;float:left;margin-left:250px;" />
|
||||
|
||||
</div>
|
||||
|
||||
<div style="position: absolute; top: 310px; left: 1150px;">
|
||||
<div class="square dia-top-left-bottom-right" style="top:90px;left:-100px;width:100px;height:100px;"></div>
|
||||
<div class="square dia-top-right-bottom-left" style="top:-110px;left:-100px;width:100px;height:100px;"></div>
|
||||
<x-custom-circle title="Peta" visible_data_type="true" data_type="1:5000" size="small" style="background-color: #224f6d;float:left;" />
|
||||
<x-custom-circle title="Tapak Bangunan" size="small" style="background-color: #2390af;float:left;margin-left:20px;" />
|
||||
|
||||
</div>
|
||||
|
||||
<x-custom-circle title="UUCK" size="small" style="background-color: #2390af;position:absolute;left:1270px;top:440px;" />
|
||||
|
||||
<div style="position: absolute; top: 470px; left: 430px;">
|
||||
<div class="square dia-top-right-bottom-left" style="top:-80px;left:20px;width:150px;height:120px;"></div>
|
||||
<div class="square dia-top-right-bottom-left" style="top:-50px;left:100px;width:100px;height:100px;"></div>
|
||||
<div class="square dia-top-left-bottom-right" style="top:-50px;left:180px;width:100px;height:100px;"></div>
|
||||
<div class="square dia-top-left-bottom-right" style="top:-60px;left:240px;width:120px;height:120px;"></div>
|
||||
<x-custom-circle title="UPT Wasdal" size="small" style="background-color: #0f4853;float:left;" />
|
||||
<x-custom-circle title="Satpol PP" size="small" style="background-color: #0f4853;float:left;" />
|
||||
<x-custom-circle title="KEJARI" size="small" style="background-color: #0f4853;float:left;" />
|
||||
<x-custom-circle title="TNI & POLRI" size="small" style="background-color: #0f4853;float:left;" />
|
||||
</div>
|
||||
|
||||
<x-custom-circle title="UUCK" size="small" style="background-color: #2390af;position:absolute;left:980px;top:500px;" />
|
||||
|
||||
<div style="position: absolute; top: 50px; left: 1100px;">
|
||||
<x-custom-circle title="Non Usaha" size="large" style="background-color: #3a968b;margin-top:20px;" />
|
||||
<x-custom-circle title="USAHA" size="large" style="background-color: #627c8b;margin-top:260px;" />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
</div>
|
||||
@endsection
|
||||
|
||||
@section('scripts')
|
||||
@vite(['resources/js/dashboards/lack-of-potential.js'])
|
||||
@endsection
|
||||
|
||||
@@ -63,8 +63,9 @@
|
||||
<input class="form-control" list="{{ $field }}Options" id="{{ $field }}" name="{{ $field }}"
|
||||
value="{{ old($field, isset($modelInstance) ? $modelInstance->{$field} : '') }}" placeholder="Type to search..." oninput="fetchOptions('{{ $field }}')">
|
||||
<datalist id="{{ $field }}Options"></datalist>
|
||||
@elseif($fieldType == 'date')
|
||||
<input type="date" id="{{ $field }}" name="{{ $field }}" class="form-control" value="{{ old($field, isset($modelInstance) ? $modelInstance->{$field} : '') }}">
|
||||
@elseif($fieldType == 'date')
|
||||
<input type="date" id="{{ $field }}" name="{{ $field }}" class="form-control"
|
||||
value="{{ old($field, isset($modelInstance) && $modelInstance->{$field} ? \Carbon\Carbon::parse($modelInstance->{$field})->format('Y-m-d') : '') }}">
|
||||
@else
|
||||
<input type="{{ $fieldType }}" id="{{ $field }}" name="{{ $field }}" class="form-control" value="{{ old($field, isset($modelInstance) ? $modelInstance->{$field} : '') }}">
|
||||
@endif
|
||||
|
||||
@@ -29,6 +29,29 @@
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Modal -->
|
||||
<div class="modal fade modalGMaps" tabindex="-1"
|
||||
aria-labelledby="confirmationModalCenterTitle" aria-hidden="true">
|
||||
<div class="modal-dialog modal-dialog-centered modal-lg modal-sm">
|
||||
<div class="modal-content">
|
||||
<div class="modal-header">
|
||||
<button type="button" class="btn-close" data-bs-dismiss="modal"
|
||||
aria-label="Close"></button>
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
<iframe
|
||||
src=""
|
||||
width="100%"
|
||||
height="450"
|
||||
style="border:0;"
|
||||
allowfullscreen=""
|
||||
loading="lazy">
|
||||
</iframe>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{{-- <div id="alert-container"></div> --}}
|
||||
|
||||
@endsection
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
@section('content')
|
||||
@include('layouts.partials/page-title', ['title' => 'Report', 'subtitle' => 'Report Pariwisata'])
|
||||
|
||||
<input id="business_type_counts" type="hidden" value="{{ json_encode($businessTypeCounts) }}">
|
||||
<input id="tourism_based_KBLI" type="hidden" value="{{ json_encode($tourismBasedKBLI) }}">
|
||||
<div class="card">
|
||||
<div class="card-header">
|
||||
<h5 class="card-title">Laporan Pariwisata</h5>
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
<?php
|
||||
|
||||
use App\Http\Controllers\BusinessOrIndustriesController;
|
||||
use App\Http\Controllers\Dashboards\LackOfPotentialController;
|
||||
use App\Http\Controllers\DataSettingController;
|
||||
use App\Http\Controllers\Dashboards\BigDataController;
|
||||
use App\Http\Controllers\Home\HomeController;
|
||||
@@ -27,6 +28,7 @@ Route::group(['middleware' => 'auth'], function(){
|
||||
Route::group(['prefix' => '/dashboards'], function(){
|
||||
Route::get('/bigdata', [BigDataController::class, 'index'])->name('dashboard.home');
|
||||
Route::get('/dashboard-pbg', [BigDataController::class, 'pbg'])->name('dashboard.pbg');
|
||||
Route::get('/lack-of-potential', [LackOfPotentialController::class, 'lack_of_potential'])->name('dashboard.lack_of_potential');
|
||||
});
|
||||
|
||||
// settings
|
||||
|
||||
309
sibedas.sql
309
sibedas.sql
File diff suppressed because one or more lines are too long
@@ -20,6 +20,8 @@ export default defineConfig({
|
||||
"resources/scss/style.scss",
|
||||
"resources/scss/components/_circle.scss",
|
||||
"resources/scss/dashboards/_bigdata.scss",
|
||||
"resources/scss/dashboards/_lack-of-potential.scss",
|
||||
"resources/scss/components/_custom_circle.scss",
|
||||
|
||||
"node_modules/quill/dist/quill.snow.css",
|
||||
"node_modules/quill/dist/quill.bubble.css",
|
||||
@@ -49,11 +51,14 @@ export default defineConfig({
|
||||
"resources/js/data/advertisements/form-upload.js",
|
||||
|
||||
//js-additional
|
||||
"resources/js/dashboards/bigdata.js",
|
||||
"resources/js/settings/syncronize/syncronize.js",
|
||||
"resources/js/pbg-task/index.js",
|
||||
"resources/js/settings/general/general-settings.js",
|
||||
"resources/js/tables/common-table.js",
|
||||
|
||||
// dashboards
|
||||
"resources/js/dashboards/bigdata.js",
|
||||
"resources/js/dashboards/lack-of-potential.js",
|
||||
// roles
|
||||
"resources/js/roles/index.js",
|
||||
"resources/js/roles/create.js",
|
||||
@@ -83,6 +88,7 @@ export default defineConfig({
|
||||
"resources/js/data/tourisms/data-tourisms.js",
|
||||
"resources/js/data/tourisms/form-create-update.js",
|
||||
"resources/js/data/tourisms/form-upload.js",
|
||||
"resources/js/report/tourisms/index.js",
|
||||
],
|
||||
refresh: true,
|
||||
}),
|
||||
|
||||
Reference in New Issue
Block a user