Skip to content
Snippets Groups Projects
Commit 3e96b416 authored by David Büchler's avatar David Büchler
Browse files

Temporarily added a new Tab in the Persons main view. It calculates the...

Temporarily added a new Tab in the Persons main view. It calculates the duplicates for the specific person on the fly. Results arent cached.
parent 81181eac
No related branches found
No related tags found
No related merge requests found
......@@ -1123,6 +1123,28 @@ Usually this is used for filtering COMMUNICATION-entries by a specified contact
<name>IndexPhoneticFirstname</name>
<valueProcess>%aditoprj%/entity/Person_entity/entityfields/indexphoneticfirstname/valueProcess.js</valueProcess>
</entityField>
<entityConsumer>
<name>SelfDuplicatesUncached</name>
<dependency>
<name>dependency</name>
<entityName>Person_entity</entityName>
<fieldName>SelfDuplicatesProvider</fieldName>
</dependency>
<children>
<entityParameter>
<name>DuplicateActionsControl_param</name>
<valueProcess>%aditoprj%/entity/Person_entity/entityfields/selfduplicatesuncached/children/duplicateactionscontrol_param/valueProcess.js</valueProcess>
</entityParameter>
<entityParameter>
<name>DuplicateCurrentContactId_param</name>
<valueProcess>%aditoprj%/entity/Person_entity/entityfields/selfduplicatesuncached/children/duplicatecurrentcontactid_param/valueProcess.js</valueProcess>
</entityParameter>
<entityParameter>
<name>OnlyShowContactIds_param</name>
<valueProcess>%aditoprj%/entity/Person_entity/entityfields/selfduplicatesuncached/children/onlyshowcontactids_param/valueProcess.js</valueProcess>
</entityParameter>
</children>
</entityConsumer>
</entityFields>
<recordContainers>
<dbRecordContainer>
......
import("system.result");
result.string("1");//todo use keyword
\ No newline at end of file
import("system.vars");
import("system.result");
result.string(vars.get("$field.CONTACTID"));
\ No newline at end of file
import("system.indexsearch");
import("system.project");
import("system.logging");
import("system.vars");
import("DuplicateScanner_lib");
import("system.result");
let targetEntity = "Person_entity";
let valuesToCheck = {};
var entityModel = project.getEntityStructure(targetEntity);
//Read the values of all available entity fields and write the fieldname7value combination
//as key/value pairs into an object. This is used to trigger the scan for duplicates
let fieldValue = "";
let entityFields = [];
for (fieldname in entityModel.fields)
{
field = entityModel.fields[fieldname];
if(field.fieldType == project.ENTITYFIELDTYPE_FIELD)
{
fieldValue = vars.get("$field." + field.name);
if(fieldValue != null && fieldValue != "")
{
// logging.log("field.name -> " + field.name);
valuesToCheck[field.name] = fieldValue;
// logging.log("field value -> " + fieldValue);
}
}
}
let scanResults = DuplicateScannerUtils.ScanForDuplicates("PersonDuplicates", targetEntity,
valuesToCheck, null);
let duplicateIds = [];
//Run thru every duplicate result and read out the id.
//Do it now to have a simple array on all usages lateron.
for (let i = 0; i < scanResults.length; i++)
{
let duplicateContactId = scanResults[i][indexsearch.FIELD_ID];
duplicateIds.push(duplicateContactId);
}
logging.log("duplicateIds.length -> " + duplicateIds.length);
/*
* To achieve that if there are no duplicates, no contacts should be shown and therefore returned by the
* recordcontainer, an invalid id gets returned. It then is used in the conditionProcess to load the duplicates.
* Because of its invalidity, no records are shown.
*/
if(duplicateIds.length == 0)
result.string(JSON.stringify(["nodata"]));
else
result.string(JSON.stringify(duplicateIds));
\ No newline at end of file
......@@ -69,5 +69,10 @@
<entityField>SelfDuplicates</entityField>
<view>PersonFilter_view</view>
</neonViewReference>
<neonViewReference>
<name>d8db5358-3aed-46d9-8e57-1fd093eb92ad</name>
<entityField>SelfDuplicatesUncached</entityField>
<view>PersonFilter_view</view>
</neonViewReference>
</children>
</neonView>
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