Commit 01c17a023467cf3c4b8c5acd202d9df760f092a2

Authored by Nathanaël Jourdane
1 parent 1c3d1a0c

Add detailled info when creating jobs

Showing 1 changed file with 94 additions and 44 deletions   Show diff stats
src/InputOutput/IHMImpl/Tools/IHMJobsManagerClass.php
@@ -258,95 +258,145 @@ class IHMJobsManagerClass { @@ -258,95 +258,145 @@ class IHMJobsManagerClass {
258 /* 258 /*
259 * @brief Add a new job 259 * @brief Add a new job
260 */ 260 */
261 - public function addJob($obj, $id, $folder,  
262 - $running, $start, $result, $exitcode) 261 + public function addJob($obj, $id, $folder, $running, $start, $result, $exitcode)
263 { 262 {
  263 + $obj = get_object_vars($obj); // Allow access to elements where the key is in dash-separated form.
264 $res = $this->init(); 264 $res = $this->init();
265 if (!$res['success']) 265 if (!$res['success'])
266 return $res; 266 return $res;
267 267
268 - $newJob = $this->jobXml->createElement('job');  
269 -  
270 - $newJob->setAttribute('xml:id', $id);  
271 - $newJob->setAttribute('jobType', $obj->nodeType); 268 +// $f = fopen('/AMDA/AMDA_Integration/debug/serialise.json', 'w') or die("Unable to open file!");
  269 +// fwrite($f, json_encode($obj, JSON_PRETTY_PRINT));
  270 +// fclose($f);
272 271
273 - switch ($obj->nodeType)  
274 - {  
275 - case 'condition' : 272 + $infos = [];
  273 + switch ($obj['nodeType']) {
  274 + // Data mining
  275 + case 'condition':
276 $name = 'datamining_'.time(); 276 $name = 'datamining_'.time();
277 - $info = $obj->expression; 277 + $infos['Name'] = $obj['name'];
  278 + $infos['Condition'] = $obj['expression'];
  279 + $infos['Start date'] = $obj['startDate'];
  280 + $infos['Stop date'] = $obj['stopDate'];
  281 + $infos['Duration'] = $obj['durationDay'] . 'd ' . $obj['durationHour'] . 'h ' . $obj['durationMin'] . 'm ' . $obj['durationSec'] . 's';
278 break; 282 break;
279 - case 'statistics' : 283 +
  284 + case 'statistics':
280 $name = 'statistics_'.time(); 285 $name = 'statistics_'.time();
281 - $info = isset($obj->expression) ? $obj->expression : ""; 286 + $infos['Name'] = $obj['name'];
  287 + $infos['Start date'] = $obj['startDate'];
  288 + $infos['Stop date'] = $obj['stopDate'];
  289 + $infos['Duration'] = $obj['durationDay'] . 'd ' . $obj['durationHour'] . 'h ' . $obj['durationMin'] . 'm ' . $obj['durationSec'] . 's';
  290 + if(array_key_exists('expression', $obj)) {
  291 + $infos['Expression'] = $obj['expression'];
  292 + }
  293 + $params = [];
  294 + foreach ($obj['parameter'] as $param) {
  295 + $params[] = $param->function . '(' . $param->paramid . ')';
  296 + }
  297 + if(count($params) == 1) {
  298 + $infos['Parameter'] = $params[0];
  299 + } else {
  300 + $infos['Parameters'] = '<ul><li>' . join('</li><li>', $params) . '</li></ul>';
  301 + }
282 break; 302 break;
283 - case 'download' :  
284 - if ($obj->downloadSrc == '2') //fits image  
285 - $name = "download_fits_".time();  
286 - else  
287 - $name = "download_data_".time();  
288 - $info = '';  
289 - foreach ($obj->list as $param)  
290 - {  
291 - if ($obj->downloadSrc == '2') //fits image  
292 - $info = $info.' '.$param->url;  
293 - else  
294 - $info = $info.' '.$param->name; //data 303 +
  304 + case 'download':
  305 + $name = $obj['downloadSrc'] == '2' ? "download_fits_".time() : "download_data_".time();
  306 + $params = [];
  307 + foreach ($obj['list'] as $param) {
  308 + $params[] = $param->paramid;
  309 + }
  310 + if(count($params) == 1) {
  311 + $infos['Parameter'] = $params[0];
  312 + } else {
  313 + $infos['Parameters'] = join(', ', $params);
295 } 314 }
  315 + $infos['Start date'] = $obj['startDate'];
  316 + $infos['Stop date'] = $obj['stopDate'];
  317 + $infos['Duration'] = $obj['durationDay'] . 'd ' . $obj['durationHour'] . 'h ' . $obj['durationMin'] . 'm ' . $obj['durationSec'] . 's';
296 break; 318 break;
297 - case 'request' : 319 +
  320 + // Plot
  321 + case 'request':
298 $name = "request_".time(); 322 $name = "request_".time();
299 - $info = '';  
300 - for ($i=0; $i < count($obj->children); $i++) {  
301 - for ($j=0; $j < count($obj->children[$i]->children); $j++) {  
302 - $info = $info.' '.$obj->children[$i]->children[$j]->name; 323 +
  324 + $infos['Output'] = strtolower($obj['file-format']) . ' (' . strtolower($obj['file-output']) . ')';
  325 + foreach ($obj['tabs'] as $tab) {
  326 + if($tab->id == $obj['last-plotted-tab']) {
  327 + $infos['Start date'] = $tab->startDate;
  328 + $infos['Stop date'] = $tab->stopDate;
  329 + $infos['Duration'] = $tab->durationDay . 'd ' . $tab->durationHour . 'h ' . $tab->durationMin . 'm ' . $tab->durationSec . 's';
  330 +
  331 + $strPanels = [];
  332 + foreach ($tab->panels as $panel) {
  333 + $axes = [];
  334 + foreach ($panel->axes as $axe) {
  335 + $axes[] = $axe->id;
  336 + }
  337 + $params = [];
  338 + foreach ($panel->params as $param) {
  339 + $params[] = $param->paramid;
  340 + }
  341 + $strPanels[] = join(', ', $params) . ' (' . join(', ', $axes) . ')';
  342 + }
  343 +
  344 + if(count($strPanels) == 1) {
  345 + $infos['Parameters'] = $strPanels[0];
  346 + } else {
  347 + $infos['Panels'] = '<ul><li>' . join('</li><li>', $strPanels) . '</li></ul>';
  348 + }
  349 +
  350 + continue;
303 } 351 }
304 } 352 }
305 break; 353 break;
  354 +
306 default: 355 default:
307 $name = "unknown_".time(); 356 $name = "unknown_".time();
308 - $info = '';  
309 } 357 }
  358 + $infos['Started at'] = gmdate("Y-m-d\TH:i:s\Z", $start);
310 359
311 - $newJob->setAttribute('name', $name);  
312 - $newJob->setAttribute('info', $info); 360 + $strInfo = '';
  361 + foreach ($infos as $key => $info) {
  362 + $strInfo .= '<b>' . $key . '</b>: ' . $info . '<br/>';
  363 + }
313 364
  365 + $newJob = $this->jobXml->createElement('job');
  366 + $newJob->setAttribute('xml:id', $id);
  367 + $newJob->setAttribute('jobType', $obj['nodeType']);
  368 + $newJob->setAttribute('name', $name);
  369 + $newJob->setAttribute('info', $strInfo);
314 $newJob->setAttribute('folder', $folder); 370 $newJob->setAttribute('folder', $folder);
315 -  
316 $newJob->setAttribute('result', $result); 371 $newJob->setAttribute('result', $result);
317 -  
318 $newJob->setAttribute('start', date('d-m-Y H:i:s', $start)); 372 $newJob->setAttribute('start', date('d-m-Y H:i:s', $start));
319 -  
320 - $newJob->setAttribute('result', $result);  
321 -  
322 //to know if know if it's an immediate job or not 373 //to know if know if it's an immediate job or not
323 $newJob->setAttribute('immediate', !$running); 374 $newJob->setAttribute('immediate', !$running);
324 375
325 - $sendToSamp = isset($obj->sendToSamp) ? $obj->sendToSamp : FALSE; 376 + $sendToSamp = isset($obj['sendToSamp']) ? $obj['sendToSamp'] : FALSE;
326 if ($sendToSamp) { 377 if ($sendToSamp) {
327 $newJob->setAttribute('sendToSamp', "true"); 378 $newJob->setAttribute('sendToSamp', "true");
328 } 379 }
329 380
  381 + $key = $obj['nodeType'];
330 if ($running) 382 if ($running)
331 { 383 {
332 - $rootJobNode = $this->jobXml->getElementById($this->bkgRootNode[$obj->nodeType]); 384 + $rootJobNode = $this->jobXml->getElementById($this->bkgRootNode[$key]);
333 if (!$rootJobNode) 385 if (!$rootJobNode)
334 { 386 {
335 - $key = $obj->nodeType;  
336 $rootJobNode = $this->jobXml->createElement("$key"); 387 $rootJobNode = $this->jobXml->createElement("$key");
337 - $rootJobNode->setAttribute('xml:id', $this->bkgRootNode[$obj->nodeType]); 388 + $rootJobNode->setAttribute('xml:id', $this->bkgRootNode[$key]);
338 $jobsInProgress = $this->jobXml->getElementsByTagName('jobsInProgress')->item(0); 389 $jobsInProgress = $this->jobXml->getElementsByTagName('jobsInProgress')->item(0);
339 $jobsInProgress->appendChild($rootJobNode); 390 $jobsInProgress->appendChild($rootJobNode);
340 } 391 }
341 } 392 }
342 else 393 else
343 { 394 {
344 - $rootJobNode = $this->jobXml->getElementById($this->resRootNode[$obj->nodeType]); 395 + $rootJobNode = $this->jobXml->getElementById($this->resRootNode[$key]);
345 if (!$rootJobNode) 396 if (!$rootJobNode)
346 { 397 {
347 - $key = $obj->nodeType;  
348 $rootJobNode = $this->jobXml->createElement("$key"); 398 $rootJobNode = $this->jobXml->createElement("$key");
349 - $rootJobNode->setAttribute('xml:id', $this->resRootNode[$obj->nodeType]); 399 + $rootJobNode->setAttribute('xml:id', $this->resRootNode[$key]);
350 $jobsFinished = $this->jobXml->getElementsByTagName('jobsFinished')->item(0); 400 $jobsFinished = $this->jobXml->getElementsByTagName('jobsFinished')->item(0);
351 $jobsFinished->appendChild($rootJobNode); 401 $jobsFinished->appendChild($rootJobNode);
352 } 402 }