1 | <html>
|
---|
2 | <head>
|
---|
3 | <meta name="Author" content="Daniela Dorner" />
|
---|
4 | <meta http-equiv="content-type" content="text/html; charset=utf-8" />
|
---|
5 | <title>FACT Project</title>
|
---|
6 | <link rel="StyleSheet" type="text/css" href="../style.css" />
|
---|
7 | </head>
|
---|
8 | <?php
|
---|
9 |
|
---|
10 | //echo (file_get_contents("../shifteval/header.html"));
|
---|
11 |
|
---|
12 | if (!empty($_GET["startdate"]))
|
---|
13 | $startdate=$_GET["startdate"];
|
---|
14 | else
|
---|
15 | $startdate="20111001";
|
---|
16 | if (!empty($_GET["stopdate"]))
|
---|
17 | $stopdate=$_GET["stopdate"];
|
---|
18 | else
|
---|
19 | $stopdate=date("Ymd");
|
---|
20 | $starttimestamp = new DateTime($startdate);
|
---|
21 | date_add($starttimestamp, date_interval_create_from_date_string("12 hours"));
|
---|
22 | $stoptimestamp = new DateTime($stopdate);
|
---|
23 | date_add($stoptimestamp, date_interval_create_from_date_string("12 hours"));
|
---|
24 |
|
---|
25 | echo "<body>\n";
|
---|
26 | echo "<form action='shifteval.php' METHOD='GET'>\n";
|
---|
27 | echo "<b>Shift Evaluation</b> from ";
|
---|
28 | printf("<input name='startdate' type='text' size='10' maxlength='10' value='%s'> to\n", $startdate);
|
---|
29 | printf("<input name='stopdate' type='text' size='10' maxlength='10' value='%s'>\n", $stopdate);
|
---|
30 | echo "<input type='submit' value='Show'> \n";
|
---|
31 |
|
---|
32 | include ("db.php");
|
---|
33 | $db_id = mysql_connect($host, $user, $pw);
|
---|
34 |
|
---|
35 | //some parameters for the evaluation
|
---|
36 | //arrays on institute base
|
---|
37 | $instituteshifthours= array ("1" => 0, "2" => 0, "3" => 0, "4" => 0, "5" => 0 );
|
---|
38 | $institutedebughours= array ("1" => 0, "2" => 0, "3" => 0, "4" => 0, "5" => 0 );
|
---|
39 | $instituteexperthours= array ("1" => 0, "2" => 0, "3" => 0, "4" => 0, "5" => 0 );
|
---|
40 | $instituteshexperthours= array ("1" => 0, "2" => 0, "3" => 0, "4" => 0, "5" => 0 );
|
---|
41 | $instituteflareexperthours= array ("1" => 0, "2" => 0, "3" => 0, "4" => 0, "5" => 0 );
|
---|
42 | $institutetotalhours= array ("1" => 0, "2" => 0, "3" => 0, "4" => 0, "5" => 0 );
|
---|
43 | $institutes2= array ("1" => 0, "2" => 0, "3" => 0, "4" => 0, "5" => 0 );
|
---|
44 | $institutenames=array();
|
---|
45 | //arrays on userbase
|
---|
46 | $users=array();
|
---|
47 | $shifthours=array();
|
---|
48 | $debughours=array();
|
---|
49 | $experthours=array();
|
---|
50 | $totalhours=array();
|
---|
51 | $affiliation=array();
|
---|
52 | //$shifthourstotal=0;
|
---|
53 | //$debughourstotal=0;
|
---|
54 | //$experthourstotal=0;
|
---|
55 | $hourstotal=0;
|
---|
56 | $hourstotal2=0;
|
---|
57 | $hourstotal3=0;
|
---|
58 | $counter=0;
|
---|
59 |
|
---|
60 | //get username-id connection
|
---|
61 | $queryusers="SELECT username, uid FROM logbook.users ORDER BY username";
|
---|
62 | $resultusers = mysql_query($queryusers);
|
---|
63 | while ($rowusers = mysql_fetch_row($resultusers))
|
---|
64 | $users[$rowusers[0]]=$rowusers[1];
|
---|
65 | mysql_free_result($resultusers);
|
---|
66 |
|
---|
67 | //get institutename-id connection
|
---|
68 | $queryinstitutes="SELECT instituteid, institutename FROM memberlist.institutes ";
|
---|
69 | $resultinstitutes = mysql_query($queryinstitutes);
|
---|
70 | while ($rowinstitutes = mysql_fetch_row($resultinstitutes))
|
---|
71 | $institutenames[$rowinstitutes[0]]=$rowinstitutes[1];
|
---|
72 | mysql_free_result($resultinstitutes);
|
---|
73 |
|
---|
74 | //loop over the nights in the given time range
|
---|
75 | while ($starttimestamp<=$stoptimestamp)
|
---|
76 | {
|
---|
77 | //get affiliation of users
|
---|
78 | $queryaffiliation="SELECT userid, instituteid FROM memberlist.members ";
|
---|
79 | $queryaffiliation.=" WHERE (start < '".$starttimestamp->format('Y-m-d H:i:s')."'";
|
---|
80 | $queryaffiliation.=" AND stop > '".$starttimestamp->format('Y-m-d H:i:s')."')";
|
---|
81 | $queryaffiliation.=" OR (ISNULL(start) AND ISNULL(stop))";
|
---|
82 | $resultaffiliation = mysql_query($queryaffiliation);
|
---|
83 | while ($rowaffiliation = mysql_fetch_row($resultaffiliation))
|
---|
84 | $affiliation[$rowaffiliation[0]]=$rowaffiliation[1];
|
---|
85 | mysql_free_result($resultaffiliation);
|
---|
86 |
|
---|
87 | // get share according to member list
|
---|
88 | $queryshare="SELECT instituteid, COUNT(*) FROM memberlist.members ";
|
---|
89 | $queryshare.=" WHERE start < '".$starttimestamp->format('Y-m-d H:i:s')."'";
|
---|
90 | $queryshare.=" AND stop > '".$starttimestamp->format('Y-m-d H:i:s')."'";
|
---|
91 | $queryshare.=" GROUP BY instituteid";
|
---|
92 | $resultshare = mysql_query($queryshare);
|
---|
93 | $sumpeople=0;
|
---|
94 | $institutes= array ("1" => 0, "2" => 0, "3" => 0, "4" => 0, "5" => 0 );
|
---|
95 | while ($rowshare = mysql_fetch_row($resultshare))
|
---|
96 | {
|
---|
97 | $institutes[$rowshare[0]]+=$rowshare[1];
|
---|
98 | $sumpeople+=$rowshare[1];
|
---|
99 | }
|
---|
100 | foreach ($institutes as $key=>$value)
|
---|
101 | $institutes2[$key]+=$value/$sumpeople;
|
---|
102 |
|
---|
103 | // get total hours of night
|
---|
104 | $queryhours="SELECT Time_to_Sec(Timediff(fStopObservation, fStartObservation))/60./60.+1";
|
---|
105 | $queryhours.=" FROM factdata.ObservationTimes WHERE fNight=".$starttimestamp->format('Ymd');
|
---|
106 | $resulthours = mysql_query($queryhours);
|
---|
107 | $rowhours = mysql_fetch_row($resulthours);
|
---|
108 | $numhours=$rowhours[0];
|
---|
109 | mysql_free_result($resulthours);
|
---|
110 | $hourstotal2+=$numhours;
|
---|
111 |
|
---|
112 | $queryusers="SELECT uid FROM calendar.Data LEFT JOIN logbook.users ON calendar.Data.u=logbook.users.username ";
|
---|
113 | $queryusers.="WHERE CONCAT(y,LPAD(m+1,2,0),LPAD(d,2,0))=".$starttimestamp->format('Ymd');
|
---|
114 | $queryusers.=" AND u NOT IN ('ETHZ','ISDC','UNIWUE','TUDO','moon')";
|
---|
115 | // get shifthours per user and institute
|
---|
116 | $queryshifters=$queryusers." AND x=0";
|
---|
117 | $resultshifters = mysql_query($queryshifters);
|
---|
118 | if (mysql_num_rows($resultshifters)>0)
|
---|
119 | $hourstotal3+=$numhours;
|
---|
120 | while ($rowshifters = mysql_fetch_row($resultshifters))
|
---|
121 | {
|
---|
122 | if(!isset($shifthours[$rowshifters[0]]))
|
---|
123 | $shifthours[$rowshifters[0]]=0;
|
---|
124 | if(!isset($totalhours[$rowshifters[0]]))
|
---|
125 | $totalhours[$rowshifters[0]]=0;
|
---|
126 | if (!isset($affiliation[$rowshifters[0]]))
|
---|
127 | {
|
---|
128 | $affiliation[$rowshifters[0]] = $rowshifters[0];
|
---|
129 | $institutes2[$rowshifters[0]] = 0;
|
---|
130 | $institutenames[$rowshifters[0]] = $rowshifters[0];
|
---|
131 | $institutetotalhours[$rowshifters[0]] = 0;
|
---|
132 | $instituteshifthours[$rowshifters[0]] = 0;
|
---|
133 | }
|
---|
134 |
|
---|
135 | $shifthours[$rowshifters[0]]+=$numhours/mysql_num_rows($resultshifters);
|
---|
136 | $totalhours[$rowshifters[0]]+=$numhours/mysql_num_rows($resultshifters);
|
---|
137 | $instituteshifthours[$affiliation[$rowshifters[0]]]+=$numhours/mysql_num_rows($resultshifters);
|
---|
138 | $institutetotalhours[$affiliation[$rowshifters[0]]]+=$numhours/mysql_num_rows($resultshifters);
|
---|
139 | $hourstotal+=$numhours/mysql_num_rows($resultshifters);
|
---|
140 | }
|
---|
141 | mysql_free_result($resultshifters);
|
---|
142 | //get debugging times per user and institute
|
---|
143 | $querydebug=$queryusers." AND x=1";
|
---|
144 | $resultdebug = mysql_query($querydebug);
|
---|
145 | while ($rowdebug = mysql_fetch_row($resultdebug))
|
---|
146 | {
|
---|
147 | if(!isset($debughours[$rowdebug[0]]))
|
---|
148 | $debughours[$rowdebug[0]]=0;
|
---|
149 | if(!isset($totalhours[$rowdebug[0]]))
|
---|
150 | $totalhours[$rowdebug[0]]=0;
|
---|
151 |
|
---|
152 | $debughours[$rowdebug[0]]+=$numhours*0.5;
|
---|
153 | $totalhours[$rowdebug[0]]+=$numhours*0.5;
|
---|
154 | $institutedebughours[$affiliation[$rowdebug[0]]]+=$numhours*0.5;
|
---|
155 | $institutetotalhours[$affiliation[$rowdebug[0]]]+=$numhours*0.5;
|
---|
156 | $hourstotal+=$numhours*0.5;
|
---|
157 | }
|
---|
158 | mysql_free_result($resultdebug);
|
---|
159 |
|
---|
160 | //get experts
|
---|
161 | // old shift scheme:
|
---|
162 | // per period: 3 blocks with 2 shifters -> 6 slots
|
---|
163 | // expert: 2 months = 1 slot
|
---|
164 | // new shift scheme:
|
---|
165 | // per period: 4 blocks with 1 shifters -> 4 slots
|
---|
166 | // expert: 1 months = 1 slot
|
---|
167 | // + SH expert
|
---|
168 | // + add flare expert starting from 2014/03
|
---|
169 | if ($starttimestamp->format('Ymd')<20171201)
|
---|
170 | $devide=12.0;
|
---|
171 | else
|
---|
172 | $devide=6.0;
|
---|
173 | $queryexperts="SELECT userid FROM memberlist.experts ";
|
---|
174 | $queryexperts.=" WHERE expert=1 ";
|
---|
175 | $queryexperts.=" AND start < '".$starttimestamp->format('Y-m-d H:i:s')."'";
|
---|
176 | $queryexperts.=" AND stop > '".$starttimestamp->format('Y-m-d H:i:s')."'";
|
---|
177 | $resultexperts = mysql_query($queryexperts);
|
---|
178 | while ($rowexperts = mysql_fetch_row($resultexperts))
|
---|
179 | {
|
---|
180 | if (!isset($experthours[$rowexperts[0]]))
|
---|
181 | $experthours[$rowexperts[0]]=0;
|
---|
182 |
|
---|
183 | $experthours[$rowexperts[0]]+=$numhours/mysql_num_rows($resultexperts)/$devide;
|
---|
184 | $totalhours[$rowexperts[0]]+=$numhours/mysql_num_rows($resultexperts)/$devide;
|
---|
185 | $instituteexperthours[$affiliation[$rowexperts[0]]]+=$numhours/mysql_num_rows($resultexperts)/$devide;
|
---|
186 | $institutetotalhours[$affiliation[$rowexperts[0]]]+=$numhours/mysql_num_rows($resultexperts)/$devide;
|
---|
187 | $hourstotal+=$numhours/mysql_num_rows($resultexperts)/$devide;
|
---|
188 | }
|
---|
189 | mysql_free_result($resultexperts);
|
---|
190 | // sh experts
|
---|
191 | if ($starttimestamp->format('Ymd')>20171201)
|
---|
192 | {
|
---|
193 | $devide=6.0;
|
---|
194 | $queryshexperts="SELECT userid FROM memberlist.experts ";
|
---|
195 | $queryshexperts.=" WHERE sh=1 ";
|
---|
196 | $queryshexperts.=" AND start < '".$starttimestamp->format('Y-m-d H:i:s')."'";
|
---|
197 | $queryshexperts.=" AND stop > '".$starttimestamp->format('Y-m-d H:i:s')."'";
|
---|
198 | $resultshexperts = mysql_query($queryshexperts);
|
---|
199 | while ($rowshexperts = mysql_fetch_row($resultshexperts))
|
---|
200 | {
|
---|
201 | if (!isset($shexperthours[$rowshexperts[0]]))
|
---|
202 | $shexperthours[$rowshexperts[0]]=0;
|
---|
203 |
|
---|
204 | $shexperthours[$rowshexperts[0]]+=$numhours/mysql_num_rows($resultshexperts)/$devide;
|
---|
205 | $totalhours[$rowexperts[0]]+=$numhours/mysql_num_rows($resultshexperts)/$devide;
|
---|
206 | $instituteshexperthours[$affiliation[$rowshexperts[0]]]+=$numhours/mysql_num_rows($resultshexperts)/$devide;
|
---|
207 | $institutetotalhours[$affiliation[$rowshexperts[0]]]+=$numhours/mysql_num_rows($resultshexperts)/$devide;
|
---|
208 | $hourstotal+=$numhours/mysql_num_rows($resultshexperts)/$devide;
|
---|
209 | }
|
---|
210 | mysql_free_result($resultshexperts);
|
---|
211 | }
|
---|
212 | // flare experts
|
---|
213 | if ($starttimestamp->format('Ymd')>20140318)
|
---|
214 | {
|
---|
215 | $devide=6.0;
|
---|
216 | $queryflareexperts="SELECT userid FROM memberlist.experts ";
|
---|
217 | $queryflareexperts.=" WHERE flare=1 ";
|
---|
218 | $queryflareexperts.=" AND start < '".$starttimestamp->format('Y-m-d H:i:s')."'";
|
---|
219 | $queryflareexperts.=" AND stop > '".$starttimestamp->format('Y-m-d H:i:s')."'";
|
---|
220 | $resultflareexperts = mysql_query($queryflareexperts);
|
---|
221 | while ($rowflareexperts = mysql_fetch_row($resultflareexperts))
|
---|
222 | {
|
---|
223 | if (!isset($flareexperthours[$rowflareexperts[0]]))
|
---|
224 | $flareexperthours[$rowflareexperts[0]]=0;
|
---|
225 |
|
---|
226 | $flareexperthours[$rowflareexperts[0]]+=$numhours/mysql_num_rows($resultflareexperts)/$devide;
|
---|
227 | $totalhours[$rowexperts[0]]+=$numhours/mysql_num_rows($resultflareexperts)/$devide;
|
---|
228 | $instituteflareexperthours[$affiliation[$rowflareexperts[0]]]+=$numhours/mysql_num_rows($resultflareexperts)/$devide;
|
---|
229 | $institutetotalhours[$affiliation[$rowflareexperts[0]]]+=$numhours/mysql_num_rows($resultflareexperts)/$devide;
|
---|
230 | $hourstotal+=$numhours/mysql_num_rows($resultflareexperts)/$devide;
|
---|
231 | }
|
---|
232 | mysql_free_result($resultflareexperts);
|
---|
233 | }
|
---|
234 |
|
---|
235 | date_add($starttimestamp, date_interval_create_from_date_string("1 days"));
|
---|
236 | $counter++;
|
---|
237 | }
|
---|
238 | foreach ($institutes2 as $key=>$value)
|
---|
239 | $institutes2[$key]=$value/$counter;
|
---|
240 | mysql_free_result($resultshare);
|
---|
241 |
|
---|
242 | mysql_close($db_id);
|
---|
243 |
|
---|
244 | echo "<br>\n<br>\n";
|
---|
245 | //echo "<b>Total number of hours:</b> ".$hourstotal2." h (all nights).<br>\n";
|
---|
246 | //echo "<b>Total number of hours:</b> ".$hourstotal3." h (all data taking nights).<br>\n";
|
---|
247 | //echo "<b>Total number of hours:</b> ".$hourstotal." h (all data taking nights incl expert hours).\n";
|
---|
248 | echo "<b>Total number of hours (all duties):</b> ".$hourstotal." h.<br>\n";
|
---|
249 | echo "<b>Total number of hours (shift duties):</b> ".$hourstotal3." h.\n";
|
---|
250 | echo "<table>\n";
|
---|
251 | echo "<tr><td align='center'><b>institute</b></td><td align='center'>hours (shift/debug/expert/flare/sh)</td><td>share required:done->fulfilled</td></tr>\n";
|
---|
252 | foreach ($institutenames as $id=>$name)
|
---|
253 | {
|
---|
254 | //if (!$institutetotalhours[$id])
|
---|
255 | // continue;
|
---|
256 |
|
---|
257 | if ($institutes2[$id]==0)
|
---|
258 | continue;
|
---|
259 |
|
---|
260 | echo "<tr><td>";
|
---|
261 | echo $name;//."(".$id.")";
|
---|
262 | echo "</td><td align='right'>";
|
---|
263 | printf("%7.2f (%7.2f/%7.2f/%7.2f/%7.2f/%7.2f)",$institutetotalhours[$id],$instituteshifthours[$id],$institutedebughours[$id],$instituteexperthours[$id],$instituteflareexperthours[$id],$instituteshexperthours[$id]);
|
---|
264 | echo "</td><td align='right'>";
|
---|
265 | printf("%7.2f%%: %7.2f%% -> %5.2f%%",$institutes2[$id]*100, $institutetotalhours[$id]/$hourstotal*100, ($institutetotalhours[$id]/$hourstotal)/$institutes2[$id]*100);
|
---|
266 | echo "</td></tr>\n";
|
---|
267 | }
|
---|
268 | echo "</table><br>\n";
|
---|
269 |
|
---|
270 | echo "<table>\n";
|
---|
271 | echo "<tr><td align='center'><b>user</b></td><td align='center'>hours(shift/debug/expert/flare/sh)</td></tr>\n";
|
---|
272 | foreach ($users as $name=>$id)
|
---|
273 | {
|
---|
274 | if (!isset($totalhours[$id]) || !$totalhours[$id])
|
---|
275 | continue;
|
---|
276 |
|
---|
277 | if(!isset($totalhours[$id]))
|
---|
278 | $totalhours[$id]=0;
|
---|
279 | if(!isset($debughours[$id]))
|
---|
280 | $debughours[$id]=0;
|
---|
281 | if(!isset($experthours[$id]))
|
---|
282 | $experthours[$id]=0;
|
---|
283 |
|
---|
284 | echo "<tr><td>";
|
---|
285 | echo $name;//." (".$id.")";
|
---|
286 | echo "</td><td align='right'>";
|
---|
287 | printf("%5.2f (%5.2f/%5.2f/%5.2f/%5.2f/%5.2f)",$totalhours[$id],$shifthours[$id],$debughours[$id],$experthours[$id],$flareexperthours[$id],$shexperthours[$id]);
|
---|
288 | echo "</td></tr>\n";
|
---|
289 | }
|
---|
290 | echo "</table>\n<br>\n";
|
---|
291 | echo "Remark: Debugging times before 2013/02 are not taken into account, i.e. first 16 months of debugging is missing in the automatic evaluation system.";
|
---|
292 | echo "<br>\n<br>\n";
|
---|
293 |
|
---|
294 | echo "</form>\n";
|
---|
295 | echo "</body>\n";
|
---|
296 | echo "</html>\n";
|
---|
297 |
|
---|
298 | ?>
|
---|