Pārlūkot izejas kodu

Se agrega layerId y vectores del layer para cargar la vista.

Maximiliano Schvindt 8 gadi atpakaļ
vecāks
revīzija
e5f41a77f1

+ 27 - 16
Controller/LeafletController.php

@@ -11,38 +11,49 @@ use Sonata\AdminBundle\Admin\Pool;
 class LeafletController extends Controller
 class LeafletController extends Controller
 {
 {
     
     
-    public function createVectorAction(Request $request)
+    public function createVectorAction($layerId = 1, Request $request)
     {
     {
 
 
+        $vectors = array();
+
+        $em = $this->get('doctrine')->getManager();
+        $layer = $em->getRepository("MapBundle\Entity\Layer")->findOneById($layerId);
+        if(!is_null($layer)) {
+            $vectors = $em->getRepository("MapBundle\Entity\Vector")->findByLayer($layer);
+        }
+
+        // print_r("<pre>");
+        // foreach($vectors as $k => $v) {
+        //     print_r($v->getData());
+        //     print_r("<br />");
+        //     print_r($v->getJsonDecodeData());
+        //     print_r("<br />");
+        //     print_r("<br />");
+
+        // }
+
+        // die;
+
         $adminPool = $this->get('sonata.admin.pool');
         $adminPool = $this->get('sonata.admin.pool');
-        $uid = time();
+        $url_post = "admin_map_vector_create_ajax";
 
 
         return $this->render('LeafletBundle:Leaflet:create_vector.html.twig', array(
         return $this->render('LeafletBundle:Leaflet:create_vector.html.twig', array(
             'base_template' => $adminPool->getTemplate('layout'),
             'base_template' => $adminPool->getTemplate('layout'),
             'admin_pool' => $adminPool,
             'admin_pool' => $adminPool,
             'admin' => $adminPool->getAdminByClass("MapBundle\Entity\Map"),
             'admin' => $adminPool->getAdminByClass("MapBundle\Entity\Map"),
-            'uid' => $uid
+            'uuid' => time(),
+            'url_post' => $url_post,
+            'vectors' => $vectors,
+            'layerId' => $layerId
             ));
             ));
 
 
 
 
     }
     }
-
+    
     public function saveVectorAction(Request $request)
     public function saveVectorAction(Request $request)
     {
     {
         print_r($request->request->all());
         print_r($request->request->all());
 
 
         die;
         die;
-
-        // $adminPool = $this->get('sonata.admin.pool');
-        // $uid = time();
-
-        // return $this->render('LeafletBundle:Leaflet:create_vector.html.twig', array(
-        //     'base_template' => $adminPool->getTemplate('layout'),
-        //     'admin_pool' => $adminPool,
-        //     'admin' => $adminPool->getAdminByClass("MapBundle\Entity\Map"),
-        //     'uid' => $uid
-        //     ));
-
-
     }
     }
 }
 }

+ 2 - 1
Resources/config/routing/admin.xml

@@ -4,8 +4,9 @@
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     xsi:schemaLocation="http://symfony.com/schema/routing http://symfony.com/schema/routing/routing-1.0.xsd">
     xsi:schemaLocation="http://symfony.com/schema/routing http://symfony.com/schema/routing/routing-1.0.xsd">
 
 
-    <route id="admin_leaflet_vector_create" path="/admin/leaflet/vector/create">
+    <route id="admin_leaflet_vector_create" path="/admin/leaflet/vector/create/{layerId}">
         <default key="_controller">LeafletBundle:Leaflet:createVector</default>
         <default key="_controller">LeafletBundle:Leaflet:createVector</default>
+        <default key="layerId">1</default>
     </route>
     </route>
     
     
     <route id="admin_leaflet_vector_save" path="/admin/leaflet/vector/save">
     <route id="admin_leaflet_vector_save" path="/admin/leaflet/vector/save">

+ 53 - 15
Resources/views/Leaflet/create_vector.html.twig

@@ -12,15 +12,12 @@
 {% include 'LeafletBundle:Leaflet:resources.html.twig' %}
 {% include 'LeafletBundle:Leaflet:resources.html.twig' %}
 
 
 <script type="text/javascript">
 <script type="text/javascript">
-    
     window.SONATA_CONFIG.USE_ICHECK = false;
     window.SONATA_CONFIG.USE_ICHECK = false;
-    
-    var elements = new Array();
-    var uid = {{uid}};
-    var layer_id = 1;
-    var element_id = 1;
 
 
-    $( document ).ready(function() {});
+    var uuid = {{uuid}};
+    var layerId = {{layerId}};
+    
+    //$( document ).ready(function() {});
 
 
     var osmUrl = 'http://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png',
     var osmUrl = 'http://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png',
             osmAttrib = '&copy; <a href="http://openstreetmap.org/copyright">OpenStreetMap</a> contributors',
             osmAttrib = '&copy; <a href="http://openstreetmap.org/copyright">OpenStreetMap</a> contributors',
@@ -34,6 +31,9 @@
         })
         })
     }, { 'drawlayer': drawnItems }, { position: 'topleft', collapsed: false }).addTo(map);
     }, { 'drawlayer': drawnItems }, { position: 'topleft', collapsed: false }).addTo(map);
     
     
+    addElements();
+
+
     map.addControl(new L.Control.Draw({
     map.addControl(new L.Control.Draw({
         edit: {
         edit: {
             featureGroup: drawnItems,
             featureGroup: drawnItems,
@@ -56,10 +56,12 @@
         layer.layerType = event.layerType;
         layer.layerType = event.layerType;
         drawnItems.addLayer(layer);
         drawnItems.addLayer(layer);
         
         
-        
         drawnItems.eachLayer(function(layer) {
         drawnItems.eachLayer(function(layer) {
-            layer._mi_id = uid + "_" + layer._leaflet_id;
-            
+            if (typeof layer._uuid !== 'undefined') {
+                // nada
+            } else {
+                layer._uuid = uuid + "_" + layer._leaflet_id;
+            }
         });
         });
         
         
     });
     });
@@ -68,7 +70,7 @@
 
 
         var layers = event.layers;
         var layers = event.layers;
         layers.eachLayer(function(layer) {
         layers.eachLayer(function(layer) {
-            console.log("DELETE: " + layer._mi_id + "=>" + layer._leaflet_id);
+            console.log("DELETE: " + layer._uuid + "=>" + layer._leaflet_id);
         });
         });
 
 
        
        
@@ -76,6 +78,7 @@
 
 
 function saveData()  {
 function saveData()  {
     var vectorData = new Array();
     var vectorData = new Array();
+
     drawnItems.eachLayer(function(layer) {
     drawnItems.eachLayer(function(layer) {
 
 
         if(layer.layerType == "marker") {
         if(layer.layerType == "marker") {
@@ -88,26 +91,61 @@ function saveData()  {
             data = [layer._latlngs[0]];
             data = [layer._latlngs[0]];
         }
         }
 
 
-        object = {'_mi_id': layer._mi_id, 'layer_type': layer.layerType, 'data': data, 'layer_id': layer_id};
+        object = {'_uuid': layer._uuid, 'layerType': layer.layerType, 'data': data, 'layerId': layerId};
         vectorData.push(object);
         vectorData.push(object);
     });
     });
 
 
     console.log(vectorData);
     console.log(vectorData);
-    sendData = {'layerId' : layer_id, 'vectors' : vectorData};
+    sendData = {'layerId' : layerId, 'vectors' : vectorData};
     var json = JSON.stringify(sendData); 
     var json = JSON.stringify(sendData); 
 
 
     $.ajax({
     $.ajax({
         type: "POST",
         type: "POST",
-        url: "{{ url ('admin_leaflet_vector_save') }}",
+        url: "{{ url (url_post) }}",
         data: json,
         data: json,
         contentType: "application/json; charset=utf-8",
         contentType: "application/json; charset=utf-8",
         dataType: "json",
         dataType: "json",
         success: function(msg) {
         success: function(msg) {
-            console.log(msg);
+            alert(msg.msg);
+            //console.log(msg);
         }
         }
     });
     });
 }
 }
 
 
+function addElements() {
+
+    console.log({{vectors|length}});
+    {% if vectors|length > 0 %}
+        {% for vector in vectors %}
+            name = "{{vector.getName()}}";
+            type = "{{vector.getType()}}"
+            _uuid = "{{vector.getUuid()}}"
+            data = JSON.parse("{{vector.getData()}}".replace(/&quot;/g,'"'));
+
+            if(type == "marker") {
+                object = new L.marker([data[0]['lat'], data[0]['lng']]);
+            } else if (type == "circle") {
+                object = new L.circle([data[0]['lat'], data[0]['lng']], data[1]);
+            } else if (type == "polyline") {
+                object = new L.Polyline({{vector.getPolylinePoints()}});
+            } else if (type == "rectangle"){
+                object = new L.Rectangle({{vector.getPolylinePoints()}});
+            } else {
+                object = new L.Polygon({{vector.getPolylinePoints()}});
+            }
+
+            object.name = name;
+            object._uuid = _uuid;
+            object.layerType = type;
+            object.bindPopup("<b>" + name + "</b><br>");
+
+            drawnItems.addLayer(object);
+
+        {% endfor %}
+    {% endif %}
+    
+}
+
 </script>
 </script>
 
 
 {% endblock %}
 {% endblock %}