From 998e3376c45c6118b55df7a376567707bc3e0742 Mon Sep 17 00:00:00 2001
From: "a.schindlbeck" <a.schindlbeck@adito.de>
Date: Fri, 7 Aug 2020 14:30:59 +0200
Subject: [PATCH] #1060652 Favorites: Filter-View various Contexts bound

---
 entity/Favorite_entity/Favorite_entity.aod    | 32 +++++++
 .../object_type/displayValueProcess.js        |  5 ++
 .../entityfields/row_id/onValueChange.js      | 88 +++++++++++++++++++
 .../Organisation_entity.aod                   |  1 +
 .../FavoriteFilter_view.aod                   | 42 ++++++++-
 5 files changed, 164 insertions(+), 4 deletions(-)
 create mode 100644 entity/Favorite_entity/entityfields/object_type/displayValueProcess.js
 create mode 100644 entity/Favorite_entity/entityfields/row_id/onValueChange.js

diff --git a/entity/Favorite_entity/Favorite_entity.aod b/entity/Favorite_entity/Favorite_entity.aod
index 40e467b44b..73dce01c7e 100644
--- a/entity/Favorite_entity/Favorite_entity.aod
+++ b/entity/Favorite_entity/Favorite_entity.aod
@@ -18,9 +18,11 @@
     </entityField>
     <entityField>
       <name>ROW_ID</name>
+      <onValueChange>%aditoprj%/entity/Favorite_entity/entityfields/row_id/onValueChange.js</onValueChange>
     </entityField>
     <entityField>
       <name>OBJECT_TYPE</name>
+      <displayValueProcess>%aditoprj%/entity/Favorite_entity/entityfields/object_type/displayValueProcess.js</displayValueProcess>
     </entityField>
     <entityField>
       <name>USER_ID</name>
@@ -31,6 +33,36 @@
     <entityField>
       <name>GROUP_TYPE</name>
     </entityField>
+    <entityField>
+      <name>TITLE</name>
+      <valueProcess>%aditoprj%/entity/Favorite_entity/entityfields/title/valueProcess.js</valueProcess>
+    </entityField>
+    <entityConsumer>
+      <name>Offers</name>
+      <dependency>
+        <name>dependency</name>
+        <entityName>Offer_entity</entityName>
+        <fieldName>#PROVIDER</fieldName>
+      </dependency>
+      <children>
+        <entityParameter>
+          <name>OfferOriginal_Id_param</name>
+          <valueProcess>%aditoprj%/entity/Favorite_entity/entityfields/offers/children/offeroriginal_id_param/valueProcess.js</valueProcess>
+        </entityParameter>
+      </children>
+    </entityConsumer>
+    <entityField>
+      <name>CONSUMED_OFFER</name>
+      <consumer>Offers</consumer>
+      <onValueChangeTypes>
+        <element>MASK</element>
+        <element>PROCESS</element>
+        <element>PROCESS_SETVALUE</element>
+      </onValueChangeTypes>
+    </entityField>
+    <entityField>
+      <name>TITLE_RELATION</name>
+    </entityField>
   </entityFields>
   <recordContainers>
     <dbRecordContainer>
diff --git a/entity/Favorite_entity/entityfields/object_type/displayValueProcess.js b/entity/Favorite_entity/entityfields/object_type/displayValueProcess.js
new file mode 100644
index 0000000000..2658ccbeb3
--- /dev/null
+++ b/entity/Favorite_entity/entityfields/object_type/displayValueProcess.js
@@ -0,0 +1,5 @@
+import("system.vars");
+import("system.translate");
+import("system.result");
+
+result.string(translate.text(vars.get("$field.OBJECT_TYPE")));
\ No newline at end of file
diff --git a/entity/Favorite_entity/entityfields/row_id/onValueChange.js b/entity/Favorite_entity/entityfields/row_id/onValueChange.js
new file mode 100644
index 0000000000..d742908a8d
--- /dev/null
+++ b/entity/Favorite_entity/entityfields/row_id/onValueChange.js
@@ -0,0 +1,88 @@
+import("system.logging");
+import("Communication_lib");
+import("Sql_lib");
+import("system.vars");
+import("system.neon");
+import("system.entities");
+
+var rowid = vars.get("local.value");
+if (rowid)
+{
+    var titleFieldName;
+    var nameResult;
+    var relationResult;
+    
+    var config = entities.createConfigForLoadingRows();
+    config.uid(vars.get("$field.ROW_ID"));
+    
+    if(vars.get("$field.OBJECT_TYPE") == "Person")
+    {
+        titleFieldNames = ["FULL_NAME_fieldGroup"];
+        config.entity("Person_entity");
+        config.fields(titleFieldNames)
+        nameResult = entities.getRow(config)[titleFieldNames[0]];
+    }
+    
+    if(vars.get("$field.OBJECT_TYPE") == "Organisation")
+    {
+        titleFieldNames = ["NAME"];
+        config.entity("Organisation_entity");
+        config.fields(titleFieldNames);
+        nameResult = entities.getRow(config)[titleFieldNames[0]];
+    }
+    
+    if(vars.get("$field.OBJECT_TYPE") == "Offer")
+    {
+        titleFieldNames = ["FullOfferCode"];
+        config.entity("Offer_entity");
+        config.fields(titleFieldNames);
+        nameResult = entities.getRow(config)[titleFieldNames[0]];
+    }
+    
+    if(vars.get("$field.OBJECT_TYPE") == "Contract")
+    {
+        titleFieldNames = ["CONTRACTCODE"];
+        config.entity("Contract_entity");
+        config.fields(titleFieldNames);
+        nameResult = entities.getRow(config)[titleFieldNames[0]];
+    }
+    
+    if(vars.get("$field.OBJECT_TYPE") == "Product")
+    {
+        titleFieldNames = ["PRODUCTCODE", "PRODUCTNAME"];
+        config.entity("Contract_entity");
+        config.fields(titleFieldNames);
+        nameResult = entities.getRow(config)[titleFieldNames[0]];
+        relationResult = entities.getRow(config)[titleFieldNames[1]];
+    }
+    
+    if(vars.get("$field.OBJECT_TYPE") == "Productprice")
+    {
+        titleFieldNames = ["PRICELIST", "CONTACT_ID"];
+        config.entity("Productprice_entity");
+        config.fields(titleFieldNames);
+        var row = entities.getRow(config);
+        nameResult = row[titleFieldNames[0]];
+        
+        titleFieldNames = ["PERSON_TITLE"];
+        config.entity("Contact_entity");
+        config.uid(row[titleFieldNames[1]]);
+        config.fields(titleFieldNames);
+        relationResult = entities.getRow(config)[titleFieldNames[0]];
+    }
+    
+    if(vars.get("$field.OBJECT_TYPE") == "Salesproject")
+    {
+        titleFieldNames = ["PRICELIST"];
+        config.entity("Productprice_entity");
+        config.fields(titleFieldNames);
+        nameResult = entities.getRow(config)[titleFieldNames[0]];
+    }
+    
+    
+
+    neon.setFieldValues({
+        "$field.TITLE" : nameResult,
+        "$field.TITLE_RELATION" : relationResult != undefined && relationResult != null && relationResult != "" ? relationResult : ""
+    });
+}
\ No newline at end of file
diff --git a/entity/Organisation_entity/Organisation_entity.aod b/entity/Organisation_entity/Organisation_entity.aod
index cbd7cb44ef..e9eee92243 100644
--- a/entity/Organisation_entity/Organisation_entity.aod
+++ b/entity/Organisation_entity/Organisation_entity.aod
@@ -10,6 +10,7 @@
   <afterUiInit>%aditoprj%/entity/Organisation_entity/afterUiInit.js</afterUiInit>
   <afterOperatingState>%aditoprj%/entity/Organisation_entity/afterOperatingState.js</afterOperatingState>
   <initFilterProcess>%aditoprj%/entity/Organisation_entity/initFilterProcess.js</initFilterProcess>
+  <useFavorites v="true" />
   <iconId>VAADIN:BUILDING</iconId>
   <imageProcess>%aditoprj%/entity/Organisation_entity/imageProcess.js</imageProcess>
   <titlePlural>Companies</titlePlural>
diff --git a/neonView/FavoriteFilter_view/FavoriteFilter_view.aod b/neonView/FavoriteFilter_view/FavoriteFilter_view.aod
index bdc4d59246..c047206405 100644
--- a/neonView/FavoriteFilter_view/FavoriteFilter_view.aod
+++ b/neonView/FavoriteFilter_view/FavoriteFilter_view.aod
@@ -3,6 +3,7 @@
   <name>FavoriteFilter_view</name>
   <title>FavoriteFilter_view</title>
   <majorModelMode>DISTRIBUTED</majorModelMode>
+  <filterable v="false" />
   <layout>
     <groupLayout>
       <name>layout</name>
@@ -11,22 +12,27 @@
   <children>
     <tableViewTemplate>
       <name>FavoriteFilter</name>
-      <iconField></iconField>
+      <iconField>#IMAGE</iconField>
       <titleField>ROW_ID</titleField>
       <subtitleField>GROUP_TITLE</subtitleField>
       <descriptionField>OBJECT_TYPE</descriptionField>
       <entityField>#ENTITY</entityField>
       <linkedColumns />
       <isCreatable v="false" />
+      <isEditable v="false" />
       <title>favoriteFilter_view</title>
       <columns>
+        <neonTableColumn>
+          <name>b235f917-4c59-4b8a-be07-ea5371f69f3b</name>
+          <entityField>OBJECT_TYPE</entityField>
+        </neonTableColumn>
         <neonTableColumn>
           <name>075e4e29-515c-4d9e-b195-f481af367b42</name>
-          <entityField>ROW_ID</entityField>
+          <entityField>TITLE</entityField>
         </neonTableColumn>
         <neonTableColumn>
-          <name>b235f917-4c59-4b8a-be07-ea5371f69f3b</name>
-          <entityField>OBJECT_TYPE</entityField>
+          <name>9cd27b17-be4d-4621-91d5-42f3d1e8ee7d</name>
+          <entityField>TITLE_RELATION</entityField>
         </neonTableColumn>
         <neonTableColumn>
           <name>929170b5-b460-4558-9aa6-f7657f49098c</name>
@@ -34,5 +40,33 @@
         </neonTableColumn>
       </columns>
     </tableViewTemplate>
+    <treeTableViewTemplate>
+      <name>FavoriteTreeTable</name>
+      <parentField>UID</parentField>
+      <nodeExpandedField>OBJECT_TYPE</nodeExpandedField>
+      <defaultGroupFields />
+      <entityField>#ENTITY</entityField>
+      <linkedColumns>
+        <element>OBJECT_TYPE</element>
+        <element>GROUP_TITLE</element>
+      </linkedColumns>
+      <isCreatable v="false" />
+      <isEditable v="false" />
+      <informationField>TITLE</informationField>
+      <columns>
+        <neonTreeTableColumn>
+          <name>75cd966b-ee07-42bb-ac6b-b29d93cb4c51</name>
+          <entityField>TITLE</entityField>
+        </neonTreeTableColumn>
+        <neonTreeTableColumn>
+          <name>e5a62307-2b26-4891-9a4b-55342f693e97</name>
+          <entityField>GROUP_TITLE</entityField>
+        </neonTreeTableColumn>
+        <neonTreeTableColumn>
+          <name>3302f6db-8bb4-4e48-b89b-273439e46a31</name>
+          <entityField>OBJECT_TYPE</entityField>
+        </neonTreeTableColumn>
+      </columns>
+    </treeTableViewTemplate>
   </children>
 </neonView>
-- 
GitLab