1. Filtrování dat

    Článek: AN0001910Aktualizováno:: 22.09.2018

    Filtr na tlačítku

    V seznamu záznamů lze použít tlačítko, které nastaví filtr na potřebné hodnoty.

    Vytvoříme tlačítko typu Skript:

    //clears possible existing filter
    OGFilter.Clear();

    // sets the filter to the requested values
    OGFilter.Add( true, 'status', '!=', 'resolved');
    OGFilter.Add( true, 'status', '!=', 'deferred');
    OGFilter.Add( true, 'status', '!=', 'canceled');
    OGFilter.Add( true, 'status', '!=', 'todeploy');
    OGFilter.Add( true, 'assignto', '=', OG.Person.GetLoginPerson());

    //applies the filter
    OGFilter.Run();

    //packs the block with filter
    OGFilter.Minimize();

    Výsledný blok filtru pak po kliku na tlačítko vypadá takto:

    V posledním parametru metody OGFilter.Add lze zadat:

    Filtr na tlačítku 2

    Následující příklad vytvoří filtr při použití závorek.

    // Column Name contains word 'calendar' and column Status equals New, For testing or To provide more information

    //clears possible existing filter
    OGFilter.Clear();

    // sets the filter to the requested values
    OGFilter.Add( true, 'name', 'contains', 'calendar');
    var stav = OGFilter.AddBracket( true);
    OGFilter.Add( status, false, 'status', '=', 'New');
    OGFilter.Add( status, false, 'status', '=', 'For testing');
    OGFilter.Add( status, false, 'status', '=', 'To provide more information');

    //applies the filter
    OGFilter.Run();


    Výsledný blok filtru pak po kliku na tlačítko vypadá takto:

     Filtr zobrazí záznamy, které obsahují ve sloupci Name hodnotu 'calendar' a zároveň mají ve sloupci Status 'New', 'For testing' nebo 'To provide more information'.

    Filtr na tlačítku nebo v URL 3

    Následující příklad vytvoří filtr zobrazující záznamy jen z určitých potomků třídy, v níž filtrujeme. V případě složitější hierarchie tříd (potomek třídy má další potomky) můžeme např. filtrovat záznamy z jednoho potomka třídy kromě záznamů patřících určitého potomka tohoto potomka.

    // Displays records only from the child class All applications but not from the its child class System applications

    //clears possible existing filter
    OGFilter.Clear();

    // sets the filter to the requested values
    OGFilter.Add( true, '', '=', 'all-applications');
    OGFilter.Add( true, '', '!=', 'system-application');

    //applies the filter
    OGFilter.Run();

    Výsledný blok filtru pak po kliku na tlačítko vypadá takto:

    Filtr při zobrazení seznamu záznamů

    Následující příklad při zobrazení seznamu záznamů třídy/dotazu aplikuje filtr zobrazující pouze záznamy s hodnotou ve sloupci 'To' která je větší nebo rovna současnému datu. Uživatel tak vidí pouze aktuální záznamy, ne ty týkající se minulých aktivit.

    Filtr se nastaví jen při prvním přístupu na stránku Datas.aspx (viz podmínka !OGForm.Page.IsPostBack). Díky tomu jej uživatel může změnit.

    Níže uvedený skript je třeba umístit do detailu dané třídy/dotazu do záložky Skript - Seznam záznamů.

    function OnLoad()
    {
    // Filters records with 'to' greater than or equal to today
      if ( !OGForm.Page.IsPostBack)
      {
        OGFilter.Clear();
        OGFilter.Add( true, 'to', 'in interval', 'today');
        OGFilter.Add( false, 'to', '>=', 'now');
        OGFilter.Run();
      }
    }

    Výsledný blok filtru pak po kliku na tlačítko vypadá takto:

    Pokud chceme umožnit uživateli uložit si odkaz na záznamy včetně filtru do menu Oblíbené a při otevření linku tento filtr aplikovat, je třeba jako podmínku skriptu použít ( !OGForm.QueryString.Exist('filter')). To způsobí, že pokud existuje filter v URL, filtr ve skriptu se neaplikuje a místo něj bude použit filtr z URL.

    function OnLoad()
    {
    // Filters records with 'to' greater than or equal to today
      if ( !OGForm.Page.IsPostBack)
      {
      if ( !OGForm.QueryString.Exist('filter'))
        {
           OGFilter.Clear();
           OGFilter.Add( true, 'to', 'in interval', 'today');
           OGFilter.Add( false, 'to', '>=', 'now');
           OGFilter.Run();
        }
      }
    }

    Filtrování ve sloupci Číselníková hodnota (na různé třídy)

     function OnLoad()
     {
       if ( !OGForm.Page.IsPostBack && !OGForm.QueryString.Exist('filter'))
       {
         OGFilter.Clear();
         OGFilter.Add( true, 'x-classlink-n', '=', '543-4');
         OGFilter.Run();
       }
     }

    Filtrování podle tříd potomků

    Filtrovat ve třídě předka je možné i podle toho do jakého potomka záznamy patří. Následující dva řádky ukazují příklad podmínky filtrování záznamů. OGFilter.Add( true, '', '=', 'all-applications');
    OGFilter.Add( true, '', '!=', 'system-application');

×