2
date_default_timezone_set('UTC');
4
$now = $dt->format('Y-m-d H:i:s');
9
<meta charset="utf-8" />
10
<title>Helioviewer.org - Data Monitor</title>
11
<link rel="stylesheet" href="status.css" />
12
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js" type="text/javascript"></script>
13
<script src="status.js" type="text/javascript"></script>
18
<img src="../resources/images/logos/hvlogo1s_transparent_logo.png" alt="Helioviewer logo" />
19
<div id='headerText'>The Helioviewer Project - Data Monitor</div>
20
<div id='currentTime'>Current time: <?php echo $now;?></div>
24
<div id='legend-container'>
26
<img class='status-icon' src='icons/status_icon_green.png' alt='green status icon' />
27
<span class='status-text'>Up to date</span>
28
<img class='status-icon' src='icons/status_icon_yellow.png' alt='yellow status icon' />
29
<span class='status-text'>Lagging</span>
30
<img class='status-icon' src='icons/status_icon_orange.png' alt='orange status icon' />
31
<span class='status-text'>Lagging a lot</span>
32
<img class='status-icon' src='icons/status_icon_red.png' alt='red status icon' />
33
<span class='status-text'>Uh oh!</span>
34
<img class='status-icon' src='icons/status_icon_gray.png' alt='gray status icon' />
40
<tr id='status-headers'>
41
<th width='100'>Datasource</th>
42
<th width='100'>Latest Image</th>
43
<th width='50' align='center'>Status <span id='info'>(?)</span></th>
46
include_once "../api/src/Database/ImgIndex.php";
47
include_once "../api/src/Config.php";
52
* @param {int} $elapsed
53
* @param {string} $inst
55
function computeStatusLevel($elapsed, $inst) {
59
$t3 = 43200; // 12 hrs
60
$t4 = 604800; // 1 week
66
} else if ($inst == "LASCO") {
72
if ($elapsed <= $t1) {
74
} else if ($elapsed <= $t2) {
76
} else if ($elapsed <= $t3) {
78
} else if ($elapsed <= $t4){
90
function getStatusIcon($level) {
99
$icon = "<img class='status-icon' src='icons/status_icon_%s.png' alt='%s status icon' />";
101
return sprintf($icon, $levels[$level], $levels[$level]);
104
$config = new Config("../settings/Config.ini");
109
$imgIndex = new Database_ImgIndex();
111
// Get a list of the datasources grouped by instrument
112
$instruments = $imgIndex->getDataSourcesByInstrument();
114
$tableRow = "<tr class='%s'><td>%s</td><td>%s</td><td align='center'>%s</td></tr>";
116
// Create table of datasource statuses
117
foreach($instruments as $name => $datasources) {
120
"datetime" => new DateTime(),
127
// Create table row for a single datasource
128
foreach($datasources as $ds) {
130
// Determine status icon to use
131
$date = $imgIndex->getNewestImage($ds['id']);
132
$elapsed = $now - strtotime($date);
133
$level = computeStatusLevel($elapsed, $name);
135
// Create status icon
136
$icon = getStatusIcon($level);
138
// Convert to human-readable date
139
$timestamp = strtotime($date);
141
$datetime = new DateTime();
142
$datetime->setTimestamp($timestamp);
144
// CSS classes for row
145
$classes = "datasource $name";
147
// create HTML for subtable row
148
$subTableHTML .= sprintf($tableRow, $classes, " " . $ds['name'], $datetime->format('M j H:i:s'), $icon);
150
// If the elapsed time is greater than previous max store it
151
if ($datetime < $oldest['datetime']) {
154
'datetime' => $datetime,
160
// Ignore datasources with no data
161
if ($oldest['datetime']) {
162
$datetime = $oldest['datetime'];
163
printf($tableRow, "instrument", $name, $datetime->format('M j H:i:s'), $oldest['icon']);
164
print($subTableHTML);