I've just uploaded 0.0.2.0 that should fix all reported bugs and finish the implementation of the main panel (though not all the fields).
This release includes a significant improvement in ContactFX functions, so I thought I better explain how they work...
Functions are defined within {} and must be prefaced with an "=" (like field links). Functions have the general form of { FunctionName 'optional constant' functionObject }. To use a function just type it into the appropriate text box, eg:
would display as "MOWBRAY".
Functions generally comprise:
- a function name: case insensitive
- an optional function constant: defined within ''
- a function object, that can be:
- a string: defined within ""
- a path to a field, eg: id#fieldnumber or id#fieldname
- a function: defined within {}
- an array of function objects: defined within []
Current FunctionsInitialise:
{ INITIALISE name.additional }
If the text in the Additional Name field is "perry" the above function will return "P."
UCase:
If the text in the Family Name field of Contact #1 is "mowbray" the above function will return "MOWBRAY"
Join:
{ JOIN ', ' [ "me" , name.additional , { UCASE name.additional(2) } ] }
This is a conditional join: if the object being joined is non-blank then it is joined to the previous joined result with the constant. If the text in the first Additional Name is "myself" and the text in the second Additional Name field is "i" then the above function will return "me, myself, I"
Ternary:
{ name.additional ?? 'Additional Name is empty' }
Well, like a ternary... if the Object is blank then the constant is returned otherwise the Object is returned. For example: If the Additional Name field is empty then the above function will return the constant "Additional Name is empty".
If the Additional Name field has the text "Samuel" then the above function will return "Samuel".
Conditional Pad:
If the text in the Family Name field is empty the above function will return an empty string "".
If the Family Name field has the text "Mowbray" the above function will return "Mr. Mowbray"
{ name.family && ' esq.'}
If the text in the Family Name field is empty the above function will return an empty string "".
If the Family Name field has the text "Mowbray" the above function will return "Mowbray esq."
This userField: has a definition that will modify the default displayName field:
<fielddefinition>
<name value="displayname" />
<source value="= { { JOIN ' ' [ name.given , { INITIALISE name.additional } , { UCASE name.family } ] } ?? 'New Entry' }" />
</fielddefinition>
When unzipped into the userFields subDirectory the displayName field display:
Given Name = "Perry"
Additional Name = ""
Family Name = "Mowbray"
Display Name = "Perry MOWBRAY"
Given Name = "Sandra"
Additional Name = "Jane"
Family Name = "Mowbray"
Display Name = "Sandra J. MOWBRAY"
The easiest way to link between contacts is to drag the field to be
linked to, onto the the field to be
linked from holding down the ALT key. Linked fields can be referenced by Contact.ID or Contact.GUID and Field.ID or Field.Name, although they are always displayed as Contact.ID#Field.ID.
Next stop... list Panel