From f0ac60e30071c7c83afa4952218da3cce9703974 Mon Sep 17 00:00:00 2001
From: Johannes Hoermann <j.hoermann@adito.de>
Date: Mon, 8 Apr 2019 17:06:23 +0200
Subject: [PATCH] oibjectrelation edit state Process

---
 .../ObjectTree_entity/ObjectTree_entity.aod   |  5 +++-
 .../alter/children/edit/onActionProcess.js    | 10 +++----
 .../alter/children/edit/stateProcess.js       | 30 +++++++++++++++++++
 .../recordcontainers/jdito/contentProcess.js  |  5 ++--
 4 files changed, 42 insertions(+), 8 deletions(-)
 create mode 100644 entity/ObjectTree_entity/entityfields/alter/children/edit/stateProcess.js

diff --git a/entity/ObjectTree_entity/ObjectTree_entity.aod b/entity/ObjectTree_entity/ObjectTree_entity.aod
index e4136413bd..d940f4a75f 100644
--- a/entity/ObjectTree_entity/ObjectTree_entity.aod
+++ b/entity/ObjectTree_entity/ObjectTree_entity.aod
@@ -11,6 +11,8 @@
     <entityProvider>
       <name>TreeProvider</name>
       <fieldType>DEPENDENCY_IN</fieldType>
+      <targetContextField>TARGET_CONTEXT</targetContextField>
+      <targetIdField>TARGET_ID</targetIdField>
       <dependencies>
         <entityDependency>
           <name>f4c0605f-3ccb-4ff1-b460-7268e8553857</name>
@@ -165,8 +167,9 @@
           <name>edit</name>
           <fieldType>ACTION</fieldType>
           <onActionProcess>%aditoprj%/entity/ObjectTree_entity/entityfields/alter/children/edit/onActionProcess.js</onActionProcess>
-          <isSelectionAction v="true" />
           <iconId>NEON:PENCIL</iconId>
+          <state>DISABLED</state>
+          <stateProcess>%aditoprj%/entity/ObjectTree_entity/entityfields/alter/children/edit/stateProcess.js</stateProcess>
         </entityActionField>
       </children>
     </entityActionGroup>
diff --git a/entity/ObjectTree_entity/entityfields/alter/children/edit/onActionProcess.js b/entity/ObjectTree_entity/entityfields/alter/children/edit/onActionProcess.js
index 8cbab64779..c18d22015d 100644
--- a/entity/ObjectTree_entity/entityfields/alter/children/edit/onActionProcess.js
+++ b/entity/ObjectTree_entity/entityfields/alter/children/edit/onActionProcess.js
@@ -2,16 +2,16 @@ import("ObjectRelation_lib");
 import("system.neon");
 import("system.vars");
 
-if (vars.exists("$local.rows") && vars.get("$local.rows"))
-{
-    var selectedRows = JSON.parse(vars.get("$local.rows"));
-    var uid = JSON.parse(selectedRows[0]["#LOOKUPID"]);
+if (vars.exists("$sys.selection") && vars.get("$sys.selection"))
+{    
+    var selectedRows = JSON.parse(vars.get("$sys.selection"));
+    var uid = JSON.parse(selectedRows[0]);
     var isObjectRelationNode = typeof uid[2] == "string";
         
     if (isObjectRelationNode)
     {
         var params = {
-            "Uid_param" : selectedRows[0]["#LOOKUPID"]
+            "Uid_param" : selectedRows[0]
         }
         neon.openContext("ObjectTree", "ObjectTreeEdit_view", null, neon.OPERATINGSTATE_EDIT, params);
     }
diff --git a/entity/ObjectTree_entity/entityfields/alter/children/edit/stateProcess.js b/entity/ObjectTree_entity/entityfields/alter/children/edit/stateProcess.js
new file mode 100644
index 0000000000..60b83bbcbd
--- /dev/null
+++ b/entity/ObjectTree_entity/entityfields/alter/children/edit/stateProcess.js
@@ -0,0 +1,30 @@
+import("system.logging");
+import("system.result");
+import("system.neon");
+import("system.vars");
+logging.log("aaaaaaaaaaaaa " + vars.get("$sys.selection"))
+logging.log("aaaaaaaaaaaaa " + vars.get("$sys." + "viewmode"))
+if (vars.get("$sys." + "viewmode") == neon.FRAME_VIEWMODE_COMPONENT)
+if (vars.exists("$sys." + "selection") && vars.get("$sys." + "selection"))
+{    
+    var selectedRows = JSON.parse(vars.get("$sys." + "selection"));
+    var isObjectRelationNode = false;
+    if (selectedRows.length > 0)
+    {
+        logging.log(selectedRows.toSource())
+        var uid = JSON.parse(selectedRows[0]);
+        logging.log(uid.toSource())
+        isObjectRelationNode = typeof uid[2] == "string";
+    }  
+    logging.log(isObjectRelationNode)
+    if (isObjectRelationNode)
+    {
+        result.string(neon.COMPONENTSTATE_EDITABLE)
+    }
+    else
+    {
+        result.string(neon.COMPONENTSTATE_DISABLED)
+    }
+}
+else
+    result.string(neon.COMPONENTSTATE_DISABLED)
\ No newline at end of file
diff --git a/entity/ObjectTree_entity/recordcontainers/jdito/contentProcess.js b/entity/ObjectTree_entity/recordcontainers/jdito/contentProcess.js
index a8f30c3c97..70b8263604 100644
--- a/entity/ObjectTree_entity/recordcontainers/jdito/contentProcess.js
+++ b/entity/ObjectTree_entity/recordcontainers/jdito/contentProcess.js
@@ -22,8 +22,7 @@ else if(vars.exists("$local.idvalues") && vars.get("$local.idvalues") && vars.ge
 if (uidParam)
 {
     let uid = JSON.parse(uidParam);
-
-    let isObjectRelationNode = typeof uid[2] == "string";
+    let isObjectRelationNode = uid != null && typeof uid[2] == "string";
 
     if (isObjectRelationNode)
     {
@@ -31,6 +30,8 @@ if (uidParam)
         _insertEntry(tree, _getEntryData(uid[0], relationTypeData[3], relationTypeData[7], relationTypeData[8], undefined, false, uid[6]), "", 0, uid[3], relationTypeData[10]);
 
     }
+   /* else
+        tree = [["", "", "", "", "", "", "", ""]]*/
 }
 else
 {
-- 
GitLab