From 9ded24abdf9fd999c134909e6f2e041653c0b3dd Mon Sep 17 00:00:00 2001 From: Johannes Hoermann <j.hoermann@adito.de> Date: Fri, 1 Feb 2019 14:22:19 +0100 Subject: [PATCH] Object Relations in Pers und Org --- .../ObjectRelation_entity.aod | 28 +++++++++++++------ .../object1_rowid.displayvalue/expression.js | 4 +++ .../object2_rowid.displayvalue/expression.js | 4 +++ entity/Org_entity/Org_entity.aod | 20 +++++++++++++ .../children/anyobjectrowid_param/code.js | 4 +++ .../children/anyobjecttype_param/code.js | 4 +++ entity/Pers_entity/Pers_entity.aod | 7 +++-- .../children/anyobjectrowid_param/code.js | 4 ++- .../children/anyobjecttype_param/code.js | 4 +++ .../children/object1rowid_param/code.js | 2 -- .../ObjectRelationFilter_view.aod | 10 ++++--- .../ObjectRelationPreview_view.aod | 4 +++ neonView/OrgMain_view/OrgMain_view.aod | 5 ++++ .../data_alias/data/example_org/ORG_gfk.xml | 11 +++++++- process/Context_lib/process.js | 23 +++++++++++++++ process/Sql_lib/process.js | 2 +- 16 files changed, 115 insertions(+), 21 deletions(-) create mode 100644 entity/ObjectRelation_entity/recordcontainers/db/recordfieldmappings/object1_rowid.displayvalue/expression.js create mode 100644 entity/ObjectRelation_entity/recordcontainers/db/recordfieldmappings/object2_rowid.displayvalue/expression.js create mode 100644 entity/Org_entity/entityfields/objectrelation_dfo/children/anyobjectrowid_param/code.js create mode 100644 entity/Org_entity/entityfields/objectrelation_dfo/children/anyobjecttype_param/code.js create mode 100644 entity/Pers_entity/entityfields/objectrelation_dfo/children/anyobjecttype_param/code.js delete mode 100644 entity/Pers_entity/entityfields/objectrelation_dfo/children/object1rowid_param/code.js diff --git a/entity/ObjectRelation_entity/ObjectRelation_entity.aod b/entity/ObjectRelation_entity/ObjectRelation_entity.aod index e242ddcd607..33b356f0587 100644 --- a/entity/ObjectRelation_entity/ObjectRelation_entity.aod +++ b/entity/ObjectRelation_entity/ObjectRelation_entity.aod @@ -202,6 +202,20 @@ <name>ByAnyObject_dfi</name> <fieldType>DEPENDENCY_IN</fieldType> <recordContainer>db</recordContainer> + <dependencies> + <entityDependency> + <name>744259f7-3b08-4147-8376-3311b7a35712</name> + <entityName>Pers_entity</entityName> + <fieldName>ObjectRelation_dfo</fieldName> + <isOutgoing v="false" /> + </entityDependency> + <entityDependency> + <name>38acc24a-716c-4c58-9e6f-9d3ccca0ab43</name> + <entityName>Org_entity</entityName> + <fieldName>ObjectRelation_dfo</fieldName> + <isOutgoing v="false" /> + </entityDependency> + </dependencies> <children> <entityParameter> <name>Object1Rowid_param</name> @@ -233,14 +247,6 @@ <name>test_dfi</name> <fieldType>DEPENDENCY_IN</fieldType> <recordContainer>db</recordContainer> - <dependencies> - <entityDependency> - <name>b36f00d5-6840-464e-9dba-41ef8f3b25bc</name> - <entityName>Pers_entity</entityName> - <fieldName>ObjectRelation_dfo</fieldName> - <isOutgoing v="false" /> - </entityDependency> - </dependencies> </entityIncomingField> </entityFields> <recordContainers> @@ -297,7 +303,11 @@ </dbRecordFieldMapping> <dbRecordFieldMapping> <name>OBJECT2_ROWID.displayValue</name> - <recordfield>AB_OBJECTRELATION.OBJECT2_TYPE</recordfield> + <expression>%aditoprj%/entity/ObjectRelation_entity/recordcontainers/db/recordfieldmappings/object2_rowid.displayvalue/expression.js</expression> + </dbRecordFieldMapping> + <dbRecordFieldMapping> + <name>OBJECT1_ROWID.displayValue</name> + <expression>%aditoprj%/entity/ObjectRelation_entity/recordcontainers/db/recordfieldmappings/object1_rowid.displayvalue/expression.js</expression> </dbRecordFieldMapping> </recordFieldMappings> </dbRecordContainer> diff --git a/entity/ObjectRelation_entity/recordcontainers/db/recordfieldmappings/object1_rowid.displayvalue/expression.js b/entity/ObjectRelation_entity/recordcontainers/db/recordfieldmappings/object1_rowid.displayvalue/expression.js new file mode 100644 index 00000000000..3333669e4c6 --- /dev/null +++ b/entity/ObjectRelation_entity/recordcontainers/db/recordfieldmappings/object1_rowid.displayvalue/expression.js @@ -0,0 +1,4 @@ +import("system.result"); +import("Context_lib"); + +result.string(ContextUtils.getNameSubselectSql("OBJECT1_TYPE", "OBJECT1_ROWID")) \ No newline at end of file diff --git a/entity/ObjectRelation_entity/recordcontainers/db/recordfieldmappings/object2_rowid.displayvalue/expression.js b/entity/ObjectRelation_entity/recordcontainers/db/recordfieldmappings/object2_rowid.displayvalue/expression.js new file mode 100644 index 00000000000..bb0a5084254 --- /dev/null +++ b/entity/ObjectRelation_entity/recordcontainers/db/recordfieldmappings/object2_rowid.displayvalue/expression.js @@ -0,0 +1,4 @@ +import("system.result"); +import("Context_lib"); + +result.string(ContextUtils.getNameSubselectSql("OBJECT2_TYPE", "OBJECT2_ROWID")) \ No newline at end of file diff --git a/entity/Org_entity/Org_entity.aod b/entity/Org_entity/Org_entity.aod index 97d9735f432..98c17e0c4be 100644 --- a/entity/Org_entity/Org_entity.aod +++ b/entity/Org_entity/Org_entity.aod @@ -490,6 +490,26 @@ </entityParameter> </children> </entityOutgoingField> + <entityOutgoingField> + <name>ObjectRelation_dfo</name> + <title>Relations</title> + <fieldType>DEPENDENCY_OUT</fieldType> + <dependency> + <name>dependency</name> + <entityName>ObjectRelation_entity</entityName> + <fieldName>ByAnyObject_dfi</fieldName> + </dependency> + <children> + <entityParameter> + <name>AnyObjectRowid_param</name> + <code>%aditoprj%/entity/Org_entity/entityfields/objectrelation_dfo/children/anyobjectrowid_param/code.js</code> + </entityParameter> + <entityParameter> + <name>AnyObjectType_param</name> + <code>%aditoprj%/entity/Org_entity/entityfields/objectrelation_dfo/children/anyobjecttype_param/code.js</code> + </entityParameter> + </children> + </entityOutgoingField> </entityFields> <recordContainers> <dbRecordContainer> diff --git a/entity/Org_entity/entityfields/objectrelation_dfo/children/anyobjectrowid_param/code.js b/entity/Org_entity/entityfields/objectrelation_dfo/children/anyobjectrowid_param/code.js new file mode 100644 index 00000000000..c6f4ef17387 --- /dev/null +++ b/entity/Org_entity/entityfields/objectrelation_dfo/children/anyobjectrowid_param/code.js @@ -0,0 +1,4 @@ +import("system.vars"); +import("system.result"); + +result.string(vars.get("$field.ORGID")) \ No newline at end of file diff --git a/entity/Org_entity/entityfields/objectrelation_dfo/children/anyobjecttype_param/code.js b/entity/Org_entity/entityfields/objectrelation_dfo/children/anyobjecttype_param/code.js new file mode 100644 index 00000000000..efc405cb8b7 --- /dev/null +++ b/entity/Org_entity/entityfields/objectrelation_dfo/children/anyobjecttype_param/code.js @@ -0,0 +1,4 @@ +import("system.result"); +import("Context_lib"); + +result.string(ContextUtils.getCurrentContextId()) \ No newline at end of file diff --git a/entity/Pers_entity/Pers_entity.aod b/entity/Pers_entity/Pers_entity.aod index 69c34c67ede..834f62928bf 100644 --- a/entity/Pers_entity/Pers_entity.aod +++ b/entity/Pers_entity/Pers_entity.aod @@ -508,16 +508,17 @@ <dependency> <name>dependency</name> <entityName>ObjectRelation_entity</entityName> - <fieldName>test_dfi</fieldName> + <fieldName>ByAnyObject_dfi</fieldName> </dependency> <children> <entityParameter> <name>AnyObjectRowid_param</name> + <title></title> <code>%aditoprj%/entity/Pers_entity/entityfields/objectrelation_dfo/children/anyobjectrowid_param/code.js</code> </entityParameter> <entityParameter> - <name>Object1Rowid_param</name> - <code>%aditoprj%/entity/Pers_entity/entityfields/objectrelation_dfo/children/object1rowid_param/code.js</code> + <name>AnyObjectType_param</name> + <code>%aditoprj%/entity/Pers_entity/entityfields/objectrelation_dfo/children/anyobjecttype_param/code.js</code> </entityParameter> </children> </entityOutgoingField> diff --git a/entity/Pers_entity/entityfields/objectrelation_dfo/children/anyobjectrowid_param/code.js b/entity/Pers_entity/entityfields/objectrelation_dfo/children/anyobjectrowid_param/code.js index 53156731f81..cf4c12ddfb0 100644 --- a/entity/Pers_entity/entityfields/objectrelation_dfo/children/anyobjectrowid_param/code.js +++ b/entity/Pers_entity/entityfields/objectrelation_dfo/children/anyobjectrowid_param/code.js @@ -1,2 +1,4 @@ +import("system.vars"); import("system.result"); -result.string("anyid") \ No newline at end of file + +result.string(vars.get("$field.PERSID")) \ No newline at end of file diff --git a/entity/Pers_entity/entityfields/objectrelation_dfo/children/anyobjecttype_param/code.js b/entity/Pers_entity/entityfields/objectrelation_dfo/children/anyobjecttype_param/code.js new file mode 100644 index 00000000000..efc405cb8b7 --- /dev/null +++ b/entity/Pers_entity/entityfields/objectrelation_dfo/children/anyobjecttype_param/code.js @@ -0,0 +1,4 @@ +import("system.result"); +import("Context_lib"); + +result.string(ContextUtils.getCurrentContextId()) \ No newline at end of file diff --git a/entity/Pers_entity/entityfields/objectrelation_dfo/children/object1rowid_param/code.js b/entity/Pers_entity/entityfields/objectrelation_dfo/children/object1rowid_param/code.js deleted file mode 100644 index 6a409c5df04..00000000000 --- a/entity/Pers_entity/entityfields/objectrelation_dfo/children/object1rowid_param/code.js +++ /dev/null @@ -1,2 +0,0 @@ -import("system.result"); -result.string("1 id") \ No newline at end of file diff --git a/neonView/ObjectRelationFilter_view/ObjectRelationFilter_view.aod b/neonView/ObjectRelationFilter_view/ObjectRelationFilter_view.aod index 7f1be075c72..167f255e110 100644 --- a/neonView/ObjectRelationFilter_view/ObjectRelationFilter_view.aod +++ b/neonView/ObjectRelationFilter_view/ObjectRelationFilter_view.aod @@ -14,6 +14,10 @@ <entityField>#ENTITY</entityField> <title>Object Relation</title> <columns> + <neonTableColumn> + <name>2567cbb7-0228-4103-b153-e5f623f46382</name> + <entityField>OBJECT1_TYPE</entityField> + </neonTableColumn> <neonTableColumn> <name>4fb01378-e6c6-4fb5-8b3b-8a90b3550105</name> <entityField>OBJECT1_ROWID</entityField> @@ -21,10 +25,8 @@ <expandRatio v="100" /> </neonTableColumn> <neonTableColumn> - <name>c5eb8814-31f0-437d-aea8-c72301b00deb</name> - <entityField>OBJECT1_TYPE</entityField> - <width v="75" /> - <expandRatio v="100" /> + <name>158130c9-8aa3-4ad6-a608-0271c70178bc</name> + <entityField>OBJECT2_TYPE</entityField> </neonTableColumn> <neonTableColumn> <name>4495cf75-82d1-4ad3-9a48-86ad44eadc37</name> diff --git a/neonView/ObjectRelationPreview_view/ObjectRelationPreview_view.aod b/neonView/ObjectRelationPreview_view/ObjectRelationPreview_view.aod index 5da23f94155..2d823012ed6 100644 --- a/neonView/ObjectRelationPreview_view/ObjectRelationPreview_view.aod +++ b/neonView/ObjectRelationPreview_view/ObjectRelationPreview_view.aod @@ -13,6 +13,10 @@ <entityField>#ENTITY</entityField> <title>Object</title> <fields> + <entityFieldLink> + <name>8b21eea2-b6ec-492f-9bfe-4937b61ba1ef</name> + <entityField>OBJECT1_ROWID</entityField> + </entityFieldLink> <entityFieldLink> <name>eabe1737-7a31-4181-8c32-bda6a9f7d7e9</name> <entityField>OBJECT2_ROWID</entityField> diff --git a/neonView/OrgMain_view/OrgMain_view.aod b/neonView/OrgMain_view/OrgMain_view.aod index 8c01252daf7..6b93cb0c7b3 100644 --- a/neonView/OrgMain_view/OrgMain_view.aod +++ b/neonView/OrgMain_view/OrgMain_view.aod @@ -45,5 +45,10 @@ <entityField>OrgAttr_dfo</entityField> <view>AttributeRelationTree_view</view> </neonViewReference> + <neonViewReference> + <name>ee7395b9-b787-4662-9021-f6e2d486bd16</name> + <entityField>ObjectRelation_dfo</entityField> + <view>ObjectRelationFilter_view</view> + </neonViewReference> </children> </neonView> diff --git a/others/db_changes/data_alias/data/example_org/ORG_gfk.xml b/others/db_changes/data_alias/data/example_org/ORG_gfk.xml index 8e7e3da1fa4..f6aa3443053 100644 --- a/others/db_changes/data_alias/data/example_org/ORG_gfk.xml +++ b/others/db_changes/data_alias/data/example_org/ORG_gfk.xml @@ -10,7 +10,16 @@ <column name="TYPE" valueNumeric="0"/> <column name="PRICE_POLITICS" valueNumeric="1"/> <column name="STRENGTH" valueNumeric="1"/> - <column name="WEAKNESS" valueNumeric="1"/> + <column name="WEAKNESS" valueNumeric="1"/> + </insert> + <insert tableName="AB_OBJECTRELATION"> + <column name="AB_OBJECTRELATIONID" value="102b5d75-304b-41f4-9426-ba13d4dce1c3"/> + <column name="USER_NEW" value="admin"/> + <column name="DATE_NEW" valueDate="2018-06-13T09:03:43"/> + <column name="OBJECT1_TYPE" value="Org_context"/> + <column name="OBJECT1_ROWID" value="b219b58a-f120-42d8-9a64-0b176501eac7"/> + <column name="OBJECT2_TYPE" value="Pers_context"/> + <column name="OBJECT2_ROWID" value="1a67eaa7-21da-4a18-97ab-755ac5cb74f7"/> </insert> <insert tableName="RELATION"> <column name="RELATIONID" value="b219b58a-f120-42d8-9a64-0b176501eac7"/> diff --git a/process/Context_lib/process.js b/process/Context_lib/process.js index 0e8909df452..34ae91ccc4b 100644 --- a/process/Context_lib/process.js +++ b/process/Context_lib/process.js @@ -1,4 +1,6 @@ +import("system.SQLTYPES"); import("system.vars"); +import("Sql_lib"); /** * Methods to manage contexts. @@ -39,4 +41,25 @@ ContextUtils.getContextName = function(pContextId) { // TODO: currently the Id is the context name. This will be changed maybe return pContextId; +} + +/** + * TODO: !!!temporary function until you can get fields from another Entity!!! + */ +ContextUtils.getNameSubselectSql = function(pContextIdDbField, pRowIdDbField) +{ + var select = "(case " + pContextIdDbField + " "; + var maskingUtils = new SqlMaskingUtils(); + + select += "when 'Org_context' then (select \"NAME\" from ORG where ORG.ORGID = " + pRowIdDbField + ") "; + select += "when 'Pers_context' then (select " + maskingUtils.concat(["FIRSTNAME", "LASTNAME"]) + " from PERS where PERS.PERSID = " + pRowIdDbField + ") "; + select += "when 'Activity_context' then (select SUBJECT from ACTIVITY where ACTIVITY.ACTIVITYID = " + pRowIdDbField + ") "; + select += "when 'Salesproject_context' then (select " + maskingUtils.concat([maskingUtils.cast("PROJECTCODE", SQLTYPES.VARCHAR, 10), "':'", "PROJECTTITLE"]) + " from SALESPROJECT where SALESPROJECT.SALESPROJECTID = " + pRowIdDbField + ") "; + // TODO: keywords sind noch nicht in der DB somit gibt es nichts ähnliches zu getKeySQL. + //select += "when 'Contract_context' then (select " + maskingUtils.concat([SqlMaskingUtils.cast("CONTRACTCODE", "varchar", 10), getKeySQL("CONTRACTTYPE", "CONTRACTTYPE" )]) + " from CONTRACT where CONTRACT.CONTRACTID = " + pRowIdDbField + ") "; + select += "when 'Contract_context' then (select " + maskingUtils.cast("CONTRACTCODE", SQLTYPES.VARCHAR, 10) + " from CONTRACT where CONTRACT.CONTRACTID = " + pRowIdDbField + ") "; + select += "else 'Not defined in ContextUtils.getNameSql()!'"; + select += "end)"; + + return select; } \ No newline at end of file diff --git a/process/Sql_lib/process.js b/process/Sql_lib/process.js index a0c6a5adc3e..f0790c7a73e 100644 --- a/process/Sql_lib/process.js +++ b/process/Sql_lib/process.js @@ -655,7 +655,7 @@ SqlMaskingUtils.prototype.cast = function (field, targetDatatype, targetLength) } if (sqlDataType == undefined) { - throw new Error("sqlDataType");//TODO: add usefull message + throw new Error("sqlDataType is undefined");//TODO: add usefull message } if(targetLength == undefined) -- GitLab