Tvorba tlačových zostáv v aplikácii rozvrhu FM TnUAD: Rozdiel medzi revíziami
(Vytvorená stránka „Kategória:Študentské práce Kategória:Bakalárske práce Kategória:Informatika Kategória:web <H1_CSS chapter="2" prefix="Kapitola" /> <div class="side…“) |
|||
(15 medziľahlých úprav od 2 ďalších používateľov nie je zobrazených) | |||
Riadok 3: | Riadok 3: | ||
[[Kategória:Informatika]] | [[Kategória:Informatika]] | ||
[[Kategória:web]] | [[Kategória:web]] | ||
− | < | + | {{Praca_uvod|2|Štatistický modul v systéme rozvrhu FM|Otvorené formáty dokumentov|Tvorba tlačových zostáv v aplikácii rozvrhu FM TnUAD|||||||||}} |
− | < | + | |
− | {| | + | = = |
− | |+ | + | Na projekte „rozvrh FM TnUAD“ pracujeme 3 študenti. Dušan Pagáč, Milan Porubský a ja. Preto sme sa museli dohodnúť na určitých štandardoch a pravidlách. Mojou úlohou bolo: |
+ | *generovanie tlačových zostáv | ||
+ | *štatistické reporty údajov | ||
+ | '''Generovanie tlačových zostáv''' | ||
+ | V našej aplikácii má používateľ dve možnosti tlačových zostáv | ||
+ | *export rozvrhu do PDF súboru | ||
+ | *export rozvrhu do formátu xlsx | ||
+ | '''Export rozvrhu do PDF súboru''' | ||
+ | PDF formát je v dnešnej dobe nepísaným štandardom pre archiváciu technických dokumentov. je to voľne šíriteľný formát čo je jedným z dôvodov prečo som sa rozhodol pravé pre tento formát. | ||
+ | '''Export rozvrhu do formátu xlsx''' | ||
+ | Ďalšia možnosť exportu dát je xlsx formát. Xlsx formát je tiež voľne šíriteľný a rozšírený medzi používateľmi. | ||
+ | |||
+ | ==Realizácia tlačových zostáv== | ||
+ | Celý projekt sme realizovali v programovacom jazyku PHP a s použitím ZEND frameworku. Čo je jedným s pravidiel na ktorých sme sa dohodli so študentmi čo pracujú na tomto projekte a s naším konzultantom. Ďalšie pravidlá boli: | ||
+ | *štruktúra databázových tabuliek | ||
+ | *formát URL pre filtrovanie rozvrhu | ||
+ | |||
+ | ===Realizácia exportu rozvrhu do PDF súboru=== | ||
+ | Prvým krokom bolo spracovanie URL požiadavku na filtrovanie rozvrhu. | ||
+ | Príklad URL požiadavku: | ||
+ | http://domena.sk/rozvrh/export/pdf/?kruzok=21302&ucitel=3&miestnost=30&predmet=2 | ||
+ | v tomto prípade ma filter nasledovné hodnoty:<br/> | ||
+ | Krúžok je 21302. Hodnoty ucitel, miestnost a predmet obsahujú identifikačné číslo učiteľa, miestnosti a predmetu v databáze.<br/> | ||
+ | Funkcia public function getUrlData()mi do poľa public $myFilter uloží hodnoty z URL.<br/> | ||
+ | Ďalším krokom je samotné filtrovanie údajov z databázy.<br/> | ||
+ | <source lang="php"> | ||
+ | for($i=1;$i<=5;$i++){ | ||
+ | $selectDay = $db->select() | ||
+ | ->from(T_VIEW) | ||
+ | ->where('day = ?', $i) | ||
+ | ->order('hour ASC'); | ||
+ | if(isset($this->myFilter['kruzok'])){ | ||
+ | $selectDay->where('subclass = ' . $db->quote($this->myFilter['kruzok']).' OR (subclass IS NULL | ||
+ | AND branch_num = ' . intval( $this->myFilter['kruzok'][1]) . ' | ||
+ | AND year = ' . intval( $this->myFilter['kruzok'][2]) . ')'); | ||
+ | } | ||
+ | if(isset($this->myFilter['miestnost'])){ | ||
+ | $selectDay->where('room_id = ?',$this->myFilter['miestnost']); | ||
+ | } | ||
+ | if(isset($this->myFilter['ucitel'])){ | ||
+ | $selectDay->where('user_id = ?',$this->myFilter['ucitel']); | ||
+ | } | ||
+ | if(isset($this->myFilter['predmet'])){ | ||
+ | $selectDay->where('subject_id = ?',$this->myFilter['predmet']); | ||
+ | } | ||
+ | </source> | ||
+ | Do poľa $selectDay uložíme s tabuľky rozvrh_view všetky záznamy z jednotlivých dní. Postupne sa z tohto poľa filtrujú údaje podľa poľa $myFilter. Získané údaje sú ďalej spracovávané a pripravované na vypisovanie do PDF súboru. Štyri hlavné údaje sa usporiadajú podľa URL požiadavku.<br/> | ||
+ | Ukážka jednej bunky z tabuľky rozvrhu: | ||
+ | [[Súbor:Bunka tabulky.JPG|framed|center|Obr. 2 Bunka tabuľky rozvrhu]] | ||
+ | {| border="1" cellpadding="5" cellspacing="0" class="prettytable" | ||
+ | |+align="top" style="color:#000;"|''Tab. 2 Tabuľka kombinácií údajov'' | ||
+ | !Priorita | ||
+ | !Filter | ||
+ | !Hlavný údaj | ||
+ | !Druhý údaj | ||
+ | !Tretí údaj | ||
|- | |- | ||
− | | 1 | + | |1 |
− | | | + | |krúžok |
+ | |predmet | ||
+ | |učiteľ | ||
+ | |miestnosť | ||
|- | |- | ||
− | | 2 | + | |2 |
− | | | + | |učiteľ |
+ | |predmet | ||
+ | |krúžok | ||
+ | |miestnosť | ||
|- | |- | ||
− | | 3 | + | |3 |
− | | | + | |predmet |
+ | |učiteľ | ||
+ | |krúžok | ||
+ | |miestnosť | ||
|- | |- | ||
+ | |4 | ||
+ | |miestnosť | ||
+ | |predmet | ||
+ | |učiteľ | ||
+ | |krúžok | ||
|} | |} | ||
− | < | + | Príklad: ak URL obsahuje filtrovanie pre učiteľa a predmet tak hlavný údaj bude obsahovať predmet, druhý údaj bude obsahovať krúžok a tretí údaj miestnosť. Ďalšie údaje sú pre hociktorú variantu rovnaké. |
− | = | + | Zoznam údajov: |
− | == | + | *hlavný údaj |
− | === | + | *druhý údaj |
+ | *tretí údaj | ||
+ | *dĺžka hodiny | ||
+ | *typ hodiny (prednášky, cvičenia alebo laboratórne cvičenia) | ||
+ | *farba políčka | ||
+ | *týždeň (párny, nepárny alebo každý týždeň) | ||
+ | *skratka hlavného údaju | ||
+ | *skratka druhého údaju | ||
+ | *začiatok hodiny | ||
+ | *údaje pre legendu číslo 1 | ||
+ | *údaje pre legendu číslo 2 | ||
+ | |||
+ | Príklad jedného záznamu údajov: | ||
+ | <source lang="php"> | ||
+ | [0] => string(32) "Logické a číslicové systémy" | ||
+ | [1] => string(7) "P. Fabo" | ||
+ | [2] => string(7) "Zlm 211" | ||
+ | [3] => string(1) "2" | ||
+ | [4] => string(1) "l" | ||
+ | [5] => string(7) "#EFD1D1" | ||
+ | [6] => string(1) "k" | ||
+ | [9] => string(4) "LČS" | ||
+ | [10] => string(5) "Peter" | ||
+ | [11] => string(2) "12" | ||
+ | [12] => string(27) "P. Fabo - Peter Fabo, RnDr." | ||
+ | [13] => string(39) "LČS - Logické a číslicové systémy" | ||
+ | </source> | ||
+ | Takto upravené údaje ukladám do premennej $tabulka. | ||
+ | <br/>'''Vykresľovanie hlavyčky'''<br/> | ||
+ | Ďalší krok je vykreslenie hlavičky PDF súboru. Najprv vykreslím logo našej fakulty potom vypíšem Trenčianska univerzita Alexandra Dubčeka v Trenčíne Fakulta Mechatroniky a nakoniec vykreslím oddeľovací pásik. Pod čiarou sa vykreslí filter s URL požiadaviek. | ||
+ | <br/>'''Vykresľovanie tabuľky s rozvrhom'''<br/> | ||
+ | Najprv som si vykreslil prázdnu tabuľku pomocou public function addEmptyTable($x1,$y1). Premenná $x1 a $y1 obsahuje polohu horného rohu tabuľky. | ||
+ | [[Súbor:Prazdna tabulka.JPG|framed|center|Obr. 3 Prázdna tabuľka rozvrhu]] | ||
+ | <br/>Potom pomocou opakovaného volania public function addRow($riadok,$x1,$y1) sa vykresľujú jednotlivé dni rozvrhu. Funkcia zabespečuje: | ||
+ | *správne zobrazovanie hodín párneho a nepárneho týždňa | ||
+ | *vyfarbuje bunky podľa typu hodiny | ||
+ | *počíta dĺžku danej bunky | ||
+ | *vypisuje údaje do bunky, ak je dĺžka názvu predmetu dlhšia ako dĺžka bunky tak sa vypíše skratka predmetu | ||
+ | *vyplňuje legendu podľa použitých skratiek | ||
+ | [[Súbor:Vyplnena tabulka.JPG|framed|center|Obr. 4 Vyplnená tabuľka]] | ||
+ | <br/>'''Vypísanie legendy'''<br/> | ||
+ | public function addCaption($y1) do prvého stĺpca vypíše legendu pre skratky učiteľov a do druhého vypíše legendu pre skratky predmetov. Do spodnej časti PDF súboru vypíše legendu farebného značenia buniek. | ||
+ | [[Súbor:Legenda.JPG|framed|center|Obr. 5 Legenda]] | ||
+ | <br/>'''Vypísanie päty dokumentu'''<br/> | ||
+ | V päte súboru sú informácie o katedre ktorá zastrešuje celý projekt a o autorovi. | ||
+ | <br/>'''Popis PDF súboru'''<br/> | ||
+ | Posledným krokom pred samotným odoslaním súboru na stiahnutie, je vyplnenie popisu. Sú vyplnené nasledovné údaje: | ||
+ | *titulok | ||
+ | *autor | ||
+ | *podrobnosti | ||
+ | *kľúčové slová | ||
+ | príklad: PDF súbor generovaný opisovanou aplikáciu by mohol vyzerať nasledovne | ||
+ | [[Súbor:Final PDF.JPG|framed|center|Obr. 6 Ukážka PDF súboru]] | ||
+ | |||
+ | =Záver= | ||
+ | V práci bol popis PDF formátu ktorý následne používame ako formát pri exporte tabuľky rozvrhu a tlačových zostáv FM TnUAD. Po zadefinovaní rozloženia výstupnej zostavy rozvrhu som vytvoril PDF súbor s týmto návrhom. Pre generovanie PDF súboru som vytvoril triedu My_Pdf ktorá je potomkom triedy Zend_Pdf z frameworku ZEND. Celý projekt bol postavený na frameworku ZEND v jazyku PHP. | ||
+ | <br/>Práca bude pokračovať bakalárskou prácou kde budú rozšírené možnosti exportu o formát xlsx. Ďalšou úlohou bude vytvoriť štatistické reporty rozvrhu ako sú napr.: vyťaženie miestností, úväzky pedagógov a iné. | ||
+ | |||
+ | =Bibliografia= | ||
+ | [1] wikipedia. www.wikipedia.org. www.sk.wikipedia.org. [Online] 27. 12 2009. [Dátum: 14. 1 2010.] http://sk.wikipedia.org/wiki/Otvoren%C3%BD_form%C3%A1t. | ||
+ | <br/>[2] abclinuxu.cz. www.abclinuxu.cz. [Online] 31. 03 2008. [Dátum: 18. 01 2010.] http://www.abclinuxu.cz/clanky/rozhovory/rozhovor-jiri-kosek-o-ooxml-odf-a-formatech-obecne. | ||
+ | <br/>[3] Adobe Systems Incorporated. Portable Document Format Reference Manual. s.l. : Adobe Systems Incorporated., 1996. ISBN 0–201–62628–4. | ||
+ | <br/>[4] Katedra informatiky a výpočetní techniky. www-kiv.zcu.cz. [Online] 08. 06 1999. [Dátum: 16. 01 2010.] http://www-kiv.zcu.cz/~herout/html_sbo/pdf/toc.htm. |
Aktuálna revízia z 13:59, 24. február 2010
Obsah
Na projekte „rozvrh FM TnUAD“ pracujeme 3 študenti. Dušan Pagáč, Milan Porubský a ja. Preto sme sa museli dohodnúť na určitých štandardoch a pravidlách. Mojou úlohou bolo:
- generovanie tlačových zostáv
- štatistické reporty údajov
Generovanie tlačových zostáv V našej aplikácii má používateľ dve možnosti tlačových zostáv
- export rozvrhu do PDF súboru
- export rozvrhu do formátu xlsx
Export rozvrhu do PDF súboru PDF formát je v dnešnej dobe nepísaným štandardom pre archiváciu technických dokumentov. je to voľne šíriteľný formát čo je jedným z dôvodov prečo som sa rozhodol pravé pre tento formát. Export rozvrhu do formátu xlsx Ďalšia možnosť exportu dát je xlsx formát. Xlsx formát je tiež voľne šíriteľný a rozšírený medzi používateľmi.
Realizácia tlačových zostáv
Celý projekt sme realizovali v programovacom jazyku PHP a s použitím ZEND frameworku. Čo je jedným s pravidiel na ktorých sme sa dohodli so študentmi čo pracujú na tomto projekte a s naším konzultantom. Ďalšie pravidlá boli:
- štruktúra databázových tabuliek
- formát URL pre filtrovanie rozvrhu
Realizácia exportu rozvrhu do PDF súboru
Prvým krokom bolo spracovanie URL požiadavku na filtrovanie rozvrhu. Príklad URL požiadavku:
http://domena.sk/rozvrh/export/pdf/?kruzok=21302&ucitel=3&miestnost=30&predmet=2
v tomto prípade ma filter nasledovné hodnoty:
Krúžok je 21302. Hodnoty ucitel, miestnost a predmet obsahujú identifikačné číslo učiteľa, miestnosti a predmetu v databáze.
Funkcia public function getUrlData()mi do poľa public $myFilter uloží hodnoty z URL.
Ďalším krokom je samotné filtrovanie údajov z databázy.
for($i=1;$i<=5;$i++){
$selectDay = $db->select()
->from(T_VIEW)
->where('day = ?', $i)
->order('hour ASC');
if(isset($this->myFilter['kruzok'])){
$selectDay->where('subclass = ' . $db->quote($this->myFilter['kruzok']).' OR (subclass IS NULL
AND branch_num = ' . intval( $this->myFilter['kruzok'][1]) . '
AND year = ' . intval( $this->myFilter['kruzok'][2]) . ')');
}
if(isset($this->myFilter['miestnost'])){
$selectDay->where('room_id = ?',$this->myFilter['miestnost']);
}
if(isset($this->myFilter['ucitel'])){
$selectDay->where('user_id = ?',$this->myFilter['ucitel']);
}
if(isset($this->myFilter['predmet'])){
$selectDay->where('subject_id = ?',$this->myFilter['predmet']);
}
Do poľa $selectDay uložíme s tabuľky rozvrh_view všetky záznamy z jednotlivých dní. Postupne sa z tohto poľa filtrujú údaje podľa poľa $myFilter. Získané údaje sú ďalej spracovávané a pripravované na vypisovanie do PDF súboru. Štyri hlavné údaje sa usporiadajú podľa URL požiadavku.
Ukážka jednej bunky z tabuľky rozvrhu:
Priorita | Filter | Hlavný údaj | Druhý údaj | Tretí údaj |
---|---|---|---|---|
1 | krúžok | predmet | učiteľ | miestnosť |
2 | učiteľ | predmet | krúžok | miestnosť |
3 | predmet | učiteľ | krúžok | miestnosť |
4 | miestnosť | predmet | učiteľ | krúžok |
Príklad: ak URL obsahuje filtrovanie pre učiteľa a predmet tak hlavný údaj bude obsahovať predmet, druhý údaj bude obsahovať krúžok a tretí údaj miestnosť. Ďalšie údaje sú pre hociktorú variantu rovnaké. Zoznam údajov:
- hlavný údaj
- druhý údaj
- tretí údaj
- dĺžka hodiny
- typ hodiny (prednášky, cvičenia alebo laboratórne cvičenia)
- farba políčka
- týždeň (párny, nepárny alebo každý týždeň)
- skratka hlavného údaju
- skratka druhého údaju
- začiatok hodiny
- údaje pre legendu číslo 1
- údaje pre legendu číslo 2
Príklad jedného záznamu údajov:
[0] => string(32) "Logické a číslicové systémy"
[1] => string(7) "P. Fabo"
[2] => string(7) "Zlm 211"
[3] => string(1) "2"
[4] => string(1) "l"
[5] => string(7) "#EFD1D1"
[6] => string(1) "k"
[9] => string(4) "LČS"
[10] => string(5) "Peter"
[11] => string(2) "12"
[12] => string(27) "P. Fabo - Peter Fabo, RnDr."
[13] => string(39) "LČS - Logické a číslicové systémy"
Takto upravené údaje ukladám do premennej $tabulka.
Vykresľovanie hlavyčky
Ďalší krok je vykreslenie hlavičky PDF súboru. Najprv vykreslím logo našej fakulty potom vypíšem Trenčianska univerzita Alexandra Dubčeka v Trenčíne Fakulta Mechatroniky a nakoniec vykreslím oddeľovací pásik. Pod čiarou sa vykreslí filter s URL požiadaviek.
Vykresľovanie tabuľky s rozvrhom
Najprv som si vykreslil prázdnu tabuľku pomocou public function addEmptyTable($x1,$y1). Premenná $x1 a $y1 obsahuje polohu horného rohu tabuľky.
Potom pomocou opakovaného volania public function addRow($riadok,$x1,$y1) sa vykresľujú jednotlivé dni rozvrhu. Funkcia zabespečuje:
- správne zobrazovanie hodín párneho a nepárneho týždňa
- vyfarbuje bunky podľa typu hodiny
- počíta dĺžku danej bunky
- vypisuje údaje do bunky, ak je dĺžka názvu predmetu dlhšia ako dĺžka bunky tak sa vypíše skratka predmetu
- vyplňuje legendu podľa použitých skratiek
Vypísanie legendy
public function addCaption($y1) do prvého stĺpca vypíše legendu pre skratky učiteľov a do druhého vypíše legendu pre skratky predmetov. Do spodnej časti PDF súboru vypíše legendu farebného značenia buniek.
Vypísanie päty dokumentu
V päte súboru sú informácie o katedre ktorá zastrešuje celý projekt a o autorovi.
Popis PDF súboru
Posledným krokom pred samotným odoslaním súboru na stiahnutie, je vyplnenie popisu. Sú vyplnené nasledovné údaje:
- titulok
- autor
- podrobnosti
- kľúčové slová
príklad: PDF súbor generovaný opisovanou aplikáciu by mohol vyzerať nasledovne
Záver
V práci bol popis PDF formátu ktorý následne používame ako formát pri exporte tabuľky rozvrhu a tlačových zostáv FM TnUAD. Po zadefinovaní rozloženia výstupnej zostavy rozvrhu som vytvoril PDF súbor s týmto návrhom. Pre generovanie PDF súboru som vytvoril triedu My_Pdf ktorá je potomkom triedy Zend_Pdf z frameworku ZEND. Celý projekt bol postavený na frameworku ZEND v jazyku PHP.
Práca bude pokračovať bakalárskou prácou kde budú rozšírené možnosti exportu o formát xlsx. Ďalšou úlohou bude vytvoriť štatistické reporty rozvrhu ako sú napr.: vyťaženie miestností, úväzky pedagógov a iné.
Bibliografia
[1] wikipedia. www.wikipedia.org. www.sk.wikipedia.org. [Online] 27. 12 2009. [Dátum: 14. 1 2010.] http://sk.wikipedia.org/wiki/Otvoren%C3%BD_form%C3%A1t.
[2] abclinuxu.cz. www.abclinuxu.cz. [Online] 31. 03 2008. [Dátum: 18. 01 2010.] http://www.abclinuxu.cz/clanky/rozhovory/rozhovor-jiri-kosek-o-ooxml-odf-a-formatech-obecne.
[3] Adobe Systems Incorporated. Portable Document Format Reference Manual. s.l. : Adobe Systems Incorporated., 1996. ISBN 0–201–62628–4.
[4] Katedra informatiky a výpočetní techniky. www-kiv.zcu.cz. [Online] 08. 06 1999. [Dátum: 16. 01 2010.] http://www-kiv.zcu.cz/~herout/html_sbo/pdf/toc.htm.