HTML Report

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.

Sunucu tag (Kontrol) kullanımı

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.

MyReport.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]</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. 


MyReport.html
<!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>

İç içe kontrol kullanımı


MyReport.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>

Kontrol visible koşulu

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.

MyReport.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]</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>

Rapor dönüş tipi düzenleme

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.

MyRSSReport.jSettings
{
    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"
	
}
MyRSSReport.html
<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>