mistnost.class.php :40:04

Podobné dokumenty
Internet cvičení. ZS 2009/10, Cvičení 3., Tomáš Pop. DISTRIBUTED SYSTEMS RESEARCH GROUP

!!Via!AUREA,!s.r.o.!

Tvorba WWW stránek. přehled technologií používaných na webu principy jednotlivých technologií a možnosti jejich vzájemného kombinování

Název Live prez Sear enta Maps

Internet cvičení. ZS 2009/10, Cvičení 4., PHP. Tomáš Pop. DISTRIBUTED SYSTEMS RESEARCH GROUP

Programování v PHP. Katedra softwarového inženýrství Fakulta informačních technologií České vysoké učení technické v Praze. Další možnosti formulářů

Printris. Hra Printris je psána pomocí příkazů Javascriptu a standardních příkazů HTML.

ČVUT Fakulta dopravní v Praze

Tvorba webových stránek

HTML Hypertext Markup Language

Programování v jazyce JavaScript

Programování v jazyce JavaScript

Tvorba informačních systémů

Třídy a objekty. Třídy a objekty. Vytvoření instance třídy. Přístup k atributům a metodám objektu. $z = new Zlomek(3, 5);

Skriptovací jazyky. Obsah

K práci budeme využívat souborového manažeru Unreal Commander alespoň si ho procvičíme

Programování v jazyce JavaScript

NSWI096 - INTERNET. CSS kaskádové styly. Mgr. Petr Lasák

Programování v jazyce JavaScript

Tvorba informačních systémů

(X)HTML, CSS a jquery

VYŠŠÍ ODBORNÁ ŠKOLA a STŘEDNÍ PRŮMYSLOVÁ ŠKOLA Mariánská 1100, Varnsdorf PROGRAMOVÁNÍ FUNKCE, REKURZE, CYKLY

Návrh a tvorba WWW stránek 1/8. Formuláře

WWW a HTML. Základní pojmy. Ivo Peterka

<html> - párový tag, uzavírá celý dokument <head> - párový, určuje hlavičku dokumentu <body> - párový, uzavírá tělo dokumentu Př. Základní struktura

PHP. Čtvrtek 8. září. Čtvrtek 15. září. Anonymní test znalostí

Programování v jazyce JavaScript

Ing. Přemysl Brada, MSc., Ph.D. Ing. Martin Dostal. Katedra informatiky a výpočetní techniky, FAV, ZČU v Plzni

Tlačítko Teachers Guide obsahuje odkaz na stručný popis hry a její účel v projektu Ingot.

X36WWW. Vícevrstvá architektura webové aplikace Martin Klíma. Tvorba Webu 2 1

HTTP. Webový server. generátor HTML stránek (CGI, Perl, PHP, Python, Ruby, Java, ASP.NET) zpracování požadavku/ odeslání odpovědi.

Bottle -- příklad. Databáze. Testovací data. id Jedinečný identifikátor řádku: Bude typu INT s AUTO_INCREMENT a nastavíme ho jako primární klíč

Pear - hruška Systém pro implementaci a distribuci znovupoužitelných komponent (v PHP) Strukturovaná knihovna open-source (PHP) skriptů Systém pro dis

CMS LARS VIVO VERZE 1.2 Z POHLEDU VIVOJÁŘE

ČERV. Hra Červ je psána pomocí příkazů Javascriptu a standardních příkazů HTML.

NSWI096 - INTERNET. Úvod do HTML

1 Základy programování v PHP

Mgr. Vlastislav Kučera lekce č. 2

Semestrální úloha 1 z předmětu Programovací jazyk C. Textový merge. Student:

Tvorba www-stránek. Příkazy jazyka HTML. Budeme pracovat následovně: Základní struktura webové stránky. Příkazy sekce HEAD

Dokument XHTML. Prohlížeč. styl CSS. Výstupní dokument. Soubor DTD

Mgr. Vlastislav Kučera přednáška č. 2

Základy HTML, URL, HTTP, druhy skriptování, formuláře

Kaskadové styly (CSS) VOŠG Hellichova Praha 2010 Jirka Jahoda

Tlačítko Teachers Guide obsahuje odkaz na stručný popis hry a její účel v projektu Ingot.

Ajax - úvod. Klíčové pojmy: Ajax, skriptování na straně klienta a serveru, objekt XMLHttpRequest, DOM model.

HTML stránka vložení obrázku

Základy HTML. Obecná syntaxe HTML. Struktura HTML

25. TVORBA HTML DIALOGŮ PRO PEVNÉ TVARY

Programování v jazyce JavaScript

Programování v jazyce JavaScript

Co se v modulu dozvíte? Co jsou návrhové vzory? Ukázky návrhových vzorů Vytvoření databáze

Programování v jazyce JavaScript

HTML - Úvod. Zpracoval: Petr Lasák

Hromadné úpravy digitálních fotografií, metadata a úložiště

Formuláře. Internetové publikování. Formuláře - příklad

XHTML 1. Formuláře. Element form. <form>... </form>

Tvorba webových stránek

IE1 jazyk HTML a kaskádové styly

Základy CSS (3. přednáška)

Zá klady HTML. Tag HTML <HTML> Párová značka, který definuje webovou stránku. Obsah stránky končí značkou

EVROPSKÝ SOCIÁLNÍ FOND. Úvod do PHP PRAHA & EU INVESTUJEME DO VAŠÍ BUDOUCNOSTI

Využití OOP v praxi -- Knihovna PHP -- Interval.cz

IE1 jazyk HTML a kaskádové styly

Kaskádové styly (CSS)

Programování v jazyce JavaScript

Uspořádání klient-server. Standardy pro Web

Úvod do jazyka HTML (Hypertext Markup Language)

Základy programování v jazyce JAVA

Formuláře. neomezený počet formulářových polí v rámci HTML dokumentu může být více formulářů, nelze je ale do sebe vnořovat

PAINTING SCHEMES CATALOGUE 2005

NSWI142 Webové aplikace Zkouškový test

Inovace a zkvalitnění výuky prostřednictvím ICT Tvorba webových stránek. Ing. Zelinka Pavel Číslo: VY_32_INOVACE_35 17 Anotace:

Formuláře. Aby nám mohli uživatelé něco hezného napsat třeba co si o nás myslí!

LED svetelné dekorácie LED decorations

Tlačítkem Poskládej jiný počítač se hra vrátí na úvodní obrazovku a lze zvolit jiný obrázek.

Další nutný soubor je laydiv.js, ve kterém jsou uloženy funkce pro zobrazování virů na ploše a funkce pro odkaz na Teachers Guide.

Neprogramuj, pokud to není nezbytně nutné. Michal Lupečka

Barvy v počítači a HTML.

Návrh a tvorba WWW stránek 1/38 PHP

NÁVOD K ON-LINE DATŮM

Úvod do tvorby internetových stránek v jazyce HTML

NSWI096 - INTERNET JavaScript

ESO9 international a.s.

SAMUEL LEROY JACKSON. Projekt webové stránky. Programové vybavení Jáchym Kubáček, IT3B Brno 2016

Tvorba WWW stránek. Mgr. Petr Jakubec. Katedra fyzikální chemie Univerzita Palackého v Olomouci Tř. 17. listopadu

CSS Stylování stránek. Zpracoval: Petr Lasák

Kroužek na klíče Key ring povrch: finish: materiál: material: Kód nosnost kg/100ks

Název DUM: VY_32_INOVACE_2B_14_ Programovací_jazyk_HTML

Mgr. Vlastislav Kučera Struktura stránky, hlavička,

Podpora nových webových technologií HTML5 a CSS3 v aktuálních verzích prohlížečů

HTML. HyperText Markup Language Josef Steinberger

TNPW1 Cvičení aneta.bartuskova@uhk.cz

TVORBA WEBOVÝCH STRÁNEK

Internetové publikování. Doc. Ing. Petr Zámostný, Ph.D. místnost: A-72a tel.: 4222, 4167 (sekretariát ústavu 111)

GIS integrované využití 6 sem podtitul nebo stručně obsah. OpenLayers


Základy (X)HTML. WWW stránka WWW stránka dokument (soubor) s informacemi a pokyny pro jejich zobrazení

Koláčky, sezení. Martin Klíma

Transkript:

mistnost.class.php 24.6.2007-16:40:04 1: <?php 2: class basemistnost { 3: var $cislo = ''; 4: var $stupen_zony = 1; 5: var $vstupni_vazby = array(); 6: var $vystupni_vazby = array(); 7: var $objem = 0; 8: var $data = array(); 9: var $graph_color = 'black'; 10: 11: function basemistnost($cislo) { 12: $this->cislo = $cislo; 13: } 14: 15: # pridat vstupni vazbu 16: function addinrel($cislo) { 17: if (!in_array($cislo, $this->vstupni_vazby)) $this->vstupni_vazby[] = $cislo; 18: $this->setzonenumber(); 19: } 20: 21: # pridat vystupni vazbu 22: function addoutrel($cislo) { 23: if (!in_array($cislo, $this->vystupni_vazby)) $this->vystupni_vazby[] = $cislo; 24: $this->setzonenumber(); 25: } 26: 27: function setzonenumber() { 28: $pocet_vstupnich_vazeb = count($this->vstupni_vazby); 29: $pocet_vystupnich_vazeb = count($this->vystupni_vazby); 30: 31: if ($pocet_vstupnich_vazeb && $pocet_vystupnich_vazeb) { 32: $this->stupen_zony = ($pocet_vstupnich_vazeb == 1 && $pocet_vystupnich_vazeb == 1)? 2 : 3; 33: } else if ($pocet_vstupnich_vazeb == 1) { 34: $this->stupen_zony = 4; 35: } 36: } 37: 38: function data_ksort() { 39: ksort($this->data); 40: } 41: 42: function genzonaheader() { 43: global $HTML; 44: 45: $x = $HTML->tbl_start(array('border' => 0)); 46: $x.= '<tr>'."\n"; 47: $x.= '<td><b>zóna:</b></td>'."\n"; 48: $x.= '<td>'.$this->cislo.'</td>'."\n"; 49: $x.= '</tr>'."\n"; 50: 51: $x.= '<tr>'."\n"; 52: $x.= '<td><b>objem:</b></td>'."\n"; 53: $x.= '<td><input type="text" name="zadani[zona]['.$this->cislo.'][objem]" size="5" value="'.$this->objem.'" /> m<sup>3</sup></td>'."\n"; - 1 -

mistnost.class.php 24.6.2007-16:40:04 54: $x.= '</tr>'."\n"; 55: 56: $x.= '<tr>'."\n"; 57: $x.= '<td><b>barva:</b></td>'."\n"; 58: 59: $barvy = array( 60: 'none' => '--- nekreslit ---', 61: 'white' => 'bílá', 62: 'red' => 'červená', 63: 'green' => 'zelená', 64: 'blue' => 'modrá', 65: 'brown' => 'hnědá', 66: 'black' => 'černá', 67: 'gray' => 'šedá', 68: 'yellow' => 'žlutá', 69: 'orange' => 'oranžová', 70: 'magneta' => 'fialová', 71: 'cyan' => 'tyrkysová', 72: 'pink' => 'růžová', 73: ); 74: 75: $x.= '<td>'."\n"; 76: $x.= $HTML->select(' name="zadani[zona]['.$this->cislo.'][graph_color]"', $barvy, array($this->graph_color)); 77: $x.= '</td>'."\n"; 78: 79: $x.= '</tr>'."\n"; 80: $x.= $HTML->tbl_end(); 81: return $x; 82: } 83: 84: function genzonaemptyinput() { 85: $x = '<td><input type="text" name="zadani[n][zona]['.$this->cislo.'][produkce_skodliviny]" size="5" /></td>'."\n"; 86: $x.= '<td><input type="text" name="zadani[n][zona]['.$this->cislo.'][vetraci_mnozstvi]" size="5" /></td>'."\n"; 87: return $x; 88: } 89: 90: function genzonainput($date) { 91: $x = '<td><input type="text" name="zadani['.$date.'][zona]['.$this->cislo.'][produkce_skodliviny]" size="5" value="'.$this->data[$date]['produkce_skodliviny'].'" /></td>'."\n"; 92: $x.= '<td><input type="text" name="zadani['.$date.'][zona]['.$this->cislo.'][vetraci_mnozstvi]" size="5" value="'.$this->data[$date]['vetraci_mnozstvi'].'" /></td>'."\n"; 93: return $x; 94: } 95: } 96:?> - 2 -

1: <?php 2: require_once CLASS_PATH.'mistnost.class.php'; 3: 4: class basemodel { 5: var $vazby = array(); 6: var $mistnost = array(); 7: var $base_vazby = array(); 8: var $koncove_zony = array(); 9: var $zadani_spolecna_data = array(); 10: 11: function basemodel() { 12: } 13: 14: // definice zakladnich cest proudeni vzduchu 15: function getcesty() { 16: $this->base_vazby = array( 17: '3' => array('2','1'), 18: '4' => array('2','1'), 19: '7' => array('3','2','1'), 20: '8' => array('4','2','1'), 21: ); 22: $cesta = reset($this->base_vazby); 23: $this->koncove_zony = array(array_pop($cesta), array_pop($cesta)); 24: $this->cislo_mistnosti_s_jednotkou = $this->koncove_zony[0]; 25: } 26: 27: // generovani vazeb mezi mistnostmi 28: function genvazby() { 29: foreach ($this->base_vazby as $klic => $vazba) { 30: $i = 0; 31: $this->mistnost[$klic] = new basemistnost($klic); # inicializace objektu "mistnost" - zona stupen 1 32: 33: $prev_cislo = $klic; 34: foreach ($vazba as $cislo_mistnosti) { 35: if (!isset($this->mistnost[$cislo_mistnosti])) $this->mistnost[$cislo_mistnosti] = new basemistnost($cislo_mistnosti); # inicializace objektu "mistnost" 36: if (!$i) $this->mistnost[$klic]->addoutrel($cislo_mistnosti); 37: 38: $this->mistnost[$cislo_mistnosti]->addinrel($prev_cislo); 39: 40: if ($next_cislo = isset($vazba[$i + 1])? $vazba[$i + 1] : False) $this->mistnost[$cislo_mistnosti]->addoutrel($next_cislo); 41: 42: $i++; 43: $prev_cislo = $cislo_mistnosti; 44: if ($klic == $cislo_mistnosti) { 45: debug('pozor: zona c. '.$cislo_mistnosti.' ma vazbu sama na sebe - odstrante problem!!!'); 46: exit; 47: } 48: } 49: } 50: } - 1 -

51: 52: // zpracovani dat odeslanych zadavacim formularem 53: function getzadanadata() { 54: global $zadani, $skodlivina; 55: 56: $_SESSION['m-con']['data'] = $zadani; 57: 58: if (isset($zadani['zona'])) { 59: foreach($zadani['zona'] as $key => $item) { 60: $this->mistnost[$key]->graph_color = $item['graph_color']; 61: $this->mistnost[$key]->objem = $item['objem']; 62: } 63: unset($zadani['zona']); 64: } 65: 66: $this->zadani_spolecna_data = array(); 67: foreach ($zadani as $klic => $prvek) { 68: if (ereg('^[0-9]{4}-[0-9]{2}-[0-9]{2} [0-9]{2}:[0-9]{2}:[0-9]{2}$', $prvek['datum'])) { 69: $insert_key = $prvek['datum']; 70: $this->zadani_spolecna_data[$insert_key] = array( 71: 'co2_ppm_ext' => isset($prvek['co2_ppm_ext'])? $prvek['co2_ppm_ext'] : $skodlivina['c_ext'], # koncentrace skodliviny ve venkovnim vzduchu 72: 'procento_cirkulace' => isset($prvek['procento_cirkulace'])? $prvek['procento_cirkulace'] : 0, # procento miseni vzduchu cirkulacni vzduch / veknovni 73: ); 74: foreach ($zadani[$klic]['zona'] as $key => $item) { 75: $this->mistnost[$key]->data[$insert_key] = array( 76: 'produkce_skodliviny' => $item['produkce_skodliviny'], 77: 'vetraci_mnozstvi' => $item['vetraci_mnozstvi'], 78: 'co2_ppm_ext' => $prvek['co2_ppm_ext'], 79: 'procento_cirkulace' => $prvek['procento_cirkulace'], 80: ); 81: } 82: 83: foreach($this->koncove_zony as $key) { 84: if (!isset($this->mistnost[$key]->data[$insert_key])) $this->mistnost[$key]->data[$insert_key] = array( 85: 'produkce_skodliviny' => 0, 86: 'vetraci_mnozstvi' => 0, 87: 'co2_ppm_ext' => $prvek['co2_ppm_ext'], 88: 'procento_cirkulace' => $prvek['procento_cirkulace'], 89: - 2 -

); 90: } 91: unset($zadani[$klic]); 92: } 93: } 94: ksort($this->zadani_spolecna_data); // setridit pole podle klicu 95: foreach ($this->mistnost as $key => $item) $this->mistnost[$key]->data_ksort(); 96: } 97: 98: function vypocet() { 99: global $basic_data, $CO2_RO, $CO2_C_EXT; 100: 101: $zony_stupen = array(); 102: foreach($this->mistnost as $key => $item) { 103: if (!isset($zony_stupen[$item->stupen_zony])) $zony_stupen[$item->stupen_zony] = array(); 104: $zony_stupen[$item->stupen_zony][] = $key; 105: } 106: 107: $timestep = $basic_data['timestep'] * 60; // prevest na vteriny 108: $interval_start = strtotime(reset(array_keys($this->zadani_spolecna_data))); 109: $interval_finish = strtotime(end(array_keys($this->zadani_spolecna_data))); 110: 111: $prev_datetime = null; 112: for ($i = $interval_start; $i <= $interval_finish; $i += $timestep) { 113: $datetime = strftime('%y-%m-%d %H:%M:%S', $i); 114: // vypocitat zony typu 1, po nich zony typu 2, zonu typu 3 a 4 pro 115: foreach($zony_stupen as $stupen_zony => $mistnosti) { 116: foreach($mistnosti as $cislo_mistnosti) { 117: $mistnost = &$this->mistnost[$cislo_mistnosti]; // vytvoreni reference na objekt mistnost 118: if (!isset($mistnost->data[$datetime])) { // vytvoreni a naplneni zakladnich dat 119: $mistnost->data[$datetime] = array(); 120: if (!is_null($prev_datetime)) { 121: $mistnost->data[$datetime]['procento_cirkulace'] = $mistnost->data[$prev_datetime]['procento_cirkulace']; 122: $mistnost->data[$datetime]['co2_ppm_ext'] = $mistnost->data[$prev_datetime]['co2_ppm_ext']; 123: } 124: } 125: 126: switch ($mistnost->stupen_zony) { 127: case 1: 128: break; 129: 130: case 2: 131: case 3: 132: case 4: 133: $suma_v = 0; // soucet vetracich objemu 134: $suma_vxc = 0; // soucet soucinu Vetraci_objem x Concentrace 135: /* vypocet prichozich prutoku z mistnosti */ 136: foreach($mistnost->vstupni_vazby as $zona) { 137: $V = isset($this->mistnost[$zona]->data[$datetime]['vetraci_mnozstvi'])? - 3 -

$this->mistnost[$zona]->data[$datetime]['vetraci_mnozstvi'] * 1 : 0; 138: $C = isset($this->mistnost[$zona]->data[$datetime]['co2_ppm'])? $this->mistnost[$zona]->data[$datetime]['co2_ppm'] * 1 : 0; 139: 140: $suma_v += $V; 141: $suma_vxc += $V * $C; 142: } 143: /* vypocet prichozich prutoku z mistnosti */ 144: 145: $mistnost->data[$datetime]['prichozi_v'] = $suma_v; 146: $mistnost->data[$datetime]['prichozi_vxc'] = $suma_vxc; 147: 148: if (in_array($mistnost->stupen_zony, array(3, 4))) { 149: $mistnost->data[$datetime]['vetraci_mnozstvi'] = $suma_v; 150: $mistnost->data[$datetime]['co2_ppm'] = $suma_vxc / $suma_v; 151: } 152: break; 153: } 154: 155: /* vypocet koncentrace v mistnosti */ 156: if (in_array($mistnost->stupen_zony, array(1, 2)) && $mistnost->objem && $CO2_RO) { 157: if (isset($this->zadani_spolecna_data[$datetime])) { 158: if (is_null($prev_datetime)) { // nacitat pouze pro 1. casovy uzel - nemisi se nic 159: $mistnost->vetraci_mnozstvi = $mistnost->data[$datetime]['vetraci_mnozstvi']; 160: $mistnost->produkce_skodliviny = $mistnost->data[$datetime]['produkce_skodliviny']; 161: } 162: } else { 163: $mistnost->data[$datetime]['vetraci_mnozstvi'] = $mistnost->vetraci_mnozstvi; 164: $mistnost->data[$datetime]['produkce_skodliviny'] = $mistnost->produkce_skodliviny; 165: } 166: 167: if (is_null($prev_datetime)) { // pro 1. casovy uzel nastavit pocatecni (venkovni) koncentraci 168: $A = $CO2_C_EXT * $CO2_RO; // v 1. casovem uzlu netreba pocitat??? asi ne... 169: $mistnost->data[$datetime]['co2_ppm'] = $CO2_C_EXT; 170: 171: } else { 172: /* zapocitat take vetraci objem ze vzduchotechniky */ 173: $procento = $mistnost->data[$datetime]['procento_cirkulace'] / 100; 174: $mistnost->data[$datetime]['co2_ppm_vzt_vetrani'] = ($this->mistnost[$this->cislo_mistnosti_s_jednotkou]->data[$prev_datetime]['co2_ppm'] * $procento + (1 - $procento) * $mistnost->data[$datetime]['co2_ppm_ext']); 175: /* /zapocitat take vetraci objem ze vzduchotechniky */ 176: 177: $c_co2_prev = $mistnost->data[$prev_datetime]['co2_ppm']; // nacist koncentraci v predchozim kroku 178: $A = $mistnost->data[$datetime]['co2_ppm_vzt_vetrani'] * $CO2_RO; // - 4 -

nacist koncentraci v privodnim vzduchu 179: 180: switch ($mistnost->stupen_zony) { 181: case 1: 182: break; 183: 184: case 2: 185: $mistnost->data[$datetime]['prichozi_c'] = $mistnost->data[$datetime]['prichozi_vxc'] / $mistnost->data[$datetime]['prichozi_v']; 186: break; 187: } 188: 189: $B = $mistnost->produkce_skodliviny * $CO2_RO * 1000 / $mistnost->vetraci_mnozstvi; 190: $mistnost->data[$datetime]['co2_ppm'] = ($A + $B - ($A - $CO2_RO * $c_co2_prev + $B) * exp(- 1 * $mistnost->vetraci_mnozstvi * $timestep / (3600 * $mistnost->objem))) / $CO2_RO; 191: 192: if ($mistnost->cislo == '7') { 193: # debug($datetime); 194: # debug($mistnost->data[$datetime]['co2_ppm']); 195: } 196: 197: if (isset($this->zadani_spolecna_data[$datetime]) &&!is_null($prev_datetime)) { // nacitat pro 2. a vyssi casovy uzel 198: $mistnost->vetraci_mnozstvi = $mistnost->data[$datetime]['vetraci_mnozstvi']; 199: $mistnost->produkce_skodliviny = $mistnost->data[$datetime]['produkce_skodliviny']; 200: } 201: } 202: } 203: /* /vypocet koncentrace v mistnosti */ 204: } 205: } 206: $prev_datetime = $datetime; 207: } 208: 209: # seradit vypoctena data podle casu 210: foreach ($this->mistnost as $key => $item) $this->mistnost[$key]->data_ksort(); 211: } 212: 213: function genkoncovezonyform() { 214: global $basic_data, $HTML; 215: 216: $checkboxes = ''; 217: $cesta = array( 218: 1 => array( 7, 3, 2), 219: 2 => array( 9, 5, 2), 220: 3 => array( 8, 4, 2), 221: 4 => array(10, 6, 2), 222: ); 223: foreach($cesta as $key => $item) { 224: foreach ($item as $i) { - 5 -

225: $checkboxes.= '<input class="zona" id="z'.$key.'_'.$i.'" name="cesta_'.$key.'" type="radio" value="'.$i.'" />'; 226: } 227: } 228: $pudorys = '<div style="position: relative;">'.$checkboxes.'<img src="img/pudorys.gif" width="611" height="296" alt="" title="" /></div>'; 229: 230: $x = $HTML->tbl_start(); 231: $x.= '<tr><td>časový krok pro vykreslení průběhu koncentrací</td><td><input name="basic_data[timestep]" size="5" value="'.$basic_data['timestep'].'" /> minut</td><td rowspan="3">'.$pudorys.'</td></tr>'."\n"; 232: foreach($this->koncove_zony as $klic) { 233: $x.= '<tr valign="top"><td colspan="2">'.$this->mistnost[$klic]->genzonaheader().'</td></tr>'."\n"; 234: } 235: $x.= $HTML->tbl_end(); 236: $x.= '<br />'."\n"; 237: return $x; 238: } 239: 240: function genform() { 241: global $HTML; 242: 243: /* zahlavi formulare */ 244: $tr1 = ''; 245: $tr2 = ''; 246: $tr3 = ''; 247: foreach ($this->mistnost as $key => $item) { 248: if ($item->stupen_zony == 1) { 249: $cesta_vzduchu = array_merge(array($item->cislo), $this->base_vazby[$item->cislo]); 250: $tr1.= '<th colspan="'.(2 * (count($cesta_vzduchu) - 2)).'">cesta vzduchu: '.implode(' -> ', $cesta_vzduchu).'</th>'."\n"; 251: } 252: 253: if (in_array($item->stupen_zony, array(1,2))) { 254: $tr2.= '<td colspan="2">'."\n"; 255: $tr2.= $item->genzonaheader(); 256: $tr2.= '</td>'."\n"; 257: 258: $tr3.= '<th>produkce škodliviny<br />[l/h]</th>'."\n"; 259: $tr3.= '<th>množství přiváděného<br />větr. vzduchu<br />[m<sup>3</sup>/h]</th>'."\n"; 260: } 261: } 262: $x = ''; 263: $x.= $HTML->tbl_start(); 264: $x.= '<thead>'."\n"; 265: $x.= '<tr valign="top">'."\n"; 266: $x.= '<th rowspan="3"><b>datum čas<br /><small>formát<br />[YYYY-MM-DD HH:MM:SS]</small></b></th>'."\n"; 267: $x.= '<th rowspan="3">koncentrace ve venk. vzduchu<br />[ppm]</th>'."\n"; 268: $x.= '<th rowspan="3">procento mísení vzduchu<br />cirkulace / venkovní<br />[%]</th>'."\n"; 269: $x.= $tr1; - 6 -

270: $x.= '</tr>'."\n"; 271: $x.= '<tr valign="top">'."\n"; 272: $x.= $tr2; 273: $x.= '</tr>'."\n"; 274: $x.= '<tr valign="top">'."\n"; 275: $x.= $tr3; 276: $x.= '</tr>'."\n"; 277: $x.= '</thead>'."\n"; 278: /* /zahlavi formulare */ 279: 280: /* tvorba zadavaciho formulare */ 281: $x.= '<tbody>'."\n"; 282: foreach($this->zadani_spolecna_data as $klic => $prvek) { 283: $x.= '<tr align="center" valign="top">'."\n"; 284: $x.= '<td><input type="text" name="zadani['.$klic.'][datum]" size="20" value="'.$klic.'" /></td>'."\n"; 285: $x.= '<td><input type="text" name="zadani['.$klic.'][co2_ppm_ext]" size="5" value="'.($prvek['co2_ppm_ext']).'" /></td>'."\n"; 286: $x.= '<td><input type="text" name="zadani['.$klic.'][procento_cirkulace]" size="5" value="'.($prvek['procento_cirkulace']).'" /></td>'."\n"; 287: 288: foreach ($this->mistnost as $key => $item) { 289: if (in_array($item->stupen_zony, array(1,2))) { 290: $x.= $item->genzonainput($klic); 291: } 292: } 293: } 294: $x.= '<tbody>'."\n"; 295: 296: $x.= '<tr align="center" valign="top">'."\n"; 297: $x.= '<td><input type="text" name="zadani[n][datum]" size="20" /></td>'."\n"; 298: $x.= '<td><input type="text" name="zadani[n][co2_ppm_ext]" size="5" /></td>'."\n"; 299: $x.= '<td><input type="text" name="zadani[n][procento_cirkulace]" size="5" /></td>'."\n"; 300: foreach ($this->mistnost as $key => $item) { 301: if (in_array($item->stupen_zony, array(1,2))) { 302: $x.= $item->genzonaemptyinput(); 303: } 304: } 305: $x.= '</tr>'."\n"; 306: 307: $x.= $HTML->tbl_end(); 308: $x.= '<br />'."\n"; 309: /* /tvorba zadavaciho formulare */ 310: return $x; 311: } 312: 313: function genzonetables() { 314: global $HTML; 315: 316: $x = ''; 317: foreach($this->base_vazby as $key => $item) { 318: $x.= $HTML->tbl_start(); 319: $x.= '<tr>'."\n"; - 7 -

320: $x.= '<td><b>datum</b></td>'."\n"; 321: foreach (array_merge(array($key), $item) as $zona) $x.= '<th>'.$zona.'</th>'."\n"; 322: $x.= '</tr>'."\n"; 323: 324: foreach ($this->mistnost[$key]->data as $klic => $prvek) { 325: $x.= '<tr>'."\n"; 326: $x.= '<td>'.$klic.'</td>'."\n"; 327: foreach (array_merge(array($key), $item) as $zona) $x.= '<td>'.$this->mistnost[$zona]->data[$klic]['co2_ppm'].'</td>'."\n"; 328: $x.= '</tr>'."\n"; 329: } 330: $x.= $HTML->tbl_end(); 331: $x.= '<br />'."\n"; 332: } 333: return $x; 334: } 335: 336: function getdatatimes() { 337: return array_keys($this->mistnost[$this->cislo_mistnosti_s_jednotkou]->data); 338: } 339: 340: function getroomdatavalues($cislo_mistnosti, $key = null) { 341: $list = array(); 342: foreach ($this->mistnost[$cislo_mistnosti]->data as $item) { 343: if (isset($item[$key])) $list[] = $item[$key]; 344: else if (is_null($key)) $list[] = $item; 345: else break; 346: } 347: return $list; 348: } 349: 350: function getroomgraphcolor($cislo_mistnosti) { 351: return $this->mistnost[$cislo_mistnosti]->graph_color; 352: } 353: } 354:?> - 8 -

index.php 24.6.2007-16:40:21 1: <?php 2: $init_path = 'd:/server/www/_projekty_/m-con/include/'; 3: $WWW->lan = file_exists($init_path.'_lan'); 4: require_once $WWW->lan? $init_path.'init.php' : './include/init.php'; 5: 6: /* vykresleni grafu */ 7: getrequest(array('img' => 'img')); 8: if ($img == 'graph1') { 9: $graf = $_SESSION['zrgraph'][$img]; 10: $graf->createimg(); 11: exit; 12: } 13: /* /vykresleni grafu */ 14: 15: require_once CLASS_PATH.'html.class.php'; 16: $HTML = new html(); 17: 18: require_once CLASS_PATH.'model.class.php'; 19: 20: $_basic_data = array( 21: 'timestep' => 5, 22: 'zona' => array( 23: 1 => array('objem' => 10), 24: 2 => array('objem' => 15), 25: ), 26: ); 27: 28: define('skodlivina','co2'); 29: 30: $_skodliviny = array( 31: 'co2' => array( 32: 'nazev' => 'oxid uhličitý', 33: 'c_ext' => 350, // ppm 34: 'c_max' => 1000, // ppm 35: 'c_unit' => 'ppm', 36: 'hustota' => 1.8 // kg/m3 37: ), 38: ); 39: 40: getrequest(array('zadani' => 'zadani', 'basic_data' => 'basic_data', 'action' => 'action', 'skodlivina' => 'skodlivina')); 41: 42: // nastaveni implicitnich hodnot 43: if (!$basic_data) $basic_data = $_basic_data; 44: if (!$skodlivina) $skodlivina = $_skodliviny[skodlivina]; 45: 46: $CO2_RO = $skodlivina['hustota'] * 1; 47: $CO2_C_EXT = $skodlivina['c_ext'] * 1; 48: // /nastaveni implicitnich hodnot 49: 50: if (!$zadani!is_array($zadani)) $zadani = isset($_session['m-con']['data'])? $_SESSION['m-con']['data'] : array(); 51: 52: $model = new basemodel(); 53: $model->getcesty(); - 1 -

index.php 24.6.2007-16:40:22 54: $model->genvazby(); 55: 56: $model->getzadanadata(); 57: 58: $content = ''; 59: /*$content.= '<?xml version="1.0" encoding="utf-8"?>'."\n";*/ 60: $content.= '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/tr/xhtml1/dtd/xhtml1-transitional.dtd">'."\n"; 61: $content.= '<html xmlns="http://www.w3.org/1999/xhtml">'."\n"; 62: $content.= '<head>'."\n"; 63: $content.= ' <meta http-equiv="content-type" content="text/html; charset=windows-1250" />'."\n"; 64: $content.= ' <title>koncentrátor - TCHOř</title>'."\n"; 65: $content.= ' <link rel="stylesheet" href="projekt.css" type="text/css" media="all" />'."\n"; 66: $content.= '</head>'."\n"; 67: $content.= '<body>'."\n"; 68: 69: $result_tables = ''; 70: if ($action == 'count') { 71: $model->vypocet(); 72: 73: $result_tables.= $model->genzonetables(); 74: 75: $casy = $model->getdatatimes(); 76: 77: require_once ZRGRAPH_PATH.'zrgraph.class.php'; 78: $graf = new zrgraph(); 79: $graf->colors = array(); 80: 81: $i = 0; 82: foreach($model->mistnost as $key => $item) { 83: $barva = $model->getroomgraphcolor($key); 84: if ($barva == 'none') continue; 85: $graf->data['x'.$i] = array_map('strtotime', $casy); 86: $graf->data['y'.$i] = $model->getroomdatavalues($key, 'co2_ppm'); 87: $graf->colors[] = $barva; 88: $i++; 89: } 90: 91: $graf->setsetting(array( 92: 'type' => 'history', 93: 'data_src' => 'session', 94: 'sizex' => 600, 95: 'sizey' => 400, 96: 'dividex' => 10 * 60, 97: 'dividey' => 50, 98: # 'refvaluey' => 3750, 99: 'dxl' => 20, 100: 'dxp' => 10, 101: 'dyh' => 10, 102: 'dyd' => 100, 103: 'x_start' => min($graf->data['x0']), 104: 'x_end' => max($graf->data['x0']), 105: 'maxtimeoutbetween2values' => 24 * 60 * 60, // 20 minut * - 2 -

index.php 24.6.2007-16:40:22 60 sekund 106: 'type_axis_x' => 'time', 107: 'mindate' => min(array_keys($casy)), 108: 'maxdate' => max(array_keys($casy)), 109: )); 110: $graf->name = 'graph1'; 111: $graf->getfcgiparams(); 112: 113: $_SESSION['zrgraph'][$graf->name] = $graf; 114: $_SESSION['zrgraph']['varname'] = 'm-con'; # pro vykresleni grafu nastavit jmeno promenne pro cteni dat ze session 115: 116: $content.= $graf->genhtmlhandler(); 117: } 118: 119: $content.= '<form action="?" method="post">'."\n"; 120: $content.= $model->genkoncovezonyform(); 121: 122: $content.= $HTML->tbl_start(); 123: $content.= '<tr><td colspan="2"><input name="skodlivina[nazev]" type="hidden" value="'.$skodlivina['nazev'].'" /><input name="skodlivina[c_unit]" type="hidden" value="'.$skodlivina['c_unit'].'" /><b>'.$skodlivina['nazev'].'</b></td></tr>'."\n"; 124: $content.= '<tr><td>venkovní koncentrace</td><td><input size="8" type="text" name="skodlivina[c_ext]" value="'.$skodlivina['c_ext'].'" /> '.$skodlivina['c_unit']."</td></tr>\n"; 125: $content.= '<tr><td>maximální koncentrace</td><td><input size="8" type="text" name="skodlivina[c_max]" value="'.$skodlivina['c_max'].'" /> '.$skodlivina['c_unit']."</td></tr>\n"; 126: $content.= '<tr><td>hustota</td><td><input size="8" type="text" name="skodlivina[hustota]" value="'.$skodlivina['hustota'].'" /> kg/m<sup>3</sup>'."</td></tr>\n"; 127: $content.= $HTML->tbl_end(); 128: $content.= '<br />'."\n"; 129: 130: $content.= $model->genform(); 131: 132: $akce = array( 133: 'add' => 'Uložit časové záznamy', 134: 'count' => 'Vyhodnotit časové záznamy', 135: ); 136: 137: $content.= $HTML->select(' name="action"', $akce, array($action)); 138: 139: $content.= '<input type="submit" value="ok" />'."\n"; 140: $content.= '</form>'."\n"; 141: $content.= '<br />'."\n"; 142: 143: $content.= $result_tables; 144: 145: $content.= '</body>'."\n"; 146: $content.= '</html>'."\n"; 147: 148: echo $content; 149:?> - 3 -