<?php
session_start();

/* =====================================================
   EXPORT CSV (invariato)
===================================================== */

if(isset($_POST['download_csv'])){

$data_start=$_POST["data_start"];
$data_stop=$_POST["data_stop"];

$start=DateTime::createFromFormat('d/m/Y',$data_start);
$stop=DateTime::createFromFormat('d/m/Y',$data_stop);
$stop->modify('+1 day');

$periodo=new DatePeriod($start,new DateInterval('P1D'),$stop);

$NOME_Impianto=$_SESSION['NOME_Impianto'];
$nvasca=$_SESSION['nvasca'];

header('Content-Type: text/csv; charset=utf-8');

$impianto=preg_replace('/[^A-Za-z0-9]/','_', $NOME_Impianto);
$vasca=preg_replace('/[^A-Za-z0-9]/','_', $nvasca);

header("Content-Disposition: attachment; filename=".$impianto."_".$vasca."_export.csv");

$output=fopen("php://output","w");

fputcsv($output,["Data","Ora","Cloro","pH","Temperatura"],";");

foreach($periodo as $data_corrente){

$giorno=$data_corrente->format("d");
$mese=$data_corrente->format("m");
$anno=$data_corrente->format("Y");

$PIP300=str_pad($_SESSION['PIP300'],6,'0',STR_PAD_LEFT);
$Matricola_CALL=str_pad($_SESSION['Matricola_CALL'],2,'0',STR_PAD_LEFT);
$ADDR_V=str_pad($_SESSION['ADDR_V'],2,'0',STR_PAD_LEFT);

$file="C:\\xampp\\htdocs\\archivi\\$anno\\$mese\\{$PIP300}_{$Matricola_CALL}_{$ADDR_V}_{$giorno}{$mese}{$anno}.CSV";

if(!file_exists($file)) continue;

$handle=fopen($file,"r");

while(($row=fgetcsv($handle,1000,";"))!==FALSE){

fputcsv($output,
[
"$giorno/$mese/$anno",
$row[0],
$row[1],
$row[2],
$row[3]
],";");

}

fclose($handle);
}

fclose($output);
exit();
}

/* =====================================================
   PAGINA GRAFICI PRO
===================================================== */

include 'header.php';

$NOME_Impianto=$_SESSION['NOME_Impianto'];
$nvasca=$_SESSION['nvasca'];
$Analisi35=$_SESSION['Analisi35'];

$Full=($Analisi35==0)?1:0;

$data_start=$_POST["data_start"];
$data_stop=$_POST["data_stop"];

$start=DateTime::createFromFormat('d/m/Y',$data_start);
$stop=DateTime::createFromFormat('d/m/Y',$data_stop);
$stop->modify('+1 day');

$giorni = $start->diff($stop)->days;
if($giorni < 1) $giorni = 1;

// step intelligente
$step = max(1, min($giorni, 20));

$periodo=new DatePeriod($start,new DateInterval('P1D'),$stop);

$data=[];
$timeStamps=[];
$tableRows=[];

$buffer=[];
$maxRows=2000;

function aggiungiDato($row,$giorno,$mese,$anno,&$data,&$timeStamps,&$tableRows,$Full,$maxRows){

$timeStamps[]="$giorno/$mese ".$row[0];

$data['Cloro'][]=(float)str_replace(',','.',$row[1]);
$data['pH'][]=(float)str_replace(',','.',$row[2]);
$data['Temp'][]=(float)str_replace(',','.',$row[3]);

if($Full){
$data['ClComb'][]=(float)str_replace(',','.',$row[4]);
$data['Redox'][]=(float)str_replace(',','.',$row[5]);
}

if(count($tableRows) < $maxRows){
$tableRows[]=[
'data'=>"$giorno/$mese/$anno",
'ora'=>$row[0],
'cl'=>$row[1],
'ph'=>$row[2],
'temp'=>$row[3],
'clc'=>$row[4]??"",
'redox'=>$row[5]??""
];
}

}

foreach($periodo as $data_corrente){

$giorno=$data_corrente->format("d");
$mese=$data_corrente->format("m");
$anno=$data_corrente->format("Y");

$PIP300=str_pad($_SESSION['PIP300'],6,'0',STR_PAD_LEFT);
$Matricola_CALL=str_pad($_SESSION['Matricola_CALL'],2,'0',STR_PAD_LEFT);
$ADDR_V=str_pad($_SESSION['ADDR_V'],2,'0',STR_PAD_LEFT);

$file="C:\\xampp\\htdocs\\archivi\\$anno\\$mese\\{$PIP300}_{$Matricola_CALL}_{$ADDR_V}_{$giorno}{$mese}{$anno}.CSV";

if(!file_exists($file)) continue;

$handle=fopen($file,"r");

while(($row=fgetcsv($handle,1000,";"))!==FALSE){

$buffer[]=$row;

if(count($buffer) >= $step){

$min=$buffer[0];
$max=$buffer[0];

foreach($buffer as $r){

if((float)$r[1] < (float)$min[1]) $min=$r;
if((float)$r[1] > (float)$max[1]) $max=$r;

}

// aggiungo min e max → NON perdo picchi
aggiungiDato($min,$giorno,$mese,$anno,$data,$timeStamps,$tableRows,$Full,$maxRows);
aggiungiDato($max,$giorno,$mese,$anno,$data,$timeStamps,$tableRows,$Full,$maxRows);

$buffer=[];

}

}

fclose($handle);

}
?>

<!DOCTYPE html>
<html>
<head>

<script src="https://cdn.jsdelivr.net/npm/chart.js"></script>

<style>
body{background:#C0C0C0;}
.chart-container{
width:80%;
margin:auto;
background:white;
padding:20px;
border:1px solid black;
margin-bottom:20px;
}
table{
width:80%;
margin:auto;
background:white;
border-collapse:collapse;
}
th{background:#e0e0e0;}
td,th{
padding:6px;
text-align:center;
border:1px solid black;
}
</style>

</head>

<body>

<div style="text-align:center">
<h2><?php echo $NOME_Impianto." - ".$nvasca; ?></h2>
</div>

<div class="chart-container"><canvas id="chartCloro"></canvas></div>
<div class="chart-container"><canvas id="chartPH"></canvas></div>
<div class="chart-container"><canvas id="chartTemp"></canvas></div>

<?php if($Full){ ?>
<div class="chart-container"><canvas id="chartClComb"></canvas></div>
<div class="chart-container"><canvas id="chartRedox"></canvas></div>
<?php } ?>

<script>

var labels=<?php echo json_encode($timeStamps); ?>;

function creaGrafico(id,label,data,colore,min,max){
return new Chart(document.getElementById(id),{
type:'line',
data:{labels:labels,datasets:[{label:label,data:data,borderColor:colore,pointRadius:1}]},
options:{
responsive:true,
scales:{
y:{
min:min,
max:max
}
}
}
});
}

var chartCloro=creaGrafico("chartCloro","Cloro libero ppm",<?php echo json_encode($data['Cloro'] ?? []); ?>,'blue',0,5);
var chartPH=creaGrafico("chartPH","pH",<?php echo json_encode($data['pH'] ?? []); ?>,'green',5,9);
var chartTemp=creaGrafico("chartTemp","Temperatura °C",<?php echo json_encode($data['Temp'] ?? []); ?>,'red',20,40);

<?php if($Full){ ?>
var chartClComb=creaGrafico("chartClComb","Cloro combinato",<?php echo json_encode($data['ClComb'] ?? []); ?>,'orange',0,5);
var chartRedox=creaGrafico("chartRedox","Redox",<?php echo json_encode($data['Redox'] ?? []); ?>,'purple',0,1000);
<?php } ?>

</script>

<br>

<table>
<tr>
<th>Data</th>
<th>Ora</th>
<th>Cloro</th>
<th>pH</th>
<th>Temperatura</th>
<?php if($Full){ ?>
<th>ClComb</th>
<th>Redox</th>
<?php } ?>
</tr>

<?php foreach($tableRows as $r){ ?>
<tr>
<td><?php echo $r['data'];?></td>
<td><?php echo $r['ora'];?></td>
<td><?php echo $r['cl'];?></td>
<td><?php echo $r['ph'];?></td>
<td><?php echo $r['temp'];?></td>
<?php if($Full){ ?>
<td><?php echo $r['clc'];?></td>
<td><?php echo $r['redox'];?></td>
<?php } ?>
</tr>
<?php } ?>

</table>

</body>
</html>