| {{ HTML::style('css/sharing.css') }} |
| <div class="container" style="max-width: 750px;"> |
| <!-- |
| @if(isset( $invalidExperimentId ) ) |
| <div class="alert alert-danger"> |
| The Experiment ID does not exist. Please go to correct experiment. |
| </div> |
| @else |
| --> |
| @if( Session::has("permissionDenied" ) ) |
| <div class="alert alert-danger"> |
| {{Session::forget("permissionDenied") }} |
| </div> |
| @else |
| <h1> |
| Experiment Summary |
| @if( !isset($dashboard)) |
| <small><a id="refresh-experiment" |
| title="Refresh"><span class="glyphicon glyphicon-refresh refresh-exp"></span></a></small> |
| <small><small>Enable Auto Refresh </small></small> |
| <div class="btn-group btn-toggle"> |
| @if($autoRefresh == true) |
| <button class="btn btn-xs btn-primary active">ON</button> |
| <button class="btn btn-xs btn-default">OFF</button> |
| @else |
| <button class="btn btn-xs btn-default">ON</button> |
| <button class="btn btn-xs btn-primary active">OFF</button> |
| @endif |
| </div> |
| @endif |
| </h1> |
| |
| |
| <table class="table table-bordered"> |
| <tr> |
| <td><strong>Experiment Id</strong></td> |
| <td><?php echo $experiment->experimentId; ?></td> |
| </tr> |
| <tr> |
| <td><strong>Name</strong></td> |
| <td><?php echo $experiment->experimentName; ?></td> |
| </tr> |
| <tr> |
| <td><strong>Description</strong></td> |
| <td><?php echo $experiment->description; ?></td> |
| </tr> |
| <tr> |
| <td><strong>Project</strong></td> |
| <td><?php echo $project->name; ?></td> |
| </tr> |
| <tr> |
| <td><strong>Owner</strong></td> |
| <td><?php echo $experiment->userName; ?></td> |
| </tr> |
| <tr> |
| <td><strong>Application</strong></td> |
| <td><?php if (!empty($expVal["applicationInterface"])) { |
| echo $expVal["applicationInterface"]->applicationName; |
| } ?></td> |
| </tr> |
| <tr> |
| <td><strong>Compute resource</strong></td> |
| <td><?php if (!empty($expVal["computeResource"])) { |
| echo $expVal["computeResource"]->hostName; |
| } ?></td> |
| </tr> |
| <tr> |
| <td><strong>Experiment Status</strong></td> |
| <td class="exp-status"><?php echo $expVal["experimentStatusString"]; ?></td> |
| </tr> |
| |
| @foreach( $expVal["jobDetails"] as $index => $jobDetail) |
| <tr> |
| <th>Job</th> |
| <td> |
| <table class="table table-bordered"> |
| <tr> |
| <td>Name</td> |
| <td>ID</td> |
| <td>Status</td> |
| <td>Creation Time</td> |
| </tr> |
| <tr> |
| <td>{{$jobDetail->jobName}}</td> |
| <td>{{ $jobDetail->jobId}}</td> |
| <td>{{$jobDetail->jobStatus->jobStateName }}</td> |
| <td class="time" unix-time="{{$jobDetail->creationTime}}"></td> |
| </tr> |
| </table> |
| </td> |
| </tr> |
| @endforeach |
| <!-- |
| @if( isset( $expVal["jobState"]) ) |
| <tr> |
| <td><strong>Job Status</strong></td> |
| <td>{{ $expVal["jobState"] }}</td> |
| </tr> |
| @endif |
| --> |
| |
| @if( isset($dashboard)) |
| <tr> |
| <td><strong>Working Dir</strong></td> |
| |
| <?php |
| foreach ($jobDetails as $job) echo ' |
| <td>' . $job->workingDir . '</td> |
| '; |
| ?> |
| </tr> |
| <tr> |
| <td><strong>Job Description</strong></td> |
| |
| <?php |
| foreach ($jobDetails as $job) echo ' |
| <td>' . nl2br($job->jobDescription) . '</td> |
| '; |
| ?> |
| </tr> |
| @endif |
| |
| <tr> |
| <td><strong>Creation time</strong></td> |
| <td class="time" unix-time="{{ $expVal["experimentCreationTime"] }}"></td> |
| </tr> |
| <tr> |
| <td><strong>Last Modified Time</strong></td> |
| <td class="time" unix-time="{{ $expVal["experimentTimeOfStateChange"] }}"></td> |
| </tr> |
| <tr> |
| <td><strong>Enable Auto Schedule</strong></td> |
| <td><?php echo $experiment->userConfigurationData->airavataAutoSchedule==1?"true":"false"; ?></td> |
| </tr> |
| <tr> |
| <td><strong>Wall time</strong></td> |
| <td>{{ $experiment->userConfigurationData->computationalResourceScheduling->wallTimeLimit }}</td> |
| </tr> |
| <tr> |
| <td><strong>CPU count</strong></td> |
| <td>{{ $experiment->userConfigurationData->computationalResourceScheduling->totalCPUCount }}</td> |
| </tr> |
| <tr> |
| <td><strong>Node count</strong></td> |
| <td>{{ $experiment->userConfigurationData->computationalResourceScheduling->nodeCount }}</td> |
| </tr> |
| <tr> |
| <td><strong>Queue</strong></td> |
| <td>{{ $experiment->userConfigurationData->computationalResourceScheduling->queueName }}</td> |
| </tr> |
| <tr> |
| <td><strong>Inputs</strong></td> |
| <td>{{ ExperimentUtilities::list_input_files($experiment->experimentInputs) }}</td> |
| </tr> |
| <tr> |
| <td><strong>Outputs</strong></td> |
| <td>{{ ExperimentUtilities::list_output_files($experiment->experimentOutputs, $experiment->experimentStatus->state, false) }}</td> |
| </tr> |
| <tr> |
| <td><strong>Storage Directory</strong></td> |
| <?php |
| if(0 === strpos($experiment->userConfigurationData->experimentDataDir, Config::get("pga_config.airavata")['experiment-data-absolute-path'])){ |
| $expDataDir = str_replace(Config::get("pga_config.airavata")['experiment-data-absolute-path'], "", $experiment->userConfigurationData->experimentDataDir); |
| }else{ |
| $expDataDir = $experiment->userConfigurationData->experimentDataDir; |
| } |
| ?> |
| <td><a href="{{URL::to('/')}}/files/browse?path={{$expDataDir}}" target="_blank">Open</a></td> |
| </tr> |
| <!-- an experiment is editable only when it has not failed. otherwise, show errors. --> |
| {{-- @if( $expVal["editable"] == false)--}} |
| <tr> |
| <td><strong>Errors</strong></td> |
| <td> |
| @if( $experiment->errors != null) |
| @foreach( (array)$experiment->errors as $error) |
| {{ $error->actualErrorMessage }} |
| @endforeach |
| @endif |
| </td> |
| </tr> |
| {{--@endif--}} |
| @foreach( $expVal["jobDetails"] as $index => $jobDetail) |
| @if($experiment->experimentStatus->state == \Airavata\Model\Status\ExperimentState::FAILED |
| || $jobDetail->jobStatus->jobStateName == "FAILED") |
| <tr> |
| <th>Job Submission Response</th> |
| <td>{{$jobDetail->stdOut . $jobDetail->stdErr}}</td> |
| </tr> |
| @endif |
| @endforeach |
| </table> |
| |
| <div class="form-group"> |
| @include('partials/sharing-display-body', array("form" => false)) |
| </div> |
| |
| @if( !isset( $dashboard)) |
| <form action="{{URL::to('/') }}/experiment/summary" method="post" role="form"> |
| <div class="btn-toolbar"> |
| <input name="launch" |
| type="submit" |
| class="btn btn-success" |
| value="Launch" |
| title="Launch the experiment" @if ( !$expVal["editable"]) style="display: none" @endif> |
| <a id="cancel_exp_link" href="{{URL::to('/') }}/experiment/cancel?expId={{ $experiment->experimentId }}" |
| class="btn btn-default" onclick="return confirm('Are you sure you want to cancel this experiment?')" |
| role="button" |
| title="Cancel experiment" @if (!$expVal["cancelable"]) style="display: none" @endif> |
| <input name="cancel" type="submit" class="btn btn-warning" |
| value="Cancel" <?php if (!$expVal["cancelable"]) echo 'disabled'; ?> > |
| </a> |
| <!-- <input name="clone"--> |
| <!-- type="submit"--> |
| <!-- class="btn btn-primary"--> |
| <!-- value="Clone"--> |
| <!-- title="Create a clone of the experiment. Cloning is the only way to change an experiment's settings--> |
| <!-- after it has been launched.">--> |
| <a href="{{URL::to('/') }}/experiment/clone?expId={{ $experiment->experimentId }}" |
| class="btn btn-primary" |
| role="button" |
| title="Create a clone of the experiment. Cloning is the only way to change an experiment's settings |
| after it has been launched." target="_blank"> |
| <span class="glyphicon glyphicon-pencil"></span> |
| Clone |
| </a> |
| <input type="hidden" name="expId" value="{{ Input::get('expId') }}"/> |
| <a href="{{URL::to('/') }}/experiment/edit?expId={{ $experiment->experimentId }}&savedExp=true" |
| class="btn btn-default" |
| role="button" |
| title="Edit experiment" <?php if (!$expVal["editable"]) echo 'style="display: none"' ?>> |
| <span class="glyphicon glyphicon-pencil"></span> |
| Edit |
| </a> |
| </div> |
| </form> |
| @endif |
| <input type="hidden" id="lastModifiedTime" value="{{ $expVal['experimentTimeOfStateChange'] }}"/> |
| |
| <!-- check of correct experiment Id ends here --> |
| @endif |
| |
| @endif |
| </div> |
| |
| @if( isset($dashboard)) |
| <h2 class="text-center">Detailed Experiment Information</h2> |
| <div class="tree"> |
| <ul> |
| <li> |
| <span><i class="icon-calendar"></i>{{ $detailedExperiment->experimentName }}</span> |
| <ul> |
| @foreach( $detailedExperiment->processes as $index => $process) |
| <li> |
| <span class="badge badge-success"><i class="icon-minus-sign"></i>Process - {{ $process->processId }}</span> |
| <ul> |
| <li> |
| <span class="alert"><i class="icon-time"></i> |
| <p>Inputs<br/> |
| {{ ExperimentUtilities::list_process_input_files( $process->processInputs) }}</p> |
| </span> |
| </li> |
| <li> |
| <span class="alert"><i class="icon-time"></i> |
| Tasks |
| </span> |
| |
| @foreach( $process->tasks as $task) |
| <dl class="well dl-horizontal"> |
| <dt>Task Id : </dt> <dd>{{ $task->taskId }}</dd> |
| <dt>Task Type : </dt> <dd>{{ $expVal["taskTypes"][$task->taskType] }}</dd> |
| <dt>Task Status : </dt> <dd>{{ $expVal["taskStates"][$task->taskStatus->state] }}</dd> |
| @if( is_object( $task->taskError)) |
| <dt>Task Error Id : </dt><dd>{{ $task->taskError->errorId }}</dd> |
| <dt>Task Error Msg : </dt><dd>{{ $task->taskError->userFriendlyMessage }} <a tabindex="0" class="popover-taskinfo btn btn-sm btn-default" role="button" data-toggle="popover" data-html="true" title="Detailed Task Information" data-content="{{ str_replace( ',', '<br/><br/>', $task->taskError->actualErrorMessage ) }}">More Info</a></dd> |
| @endif |
| @if( count( $task->jobs) > 0 ) |
| <dt>Jobs : </dt><dd>{{ count( $task->jobs)}}</dd> |
| @endif |
| @foreach( $task->jobs as $jobIndex => $job) |
| <dl class="well dl-horizontal"> |
| <dt>Job Id. :</dt> <dd>{{ $job->jobId }}</dd> |
| <dt>Job Name : </dt><dd>{{ $job->jobName }}</dd> |
| <dt>Job Description :</dt><dd>{{ $job->jobDescription }}</dd> |
| </dl> |
| @endforeach |
| </dl> |
| <hr/> |
| @endforeach |
| </li> |
| <li> |
| <span class="alert"><i class="icon-time"></i> |
| <p>Outputs<hr/> |
| {{ ExperimentUtilities::list_process_output_files( $process->processOutputs, $process->processStatus->state) }}</p> |
| </span> |
| </li> |
| </ul> |
| </li> |
| @endforeach |
| <li> |
| <span class="alert"><i class="icon-time"></i> |
| Errors : <br/> |
| @if( $detailedExperiment->errors != null) |
| @foreach( $detailedExperiment->errors as $error) |
| Error Id : {{ $error->errorId}}<br/> |
| Error Message : {{ $error->actualErrorMessage}} |
| @endforeach |
| @else |
| No errors |
| @endif |
| </span> |
| </li> |
| </ul> |
| </li> |
| |
| |
| </ul> |
| </div> |
| @endif |
| |
| @section('scripts') |
| @parent |
| {{ HTML::script('js/time-conversion.js')}} |
| <script> |
| var users = {{ $users }}; |
| </script> |
| {{ HTML::script('js/sharing/sharing_utils.js') }} |
| {{ HTML::script('js/sharing/share.js') }} |
| |
| @stop |