From 01c17a023467cf3c4b8c5acd202d9df760f092a2 Mon Sep 17 00:00:00 2001 From: Nathanaƫl Jourdane <nathanael.jourdane@irap.omp.eu> Date: Fri, 9 Mar 2018 16:29:37 +0100 Subject: [PATCH] Add detailled info when creating jobs --- src/InputOutput/IHMImpl/Tools/IHMJobsManagerClass.php | 138 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-------------------------------------------- 1 file changed, 94 insertions(+), 44 deletions(-) diff --git a/src/InputOutput/IHMImpl/Tools/IHMJobsManagerClass.php b/src/InputOutput/IHMImpl/Tools/IHMJobsManagerClass.php index b2cdeba..3986b47 100644 --- a/src/InputOutput/IHMImpl/Tools/IHMJobsManagerClass.php +++ b/src/InputOutput/IHMImpl/Tools/IHMJobsManagerClass.php @@ -258,95 +258,145 @@ class IHMJobsManagerClass { /* * @brief Add a new job */ - public function addJob($obj, $id, $folder, - $running, $start, $result, $exitcode) + public function addJob($obj, $id, $folder, $running, $start, $result, $exitcode) { + $obj = get_object_vars($obj); // Allow access to elements where the key is in dash-separated form. $res = $this->init(); if (!$res['success']) return $res; - $newJob = $this->jobXml->createElement('job'); - - $newJob->setAttribute('xml:id', $id); - $newJob->setAttribute('jobType', $obj->nodeType); +// $f = fopen('/AMDA/AMDA_Integration/debug/serialise.json', 'w') or die("Unable to open file!"); +// fwrite($f, json_encode($obj, JSON_PRETTY_PRINT)); +// fclose($f); - switch ($obj->nodeType) - { - case 'condition' : + $infos = []; + switch ($obj['nodeType']) { + // Data mining + case 'condition': $name = 'datamining_'.time(); - $info = $obj->expression; + $infos['Name'] = $obj['name']; + $infos['Condition'] = $obj['expression']; + $infos['Start date'] = $obj['startDate']; + $infos['Stop date'] = $obj['stopDate']; + $infos['Duration'] = $obj['durationDay'] . 'd ' . $obj['durationHour'] . 'h ' . $obj['durationMin'] . 'm ' . $obj['durationSec'] . 's'; break; - case 'statistics' : + + case 'statistics': $name = 'statistics_'.time(); - $info = isset($obj->expression) ? $obj->expression : ""; + $infos['Name'] = $obj['name']; + $infos['Start date'] = $obj['startDate']; + $infos['Stop date'] = $obj['stopDate']; + $infos['Duration'] = $obj['durationDay'] . 'd ' . $obj['durationHour'] . 'h ' . $obj['durationMin'] . 'm ' . $obj['durationSec'] . 's'; + if(array_key_exists('expression', $obj)) { + $infos['Expression'] = $obj['expression']; + } + $params = []; + foreach ($obj['parameter'] as $param) { + $params[] = $param->function . '(' . $param->paramid . ')'; + } + if(count($params) == 1) { + $infos['Parameter'] = $params[0]; + } else { + $infos['Parameters'] = '<ul><li>' . join('</li><li>', $params) . '</li></ul>'; + } break; - case 'download' : - if ($obj->downloadSrc == '2') //fits image - $name = "download_fits_".time(); - else - $name = "download_data_".time(); - $info = ''; - foreach ($obj->list as $param) - { - if ($obj->downloadSrc == '2') //fits image - $info = $info.' '.$param->url; - else - $info = $info.' '.$param->name; //data + + case 'download': + $name = $obj['downloadSrc'] == '2' ? "download_fits_".time() : "download_data_".time(); + $params = []; + foreach ($obj['list'] as $param) { + $params[] = $param->paramid; + } + if(count($params) == 1) { + $infos['Parameter'] = $params[0]; + } else { + $infos['Parameters'] = join(', ', $params); } + $infos['Start date'] = $obj['startDate']; + $infos['Stop date'] = $obj['stopDate']; + $infos['Duration'] = $obj['durationDay'] . 'd ' . $obj['durationHour'] . 'h ' . $obj['durationMin'] . 'm ' . $obj['durationSec'] . 's'; break; - case 'request' : + + // Plot + case 'request': $name = "request_".time(); - $info = ''; - for ($i=0; $i < count($obj->children); $i++) { - for ($j=0; $j < count($obj->children[$i]->children); $j++) { - $info = $info.' '.$obj->children[$i]->children[$j]->name; + + $infos['Output'] = strtolower($obj['file-format']) . ' (' . strtolower($obj['file-output']) . ')'; + foreach ($obj['tabs'] as $tab) { + if($tab->id == $obj['last-plotted-tab']) { + $infos['Start date'] = $tab->startDate; + $infos['Stop date'] = $tab->stopDate; + $infos['Duration'] = $tab->durationDay . 'd ' . $tab->durationHour . 'h ' . $tab->durationMin . 'm ' . $tab->durationSec . 's'; + + $strPanels = []; + foreach ($tab->panels as $panel) { + $axes = []; + foreach ($panel->axes as $axe) { + $axes[] = $axe->id; + } + $params = []; + foreach ($panel->params as $param) { + $params[] = $param->paramid; + } + $strPanels[] = join(', ', $params) . ' (' . join(', ', $axes) . ')'; + } + + if(count($strPanels) == 1) { + $infos['Parameters'] = $strPanels[0]; + } else { + $infos['Panels'] = '<ul><li>' . join('</li><li>', $strPanels) . '</li></ul>'; + } + + continue; } } break; + default: $name = "unknown_".time(); - $info = ''; } + $infos['Started at'] = gmdate("Y-m-d\TH:i:s\Z", $start); - $newJob->setAttribute('name', $name); - $newJob->setAttribute('info', $info); + $strInfo = ''; + foreach ($infos as $key => $info) { + $strInfo .= '<b>' . $key . '</b>: ' . $info . '<br/>'; + } + $newJob = $this->jobXml->createElement('job'); + $newJob->setAttribute('xml:id', $id); + $newJob->setAttribute('jobType', $obj['nodeType']); + $newJob->setAttribute('name', $name); + $newJob->setAttribute('info', $strInfo); $newJob->setAttribute('folder', $folder); - $newJob->setAttribute('result', $result); - $newJob->setAttribute('start', date('d-m-Y H:i:s', $start)); - - $newJob->setAttribute('result', $result); - //to know if know if it's an immediate job or not $newJob->setAttribute('immediate', !$running); - $sendToSamp = isset($obj->sendToSamp) ? $obj->sendToSamp : FALSE; + $sendToSamp = isset($obj['sendToSamp']) ? $obj['sendToSamp'] : FALSE; if ($sendToSamp) { $newJob->setAttribute('sendToSamp', "true"); } + $key = $obj['nodeType']; if ($running) { - $rootJobNode = $this->jobXml->getElementById($this->bkgRootNode[$obj->nodeType]); + $rootJobNode = $this->jobXml->getElementById($this->bkgRootNode[$key]); if (!$rootJobNode) { - $key = $obj->nodeType; $rootJobNode = $this->jobXml->createElement("$key"); - $rootJobNode->setAttribute('xml:id', $this->bkgRootNode[$obj->nodeType]); + $rootJobNode->setAttribute('xml:id', $this->bkgRootNode[$key]); $jobsInProgress = $this->jobXml->getElementsByTagName('jobsInProgress')->item(0); $jobsInProgress->appendChild($rootJobNode); } } else { - $rootJobNode = $this->jobXml->getElementById($this->resRootNode[$obj->nodeType]); + $rootJobNode = $this->jobXml->getElementById($this->resRootNode[$key]); if (!$rootJobNode) { - $key = $obj->nodeType; $rootJobNode = $this->jobXml->createElement("$key"); - $rootJobNode->setAttribute('xml:id', $this->resRootNode[$obj->nodeType]); + $rootJobNode->setAttribute('xml:id', $this->resRootNode[$key]); $jobsFinished = $this->jobXml->getElementsByTagName('jobsFinished')->item(0); $jobsFinished->appendChild($rootJobNode); } -- libgit2 0.21.2