|
|
|
@ -9,7 +9,7 @@ let drawnItems = new L.FeatureGroup().addTo(map);
|
|
|
|
|
let inter = 5; |
|
|
|
|
|
|
|
|
|
let circLat = "", |
|
|
|
|
circLong = ""; |
|
|
|
|
circLong = ""; |
|
|
|
|
|
|
|
|
|
L.tileLayer('https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', { |
|
|
|
|
attribution: '© <a href="https://www.openstreetmap.org/copyright">OpenStreetMap</a> contributors' |
|
|
|
@ -18,16 +18,16 @@ L.tileLayer('https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', {
|
|
|
|
|
var drawControl = new L.Control.Draw({ |
|
|
|
|
draw: { |
|
|
|
|
circlemarker: false, |
|
|
|
|
circle:false, |
|
|
|
|
circle: false, |
|
|
|
|
polyline: false |
|
|
|
|
}, |
|
|
|
|
}); |
|
|
|
|
|
|
|
|
|
var drawnControlEdit = new L.Control.Draw({ |
|
|
|
|
draw: false, |
|
|
|
|
edit:{ |
|
|
|
|
featureGroup:drawnItems, |
|
|
|
|
delete:true |
|
|
|
|
edit: { |
|
|
|
|
featureGroup: drawnItems, |
|
|
|
|
delete: true |
|
|
|
|
} |
|
|
|
|
}); |
|
|
|
|
|
|
|
|
@ -43,6 +43,9 @@ function updateCurrentGeoJson() {
|
|
|
|
|
let shapes = []; |
|
|
|
|
drawnItems.eachLayer(function (layer) { |
|
|
|
|
let geojson = layer.toGeoJSON(); |
|
|
|
|
if (layer instanceof L.Circle) { |
|
|
|
|
geojson.properties.radius = layer.getRadius(); |
|
|
|
|
} |
|
|
|
|
shapes.push(geojson); |
|
|
|
|
}); |
|
|
|
|
currentGeoJson = { |
|
|
|
@ -50,18 +53,17 @@ function updateCurrentGeoJson() {
|
|
|
|
|
features: shapes |
|
|
|
|
}; |
|
|
|
|
} |
|
|
|
|
function openActivityMap(id) |
|
|
|
|
{ |
|
|
|
|
function openActivityMap(id) { |
|
|
|
|
currentIdAct = id; |
|
|
|
|
map.invalidateSize(); |
|
|
|
|
$.ajax({ |
|
|
|
|
url: `${base_url}task/edit/${id}`, |
|
|
|
|
type:"get", |
|
|
|
|
type: "get", |
|
|
|
|
success: function (data) { |
|
|
|
|
let dataRes = data.data |
|
|
|
|
// console.log("cek data", data);
|
|
|
|
|
drawnItems.clearLayers(); |
|
|
|
|
if(dataRes.geom){ |
|
|
|
|
if (dataRes.geom) { |
|
|
|
|
let datageojson = JSON.parse(dataRes.geom); |
|
|
|
|
currentGeoJson = datageojson |
|
|
|
|
// console.log("cek data geojson", datageojson);
|
|
|
|
@ -70,19 +72,27 @@ function openActivityMap(id)
|
|
|
|
|
let lGeoJson = L.geoJSON(feature); |
|
|
|
|
let layers = lGeoJson.getLayers(); |
|
|
|
|
layers.forEach(layer => { |
|
|
|
|
let radius = layer.feature.properties.radius; |
|
|
|
|
if (radius) { |
|
|
|
|
let latlon = layer.getLatLng(); |
|
|
|
|
let circle = L.circle([latlon.lat, latlon.lng], { radius: radius }); |
|
|
|
|
addDrawnLayer(circle); |
|
|
|
|
} |
|
|
|
|
else { |
|
|
|
|
addDrawnLayer(layer) |
|
|
|
|
} |
|
|
|
|
}); |
|
|
|
|
}); |
|
|
|
|
} else { |
|
|
|
|
if(datageojson.properties.radius){ |
|
|
|
|
if (datageojson.properties.radius) { |
|
|
|
|
let radius = datageojson.properties.radius |
|
|
|
|
let lGeoJson = L.geoJson(datageojson); |
|
|
|
|
let layers = lGeoJson.getLayers(); |
|
|
|
|
let latlon = layers[0].getLatLng(); |
|
|
|
|
let newCircle = L.circle([latlon.lat,latlon.lng], {radius: radius}); |
|
|
|
|
let newCircle = L.circle([latlon.lat, latlon.lng], { radius: radius }); |
|
|
|
|
addDrawnLayer(newCircle) |
|
|
|
|
// console.log("cek layers", layers[0]);
|
|
|
|
|
}else{ |
|
|
|
|
} else { |
|
|
|
|
let lGeoJson = L.geoJson(datageojson); |
|
|
|
|
let layers = lGeoJson.getLayers(); |
|
|
|
|
addDrawnLayer(layers[0]) |
|
|
|
@ -90,7 +100,7 @@ function openActivityMap(id)
|
|
|
|
|
} |
|
|
|
|
actionLocationAc = "edit"; |
|
|
|
|
map.addControl(drawnControlEdit); |
|
|
|
|
}else{ |
|
|
|
|
} else { |
|
|
|
|
currentGeoJson = ""; |
|
|
|
|
actionLocationAc = "add"; |
|
|
|
|
drawnControlEdit.remove(); |
|
|
|
@ -105,7 +115,7 @@ function openActivityMap(id)
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
$('#modal_activity_location').on('hide.bs.modal', function (event) { |
|
|
|
|
currentGeoJson ="" |
|
|
|
|
currentGeoJson = "" |
|
|
|
|
currentIdAct = 0; |
|
|
|
|
actionLocationAc = "add"; |
|
|
|
|
drawnControlEdit.remove(); |
|
|
|
@ -116,7 +126,7 @@ $('#modal_activity_location').on('hide.bs.modal', function (event) {
|
|
|
|
|
// map initialization
|
|
|
|
|
$(document).ready(function () { |
|
|
|
|
let intervalMap = setInterval(function () { |
|
|
|
|
if(inter=0){ |
|
|
|
|
if (inter = 0) { |
|
|
|
|
clearInterval(intervalMap) |
|
|
|
|
} |
|
|
|
|
map.invalidateSize(); |
|
|
|
@ -168,7 +178,7 @@ $(document).ready(function () {
|
|
|
|
|
let layers = e.layers.getLayers(); |
|
|
|
|
layers.forEach(layer => { |
|
|
|
|
let geoJson = layer.toGeoJSON(); |
|
|
|
|
if(layer instanceof L.Circle){ |
|
|
|
|
if (layer instanceof L.Circle) { |
|
|
|
|
geoJson.properties.radius = layer.getRadius(); |
|
|
|
|
} |
|
|
|
|
updateCurrentGeoJson(); |
|
|
|
@ -181,21 +191,21 @@ $(document).ready(function () {
|
|
|
|
|
// map.addLayer(layer);
|
|
|
|
|
}); |
|
|
|
|
|
|
|
|
|
$("#modal_activity_location").on("click", "#btn_save_location", function() { |
|
|
|
|
if(currentGeoJson==""){ |
|
|
|
|
$("#modal_activity_location").on("click", "#btn_save_location", function () { |
|
|
|
|
if (currentGeoJson == "") { |
|
|
|
|
gantt.confirm({ |
|
|
|
|
text: "Lokasi belum ditentukan!, lanjutkan?", |
|
|
|
|
ok:"Submit",
|
|
|
|
|
cancel:"Cancel", |
|
|
|
|
callback: function(result){ |
|
|
|
|
if(!result){ |
|
|
|
|
ok: "Submit", |
|
|
|
|
cancel: "Cancel", |
|
|
|
|
callback: function (result) { |
|
|
|
|
if (!result) { |
|
|
|
|
return false |
|
|
|
|
}else{ |
|
|
|
|
} else { |
|
|
|
|
submitShapes(); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
}); |
|
|
|
|
}else{ |
|
|
|
|
} else { |
|
|
|
|
submitShapes(); |
|
|
|
|
} |
|
|
|
|
}); |
|
|
|
@ -203,11 +213,11 @@ $(document).ready(function () {
|
|
|
|
|
function submitShapes() { |
|
|
|
|
let payload |
|
|
|
|
|
|
|
|
|
if(currentGeoJson && currentGeoJson!=""){ |
|
|
|
|
if (currentGeoJson && currentGeoJson != "") { |
|
|
|
|
payload = { |
|
|
|
|
geom: JSON.stringify(currentGeoJson), |
|
|
|
|
} |
|
|
|
|
}else{ |
|
|
|
|
} else { |
|
|
|
|
payload = { |
|
|
|
|
geom: null, |
|
|
|
|
} |
|
|
|
@ -221,28 +231,27 @@ $(document).ready(function () {
|
|
|
|
|
contentType: false, |
|
|
|
|
success: function (data) { |
|
|
|
|
$("#modal_activity_location").modal("hide"); |
|
|
|
|
currentGeoJson ="" |
|
|
|
|
currentGeoJson = "" |
|
|
|
|
currentIdAct = 0; |
|
|
|
|
gantt.alert("Activity Location successfully updated!"); |
|
|
|
|
}, |
|
|
|
|
error: function (data) { |
|
|
|
|
$("#modal_activity_location").modal("hide"); |
|
|
|
|
currentGeoJson ="" |
|
|
|
|
currentGeoJson = "" |
|
|
|
|
currentIdAct = 0; |
|
|
|
|
gantt.alert("Activity Location failed updated!, try again later!"); |
|
|
|
|
} |
|
|
|
|
}); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
function submitLocation() |
|
|
|
|
{ |
|
|
|
|
function submitLocation() { |
|
|
|
|
let payload |
|
|
|
|
|
|
|
|
|
if(currentGeoJson && currentGeoJson!=""){ |
|
|
|
|
if (currentGeoJson && currentGeoJson != "") { |
|
|
|
|
payload = { |
|
|
|
|
geom: JSON.stringify(currentGeoJson), |
|
|
|
|
} |
|
|
|
|
}else{ |
|
|
|
|
} else { |
|
|
|
|
payload = { |
|
|
|
|
geom: null, |
|
|
|
|
} |
|
|
|
@ -256,37 +265,36 @@ $(document).ready(function () {
|
|
|
|
|
contentType: false, |
|
|
|
|
success: function (data) { |
|
|
|
|
$("#modal_activity_location").modal("hide"); |
|
|
|
|
currentGeoJson ="" |
|
|
|
|
currentGeoJson = "" |
|
|
|
|
currentIdAct = 0; |
|
|
|
|
gantt.alert("Activity Location successfully updated!"); |
|
|
|
|
}, |
|
|
|
|
error: function (data) { |
|
|
|
|
$("#modal_activity_location").modal("hide"); |
|
|
|
|
currentGeoJson ="" |
|
|
|
|
currentGeoJson = "" |
|
|
|
|
currentIdAct = 0; |
|
|
|
|
gantt.alert("Activity Location failed updated!, try again later!"); |
|
|
|
|
} |
|
|
|
|
}); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
$("#modal_radius").on("click", "#btn_save_radius", function() { |
|
|
|
|
$("#modal_radius").on("click", "#btn_save_radius", function () { |
|
|
|
|
let radius = $("#buffer_radius").val(); |
|
|
|
|
if(radius <= 0){ |
|
|
|
|
if (radius <= 0) { |
|
|
|
|
gantt.alert("radius buffer tidak boleh kurang dari atau sama dengan 0!!"); |
|
|
|
|
}else{ |
|
|
|
|
} else { |
|
|
|
|
submitCircle(radius); |
|
|
|
|
} |
|
|
|
|
}); |
|
|
|
|
}); |
|
|
|
|
|
|
|
|
|
function submitCircle(radius) |
|
|
|
|
{ |
|
|
|
|
let circle = L.circle([circLat,circLong], {radius: radius}); |
|
|
|
|
function submitCircle(radius) { |
|
|
|
|
let circle = L.circle([circLat, circLong], { radius: radius }); |
|
|
|
|
let geojsoncircle = circle.toGeoJSON(); |
|
|
|
|
geojsoncircle.properties.radius = radius |
|
|
|
|
currentGeoJson = geojsoncircle |
|
|
|
|
// console.log("geojsoncircle", geojsoncircle);
|
|
|
|
|
addDrawnLayer(circle); |
|
|
|
|
updateCurrentGeoJson(); |
|
|
|
|
map.addControl(drawnControlEdit); |
|
|
|
|
|
|
|
|
|
$("#modal_radius").modal('hide'); |
|
|
|
|