From 41688b6bfad808b5de76a86c22f7eef4fc912cb0 Mon Sep 17 00:00:00 2001
From: Johannes Hoermann <j.hoermann@adito.de>
Date: Tue, 19 Feb 2019 11:01:26 +0100
Subject: [PATCH] fix activity-relations

---
 .../ActivityLink_entity.aod                   | 27 +++++++------------
 .../entityfields/activity_id/valueProcess.js  |  4 +++
 .../activitylinkid/valueProcess.js            |  7 +++++
 .../object_rowid/displayValueProcess.js       |  7 +++++
 .../recordcontainers/db/conditionProcess.js   |  9 ++++---
 entity/Activity_entity/Activity_entity.aod    | 10 +++----
 .../links/children/activityid_param/code.js   |  4 +++
 .../recordcontainers/db/conditionProcess.js   |  1 +
 .../ActivityLinkFilter_view.aod               |  1 +
 9 files changed, 43 insertions(+), 27 deletions(-)
 create mode 100644 entity/ActivityLink_entity/entityfields/activity_id/valueProcess.js
 create mode 100644 entity/ActivityLink_entity/entityfields/activitylinkid/valueProcess.js
 create mode 100644 entity/ActivityLink_entity/entityfields/object_rowid/displayValueProcess.js
 create mode 100644 entity/Activity_entity/entityfields/links/children/activityid_param/code.js

diff --git a/entity/ActivityLink_entity/ActivityLink_entity.aod b/entity/ActivityLink_entity/ActivityLink_entity.aod
index be409330d53..bf6bac7e1b7 100644
--- a/entity/ActivityLink_entity/ActivityLink_entity.aod
+++ b/entity/ActivityLink_entity/ActivityLink_entity.aod
@@ -10,9 +10,11 @@
     </entityProvider>
     <entityField>
       <name>ACTIVITYLINKID</name>
+      <valueProcess>%aditoprj%/entity/ActivityLink_entity/entityfields/activitylinkid/valueProcess.js</valueProcess>
     </entityField>
     <entityField>
       <name>OBJECT_TYPE</name>
+      <title>Object type</title>
       <consumer>Contexts</consumer>
       <linkedContext>Context</linkedContext>
       <displayValueProcess>%aditoprj%/entity/ActivityLink_entity/entityfields/object_type/displayValueProcess.js</displayValueProcess>
@@ -22,22 +24,12 @@
       <title>Beziehung</title>
       <consumer>Objects</consumer>
       <linkedContextProcess>%aditoprj%/entity/ActivityLink_entity/entityfields/object_rowid/linkedContextProcess.js</linkedContextProcess>
+      <displayValueProcess>%aditoprj%/entity/ActivityLink_entity/entityfields/object_rowid/displayValueProcess.js</displayValueProcess>
     </entityField>
     <entityField>
       <name>ACTIVITY_ID</name>
+      <valueProcess>%aditoprj%/entity/ActivityLink_entity/entityfields/activity_id/valueProcess.js</valueProcess>
     </entityField>
-    <entityParameter>
-      <name>ObjectRowid_param</name>
-      <expose v="true" />
-      <triggerRecalculation v="true" />
-      <description>PARAMETER</description>
-    </entityParameter>
-    <entityParameter>
-      <name>ObjectType_param</name>
-      <expose v="true" />
-      <triggerRecalculation v="true" />
-      <description>PARAMETER</description>
-    </entityParameter>
     <entityProvider>
       <name>Link</name>
       <fieldType>DEPENDENCY_IN</fieldType>
@@ -54,11 +46,7 @@
       </dependencies>
       <children>
         <entityParameter>
-          <name>ObjectRowid_param</name>
-          <expose v="true" />
-        </entityParameter>
-        <entityParameter>
-          <name>ObjectType_param</name>
+          <name>ActivityId_param</name>
           <expose v="true" />
         </entityParameter>
       </children>
@@ -88,6 +76,11 @@
         <fieldName>#PROVIDER</fieldName>
       </dependency>
     </entityConsumer>
+    <entityParameter>
+      <name>ActivityId_param</name>
+      <expose v="true" />
+      <description>PARAMETER</description>
+    </entityParameter>
   </entityFields>
   <recordContainers>
     <dbRecordContainer>
diff --git a/entity/ActivityLink_entity/entityfields/activity_id/valueProcess.js b/entity/ActivityLink_entity/entityfields/activity_id/valueProcess.js
new file mode 100644
index 00000000000..3d7f987d124
--- /dev/null
+++ b/entity/ActivityLink_entity/entityfields/activity_id/valueProcess.js
@@ -0,0 +1,4 @@
+import("system.vars");
+import("system.result");
+
+result.string(vars.get("$param.ActivityId_param"))
\ No newline at end of file
diff --git a/entity/ActivityLink_entity/entityfields/activitylinkid/valueProcess.js b/entity/ActivityLink_entity/entityfields/activitylinkid/valueProcess.js
new file mode 100644
index 00000000000..86ef789e064
--- /dev/null
+++ b/entity/ActivityLink_entity/entityfields/activitylinkid/valueProcess.js
@@ -0,0 +1,7 @@
+import("system.util");
+import("system.vars");
+import("system.result");
+import("system.neon");
+
+if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW)
+    result.string(util.getNewUUID());
\ No newline at end of file
diff --git a/entity/ActivityLink_entity/entityfields/object_rowid/displayValueProcess.js b/entity/ActivityLink_entity/entityfields/object_rowid/displayValueProcess.js
new file mode 100644
index 00000000000..4bec272246c
--- /dev/null
+++ b/entity/ActivityLink_entity/entityfields/object_rowid/displayValueProcess.js
@@ -0,0 +1,7 @@
+import("system.vars");
+import("system.db");
+import("system.result");
+import("Context_lib");
+
+if (vars.exists("$field.OBJECT_TYPE") && vars.get("$field.OBJECT_TYPE"))
+    result.string(db.cell(ContextUtils.getNameSql(vars.get("$field.OBJECT_TYPE"), vars.get("$field.OBJECT_ROWID"))));
\ No newline at end of file
diff --git a/entity/ActivityLink_entity/recordcontainers/db/conditionProcess.js b/entity/ActivityLink_entity/recordcontainers/db/conditionProcess.js
index af5991c0cd5..f5f56bc8bb2 100644
--- a/entity/ActivityLink_entity/recordcontainers/db/conditionProcess.js
+++ b/entity/ActivityLink_entity/recordcontainers/db/conditionProcess.js
@@ -1,10 +1,13 @@
+import("system.logging");
+import("system.vars");
 import("system.db");
 import("system.result");
 import("Sql_lib");
 
+logging.log("GET: " + vars.get("$param.ActivityId_param"))
+
 var cond = SqlCondition.begin()
-                       .andPrepareVars("ACTIVITYLINK.OBJECT_ROWID", "$param.ObjectRowid_param")
-                       .andPrepareVars("ACTIVITYLINK.OBJECT_TYPE", "$param.ObjectType_param");
+                       .andPrepareVars("ACTIVITYLINK.ACTIVITY_ID", "$param.ActivityId_param");
 
 //TODO: use a preparedCondition when available #1030812 #1034026
-result.string(db.translateCondition(cond.build("1 = 1")));
\ No newline at end of file
+result.string(db.translateCondition(cond.build("1 = 0")));
\ No newline at end of file
diff --git a/entity/Activity_entity/Activity_entity.aod b/entity/Activity_entity/Activity_entity.aod
index 529db43dc53..52c7b770790 100644
--- a/entity/Activity_entity/Activity_entity.aod
+++ b/entity/Activity_entity/Activity_entity.aod
@@ -147,7 +147,6 @@
     </entityField>
     <entityParameter>
       <name>ActivityId_param</name>
-      <expose v="true" />
       <mandatory v="false" />
       <description>PARAMETER</description>
     </entityParameter>
@@ -184,12 +183,9 @@
       </dependency>
       <children>
         <entityParameter>
-          <name>ObjectRowid_param</name>
-          <code>%aditoprj%/entity/Activity_entity/entityfields/links/children/objectrowid_param/code.js</code>
-        </entityParameter>
-        <entityParameter>
-          <name>ObjectType_param</name>
-          <code>%aditoprj%/entity/Activity_entity/entityfields/links/children/objecttype_param/code.js</code>
+          <name>ActivityId_param</name>
+          <code>%aditoprj%/entity/Activity_entity/entityfields/links/children/activityid_param/code.js</code>
+          <expose v="true" />
         </entityParameter>
       </children>
     </entityConsumer>
diff --git a/entity/Activity_entity/entityfields/links/children/activityid_param/code.js b/entity/Activity_entity/entityfields/links/children/activityid_param/code.js
new file mode 100644
index 00000000000..a8267b62060
--- /dev/null
+++ b/entity/Activity_entity/entityfields/links/children/activityid_param/code.js
@@ -0,0 +1,4 @@
+import("system.vars");
+import("system.result");
+
+result.string(vars.get("$field.ACTIVITYID"));
\ No newline at end of file
diff --git a/entity/Activity_entity/recordcontainers/db/conditionProcess.js b/entity/Activity_entity/recordcontainers/db/conditionProcess.js
index f8ca95a041f..9c8391b37c4 100644
--- a/entity/Activity_entity/recordcontainers/db/conditionProcess.js
+++ b/entity/Activity_entity/recordcontainers/db/conditionProcess.js
@@ -9,6 +9,7 @@ if (vars.exists("$param.RowId_param") && vars.get("$param.RowId_param") && vars.
     var activityLinkCond = SqlCondition.begin().andPrepareVars("ACTIVITYLINK.OBJECT_ROWID", "$param.RowId_param")
                                                .andPrepareVars("ACTIVITYLINK.OBJECT_TYPE", "$param.ObjectId_param");
 
+                                                            // TODO: more performant way than IN. Maybe a join??
     cond.and(db.translateStatement(activityLinkCond.buildSql("ACTIVITY.ACTIVITYID in (select ACTIVITYLINK.ACTIVITY_ID from ACTIVITYLINK", "1=2", ")")))
 }
     
diff --git a/neonView/ActivityLinkFilter_view/ActivityLinkFilter_view.aod b/neonView/ActivityLinkFilter_view/ActivityLinkFilter_view.aod
index 597ac9502a5..d7491b7ecf0 100644
--- a/neonView/ActivityLinkFilter_view/ActivityLinkFilter_view.aod
+++ b/neonView/ActivityLinkFilter_view/ActivityLinkFilter_view.aod
@@ -11,6 +11,7 @@
   <children>
     <tableViewTemplate>
       <name>ActivityLinkFilter_template</name>
+      <autoNewRow v="true" />
       <entityField>#ENTITY</entityField>
       <columns>
         <neonTableColumn>
-- 
GitLab