From: Roman Bazalevsky Date: Tue, 21 Oct 2014 10:55:30 +0000 (+0400) Subject: Переделка веб-интерфейса X-Git-Url: https://git.rvb.name/weathermon.git/commitdiff_plain/9970ba972084ebf8e70b5e33e48d7181ac86ee35?ds=sidebyside;hp=85acbeb364d0dc1a6350e3484c4c4f66a4fd11f0 Переделка веб-интерфейса --- diff --git a/web/archive.php b/web/archive.php index 031bce7..c403863 100644 --- a/web/archive.php +++ b/web/archive.php @@ -31,64 +31,7 @@ include('config_local.php'); include('calendar.php'); - -function get_unit($db,$param) { - - $qug = $db -> prepare( - 'select u.id,u.unit_group from st_parameters st,units u where st.id='.$param.' and st.st_unit=u.id' - ); - $qug -> execute(); - - while ($row = $qug -> fetch(PDO::FETCH_ASSOC)) { - $from_unit = $row['id']; - $unit_group = $row['unit_group']; - } - - if (!empty($_COOKIE['unit_'.$unit_group])) { - $to_unit=intval($_COOKIE['unit_'.$unit_group]); - } else { - $to_unit=$from_unit; - } - - $qu = $db -> prepare( - 'select u.name_short from units u where u.id='.$to_unit - ); - $qu -> execute(); - - while ($row = $qu -> fetch(PDO::FETCH_ASSOC)) { - $param_unit = $row['name_short']; - } - - return Array( - 'from' => $from_unit, - 'to' => $to_unit, - 'name' => $param_unit - ); - -} - -function convert_unit($db,$value,$from,$to) { - - if ($from==$to) { - - $val = $value; - - } else { - - $qv = $db -> prepare( - 'select round(unitconv('.$value.','.$from.','.$to.'),2) res' - ); - $qv -> execute(); - - while ($row = $qv -> fetch(PDO::FETCH_ASSOC)) { - $val = $row['res']; - } - - } - - return $val; - -} +include('units.php'); $year = $_REQUEST['year']; $month = $_REQUEST['month']; diff --git a/web/graphs.php b/web/graphs.php new file mode 100644 index 0000000..dfc7450 --- /dev/null +++ b/web/graphs.php @@ -0,0 +1,53 @@ + + + + + + WeatherMon (Последние 24 часа) + + + + + false)))) { + die($err); + } + +$db -> exec('SET CHARACTER SET utf8'); + +$q = $db -> prepare( + 'select + distinct v.sensor_id,s.s_description,p.id as param_id,p.st_description + from + sensor_values v,st_parameters p,sensors s + where + v.timestamp>adddate(now(), -1) + and v.sensor_id=s.id + and s.st_id=p.st_id + and p.id>=0 + order by s_description,st_description' + ); +$q -> execute(); + +while ($row = $q -> fetch(PDO::FETCH_ASSOC)) { + + echo '

'.$row['s_description'].'/'.$row['st_description'].'

'; +?> +
+ +Архивные данные +
+Настройки + + \ No newline at end of file diff --git a/web/image.php b/web/image.php index 0e513a1..16fbafb 100644 --- a/web/image.php +++ b/web/image.php @@ -82,7 +82,23 @@ if ($type and $param) { 'select unix_timestamp(timestamp) as x,unitconv(value,'.$from_unit.','.$to_unit.') as y from sensor_values where timestamp>adddate(now(), -1) and sensor_id='.$sensor.' and parameter_id='.$param.' order by timestamp' ); - $height = 130; + $bottomheight = 130; + $topheight = 40; + $sizex = 1000; + $sizey = 800; + $scale = True; + + } elseif ($type == 'last24small') { + + $q = $db -> prepare( + 'select unix_timestamp(timestamp) as x,unitconv(value,'.$from_unit.','.$to_unit.') as y from sensor_values where timestamp>adddate(now(), -1) and sensor_id='.$sensor.' and parameter_id='.$param.' order by timestamp' + ); + + $bottomheight = 20; + $topheight = 20; + $sizex = 400; + $sizey = 300; + $scale = False; } elseif ($type == 'range') { @@ -101,11 +117,15 @@ if ($type and $param) { 'select unix_timestamp(timestamp) as x,unitconv(value,'.$from_unit.','.$to_unit.') as y from sensor_values where timestamp>=str_to_date("'.$from.'","%Y%m%d%H%i%s") and timestamp<=str_to_date("'.$to.'","%Y%m%d%H%i%s") and sensor_id='.$sensor.' and parameter_id='.$param.' order by timestamp' ); - $height = 60; + $bottomheight = 60; + $topheight = 40; + $sizex = 1000; + $sizey = 800; + $scale = True; } - $g = new Graph(640,480); + $g = new Graph($sizex,$sizey); if ($cachefilename) { if ($g->cache->IsValid($cachefilename)) { @@ -172,9 +192,13 @@ if ($type and $param) { // We need a datlin scale since we provide both // x and y coordinates for the data points, but x is unix timestamp. $g->SetScale('datlin'); - $g->xaxis->SetLabelAngle(90); + if ($scale) { + $g->xaxis->SetLabelAngle(90); + } else { + $g->xaxis->HideLabels(True); + } $g->xaxis->SetPos("min"); - $g->xaxis->scale->SetTimeAlign( HOURADJ_1 ); +# $g->xaxis->scale->SetTimeAlign( HOURADJ_1 ); // We use a scatterplot to illustrate the original // contro points. @@ -192,10 +216,12 @@ if ($type and $param) { $fplot->SetColor($line_color); $fplot->SetWeight(2); - $g->SetMargin(50,30,40,$height); - $g->title->Set($sensor_name.'/'.$param_name.', '.$param_unit); - $g->title->SetFont(FF_DV_SANSSERIF,FS_BOLD,12); - $g->SetMarginColor('silver'); + $g->SetMargin(50,30,$topheight,$bottomheight); + if ($scale) { + $g->title->Set($sensor_name.'/'.$param_name.', '.$param_unit); + $g->title->SetFont(FF_DV_SANSSERIF,FS_BOLD,12); + } + $g->SetMarginColor('lightgray'); $g->xgrid->Show(); $g->xgrid->SetLineStyle('dotted'); diff --git a/web/index.php b/web/index.php index dfc7450..37251e6 100644 --- a/web/index.php +++ b/web/index.php @@ -2,6 +2,7 @@ + WeatherMon (Последние 24 часа) @@ -9,12 +10,20 @@ a:visited { text-decoration: none; color:darkblue; } a:link { text-decoration: none; color:blue; } a:hover { text-decoration: none; color:navy; } + .header { font-size: 16; float: left; margin: 10px;} + .timestamp { font-size: 16; margin: 10px;} + .value { font-size: 60; margin: 10px; } + .block { float: left; margin: 20px; } + .container { clear: both; } + .footer { clear: both; margin: 20px; font-size: 20; } - + +
false)))) { die($err); @@ -38,16 +47,57 @@ $q -> execute(); while ($row = $q -> fetch(PDO::FETCH_ASSOC)) { - echo '

'.$row['s_description'].'/'.$row['st_description'].'

'; + echo '
'; + echo '
'.$row['s_description'].'/'.$row['st_description'].'
'; + +$ql = $db -> prepare( + ' + SELECT unix_timestamp(timestamp) timestamp,DATE_FORMAT(timestamp,"%H:%i") printable,value + FROM + meteo.sensor_values + WHERE + sensor_id='.$row['sensor_id'].' and parameter_id='.$row['param_id'].' and timestamp>addtime(now(), -3600) + ORDER BY + timestamp desc + ' + ); + +$ql -> execute(); + +$printable_ts = "?"; +$value = "?"; + +if ($rowl = $ql -> fetch(PDO::FETCH_ASSOC)) { + + $timestamp = $rowl['timestamp']; + $printable_ts = $rowl['printable']; + $value = $rowl['value']; + + $units = get_unit($db,$row['param_id']); + $from_unit = $units['from']; + $to_unit = $units['to']; + $param_unit = $units['name']; + + $val = convert_unit($db,$value,$from_unit,$to_unit); + +} + +echo '
'.$printable_ts.'
'; +echo '
'.$val.' '.$param_unit.'
'; ?> -
+
"; + } ?> +
+ \ No newline at end of file diff --git a/web/units.php b/web/units.php new file mode 100644 index 0000000..16ad227 --- /dev/null +++ b/web/units.php @@ -0,0 +1,61 @@ + prepare( + 'select u.id,u.unit_group from st_parameters st,units u where st.id='.$param.' and st.st_unit=u.id' + ); + $qug -> execute(); + + while ($row = $qug -> fetch(PDO::FETCH_ASSOC)) { + $from_unit = $row['id']; + $unit_group = $row['unit_group']; + } + + if (!empty($_COOKIE['unit_'.$unit_group])) { + $to_unit=intval($_COOKIE['unit_'.$unit_group]); + } else { + $to_unit=$from_unit; + } + + $qu = $db -> prepare( + 'select u.name_short from units u where u.id='.$to_unit + ); + $qu -> execute(); + + while ($row = $qu -> fetch(PDO::FETCH_ASSOC)) { + $param_unit = $row['name_short']; + } + + return Array( + 'from' => $from_unit, + 'to' => $to_unit, + 'name' => $param_unit + ); + +} + +function convert_unit($db,$value,$from,$to) { + + if ($from==$to) { + + $val = $value; + + } else { + + $qv = $db -> prepare( + 'select round(unitconv('.$value.','.$from.','.$to.'),2) res' + ); + $qv -> execute(); + + while ($row = $qv -> fetch(PDO::FETCH_ASSOC)) { + $val = $row['res']; + } + + } + + return $val; + +} + +?> \ No newline at end of file