X-Git-Url: https://git.rvb.name/weathermon.git/blobdiff_plain/3a48d89e76fd2ab87dabf08632474c529cf77ad4..769d0bd71b19b467c195838379a379e0e2d69c2b:/web/archive.php diff --git a/web/archive.php b/web/archive.php index 76708f7..1b21599 100644 --- a/web/archive.php +++ b/web/archive.php @@ -2,15 +2,51 @@ - + WeatherMon (архив) + prepare( 'select - date_format(timestamp,\'%Y\') as year + date_format(day,\'%Y\') as year from - sensor_values + calendar group by year order by year'); $q -> execute(); @@ -37,7 +73,7 @@ if (! $year) { fetch(PDO::FETCH_ASSOC)) { ?> - Данные за год
+ Данные за год prepare( 'select - date_format(timestamp,\'%m\') as month, - date_format(timestamp,\'%d\') as day + date_format(day,\'%m\') as month, + date_format(day,\'%d\') as day from - sensor_values + calendar where - timestamp>=str_to_date(\''.$year.'-01-01\',\'%Y-%m-%d\') and - timestamp=str_to_date(\''.$year.'-01-01\',\'%Y-%m-%d\') and + day'.$month_name.''; + echo '

'.$month_name.'

'; } else { echo '

'.$month_name.'

'; } @@ -93,21 +129,33 @@ if (! $year) { $next_year = $year+1; + if (!$local_net) { + + $filter = ' and s.is_public=1'; + + } else { + + $filter = ''; + + } + + + $q = $db -> prepare ( 'select s.id sensor,p.id param,s.s_description sensor_name,p.st_description param_name, - count(distinct date_format(v.timestamp,\'%d\')) cnt, - round(min(v.value),1) min_value, - round(max(v.value),1) max_value, + count(distinct day) cnt, + round(min(v.min),1) min_value, + round(max(v.max),1) max_value, u.name_short unit from - sensor_values v,sensors s,st_parameters p,units u + sensors_ranges v,sensors s,st_parameters p,units u where - v.sensor_id=s.id and - v.parameter_id=p.id and + v.sensor=s.id and + v.parameter=p.id and p.st_unit=u.id and - v.timestamp>=str_to_date(\''.$year.'-01-01\',\'%Y-%m-%d\') and - v.timestamp=str_to_date(\''.$year.'-01-01\',\'%Y-%m-%d\') and + v.day fetchAll(PDO::FETCH_ASSOC); foreach ($sensors as $sensor) { - + + $units = get_unit($db,$sensor['param']); + $from_unit = $units['from']; + $to_unit = $units['to']; + $param_unit = $units['name']; + + $min_val = convert_unit($db,$sensor['min_value'],$from_unit,$to_unit); + $max_val = convert_unit($db,$sensor['max_value'],$from_unit,$to_unit); + echo '

'.$sensor['param_name'].'('.$sensor['sensor_name'].')

'; echo ''; echo ''; echo '
'; - echo 'Минимальное значение за год '.$sensor['min_value'].' '.$sensor['unit'].'
'; - echo 'Максимальное значение за год '.$sensor['max_value'].' '.$sensor['unit'].'
'; + echo 'Минимальное значение за год '.$min_val.' '.$param_unit.'
'; + echo 'Максимальное значение за год '.$max_val.' '.$param_unit.'
'; echo '
'; @@ -152,14 +208,26 @@ if (! $year) { $month = sprintf('%02d',$month); $year = sprintf('%04d',$year); + if (!$local_net) { + + $filter = ' and s.is_public=1'; + + } else { + + $filter = ''; + + } + + $q = $db -> prepare( 'select - date_format(timestamp,\'%d\') as day + date_format(day,\'%d\') as day from - sensor_values + sensors_ranges r,sensors s where - timestamp>=str_to_date(\''.$year.'-'.$month.'-01\',\'%Y-%m-%d\') and - timestamp=str_to_date(\''.$year.'-'.$month.'-01\',\'%Y-%m-%d\') and + day prepare ( 'select s.id sensor,p.id param,s.s_description sensor_name,p.st_description param_name, - count(distinct date_format(v.timestamp,\'%d\')) cnt, - round(min(v.value),1) min_value, - round(max(v.value),1) max_value, + count(distinct day) cnt, + round(min(v.min),1) min_value, + round(max(v.max),1) max_value, u.name_short unit from - sensor_values v,sensors s,st_parameters p,units u + sensors_ranges v,sensors s,st_parameters p,units u where - v.sensor_id=s.id and - v.parameter_id=p.id and + v.sensor=s.id and + v.parameter=p.id and p.st_unit=u.id and - v.timestamp>=str_to_date(\''.$year.'-'.$month.'-01\',\'%Y-%m-%d\') and - v.timestamp=str_to_date(\''.$year.'-'.$month.'-01\',\'%Y-%m-%d\') and + v.day fetchAll(PDO::FETCH_ASSOC); foreach ($sensors as $sensor) { + + $units = get_unit($db,$sensor['param']); + $from_unit = $units['from']; + $to_unit = $units['to']; + $param_unit = $units['name']; + + $min_val = convert_unit($db,$sensor['min_value'],$from_unit,$to_unit); + $max_val = convert_unit($db,$sensor['max_value'],$from_unit,$to_unit); echo '

'.$sensor['param_name'].'('.$sensor['sensor_name'].')

'; echo ''; echo ''; echo '
'; - echo 'Минимальное значение за месяц '.$sensor['min_value'].' '.$sensor['unit'].'
'; - echo 'Максимальное значение за месяц '.$sensor['max_value'].' '.$sensor['unit'].'
'; + echo 'Минимальное значение за месяц '.$min_val.' '.$param_unit.'
'; + echo 'Максимальное значение за месяц '.$max_val.' '.$param_unit.'
'; echo '
'; @@ -225,16 +312,26 @@ if (! $year) { $year = sprintf('%04d',$year); $day = sprintf('%02d',$day); + if (!$local_net) { + + $filter = ' and s.is_public=1'; + + } else { + + $filter = ''; + + } + + $q = $db -> prepare( 'select - distinct v.sensor_id,s.s_description,p.id as param_id,p.st_description + distinct v.sensor as sensor_id,s.s_description,p.id as param_id,p.st_description from - sensor_values v,st_parameters p,sensors s + sensors_ranges v,st_parameters p,sensors s where - v.timestamp>=str_to_date(\''.$year.'-'.$month.'-'.$day.'\',\'%Y-%m-%d\') and - v.timestamp execute();