Rapor klasörüne bir html içerik atarak oluşturulabilir. Özel kural, görüntü adı, ikon tanımlanacaksa yanına bir jSettings dosyası atılmalıdır.
Html içerisinde Makroları , Yerelleştirme yöntemlerini ve özel sunucu tagleri (Kontrol) kullanabilirsiniz.
Rapor içeriğine iletilen nesne tipini bilmenin ve buna göre raporu düzenlemeniz gerekmektedir. GEODI Pro ile oluşturacağınız raporlarda makro data nesnesi GeodiEntry Array'dir. Mobidi Server Raporları için nesne MobidiEntry Array'dir.
Html içeriğinde dcc:[Control] isimli tag tanımları kullanabilirsiniz. Bu html elementler sunucuda işlenerek istemciye istediğiniz içeriği istediğiniz formatta iletmenizi sağlar. Kullanabileceğiniz tüm özel tagler için tıklayınız.
Array içeriğindeki her bir item'a ulaşmak için dcc:Repeater kullanılmalıdır. Repeater data içeriğinde verilen koleksiyonu gezmenizi sağlar. data değeri verilmezse aktif veriyi gezmeye çalışır. Repeater içerisinde data gezilen array elemanı olarak değişir. Repater dışındaki nesneye ulaşmak için context.Parent kullanılabilir. Repater "data" özelliği sadece makro ile çalıştığından = veya [= beklemez.
<!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>Dokümanlarınız</title> </head> <body> <ul> <dcc:repeater> <li>[=d.OutputGeodiContent.DisplayName]</li> </dcc:repeater> </ul> </body> </html> |
Repater tag'i içerisinde Repater tarafından ismi bilinen panel nesneleri kullanılarak hiç veri bulunmaması durumunda özel mesajlar verilebilir.
<!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>Dokümanlarınız</title> </head> <body> <dcc:repeater> <dcc:panel name="empty"> Hiç içerik bulunamadı. </dcc:panel> <dcc:panel name="header"> <ul> </dcc:panel> <dcc:panel name="body"> <li>[=d.OutputGeodiContent.DisplayName]</li> </dcc:panel> <dcc:panel name="footer"> </ul> </dcc:panel> </dcc:repeater> </body> </html> |
<!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>Dokümanlarınız</title> </head> <body> <ul> <dcc:repeater> <li> [=d.OutputGeodiContent.DisplayName] <br> Benzeyen Dokümanlar <ul> <dcc:repeater data='d.WS.Query.QueryForDocuments(d.WS.ToQuery("similar:(docid:"+(d.OutputGeodiContent.SystemContentID)+")"))'> [=d.OutputGeodiContent.DisplayName] </dcc:repeater> </ul> </li> </dcc:repeater> </body> </html> |
Tüm dcc elementlerinde makro destekli "visible" özelliği bulunur. Bu özellik yardımı içerek gösteriminde kural tanımlayabilirsiniz. Javascript üzerinde kural işlemenizden farklı olarak bu kurala uymayan element istemciye iletilmez. Olası açıkların önüne geçilmiş olur.
<!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>Dokümanlarınız</title> </head> <body> <ul> <dcc:repeater> <li>[=d.OutputGeodiContent.DisplayName]</li> <dcc:panel visible='=c["geodi"].WsHasPermission("GEODI.WS.EDIT") && !string.IsNullOrEmpty(d.OutputGeodiContent.ScanError)'> <div> Bu projeyi düzenleyebilirsiniz. Bu içeriğe ait tarama hatası var : [=d.OutputGeodiContent.ScanError] </div> </dcc:panel> </dcc:repeater> </ul> </body> </html> |
jSettings dosyası ile dönüş tipini değiştirebilirsiniz. Bu yolla Rapor linki ile servis sunabilir veya farklı formatlarda içerikler oluşturulup indirilebilmesini sağlayabilirsiniz. html yerine bir txt veya xmld dosyası indirilmesini sağlayabilirsiniz.
Bu örnek ile Alınan Rapor RSS formatında olacaktır. Raporun linkini paylaşarak RSS Servisi sunulabilir.
{ ID:"MyRSS", DisplayName:"[$.en:My RSS Report;tr:Benim RSS Raporum]", IconName:"Layer/newspaper", __type: "Factory.ActionFactory:HTMLReporter", ActionTargets:"*", ConditionMacro:'c.HasPermission("DECE.SYSTEMMANAGER")', ForcedExtension:"xml" } |
<rss version="2.0"> <channel> <title>GEODI</title> <link>[=c.ResolveUrl("~/")]</link> <dcc:repeater> <item> <title>[=HttpUtility.HtmlEncode(d.OutputGeodiContent.DisplayName)]</title> <link>[=c["geodi.link"\].ViewerLink(d)]</link> <description>[=HttpUtility.HtmlEncode(d.EntryBackRef.OutputSummary)]</description> </item> </dcc:repeater> </channel> </rss> |