Ana içeriğe geç

Veri Şablonları

Emakin'deki veri şablonları, veri modellerini metin veya HTML gibi çeşitli çıktı biçimlerine dönüştürür. Bu şablonlar, form denetimleri ve e-posta şablonları dâhil olmak üzere farklı Emakin bileşenlerinde kullanılır. Şablonlar, çift küme parantezi içine yerleştirilmiş XPath sorgularını kullanır {{ ve }}.

Örneğin, veri modelinde "username" adlı bir alan bulunduğunu varsayalım. Basit bir şablon şöyle olur:

1
Hello {{ username }}!

"username" alanı "Madonna" içeriyorsa oluşturulan çıktı şöyle olur:

1
Hello Madonna!

Tüm XML değerleri doğası gereği dizeler olarak ele alınır; bu nedenle otomatik veri türü biçimlendirmesi yapılmaz. Sayıları veya tarihleri biçimlendirmek için açık tür dönüştürme ya da biçimlendirme işlevleri gerekir.

Kültür Desteği

Veri şablonları kültüre duyarlıdır ve biçimlendirmeyi belirtilen kültüre göre uyarlar. Kültür genellikle kullanıcı tercihlerinden alınır ancak açıkça da ayarlanabilir. Kültür belirtilmezse değişmez kültür kullanılır.

Komut Dizisinde Kültür Belirtme

Aşağıdaki JavaScript örneği, belirli bir kültür ('tr-TR' - Türkçe) kullanılarak biçimlendirme yapılmasını gösterir:

1
2
3
4
5
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>

Veri Türü Biçimlendirmesi

Metin Biçimlendirme

Metin veya dize değerleri, örtük bir biçimlendirme olmadan oluşturulur.

Sayı Biçimlendirme

"Sum" ve "Count" gibi işlevler sayıları doğrudan döndürürken, number() gerekirse açık tür dönüştürmesi için işlevi kullanılabilir. Sayı değerleri varsayılan olarak ondalık kurallara göre biçimlendirilir.

Örnekler:

Şablon Çıktılar Kültür
{{ 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,00 tr-TR
{{ format( number(123456789), 'n0') }} 123,456,789
{{ format(number(123456789), 'c') }} 123.456.789,00 ₺ tr-TR

Tarih Biçimlendirme

Şablon sistemi, "YYYY-MM-DDTHH:MM:SSTZ" biçiminde biçimlendirilmiş XML tarih türlerini otomatik olarak tanır. Emakin, veri modelindeki tarih değerleri için bu biçimi tutarlı şekilde kullanır. Diğer biçimlerdeki tarihler dizge olarak değerlendirilir.

Örnekler ( MyDate içerdiği varsayılarak: 2014-01-31T09:00:00+02:00):

Şablon Çıktılar Kültür
{{ MyDate }} 01/31/2014 16:04:12 +02:00
{{ format(MyDate,'dd/MM/yyyy') }} 31/01/2014
{{ format(MyDate) }} 31.1.2014 09:00 tr-TR
{{ format(MyDate,'d') }} 31/01/2014
{{ format(MyDate,'D') }} 15 Haziran 2009 Pazartesi en-US
{{ format(MyDate,'o') }} <br>2014-01-31T09:00:00+02:00<br>

Komut dizisi örneği

1
2
3
4
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>

Komut dizisi örneği

Tarih düğümünden saati kaldırmanın bir yolu:

1
2
3
4
$Xml.SetValue('Test/testdate', new DateTimeOffset());  // testdate will be saved to an 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 an XML as "2015-12-11"

// result : 2015-12-11

format() İşlev Seçenekleri

format() İşlev, çıktıyı özelleştirmek için çeşitli seçenekler sunar. Ayrıntılar için aşağıdaki tabloya bakın. Kullanılabilir seçeneklerin ve davranışlarının veri türüne bağlı olarak değişebileceğini unutmayın.

Veri Türü Biçim Seçeneği Açıklama Örnek Veri Çıktı
Dizge Dizgeyi otomatik algılama ile yazdır <script>alert('hello')</script><div>hello</div> <div>hello</div>
Dizge Dizgeyi otomatik algılama ile yazdır 12.345 12.3
Dizge Dizgeyi otomatik algılama ile yazdır 12 12
Dizge Dizgeyi otomatik algılama ile yazdır 2022-05-07T00:00:00+03:00 07.05.2022 00:00
Dizge Dizgeyi otomatik algılama ile yazdır True / true ✓ (U+2713)
Dizge Dizgeyi otomatik algılama ile yazdır False / false ✕ (U+2715)
Dizge html Dizgeyi kodlanmış HTML metni olarak yazdır <script>alert('hello')</script><div>hello</div> <script>alert('hello')</script><div>hello</div>
Dizge safe Değeri, tehlikeli etiketleri çıkararak güvenli HTML olarak yazdır <script>alert('hello')</script><div>hello</div> <div>hello</div>
Dizge string Dizgeyi herhangi bir kodlama uygulamadan yazdır <script>alert('hello')</script><div>hello</div> <script>alert('hello')</script><div>hello</div>
Sayı n0 Sayıyı ondalık basamak olmadan tam sayı olarak yazdır 12.345 12
Sayı n1 Sayıyı, noktadan sonra 1 basamak olacak şekilde ondalık sayı olarak yazdır 12.345 12.3
Boolean Değeri Unicode onay işareti olarak yazdır True / true ✓ (U+2713)
Boolean Değeri Unicode onay işareti olarak yazdır False / false ✕ (U+2715)
DateTime Tarih değerini kullanıcının yerel ayar tercihine göre yazdır 2022-05-07T00:00:00+03:00 07.05.2022 00:00
DateTime o Tarihi ISO biçiminde yazdır 2022-05-07T00:00:00+03:00 2022-05-07T00:00:00+03:00
DateTime m Tarihi dinamik biçimde biçimlendirerek yazdır 2022-05-07T00:00:00+03:00 2 gün önce
DateTime dd/MM/yyyy Tarihi belirtilen tarih biçiminde yazdır 2022-05-07T00:00:00+03:00 07/05/2022

Koşullu Biçimlendirme

Koşullu görüntüleme aşağıdaki söz dizimi kullanılarak gerçekleştirilir:

1
2
if XPathCondition then Template
if XPathCondition then Template else Template

Örnek:

Temel kullanım

1
{{ if Customer/Type = 'A' then <div>Important !</div> }}>

else yan tümcesiyle temel kullanım

1
{{ if Customer/Type = 'A' then <div>Important !</div> else <div>{{Customer/Name}}</div> }}>

Tekrarlayan Şablonlar

Bir şablonu birden fazla düğüme uygulamak için şu söz dizimini kullanın:

1
ItemXPath => Template

Bu, eşleşen her öğe üzerinde yineleme yapar ItemXPath ve şablonu uygular.

Örnek:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
{{ SAMPLE REPORT
<h1>{{Customer/Name}}</h1>
<table>
    {{ Rows/Row =>
    <tr>
        <td>{{Date}}</td>
        <td>{{Description}}</td>
    </tr>
    }}
</table> }}

Aşağıdaki çıktıyı oluşturur:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
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>

Öznitelikle Yineleme

x-repeat özniteliği, şablonları yinelemeye yönelik söz dizimine alternatif sunar; özellikle, söz diziminin etiketleri bozabileceği HTML üretiminde kullanışlıdır. Örneğin: => =>

1
2
3
4
5
6
7
{{ SAMPLE REPORT
<table>
    <tr x-repeat="Rows/Row">
        <td>{{Date}}</td>
        <td>{{Description}}</td>
    </tr>
</table> }}

Bu öznitelik herhangi bir öğeyle kullanılabilir. Örneğin, "li" etiketiyle de kullanılabilir.

1
2
3
4
5
6
{{
<ul>
    <li x-repeat="Rows/Row">
        <span>{{Date}}</span>
    </li>
</ul> }}

Özyinelemeli Tekrarlayan Şablonlar

Özyinelemeli yineleme için şu söz dizimini kullanın:

1
ItemXPath =>> Template

Şablon, her yinelemenin sonuçlarına özyinelemeli olarak uygulanır.

Örnek:

1
2
3
4
5
{{ <h1>SAMPLE REPORT</h1>
{{ Sections/Section =>>
<h2>{{Name}}</h2>
<p>{{Body}}</p>  }}
}}

sonuç:

1
2
3
4
5
<h1>SAMPLE REPORT</h1>
<h2>My Section</h2>
<p>Section content</p>
<h2>Sub Section</h2>
<p>Child section content</p>

Şablon Değişkenleri

Şablonlarda hem özel süreç değişkenleri hem de sistem özellikleri kullanılabilir. İstemci tarafı ve sunucu tarafı komut dizilerinin değişken bağlamları farklıdır.

İstemci Tarafı Şablon Değişkenleri

İstemci tarafı komut dizilerinde (ör. form komut dizilerinde) kullanılabilir:

Değişken Adı Açıklama
$staticUrl Statik kaynakların temel URL'si. Statik kaynakların temel adresi. (ör.: https://static.emakin.com/ )
$applicationUrl Uygulamanın temel URL'si. (ör.: https://mydomain.emakin.com/app/ )
$Process Geçerli sürecin benzersiz kimliği
$FolderName Süreci içeren dizinin adı
$CustomVariable Süreç içinde tanımlanan özel değişkenler

Sunucu Tarafı Şablon Değişkenleri

Sunucu tarafı komut dizilerinde (ör., pre/post-work komut dizilerinde) kullanılabilir:

Değişken Adı Açıklama
$ApplicationName Bir uygulamanın adı. (ör. emakin.com)
$ApplicationUrl Uygulamanın temel URL'si
$Domain.Name Alanadının adı
$Domain.Url Alanadının URL'si
$Domain.LogoUrl Alanadı logosunun URL'si
$CustomVariable Süreç içinde tanımlanan özel değişkenler

Belirli Şablon Değişkeni Bağlamları

Aktivite Bildirimleri: Sunucu tarafı değişkenlere ek olarak aktivite bildirimlerinde şunlar kullanılır:

Değişken Adı Açıklama
$Id Bir iş adımının kimlik numarası
$WorkItem WorkItem nesnesi (özelliklere nokta gösterimini kullanarak erişin, ör., $WorkItem.Instance.Number)
$Recipients Virgülle ayrılmış alıcı adları
$Url Bir iş adımının URL'si. (ör.: https://mydomain.emakin.com/app/?/workitem=1234 )
$AssignedTo Atanan kullanıcıların virgülle ayrılmış kullanıcı adları

Kullanıcı Kaydı: Sunucu tarafı değişkenlere ek olarak kullanıcı kaydı şablonlarında şunlar kullanılır:

Değişken Adı Açıklama
$Ticket Kimlik doğrulama belirteci
$DisplayName Kullanıcının görünen adı