source: trunk/www/dch/shifteval.php@ 18769

Last change on this file since 18769 was 18207, checked in by Daniela Dorner, 9 years ago
adapted to ignore moon-entries
File size: 9.1 KB
Line 
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 $institutetotalhours= array ("1" => 0, "2" => 0, "3" => 0, "4" => 0, "5" => 0 );
41 $institutes2= array ("1" => 0, "2" => 0, "3" => 0, "4" => 0, "5" => 0 );
42 $institutenames=array();
43 //arrays on userbase
44 $users=array();
45 $shifthours=array();
46 $debughours=array();
47 $experthours=array();
48 $totalhours=array();
49 $affiliation=array();
50 //$shifthourstotal=0;
51 //$debughourstotal=0;
52 //$experthourstotal=0;
53 $hourstotal=0;
54 $counter=0;
55
56 //get username-id connection
57 $queryusers="SELECT username, uid FROM logbook.users ORDER BY username";
58 $resultusers = mysql_query($queryusers);
59 while ($rowusers = mysql_fetch_row($resultusers))
60 $users[$rowusers[0]]=$rowusers[1];
61 mysql_free_result($resultusers);
62
63 //get institutename-id connection
64 $queryinstitutes="SELECT instituteid, institutename FROM memberlist.institutes ";
65 $resultinstitutes = mysql_query($queryinstitutes);
66 while ($rowinstitutes = mysql_fetch_row($resultinstitutes))
67 $institutenames[$rowinstitutes[0]]=$rowinstitutes[1];
68 mysql_free_result($resultinstitutes);
69
70 //loop over the nights in the given time range
71 while ($starttimestamp<=$stoptimestamp)
72 {
73 //get affiliation of users
74 $queryaffiliation="SELECT userid, instituteid FROM memberlist.members ";
75 $queryaffiliation.=" WHERE (start < '".$starttimestamp->format('Y-m-d H:i:s')."'";
76 $queryaffiliation.=" AND stop > '".$starttimestamp->format('Y-m-d H:i:s')."')";
77 $queryaffiliation.=" OR (ISNULL(start) AND ISNULL(stop))";
78 $resultaffiliation = mysql_query($queryaffiliation);
79 while ($rowaffiliation = mysql_fetch_row($resultaffiliation))
80 $affiliation[$rowaffiliation[0]]=$rowaffiliation[1];
81 mysql_free_result($resultaffiliation);
82
83 // get share according to member list
84 $queryshare="SELECT instituteid, COUNT(*) FROM memberlist.members ";
85 $queryshare.=" WHERE start < '".$starttimestamp->format('Y-m-d H:i:s')."'";
86 $queryshare.=" AND stop > '".$starttimestamp->format('Y-m-d H:i:s')."'";
87 $queryshare.=" GROUP BY instituteid";
88 $resultshare = mysql_query($queryshare);
89 $sumpeople=0;
90 $institutes= array ("1" => 0, "2" => 0, "3" => 0, "4" => 0, "5" => 0 );
91 while ($rowshare = mysql_fetch_row($resultshare))
92 {
93 $institutes[$rowshare[0]]+=$rowshare[1];
94 $sumpeople+=$rowshare[1];
95 }
96 foreach ($institutes as $key=>$value)
97 $institutes2[$key]+=$value/$sumpeople;
98
99 // get total hours of night
100 $queryhours="SELECT Time_to_Sec(Timediff(fStopObservation, fStartObservation))/60./60.+1";
101 $queryhours.=" FROM factdata.ObservationTimes WHERE fNight=".$starttimestamp->format('Ymd');
102 $resulthours = mysql_query($queryhours);
103 $rowhours = mysql_fetch_row($resulthours);
104 $numhours=$rowhours[0];
105 mysql_free_result($resulthours);
106
107 $queryusers="SELECT uid FROM calendar.Data LEFT JOIN logbook.users ON calendar.Data.u=logbook.users.username ";
108 $queryusers.="WHERE CONCAT(y,LPAD(m+1,2,0),LPAD(d,2,0))=".$starttimestamp->format('Ymd');
109 $queryusers.=" AND u NOT IN ('ETHZ','ISDC','UNIWUE','TUDO','moon')";
110 // get shifthours per user and institute
111 $queryshifters=$queryusers." AND x=0";
112 $resultshifters = mysql_query($queryshifters);
113 while ($rowshifters = mysql_fetch_row($resultshifters))
114 {
115 $shifthours[$rowshifters[0]]+=$numhours/mysql_num_rows($resultshifters);
116 $totalhours[$rowshifters[0]]+=$numhours/mysql_num_rows($resultshifters);
117 $instituteshifthours[$affiliation[$rowshifters[0]]]+=$numhours/mysql_num_rows($resultshifters);
118 $institutetotalhours[$affiliation[$rowshifters[0]]]+=$numhours/mysql_num_rows($resultshifters);
119 $hourstotal+=$numhours/mysql_num_rows($resultshifters);
120 }
121 mysql_free_result($resultshifters);
122 //get debugging times per user and institute
123 $querydebug=$queryusers." AND x=1";
124 $resultdebug = mysql_query($querydebug);
125 while ($rowdebug = mysql_fetch_row($resultdebug))
126 {
127 $debughours[$rowdebug[0]]+=$numhours*0.5;
128 $totalhours[$rowdebug[0]]+=$numhours*0.5;
129 $institutedebughours[$affiliation[$rowdebug[0]]]+=$numhours*0.5;
130 $institutetotalhours[$affiliation[$rowdebug[0]]]+=$numhours*0.5;
131 $hourstotal+=$numhours*0.5;
132 }
133 mysql_free_result($resultdebug);
134
135 //get experts
136 //total 1 year: 4000 hours ~10.9h/night -> 46 hours/shift slot
137 //1 shift slot 46 hours
138 // 4000/46 = 87
139 // -> 87 shift slots
140 // expert 6 slots
141 // 87/6 -> 14.5
142 // => expert counts 1/13 of normal time
143 $devide=14.5;
144 $queryexperts="SELECT userid FROM memberlist.experts ";
145 $queryexperts.=" WHERE start < '".$starttimestamp->format('Y-m-d H:i:s')."'";
146 //$queryexperts.=" AND stop > '".$stoptimestamp->format('Y-m-d H:i:s')."'";
147 $queryexperts.=" AND stop > '".$starttimestamp->format('Y-m-d H:i:s')."'";
148 $resultexperts = mysql_query($queryexperts);
149 while ($rowexperts = mysql_fetch_row($resultexperts))
150 {
151 $experthours[$rowexperts[0]]+=$numhours/mysql_num_rows($resultexperts)/$devide;
152 $totalhours[$rowexperts[0]]+=$numhours/mysql_num_rows($resultexperts)/$devide;
153 $instituteexperthours[$affiliation[$rowexperts[0]]]+=$numhours/mysql_num_rows($resultexperts)/$devide;
154 $institutetotalhours[$affiliation[$rowexperts[0]]]+=$numhours/mysql_num_rows($resultexperts)/$devide;
155 $hourstotal+=$numhours/mysql_num_rows($resultexperts)/$devide;
156 }
157 mysql_free_result($resultexperts);
158
159 date_add($starttimestamp, date_interval_create_from_date_string("1 days"));
160 $counter++;
161 }
162 foreach ($institutes2 as $key=>$value)
163 $institutes2[$key]=$value/$counter;
164 mysql_free_result($resultshare);
165
166 mysql_close($db_id);
167
168 echo "<br>\n<br>\n";
169 echo "<b>Total number of hours:</b> ".$hourstotal." h.";
170 echo "<table>\n";
171 echo "<tr><td align='center'><b>institute</b></td><td align='center'>hours (shift/debug/expert)</td><td>share required:done->fulfilled</td></tr>\n";
172 foreach ($institutenames as $id=>$name)
173 {
174 //if (!$institutetotalhours[$id])
175 // continue;
176 echo "<tr><td>";
177 echo $name;//."(".$id.")";
178 echo "</td><td align='right'>";
179 printf("%7.2f (%7.2f/%7.2f/%7.2f)",$institutetotalhours[$id],$instituteshifthours[$id],$institutedebughours[$id],$instituteexperthours[$id]);
180 echo "</td><td align='right'>";
181 printf("%7.2f%%: %7.2f%% -> %5.2f%%",$institutes2[$id]*100, $institutetotalhours[$id]/$hourstotal*100, ($institutetotalhours[$id]/$hourstotal)/$institutes2[$id]*100);
182 echo "</td></tr>\n";
183 }
184 echo "</table><br>\n";
185
186 echo "<table>\n";
187 echo "<tr><td align='center'><b>user</b></td><td align='center'>hours(shift/debug/expert)</td></tr>\n";
188 foreach ($users as $name=>$id)
189 {
190 if (!$totalhours[$id])
191 continue;
192 echo "<tr><td>";
193 echo $name;//." (".$id.")";
194 echo "</td><td align='right'>";
195 printf("%5.2f (%5.2f/%5.2f/%5.2f)",$totalhours[$id],$shifthours[$id],$debughours[$id],$experthours[$id]);
196 echo "</td></tr>\n";
197 }
198 echo "</table>\n<br>\n";
199 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.";
200 echo "<br>\n<br>\n";
201
202 echo "</form>\n";
203 echo "</body>\n";
204 echo "</html>\n";
205
206?>
Note: See TracBrowser for help on using the repository browser.