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

Last change on this file since 18045 was 17602, checked in by Daniela Dorner, 11 years ago
complete rewriting of the page to take into account people changing institutes
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', 'UNIDO', 'UNIWUE')";
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 "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.";
170 echo "<br>\n<br>\n";
171 echo "<b>Total number of hours:</b> ".$hourstotal." h.";
172 echo "<table>\n";
173 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";
174 foreach ($institutenames as $id=>$name)
175 {
176 if (!$institutetotalhours[$id])
177 continue;
178 echo "<tr><td>";
179 echo $name;//."(".$id.")";
180 echo "</td><td align='right'>";
181 printf("%7.2f (%7.2f/%7.2f/%7.2f)",$institutetotalhours[$id],$instituteshifthours[$id],$institutedebughours[$id],$instituteexperthours[$id]);
182 echo "</td><td align='right'>";
183 printf("%7.2f%%: %7.2f%% -> %5.2f%%",$institutes2[$id]*100, $institutetotalhours[$id]/$hourstotal*100, ($institutetotalhours[$id]/$hourstotal)/$institutes2[$id]*100);
184 echo "</td></tr>\n";
185 }
186 echo "</table>\n";
187
188 echo "<table>\n";
189 echo "<tr><td align='center'><b>user</b></td><td align='center'>hours(shift/debug/expert)</td></tr>\n";
190 foreach ($users as $name=>$id)
191 {
192 if (!$totalhours[$id])
193 continue;
194 echo "<tr><td>";
195 echo $name;//." (".$id.")";
196 echo "</td><td align='right'>";
197 printf("%5.2f (%5.2f/%5.2f/%5.2f)",$totalhours[$id],$shifthours[$id],$debughours[$id],$experthours[$id]);
198 echo "</td></tr>\n";
199 }
200 echo "</table>\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.