From 2a5c73d5674387e0ca87f5daf0a44c00021d1057 Mon Sep 17 00:00:00 2001
From: Johannes Hoermann <j.hoermann@adito.de>
Date: Mon, 11 Feb 2019 17:24:34 +0100
Subject: [PATCH] Object relation fixes

---
 .../ObjectRelation_entity.aod                 |  1 +
 .../object1_rowid/displayValueProcess.js      | 28 +++++++++++++++++++
 .../object1_type/displayValueProcess.js       | 16 +++++++----
 .../entityfields/object1_type/valueProcess.js |  4 +--
 .../object2_type/displayValueProcess.js       | 17 ++---------
 .../entityfields/object2_type/valueProcess.js |  2 +-
 .../children/objecttype_param/code.js         |  2 +-
 .../children/objecttype_param/code.js         |  4 +--
 entity/Object_entity/Object_entity.aod        |  6 ++++
 .../recordcontainers/jdito/contentProcess.js  | 15 ++--------
 entity/Object_entity/titleProcess.js          |  4 +++
 process/Context_lib/process.js                | 15 +---------
 12 files changed, 61 insertions(+), 53 deletions(-)
 create mode 100644 entity/ObjectRelation_entity/entityfields/object1_rowid/displayValueProcess.js
 create mode 100644 entity/Object_entity/titleProcess.js

diff --git a/entity/ObjectRelation_entity/ObjectRelation_entity.aod b/entity/ObjectRelation_entity/ObjectRelation_entity.aod
index 92c31b34c5..657cdec7d2 100644
--- a/entity/ObjectRelation_entity/ObjectRelation_entity.aod
+++ b/entity/ObjectRelation_entity/ObjectRelation_entity.aod
@@ -25,6 +25,7 @@
       <linkedContextProcess>%aditoprj%/entity/ObjectRelation_entity/entityfields/object1_rowid/linkedContextProcess.js</linkedContextProcess>
       <stateProcess>%aditoprj%/entity/ObjectRelation_entity/entityfields/object1_rowid/stateProcess.js</stateProcess>
       <valueProcess>%aditoprj%/entity/ObjectRelation_entity/entityfields/object1_rowid/valueProcess.js</valueProcess>
+      <displayValueProcess>%aditoprj%/entity/ObjectRelation_entity/entityfields/object1_rowid/displayValueProcess.js</displayValueProcess>
     </entityField>
     <entityField>
       <name>AB_OBJECTRELATIONID</name>
diff --git a/entity/ObjectRelation_entity/entityfields/object1_rowid/displayValueProcess.js b/entity/ObjectRelation_entity/entityfields/object1_rowid/displayValueProcess.js
new file mode 100644
index 0000000000..94cfeeb560
--- /dev/null
+++ b/entity/ObjectRelation_entity/entityfields/object1_rowid/displayValueProcess.js
@@ -0,0 +1,28 @@
+import("system.logging");
+import("system.neon");
+import("system.vars");
+import("system.result");
+import("system.db");
+import("Context_lib");
+
+var recordstate = vars.get("$sys.recordstate");
+if (recordstate == neon.OPERATINGSTATE_NEW)
+{
+    if (vars.exists("$param.AnyObjectRowid_param") && vars.get("$param.AnyObjectRowid_param"))
+    {
+        result.string(db.cell(ContextUtils.getNameSql(vars.get("$param.AnyObjectType_param"), vars.get("$param.AnyObjectRowid_param"))));
+    }
+    else if (vars.exists("$param.Object1Rowid_param") && vars.get("$param.Object1Rowid_param"))
+    {
+        result.string(vars.get("$param.Object1Rowid_param"));
+    }
+}
+else if (recordstate == neon.OPERATINGSTATE_EDIT)
+{
+    logging.log("edit")
+    if (vars.exists("$field.OBJECT1_ROWID") && vars.get("$field.OBJECT1_ROWID") && vars.exists("$field.OBJECT1_TYPE") && vars.get("$field.OBJECT1_TYPE"))
+    {
+        logging.log(db.cell(ContextUtils.getNameSql(vars.get("$field.OBJECT1_TYPE"), vars.get("$field.OBJECT1_ROWID"))))
+        result.string(db.cell(ContextUtils.getNameSql(vars.get("$field.OBJECT1_TYPE"), vars.get("$field.OBJECT1_ROWID"))));
+    }
+}
\ No newline at end of file
diff --git a/entity/ObjectRelation_entity/entityfields/object1_type/displayValueProcess.js b/entity/ObjectRelation_entity/entityfields/object1_type/displayValueProcess.js
index 8a80d4be7e..b6e7d799d8 100644
--- a/entity/ObjectRelation_entity/entityfields/object1_type/displayValueProcess.js
+++ b/entity/ObjectRelation_entity/entityfields/object1_type/displayValueProcess.js
@@ -1,18 +1,24 @@
-import("system.logging");
 import("system.result");
 import("system.neon");
 import("system.vars");
+import("system.project");
 
 var recordstate = vars.get("$sys.recordstate");
-if (recordstate == neon.OPERATINGSTATE_NEW || recordstate == neon.OPERATINGSTATE_EDIT)
+if (recordstate == neon.OPERATINGSTATE_NEW)
 {
     if (vars.exists("$param.AnyObjectType_param") && vars.get("$param.AnyObjectType_param"))
     {
-        logging.log(vars.get("$param.AnyObjectType_param"));
-        result.string("disp: " + vars.get("$param.AnyObjectType_param"));
+        result.string(project.getDataModel(project.DATAMODEL_KIND_CONTEXT, vars.get("$param.AnyObjectType_param"))[1]);
     }
     else if (vars.exists("$param.Object1Type_param") && vars.get("$param.Object1Type_param"))
     {
-        result.string("disp: " + vars.get("$param.Object1Type_param"));
+        result.string(project.getDataModel(project.DATAMODEL_KIND_CONTEXT, vars.get("$param.Object1Type_param"))[1]);
+    }
+}
+else
+{
+    if (vars.exists("$field.OBJECT1_TYPE") && vars.get("$field.OBJECT1_TYPE"))
+    {
+        result.string(project.getDataModel(project.DATAMODEL_KIND_CONTEXT, vars.get("$field.OBJECT1_TYPE"))[1]);
     }
 }
\ No newline at end of file
diff --git a/entity/ObjectRelation_entity/entityfields/object1_type/valueProcess.js b/entity/ObjectRelation_entity/entityfields/object1_type/valueProcess.js
index 4ad606ce75..86b9f8b6ba 100644
--- a/entity/ObjectRelation_entity/entityfields/object1_type/valueProcess.js
+++ b/entity/ObjectRelation_entity/entityfields/object1_type/valueProcess.js
@@ -1,14 +1,12 @@
-import("system.logging");
 import("system.result");
 import("system.neon");
 import("system.vars");
 
 var recordstate = vars.get("$sys.recordstate");
-if (recordstate == neon.OPERATINGSTATE_NEW || recordstate == neon.OPERATINGSTATE_EDIT)
+if (recordstate == neon.OPERATINGSTATE_NEW)
 {
     if (vars.exists("$param.AnyObjectType_param") && vars.get("$param.AnyObjectType_param"))
     {
-        logging.log(vars.get("$param.AnyObjectType_param"));
         result.string(vars.get("$param.AnyObjectType_param"));
     }
     else if (vars.exists("$param.Object1Type_param") && vars.get("$param.Object1Type_param"))
diff --git a/entity/ObjectRelation_entity/entityfields/object2_type/displayValueProcess.js b/entity/ObjectRelation_entity/entityfields/object2_type/displayValueProcess.js
index e53f4ab610..ba3a5abf21 100644
--- a/entity/ObjectRelation_entity/entityfields/object2_type/displayValueProcess.js
+++ b/entity/ObjectRelation_entity/entityfields/object2_type/displayValueProcess.js
@@ -1,19 +1,8 @@
-import("system.project");
 import("system.result");
-import("system.neon");
 import("system.vars");
+import("system.project");
 
-var recordstate = vars.get("$sys.recordstate");
-if (recordstate == neon.OPERATINGSTATE_NEW || recordstate == neon.OPERATINGSTATE_EDIT)
-{
-    if (vars.exists("$param.Object1Type_param") && vars.get("$param.Object1Type_param"))
-    {
-        // TODO: maybe use the Context_entity when jdito can call other entities over consumers.
-        result.string(project.getDataModel(project.DATAMODEL_KIND_CONTEXT, vars.get("$param.Object1Type_param"))[1]);
-    }
-}
-else
+if (vars.exists("$field.OBJECT2_TYPE") && vars.get("$field.OBJECT2_TYPE"))
 {
-    if (vars.get("$field.OBJECT1_TYPE"))
-        result.string(project.getDataModel(project.DATAMODEL_KIND_CONTEXT, vars.get("$field.OBJECT1_TYPE"))[1]);
+    result.string(project.getDataModel(project.DATAMODEL_KIND_CONTEXT, vars.get("$field.OBJECT2_TYPE"))[1]);
 }
\ No newline at end of file
diff --git a/entity/ObjectRelation_entity/entityfields/object2_type/valueProcess.js b/entity/ObjectRelation_entity/entityfields/object2_type/valueProcess.js
index 57711c82d2..55e043e903 100644
--- a/entity/ObjectRelation_entity/entityfields/object2_type/valueProcess.js
+++ b/entity/ObjectRelation_entity/entityfields/object2_type/valueProcess.js
@@ -3,7 +3,7 @@ import("system.neon");
 import("system.vars");
 
 var recordstate = vars.get("$sys.recordstate");
-if (recordstate == neon.OPERATINGSTATE_NEW || recordstate == neon.OPERATINGSTATE_EDIT)
+if (recordstate == neon.OPERATINGSTATE_NEW)
 {
     if (vars.exists("$param.Object2Type_param") && vars.get("$param.Object2Type_param"))
     {
diff --git a/entity/ObjectRelation_entity/entityfields/objects1/children/objecttype_param/code.js b/entity/ObjectRelation_entity/entityfields/objects1/children/objecttype_param/code.js
index b3edc8d512..3b6f82bbce 100644
--- a/entity/ObjectRelation_entity/entityfields/objects1/children/objecttype_param/code.js
+++ b/entity/ObjectRelation_entity/entityfields/objects1/children/objecttype_param/code.js
@@ -2,5 +2,5 @@ import("system.logging");
 import("system.vars");
 import("system.result");
 
-logging.log("type: " + vars.get("$field.OBJECT1_TYPE"))
+logging.log("set type: " + vars.get("$field.OBJECT1_TYPE"))
 result.string(vars.get("$field.OBJECT1_TYPE"))
\ No newline at end of file
diff --git a/entity/ObjectRelation_entity/entityfields/objects2/children/objecttype_param/code.js b/entity/ObjectRelation_entity/entityfields/objects2/children/objecttype_param/code.js
index 4ed3a2ece0..e4c1084f9a 100644
--- a/entity/ObjectRelation_entity/entityfields/objects2/children/objecttype_param/code.js
+++ b/entity/ObjectRelation_entity/entityfields/objects2/children/objecttype_param/code.js
@@ -1,6 +1,4 @@
-import("system.logging");
 import("system.vars");
 import("system.result");
 
-logging.log("type2: " + vars.get("$field.OBJECT1_TYPE"))
-result.string(vars.get("$field.OBJECT1_TYPE"))
\ No newline at end of file
+result.string(vars.get("$field.OBJECT2_TYPE"))
\ No newline at end of file
diff --git a/entity/Object_entity/Object_entity.aod b/entity/Object_entity/Object_entity.aod
index 291e591054..09a765c262 100644
--- a/entity/Object_entity/Object_entity.aod
+++ b/entity/Object_entity/Object_entity.aod
@@ -2,6 +2,7 @@
 <entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.0" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.2.0">
   <name>Object_entity</name>
   <majorModelMode>DISTRIBUTED</majorModelMode>
+  <titleProcess>%aditoprj%/entity/Object_entity/titleProcess.js</titleProcess>
   <recordContainer>jdito</recordContainer>
   <entityFields>
     <entityProvider>
@@ -29,6 +30,8 @@
     <entityParameter>
       <name>ObjectRowId_param</name>
       <expose v="true" />
+      <triggerRecalculation v="true" />
+      <mandatory v="false" />
       <description>PARAMETER</description>
     </entityParameter>
     <entityProvider>
@@ -53,11 +56,13 @@
         <entityParameter>
           <name>ObjectRowId_param</name>
           <expose v="true" />
+          <triggerRecalculation v="true" />
           <mandatory v="true" />
         </entityParameter>
         <entityParameter>
           <name>ObjectType_param</name>
           <expose v="true" />
+          <triggerRecalculation v="true" />
           <mandatory v="true" />
         </entityParameter>
       </children>
@@ -89,6 +94,7 @@
         <entityParameter>
           <name>ObjectType_param</name>
           <expose v="true" />
+          <triggerRecalculation v="true" />
           <mandatory v="true" />
         </entityParameter>
       </children>
diff --git a/entity/Object_entity/recordcontainers/jdito/contentProcess.js b/entity/Object_entity/recordcontainers/jdito/contentProcess.js
index 56ed060e51..e5a6d3fab4 100644
--- a/entity/Object_entity/recordcontainers/jdito/contentProcess.js
+++ b/entity/Object_entity/recordcontainers/jdito/contentProcess.js
@@ -3,26 +3,17 @@ import("system.vars");
 import("system.logging");
 import("system.result");
 import("Context_lib");
-logging.log("huuihuihihi");
+
+logging.log(vars.get("$param.ObjectType_param").toSource())
 
 if (vars.exists("$param.ObjectType_param") && vars.get("$param.ObjectType_param"))
 {
     if (vars.exists("$param.ObjectRowId_param") && vars.get("$param.ObjectRowId_param"))
     {
-        logging.log(vars.get("$param.ObjectType_param"))
-        logging.log(ContextUtils.getContextDataSql(vars.get("$param.ObjectType_param"), vars.get("$param.ObjectRowId_param")))
-        logging.log(db.table(vars.get("$param.ObjectRowId_param"), ContextUtils.getContextDataSql(vars.get("$param.ObjectType_param"), vars.get("$param.ObjectRowId_param"))).toSource())
-        
         result.object(db.table(vars.get("$param.ObjectRowId_param"), ContextUtils.getContextDataSql(vars.get("$param.ObjectType_param"), vars.get("$param.ObjectRowId_param"))));
-    } else {
-        logging.log(vars.get("$param.ObjectType_param").toSource())
-        
     }
-    logging.log(ContextUtils.getContextDataSql(vars.get("$param.ObjectType_param")))
-    logging.log(db.table(ContextUtils.getContextDataSql(vars.get("$param.ObjectType_param"))).toSource())
+    
     result.object(db.table(ContextUtils.getContextDataSql(vars.get("$param.ObjectType_param"))))
 } else {
-    logging.log(vars.get("$param.ObjectType_param").toSource())
-    logging.log(vars.get("$param.ObjectRowId_param").toSource())
     result.object([]);
 } 
diff --git a/entity/Object_entity/titleProcess.js b/entity/Object_entity/titleProcess.js
new file mode 100644
index 0000000000..db324a8efc
--- /dev/null
+++ b/entity/Object_entity/titleProcess.js
@@ -0,0 +1,4 @@
+import("system.vars");
+import("system.result");
+
+result.string(vars.get("$field.TITLE"))
\ No newline at end of file
diff --git a/process/Context_lib/process.js b/process/Context_lib/process.js
index e174274981..272ebfddfe 100644
--- a/process/Context_lib/process.js
+++ b/process/Context_lib/process.js
@@ -36,19 +36,6 @@ ContextUtils.getContextName = function(pContextId)
     return pContextId;
 }
 
-/**
- * Get all contexts of the project.
- * 
- * @return {String[][]} [ ["contextid", "contextName" ], [..., ...], ...]
- */
-ContextUtils.getContexts = function() 
-{
-    // TODO: The name is currently also the id. This may change.
-    return project.getDataModelNames(project.DATAMODEL_KIND_CONTEXT).map(function(contextName) {
-        return [contextName, ContextUtils.getContextName(contextName)];
-    });
-}
-
 /**
  * TODO: !!!temporary function until you can get fields from another Entity!!!
  */
@@ -93,7 +80,7 @@ ContextUtils.getNameSubselectSql = function(pContextIdDbField, pRowIdDbField)
 ContextUtils.getNameSql = function(pContextId, pRowId)
 {
     var selectMap = ContextUtils._getSelectMap()
-    return SqlCondition.begin().andPrepare(selectMap[pContextId][1] + "." + selectMap[pContextId][2], pRowId).buildSql("select " + selectMap[contextId][0] + " from " + selectMap[contextId][1], "1=2");
+    return SqlCondition.begin().andPrepare(selectMap[pContextId][1] + "." + selectMap[pContextId][2], pRowId).buildSql("select " + selectMap[pContextId][0] + " from " + selectMap[pContextId][1], "1=2");
 }
 
 /**
-- 
GitLab