1. Příklad: Přesměrování na stránku

    Č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:

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

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

×