Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 19 Next »

Data templates transforms the data model into text or HTML content. Templates are used in many areas in emakin like form controls or mail templates etc.

Templates basically consist on xpath queries within {{ and }} qualifiers.

Assume you have a field named as "username" in data model. Basic temple example is:

Hello {{ username }}!

This template generates the following content if username field is set to "Madonna"

Hello Madonna!

Because all xml values are string by default no formatting performed while generating the output. If you need to perform formatting for number or date values you have to convert data type or use format function.

Culture Support

Data templates are culture sensitive and all formatting rules are derived from culture being used. Culture information automatically derived from user preferences or you can explicitly specify. If no culture specified invariant culture is used.

Selecting culture in scripting environment

Formatting with specific culture
var myNode = $Xml.Parse("<Customer><Name>John</Name><BirthDate>2014-01-31T09:00:00+02:00</BirthDate></Customer");
var result = myNode.Format('<p>{{Customer/BirthDate}}</p>', {
  Culture : 'tr-TR'
});
// result : <p>31.1.2014 09:00:00 +02:00</p>

Data Type Formatting

Text Formatting

All text or string types are exactly transformed without any format performed.

Number formatting

Functions like "Sum" or "Count" already return number values therefore there is no need for number conversions but incase necessary number() function should be used. Ex: number(MyNumberField) 

All number values are by default formatted with decimal rules.

Examples:

TemplateOutputsCulture
{{ 12345678912345 }}12345678912345 
{{ 123456.78912345 }}123456.78912345 
{{ number(123456.78912345678912345) }}123456.789123457 
{{ format( number(123456.789) ) }}123456.789 
{{ format( number(123456789) ) }}123456789 
{{ format( number(123456789), 'n') }}123,456,789.00 
{{ format( number(123456789), 'n') }}123.456.789,00tr-TR
{{ format( number(123456789), 'n0') }}123,456,789 
{{ format(number(123456789), 'c') }}123.456.789,00 ₺tr-TR

Date formatting

Template system does automatically detects the xml date types in formatted with "YYYY-MM-DD-THH:MM:SSTZ". Emakin always use this format in data model for date values.

Date time values in other formats are interpreted as a text value.

Examples:

Assume data model has an MyDate field with 2014-01-31T09:00:00+02:00 value.

TemplateOutputsCulture
{{ MyDate }}01/31/2014 16:04:12 +02:00 
{{ format(MyDate,'dd/MM/yyyy') }}31/01/2014 
{{ format(MyDate) }}31.1.2014 09:00tr-TR
{{ format(MyDate,'o') }}
2014-01-31T09:00:00+02:00
 

Scripting example

var myNode = $Xml.Parse("<Customer><Name>John</Name><BirthDate>2014-01-31T09:00:00+02:00</BirthDate></Customer");
var result = myNode.Format('<p>Birth date : {{Customer/BirthDate}}</p>');

// result : <p>Birth date : 01/31/2014 09:00:00 +02:00</p>

Scripting example

A way to remove time from date node

$Xml.SetValue('Test/testdate', new DateTimeOffset());  // testdate will be saved to XML as "2015-11-12T15:27:16.2568549+02:00"
$Xml.SetValue('Test/testdate2', $Xml.Format("{{ format(Test/testdate,'yyyy-MM-dd') }}"));  // testdate2 will be saved to XML as "2015-12-11"

// result : 2015-12-11

Conditional Formatting

If conditional rendering needed format below can be used;

if XPathConditon then Template
if XPathConditon then Template else Template

Examples:

Basic usage
{{ if Customer/Type = 'A' then <div>Important !</div> }}>
Basic usage with else clause
{{ if Customer/Type = 'A' then <div>Important !</div> else <div>{{Customer/Name}}</div> }}>

Repeating Template

If you need to apply template for multiple nodes in a data model you can use repeating template expression like following syntax:

ItemXPath => Template

This format applies same template for every matched element by ItemXPath.

Usage
{{ SAMPLE REPORT
   <h1>{{Customer/Name}}</h1>
   <table>
   {{ Rows/Row => 
     <tr><td>{{Date}}</td><td>{{Description}}</td></tr> }}
   </table> }}

Generates the following output:

SAMPLE REPORT
<h1>John</h1>
<table>
  <tr><td>2010-01-01</td><td>description</td></tr>
  <tr><td>2015-01-01</td><td>other description</td></tr>
</table>

Repeating with attribute

While generating HTML content some tags ( like table tag ) may become corrupted if {{ x => y}} template is used. As an alternative method format function supports the x-repeat attribute to perform repeating content. 

{{ SAMPLE REPORT
   <table>
     <tr x-repeat="Rows/Row">
       <td>{{Date}}</td><td>{{Description}}</td>
     </tr>
   </table> }}

This attribute can be used with any element. For example can be used with "li" tag also.

{{ <ul>
     <li x-repeat="Rows/Row">
       <span>{{Date}}</span>
     </li>
  </ul> }}

Recursive Repeating Template

If recursive repeating templates needed format below can be used;

ItemXPath =>> Template

For each item at specified in ItemXPath sub template is generated and also same template is repeated again for Template content recursively.

{{ <h1>SAMPLE REPORT</h1>
   {{ Sections/Section =>> 
      <h2>{{Name}}</h2>
      <p>{{Body}}</p>  }}
}}

result:

<h1>SAMPLE REPORT</h1>
<h2>My Section</h2>
<p>Section content</p>
<h2>Sub Section</h2>
<p>Child section content</p>

Template Variables

All of custom defined process variables can be use in templates. Additionally some of system properties are automatically imported to template engine. Because of environment limits client and server side variables uses different variable contexts.

Client Template Variables

In form scripts like form script, validation rules that running in client side environment following variables are defined;

Variable NameDescription
$staticUrlStatic resources base address. (ex: https://static.emakin.com/ )
$applicationUrlApplication base address. (ex: https://mydomain.emakin.com/app/ )
$ProcessUnique identifier of current process. (ex: 71E8B187-C049-4ba1-AE5E-6B0BAD6B7F42 )
$FolderNameName of current folder that process is saved. (ex: Customer Relations )
$CustomVariableDefined custom value.

Server Template Variables

In process scripts like pre work, post work and other scripts that running in server side environment following variables are defined;

Variable NameDescription
$ApplicationNameName of application. (ex: emakin.com )
$ApplicationUrlBase url of application (ex: emakin.com )
$DomainNameName of domain (ex: mydomain)
$DomainUrlUrl of domain (ex: https://mydomain.emakin.com )
$DomainLogoLogo image url of domain (ex: https://mydomain.emakin.com/logo.png )
$CustomVariableDefined custom value.

Activity Notification Template

Activity notifications like assigning a work item to a user or reminder notifications uses same template context. Addition the server variables following variables also can be used;

Variable NameDescription
$IdId number of work item
$WorkItemInstance of WorkItem. You can use . (dot) qualifier to access object properties like "$WorkItem.Instance.Number"
$RecipientsComma qualified recipient names. (ex: Ertan Tike, Emel Sayın)
$UrlUrl of work item. (ex: https://mydomain.emakin.com/app/?/workitem=1234 )
$AssignedToComma qualified user names of that work item assigned. (ex: Ertan Tike)

User Registration Template

Addition to server variables user registration invitation defines the following variables;

Variable NameDescription
$TicketDefines the system generated authentication token to embed in mail content.
$DisplayNameDefines the display name of user.


The following screen describes to create message templates. 

  • Click "Add New  Template" button, message templates design pop-up will open.

Name
Name of  message template.

Subject
Subject of message template.

Type
Type of message template.

  • Standart type is utilized to create content of written.
  • XSLT type is utilized to create content of  xml.

Click on "Done" button, edit and details button will appear below the form name. Details button is used for design message content.

Standart Type:

If standart type is chosen, content area will open on the same page. Message template consists from text and form special field. 

We will analysis the following screen content:

  • Dear is message of initiation word.
  • Identity is field of form. We want to bring data of identity from form to message. Before we find to identity under which title. 
  • Owner is title of identity.
  • To open two curly braces enter "Owner" name and add curved lined, enter "Identity" name and add two curly braces.



  • Click on html button , message template text will transform to html format. 



  • Click edit button under the form name, click done button.

When the process run, message will go to users e-mail address. 

Example message in an e-mail:

XSLT Type:

If XSLT type is chosen, content area will open on the same page. Message template consists from xml content.

You can use default templates or can create new templates.

 

 

  • No labels