Tisková sestava

Z Dokumentace
Přejít na: navigace, hledání
Report.svg
Pro výstup informací na tiskárnu nebo do PDF souboru můžete využít dokument typu Tisková sestava (report). Tiskové sestavy jsou tvořené kombinací html a javascript. Tiskové sestavy si můžete sami upravovat a s pomocí šikovného programátora webových stránek je můžete i vytvářet.

Obsah

Položky

  • Název - označení pracovního výkazu. Libovolný jednořádkový text.
  • Popis - podrobný text pracovního výkazu.
  • Barva - zobrazuje se ve formuláři a v seznamech, slouží k barevnému rozlišení různých záznamů.
  • Zdrojový tvar - má vlastní kartu. Zdrojový tvar je tvořený v html a javascriptu. Hotová sestava je vidět na kartě Zobrazení.

Vytváření vlastních sestav

Sestavy lze tvořit pomocí html a javascriptu. Databáze Deko je přístupná z vestavěného webového prohlížeče pomocí dvou různých metod:

Speciální url schéma deko

Dokumenty uložené v databázi aplikace Deko jsou přístupné v html prohlížeči sestav dostupné pomocí speciálního url, například:

deko:///f88abd98d03eddf5e26223ac20009103

načte dokument s id f88abd98d03eddf5e26223ac20009103 a vrátí jeho JSON podobu. Pomocí totoho mechanismu lze přistupovat i k přílohám:

deko:///podklady-pro-sestavy/logo.svg

načte přílohu logo.svg dokumentu podklady-pro-sestavy. V případě přílohy se vrací binární podoba souboru.

Tip: Pokud chcete použít vlastní ID pro svůj dokument (zde podklady-pro-sestavy), vyexportujte svůj dokument do souboru JSON, editorem změňte v souboru ID dokumentu (položka _id, nepoužívejte diakritiku) a dokument znovu načtěte s novým id. Původní dokument potom smažte.

Speciální objekt v javascriptu deko

V html prohlížeči sestav je dostupný speciální objekt pojmenovaný deko, jehož pomocí můžete přistupovat k dalším objektům a funkcím aplikace Deko, například:

<script>
var id_sestavy = deko.id()
</script>

Metody objektu deko v javascriptu

  • id() - vrací id právě zpracovávané sestavy
  • contactId() - vrací id právě zpracovávaného kontaktu při odesílání hromadné pošty
  • get(id) - vrací dokument se zadaným id.
  • document(id) - vrací dokument se zadaným id. Pozor - pomalé! Tahá se včetně propojených dokumentů. Pokud potřebujete pouze dokument samotný, použijte metodu get(id)
  • linksToMe(id) - vrací databázové view links-to-me
  • linksFromMe(id) - vrací databázovéh view links-from-me
  • hash(string) - vrací hash spočítaný ze zadaného řetězce
  • userid() - vrací ID aktuálně přihlášeného uživatele
  • begin() - informuje aplikaci Deko o začátku zpracování (zakáže akce Tisk a Odeslání mailem)
  • end() - informuje aplikaci Deko o konci zpracování (znovu povolí akce Tisk a Odeslání mailem)

Tvorba sestav

Pro vlastní tvorbu tiskových sestav doporučujeme použít některou z osvědčených JavaScript knihoven pro manipulaci s HTML stránkami, sami pro své sestavy používáme knihovnu jQuery. Pro tvorbu doporučujeme vytvořit v prvé řadě šablonu v html - prázdnou sestavu bez vyplněných hodnot - a na konec sestavy vložit skript, který vyplní požadované hodnoty z databáze. Oddělíte tak snadno dva různé jazyky (html a javascript) a dvě různé oblasti sestavy (vzhled a data).

Pomocné soubory

Pro uložení pomocných souborů si vytvořte samostatný dokument například typu Poznámka a všechny potřebné dokumenty si nahrajte do příloh tohoto dokumentu. Na jednom místě pro všechny své sestavy tak můžete mít svá loga, obrázky, css soubory, knihovny (výše zmiňované jQuery) a další potřebné komponenty pro tvorbu html stránek. Tip: Deko vám neumožňuje zvolit vlastní ID dokumentu, ale ID můžete přepsat pomocí exportu do soubor, přepsaní hodnoty _id v json dokumentu a opětovným načtením do aplikace Deko.

Šablona sestavy v HTML

Vytvořte si v html šablonu pro svou sestavu. Při tvorbě sestavy stačí vytvořit pouze kostru sestavy, data se později doplní pomocí skriptu. Šablona může vypadat například takto:

<html>
<head>
<link rel="stylesheet" media="screen,print" href="deko:///podklady-pro-sestavy/styly.css">
<script type="text/javascript" src="deko:///podklady-pro-sestavy/jquery-2.1.0.min.js"></script
</head>

<body>
<div id="header">
<img src="deko:///podklady-pro-sestavy/logo.svg">
<h1>Titulek</h1>
<h2>Jméno sestavy</h2>
</div><!-- id=header -->

<div id="report">
<h3>Seznam osob</h3>
<table>
<thead>
<tr><th>Jméno</th><th>Příjmení</th></tr>
</thead>
<tbody></tbody>
</table>
</div><!-- id=report -->

<div id="footer">
<p>Sestavu vytvořil <span id="creator">Neznámý stvořitel</span><p>
<p>Sestava vytvořená dne <span id="createdate"></span><p>
</div>

<script>
// Sem přijde vepsat skript vytvářející sestavu
</script>

</body>
</html>

Skript pro vytvoření sestavy

Pro vytváření skriptů doporučujeme použít knihovnu jQuery. Skript pro jednoduché vypsání všech osob v projektu, kde je uložená i vaše sestava, může vypadat například takto:

$(document).ready(function(){
    deko.begin();                                              // Zakážeme manipulaci se sestavou před dokončením
    var id = deko.id();                                        // id sestavy
    var doc = deko.get(id);                                    // Celý dokument se sestavou
    var parents = deko.linksToMe(id);                          // Seznam rodičů sestavy
    var parentid = parents.rows[0].value.docid;                // Nadřízený projekt sestavy
    var parentdoc = deko.get(parentid);                        // Dokument nadřízeného projektu
    var parentlinks = deko.linksFromMe(parentid);              // Seznam všech dokumentů v projektu

    $('div#header h1').text(doc.name);                         // Nastavíme hlavičky
    $('div#header h2').text(parentdoc.name);

    for (var i=0; i<parentlinks.rows.length; i++) {            // Projdeme všechny dokumenty v projektu
        var xtype = parentlinks.rows[i].value.doctype;         // typ dokumentu
        var xid     = parentlinks.rows[i].value.docid;         // id dokumentu
        if (xtype == 'person') {                               // zajímá nás pouze typ person, ostatní ignorujeme
             var xdoc = deko.get(xid);                         // Načteme celý dokument typu person
             $("table tbody").append(                          // a do tabulky přidáme jeden řádek
                 '<tr>' +
                 '<td>' + xdoc.firstname + '</td>' +           // se jménem
                 '<td>' + xdoc.surname + '</td>' +             // a příjmením
                 '</tr>\n'
                 );
            }

    var userid = deko.userid();                                // podobně nastavíme v šabloně jméno tvůrce sestavy
    var userdoc = deko.get(userid);
    $("#creator").text(userdoc.firstname+' '+userdoc.surname);

    var cdate = new Date();                                    // nastavíme datum vytvoření
    $("#createdate").text(cdate.toString('d.M.yyyy hh:mm'));

    deko.end();                                                // Povolíme manipulaci se sestavou po dokončení