~jstys-z/helioviewer.org/client5

« back to all changes in this revision

Viewing changes to status/index.php

  • Committer: Keith Hughitt
  • Date: 2011-06-24 17:59:08 UTC
  • mto: This revision was merged to the branch mainline in revision 589.
  • Revision ID: keith.hughitt@nasa.gov-20110624175908-0bpqp3bf533zc3my
Added initial version of Wordpress widget.

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
<?php
 
2
    date_default_timezone_set('UTC');
 
3
    $dt = new DateTime();
 
4
    $now = $dt->format('Y-m-d H:i:s');
 
5
?>
 
6
<!DOCTYPE html>
 
7
<html lang="en">
 
8
<head>
 
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>
 
14
</head>
 
15
<body>
 
16
    <div id='main'>
 
17
        <div id="header">
 
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>
 
21
    </div>
 
22
    
 
23
    <!-- Legend -->
 
24
    <div id='legend-container'>
 
25
        <div id='legend'>
 
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' />
 
35
            <span>Inactive</span>
 
36
        </div>
 
37
    </div>
 
38
 
 
39
    <table id='statuses'>
 
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>
 
44
    </tr>    
 
45
    <?php
 
46
        include_once "../api/src/Database/ImgIndex.php";
 
47
        include_once "../api/src/Config.php";
 
48
 
 
49
        /**
 
50
         * computeStatusLevel
 
51
         * 
 
52
         * @param {int}    $elapsed
 
53
         * @param {string} $inst
 
54
         */
 
55
        function computeStatusLevel($elapsed, $inst) {
 
56
            // Default values
 
57
            $t1 = 7200;  // 2 hrs
 
58
            $t2 = 14400; // 4 hrs
 
59
            $t3 = 43200; // 12 hrs
 
60
            $t4 = 604800; // 1 week
 
61
            
 
62
            if ($inst == "EIT") {
 
63
                $t1 = 12 * 3600;
 
64
                $t2 = 24 * 3600;
 
65
                $t3 = 48 * 3600;
 
66
            } else if ($inst == "LASCO") {
 
67
                $t1 = 6 * 3600;
 
68
                $t2 = 12 * 3600;
 
69
                $t3 = 24 * 3600;
 
70
            }
 
71
 
 
72
            if ($elapsed <= $t1) {
 
73
                return 1;
 
74
            } else if ($elapsed <= $t2) {
 
75
                return 2;
 
76
            } else if ($elapsed <= $t3) {
 
77
                return 3;
 
78
            } else if ($elapsed <= $t4){
 
79
                return 4;
 
80
            } else {
 
81
                return 5;
 
82
            }
 
83
        }
 
84
        
 
85
        /**
 
86
         * getStatusIcon
 
87
         * 
 
88
         * @var unknown_type
 
89
         */
 
90
        function getStatusIcon($level) {
 
91
            $levels = array(
 
92
                1 => "green",
 
93
                2 => "yellow",
 
94
                3 => "orange",
 
95
                4 => "red",
 
96
                5 => "gray"
 
97
            );
 
98
            
 
99
            $icon = "<img class='status-icon' src='icons/status_icon_%s.png' alt='%s status icon' />";
 
100
            
 
101
            return sprintf($icon, $levels[$level], $levels[$level]);
 
102
        }
 
103
        
 
104
        $config = new Config("../settings/Config.ini");
 
105
        
 
106
        // Current time
 
107
        $now = time();
 
108
        
 
109
        $imgIndex = new Database_ImgIndex();
 
110
        
 
111
        // Get a list of the datasources grouped by instrument
 
112
        $instruments = $imgIndex->getDataSourcesByInstrument();
 
113
 
 
114
        $tableRow = "<tr class='%s'><td>%s</td><td>%s</td><td align='center'>%s</td></tr>";
 
115
        
 
116
        // Create table of datasource statuses
 
117
        foreach($instruments as $name => $datasources) {
 
118
            $oldest = array(
 
119
                "level"    => 0,
 
120
                "datetime" => new DateTime(),
 
121
                "icon"     => null
 
122
            );
 
123
            $maxElapsed = 0;
 
124
            $oldestDate = null;
 
125
            $subTableHTML = "";
 
126
            
 
127
            // Create table row for a single datasource
 
128
            foreach($datasources as $ds) {
 
129
                
 
130
                // Determine status icon to use
 
131
                $date = $imgIndex->getNewestImage($ds['id']);
 
132
                $elapsed = $now - strtotime($date);
 
133
                $level = computeStatusLevel($elapsed, $name);
 
134
                
 
135
                // Create status icon
 
136
                $icon = getStatusIcon($level);
 
137
 
 
138
                // Convert to human-readable date
 
139
                $timestamp = strtotime($date);
 
140
 
 
141
                $datetime = new DateTime();
 
142
                $datetime->setTimestamp($timestamp);
 
143
                
 
144
                // CSS classes for row
 
145
                $classes = "datasource $name";
 
146
 
 
147
                // create HTML for subtable row
 
148
                $subTableHTML .= sprintf($tableRow, $classes, "&nbsp;&nbsp;&nbsp;&nbsp;" . $ds['name'], $datetime->format('M j H:i:s'), $icon);
 
149
                
 
150
                // If the elapsed time is greater than previous max store it
 
151
                if ($datetime < $oldest['datetime']) {
 
152
                    $oldest = array(
 
153
                        'level'   => $level,
 
154
                        'datetime' => $datetime,
 
155
                        'icon'     => $icon
 
156
                    );
 
157
                }
 
158
            }
 
159
 
 
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);
 
165
            }
 
166
        }
 
167
    ?>
 
168
    </table>
 
169
    </div>
 
170
</body>
 
171
</html>