Face

Each face tag determine template that render engine use for generate output tags. In fact faces is block of html than concatenated to each other with render engine for generate result.

Note

Renderable Commands at last must have one face tag.

structure of face tag
1
2
3
<face level="" filter="" replace="" function="" rowtype="">
   [template]
</face>

Important

The face tag has no child tags.

Attributes

level string[] optional [##-notaion

Determine level of data. This property use in hierarchy structure data that present in parent and child record and use in Tree Command and List Command.

filter string optional [##-notaion

Represent sql where clauses that apply to data source and remove unneeded rows.

replace boolean optional [##-notaion

Boolean flag that determine replace process must be apply over face render result or no. for more details see Replace

function boolean optional [##-notaion

Boolean flag that determine user-defined function must call over face render result or no.

rowtype FaceRowType optional [##-notaion

Enum that determine type of row that face can apply to it. For more details see FaceRowType

template html [##-notaion

Determine template that rendering process use it to format output result. In face tag, child elements considered as template.

Note

For see more Information about [##-notaion,see [## Notation

Remarks

During rendering process,for each data item (object or row) in data source (collection or table) presented with ../../data-binding , data part (property or cell) injected in template of face tag and add to rendering result.

Data injection apply with @ notation like @col[index] or @[name]. @col[index] notation use for inject data based on index of cell or property in data item and @[name] notation use property or cell name in data item.

For example suppose data source db.users exist like bellow:

db.users

id

managerid

fname

lname

team-name

1

-1

s.alireza

qamsari

team-a

2

1

amir

jalali

team-b

3

1

akbar

karimi

team-a

And we have a Print Command command like this:

1
2
3
4
5
6
7
<basis core="print" datamembername="db.users">

   <face>
      <div>@fname</div>
   </face>

</basis>

The face has no filter, so all data item (row in this example) use this face for generate result. As you see, template is:

<div>@fname</div>

As mentioned earlier, @ notation use in template of face for data injection. @fname in this example use @[name] notation that say replace value of name property or cell with me. So for first row of collection, injection result is:

1
<div>s.alireza</div>

and as same, for second and third data row result is:

1
2
<div>amir</div>
<div>akbar</div>

Like @[name] notation that use name, we can do data injection by use of data index with @col[id] notation. For example if face template change to:

<div>@col4<div>

present this result:

1
2
3
<div>qamsari</div>
<div>jalali</div>
<div>karimi</div>

Note

In @col[index] notation, base index is 1 that means first cell of row has index 1 , second cell has index 2 and so on.

Each template can contain more than one data injection in deferent notaion. For example, following template generate a tag for each row:

<a href="/@col1">@fname - @lname</a>

and result is:

1
2
3
<a href="/1">s.alireza - qamsari</a>
<a href="/2">amir - jalali</a>
<a href="/3">akbar - karimi</a>

Note

Data injection process is case-insensitive, so @col1 or @Col1 is equal.