-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathzones_data.php
More file actions
91 lines (85 loc) · 4.5 KB
/
zones_data.php
File metadata and controls
91 lines (85 loc) · 4.5 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
<?php
include 'config.php';
include 'functions.php';
require_once 'auth.php';
/** @var array $config */
if (session_status() === PHP_SESSION_NONE) {
session_start();
}
$userId = $_GET['user_id'] ?? '';
$udid = $_GET['udid'] ?? '';
$auth = login($config['username'], $config['password']);
$zones = [];
if (!empty($auth['token']) && $userId && $udid) {
$details = getModuleDetails($userId, $udid, $auth['token']);
$zones = $details['zones']['elements'] ?? [];
}
function getZoneStateBadge($state) {
switch ($state) {
case 'noCommunication':
return '<span class="badge bg-warning text-dark"><i class="fas fa-unlink"></i> Brak komunikacji</span>';
case 'heating':
return '<span class="badge bg-danger"><i class="fas fa-fire"></i> Grzanie</span>';
case 'cooling':
return '<span class="badge bg-info text-dark"><i class="fas fa-snowflake"></i> Chłodzenie</span>';
case 'standby':
return '<span class="badge bg-success"><i class="fas fa-pause-circle"></i> Czuwanie</span>';
default:
return '<span class="badge bg-secondary"><i class="fas fa-question-circle"></i> ' . htmlspecialchars($state) . '</span>';
}
}
?>
<?php if (empty($zones)): ?>
<div class="alert alert-warning"><i class="fas fa-exclamation-triangle"></i> Brak danych o strefach.</div>
<?php else: ?>
<?php foreach ($zones as $zone): ?>
<?php if (!($zone['zone']['visibility'] ?? false)) continue; ?>
<?php
$desc = $zone['description']['name'] ?? 'Nieznana';
$setTemp = isset($zone['zone']['setTemperature']) ? number_format($zone['zone']['setTemperature'] / 10, 1, '.', '') : null;
$currTemp = isset($zone['zone']['currentTemperature']) ? number_format($zone['zone']['currentTemperature'] / 10, 1, '.', '') : null;
$state = $zone['zone']['zoneState'] ?? 'brak';
$zoneId = $zone['mode']['id'] ?? 0;
$parentId = $zone['mode']['parentId'] ?? 0;
?>
<div class="col-md-6 mb-3">
<div class="card shadow-sm card-wrapper">
<div class="card-body">
<h5 class="card-title"><i class="fas fa-fire"></i> <?= htmlspecialchars($desc) ?></h5>
<p class="card-text">
<strong>Aktualna temperatura:</strong>
<span class="current-temp"><?= $currTemp ?> °C</span><br>
<strong>Status strefy:</strong> <span class="zone-state"><?= getZoneStateBadge($state) ?></span>
</p>
<form class="zone-form d-flex align-items-center gap-2 flex-wrap"
data-user="<?= htmlspecialchars($userId) ?>"
data-udid="<?= htmlspecialchars($udid) ?>"
data-zone="<?= $zoneId ?>"
data-parent="<?= $parentId ?>">
<input type="hidden" name="csrf_token" value="<?= $_SESSION['csrf_token'] ?>">
<label class="form-label mb-0 me-2"><strong>Temperatura zadana:</strong></label>
<button type="button" class="btn btn-outline-danger btn-sm" onclick="adjustTemp(this, -0.1)">
<i class="fas fa-minus"></i>
</button>
<input type="number" step="0.1" name="set_temp" value="<?= $setTemp ?>" class="form-control form-control-sm" style="width: 80px;" lang="en" inputmode="decimal">
<button type="button" class="btn btn-outline-success btn-sm" onclick="adjustTemp(this, 0.1)">
<i class="fas fa-plus"></i>
</button>
<button type="submit" class="btn btn-sm btn-primary">
<i class="fas fa-check"></i> Akceptuj
</button>
</form>
<a href="daily.php?user_id=<?= urlencode($userId) ?>&udid=<?= urlencode($udid) ?>&zone_label=<?= urlencode($desc) ?>" class="btn btn-sm btn-secondary mt-2">
<i class="fas fa-chart-line"></i> Ostatnia doba
</a>
</div>
<div class="card-overlay d-none">
<div class="text-center">
<div class="spinner-border text-primary mb-2" role="status"></div><br>
Zmiana temperatury...
</div>
</div>
</div>
</div>
<?php endforeach; ?>
<?php endif; ?>