Explorar el Código

updated procesEditor

Piotr Labudda hace 8 años
padre
commit
b8ac967cff
Se han modificado 2 ficheros con 245 adiciones y 12 borrados
  1. 1 1
      SE/se-lib/Route/UrlAction/ProcesEditor.php
  2. 244 11
      SE/static/procesEditor.js

+ 1 - 1
SE/se-lib/Route/UrlAction/ProcesEditor.php

@@ -136,7 +136,7 @@ class Route_UrlAction_ProcesEditor extends RouteBase {// TODO: UrlActionBase @se
 		</div>
 		<script>var USER_ID = '<?= User::getID(); ?>';var BASE_URL = '<?= Request::getPathUri(); ?>';var BASE_WFS_URL = '<?= Api_WfsNs::getBaseWfsUri(); ?>';var mainProces_id = <?= $id; ?>;</script>
 		<script src="static/sweetalert2.min.js"></script>
-		<script src="static/procesEditor.js?v=20<?php echo "&_time=" . time(); ?><?php if (V::get('DBG', '', $_GET)) echo "&_time=" . time(); ?>"></script>
+		<script src="static/procesEditor.js?v=21<?php echo "&_time=" . time(); ?><?php if (V::get('DBG', '', $_GET)) echo "&_time=" . time(); ?>"></script>
 <?php
 	}
 

+ 244 - 11
SE/static/procesEditor.js

@@ -15,6 +15,7 @@ $(document).ready(function() {
     var deletedId = new Array();
     var generatedId = new Array();
     var deletedRes = new Array();
+    var usedImg = {};
     var dialog = 0;
     $("#SE-menu").hide();
     $("#SE-menu-sub").hide();
@@ -175,11 +176,26 @@ $(document).ready(function() {
                       temp["desc"] = zasobInfo[idZasob]["DESC"];
                       temp["opis"] = zasobInfo[idZasob]["OPIS"];
                       temp["tree"] = zasobInfo[idZasob]["TREE"];
-                      state[getIndexById(id)][type].push(temp);
-                    });
-
-                    $("#main").html("<center>Generowanie widoku.</center>");
-                    render(state, $("#main"));
+                      var newId = state[getIndexById(id)][type].push(temp) - 1;
+                      // console.log(newId);
+                      var linkImg = BASE_URL +
+                                    'wfs-data.php/default_db/?SERVICE=WFS&VERSION=1.0.0&REQUEST=GetFeature&TYPENAME=p5_default_db:CRM_IMAGE&SRSNAME=EPSG:3003&Filter=<ogc:Filter><ogc:And><ogc:PropertyIsEqualTo><ogc:PropertyName>REMOTE_ID</ogc:PropertyName><ogc:Literal>' +id+
+                                    '</ogc:Literal></ogc:PropertyIsEqualTo><ogc:PropertyIsEqualTo><ogc:PropertyName>REMOTE_TABLE</ogc:PropertyName><ogc:Literal>CRM_WSKAZNIK</ogc:Literal></ogc:PropertyIsEqualTo></ogc:And></ogc:Filter>';
+
+                                //console.log(linkImg);
+                                $.get(linkImg, function(imgData) {
+                                    //console.log(imgData);
+                                    var temp = Array();
+                                    $.each($(imgData).find("featureMember"), function(){
+                                      //console.log($(this).find("IMAGE").text());
+                                      temp.push({"src": $(this).find("IMAGE").text(), "title": $(this).find("NAME").text(),"id": $(this).find("ID").text(),} );
+                                    })
+                                    console.log("P:", temp);
+                                    state[getIndexById(id)][type][newId]["img"] = temp;
+                                    $("#main").html("<center>Generowanie widoku.</center>");
+                                    render(state, $("#main"));
+                                });
+                     });
                   })
                   .fail(function(xhr) {
                     if (xhr.responseJSON && xhr.responseJSON.msg && xhr.responseJSON.type) jQuery.notify(xhr.responseJSON.msg, xhr.responseJSON.type);
@@ -440,6 +456,25 @@ $(document).ready(function() {
   </Insert>
     `;
                 });
+
+                $.each(usedImg, function(key, value) {
+                    //console.log(value);
+                    request +=
+                        `
+    <Insert xmlns="http://www.opengis.net/wfs">
+      <CRM_IMAGE xmlns="` +
+                        BASE_WFS_URL + `/default_db">
+    `;
+
+                    request += '<ID xmlns="' + BASE_WFS_URL + '/default_db">' + key + '</ID>';
+                    request += '<REMOTE_TABLE xmlns="' + BASE_WFS_URL + '/default_db">' + value["type"] + '</REMOTE_TABLE>';
+                    request += '<REMOTE_ID xmlns="' + BASE_WFS_URL + '/default_db">' + value["targetID"] + '</REMOTE_ID>';
+                    request += `
+    </CRM_IMAGE>
+  </Insert>
+    `;
+                });
+
                 request += '</Transaction>';
                 $.ajax({
                     url: link,
@@ -451,6 +486,7 @@ $(document).ready(function() {
                         if ($(data).children("serviceException").text() == "") {
                             deletedRes = [];
                             deletedId = [];
+                            usedImg = {};
                             localStorage.removeItem("state" + mainProces_id);
                             showPreview();
                             $.notify("Zmiany zostały zapisane na serwerze.", "success");
@@ -460,6 +496,7 @@ $(document).ready(function() {
                             localStorage.setItem("newStep" + mainProces_id, newSteps);
                             localStorage.setItem("newRes" + mainProces_id, newRes);
                             localStorage.setItem("deletedId" + mainProces_id, JSON.stringify(deletedId));
+                            localStorage.setItem("usedImg" + mainProces_id, JSON.stringify(usedImg));
                             localStorage.setItem("deletedRes" + mainProces_id, JSON.stringify(deletedRes));
                             localStorage.setItem("date" + mainProces_id, moment().format("YYYY-MM-DD HH:mm:ss"));
                         }
@@ -1112,8 +1149,14 @@ $(document).ready(function() {
             var type = this.files[0].type;
             var FR = new FileReader();
             FR.onload = function(e) {
-                var contentBase64 = e.target.result;
-                var xml = `
+                var content = e.target.result;
+                var image = new Image();
+                image.src = content;
+                image.onload = function(){
+                    var width = this.width;
+                    var height = this.height;
+                    var xml =
+                        `
                   <Transaction
                     xmlns="http://www.opengis.net/wfs"
                     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
@@ -1125,7 +1168,11 @@ $(document).ready(function() {
                     <Insert xmlns="http://www.opengis.net/wfs">
                     <CRM_IMAGE xmlns="` + BASE_WFS_URL + `/default_db">
                         <NAME xmlns="` + BASE_WFS_URL + `/default_db">` + name + `</NAME>
-                        <IMAGE xmlns="` + BASE_WFS_URL + `/default_db">` + contentBase64+`</IMAGE>
+                        <IMAGE xmlns="` + BASE_WFS_URL + `/default_db">` + content + `</IMAGE>
+                        <TYPE xmlns="` + BASE_WFS_URL + `/default_db">` + type + `</TYPE>
+                        <SIZE xmlns="` + BASE_WFS_URL + `/default_db">` + size + `</SIZE>
+                        <WIDTH xmlns="` + BASE_WFS_URL + `/default_db">` + width + `</WIDTH>
+                        <HEIGHT xmlns="` + BASE_WFS_URL + `/default_db">` + height + `</HEIGHT>
                         <REMOTE_TABLE xmlns="` + BASE_WFS_URL + `/default_db">ADMIN_USERS</REMOTE_TABLE>
                         <REMOTE_ID xmlns="` + BASE_WFS_URL + `/default_db">` + USER_ID + `</REMOTE_ID>
                     </CRM_IMAGE>
@@ -1141,7 +1188,7 @@ $(document).ready(function() {
                             if ($(data).find("ServiceException").text() != "") {
                                 $.notify($(data).find("ServiceException").text(), "error");
                             } else {
-                                $("#clipboard").append("<li class='list-group-item'><img src='"+contentBase64+"' / width=400></li>");
+                                photos();
                             }
                         }
                     });
@@ -1164,7 +1211,22 @@ $(document).ready(function() {
         $(side).append(schowek);
         var link = BASE_URL + 'wfs-data.php/default_db/?SERVICE=WFS&VERSION=1.0.0&REQUEST=GetFeature&TYPENAME=p5_default_db:CRM_IMAGE&SRSNAME=EPSG:3003&Filter=<ogc:Filter><ogc:And><ogc:PropertyIsEqualTo><ogc:PropertyName>REMOTE_ID</ogc:PropertyName><ogc:Literal>' + USER_ID + '</ogc:Literal></ogc:PropertyIsEqualTo><ogc:PropertyIsEqualTo><ogc:PropertyName>REMOTE_TABLE</ogc:PropertyName><ogc:Literal>ADMIN_USERS</ogc:Literal></ogc:PropertyIsEqualTo></ogc:And></ogc:Filter>';
         $.get(link, function(data) {
+            var list = "";
             $(data).find("featureMember").each(function() {
+                if(typeof usedImg[$(this).find("ID").text()] == "undefined"){
+                  list += "<div class=attImg data-id="+$(this).find("ID").text()+"><div class=remImg>X</div><img src='" + $(this).find("IMAGE").text() +
+                      "' / width=150><div class=imgTitle>"+$(this).find("NAME").text()+"</div></div>"
+                  }
+            });
+            $("#clipboard").append(list);
+            $('.attImg').draggable({
+                appendTo: 'body',
+                //revert: true,
+                zIndex: 100,
+                helper: "clone",
+                stack: "div",
+                distance: 0,
+                cursor: "copy"
             });
         });
         schowek += '<li class="list-group-item">';
@@ -1216,6 +1278,69 @@ $(document).ready(function() {
         //$(side).find("#ulcon").append("<div class='drag' data-id=3 data-type=2 >[ZASÓB] Komputer</div>");
     }
 
+    function removeImg(content, id){
+      $.each(content, function(i,e){
+        if(e["id"] == id){
+          content.splice(i, 1);
+          return;
+        }
+      })
+    }
+
+    function dropImg(ui, target) {
+      var id = $(target).closest(".drop").data("id");
+      var idBefore = $(ui.draggable).closest(".drop").data("id");
+      var type = "CRM_PROCES";
+      var typeName = "proces";
+      if($(target).closest(".professions").length){
+        var type = "CRM_WSKAZNIK";
+        var typeName = "prof";
+      }else if($(target).closest(".resources").length){
+        var type = "CRM_WSKAZNIK";
+        var typeName = "res";
+      }
+      var typeNameBefore = "proces";
+      if($(ui.draggable).closest(".professions").length){
+        var typeNameBefore = "prof";
+      }else if($(ui.draggable).closest(".resources").length){
+        var typeNameBefore = "res";
+      }
+      var temp = {};
+
+      //alert(idBefore);
+
+      temp["src"] = $(ui.draggable).find("img").attr("src");
+      temp["title"] = $(ui.draggable).find(".imgTitle").text();
+      temp["id"] = $(ui.draggable).data("id");
+      usedImg[temp["id"]] = {type: type, targetID: id, action: "ATTACH"};
+      //console.log("x",usedImg);
+      //console.log(usedImg);
+      if(typeName != "proces" && typeof state[getIndexById(id)][typeName][[getResById(getIndexById(id), $(target).closest("li").data("id"), typeName)]]["img"] == "undefined"){
+        //console.log(getResById(getIndexById(id), $(target).closest("li").data("id"), typeName));
+        //console.log($(target).closest("li").data("id"));
+        //console.log(state);
+        state[getIndexById(id)][typeName][getResById(getIndexById(id), $(target).closest("li").data("id"), typeName)]["img"] = Array();
+      }else if(typeName == "proces" && typeof state[getIndexById(id)]["img"] == "undefined"){
+        state[getIndexById(id)]["img"] = Array();
+      }
+      console.log(typeNameBefore);
+      if(typeof idBefore != "undefined")
+        if(typeNameBefore == "proces"){
+          removeImg(state[getIndexById(idBefore)]["img"], temp["id"]);
+        }else{
+          console.log(state[getIndexById(idBefore)][typeName][getResById(getIndexById(id), $(ui.draggable).closest("li").data("id"), typeName)]["img"]);
+          removeImg(state[getIndexById(idBefore)][typeName][getResById(getIndexById(id), $(ui.draggable).closest("li").data("id"), typeName)]["img"], temp["id"]);
+        }
+
+      if(typeName == "proces")
+        state[getIndexById(id)]["img"].push(temp);
+      else {
+        state[getIndexById(id)][typeName][getResById(getIndexById(id), $(target).closest("li").data("id"), typeName)]["img"].push(temp);
+      }
+      $(ui.draggable).remove();
+      updateAll();
+    }
+
     function addProces(ui, target) {
         var id = $(target).data("id");
         var gotoOpt = "";
@@ -1423,6 +1548,30 @@ $(document).ready(function() {
 
         });
     }*/
+
+    //  $(".remImg").on('click', function () {
+    //     console.log("del");
+    //     var obj = $(this).closest(".attImg");
+    //     var id = $(this).closest(".drop").data("id");
+    //     var typeName = "proces";
+    //     if($(obj).closest(".professions").length){
+    //       typeName = "prof";
+    //     }else if($(obj).closest(".resources").length){
+    //       typeName = "res";
+    //     }
+    //     if(typeof idBefore != "undefined")
+    //
+    //     if(typeName == "proces");
+    //       //removeImg(state[getIndexById(id)]["img"], $(obj).data("id"));
+    //     else {
+    //       //removeImg(state[getIndexById(id)][typeName][getResById(getIndexById(id), $(obj).closest("li").data("id"), typeName)]["img"], $(obj).data("id"));
+    //     }
+    //     $(ui.draggable).remove();
+    //     usedImg[$(obj).data("id")] = {type: "", targetID: -1, action: "DELETED"};
+    //     updateAll();
+    //     return false;
+    // });
+
     $(document).on('click', '.stateOff', function() {
         $(this).closest(".mx").prev(".tree").show();
         $(this).closest(".mx").remove();
@@ -1481,7 +1630,17 @@ $(document).ready(function() {
             // if ($(this).find("OPIS").text() == "") {
             //     $("#proc" + $(this).find("ID").text()).find(".sdesc").after("<span class=sDescAdd>Dodaj opis</span>");
             // }
-            result += "<div class='clearfix'></div>";
+            result += "<div class='clearfix'></div><div class=imagesProc>";
+
+            if(typeof e["img"] !== "undefined"){
+                //console.log(e["img"])
+                $.each(e["img"], function(key, eImg){
+                    var img = "<div class=attImg data-id='"+eImg["id"]+"'><img src='" + eImg["src"] + "' / width=150><div class=remImg>X</div><div class='imgTitle'>"+eImg["title"]+"</div></div>";
+                    result += img;
+                })
+            }
+
+            result += "<div class=clearfix></div></div><br>";
             var anyProf = false;
             $.each(e["prof"], function(i2, e2) {
                 if (!anyProf) {
@@ -1501,7 +1660,14 @@ $(document).ready(function() {
                 $.each(e2["tree"], function(i, x) {
                     result += x["DESC"] + (i < e2["tree"].length - 1 ? " <span class='glyphicon glyphicon-triangle-right'></span>" : "");
                 });
-                result += "<div class=moreInfo></div></span></div>";
+                result += "</span></div>";
+                if (typeof e2["img"] !== "undefined") {
+                    //console.log(e["img"])
+                    $.each(e2["img"], function(key, eImg){
+                        var img = "<div class=attImg data-id='"+eImg["id"]+"'><div class=remImg>X</div><img src='" + eImg["src"] + "' / width=150><div class='imgTitle'>"+eImg["title"]+"</div></div>";
+                        result += img;
+                   })
+                }
                 result += "</div></li>";
             });
             if (anyProf) {
@@ -1527,6 +1693,14 @@ $(document).ready(function() {
                     result += x["DESC"] + (i < e2["tree"].length - 1 ? "<span class='glyphicon glyphicon-triangle-right'></span> " : "");
                 });
                 result += "</span></div>";
+                if(typeof e2["img"] !== "undefined"){
+                  //console.log(e["img"])
+                  $.each(e2["img"], function(key, eImg){
+                    var img = "<div class=attImg data-id='"+eImg["id"]+"'><div class=remImg>X</div><img src='" + eImg["src"] +
+                        "' / width=150><div class='imgTitle'>"+eImg["title"]+"</div></div>";
+                    result += img;
+                  })
+                }
                 result += "</div></li>";
             });
             if (anyRes) {
@@ -1573,6 +1747,39 @@ $(document).ready(function() {
                     addResource(ui, this);
             }
         });
+        $(".sdesc").droppable({
+            tolerance: 'pointer',
+            accept: '.attImg',
+            zIndex: 0,
+            hoverClass: "activeDrop",
+            drop: function(event, ui) {
+                dropImg(ui, this);
+                //addProces(ui, this);
+            }
+        });
+        $(".liRes").droppable({
+            tolerance: 'pointer',
+            accept: '.attImg',
+            zIndex: 0,
+            hoverClass: "activeDrop",
+            drop: function(event, ui) {
+                dropImg(ui, this);
+                return false;
+            }
+        });
+
+        $('.attImg').draggable({
+            appendTo: 'body',
+            //revert: true,
+            zIndex: 100,
+            helper: "clone",
+            stack: "div",
+            distance: 0,
+            cursor: "copy",
+        });
+
+
+
     }
 
     function genTree(parent_id) {
@@ -1583,6 +1790,11 @@ $(document).ready(function() {
             success: function(data) {
                 var i = 0;
                 $.each($(data).find("featureMember"), function() {
+                    var linkImg = BASE_URL + 'wfs-data.php/default_db/?SERVICE=WFS&VERSION=1.0.0&REQUEST=GetFeature&TYPENAME=p5_default_db:CRM_IMAGE&SRSNAME=EPSG:3003&Filter=<ogc:Filter><ogc:And><ogc:PropertyIsEqualTo><ogc:PropertyName>REMOTE_ID</ogc:PropertyName><ogc:Literal>' + $(this).find("ID").text() + '</ogc:Literal></ogc:PropertyIsEqualTo><ogc:PropertyIsEqualTo><ogc:PropertyName>REMOTE_TABLE</ogc:PropertyName><ogc:Literal>CRM_PROCES</ogc:Literal></ogc:PropertyIsEqualTo></ogc:And></ogc:Filter>';
+                    //console.log(linkImg);
+                    $.get(linkImg, function(imgData) {
+                        //console.log(imgData);
+                    });
                     var temp = {};
                     if ($(this).find("ID").text() == "0")
                         return;
@@ -1602,6 +1814,16 @@ $(document).ready(function() {
                     temp["stepDesc"] = "";
                     i++;
                     state.splice(parentIndex + i, 0, temp);
+                    var linkImg = BASE_URL + 'wfs-data.php/default_db/?SERVICE=WFS&VERSION=1.0.0&REQUEST=GetFeature&TYPENAME=p5_default_db:CRM_IMAGE&SRSNAME=EPSG:3003&Filter=<ogc:Filter><ogc:And><ogc:PropertyIsEqualTo><ogc:PropertyName>REMOTE_ID</ogc:PropertyName><ogc:Literal>' + temp["id"] + '</ogc:Literal></ogc:PropertyIsEqualTo><ogc:PropertyIsEqualTo><ogc:PropertyName>REMOTE_TABLE</ogc:PropertyName><ogc:Literal>CRM_PROCES</ogc:Literal></ogc:PropertyIsEqualTo></ogc:And></ogc:Filter>';
+                    //console.log(linkImg);
+                    $.get(linkImg, function(imgData) {
+                        var temp = Array();
+                        $.each($(imgData).find("featureMember"), function(){
+                          //console.log($(this).find("IMAGE").text());
+                          temp.push({"src": $(this).find("IMAGE").text(), "title": $(this).find("NAME").text(),"id": $(this).find("ID").text(),} );
+                        })
+                        state[getIndexById(temp["id"])]["img"] = temp;
+                    });
                     genTree($(this).find("ID").text());
                 });
             }
@@ -1627,6 +1849,7 @@ $(document).ready(function() {
             newRes = localStorage.getItem("newRes" + mainProces_id);
             deletedId = JSON.parse(localStorage.getItem("deletedId" + mainProces_id));
             deletedRes = JSON.parse(localStorage.getItem("deletedRes" + mainProces_id));
+            usedImg = JSON.parse(localStorage.getItem("usedImg" + mainProces_id));
             $.notify("Wczytano niezapisany stan z " + localStorage.getItem("date" + mainProces_id), "info");
             render(state, $("#main"));
             loaded = true;
@@ -1652,6 +1875,16 @@ $(document).ready(function() {
                 temp["opis"] = $(data).find("featureMember").find("OPIS").text()
                 tab.push(mainProces_id);
                 state[0] = temp;
+                var linkImg = BASE_URL + 'wfs-data.php/default_db/?SERVICE=WFS&VERSION=1.0.0&REQUEST=GetFeature&TYPENAME=p5_default_db:CRM_IMAGE&SRSNAME=EPSG:3003&Filter=<ogc:Filter><ogc:And><ogc:PropertyIsEqualTo><ogc:PropertyName>REMOTE_ID</ogc:PropertyName><ogc:Literal>' +mainProces_id + '</ogc:Literal></ogc:PropertyIsEqualTo><ogc:PropertyIsEqualTo><ogc:PropertyName>REMOTE_TABLE</ogc:PropertyName><ogc:Literal>CRM_PROCES</ogc:Literal></ogc:PropertyIsEqualTo></ogc:And></ogc:Filter>';
+                //console.log(linkImg);
+                $.get(linkImg, function(imgData) {
+                    var temp = Array();
+                    $.each($(imgData).find("featureMember"), function(){
+                      //console.log($(this).find("IMAGE").text());
+                      temp.push({"src": $(this).find("IMAGE").text(), "title": $(this).find("NAME").text(),"id": $(this).find("ID").text(),} );
+                    })
+                    state[0]["img"] = temp;
+                });
                 genTree(mainProces_id);
             });
             actSite = "preview";