Skip to content
Snippets Groups Projects
Commit 05fa5562 authored by Johannes Hörmann's avatar Johannes Hörmann
Browse files

implement private Person more generic for object relation.

-> each consumer to ObjectTree can define several object types/ids which should be displayed
parent bc572ec7
No related branches found
No related tags found
No related merge requests found
Showing
with 108 additions and 74 deletions
......@@ -25,7 +25,7 @@
<displayValueProcess>%aditoprj%/entity/ObjectRelationType_entity/entityfields/source_relation_title/displayValueProcess.js</displayValueProcess>
</entityField>
<entityParameter>
<name>SourceObjectType_param</name>
<name>SourceObjectTypes_param</name>
<expose v="true" />
<description>PARAMETER</description>
</entityParameter>
......@@ -40,10 +40,6 @@
</entityDependency>
</dependencies>
<children>
<entityParameter>
<name>SourceObjectType_param</name>
<expose v="true" />
</entityParameter>
<entityParameter>
<name>OnlyFirstSide_param</name>
<valueProcess>%aditoprj%/entity/ObjectRelationType_entity/entityfields/objectrelationtypes/children/onlyfirstside_param/valueProcess.js</valueProcess>
......
......@@ -9,7 +9,7 @@ if (vars.exists("$local.idvalues") && vars.get("$local.idvalues"))
else
{
result.object(ObjectRelationUtils.getPossibleRelationTypes(
vars.exists("$param.SourceObjectType_param") ? vars.get("$param.SourceObjectType_param") : undefined,
vars.exists("$param.SourceObjectTypes_param") ? JSON.parse(vars.getString("$param.SourceObjectTypes_param")) : undefined,
true,
(vars.exists("$param.OnlyFirstSide_param") ? vars.get("$param.OnlyFirstSide_param") : "0") == "1",
undefined,
......
......@@ -33,27 +33,17 @@
</dependencies>
<children>
<entityParameter>
<name>ObjectId_param</name>
<expose v="true" />
<mandatory v="true" />
</entityParameter>
<entityParameter>
<name>ObjectType_param</name>
<expose v="true" />
<mandatory v="true" />
</entityParameter>
<entityParameter>
<name>RelationType_param</name>
<name>Uid_param</name>
<expose v="false" />
</entityParameter>
<entityParameter>
<name>Uid_param</name>
<name>RelationTypes_param</name>
<expose v="false" />
</entityParameter>
</children>
</entityProvider>
<entityParameter>
<name>ObjectId_param</name>
<name>ObjectIds_param</name>
<expose v="true" />
<mandatory v="true" />
<description>PARAMETER</description>
......@@ -85,13 +75,13 @@
</dependency>
<children>
<entityParameter>
<name>SourceObjectType_param</name>
<valueProcess>%aditoprj%/entity/ObjectTree_entity/entityfields/objectrelationtypes/children/sourceobjecttype_param/valueProcess.js</valueProcess>
<name>SourceObjectTypes_param</name>
<valueProcess>%aditoprj%/entity/ObjectTree_entity/entityfields/objectrelationtypes/children/sourceobjecttypes_param/valueProcess.js</valueProcess>
</entityParameter>
</children>
</entityConsumer>
<entityParameter>
<name>ObjectType_param</name>
<name>ObjectTypes_param</name>
<expose v="true" />
<mandatory v="true" />
<description>PARAMETER</description>
......@@ -165,14 +155,14 @@
</children>
</entityActionGroup>
<entityParameter>
<name>RelationType_param</name>
<name>RelationTypes_param</name>
<expose v="true" />
<description>PARAMETER</description>
</entityParameter>
<entityParameter>
<name>Uid_param</name>
<expose v="true" />
<description>Needed to load ONE Objectrelation together with ObjectId_param and ObjectType_param to determine the side</description>
<description>Needed to load ONE Objectrelation together with ObjectIds_param and ObjectTypes_param to determine the side</description>
</entityParameter>
</entityFields>
<recordContainers>
......
......@@ -13,18 +13,18 @@ if (vars.exists("$sys.selection") && vars.getString("$sys.selection"))
if (isObjectRelationNode)
{
parentId = uid[0];
parentObjectType = uid[3];
parentIds = [uid[0]];
parentObjectTypes = [uid[3]];
}
else
{
parentId = vars.getString("$param.ObjectId_param");
parentObjectType = vars.getString("$param.ObjectType_param");
parentIds = JSON.parse(vars.getString("$param.ObjectIds_param"));
parentObjectTypes = JSON.parse(vars.getString("$param.ObjectTypes_param"));
}
var params = {
"ObjectId_param" : parentId,
"ObjectType_param" : parentObjectType,
"ObjectIds_param" : JSON.stringify(parentIds),
"ObjectTypes_param" : JSON.stringify(parentObjectTypes),
"RelationType_param" : vars.get("$field.OBJECTRELATIONTYPEID")
};
......
import("system.vars");
import("system.result");
result.string(vars.get("$param.ObjectType_param"));
\ No newline at end of file
result.string(vars.getString("$param.ObjectTypes_param"));
\ No newline at end of file
......@@ -3,7 +3,19 @@ import("system.neon");
import("system.vars");
import("ObjectRelation_lib");
if (vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW && vars.exists("$param.ObjectId_param") && vars.get("$param.ObjectId_param"))
if (vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW && vars.exists("$param.ObjectIds_param") && vars.get("$param.ObjectIds_param"))
{
result.string(vars.get("$param.ObjectId_param"));
var targetContext = vars.get("$field.TARGET_CONTEXT");
var myObjectIds = JSON.parse(vars.getString("$param.ObjectIds_param"))
var myContextTypes = JSON.parse(vars.getString("$param.ObjectTypes_param"))
var targetId = "";
if (myContextTypes && myObjectIds)
{
var index = myContextTypes.indexOf(targetContext);
targetId = myObjectIds[index];
}
result.string(targetId);
}
\ No newline at end of file
......@@ -49,23 +49,19 @@ else
}
}
if (vars.get("$param.ObjectId_param"))
if (vars.get("$param.ObjectIds_param") && vars.get("$param.ObjectTypes_param"))
{
var originalObjectId = vars.get("$param.ObjectId_param");
// Special handling for private persons. Private Person should also be displayed if in Person
var showPrivatePerson = vars.get("$param.ObjectType_param") == "Person";
var privatePersonId = ContactUtils.getPersId(originalObjectId);
_loadObjectRelationTree(tree, originalObjectId, vars.get("$param.ObjectType_param"), selectedRelationType);
var originalObjectIds = JSON.parse(vars.getString("$param.ObjectIds_param"));
var originalObjectTypes = JSON.parse(vars.getString("$param.ObjectTypes_param"));
// private persons need the personid
if (showPrivatePerson)
if (originalObjectIds.length != originalObjectTypes.length)
{
privatePersonId = ContactUtils.getPersId(originalObjectId)
if (privatePersonId)
{
_loadObjectRelationTree(tree, privatePersonId, "PrivatePerson", selectedRelationType);
}
throw "the parameters ObjectIds_param and ObjectTypes_param do not contain a json array of the same length";
}
for (let i = 0; i < originalObjectIds.length; i++)
{
_loadObjectRelationTree(tree, originalObjectIds[i], originalObjectTypes[i], selectedRelationType);
}
}
}
......@@ -272,7 +268,7 @@ function _getEntryData(pObjectId, pDirection, pRelationType1, pRelationType2, pP
function _getRelationTypes(pObjectType)
{
// TODO: load from entity when possible
return ObjectRelationUtils.getPossibleRelationTypes(pObjectType, true);
return ObjectRelationUtils.getPossibleRelationTypes([pObjectType], true);
}
/**
......
......@@ -23,21 +23,11 @@ if (selectedObjectRelationTypeId)
{
objectId1 = vars.get("$field.TARGET_ID");
objectId2 = vars.get("$field.PARENT_ID");
if (objectType2 == "PrivatePerson")
{
objectId2 = ContactUtils.getPersId(objectId2);
}
}
else
{
objectId1 = vars.get("$field.PARENT_ID");
objectId2 = vars.get("$field.TARGET_ID");
if (objectType1 == "PrivatePerson")
{
objectId1 = ContactUtils.getPersId(objectId1);
}
}
db.insertData("AB_OBJECTRELATION", [
......
......@@ -248,6 +248,12 @@
<entityName>PrivatePerson_entity</entityName>
<fieldName>#PROVIDER</fieldName>
</dependency>
<children>
<entityParameter>
<name>ExcludedPersonIds_param</name>
<valueProcess>%aditoprj%/entity/Object_entity/entityfields/privatepersons/children/excludedpersonids_param/valueProcess.js</valueProcess>
</entityParameter>
</children>
</entityConsumer>
</entityFields>
<recordContainers>
......
import("system.vars");
import("system.result");
if (vars.exists("$param.ExcludedObjectIds_param") && vars.get("$param.ExcludedObjectIds_param"))
{
result.string(vars.get("$param.ExcludedObjectIds_param"))
}
\ No newline at end of file
......@@ -494,12 +494,12 @@
</dependency>
<children>
<entityParameter>
<name>ObjectId_param</name>
<valueProcess>%aditoprj%/entity/Organisation_entity/entityfields/objecttrees/children/objectid_param/valueProcess.js</valueProcess>
<name>ObjectIds_param</name>
<valueProcess>%aditoprj%/entity/Organisation_entity/entityfields/objecttrees/children/objectids_param/valueProcess.js</valueProcess>
</entityParameter>
<entityParameter>
<name>ObjectType_param</name>
<valueProcess>%aditoprj%/entity/Organisation_entity/entityfields/objecttrees/children/objecttype_param/valueProcess.js</valueProcess>
<name>ObjectTypes_param</name>
<valueProcess>%aditoprj%/entity/Organisation_entity/entityfields/objecttrees/children/objecttypes_param/valueProcess.js</valueProcess>
</entityParameter>
</children>
</entityConsumer>
......
import("system.vars");
import("system.result");
result.string(vars.get("$field.CONTACTID"));
\ No newline at end of file
result.object([vars.get("$field.CONTACTID")]);
\ No newline at end of file
import("system.result");
import("Context_lib");
result.string(ContextUtils.getCurrentContextId());
\ No newline at end of file
result.object([ContextUtils.getCurrentContextId()]);
\ No newline at end of file
......@@ -539,12 +539,12 @@ Usually this is used for filtering COMMUNICATION-entries by a specified contact
</dependency>
<children>
<entityParameter>
<name>ObjectId_param</name>
<valueProcess>%aditoprj%/entity/Person_entity/entityfields/objecttrees/children/objectid_param/valueProcess.js</valueProcess>
<name>ObjectIds_param</name>
<valueProcess>%aditoprj%/entity/Person_entity/entityfields/objecttrees/children/objectids_param/valueProcess.js</valueProcess>
</entityParameter>
<entityParameter>
<name>ObjectType_param</name>
<valueProcess>%aditoprj%/entity/Person_entity/entityfields/objecttrees/children/objecttype_param/valueProcess.js</valueProcess>
<name>ObjectTypes_param</name>
<valueProcess>%aditoprj%/entity/Person_entity/entityfields/objecttrees/children/objecttypes_param/valueProcess.js</valueProcess>
</entityParameter>
</children>
</entityConsumer>
......
import("system.vars");
import("system.result");
result.string(vars.get("$field.CONTACTID"));
\ No newline at end of file
result.object([vars.get("$field.CONTACTID"), vars.get("$field.PERSON_ID")]);
\ No newline at end of file
import("system.result");
import("Context_lib");
result.string(ContextUtils.getCurrentContextId());
\ No newline at end of file
result.object([ContextUtils.getCurrentContextId(), "PrivatePerson"]);
\ No newline at end of file
......@@ -10,14 +10,7 @@ cond.andPrepareVars("CONTACT.ORGANISATION_ID", "$param.OrgId_param")
if (vars.exists("$param.ExcludedContactIds_param") && vars.get("$param.ExcludedContactIds_param"))
{
var excludedContacts = JSON.parse(vars.getString("$param.ExcludedContactIds_param"));
var excludedCond = SqlCondition.begin();
excludedContacts.forEach(function(pContactId)
{
excludedCond.andPrepare("CONTACT.CONTACTID", pContactId, "#<>?");
});
cond.andSqlCondition(excludedCond, "1=1");
cond.andIn("CONTACT.CONTACTID", excludedContacts, undefined, true);
}
//TODO: use a preparedCondition (.build instead of .translate) when available #1030812 #1034026
......
......@@ -52,11 +52,17 @@
<contentType>DATE</contentType>
<valueProcess>%aditoprj%/entity/PrivatePerson_entity/entityfields/date_new/valueProcess.js</valueProcess>
</entityField>
<entityParameter>
<name>ExcludedPersonIds_param</name>
<expose v="true" />
</entityParameter>
</entityFields>
<recordContainers>
<dbRecordContainer>
<name>db</name>
<alias>Data_alias</alias>
<conditionProcess>%aditoprj%/entity/PrivatePerson_entity/recordcontainers/db/conditionProcess.js</conditionProcess>
<orderClauseProcess>%aditoprj%/entity/PrivatePerson_entity/recordcontainers/db/orderClauseProcess.js</orderClauseProcess>
<linkInformation>
<linkInformation>
<name>b2ae9c8c-c6de-46b7-ae10-e6823576f1ff</name>
......
import("system.vars");
import("system.db");
import("system.result");
import("Sql_lib");
var cond = new SqlCondition();
if (vars.get("$param.ExcludedPersonIds_param"))
{
var excludedPersons = JSON.parse(vars.getString("$param.ExcludedPersonIds_param"));
cond.andIn("PERSON.PERSONID", excludedPersons, undefined, true);
}
//TODO: use a preparedCondition (.build instead of .translate) when available #1030812 #1034026
result.string(cond.translate("1 = 1"));
\ No newline at end of file
import("system.result");
import("system.db");
result.object({
"PERSON.FIRSTNAME": db.ASCENDING,
"PERSON.LASTNAME": db.ASCENDING
});
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment