Debug serveur stats\nDebug
This commit is contained in:
@ -5,42 +5,52 @@
|
||||
/*need device ieeeAddress, property, startDate and endDate */
|
||||
/* */
|
||||
/****************************************************************/
|
||||
|
||||
require_once "config.php";
|
||||
require_once "utils.php";
|
||||
require_once $mohaPath . "/utils.php";
|
||||
require_once "header.php";
|
||||
require_once $mohaPath . "/constants.php";
|
||||
require_once "class/db.class.php";
|
||||
//require_once $configPath . "properties2log.php";
|
||||
|
||||
$logLevel = INFO | NOTICE | WARNING | ERROR | ALERT;
|
||||
|
||||
function displayStats($ieeeAddress, $fn, $property, $startDate, $endDate)
|
||||
{
|
||||
global $indexFriendlyNames, $mohaDB;
|
||||
global $mohaDB;
|
||||
//logger(INFO, "Function displayStats", __FILE__ . ":" . __LINE__);
|
||||
|
||||
// Validation of the dates
|
||||
if (validateDate($argList["startDate"]) && validateDate($argList["finalDate"]))
|
||||
if ( ($indexFriendlyNames = htmlGetFriendlyNames($ieeeAddress)) !== false)
|
||||
{
|
||||
if (!array_key_exists($argList["fn"], $indexFriendlyNames))
|
||||
//print_r($indexFriendlyNames);
|
||||
// Validation of the dates
|
||||
if (validateDate($startDate) && validateDate($endDate))
|
||||
{
|
||||
htmlSend($socket, $argList["fn"] . _(" not found: Verify the syntax"));
|
||||
}elseif(!array_key_exists($argList["property"], $indexFriendlyNames[$argList["fn"]]->properties))
|
||||
{
|
||||
htmlSend($socket, $argList["property"] . _(" not found : Verify the syntax"));
|
||||
if (!in_array($fn, $indexFriendlyNames))
|
||||
{
|
||||
print $fn . _(" not found: Verify the syntax");
|
||||
}else
|
||||
{
|
||||
$query = "SELECT date, value FROM logs WHERE device='" . $ieeeAddress . "' AND property='" . $property . "' AND '" . $startDate . " 00:00:00'<= date AND '" . $endDate . " 23:59:59' >= date ORDER BY date";
|
||||
logger(DEBUG, _("query : ") . $query, __FILE__ . ":" . __LINE__);
|
||||
if(!($mohaDB->result = $mohaDB->query($query)))
|
||||
{
|
||||
print _("mysql query error: ") . $mohaDB->error . __FILE__ . ":" . __LINE__;
|
||||
}
|
||||
$datas = $mohaDB->result->fetch_all(MYSQLI_ASSOC);
|
||||
//print_r($mohaDB);
|
||||
if ($mohaDB->affected_rows != 0)
|
||||
{
|
||||
print diagramDisplay($datas);
|
||||
}else
|
||||
{
|
||||
print _("Sorry, no results");
|
||||
}
|
||||
|
||||
}
|
||||
}else
|
||||
{
|
||||
$query = "SELECT date, value FROM logs WHERE device='" . $indexFriendlyNames[$argList["fn"]]->ieeeAddress . "' AND property='" . $argList["property"] . "' AND '" . $argList["startDate"] . "'>= date AND '" . $argList["finalDate"] . "' <= date ORDER BY date";
|
||||
//logger(DEBUG, _("query : ") . $query, __FILE__ . ":" . __LINE__);
|
||||
if(!($mohaDB->result = $mohaDB->query($query)))
|
||||
{
|
||||
//logger(ERROR, _("mysql query error: ") . $mohaDB->error, __FILE__ . ":" . __LINE__);
|
||||
}
|
||||
$datas = $mohaDB->result->fetch_all(MYSQLI_ASSOC);
|
||||
htmlSend($socket, diagramDisplay($datas));
|
||||
print _("Dates need to be of the form: YYYY-MM-DD 00:00:00");
|
||||
}
|
||||
}else
|
||||
{
|
||||
htmlSend($socket, _("Dates are not of the form: YYYY-MM-DD 00:00:00"));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/************************************************************/
|
||||
@ -56,18 +66,17 @@ function diagramDisplay($datas)
|
||||
|
||||
$ndata = count($datas);
|
||||
$i = $ndata;
|
||||
$tmp = min($datas);
|
||||
$min = $tmp["value"];
|
||||
$tmp = max($datas);
|
||||
$max = $tmp["value"];
|
||||
$min = min(array_column($datas, "value"));
|
||||
$max = max(array_column($datas, "value"));
|
||||
//print "min =>" . $min . "max =>" . $max . EOLH;
|
||||
//Type mime de l'image
|
||||
//Chemin vers le police à utiliser
|
||||
$font_file = '/usr/share/fonts/TTF/dejavu/DejaVuSans.ttf';
|
||||
//Adapter la largeur de l'image avec le nombre de donnée
|
||||
$largeur = $i * 50 + 90;
|
||||
$largeur = ($ndata + 1) * 30 + 90;
|
||||
$hauteur = 400;
|
||||
//Hauteur de l'abscisse par rapport au bas de l'image
|
||||
$absis = 80;
|
||||
$absis = 120;
|
||||
//Création de l'image
|
||||
$courbe = imagecreatetruecolor($largeur, $hauteur);
|
||||
//Allouer les couleurs à utiliser
|
||||
@ -82,7 +91,7 @@ function diagramDisplay($datas)
|
||||
imageline($courbe, 50, $hauteur - $absis, $largeur - 10, $hauteur - $absis, $noir);
|
||||
//Tracer l'axe des ordonnées
|
||||
imageline($courbe, 50, $hauteur - $absis, 50, 20, $noir);
|
||||
//Decaler 10px vers le haut le si le minimum est différent de 0
|
||||
//Decaler 10px vers le haut si le minimum est différent de 0
|
||||
$a = 0;
|
||||
if($min != 0)
|
||||
{
|
||||
@ -92,17 +101,17 @@ function diagramDisplay($datas)
|
||||
//Nombres des grides verticales
|
||||
$nbOrdonne = 10;
|
||||
//Calcul de l'echelle des abscisses
|
||||
$echelleX = ($largeur - 100) / $i;
|
||||
$echelleX = ($largeur - 130) / $ndata;
|
||||
//Calcul de l'echelle des ordonnees
|
||||
$echelleY = ($hauteur - $absis - 20) / $nbOrdonne;
|
||||
$echelleY = ($hauteur - $absis) / ($nbOrdonne + 1);
|
||||
$i = $min;
|
||||
//Calcul des ordonnees des grides
|
||||
$py = ($max - $min) / $nbOrdonne;
|
||||
$pasY = $absis;
|
||||
while( $pasY < ($hauteur - 19))
|
||||
while($i <= ($max - $min))
|
||||
{
|
||||
//Affiche la valeur de l'ordonnee
|
||||
imagestring($courbe, 2, 10 , $hauteur - $pasY - 6, round($i), $noir);
|
||||
imagestring($courbe, 2, 10 , $hauteur - $pasY - 6, round($i, 0, PHP_ROUND_HALF_DOWN), $noir);
|
||||
//Trace la gride
|
||||
imageline($courbe, 50, $hauteur - $pasY, $largeur - 20, $hauteur - $pasY, $ligne);
|
||||
//Decaller vers le haut pour la prochaine gride
|
||||
@ -112,22 +121,22 @@ function diagramDisplay($datas)
|
||||
}
|
||||
|
||||
$j = -1;
|
||||
$pasX = 90;
|
||||
//Parcourir le tableau pour le traçage de la diagramme
|
||||
$pasX = 50;
|
||||
//Parcourir le tableau pour le traçage du diagramme.
|
||||
foreach ($datas as $row)
|
||||
{
|
||||
$date = $row["date"];
|
||||
$quantite = $row["value"];
|
||||
//calculer la hateur du point par rapport à sa valeur
|
||||
//calculer la hauteur du point par rapport à sa valeur
|
||||
$y = ($hauteur) - (($quantite - $min) * ($echelleY / $py)) - $absis;
|
||||
//dessiner le point
|
||||
imagefilledellipse($courbe, $pasX, $y, 6, 6, $rouge);
|
||||
//Afficher le mois en français avec une inclinaison de 315°
|
||||
printf("pasx = %d hauteur = %d absis = %d noir= %d", $pasX, $hauteur, $absis, $noir);
|
||||
//printf("pasx = %d hauteur = %d absis = %d noir= %d", $pasX, $hauteur, $absis, $noir);
|
||||
imagefttext($courbe, 10, 315, $pasX, $hauteur - $absis + 20, $noir, $font_file, $date);
|
||||
//Tacer une ligne veticale de l'axe de l'abscisse vers le point
|
||||
//Tracer une ligne verticale de l'axe de l'abscisse vers le point
|
||||
imageline($courbe, $pasX, $hauteur - $absis + $a, $pasX, $y, $noir);
|
||||
if($j!==-1)
|
||||
if($j !== -1)
|
||||
{
|
||||
//liée le point actuel avec la précédente
|
||||
imageline($courbe, ($pasX - $echelleX), $yprev, $pasX, $y, $noir);
|
||||
@ -137,21 +146,19 @@ function diagramDisplay($datas)
|
||||
$j = $quantite;
|
||||
//enregister la hauteur du point actuel pour la liaison avec la suivante
|
||||
$yprev = $y;
|
||||
//Decaller l'abscisse suivante par rapport à son echelle
|
||||
$pasX +=$echelleX;
|
||||
//Decaler l'abscisse suivante par rapport à son echelle
|
||||
$pasX += $echelleX;
|
||||
}
|
||||
//Envoyer le flux de l'image
|
||||
|
||||
//header('Content-Type: image/png');
|
||||
$file = tempnam("php://temp", "moha-");
|
||||
$file = tempnam("./", "moha-");
|
||||
imagepng($courbe,$file);
|
||||
return '<img src="/' . basename($file) . '">';
|
||||
//Desallouer la mémoire utiliser par l'image
|
||||
return '<img src="/moha/' . basename($file) . '">';
|
||||
//Désallouer la mémoire utiliser par l'image
|
||||
imagedestroy($courbe);
|
||||
}
|
||||
|
||||
$tmp = explode("|", $_GET["device"]);
|
||||
|
||||
displayStats($tmp[0], $tmp[1], $tmp[2]);
|
||||
displayStats($tmp[0], $tmp[1], $tmp[2], $_GET["startDate"], $_GET["endDate"]);
|
||||
|
||||
?>
|
||||
|
Reference in New Issue
Block a user