Custom definice

Z Reporting Wiki
Přejít na: navigace, hledání


Modul Custom Definice je určen pro tvorbu a správu specifických a na míru zákazníka tvořených pohledů. Obsluha modulu předpokládá znalost Javascriptu a SQL. S ní si můžete jednoduše připravit a upravovat pohledy přes uživatelské rozhraní. Nebo vám pohledy jednoduše a efektivně vytvoříme my.
Custom definice

Konkrétní příklady využití

  • Specifické požadavky na reporty a logiku analýzy neumožňují nasazení univerzálních analytických nástrojů ve formě gridu/standardních grafů.
  • Zákazník požaduje po nalogování přímý vstup na dashboard, často optimalizovaný pro konkrétní mobilní zařízení.
  • Pro více informací o možnostech a optimálním využití v rámci konkrétních zadání kontaktujte tým Reporting.cz
  • Další krok: Plánování

Tvorba Custom pohledů - verze 2.0

Definice Custom pohledů se skládá ze serverové a klientské části. Serverovou část tvoří sada definovaných SQL dotazů. V klientské části jsou definovány html šablony, css styly, js scripty atd.

Server

Načítaní dat pro Custom pohledy je založené na stejném principu jako tvorba ETL transformací (bez využití vstupních souborů). Jsou dostupné stejné proměnné a stejné procedury. V editoru se sestaví SQL dotaz a data, která vrátí jsou převedena do JavaScriptového pole a následně dostupná v html šabloně jako pole. Pokud je dotaz přiřazený šabloně, dojde k jeho spuštění automaticky. K dotazům je možné definovat proměnné a jejich hodnoty předávat přímo z šablon.

Zadaný dotaz:

select ID_ACCOUNT, ACCOUNT from D_ACCOUNT where ACCOUNTING = @accounting
select ID_DIM_1, DIM_1 from D_DIM_1 where ACCOUNTING = @accounting

Výsledné pole:

[
  [
    {ID_ACCOUNT: '221100', ACCOUNT: 'Účty v bankách'},
    {ID_ACCOUNT: '221200', ACCOUNT: 'Termínovaný vklad'},
    {ID_ACCOUNT: '311100', ACCOUNT: 'Pohledávky'}
  ],
  [
    {ID_DIM_1: '10', DIM_1: 'Direct cost / Přímé náklady'},
    {ID_DIM_1: '31', DIM_1: 'Direct / Vlastní marketing'}
  ]
]

Klient

V nastavení stránky je možné zvolit šablonovací systém (embedded javascript - knihovna ejs.js, http://www.embeddedjs.com/). Při jeho použití je s 'html soubory' nakládáno jako s ejs šablonami a do čistého html jsou překládány automaticky.

<table>
  <tr>
    <th>Číslo účtu</th>
    <th>Účet</th>
  </tr>
  <% for (var i = 0; i < rc.data['accounts'][0].length; i++) { %>
  <tr>
    <td><%= rc.data['accounts'][0][i].ID_ACCOUNT %></td>
    <td><%= rc.data['accounts'][0][i].ACCOUNT %></td>
  </tr>
  <% } %>
</table>

API

V šablonách je defaultně dostupný objekt Reporting.Custom jako proměnná window.rc.

Vlastnosti

rc.id : number

  • ID aktuální stránky

rc.name : string

  • název aktuální stránky

rc.params : object

  • aktuální parametry

rc.data : object

  • automaticky načtené výsledky dotazů
  • jako klíče jsou použité názvy dotazů, napr. 'data1.sql' jsou v rc.data['data1']

rc.embeddedMode : boolean

  • je stránka zobrazená v embedded modu?

rc.exportMode : boolean

  • je stránka zobrazená v export modu?

Metody

rc.resource() : function(name)

  • vrátí adresu zdrojového souboru (html, css, js)

rc.file() : function(name)

  • vrátí adresu souboru (obrázky, binární soubory)

rc.link() : function([params])

  • vrátí odkaz na aktuální view
  • params: object
    • url parametry odkazu
    • parametry se defaultně chovají persistentně, do adresy se vždycky předá vše co je v rc.params a případně přepíše nebo doplní tím co je v params parametru rc.link
    • příklad:
rc.params.param1 = 123;
rc.link(); // vrati 'template.html?p[param1]=123'
 
//je ekvivalent k tomuhle:
 
rc.link({param1: 123}); // vrati 'template.html?p[param1]=123'
  • persistentní chování se dá vypnout: rc.persistentParameters = false;
    • rc.link pak nebude do odkazu vkládat to co je v rc.params

rc.link() : function(view, [params])

  • vrátí odkaz na view
  • view: string
    • odkaz do jiného view (šablony) v aktuální stránce (custom view):
      • rc.link('<nazev_sablony>');
    • odkaz do view (sablony) na jiné stránce:
      • rc.link('<page_id>:<nazev_sablony>');

rc.exec() : function(name, successCallback, errorCallback)

  • spustí SQL dotaz na serveru a v callback funkci vrátí výsledky

rc.export() : function(options)

  • export pohledu (jpg/png/pdf/xls)
  • options
    • filename - název výstupního souboru
    • type - typ souboru (application/pdf|image/jpg|image/png|application/vnd.ms-excel)
    • size - A3|A4|A5 pro pdf, 200px|200px*200px pro jpg/png
    • landscape - 0|1
    • zoom - float kde 1 = 100%

rc.dump() : function(value1 [, value2[, value3[, ...]]])

  • výpis proměnné na obrazovku

Tvorba Custom pohledů - verze 1.0

Data

Načítaní dat pro Custom pohledy je založené na stejném principu jako tvorba ETL transformací (bez využití vstupních souborů). Jsou dostupné stejné proměnné a stejné procedury. V editoru se sestaví SQL dotaz a data, která vrátí jsou převedena do JavaScriptového pole a následně dostupná v šabloně. Vlákno může vracet jak jednu, tak více tabulek. V případě jedné tabulky je vytvořeno jednorozměrné pole objektů (řádků).

Zadaný dotaz:

select ID_ACCOUNT, ACCOUNT from D_ACCOUNT where ACCOUNTING = @accounting

Výsledné pole:

[
  {ID_ACCOUNT: '221100', ACCOUNT: 'Účty v bankách'},
  {ID_ACCOUNT: '221200', ACCOUNT: 'Termínovaný vklad'},
  {ID_ACCOUNT: '311100', ACCOUNT: 'Pohledávky'}
]

V případě více tabulek je vytvořeno dvourozměrné pole.

Zadaný dotaz:

select ID_ACCOUNT, ACCOUNT from D_ACCOUNT where ACCOUNTING = @accounting
select ID_DIM_1, DIM_1 from D_DIM_1 where ACCOUNTING = @accounting

Výsledné pole:

[
  [
    {ID_ACCOUNT: '221100', ACCOUNT: 'Účty v bankách'},
    {ID_ACCOUNT: '221200', ACCOUNT: 'Termínovaný vklad'},
    {ID_ACCOUNT: '311100', ACCOUNT: 'Pohledávky'}
  ],
  [
    {ID_DIM_1: '10', DIM_1: 'Direct cost / Přímé náklady'},
    {ID_DIM_1: '31', DIM_1: 'Direct / Vlastní marketing'}
  ]
]

Parametrizace pohledů

Pro uživatelské nastavení Custom pohledů je vhodné využít tabulky nadefinované v MDM. Využití MDM tabulek je obdobné s jejich využitím z ETL.

Šablony

Pro tvorbu šablon a generování html výstupů se v defaultním nastavení používá embedded javascript (knihovna ejs.js, http://www.embeddedjs.com/).

<table>
  <tr>
    <th>Číslo účtu</th>
    <th>Účet</th>
  </tr>
  <% for (var i = 0; i < accounts.length; i++) { %>
  <tr>
    <td><%= accounts[i].ID_ACCOUNT %></td>
    <td><%= accounts[i].ACCOUNT %></td>
  </tr>
  <% } %>
</table>

Defaultní proměnné a metody

Všechny dostupné proměnné a metody v embedded kódu jsou v objektu defaults. (Pro javascript na stránce v <script type="text/javascript"></script> pod objektem context.defaults)
Pole s daty jsou dostupná pod proměnnými schodnými s názvy vláken. (Popřípadě context.<nazev_vlakna>)

Proměnné

  • defaults.baseUrl - base adresa reportingu
  • defaults.url - aktuální URL adresa
  • defaults.id - ID aktuální stránky
  • defaults.params
    • URL parametry v poli p využívané šablonou
    • pokud jsou u některého SQL vlákna nadefinované proměnné se shodnými názvy, jejich hodnoty se předají
      • https://report.reporting.cz/custom.default/?id=13&p[det]=&p[report]=&p[periods][1]=201501&p[profit_center]=1119

Metody

defaults.methods.dataLink = function(name, params, format);

  • vrací odkaz na datové pole vrácené vláknem

defaults.methods.pageLink = function(page, resource, params);

  • vrací odkaz na Custom stránku

defaults.methods.resourceLink = function(name);

  • vrací odkaz na zdrojový soubor (html šablona, css, nebo js)