fix(master-land): create page land
This commit is contained in:
parent
5dce5fbcf8
commit
d1624a4c6d
|
@ -17,6 +17,12 @@ public function index()
|
|||
return view('master-data.lahan.index', compact('lands', 'provinces'));
|
||||
}
|
||||
|
||||
public function create()
|
||||
{
|
||||
$provinces = Province::all();
|
||||
return view('master-data.lahan.create', compact('provinces'));
|
||||
}
|
||||
|
||||
public function store(Request $request)
|
||||
{
|
||||
$customMessage = [
|
||||
|
|
|
@ -0,0 +1,90 @@
|
|||
<!DOCTYPE html>
|
||||
<html lang="id">
|
||||
<head>
|
||||
<meta charset="UTF-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
<title>Leaflet Draw Polygon</title>
|
||||
|
||||
<!-- Leaflet CSS -->
|
||||
<link
|
||||
rel="stylesheet"
|
||||
href="https://unpkg.com/leaflet/dist/leaflet.css"
|
||||
/>
|
||||
|
||||
<!-- Leaflet Draw CSS -->
|
||||
<link
|
||||
rel="stylesheet"
|
||||
href="https://cdnjs.cloudflare.com/ajax/libs/leaflet.draw/1.0.4/leaflet.draw.css"
|
||||
/>
|
||||
|
||||
<script src="https://unpkg.com/leaflet/dist/leaflet.js"></script>
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/leaflet.draw/1.0.4/leaflet.draw.js"></script>
|
||||
|
||||
<style>
|
||||
#map {
|
||||
height: 500px;
|
||||
} /* Atur tinggi peta */
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<div id="map"></div>
|
||||
|
||||
<script>
|
||||
// 1️⃣ Inisialisasi peta
|
||||
var map = L.map("map").setView([-6.2, 106.816666], 12); // Jakarta
|
||||
|
||||
// 2️⃣ Tambahkan tile layer (OpenStreetMap)
|
||||
L.tileLayer("https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png", {
|
||||
attribution: "© OpenStreetMap contributors",
|
||||
}).addTo(map);
|
||||
|
||||
// 3️⃣ Inisialisasi fitur gambar (Leaflet Draw)
|
||||
var drawnItems = new L.FeatureGroup();
|
||||
map.addLayer(drawnItems);
|
||||
|
||||
var drawControl = new L.Control.Draw({
|
||||
draw: {
|
||||
polygon: true, // Izinkan user menggambar polygon
|
||||
polyline: false,
|
||||
rectangle: false,
|
||||
circle: false,
|
||||
marker: false,
|
||||
circlemarker: false,
|
||||
},
|
||||
edit: {
|
||||
featureGroup: drawnItems, // Edit hanya objek yang sudah digambar
|
||||
remove: true, // Izinkan menghapus objek
|
||||
},
|
||||
});
|
||||
map.addControl(drawControl);
|
||||
|
||||
// 4️⃣ Event saat user menggambar polygon
|
||||
map.on("draw:created", function (event) {
|
||||
var layer = event.layer;
|
||||
drawnItems.addLayer(layer);
|
||||
var coordinates = layer.getLatLngs();
|
||||
console.log("Koordinat Polygon:", coordinates);
|
||||
alert(
|
||||
"Polygon berhasil dibuat! Cek console untuk koordinatnya."
|
||||
);
|
||||
});
|
||||
|
||||
// 5️⃣ Event saat user mengedit polygon
|
||||
map.on("draw:edited", function (event) {
|
||||
var layers = event.layers;
|
||||
layers.eachLayer(function (layer) {
|
||||
var coordinates = layer.getLatLngs();
|
||||
console.log("Koordinat setelah diedit:", coordinates);
|
||||
alert(
|
||||
"Polygon berhasil diedit! Cek console untuk koordinatnya."
|
||||
);
|
||||
});
|
||||
});
|
||||
|
||||
// 6️⃣ Event saat user menghapus polygon
|
||||
map.on("draw:deleted", function (event) {
|
||||
alert("Polygon telah dihapus!");
|
||||
});
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
|
@ -0,0 +1,347 @@
|
|||
var map;
|
||||
var currentMarker = null;
|
||||
|
||||
document.addEventListener("DOMContentLoaded", function () {
|
||||
map = L.map("map", {
|
||||
attributionControl: false,
|
||||
}).setView([-8.157416852745705, 113.72281580436439], 16);
|
||||
|
||||
googleStreets = L.tileLayer(
|
||||
"http://{s}.google.com/vt?lyrs=m&x={x}&y={y}&z={z}",
|
||||
{
|
||||
maxZoom: 20,
|
||||
subdomains: ["mt0", "mt1", "mt2", "mt3"],
|
||||
}
|
||||
).addTo(map);
|
||||
|
||||
var iconMarker = L.icon({
|
||||
iconUrl: "/assets/images/marker.png",
|
||||
iconSize: [50, 50],
|
||||
iconAnchor: [25, 50],
|
||||
popupAnchor: [0, -50],
|
||||
});
|
||||
|
||||
currentMarker = L.marker([-8.157416852745705, 113.72281580436439], {
|
||||
icon: iconMarker,
|
||||
draggable: true,
|
||||
})
|
||||
.addTo(map)
|
||||
.bindPopup(
|
||||
`<div class="text-center"><b>Anda berada di sini</b><br />Silahkan priksa lokasi petamu sudah benar.</div>`
|
||||
);
|
||||
|
||||
var drawnItems = new L.FeatureGroup();
|
||||
map.addLayer(drawnItems);
|
||||
|
||||
var drawControl = new L.Control.Draw({
|
||||
draw: {
|
||||
polygon: true, // Izinkan user menggambar polygon
|
||||
polyline: false,
|
||||
rectangle: false,
|
||||
circle: false,
|
||||
marker: false,
|
||||
circlemarker: false,
|
||||
},
|
||||
edit: {
|
||||
featureGroup: drawnItems, // Edit hanya objek yang sudah digambar
|
||||
remove: true, // Izinkan menghapus objek
|
||||
},
|
||||
});
|
||||
map.addControl(drawControl);
|
||||
|
||||
// 4️⃣ Event saat user menggambar polygon
|
||||
map.on("draw:created", function (event) {
|
||||
var layer = event.layer;
|
||||
drawnItems.addLayer(layer);
|
||||
var coordinates = layer.getLatLngs();
|
||||
console.log("Koordinat Polygon:", coordinates);
|
||||
alert("Polygon berhasil dibuat! Cek console untuk koordinatnya.");
|
||||
});
|
||||
|
||||
// 5️⃣ Event saat user mengedit polygon
|
||||
map.on("draw:edited", function (event) {
|
||||
var layers = event.layers;
|
||||
layers.eachLayer(function (layer) {
|
||||
var coordinates = layer.getLatLngs();
|
||||
console.log("Koordinat setelah diedit:", coordinates);
|
||||
alert("Polygon berhasil diedit! Cek console untuk koordinatnya.");
|
||||
});
|
||||
});
|
||||
|
||||
// 6️⃣ Event saat user menghapus polygon
|
||||
map.on("draw:deleted", function (event) {
|
||||
alert("Polygon telah dihapus!");
|
||||
});
|
||||
|
||||
$("#showModal").on("shown.bs.modal", function () {
|
||||
map.invalidateSize();
|
||||
});
|
||||
|
||||
map.on("click", onMapClick);
|
||||
});
|
||||
|
||||
var form = document.getElementById("add-form");
|
||||
var provinceField = form.querySelector("#province-field");
|
||||
var provinceVal = new Choices(provinceField);
|
||||
|
||||
var regencyContainer = form.querySelector("#regency-container");
|
||||
var regencyField = form.querySelector("#regency-field");
|
||||
var regencyVal = new Choices(regencyField, {
|
||||
shouldSort: false,
|
||||
});
|
||||
|
||||
var districtContainer = form.querySelector("#district-container");
|
||||
var districtField = form.querySelector("#district-field");
|
||||
var districtVal = new Choices(districtField, {
|
||||
shouldSort: false,
|
||||
});
|
||||
|
||||
var addressContainer = form.querySelector("#address-container");
|
||||
var addressField = form.querySelector("#address-field");
|
||||
|
||||
var mapContainer = form.querySelector("#map-container");
|
||||
var latField = form.querySelector("#lat");
|
||||
var lngField = form.querySelector("#lng");
|
||||
|
||||
var btnContainer = form.querySelector("#add-footer");
|
||||
|
||||
function getRegencies(provinceId) {
|
||||
regencyContainer.style.display = "none";
|
||||
// regencyEditContainer.style.display = "none";
|
||||
districtContainer.style.display = "none";
|
||||
// districtEditContainer.style.display = "none";
|
||||
addressContainer.style.display = "none";
|
||||
// addressEditContainer.style.display = "none";
|
||||
loading.style.display = "block";
|
||||
// loadingEdit.style.display = "block";
|
||||
mapContainer.style.display = "none";
|
||||
// mapEditConatiner.style.display = "none";
|
||||
|
||||
const url = "/location/get-regency/" + provinceId;
|
||||
$.ajax({
|
||||
url: url,
|
||||
type: "GET",
|
||||
success: function (response) {
|
||||
if (response.success) {
|
||||
loading.style.display = "none";
|
||||
// loadingEdit.style.display = "none";
|
||||
const data = response.data;
|
||||
|
||||
regencyVal.clearStore();
|
||||
regencyVal.clearChoices();
|
||||
|
||||
// regencyEditVal.clearStore();
|
||||
// regencyEditVal.clearChoices();
|
||||
|
||||
regencyVal.value = "";
|
||||
regencyVal.setChoices([
|
||||
{
|
||||
value: "",
|
||||
label: "Pilih Kabupaten",
|
||||
selected: true,
|
||||
disabled: true,
|
||||
},
|
||||
]);
|
||||
|
||||
// regencyEditVal.value = "";
|
||||
// regencyEditVal.setChoices([
|
||||
// {
|
||||
// value: "",
|
||||
// label: "Pilih Kabupaten",
|
||||
// selected: true,
|
||||
// disabled: true,
|
||||
// },
|
||||
// ]);
|
||||
|
||||
if (Array.isArray(data)) {
|
||||
regencyVal.setChoices(
|
||||
data.map((regency) => ({
|
||||
value: regency.id,
|
||||
label: regency.name,
|
||||
selected: false,
|
||||
disabled: false,
|
||||
}))
|
||||
);
|
||||
|
||||
// regencyEditVal.setChoices(
|
||||
// data.map((regency) => ({
|
||||
// value: regency.id,
|
||||
// label: regency.name,
|
||||
// selected: false,
|
||||
// disabled: false,
|
||||
// }))
|
||||
// );
|
||||
regencyContainer.style.display = "block";
|
||||
// regencyEditContainer.style.display = "block";
|
||||
} else {
|
||||
mapContainer.style.display = "block";
|
||||
mapContainer.innerHTML =
|
||||
"<p class='text-center text-muted'>Terjadi kesalaahan saat mengambil data, silahkan coba beberapa saat lagi</p>";
|
||||
|
||||
// mapEditConatiner.style.display = "block";
|
||||
// mapEditConatiner.innerHTML =
|
||||
// "<p class='text-center text-muted'>Terjadi kesalaahan saat mengambil data, silahkan coba beberapa saat lagi</p>";
|
||||
}
|
||||
}
|
||||
},
|
||||
error: function (xhr, status, error) {
|
||||
mapContainer.style.display = "block";
|
||||
mapContainer.innerHTML =
|
||||
"<p class='text-center text-muted'>Terjadi kesalaahan saat mengambil data, silahkan coba beberapa saat lagi</p>";
|
||||
|
||||
// mapEditConatiner.style.display = "block";
|
||||
// mapEditConatiner.innerHTML =
|
||||
// "<p class='text-center text-muted'>Terjadi kesalaahan saat mengambil data, silahkan coba beberapa saat lagi</p>";
|
||||
},
|
||||
});
|
||||
}
|
||||
|
||||
function getDistricts(regencyId) {
|
||||
districtContainer.style.display = "none";
|
||||
addressContainer.style.display = "none";
|
||||
loading.style.display = "block";
|
||||
mapContainer.style.display = "none";
|
||||
|
||||
const url = "/location/get-district/" + regencyId;
|
||||
$.ajax({
|
||||
url: url,
|
||||
type: "GET",
|
||||
success: function (response) {
|
||||
if (response.success) {
|
||||
loading.style.display = "none";
|
||||
const data = response.data;
|
||||
|
||||
districtVal.clearStore();
|
||||
districtVal.clearChoices();
|
||||
|
||||
districtVal.value = "";
|
||||
districtVal.setChoices([
|
||||
{
|
||||
value: "",
|
||||
label: "Pilih Kecamatan",
|
||||
selected: true,
|
||||
disabled: true,
|
||||
},
|
||||
]);
|
||||
|
||||
if (Array.isArray(data)) {
|
||||
districtVal.setChoices(
|
||||
data.map((district) => ({
|
||||
value: district.id,
|
||||
label: district.name,
|
||||
selected: false,
|
||||
disabled: false,
|
||||
}))
|
||||
);
|
||||
|
||||
districtContainer.style.display = "block";
|
||||
} else {
|
||||
mapContainer.style.display = "block";
|
||||
mapContainer.innerHTML =
|
||||
"<p class='text-center text-muted'>Terjadi kesalaahan saat mengambil data, silahkan coba beberapa saat lagi</p>";
|
||||
}
|
||||
}
|
||||
},
|
||||
error: function (xhr, status, error) {
|
||||
mapContainer.style.display = "block";
|
||||
mapContainer.innerHTML =
|
||||
"<p class='text-center text-muted'>Terjadi kesalaahan saat mengambil data, silahkan coba beberapa saat lagi</p>";
|
||||
},
|
||||
});
|
||||
}
|
||||
|
||||
function showmap(districtId) {
|
||||
loading.style.display = "block";
|
||||
if (!navigator.geolocation) {
|
||||
alert("Geolocation tidak didukung oleh browser ini.");
|
||||
return;
|
||||
}
|
||||
|
||||
navigator.geolocation.getCurrentPosition(
|
||||
function (position) {
|
||||
loading.style.display = "none";
|
||||
|
||||
mapContainer.style.display = "block";
|
||||
map.invalidateSize();
|
||||
|
||||
addressContainer.style.display = "block";
|
||||
|
||||
btnContainer.style.display = "block";
|
||||
|
||||
var lat = position.coords.latitude;
|
||||
var lng = position.coords.longitude;
|
||||
|
||||
map.setView([lat, lng], 16);
|
||||
|
||||
if (currentMarker) {
|
||||
map.removeLayer(currentMarker);
|
||||
}
|
||||
if (currentMarker || currentMarkerEdit) {
|
||||
map.removeLayer(currentMarker);
|
||||
}
|
||||
|
||||
var iconMarker = L.icon({
|
||||
iconUrl: "/assets/images/marker.png",
|
||||
iconSize: [50, 50],
|
||||
iconAnchor: [25, 50],
|
||||
popupAnchor: [0, -50],
|
||||
});
|
||||
|
||||
currentMarker = L.marker([lat, lng], {
|
||||
icon: iconMarker,
|
||||
draggable: true,
|
||||
}).addTo(map);
|
||||
|
||||
currentMarker.on("dragend", onPointerDragend);
|
||||
|
||||
currentMarker
|
||||
.bindPopup(
|
||||
`<div class="text-center"><b>Anda berada di sini</b><br />Silahkan priksa lokasi petamu sudah benar.</div>`
|
||||
)
|
||||
.openPopup();
|
||||
|
||||
latField.value = lat;
|
||||
lngField.value = lng;
|
||||
},
|
||||
function (error) {
|
||||
alert("Error: " + error.message);
|
||||
}
|
||||
);
|
||||
}
|
||||
|
||||
function onMapClick(e) {
|
||||
var lat = e.latlng.lat;
|
||||
var lng = e.latlng.lng;
|
||||
|
||||
if (!currentMarker) {
|
||||
currentMarker = L.marker(e.latlng).addTo(map);
|
||||
} else {
|
||||
currentMarker.setLatLng(e.latlng);
|
||||
}
|
||||
|
||||
currentMarker.on("dragend", onPointerDragend);
|
||||
|
||||
currentMarker
|
||||
.bindPopup(
|
||||
`<div class="text-center"><b>Anda berada di sini</b><br />Silahkan priksa lokasi petamu sudah benar.</div>`
|
||||
)
|
||||
.openPopup();
|
||||
|
||||
latField.value = lat;
|
||||
lngField.value = lng;
|
||||
}
|
||||
|
||||
function onPointerDragend() {
|
||||
if (!currentMarker) return;
|
||||
var coordinates = currentMarker.getLatLng();
|
||||
|
||||
currentMarker
|
||||
.setLatLng(coordinates)
|
||||
.bindPopup(
|
||||
`<div class="text-center"><b>Anda berada di sini</b><br />Silahkan priksa lokasi petamu sudah benar.</div>`
|
||||
)
|
||||
.openPopup();
|
||||
|
||||
latField.value = coordinates.lat;
|
||||
lngField.value = coordinates.lng;
|
||||
}
|
|
@ -1 +1,12 @@
|
|||
(document.querySelectorAll("[toast-list]")||document.querySelectorAll("[data-choices]")||document.querySelectorAll("[data-provider]"))&&(document.writeln("<script type='text/javascript' src='https://cdn.jsdelivr.net/npm/toastify-js'><\/script>"),document.writeln("<script type='text/javascript' src='assets/libs/choices.js/public/assets/scripts/choices.min.js'><\/script>"),document.writeln("<script type='text/javascript' src='assets/libs/flatpickr/flatpickr.min.js'><\/script>"));
|
||||
(document.querySelectorAll("[toast-list]") ||
|
||||
document.querySelectorAll("[data-choices]") ||
|
||||
document.querySelectorAll("[data-provider]")) &&
|
||||
(document.writeln(
|
||||
"<script type='text/javascript' src='https://cdn.jsdelivr.net/npm/toastify-js'></script>"
|
||||
),
|
||||
document.writeln(
|
||||
"<script type='text/javascript' src='/assets/libs/choices.js/public/assets/scripts/choices.min.js'></script>"
|
||||
),
|
||||
document.writeln(
|
||||
"<script type='text/javascript' src='/assets/libs/flatpickr/flatpickr.min.js'></script>"
|
||||
));
|
||||
|
|
|
@ -9,18 +9,18 @@
|
|||
<meta content="Premium Multipurpose Admin & Dashboard Template" name="description" />
|
||||
<meta content="Themesbrand" name="author" />
|
||||
<!-- App favicon -->
|
||||
<link rel="shortcut icon" href="assets/images/favicon.ico">
|
||||
<link rel="shortcut icon" href="{{ asset('assets/images/favicon.ico') }}">
|
||||
|
||||
<!-- Layout config Js -->
|
||||
<script src="assets/js/layout.js"></script>
|
||||
<script src="{{ asset('assets/js/layout.js') }}"></script>
|
||||
<!-- Bootstrap Css -->
|
||||
<link href="assets/css/bootstrap.min.css" rel="stylesheet" type="text/css" />
|
||||
<link href="{{ asset('assets/css/bootstrap.min.css') }}" rel="stylesheet" type="text/css" />
|
||||
<!-- Icons Css -->
|
||||
<link href="assets/css/icons.min.css" rel="stylesheet" type="text/css" />
|
||||
<link href="{{ asset('assets/css/icons.min.css') }}" rel="stylesheet" type="text/css" />
|
||||
<!-- App Css-->
|
||||
<link href="assets/css/app.min.css" rel="stylesheet" type="text/css" />
|
||||
<link href="{{ asset('assets/css/app.min.css') }}" rel="stylesheet" type="text/css" />
|
||||
<!-- custom Css-->
|
||||
<link href="assets/css/custom.min.css" rel="stylesheet" type="text/css" />
|
||||
<link href="{{ asset('assets/css/custom.min.css') }}" rel="stylesheet" type="text/css" />
|
||||
@stack('other-css')
|
||||
|
||||
</head>
|
||||
|
@ -594,18 +594,18 @@ class="form-check-input">
|
|||
@include('sweetalert::alert')
|
||||
|
||||
<!-- JAVASCRIPT -->
|
||||
<script src="assets/libs/bootstrap/js/bootstrap.bundle.min.js"></script>
|
||||
<script src="assets/libs/simplebar/simplebar.min.js"></script>
|
||||
<script src="assets/libs/node-waves/waves.min.js"></script>
|
||||
<script src="assets/libs/feather-icons/feather.min.js"></script>
|
||||
<script src="assets/js/pages/plugins/lord-icon-2.1.0.js"></script>
|
||||
<script src="assets/js/plugins.js"></script>
|
||||
<script src="{{ asset('assets/libs/bootstrap/js/bootstrap.bundle.min.js') }}"></script>
|
||||
<script src="{{ asset('assets/libs/simplebar/simplebar.min.js') }}"></script>
|
||||
<script src="{{ asset('assets/libs/node-waves/waves.min.js') }}"></script>
|
||||
<script src="{{ asset('assets/libs/feather-icons/feather.min.js') }}"></script>
|
||||
<script src="{{ asset('assets/js/pages/plugins/lord-icon-2.1.0.js') }}"></script>
|
||||
<script src="{{ asset('assets/js/plugins.js') }}"></script>
|
||||
|
||||
@stack('other-js')
|
||||
|
||||
<!-- App js -->
|
||||
<script src="assets/js/customApp.js"></script>
|
||||
<script src="assets/libs/jquery/jquery.min.js"></script>
|
||||
<script src="{{ asset('assets/js/app.js') }}"></script>
|
||||
<script src="{{ asset('assets/libs/jquery/jquery.min.js') }}"></script>
|
||||
</body>
|
||||
|
||||
</html>
|
||||
|
|
|
@ -0,0 +1,164 @@
|
|||
@extends('layouts.app')
|
||||
@push('title', 'Tambah Data Lahan')
|
||||
@section('content')
|
||||
@push('other-css')
|
||||
<link rel="stylesheet" href="https://unpkg.com/leaflet@1.9.4/dist/leaflet.css"
|
||||
integrity="sha256-p4NxAoJBhIIN+hmNHrzRCf9tD/miZyoHS5obTRR9BMY=" crossorigin="" />
|
||||
|
||||
<!-- Leaflet Draw CSS -->
|
||||
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/leaflet.draw/1.0.4/leaflet.draw.css" />
|
||||
|
||||
<style>
|
||||
#map {
|
||||
height: 400px;
|
||||
width: 100%;
|
||||
z-index: 0;
|
||||
}
|
||||
</style>
|
||||
@endpush
|
||||
<div class="page-content">
|
||||
<div class="container-fluid">
|
||||
<!-- start page title -->
|
||||
<div class="row">
|
||||
<div class="col-12">
|
||||
<div class="page-title-box d-sm-flex align-items-center justify-content-between">
|
||||
<h4 class="mb-sm-0">Tambah Data Lahan</h4>
|
||||
|
||||
<div class="page-title-right">
|
||||
<ol class="breadcrumb m-0">
|
||||
<li class="breadcrumb-item"><a href="javascript: void(0);">Master Data</a></li>
|
||||
<li class="breadcrumb-item active">Tambah Data Lahan</li>
|
||||
</ol>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!-- end page title -->
|
||||
|
||||
<div class="row">
|
||||
<div class="col-lg-12">
|
||||
<div class="card">
|
||||
<div class="card-header">
|
||||
<h4 class="card-title mb-0">Tambah Data Lahan</h4>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<form id="add-form" class="needs-validation" method="POST" novalidate
|
||||
action="{{ Auth::user()->role == 'admin' ? route('master_data.lahan.store') : route('lahan.store') }}">
|
||||
@csrf
|
||||
<div class="modal-body">
|
||||
|
||||
<div class="mb-3" id="modal-id" style="display: none;">
|
||||
<label for="id-field" class="form-label">ID</label>
|
||||
<input type="text" id="id-field" class="form-control" placeholder="ID"
|
||||
readonly />
|
||||
</div>
|
||||
|
||||
<div class="mb-3">
|
||||
<label for="owner-field" class="form-label">Pemilik Lahan</label>
|
||||
<input type="text" id="owner-field" class="form-control" name="owner"
|
||||
value="{{ old('owner') }}" placeholder="Masukan Nama Pemilik Lahan" required />
|
||||
<div class="invalid-feedback">
|
||||
Masukan Nama Pemilik Lahan
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{{-- <div class="mb-3">
|
||||
<label for="landname-field" class="form-label">Nama Lahan</label>
|
||||
<input type="text" id="landname-field" class="form-control" name="land_name"
|
||||
value="{{ old('land_name') }}" placeholder="Masukan Nama Lahan" required />
|
||||
<div class="invalid-feedback">
|
||||
Masukan Nama Lahan
|
||||
</div>
|
||||
</div> --}}
|
||||
|
||||
<div class="mb-3">
|
||||
<label for="province-field" class="form-label">Provinsi</label>
|
||||
<select name="province_id" id="province-field" class="form-control" required
|
||||
onchange="getRegencies(this.value)">
|
||||
<option value="" selected disabled>Pilih Provinsi</option>
|
||||
@foreach ($provinces as $province)
|
||||
<option value="{{ $province->id }}"
|
||||
{{ old('province_id') == $province->id ? 'selected' : '' }}>
|
||||
{{ $province->name }}</option>
|
||||
@endforeach
|
||||
</select>
|
||||
<div class="invalid-feedback">
|
||||
Harap Pilih Provinsi
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="mb-3" id="regency-container" style="display: none">
|
||||
<label for="regency-field" class="form-label">Kabupaten atau Kota</label>
|
||||
<select name="regency_id" id="regency-field" class="form-control" required
|
||||
onchange="getDistricts(this.value)">
|
||||
<option value="" selected disabled>Pilih Kabupaten atau Kota</option>
|
||||
</select>
|
||||
<div class="invalid-feedback">
|
||||
Harap Pilih Kabupaten atau Kota
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="mb-3" id="district-container" style="display: none">
|
||||
<label for="district-field" class="form-label">Kecamatan</label>
|
||||
<select name="district_id" id="district-field" class="form-control" required
|
||||
onchange="showmap(this.value)">
|
||||
<option value="" selected disabled>Pilih Kecamatan</option>
|
||||
</select>
|
||||
<div class="invalid-feedback">
|
||||
Harap Pilih Kecamatan
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="loading" class="text-center" style="display: none">
|
||||
<div class="spinner-border text-primary" role="status">
|
||||
<span class="visually-hidden">Loading...</span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="mb-3" id="address-container" style="display: none">
|
||||
<label for="address-field" class="form-label">Alamat</label>
|
||||
<textarea name="address" id="address-field" rows="3" class="form-control"
|
||||
placeholder="Masukan Alamat, cnth: Jl. Jend. Sudirman No. 12" required></textarea>
|
||||
<div class="invalid-feedback">
|
||||
Masukan Alamat
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id="map-container" style="display: none">
|
||||
<label for="map" class="form-label">Lokasi</label>
|
||||
<div id="map"></div>
|
||||
|
||||
<div class="mt-3">
|
||||
<input type="hidden" name="lat" id="lat" class="form-control"
|
||||
readonly>
|
||||
<input type="hidden" name="lng" id="lng" class="form-control"
|
||||
readonly>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="modal-footer" id="add-footer" style="display: none">
|
||||
<div class="hstack gap-2 justify-content-end">
|
||||
<button type="button" class="btn btn-light"
|
||||
data-bs-dismiss="modal">Tutup</button>
|
||||
<button type="submit" class="btn btn-success" id="add-btn">Simpan</button>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@push('other-js')
|
||||
<script src="{{ asset('assets/js/pages/customJs/master-data/lahan/create.js') }}"></script>
|
||||
|
||||
<!-- Make sure you put this AFTER Leaflet's CSS -->
|
||||
<script src="https://unpkg.com/leaflet@1.9.4/dist/leaflet.js"
|
||||
integrity="sha256-20nQCchB9co0qIjJZRGuk2/Z9VM+kNiyxNV1lvTlZBo=" crossorigin=""></script>
|
||||
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/leaflet.draw/1.0.4/leaflet.draw.js"></script>
|
||||
@endpush
|
||||
@endsection
|
|
@ -52,9 +52,10 @@
|
|||
<div class="row g-4 mb-3">
|
||||
<div class="col-sm-auto">
|
||||
<div>
|
||||
<button type="button" class="btn btn-success add-btn" data-bs-toggle="modal"
|
||||
id="create-btn" data-bs-target="#showModal"><i
|
||||
class="ri-add-line align-bottom me-1"></i> Tambah</button>
|
||||
<a href="{{ route('master_data.lahan.create') }}"
|
||||
class="btn btn-success add-btn" id="create-btn"><i
|
||||
class="ri-add-line align-bottom me-1"></i>
|
||||
Tambah</a>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-sm">
|
||||
|
|
|
@ -6,19 +6,19 @@
|
|||
<div class="navbar-brand-box horizontal-logo">
|
||||
<a href="index.html" class="logo logo-dark">
|
||||
<span class="logo-sm">
|
||||
<img src="assets/images/logo-sm.png" alt="" height="22">
|
||||
<img src="{{ asset('assets/images/logo-sm.png') }}" alt="" height="22">
|
||||
</span>
|
||||
<span class="logo-lg">
|
||||
<img src="assets/images/logo-dark.png" alt="" height="17">
|
||||
<img src="{{ asset('assets/images/logo-dark.png') }}" alt="" height="17">
|
||||
</span>
|
||||
</a>
|
||||
|
||||
<a href="index.html" class="logo logo-light">
|
||||
<span class="logo-sm">
|
||||
<img src="assets/images/logo-sm.png" alt="" height="22">
|
||||
<img src="{{ asset('assets/images/logo-sm.png') }}" alt="" height="22">
|
||||
</span>
|
||||
<span class="logo-lg">
|
||||
<img src="assets/images/logo-light.png" alt="" height="17">
|
||||
<img src="{{ asset('assets/images/logo-light.png') }}" alt="" height="17">
|
||||
</span>
|
||||
</a>
|
||||
</div>
|
||||
|
@ -86,7 +86,7 @@
|
|||
<!-- item -->
|
||||
<a href="javascript:void(0);" class="dropdown-item notify-item py-2">
|
||||
<div class="d-flex">
|
||||
<img src="assets/images/users/avatar-2.jpg"
|
||||
<img src="{{ asset('assets/images/users/avatar-2.jpg') }}"
|
||||
class="me-3 rounded-circle avatar-xs" alt="user-pic">
|
||||
<div class="flex-1">
|
||||
<h6 class="m-0">Angela Bernier</h6>
|
||||
|
@ -97,7 +97,7 @@ class="me-3 rounded-circle avatar-xs" alt="user-pic">
|
|||
<!-- item -->
|
||||
<a href="javascript:void(0);" class="dropdown-item notify-item py-2">
|
||||
<div class="d-flex">
|
||||
<img src="assets/images/users/avatar-3.jpg"
|
||||
<img src="{{ asset('assets/images/users/avatar-3.jpg') }}"
|
||||
class="me-3 rounded-circle avatar-xs" alt="user-pic">
|
||||
<div class="flex-1">
|
||||
<h6 class="m-0">David Grasso</h6>
|
||||
|
@ -108,7 +108,7 @@ class="me-3 rounded-circle avatar-xs" alt="user-pic">
|
|||
<!-- item -->
|
||||
<a href="javascript:void(0);" class="dropdown-item notify-item py-2">
|
||||
<div class="d-flex">
|
||||
<img src="assets/images/users/avatar-5.jpg"
|
||||
<img src="{{ asset('assets/images/users/avatar-5.jpg') }}"
|
||||
class="me-3 rounded-circle avatar-xs" alt="user-pic">
|
||||
<div class="flex-1">
|
||||
<h6 class="m-0">Mike Bunch</h6>
|
||||
|
|
|
@ -4,19 +4,19 @@
|
|||
<!-- Dark Logo-->
|
||||
<a href="index.html" class="logo logo-dark">
|
||||
<span class="logo-sm">
|
||||
<img src="assets/images/logo-sm.png" alt="" height="22">
|
||||
<img src="{{ asset('assets/images/logo-sm.png') }}" alt="" height="22">
|
||||
</span>
|
||||
<span class="logo-lg">
|
||||
<img src="assets/images/logo-dark.png" alt="" height="17">
|
||||
<img src="{{ asset('assets/images/logo-dark.png') }}" alt="" height="17">
|
||||
</span>
|
||||
</a>
|
||||
<!-- Light Logo-->
|
||||
<a href="index.html" class="logo logo-light">
|
||||
<span class="logo-sm">
|
||||
<img src="assets/images/logo-sm.png" alt="" height="22">
|
||||
<img src="{{ asset('assets/images/logo-sm.png') }}" alt="" height="22">
|
||||
</span>
|
||||
<span class="logo-lg">
|
||||
<img src="assets/images/logo-light.png" alt="" height="17">
|
||||
<img src="{{ asset('assets/images/logo-light.png') }}" alt="" height="17">
|
||||
</span>
|
||||
</a>
|
||||
<button type="button" class="btn btn-sm p-0 fs-20 header-item float-end btn-vertical-sm-hover"
|
||||
|
|
|
@ -87,6 +87,7 @@
|
|||
|
||||
Route::prefix('data-lahan')->controller(LandController::class)->name('lahan.')->group(function () {
|
||||
Route::get('/', 'index')->name('index');
|
||||
Route::get('/tambah', 'create')->name('create');
|
||||
Route::post('/', 'store')->name('store');
|
||||
Route::put('/{id}', 'update')->name('update');
|
||||
Route::delete('/{id}', 'destroy')->name('destroy');
|
||||
|
|
Loading…
Reference in New Issue