| Server IP : 93.86.61.54 / Your IP : 216.73.216.60 Web Server : Apache/2.4.62 (Ubuntu) System : Linux rasin.ddns.net 6.8.0-124-generic #124~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC Tue May 26 21:05:19 UTC x86_64 User : www-data ( 33) PHP Version : 8.4.22 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : OFF | Sudo : ON | Pkexec : ON Directory : /var/www/html/projects/meteo-ca/ |
Upload File : |
<?php
session_start();
require 'db.php';
require 'activity_log.php';
if (!isset($_SESSION["username"])) {
header("Location: login.php");
exit();
}
$username = $_SESSION["username"];
// Query 01: Temperature values from sensors
$temperature_data = [];
$result = $conn->query("
SELECT sensor_id, created_at AS sensor_date, temperature, humidity
FROM temperature_logs
WHERE sensor_id = 'esp32-bme280-01'
ORDER BY sensor_date DESC LIMIT 1000
");
$i=0;
$range_date_2 = '';
while ($row = $result->fetch_assoc()) {
$temperature_data['sdates'][] = $row['sensor_date'];
if(!($i>0)){
$range_date_2 = $row['sensor_date'];
$i = $i + 1;
}
$temperature_data['temp'][] = $row['temperature'];
$temperature_data['humidity'][] = $row['humidity'];
}
$time_range_date_2 = strtotime($range_date_2);
$time_range_date_1 = $time_range_date_2 - (15 * 60);
$range_date_1 = date("Y-m-d H:i:s", $time_range_date_1);
// Query 1: User registrations per day
$user_data = [];
$result = $conn->query("
SELECT DATE(created_at) AS reg_date, COUNT(*) AS total
FROM users
GROUP BY DATE(created_at)
ORDER BY reg_date ASC
");
while ($row = $result->fetch_assoc()) {
$user_data['dates'][] = $row['reg_date'];
$user_data['totals'][] = $row['total'];
}
// Query 2: Activity log by action type
$activity_data = [];
$result2 = $conn->query("
SELECT action, COUNT(*) AS total
FROM activity_log
GROUP BY action
ORDER BY total DESC
");
while ($row = $result2->fetch_assoc()) {
$activity_data['actions'][] = $row['action'];
$activity_data['totals'][] = $row['total'];
}
?>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Kontrolni panel</title>
<!-- <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/css/bootstrap.min.css" rel="stylesheet"> -->
<link rel="stylesheet" type="text/css" href="css/bootstrap533.css">
<script src="https://cdn.plot.ly/plotly-latest.min.js"></script>
<!-- <script type="text/javascript" src="css/plotly.js"></script> -->
</head>
<body class="bg-light">
<div class="container mt-5">
<div class="card shadow p-4 mb-4">
<h3 class="text-center mb-4">📊 Kontrolni panel</h3>
<div class="d-flex justify-content-between mb-3">
<p><strong>Username:</strong> <?php echo htmlspecialchars($username); ?></p>
<a href="profile.php" class="btn btn-secondary">Profil korisnika</a>
<a href="logout.php" class="btn btn-danger">Odjava</a>
</div>
</div>
<div class="card shadow p-4 mb-4">
<h5 class="mb-3">Temperatura</h5>
<div id="temperatureGraph" style="height:400px;"></div>
</div>
<div class="card shadow p-4">
<h5 class="mb-3">Logovane aktivnosti po tipu akcije</h5>
<div id="activityGraph" style="height:400px;"></div>
</div>
</div>
<script>
// Temperature sensor data
const sensorDates = <?php echo json_encode($temperature_data['sdates']); ?>;
const sensorTemp = <?php echo json_encode($temperature_data['temp']); ?>;
const sensorHumidity = <?php echo json_encode($temperature_data['humidity']); ?>;
const rangeDate1 = <?php echo json_encode($range_date_1); ?>;
const rangeDate2 = <?php echo json_encode($range_date_2); ?>;
const tempTrace = {
x: sensorDates,
y: sensorTemp,
mode: 'lines+markers',
name: 'Temperatura (℃)',
line: { color: 'rgb(0, 123, 255)', width: 3 },
marker: { size: 6 }
};
const humidityTrace = {
x: sensorDates,
y: sensorHumidity,
mode: 'lines+markers',
name: 'Relativna vlažnost (%)',
line: { color: '#72b043', width: 3 },
marker: { size: 6 }
};
const tempLayout = {
title: 'Senzorske vrednosti',
xaxis: { range: [rangeDate1,rangeDate2], title: 'Vreme' },
yaxis: { title: 'Senzorske vrednosti', rangemode: 'tozero' },
plot_bgcolor: '#f8f9fa',
paper_bgcolor: '#f8f9fa'
};
Plotly.newPlot('temperatureGraph', [tempTrace,humidityTrace], tempLayout);
// Activity log data
const activityActions = <?php echo json_encode($activity_data['actions']); ?>;
const activityTotals = <?php echo json_encode($activity_data['totals']); ?>;
const activityTrace = {
x: activityActions,
y: activityTotals,
type: 'lines+markers',
name: 'Broj aktivnosti',
marker: { color: 'rgba(40,167,69,0.7)' }
};
const activityLayout = {
title: 'Prikaz logovanih aktivnosti',
xaxis: { title: 'Tip akcije' },
yaxis: { title: 'Broj pojava', rangemode: 'tozero' },
plot_bgcolor: '#f8f9fa',
paper_bgcolor: '#f8f9fa'
};
Plotly.newPlot('activityGraph', [activityTrace], activityLayout);
</script>
</body>
</html>