blob: 61948d4bf6cc698ac5d8fe6a29976d551dc95de2 [file] [log] [blame]
@if ($userHasComputeResourcePreference)
<div class="form-group">
<label class="control-label" for="use-user-cr-pref">
Use My Compute Resource Account
<input name="use-user-cr-pref" id="use-user-cr-pref" type="checkbox"
@if($useUserCRPref) checked @endif>
</label>
</div>
@endif
<input type="hidden" id="queue-array" value="{{ htmlentities( json_encode( $queues ) ) }}"/>
<input type="hidden" id="app-deployment-defaults-array" value="{{ htmlentities( json_encode( $appDeploymentDefaults ) ) }}"/>
<input type="hidden" id="queue-defaults-array" value="{{ htmlentities( json_encode( $queueDefaults ) ) }}"/>
<!-- Setting the node count we got from previous page to a hidden field for jquery -->
@if(isset($expVal['scheduling']->nodeCount))
<input type="hidden" id="passed-nodeCount" value="{{ $expVal['scheduling']->nodeCount }}"/>
@else
<input type="hidden" id="passed-nodeCount" value="0"/>
@endif
<!-- Setting the cpu count we got from previous page to a hidden field for jquery -->
@if(isset($expVal['scheduling']->totalCPUCount))
<input type="hidden" id="passed-cpuCount" value="{{ $expVal['scheduling']->totalCPUCount }}"/>
@else
<input type="hidden" id="passed-cpuCount" value="0"/>
@endif
<!-- Setting the wall time limit we got from previous page to a hidden field for jquery -->
@if(isset($expVal['scheduling']->wallTimeLimit))
<input type="hidden" id="passed-wallTime" value="{{ $expVal['scheduling']->wallTimeLimit }}"/>
@else
<input type="hidden" id="passed-wallTime" value="0"/>
@endif
<!-- Setting the physical memory we got from previous page to a hidden field for jquery -->
@if(isset($expVal['scheduling']->totalPhysicalMemory))
<input type="hidden" id="passed-physicalmem" value="{{ $expVal['scheduling']->totalPhysicalMemory }}"/>
@else
<input type="hidden" id="passed-physicalmem" value="0"/>
@endif
<div class="form-group required">
@if( count( $queues) > 0 )
<label class="control-label" for="node-count">Select a Queue</label>
<select name="queue-name" class="form-control" id="select-queue" @if(isset($expVal) ) @if(!$expVal['editable']){{
"disabled" }} @endif @endif required>
@foreach( $queues as $queue)
<option value="{{$queue->queueName}}"
@if(isset($expVal) )
@if( $expVal['scheduling']->queueName == $queue->queueName )
selected
@endif
@else
@if(isset($appDeploymentDefaults['queueName']) && $appDeploymentDefaults['queueName'] != null)
@if($appDeploymentDefaults['queueName'] == $queue->queueName)
selected
@endif
@else
@if( $queueDefaults['queueName'] == $queue->queueName )
selected
@endif
@endif
@endif
>
{{$queue->queueName}}
</option>
@endforeach
</select>
@else
<div class="alert alert-warning">
This resources has no queues available at the moment. Please contact the administrator.
</div>
@endif
</div>
<div class="queue-data">
<div class="form-group">
<label for="node-count">Node Count <span>( Max Allowed Nodes - <span
class="node-count alert-warning"></span>)</span></label>
<input type="number" class="form-control" name="node-count" id="node-count" min="1"
value="@if(isset($expVal) ){{ $expVal['scheduling']->nodeCount }}@else{{$queueDefaults['nodeCount']}}@endif"
required
@if(isset($expVal) ) @if(!$expVal['editable']) disabled @endif @endif>
</div>
<div class="form-group">
<label for="cpu-count">Total Core Count <span>( Max Allowed Cores - <span
class="cpu-count alert-warning"></span>)</span></label>
<input type="number" class="form-control" name="cpu-count" id="cpu-count" min="1"
value="@if(isset($expVal) ){{ $expVal['scheduling']->totalCPUCount }}@else{{$queueDefaults['cpuCount']}}@endif"
required
@if(isset($expVal)) @if(!$expVal['editable']) disabled @endif @endif>
</div>
<div class="form-group">
<label for="wall-time">Wall Time Limit <span>( Max Allowed Wall Time - <span
class="walltime-count alert-warning"></span>)</span></label>
<div class="input-group">
<input type="number" class="form-control" name="wall-time" id="wall-time" min="1"
value="@if(isset($expVal)){{$expVal['scheduling']->wallTimeLimit}}@else{{$queueDefaults['wallTimeLimit']}}@endif"
required
@if(isset($expVal)) @if(!$expVal['editable']) disabled @endif @endif>
<span class="input-group-addon">minutes</span>
</div>
</div>
<div class="form-group">
<label for="physical-memory">Total Physical Memory <span>( Max Allowed Memory - <span
class="memory-count alert-warning"></span>)</span></label>
<div class="input-group">
<input type="number" class="form-control" name="total-physical-memory" id="memory-count" min="0"
value="@if(isset($expVal) ){{ $expVal['scheduling']->totalPhysicalMemory }}@endif"
@if(isset($expVal)) @if(!$expVal['editable']) disabled @endif @endif>
<span class="input-group-addon">MB</span>
</div>
</div>
{{--<div class="form-group">--}}
{{--<label for="static-working-dir">Static Working Directory<span--}}
{{--class="static-working-dir alert-warning"></span></label>--}}
{{--<input type="text" class="form-control" name="static-working-dir" id="static-working-dir"--}}
{{--value="@if(isset($expVal) ){{ $expVal['scheduling']->staticWorkingDir }}@endif"--}}
{{--@if(isset($expVal)) @if(!$expVal['editable']) disabled @endif @endif>--}}
{{--</div>--}}
</div>
<script>
var experimentQueueBlockInit = function() {
//To work with experiment edit (Not Ajax)
$( document ).ready(function() {
var selectedQueue = $("#select-queue").val();
getQueueData(selectedQueue);
$("#select-queue").change(function () {
var selectedQueue = $("#select-queue").val();
getQueueData(selectedQueue);
});
});
$("#enable-auto-scheduling").change(function () {
var selectedQueue = $("#select-queue").val();
getQueueData(selectedQueue);
});
//Setting the file input view JS code
$( document ).ready(function() {
function readBlob(opt_startByte, opt_stopByte, fileId) {
var files = document.getElementById(fileId).files;
if (!files.length) {
alert('Please select a file!');
return;
}
var file = files[0];
var start = 0;
var stop = Math.min(512*1024,file.size - 1);
var reader = new FileReader();
// If we use onloadend, we need to check the readyState.
reader.onloadend = function(evt) {
if (evt.target.readyState == FileReader.DONE) { // DONE == 2
$('#byte_content').html(evt.target.result.replace(/(?:\r\n|\r|\n)/g, '<br />'));
$('#byte_range').html(
['Read bytes: ', start + 1, ' - ', stop + 1,
' of ', file.size, ' byte file'].join(''));
}
};
var blob = file.slice(start, stop + 1);
reader.readAsBinaryString(blob);
$('#input-file-view').modal('show');
}
$( ".readBytesButtons" ).click(function() {
var startByte = $(this).data('startbyte');
var endByte = $(this).data('endbyte');
var fileId = $(this).data('file-id');
readBlob(startByte, endByte, fileId);
});
});
// To work work with experiment create (Ajax)
var selectedQueue = $("#select-queue").val();
getQueueData(selectedQueue);
$("#select-queue").change(function () {
var selectedQueue = $(this).val();
getQueueData(selectedQueue);
});
$("#enable-auto-scheduling").change(function () {
var selectedQueue = $("#select-queue").val();
getQueueData(selectedQueue);
});
function getQueueData(selectedQueue) {
var queues = $.parseJSON($("#queue-array").val());
var queueDefaults = $.parseJSON($("#queue-defaults-array").val());
var appDefaults = $.parseJSON($("#app-deployment-defaults-array").val());
//getting the html values we set to hidden fields above!
var passedNodeCount = parseInt($("#passed-nodeCount").val());
var passedCpuCount = parseInt($('#passed-cpuCount').val());
var passedWallTime = parseInt($('#passed-wallTime').val());
var passedPhysicalMemory = parseInt($('#passed-physicalmem').val());
var veryLargeValue = 9999999;
console.log(queues);
$(".queue-view").addClass("hide");
for (var i = 0; i < queues.length; i++) {
if (queues[i]['queueName'] == selectedQueue) {
//node-count
if (queues[i]['maxNodes'] != 0 && queues[i]['maxNodes'] != null) {
if($('#enable-auto-scheduling').prop('checked')){
$("#node-count").attr("max", veryLargeValue);
}else{
$("#node-count").attr("max", queues[i]['maxNodes']);
}
$(".node-count").html(queues[i]['maxNodes']);
$(".node-count").parent().removeClass("hide");
}
else
$(".node-count").parent().addClass("hide");
if(appDefaults['nodeCount'] > 0){
$("#node-count").val(appDefaults['nodeCount']);
}else if(queues[i]['defaultNodeCount'] > 0){
$("#node-count").val(queues[i]['defaultNodeCount']);
}else{
$("#node-count").val(queueDefaults['nodeCount']);
}
// load previously set values on page load.
if(passedNodeCount!=0){
$("#node-count").val(passedNodeCount);
}
//core-count
if (queues[i]['maxProcessors'] != 0 && queues[i]['maxProcessors'] != null) {
if($('#enable-auto-scheduling').prop('checked')){
$("#cpu-count").attr("max", veryLargeValue);
}else {
$("#cpu-count").attr("max", queues[i]['maxProcessors']);
}
$(".cpu-count").html(queues[i]['maxProcessors']);
$(".cpu-count").parent().removeClass("hide");
}
else
$(".cpu-count").parent().addClass("hide");
if(appDefaults['cpuCount'] > 0){
$("#cpu-count").val(appDefaults['cpuCount']);
}else if(queues[i]['defaultCPUCount'] > 0){
$("#cpu-count").val(queues[i]['defaultCPUCount']);
}else{
$("#cpu-count").val(queueDefaults['cpuCount']);
}
// load previously set values on page load.
if(passedCpuCount!=0){
$("#cpu-count").val(passedCpuCount);
}
//walltime-count
if (queues[i]['maxRunTime'] != null && queues[i]['maxRunTime'] != 0) {
if($('#enable-auto-scheduling').prop('checked')){
$("#wall-time").attr("max", veryLargeValue);
}else {
$("#wall-time").attr("max", queues[i]['maxRunTime']);
}
$(".walltime-count").html(queues[i]['maxRunTime']);
$(".walltime-count").parent().removeClass("hide");
}
else
$(".walltime-count").parent().addClass("hide");
if(queues[i]['defaultWalltime'] > 0) {
$("#wall-time").val(queues[i]['defaultWalltime']);
}else{
$("#wall-time").val(queueDefaults['wallTimeLimit']);
}
// load previously set values on page load.
if(passedWallTime!=0){
$("#wall-time").val(passedWallTime);
}
//memory-count
if (queues[i]['maxMemory'] != 0 && queues[i]['maxMemory'] != null) {
if($('#enable-auto-scheduling').prop('checked')){
$("#memory-count").attr("max", veryLargeValue);
}else {
$("#memory-count").attr("max", queues[i]['maxMemory']).val(0);
}
$(".memory-count").html(queues[i]['maxMemory']);
$(".memory-count").parent().removeClass("hide");
}
else
$(".memory-count").parent().addClass("hide");
if(queues[i]['cpuPerNode'] > 0){
var cpusPerNode = queues[i]['cpuPerNode'];
}else{
var cpusPerNode = queueDefaults['cpusPerNode'];
}
// load previously set values on page load.
if(passedPhysicalMemory!=0){
$("#memory-count").val(passedPhysicalMemory);
}
var nodeCount=$("#node-count");
var cpuCount=$("#cpu-count");
cpuCount.keyup(function(){
var cpuCountVal = parseInt(cpuCount.val());
if(cpuCountVal > 0){
nodeCount.val(Math.ceil(cpuCountVal/cpusPerNode));
}
});
nodeCount.keyup(function(){
var nodeCountVal = parseInt(nodeCount.val());
if(nodeCountVal > 0){
cpuCount.val(nodeCountVal*cpusPerNode);
}
});
if(cpusPerNode > 0){
cpuCount.on('keyup');
nodeCount.on('keyup');
}else{
cpuCount.off('keyup');
nodeCount.off('keyup');
}
}
}
$(".queue-view").removeClass("hide");
}
}
// On initial load jQuery isn't loaded until later so wait until DOMContentLoaded
if (typeof $ === 'undefined') {
document.addEventListener("DOMContentLoaded", experimentQueueBlockInit);
} else {
experimentQueueBlockInit();
}
</script>