Článek: AN0002370Aktualizováno:: 29.12.2018
Ve sloupcích typu Číselníková hodnota (ať už jde o sloupce třídy nebo dotazu) se nacházejí odkazy na záznamy. Po kliknutí na ně se uživatel standardně dostává do detailu záznamu. V některých případech je ale vhodné uživatele vést na stránku, která zobrazuje data ze záznamu a nadto třeba ještě další data. Příkladem může být například odkaz do Znalostní báze z Konfigurační položky nebo odkaz na Project Status Report ze seznamu projektů.
Máme např. Webpart s odkazem na poslední Project status report (sloupec Last PSR).
Odkaz v datech ve sloupci Last PSR standardně obsahuje link na detail záznamu. V našem příkladu odkazujeme na záznam Id 8 ve třídě Id 2765 (FullId = 2765-8).
... a vedl by tak na záznam s daty, který vypadá takto:
Tento záznam je vhodný pro projektového manažera pro vytvoření Project Status Reportu. Avšak pro účely prezentace Řídícímu výboru(Steering Committee) nebo sponsorovi projektu budeme chtít zobrazit stránku s reportem (s daty z výše uvedeného záznamu), protože stránka je určena k prezentaci dat a může obsahovat jakékoli grafické prvky, různé typy webpartů a další data (nejen data jednoho záznamu):
Tohoto chování docílíme ve dvou krocích:
- Ve sloupci s odkazem na záznam zvolíme v poli Přesměrovat na stránku příslušnou stránku a v poli Název proměnné pro ID v url zvolíme proměnnou, kterou chceme do stránky předat přes URL. Proměnných zde můžeme uvést více a přiřadit jim hodnoty. Poslední proměnnou uvádíme vždy bez hodnoty - automaticky bude do ní vloženo Id odkazovaného záznamu. Do stránky tak vždy předáváme Id záznamu, který byl obsažen v odkazu, na který uživatel klikal.
Příklad proměnných definovaných v poli Název proměnné pro ID v url:
nft=1&DrId
Příklad obsahuje dvě proměnné oddělené znakem &. První proměnná má přiřazenu hodnotu 1. Druhá proměnná nemá přiřazenu hodnotu, ale ta do ní bude automaticky vložena (viz níže).
Nastavení v Detailu sloupce pak vypadá takto:
Výše uvedená stránka v poli Přesměrovat na stránku má v našem příkladu Id 42.
Odkaz v datech se nám pak změní a nyní obsahuje URL na danou stránku včetně proměnných. Všimněte si, že proměnné DrId byla přiřazena hodnota 8, což je hodnota Id konkrétního záznamu z našeho příkladu výše, který zobrazuje standardní odkaz, pokud nepoužijeme volbu Přesměrovat na stránku.
- Ve stránce pak proměnné musíme zpracovat a dle toho, jaké proměnné byly předány, zobrazíme odpovídající data.
Příklad: Skript v detailu stránky
function OnLoad()
{
var dr = null;
//nacist hodnoty ID z url
var id = OGForm.QueryString.GetInt('DrId');
if (id != null)
{
var cl = OGModel.ClassDefs['project_status_report'];
dr = OG.DataRow.GetDataById(cl.Id, id);
}
//predat ID webpartum na strance
OGWebParts['text'].SetData('dr', dr);
var b = dr != null;
OGWebParts['text'].Visible = b;
}
Vlastní zobrazení dat provede webpart Skript, který jsme vložili do stránky.
Příklad: Webpart vykreslí tabulky a vloží do nich data pro předané ID, která získáme z různých tříd dle potřeby.
function OnPreRender()
{
//take-over record loaded in the page
var dr = OGWebPart.GetData('dr');
if (dr != null)
{
var pro = dr.GetDR('project');
var ps = dr.GetDR('project_status');
var regionsText = OG.TextUtils.ConvertEntitiesToSeparatedString( pro['regions'], ', ', '');
var sb = new System.Text.StringBuilder();
sb.Append( '<div class="endashboard"><table style="width: 100%"><tr> <td><h1>' + pro['name'] + ' - ' + regionsText + '</h1>');
sb.Append( '<h2>Project status report</h2></td><td style="text-align: right; width: 250px">');
var ic = dr['colour'];
var co = '';
if ( ic != null)
{
ic = OG.Color.ToHtml(OG.Color.ToColor(ic));
}
sb.Append( '<div class="circle" style="background-color: ' + ic + '"></div>');
sb.Append( '<img src="./ImagesData/sipka_semafor.png" />');
sb.Append( '</td></tr></table><br/><br/>');
sb.Append( '<table class="t3">');
sb.Append( '<tr><th>Project owner:</th><td>' + pro['owner'] + '</td><td class="space"> </td><th>Report for period:</th><td>' + dr['period'] + '</td></tr>');
sb.Append( '<tr><th>Team members:</th><td>' + pro['team_members'] + '</td><td class="space"> </td><th>Status:</th><td>' + ps['name'] + '</td></tr>');
sb.Append( '<tr><th>Date of report:</th><td>' + dr['date'].ToString('dd.MM.yyyy') + '</td><td class="space"> </td><th>Report type:</th><td>Regular</td></tr>');
sb.Append( '</table>');
sb.Append( '<table class="t1"> <tr><th>Recent accomplishments:</th><td class="space"> </td><th>Upcoming activities:</th></tr> <tr><td>' + dr['recent_accomplishment'] + '</td><td class="space"> </td><td>' + dr['upcoming_activities'] + '</td></tr> </table>');
sb.Append( '<table class="t1"> <tr><th>Risks and issues:</th><td class="space"> </td><th>Counter-measures:</th></tr> <tr><td>' + dr['risks_and_issues'] + '</td><td class="space"> </td><td>' + dr['counter_measures'] + '</td></tr> </table>');
sb.Append( '<h3>Project description</h3></td><td style="text-align: right; width: 250px">');
sb.Append( '<p>' + pro['description'] + '</p></div>');
//add to the page
OGForm.AddControl(OGForm.CreateLiteralControl('lc1', sb.ToString()));
}
}
Poznámka: Stránka využívá i CSS styly, které si definujeme ve webpartu Skript.