Elemek törlése ábráról
authorOmar Sweidan <omar.sweidan@userrendszerhaz.hu>
Fri, 10 Jun 2022 09:59:42 +0000 (11:59 +0200)
committerOmar Sweidan <omar.sweidan@userrendszerhaz.hu>
Fri, 10 Jun 2022 09:59:42 +0000 (11:59 +0200)
server/user.mediacube.gui/js/processVisualizer2.js
server/user.mediacube.gui/pages/processVisualizer2.zul
server/user.mediacube.gui/src/user/jobengine/zk/model/JobFlowChartModel.java

index 0c2f5a8cd050292c4a4ad2e3eb2bfaae7846a7a6..c2e38f3b195c3c4ba6affdec8cb20fc02f1318e0 100644 (file)
@@ -59,17 +59,6 @@ var connectorsForEnd=[
 \r
 model.init("myCanvas");\r
 model.draw();\r
-\r
-function getPressedKey(e) {\r
-       var keyCode=` ${e.code}`;\r
-       \r
-       if(keyCode == "  Delete"){\r
-               console.log("Delete lett nyomva");\r
-       }\r
-       console.log("keydown: ", keyCode);\r
-}\r
\r
- document.addEventListener("keydown", getPressedKey);\r
  \r
  function setFlowchartData(data) {\r
        var arrays= JSON.parse(data);\r
@@ -98,7 +87,6 @@ function getPressedKey(e) {
                        model.addLink(new model.link(i+1, i+2, 1, 0, "", "straight"));\r
                }\r
        }\r
-       model.addLink(new model.link(i, i+1, 1, 0, "", "straight"));\r
        model.draw();\r
        \r
        for (let i = 0; i < params.length; i++) {\r
@@ -113,4 +101,50 @@ function getPressedKey(e) {
 function getFlowchartData(){\r
        console.log("getFlowchartData");\r
        zk.Widget.$('$flowchartDataListener').fire('onFlowchartDataChanged', { model }, {toServer : true});\r
+}\r
+\r
+function deleteSelectedElement(){\r
+       //if a node is selected for deletion\r
+       if(mouse.selLink == null && mouse.selNode != null){\r
+               let linksRefreshNeeded= true;\r
+               if(mouse.selNode == model.nodes.length-2){\r
+                       linksRefreshNeeded= false;      \r
+               }\r
+               \r
+               if(model.nodes.length == 3 && mouse.selNode == 1){\r
+                       //delete all the links\r
+                       model.links= [];\r
+               } else if (model.nodes.length > 3){\r
+                       for(let index= 0; index < model.links.length; index++){\r
+                               if(model.links[index].to == mouse.selNode || model.links[index].from == mouse.selNode){\r
+                                       model.links.splice(index, 1);\r
+                                       index= -1;\r
+                               }\r
+                       }\r
+               }\r
+               //update the links  to and from parameters, since node indices have also chaged, \r
+               //if the selected node is not the last one\r
+               if(linksRefreshNeeded){\r
+                       for(let i= 0; i < model.links.length; i++){\r
+                               if(model.links[i].to != 1){\r
+                                       model.links[i].to--;\r
+                               }\r
+                               if(model.links[i].from != 0){\r
+                                       model.links[i].from--;\r
+                               }\r
+                       }\r
+               }\r
+               \r
+               //delete the node\r
+               model.nodes.splice(mouse.selNode, 1);\r
+               mouse.selNode= null;            \r
+       }\r
+       \r
+       //if the selected element for deletion is a link\r
+       if(mouse.selLink != null && mouse.selNode == null){\r
+               model.links.splice(mouse.selLink, 1);\r
+               mouse.selLink= null;\r
+       }\r
+\r
+       model.draw();\r
 }
\ No newline at end of file
index b1610b132bca22c2a5363b0cd177b2ef49c21657..e6c1d38ab5579e5b4bba8428780a60eba369cff3 100644 (file)
@@ -6,6 +6,7 @@
            </div>\r
            <div id="flowchartDataListener" onFlowchartDataChanged="@command('onFlowchartDataChanged')" />\r
            <button label="Save" onClick="@command('getFlowchartData')"/>\r
+           <button id="deleteButton" iconSclass="z-icon-trash-o" onClick="@command('onDeletePressed', evt=event)"/>\r
        </div>\r
        <h:script src="/js/diagramflowjs.js" />\r
        <h:script src="/js/processVisualizer2.js" />\r
index bb8c2c83392044414cb1535e559a6fff495987b5..e82b2d5d0e7c88da41140ac9231771f061c64a10 100644 (file)
@@ -48,7 +48,6 @@ public class JobFlowChartModel extends BaseModel {
 \r
        @GlobalCommand\r
        public void selectedJobChanged(@BindingParam("selectedJob") BasicDBObject selectedJob) {\r
-               logger.info("selectedJobChanged");\r
                setSelectedJob(selectedJob);\r
 \r
                if (selectedTabID.equals("tab2")) {\r
@@ -70,6 +69,11 @@ public class JobFlowChartModel extends BaseModel {
                logger.info("converted document: {}", XMLUtils.getStringFromDocument(document));\r
        }\r
 \r
+       @Command\r
+       public void onDeletePressed(@ContextParam(ContextType.TRIGGER_EVENT) Event event) {\r
+               Clients.evalJavaScript("deleteSelectedElement();");\r
+       }\r
+\r
        private JobTemplate JSONObjectToJobtemplate(JSONObject data) {\r
                JobTemplate template = new JobTemplate();\r
                DeclarationSequence ds = new DeclarationSequence();\r
@@ -131,7 +135,6 @@ public class JobFlowChartModel extends BaseModel {
 \r
        @GlobalCommand\r
        public void selectedTabChanged(@BindingParam("evt") SelectEvent<Tab, Event> event) {\r
-               logger.info("selectedTabChanged");\r
                setSelectedTabID(event.getReference().getId());\r
 \r
                if (selectedTabID.equals("tab2")) {\r
@@ -152,7 +155,7 @@ public class JobFlowChartModel extends BaseModel {
        }\r
 \r
        private void initializeCanvas() {\r
-               String js = "mouse.selNode= null;\r\n model.clear();\r\n model.clean();\r\n model.draw();";\r
+               String js = "mouse.selNode= null;\r\n mouse.selLink= null;\r\n model.clear();\r\n model.clean();\r\n model.draw();";\r
                Clients.evalJavaScript(js);\r
        }\r
 \r