16
16
// You should have received a copy of the GNU Lesser General Public License
17
17
// along with BOINC. If not, see <http://www.gnu.org/licenses/>.
19
function result_claimed_credit_string($result, $string_to_show) {
20
if ($result->server_state <> 5) return "---";
21
switch($result->outcome) {
23
if ($result->exit_status <> -221) {
24
return $string_to_show; //Client error
27
if ($result->claimed_credit > 0) {
28
return $string_to_show;
30
return "---"; // no claimed credit
20
$app_versions = array();
22
function anon_platform_string($result, $rsc_name=null) {
24
if (!array_key_exists($result->appid, $apps)) {
25
$app = BoincApp::lookup_id($result->appid);
26
$apps[$result->appid] = $app;
28
$app = $apps[$result->appid];
29
$n = $app->user_friendly_name."<br>". tra("Anonymous platform");
36
function app_version_string($result) {
37
global $apps, $app_versions;
39
$id = $result->app_version_id;
40
if ($id == 0) return "";
41
if ($id == -1) return anon_platform_string($result);
42
if ($id == -2) return anon_platform_string($result, tra("CPU"));
43
if ($id == -3) return anon_platform_string($result, tra("NVIDIA GPU"));
44
if ($id == -4) return anon_platform_string($result, tra("ATI GPU"));
45
if (array_key_exists($id, $app_versions)) {
46
$av = $app_versions[$id];
47
$app = $apps[$av->appid];
49
$av = BoincAppVersion::lookup_id($id);
51
return tra("Not in DB");
53
$app_versions[$id] = $av;
54
$app = BoincApp::lookup_id($av->appid);
55
$apps[$av->appid] = $app;
57
$n = $app->user_friendly_name;
58
$v = sprintf("%d.%02d", $av->version_num/100, $av->version_num%100);
59
if ($av->plan_class) {
60
$c = "($av->plan_class)";
34
67
function result_granted_credit_string($result, $string_to_show) {
68
if ($result->server_state == 4 && $result->granted_credit > 0) {
69
return $string_to_show;
35
71
if ($result->server_state <> 5) return "---";
36
72
switch($result->outcome) {
38
74
switch ($result->validate_state) {
77
return tra("pending");
43
79
return $string_to_show;
45
81
if ($result->granted_credit > 0) {
46
82
return $string_to_show;
48
return "---"; // no claimed credit
88
// various states that we allow users to filter on
90
define("STATE_ALL", 0);
91
define("STATE_IN_PROGRESS", 1);
92
define("STATE_PENDING", 2);
93
define("STATE_VALID", 3);
94
define("STATE_INVALID", 4);
95
define("STATE_ERROR", 5);
107
$state_clause = array(
109
" and server_state=4 ",
110
" and server_state=5 and outcome=1 and (validate_state=0 or validate_state=4) ",
111
" and server_state=5 and outcome=1 and validate_state=1 ",
112
" and server_state=5 and (outcome=6 or (outcome=1 and (validate_state=2 or validate_state=3 or validate_state=5))) ",
113
" and server_state=5 and (outcome=3 or outcome=4 or outcome=7) ",
116
function state_string($result) {
117
switch ($result->server_state) {
118
case 1: return tra("Inactive");
119
case 2: return tra("Unsent");
120
case 4: return tra("In progress");
122
switch ($result->outcome) {
124
switch ($result->validate_state) {
125
case 0: return tra("Completed, waiting for validation");
126
case 1: return tra("Completed and validated");
127
case 2: return tra("Completed, marked as invalid");
128
case 3: return tra("Completed, can't validate");
129
case 4: return tra("Completed, validation inconclusive");
130
case 5: return tra("Completed, too late to validate");
132
return tra("Completed");
133
case 2: return tra("Couldn't send");
135
if ($result->exit_status == -221) {
136
return tra("Cancelled by server");
138
switch($result->client_state) {
139
case 1: return tra("Error while downloading");
141
case 3: return tra("Error while computing");
142
case 4: return tra("Error while uploading");
143
case 6: return tra("Aborted by user");
146
case 4: return tra("Timed out - no response");
147
case 5: return tra("Didn't need");
148
case 6: return tra("Validate error");
149
case 7: return tra("Abandoned");
152
return tra("Unknown");
52
155
function result_server_state_string($result) {
53
156
switch($result->server_state) {
54
case 1: return "Inactive";
55
case 2: return "Unsent";
56
case 4: return "In progress";
57
case 5: return "Over";
157
case 1: return tra("Inactive");
158
case 2: return tra("Unsent");
159
case 4: return tra("In progress");
160
case 5: return tra("Over");
162
return tra("Unknown");
62
165
function result_outcome_string($result) {
63
166
switch($result->outcome) {
64
167
case 0: return "---";
65
case 1: return "Success";
66
case 2: return "Couldn't send";
168
case 1: return tra("Success");
169
case 2: return tra("Couldn't send");
68
171
if ($result->exit_status <> -221) {
69
return "Client error";
172
return tra("Computation error");
71
return "Redundant result";
72
case 4: return "No reply";
73
case 5: return "Didn't need";
74
case 6: return "Validate error";
75
case 7: return "Client detached";
174
return tra("Redundant result");
175
case 4: return tra("No reply");
176
case 5: return tra("Didn't need");
177
case 6: return tra("Validate error");
178
case 7: return tra("Abandoned");
180
return tra("Unknown");
80
183
function result_client_state_string($result) {
81
184
switch($result->client_state) {
83
case 1: return "Downloading";
84
case 2: return "Computing";
85
case 3: return "Compute error";
86
case 4: return "Uploading";
87
case 5: return "Done";
185
case 0: return tra("New");
186
case 1: return tra("Downloading");
187
case 2: return tra("Processing");
188
case 3: return tra("Compute error");
189
case 4: return tra("Uploading");
190
case 5: return tra("Done");
89
if ($result->exit_status <> -221) {
90
return "Aborted by user";
192
if ($result->exit_status == -221) {
193
return tra("Cancelled by server");
92
return "Cancelled by server";
195
return tra("Aborted by user");
96
199
function validate_state_str($result) {
97
200
switch($result->validate_state) {
98
case 0: return "Initial";
99
case 1: return "Valid";
201
case 0: return tra("Initial");
202
case 1: return tra("Valid");
101
204
if ($result->exit_status <> -221) {
205
return tra("Invalid");
104
return "Not necessary";
105
case 3: return "Workunit error - check skipped";
106
case 4: return "Checked, but no consensus yet";
107
case 5: return "Task was reported too late to validate";
207
return tra("Not necessary");
208
case 3: return tra("Workunit error - check skipped");
209
case 4: return tra("Checked, but no consensus yet");
210
case 5: return tra("Task was reported too late to validate");
212
return tra("Unknown");
112
215
function wu_error_mask_str($s) {
115
$x = $x."Couldn't send result ";
218
$x = $x." ".tra("Couldn't send result");
119
$x = $x."Too many error results ";
222
$x = $x." ".tra("Too many errors (may have bug)");
123
$x = $x."Too many success results ";
226
$x = $x." ".tra("Too many results (may be nondeterministic)");
127
$x = $x."Too many total results ";
230
$x = $x." ".tra("Too many total results");
131
$x = $x."Cancelled ";
234
$x = $x." ".tra("WU cancelled");
135
$x = $x."Unrecognized Error: $s ";
238
$x = $x." ".tra("Unrecognized Error: %1", $s);
241
$x="<font color=\"#ff3333\">".$x."</font>";
143
function result_table_start($show_wu_link, $show_host_link, $show_result_link) {
248
function result_page_url($info) {
251
$sn = $info->show_names;
253
$appid = $info->appid;
254
return "results.php?$c&offset=$o&show_names=$sn&state=$st&appid=$appid";
257
function result_table_start($show_wu_link, $show_host_link, $info) {
148
if ($show_result_link) {
149
echo "<th>Task ID<br><span class=\"smalltext\">click for details</span></th>\n";
261
if ($info->show_names) {
264
$url = result_page_url($i2);
265
echo "<th>".tra("Task name")."<br><span class=\"smalltext\">".tra("click for details")."<br><a href=$url>".tra("Show IDs")."</a></span></th>\n";
269
$url = result_page_url($i2);
270
echo "<th>Task<br><span class=\"smalltext\">".tra("click for details")."<br><a href=$url>".tra("Show names")."</a></span></th>\n";
273
echo "<th>".tra("Task")."<br><span class=\"smalltext\">".tra("click for details")."</span></th>\n";
151
275
if ($show_wu_link) {
152
echo "<th>Work unit ID<br><span class=\"smalltext\">click for details</span></th>\n";
276
echo "<th>".tra("Work unit")."<br><span class=\"smalltext\">".tra("click for details")."</span></th>\n";
154
278
if ($show_host_link) {
155
echo "<th>Computer</th>\n";
279
echo "<th>".tra("Computer")."</th>\n";
161
<br><span class=\"smalltext\"><a href=\"explain_state.php?field=result_time\">explain</a></span>
164
<br><span class=\"smalltext\"><a href=\"explain_state.php?field=result_server_state\">explain</a></span>
167
<br><span class=\"smalltext\"><a href=\"explain_state.php?field=result_outcome\">explain</a></span>
170
<br><span class=\"smalltext\"><a href=\"explain_state.php?field=result_client_state\">explain</a></span>
172
<th>CPU time (sec)</th>
173
<th>claimed credit</th>
174
<th>granted credit</th>
282
<th>".tra("Sent")."</th>
283
<th>".tra("Time reported<br />or deadline")."
284
<br><span class=\"smalltext\"><a href=\"explain_state.php?field=result_time\">".tra("explain")."</a></span>
286
<th>".tra("Status")."</th>
287
<th>".tra("Run time<br />(sec)")."</th>
288
<th>".tra("CPU time<br />(sec)")."</th>
289
<th>".tra("Credit")."</th>
290
<th>".tra("Application")."</th>
260
377
function show_result($result) {
262
row2("Task ID", $result->id);
263
row2("Name", $result->name);
264
row2("Workunit", "<a href=\"workunit.php?wuid=$result->workunitid\">$result->workunitid</a>");
265
row2("Created", time_str($result->create_time));
266
row2("Sent", time_str($result->sent_time));
267
row2("Received", time_str($result->received_time));
268
row2("Server state", result_server_state_string($result));
269
row2("Outcome", result_outcome_string($result));
270
row2("Client state", result_client_state_string($result));
271
row2("Exit status", exit_status_string($result));
272
row2("Computer ID", host_link($result->hostid));
273
row2("Report deadline", time_str($result->report_deadline));
274
row2("CPU time", $result->cpu_time);
275
row2("stderr out", "<pre>".htmlspecialchars($result->stderr_out)."</pre>");
276
row2("Validate state", validate_state_str($result));
277
row2("Claimed credit", $result->claimed_credit);
278
row2("Granted credit", $result->granted_credit);
279
row2("application version", version_string($result->app_version_num));
379
row2(tra("Name"), $result->name);
380
row2(tra("Workunit"), "<a href=\"workunit.php?wuid=$result->workunitid\">$result->workunitid</a>");
381
row2(tra("Created"), time_str($result->create_time));
382
row2(tra("Sent"), time_str($result->sent_time));
383
row2(tra("Received"), time_str($result->received_time));
384
row2(tra("Server state"), result_server_state_string($result));
385
row2(tra("Outcome"), result_outcome_string($result));
386
row2(tra("Client state"), result_client_state_string($result));
387
row2(tra("Exit status"), exit_status_string($result));
388
row2(tra("Computer ID"), host_link($result->hostid));
389
row2(tra("Report deadline"), time_str($result->report_deadline));
390
row2(tra("Run time"), number_format($result->elapsed_time, 2));
391
row2(tra("CPU time"), number_format($result->cpu_time, 2));
392
row2(tra("Validate state"), validate_state_str($result));
393
row2(tra("Credit"), number_format($result->granted_credit, 2));
394
row2(tra("Application version"), app_version_string($result));
396
echo "<h3>".tra("Stderr output")."</h3> <pre>".htmlspecialchars($result->stderr_out)."</pre>";
283
function show_result_navigation(
284
$clause, $number_of_results, $offset, $results_per_page
399
function show_result_navigation($info) {
286
402
echo "<br><center>";
287
if ($offset >= $results_per_page) {
288
$offset_p = $offset-$results_per_page;
289
echo "<a href=results.php?$clause&offset=$offset_p>Previous $results_per_page</a>";
403
$show_prev = ($info->offset >= $info->results_per_page);
404
$show_next = ($info->number_of_results > $info->results_per_page);
407
$i2->offset = $info->offset - $info->results_per_page;
408
$url = result_page_url($i2);
409
echo "<a href=$url>".tra("Previous")." ".$info->results_per_page."</a>";
291
if (($offset >= $results_per_page) && ($number_of_results > $results_per_page)) {
411
if ($show_prev && $show_next) {
292
412
echo " | ";
294
if ($number_of_results > $results_per_page) {
295
$offset_n = $offset+$results_per_page;
296
echo "<a href=results.php?$clause&offset=$offset_n>Next $results_per_page</a></center><br>";
298
echo "</center><br><br>";
416
$i2->offset = $info->offset + $info->results_per_page;
417
$url = result_page_url($i2);
418
echo "<a href=$url>".tra("Next")." ".$info->results_per_page."</a>";
420
echo "<br>".tra("Show").": ";
421
for ($i=0; $i<NSTATES; $i++) {
423
if ($info->state == $i) {
424
echo $state_name[$i];
429
$url = result_page_url($i2);
430
echo "<a href=$url>".$state_name[$i]."</a>";
434
$apps = BoincApp::enum('deprecated=0 ORDER BY user_friendly_name');
435
if (count($apps) > 1) {
441
$url = result_page_url($i2);
442
echo '<a href="'.$url.'">All</a>';
447
foreach ($apps as $app) {
448
$i2->appid = $app->id;
449
$url = result_page_url($i2);
451
if ($info->appid == $app->id) {
452
echo $app->user_friendly_name;
454
echo '<a href="'.$url.'">'.$app->user_friendly_name.'</a>';
459
echo "</center><br>";
302
$cvs_version_tracker[]="\$Id: result.inc 15771 2008-08-07 20:43:52Z davea $"; //Generated automatically - do not edit
462
$cvs_version_tracker[]="\$Id: result.inc 22340 2010-09-13 16:12:00Z Rytis $"; //Generated automatically - do not edit