// GMRT OBSERVING SETUP AND COMMAND FILE CREATOR (V1.5)//
// snk @ gmrt 2022 //
// antenna list
var ant=["C00","C01","C02","C03","C04","C05","C06","C08","C09","C10","C11","C12","C13","C14","E02","E03","E04","E05","E06","S01","S02","S03","S04","S06","W01","W02","W03","W04","W05","W06"];
var tmpant=["C00","C01","C02","C03","C04","C05","C06","C08","C09","C10","C11","C12","C13","C14","E02","E03","E04","E05","E06","S01","S02","S03","S04","S06","W01","W02","W03","W04","W05","W06"];
var pcode=["A","A","B","C","D"];
var max_sub=4;
var max_beam=4;
var beam_host=["gwbh","gwbh07(1)","gwbh08(2)","gwbh09(3)","gwbh10(4)"];
var beam_host_id=[0,1,2,3,4];
var gwb_version="release";
var tot_time_warn=0;
var newlist;
var ncmd;
var total_weight;
var ddc_lo=[0,0,0,0,0];
var cal_val=["off","low","med","hig","ehi"];
var atn_val=["off","14dB","30dB","44dB"];
// add or remove rows for command/task file, enable disable row columns
$(document).ready(function($)
{
"use strict";
// copy row below
$(document).on('click',".btn_row_below_clone", function(e)
{
var row_num = $(this).parent().parent().index() ;
var r = $(this).closest('tr').clone();
$(this).closest('tr').after(r);
var table = document.getElementById("table2");
var rowCount = table.rows.length-1;
for(var i=1; i<=rowCount; i++) {
table.rows[i].cells[0].innerHTML=i;
}
$(this).closest('tr').next().find("td:eq(1)").find("select").val("--");
$(this).closest('tr').next().find("td:eq(2)").find("input").val("--");
$(this).closest('tr').next().find("td:eq(3)").find("input").val("--");
$(this).closest('tr').next().find("td:eq(4)").find("input").val("0");
});
// delete this row
$(document).on('click',".btn_row_delete", function(e)
{
var row_num = $(this).parent().parent().index();
if(row_num<2) { return(0); }
if(confirm("Do you want to delete this command")) {
var r = $(this).closest('tr').remove();
}
var table = document.getElementById("table2");
var rowCount = table.rows.length-1;
for(var i=1; i<=rowCount; i++) {
table.rows[i].cells[0].innerHTML=i;
}
});
// when clicked on command(task)
$(document).on('change',".btn_set", function(e)
{
var cmd = $(this).val();
// phase, flux, pol, target
$(this).closest('tr').find("td:eq(2)").find("input").val("--");
$(this).closest('tr').find("td:eq(3)").find("input").removeAttr("readonly");
$(this).closest('tr').find("td:eq(4)").find("input").removeAttr("readonly");
$(this).closest('tr').css("background-color","");
// cmd setup
if(cmd.match("setup")){
$(this).closest('tr').find("td:eq(3)").find("input").val("--");
$(this).closest('tr').find("td:eq(4)").find("input").val("15");
$(this).closest('tr').css("background-color","lightblue");
return(0);
}
// cmd loop_start, loop_stop
if(cmd.match(/loop/g)) {
if(cmd.match("loop_start")) {
$(this).closest('tr').find("td:eq(2)").find("input").val("2");
$(this).closest('tr').find("td:eq(3)").find("input").val("{");
$(this).closest('tr').find("td:eq(4)").find("input").val("0");
$(this).closest('tr').find("td:eq(3)").find("input").attr("readonly","readonly");
$(this).closest('tr').find("td:eq(4)").find("input").attr("readonly","readonly");
$(this).closest('tr').css("background-color","lightblue");
}
else {
$(this).closest('tr').find("td:eq(2)").find("input").val("--");
$(this).closest('tr').find("td:eq(3)").find("input").val("}");
$(this).closest('tr').find("td:eq(4)").find("input").val("0");
$(this).closest('tr').find("td:eq(3)").find("input").attr("readonly","readonly");
$(this).closest('tr').find("td:eq(4)").find("input").attr("readonly","readonly");
$(this).closest('tr').css("background-color","lightblue");
}
return(0);
}
// cmd power_eq
if(cmd.match("power_eq")){
$(this).closest('tr').find("td:eq(2)").find("input").val("100");
$(this).closest('tr').find("td:eq(4)").find("input").val("5");
return(0);
}
// cmd noise_cal
if(cmd.match("noise_cal")){
$(this).closest('tr').find("td:eq(2)").find("input").val("off");
$(this).closest('tr').find("td:eq(4)").find("input").val("1");
return(0);
}
// cmd solar_atn
if(cmd.match("solar_atn")){
$(this).closest('tr').find("td:eq(2)").find("input").val("off");
$(this).closest('tr').find("td:eq(4)").find("input").val("1");
return(0);
}
// cmd phasing
if(cmd.match("phasing")){
$(this).closest('tr').find("td:eq(2)").find("input").val("--");
$(this).closest('tr').find("td:eq(4)").find("input").val("5");
return(0);
}
// cmd position
if(cmd.match("position")){
$(this).closest('tr').find("td:eq(2)").find("input").val("--");
$(this).closest('tr').find("td:eq(4)").find("input").val("2");
return(0);
}
// cmd sleep
if(cmd.match("sleep")){
$(this).closest('tr').find("td:eq(2)").find("input").val("--");
$(this).closest('tr').find("td:eq(4)").find("input").val("2");
return(0);
}
});
// setup date input
$('#dtpicker1').datetimepicker({
dayOfWeekStart : 1,
format:'dMY H:00',
lang:'en',
startDate:currentDate
});
var currentDate = new Date();
$('#dtpicker1').datetimepicker({value:currentDate,step:60});
onload_init();
});
// onload default
function onload_init(){
"use strict";
// setup date input
//$('#dtpicker1').datetimepicker({
//dayOfWeekStart : 1,
//format:'dMY H:00',
//lang:'en',
//startDate:currentDate
//});
//var currentDate = new Date();
//$('#dtpicker1').datetimepicker({value:currentDate,step:60});
// setup all subarrays and all beams (html)
var i,j;
for(i=1;i<=4;i++) { // sub loop
document.getElementById('s'+i).innerHTML=add_sub(i,0);
for(j=1;j<=4;j++) { // beam loop
$('#t'+i).find("tr:last").after(add_beam(i,j));
}
}
// remove all antenna selection from subarrays and beams, set band "OFF" for all subarrays and set beam "OFF" for all beams
for(i=1;i<=4;i++) {
remove_sub_and_beam(i);
}
// hide all subarrays and beams (html)
for(i=1;i<=4;i++) { // sub loop
document.getElementById('s'+i).style.display="none";
document.getElementById('s'+i+'_bm').disabled=true;
document.getElementById('s'+i+'_bm').value=0;
document.getElementById('s'+i+'_bm0').style.display="none";
for(j=1;j<=4;j++) { // beam loop
document.getElementById('s'+i+'_bm'+j).style.display="none";
}
}
// set check buttons (default)
document.getElementById('type1').checked=1; // continuum
document.getElementById('type2').checked=0; // line
document.getElementById('type3').checked=0; // beam
// set main parameters (default)
document.getElementById('sub').value=1; // subarray
document.getElementById('bw').value=200; // bandwidth
document.getElementById('ch').value=2048; // channels
document.getElementById('st').value=2; // stokes
document.getElementById('rfi').value=0; // rfi
document.getElementById('pfb').value=0; // pfb
document.getElementById('gates').value=1; // gpu_gates
document.getElementById('sta_int').value=4; // sta cycles
// show first subarray
show_sub(1);
// set default frequency band for subarray 1
document.getElementById('s1_bnd').value="OFF";
setdefaultfreq(1);
// enable all antenna selection for subarray 1 and its beam 1
document.getElementById('s1_ant').value=tmpant;
document.getElementById('s1_bm1_ant').value=tmpant;
cnt_ant(1,0);
cnt_ant(1,1);
// default beam setup
document.getElementById('s1_bm1_mod').value="IA";
document.getElementById('s1_bm1_bit1').value=16;
document.getElementById('s1_bm1_bit2').value=16;
document.getElementById('s1_bm1_int').value=81;
document.getElementById('s1_bm1_st').value=1;
document.getElementById('s1_bm1_st').disabled=true;
check_beam(1,1,1);
setup_cl_commandfile();
//setup_beam_commandfile();
uploadfile("src");
uploadfile("obs");
}
// setup C/L sample command file
function setup_cl_commandfile(){
"use strict";
// setup command file for C/L
var table = document.getElementById("table2");
var rowCount = table.rows.length;
// remove rows
for(var i=rowCount; i>1; i--) {
var r=$("#table2").find("tr:eq("+i+")").remove();
}
// add 8 rows
for(var i=1; i<8;i++) {
var r=$("#table2").find("tr:eq("+i+")").clone();
$("#table2").find("tr:eq("+i+")").after(r);
}
// update index upto 8
for(var i=1; i<=8; i++) {
table.rows[i].cells[0].innerHTML=i;
}
// 1 setup
$("#table2").find("tr:eq(1)").find("td:eq(1)").find("select").val("setup");
$("#table2").find("tr:eq(1)").find("td:eq(2)").find("input").val("--");
$("#table2").find("tr:eq(1)").find("td:eq(2)").find("input").attr("readonly","readonly");
$("#table2").find("tr:eq(1)").find("td:eq(3)").find("input").val("--");
$("#table2").find("tr:eq(1)").find("td:eq(4)").find("input").val("20");
$("#table2").find("tr:eq(1)").css("background-color","lightblue");
// 2 flux_cal
$("#table2").find("tr:eq(2)").find("td:eq(1)").find("select").val("flux_cal");
$("#table2").find("tr:eq(2)").find("td:eq(2)").find("input").val("--");
$("#table2").find("tr:eq(2)").find("td:eq(2)").find("input").attr("readonly","readonly");
$("#table2").find("tr:eq(2)").find("td:eq(3)").find("input").val("3Cxx");
$("#table2").find("tr:eq(2)").find("td:eq(4)").find("input").val("10");
// 3 phase_cal
$("#table2").find("tr:eq(3)").find("td:eq(1)").find("select").val("phase_cal");
$("#table2").find("tr:eq(3)").find("td:eq(2)").find("input").val("--");
$("#table2").find("tr:eq(3)").find("td:eq(2)").find("input").attr("readonly","readonly");
$("#table2").find("tr:eq(3)").find("td:eq(3)").find("input").val("0837-xx");
$("#table2").find("tr:eq(3)").find("td:eq(4)").find("input").val("5");
// 4 loop_start
$("#table2").find("tr:eq(4)").find("td:eq(1)").find("select").val("loop_start");
$("#table2").find("tr:eq(4)").find("td:eq(2)").find("input").val("3");
$("#table2").find("tr:eq(4)").find("td:eq(2)").find("input").attr("readonly","readonly");
$("#table2").find("tr:eq(4)").find("td:eq(3)").find("input").val("{");
$("#table2").find("tr:eq(4)").find("td:eq(3)").find("input").attr("readonly","readonly");
$("#table2").find("tr:eq(4)").find("td:eq(4)").find("input").val("0");
$("#table2").find("tr:eq(4)").find("td:eq(4)").find("input").attr("readonly","readonly");
$("#table2").find("tr:eq(4)").css("background-color","lightblue");
// 5 target
$("#table2").find("tr:eq(5)").find("td:eq(1)").find("select").val("target");
$("#table2").find("tr:eq(5)").find("td:eq(2)").find("input").val("--");
$("#table2").find("tr:eq(5)").find("td:eq(2)").find("input").attr("readonly","readonly");
$("#table2").find("tr:eq(5)").find("td:eq(3)").find("input").val("NGCxx");
$("#table2").find("tr:eq(5)").find("td:eq(4)").find("input").val("30");
// 6 phase_cal
$("#table2").find("tr:eq(6)").find("td:eq(1)").find("select").val("phase_cal");
$("#table2").find("tr:eq(6)").find("td:eq(2)").find("input").val("--");
$("#table2").find("tr:eq(6)").find("td:eq(2)").find("input").attr("readonly","readonly");
$("#table2").find("tr:eq(6)").find("td:eq(3)").find("input").val("0837-xx");
$("#table2").find("tr:eq(6)").find("td:eq(4)").find("input").val("5");
// 7 loop_stop
$("#table2").find("tr:eq(7)").find("td:eq(1)").find("select").val("loop_stop");
$("#table2").find("tr:eq(7)").find("td:eq(2)").find("input").val("--");
$("#table2").find("tr:eq(7)").find("td:eq(2)").find("input").attr("readonly","readonly");
$("#table2").find("tr:eq(7)").find("td:eq(3)").find("input").val("}");
$("#table2").find("tr:eq(7)").find("td:eq(3)").find("input").attr("readonly","readonly");
$("#table2").find("tr:eq(7)").find("td:eq(4)").find("input").val("0");
$("#table2").find("tr:eq(7)").find("td:eq(4)").find("input").attr("readonly","readonly");
$("#table2").find("tr:eq(7)").css("background-color","lightblue");
// 8 flux_cal
$("#table2").find("tr:eq(8)").find("td:eq(1)").find("select").val("flux_cal");
$("#table2").find("tr:eq(8)").find("td:eq(2)").find("input").val("--");
$("#table2").find("tr:eq(8)").find("td:eq(2)").find("input").attr("readonly","readonly");
$("#table2").find("tr:eq(8)").find("td:eq(3)").find("input").val("3Cxx");
$("#table2").find("tr:eq(8)").find("td:eq(4)").find("input").val("10");
gettimeval();
}
// setup beam sample command file
function setup_beam_commandfile(){
"use strict";
// setup command file for beam
var table = document.getElementById("table2");
var rowCount = table.rows.length;
// remove rows
for(var i=rowCount; i>1; i--) {
var r=$("#table2").find("tr:eq("+i+")").remove();
}
// add 10 rows
for(var i=1; i<10;i++) {
var r=$("#table2").find("tr:eq("+i+")").clone();
$("#table2").find("tr:eq("+i+")").after(r);
}
// update index upto 10
for(var i=1; i<=10; i++) {
table.rows[i].cells[0].innerHTML=i;
}
// 1 setup
$("#table2").find("tr:eq(1)").find("td:eq(1)").find("select").val("setup");
$("#table2").find("tr:eq(1)").find("td:eq(2)").find("input").val("--");
$("#table2").find("tr:eq(1)").find("td:eq(2)").find("input").attr("readonly","readonly");
$("#table2").find("tr:eq(1)").find("td:eq(3)").find("input").val("--");
$("#table2").find("tr:eq(1)").find("td:eq(4)").find("input").val("20");
$("#table2").find("tr:eq(1)").css("background-color","lightblue");
// 2 power_eq
$("#table2").find("tr:eq(2)").find("td:eq(1)").find("select").val("power_eq");
$("#table2").find("tr:eq(2)").find("td:eq(2)").find("input").val("120");
$("#table2").find("tr:eq(2)").find("td:eq(2)").find("input").attr("readonly","readonly");
$("#table2").find("tr:eq(2)").find("td:eq(3)").find("input").val("3Cxx");
$("#table2").find("tr:eq(2)").find("td:eq(4)").find("input").val("5");
// 3 phasing
$("#table2").find("tr:eq(3)").find("td:eq(1)").find("select").val("phasing");
$("#table2").find("tr:eq(3)").find("td:eq(2)").find("input").val("--");
$("#table2").find("tr:eq(3)").find("td:eq(2)").find("input").attr("readonly","readonly");
$("#table2").find("tr:eq(3)").find("td:eq(3)").find("input").val("3Cxx");
$("#table2").find("tr:eq(3)").find("td:eq(4)").find("input").val("8");
// 4 target
$("#table2").find("tr:eq(4)").find("td:eq(1)").find("select").val("target");
$("#table2").find("tr:eq(4)").find("td:eq(2)").find("input").val("--");
$("#table2").find("tr:eq(4)").find("td:eq(2)").find("input").attr("readonly","readonly");
$("#table2").find("tr:eq(4)").find("td:eq(3)").find("input").val("PSRxx");
$("#table2").find("tr:eq(4)").find("td:eq(4)").find("input").val("30");
// 5 flux_cal
$("#table2").find("tr:eq(5)").find("td:eq(1)").find("select").val("flux_cal");
$("#table2").find("tr:eq(5)").find("td:eq(2)").find("input").val("--");
$("#table2").find("tr:eq(5)").find("td:eq(2)").find("input").attr("readonly","readonly");
$("#table2").find("tr:eq(5)").find("td:eq(3)").find("input").val("3Cxx");
$("#table2").find("tr:eq(5)").find("td:eq(4)").find("input").val("10");
// 6 loop_start
$("#table2").find("tr:eq(6)").find("td:eq(1)").find("select").val("loop_start");
$("#table2").find("tr:eq(6)").find("td:eq(2)").find("input").val("5");
$("#table2").find("tr:eq(6)").find("td:eq(2)").find("input").attr("readonly","readonly");
$("#table2").find("tr:eq(6)").find("td:eq(3)").find("input").val("{");
$("#table2").find("tr:eq(6)").find("td:eq(3)").find("input").attr("readonly","readonly");
$("#table2").find("tr:eq(6)").find("td:eq(4)").find("input").val("0");
$("#table2").find("tr:eq(6)").find("td:eq(4)").find("input").attr("readonly","readonly");
$("#table2").find("tr:eq(6)").css("background-color","lightblue");
// 7 phasing
$("#table2").find("tr:eq(7)").find("td:eq(1)").find("select").val("phasing");
$("#table2").find("tr:eq(7)").find("td:eq(2)").find("input").val("--");
$("#table2").find("tr:eq(7)").find("td:eq(2)").find("input").attr("readonly","readonly");
$("#table2").find("tr:eq(7)").find("td:eq(3)").find("input").val("3Cxx");
$("#table2").find("tr:eq(7)").find("td:eq(4)").find("input").val("8");
// 8 target
$("#table2").find("tr:eq(8)").find("td:eq(1)").find("select").val("target");
$("#table2").find("tr:eq(8)").find("td:eq(2)").find("input").val("--");
$("#table2").find("tr:eq(8)").find("td:eq(2)").find("input").attr("readonly","readonly");
$("#table2").find("tr:eq(8)").find("td:eq(3)").find("input").val("PSRxx");
$("#table2").find("tr:eq(8)").find("td:eq(4)").find("input").val("30");
// 9 loop_stop
$("#table2").find("tr:eq(9)").find("td:eq(1)").find("select").val("loop_stop");
$("#table2").find("tr:eq(9)").find("td:eq(2)").find("input").val("--");
$("#table2").find("tr:eq(9)").find("td:eq(2)").find("input").attr("readonly","readonly");
$("#table2").find("tr:eq(9)").find("td:eq(3)").find("input").val("}");
$("#table2").find("tr:eq(9)").find("td:eq(3)").find("input").attr("readonly","readonly");
$("#table2").find("tr:eq(9)").find("td:eq(4)").find("input").val("0");
$("#table2").find("tr:eq(9)").find("td:eq(4)").find("input").attr("readonly","readonly");
$("#table2").find("tr:eq(9)").css("background-color","lightblue");
// 10 flux_cal
$("#table2").find("tr:eq(10)").find("td:eq(1)").find("select").val("flux_cal");
$("#table2").find("tr:eq(10)").find("td:eq(2)").find("input").val("--");
$("#table2").find("tr:eq(10)").find("td:eq(2)").find("input").attr("readonly","readonly");
$("#table2").find("tr:eq(10)").find("td:eq(3)").find("input").val("3Cxx");
$("#table2").find("tr:eq(10)").find("td:eq(4)").find("input").val("10");
gettimeval();
}
// set default values for each band change
function setdefaultfreq(i){
"use strict";
// read band
var band=document.getElementById('s'+i+'_bnd').value;
var bw=document.getElementById("bw").value;
// for non selected band
if(band == "OFF"){
document.getElementById('s'+i+'_f1').value=0;
document.getElementById('s'+i+'_f2').value=0;
document.getElementById('s'+i+'_f3').value=0;
document.getElementById('s'+i+'_f4').value=0;
document.getElementById('s'+i+'_f5').value=1;
document.getElementById('s'+i+'_int').value=10.7;
return(0);
}
// set default frequencies for valid bands
document.getElementById('s'+i+'_f1').value=get_band_val(band,"f1");
document.getElementById('s'+i+'_f2').value=get_band_val(band,"f2");
document.getElementById('s'+i+'_f3').value=get_band_val(band,"f3");
document.getElementById('s'+i+'_f4').value=get_band_val(band,"f4");
document.getElementById('s'+i+'_f4').readOnly=true;
document.getElementById('s'+i+'_f4').style.backgroundColor="lightgreen";
document.getElementById('s'+i+'_f5').value=1;
// set default int
document.getElementById('s'+i+'_int').value=10.7;
var def_bw=get_band_val(band,"bw");
var band_name=get_band_val(band,"name");
if( bw != def_bw) {
var f1=get_band_val(band,"f1");
var f3=f1+(get_band_val(band,"net")*bw);
var f2=(f1+f3)/2;
document.getElementById('s'+i+'_f2').value=f2;
document.getElementById('s'+i+'_f3').value=f3;
alert("Warning: Default band width for "+band_name+" is " + def_bw + " MHz.!!");
}
return(0);
}
// check beofre download
function check_all(){
"use strict";
//user name
if( document.getElementById("user").value == "" ) {
alert( "Please provide User name" ); return(0);
}
//email id
if( document.getElementById("email").value == "" ) {
alert( "Please provide Email id" ); return(0);
}
// code
if( document.getElementById("code").value == "" ) {
alert( "Please provide GTAC code" ); return(0);
}
// title
if( document.getElementById("title").value == "" ) {
alert( "Please provide Project title" ); return(0);
}
// read project information
var user=document.getElementById("user").value;
var email=document.getElementById("email").value;
var code=document.getElementById("code").value;
var title=document.getElementById("title").value;
var time1=document.getElementById("dtpicker1").value;
var hh=document.getElementById("hh").value;
var type1=0;
var type2=0;
var type3=0;
if(document.getElementById('type1').checked) { type1=1; }
if(document.getElementById('type2').checked) { type2=1; }
if(document.getElementById('type3').checked) { type3=1; }
if( type1 == 0 && type2 == 0 && type3 == 0) {
alert( "Please select at least one Observing type" ); return(0);
}
// project info
var input="## GMRT OBSERVING SETUP AND COMMAND FILE (V1.5) ##\n\n";
input=input +"## !!! PLEASE DO NOT EDIT THIS FILE MANUALLY. IT MAY CAUSE ERRORS IN OBSERVATION !!! ##\n\n";
input=input+"{PROJECT_INFO\n";
input=input+"USER_NAME = "+user+"\n";
input=input+"EMAIL_ID = "+email+"\n";
input=input+"GTAC_CODE = "+code+"\n";
input=input+"PROJECT_TITLE = "+title+"\n";
input=input+"DATE_TIME = "+time1+" (IST)\n";
input=input+"SLOT_LENGTH = "+hh+" h\n";
input=input+"TYPE_CONTINUUM = "+type1+"\n";
input=input+"TYPE_LINE = "+type2+"\n";
input=input+"TYPE_PULSAR = "+type3+"\n";
input=input+"}\n\n";
var tot_subarray=document.getElementById("sub").value;
var bw=document.getElementById("bw").value;
var ch=document.getElementById("ch").value;
var res=document.getElementById("res").value;
var st=document.getElementById("st").value;
var sta=document.getElementById("sta_int").value;
var rfi=document.getElementById("rfi").value;
var pfb=document.getElementById("pfb").value;
var gates=document.getElementById("gates").value;
// receiver and backend setup
input=input+"{RECEIVER_AND_BACKEND_SETUP\n";
input=input+"GWB_VERSION = "+gwb_version+"\n";
input=input+"TOTAL_SUBARRAY = "+tot_subarray+"\n";
input=input+"BAND_WIDTH = "+bw+" MHz.\n";
input=input+"SPECTRAL_CHAN = "+ch+"\n";
input=input+"CHAN_RESOLUTION = "+res+" kHz.\n";
input=input+"STOKES = "+st+"\n";
input=input+"STA_INTEG = "+sta+"\n";
input=input+"REALTIME_RFI_FILTER = "+rfi+"\n";
input=input+"POLY_PHASE_FILTER = "+pfb+"\n";
input=input+"GPU_GATES = "+gates+"\n";
for(var i=1;i<=tot_subarray;i++) {
var ant_list=document.getElementById('s'+i+'_ant').value;
if(tot_subarray == 1 ) { var prj=document.getElementById('code').value; }
else { var prj=document.getElementById('code').value; prj=prj.toUpperCase();
if(prj.match("DDTC")) { prj=prj.slice(1); }
prj=prj+pcode[i];
}
var tot_ant=document.getElementById('s'+i+'_antno').innerHTML;
var band=document.getElementById('s'+i+'_bnd').value;
var f1=document.getElementById('s'+i+'_f1').value;
var f2=document.getElementById('s'+i+'_f2').value;
var f3=document.getElementById('s'+i+'_f3').value;
var f4=document.getElementById('s'+i+'_f4').value;
var f5=document.getElementById('s'+i+'_f5').value;
if(f5 == 1) { f5="default"; } else { f5 = "custom"; }
//var ddclo=Math.abs(f4-f1);
var band_flip="NO"; var net=1; if(f1 > f3) { band_flip="YES"; net=-1; }
var lta_int=document.getElementById('s'+i+'_int').value;
var walsh=document.getElementById('s'+i+'_wl').value;
var tot_beam=document.getElementById('s'+i+'_bm').value;
input=input+" {SUBARRAY_SETUP\n";
input=input+" SUBARRAY_NO = "+i+"\n";
input=input+" PROJECT = "+prj+"\n";
input=input+" TOTAL_ANTENNA = "+parseInt(tot_ant)+"\n";
input=input+" ANTENNA_LIST = "+ant_list+"\n";
input=input+" RF_BAND = "+get_band_val(band,'name')+"\n";
input=input+" START_FREQ = "+f1+" MHz. (0th chan)\n";
input=input+" CENTER_FREQ = "+f2+" MHz.\n";
input=input+" STOP_FREQ = "+f3+" MHz. (last chan)\n";
input=input+" GAB_LO = "+f4+" MHz. ("+f5+")\n";
input=input+" DDC_LO = "+ddc_lo[i]+" MHz.\n";
input=input+" BAND_FLIP = "+band_flip+"\n";
input=input+" LTA_INTEG = "+lta_int+ " sec\n";
input=input+" WALSH_MODU = "+walsh+ "\n";
input=input+" TOTAL_BEAM = "+tot_beam+ "\n";
for(var j=1;j<=tot_beam;j++) {
var beam_ant_list=document.getElementById('s'+i+'_bm'+j+'_ant').value;
var beam_tot_ant=document.getElementById('s'+i+'_bm'+j+'_antno').innerHTML;
var beam_id=document.getElementById('s'+i+'_bm'+j+'_id').innerHTML;
var beam_mod=document.getElementById('s'+i+'_bm'+j+'_mod').value;
var beam_bit1=document.getElementById('s'+i+'_bm'+j+'_bit1').value;
var beam_bit2=document.getElementById('s'+i+'_bm'+j+'_bit2').value;
var beam_int=document.getElementById('s'+i+'_bm'+j+'_int').value;
var beam_st=document.getElementById('s'+i+'_bm'+j+'_st').value;
var beam_ch=document.getElementById('s'+i+'_bm'+j+'_ch').value;
var beam_hst=document.getElementById('s'+i+'_bm'+j+'_hst').value;
var beam_dir=document.getElementById('s'+i+'_bm'+j+'_dir').value;
input=input+" {BEAM_SETUP\n";
input=input+" BEAM_NO = "+beam_id+"\n";
input=input+" BEAM_TOTAL_ANTENNA = "+parseInt(beam_tot_ant)+"\n";
input=input+" BEAM_ANTENNA_LIST = "+beam_ant_list+"\n";
input=input+" BEAM_MODE = "+beam_mod+"\n";
input=input+" BEAM_BIT1 = "+beam_bit1+" (beam data bit)\n";
input=input+" BEAM_BIT2 = "+beam_bit2+" (beam recording bit)\n";
input=input+" BEAM_INTEG = "+beam_int+" microsec\n";
input=input+" BEAM_STOKES = "+beam_st+"\n";
input=input+" BEAM_CHAN = "+beam_ch+"\n";
input=input+" BEAM_HOST = "+beam_host[beam_hst]+"\n";
input=input+" BEAM_DIR = "+beam_dir+"\n";
input=input+" }\n";
}
input=input+" }\n";
}
input=input+"}\n\n";
// read and check source list
var sourcelist=document.getElementById('sourcelist').value;
var co=sourcelist;
co=co.trim();
co=co.replace(/["]+/g, ' ');
co=co.replace(/[\n]+/g, 'newline');
co=encodeURIComponent(co);
$.ajax({
type: "POST",
url: "./cmd.php",
data: { 'arg': "src", 'para': co },
async: false,
success: function(data,status) {newlist=data; }
});
input=input+"{SOURCE_LIST\n";
input=input+"#Source Ra Dec Epoch Time(min) DM(pc cm^-3) Int Chan\n";
input=input+newlist;
input=input+"}\n\n";
input=input+"{COMMAND_FILE\n";
input=input+"#command(task) option source(target) time(min) time_line(tentative)\n";
//read command file
var rows = document.getElementById("table2").rows.length;
// read source list again
sourcelist=sourcelist.toUpperCase();
co=sourcelist.split(/\r\n|\n\r|\n|\r/);
co=removeElementsStartingWith(co,'#');
co=keepFirstWord(co);
// command loop
for (i=0;i<=(rows-2);i++){
var cmd=document.getElementsByName("command")[i].value;
if(cmd == "--" ) { alert("Please select the command # " + Math.abs(i+1) ); }
var option=document.getElementsByName("option")[i].value;
var target=document.getElementsByName("target")[i].value; target = target.replace(/\s+/g, ''); target = target.toUpperCase();
// check targets in the source list
if(!co.includes(target) && (cmd != "loop_start" && cmd != "loop_stop" && cmd != "setup" && cmd != "sleep")) {
alert("Error: The traget "+target+" not found in the source list"); return(0); }
var srctime=document.getElementsByName("srctime")[i].value;
var timeline=document.getElementsByName("timeline")[i].value;
input=input+cmd.padEnd(15,' ')+" "+option.padEnd(10,' ')+" "+target.padEnd(15,' ')+" "+srctime.padEnd(10,' ')+" "+timeline+"\n";
} // command loop end
input=input+"}\n\n";
// check total time
if(tot_time_warn > 0) { alert( "Total time exceeds the observing time by " + tot_time_warn + " minutes." ); return(0); }
// read special requirments
var spec_req=document.getElementById("spec_req").value;
if(spec_req == "") { spec_req = "#NA"; }
input=input+"{SPECIAL_REQUIREMENT\n";
input=input+spec_req+"\n";
input=input+"}\n\n";
//cmd=input.replace(/[\n]+/g, 'newline');
//cmd=input.replace(/["]+/g, ' ');
//cmd=encodeURIComponent(cmd);
//$.ajax({
// type: "POST",
// url: "./cmd.php",
// data: { 'arg': "cmd", 'para': cmd },
// async: false,
// success: function(data,status) {ncmd=data;}
// });
var date_time=new Date();
input=input+"## "+date_time+" ##\n\n";
//input=input+"{TGC_PYTHON_CODE\n";
//input=input+ncmd;
//input=input+"}\n\n";
// create file name
var file="gtac_"+code+"_"+time1+".txt";
file=file.replace(/[' ']+/g,'_');
file=file.replace(/[':']+/g,'');
// check freq para
if(check_freq(2)) { return(0);}
// check computing weight
check_weight();
if(total_weight > 115) { return(0);}
// download file
download(file,input);
return(true);
}
// download file
function download(filename, text) {
"use strict";
var element = document.createElement('a');
element.setAttribute('href', 'data:text/plain;charset=utf-8,' + encodeURIComponent(text));
element.setAttribute('download', filename);
element.style.display = 'none';
document.body.appendChild(element);
element.click();
document.body.removeChild(element);
}
// calculate center and stop freq when start or bw is changed
function getfreqval(i){
"use strict";
var bw=parseFloat(document.getElementById("bw").value);
var ch=parseInt(document.getElementById("ch").value);
document.getElementById("res").value=bw/ch*1000.0;
var net;
var sub;
var band;
var gablo;
var j;
if(i==0) { i=1; sub=parseInt(document.getElementById("sub").value); } // for all subarray (bw click)
else { sub =i ; } // for single subarray (line/gablo click)
for(var j=i;j<=sub;j++) {
band=document.getElementById("s"+j+"_bnd").value;
if(band == "OFF") { ; }
else {
// calculate net sign
net = -1;
if(get_band_val(band,"f2") > document.getElementById("s"+j+"_f4").value) { net = 1; }
gablo=parseFloat(document.getElementById("s"+j+"_f4").value);
if( bw > 50 ) {
document.getElementById("s"+j+"_f1").value=gablo;
document.getElementById("s"+j+"_f2").value=(gablo + (gablo+bw*net) )/2.0 ;
document.getElementById("s"+j+"_f3").value=gablo+bw*net;
}
else {
var line;
var ddclo;
var f1,f3,ff1,ff3;
line=parseFloat(document.getElementById("s"+j+"_f2").value);
f1=line-(bw/2)*net;
f3=line+(bw/2)*net;
ff1=gablo;
ff3=gablo+100*net;
//ddclo=Math.abs(ff1-f1);
if(net == -1) { ddclo = ff1-f1; }
if(net == 1 ) { ddclo = f1-ff1; }
if(ddclo < 0) {
alert("Warning: Not possible to tune the line at the center of the GWB band. You may set the custom GAB LO OR Contact to gmrtoperations@ncra.tifr.res.in");
//ddclo=0;
}
if((ddclo+bw) > 100 ) {
alert("Warning: Not possible to tune the line at the center of the GWB band. You may set the custom GAB LO OR Contact to gmrtoperations@ncra.tifr.res.in");
//ddclo=100-bw;
}
ddc_lo[j]=ddclo;
document.getElementById("s"+j+"_f1").value=line-(bw/2)*net;
document.getElementById("s"+j+"_f3").value=line+(bw/2)*net;
alert("Narrow band width (< 100) mode ON\n"+f1+" - "+f3+" = "+bw+" MHz.(bw)\n"+ff1+" - "+ff3+" = 100 MHz.(acq bw)\n DDC_LO = "+ddclo+" MHz.");
}
}
}// for loop
return(0);
}
// check frequency ranges
function check_freq(arg){
"use strict";
// check for all subarrays
var warn=0;
var sub=parseInt(document.getElementById("sub").value);
for(var i=1; i<=sub ;i++) {
var band=document.getElementById('s'+i+'_bnd').value;
var bw=parseFloat(document.getElementById("bw").value);
// check band ranges and gab lo
if(band != "OFF") {
var f1=parseFloat(document.getElementById('s'+i+'_f1').value);
var f2=parseFloat(document.getElementById('s'+i+'_f2').value);
var f3=parseFloat(document.getElementById('s'+i+'_f3').value);
var f4=parseFloat(document.getElementById('s'+i+'_f4').value);
//var ddclo=Math.abs(f4-f1);
var b1=get_band_val(band,"start");
var b2=get_band_val(band,"end");
if(f1 < b1 || f1 > b2 ) { alert("Warning: Sub-array "+i+": Start Frequency "+f1+" MHz is out of selected band range!! " + b1 + " - " + b2 + " MHz."); warn=1; }
if(f3 < b1 || f3 > b2 ) { alert("Warning: Sub-array "+i+": Stop Frequency "+f3+ "MHz is out of selected band range!! " + b1 + " - " + b2 + " MHz."); warn=1; }
if(f4 <= 0 ) { alert("Error: Sub-array "+i+": GAB LO is not set");return(1);}
if(ddc_lo[i] < 0 || ( (bw < 100) && (ddc_lo[i]+bw > 100))) { alert("Error: Sub-array "+i+": GAB LO / DDC LO is out of range, You may set the custom GAB LO OR Contact to gmrtoperations@ncra.tifr.res.in");return(1);}
}
// check if band is off
if(band == "OFF") {
alert("Error: Sub-array "+i+": Please select the valid RF band");
return(1);
}
}
if((arg ==1) && (warn == 0) ) { alert("Frequency configuration is OK"); }
return(0);
}
// get prediected time
function gettimeval(){
"use strict";
var i;
var time1=document.getElementById("dtpicker1").value;
var hh=document.getElementById("hh").value;
var tsec1=datetosec(time1);
var tsec2=tsec1+hh*3600;
var start_time=tsec1;
var end_time=0;
var rows = document.getElementById("table2").rows.length-1;
document.getElementById("time_slot").innerHTML="Time Slot (IST): " + time1 +" -- " + sectodate(tsec2) + " (" + hh + "h)" ;
// command loop
var flag=0;
var loop_time=0;
for (i=1;i<=rows;i++){
var cmd=document.getElementsByName("command")[i-1].value;
var target=document.getElementsByName("target")[i-1].value;
var srctime=document.getElementsByName("srctime")[i-1].value;
var obs_time=parseInt(srctime)*60;
if(cmd.match(/loop/g)){
if(cmd.match("loop_start")) {
flag=1;
loop_time=0;
var cycles=parseInt(document.getElementsByName("option")[i-1].value);
}
else {
flag=0;
obs_time=loop_time*cycles;
}
}
if(flag) { loop_time=loop_time+obs_time+oh_time(cmd);}
else { end_time=start_time+obs_time+oh_time(cmd); }
if(flag && !target.match("{") ) {
document.getElementsByName('timeline')[i-1].value="--:--" + " -- " + "--:--";
}
else {
if(target.match("{")) { document.getElementsByName('timeline')[i-1].value=sectodate(start_time) + " -- " + sectodate(end_time); }
else if(target.match("}")) { document.getElementsByName('timeline')[i-1].value=sectodate( end_time) + " -- " + sectodate(end_time); }
else { document.getElementsByName('timeline')[i-1].value=sectodate(start_time) + " -- " + sectodate(end_time); }
}
tot_time_warn=0;
if(end_time > tsec2) {
tot_time_warn=(end_time-tsec2)/60;
document.getElementsByName('timeline')[i-1].style.color="red";
}
else { document.getElementsByName('timeline')[i-1].style.color="black"; }
start_time=end_time;
} // command loop end
}
// convert date to seconds
function datetosec(date_time){
"use strict";
var t1=date_time.trim().replace(/[:]+/g,' ').split(/ +/);
var mon = new Array('Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec');
var d=t1[0].substr(0,2);
var m=t1[0].substr(2,3);
m=mon.indexOf(m);
var y=t1[0].substr(5,4);
var date=new Date();
date.setFullYear(y,m,d);
date.setHours(t1[1]);
date.setMinutes(t1[2]);
date.setSeconds(0);
var sec=parseInt(date.getTime()/1000);
return(sec);
}
// convert seconds to date
function sectodate(sec){
"use strict";
var date=new Date();
date.setTime(sec*1000);
var h=date.getHours();
var m=date.getMinutes();
h=('0' + h).slice(-2);
m=('0' + m).slice(-2);
return(h+":"+m);
}
// get overhead time between two scans
function oh_time(cmd){
"use strict";
if(cmd === "setup") { return(0); }
if(cmd === "phasing") { return(0); }
if(cmd === "position") { return(0); }
if(cmd === "sleep") { return(0); }
if(cmd.match(/loop/g)) { return(0); }
return(120);
}
// show the no of selected subarrays (div: s1,s2,s3,s4)
function show_sub(){
"use strict";
var sub=parseInt(document.getElementById("sub").value);
var i;
// disable remaining subarray
for(i=(sub+1); i<=4 ; i++) {
document.getElementById("s"+i).style.display="none"; // subarray table
remove_sub_and_beam(i); // remove sub and beams and their ants
}
// enable selected subarray
for(i=1; i<=sub ; i++) {
document.getElementById("s"+i).style.display='';
}
}
// subarrary html table (onload)
function add_sub(i,j) {
"use strict";
var s_id ='"s'+i+'"'; // subar - s1
var t_id ='"t'+i+'"'; // table - t1
var a_id ='"s'+i+'_ant"'; // antennas - s1_ant
var ano_id='"s'+i+'_antno"';// antennas - s1_antno
var b_id ='"s'+i+'_bnd"'; // band - s1_bnd
var f1_id ='"s'+i+'_f1"'; // f1 - s1_f1
var f2_id ='"s'+i+'_f2"'; // f2 - s1_f2
var f3_id ='"s'+i+'_f3"'; // f3 - s1_f3
var f4_id ='"s'+i+'_f4"'; // f4 - s1_f4
var f5_id ='"s'+i+'_f5"'; // f5 - s1_f5
var int_id='"s'+i+'_int"'; // int - s1_int
var wl_id ='"s'+i+'_wl"'; // int - s1_wl
var bm_id ='"s'+i+'_bm"'; // bm - s1_bm
var obj='
Sub-array ('+i+') Antennas | \
RF band/sub-band (MHz) | \
Start Freq (MHz) | \
Center Freq (MHz) | \
Stop Freq (MHz) | \
GAB LO Freq (MHz) | \
LTA Integ (sec) | \
Walsh (modu) | \
Beam (ON/OFF) | \
00 | \ \\ | \ \\ | \ | \ \ | \ \ \ | \ \\ | \\ | \ \\ | \
Beam Antennas | \Beam (N) Mode | \Beam Data | \Beam Record | \Beam Integ | \Beam Stokes | \Beam Chan | \Beam Host | \Beam Dir | \
00 | \ \Beam ()\ | \ \\ | \ \\ | \ \\ \ | \ \\ \ | \ \\ \ | \ \\ \ | \ \\ |
Antenna | "; for(i=0;i<=29;i++) { input=input+"" + ant[i] + " | "; } input=input+"Total | "; input=input+"|
Subarray ("+i+") | "; ant_list=document.getElementById('s'+i+'_ant').value; bit_list=ant2bit(ant_list); for(k=0;k<=29;k++) { if(bit_list[k] == 1) { input=input+""; } else { input=input+" | "; } } input=input+" | "+cnt_ant(i,0)+" | "; input=input+"
Beam ("+beam_id+") " + beam_mode + " | "; for(k=0;k<=29;k++) { if(bit_list[k] == 1) { input=input+""; } else { input=input+" | "; } } input=input+" | "+cnt_ant(i,j)+" | "; input=input+"