| @(parameters: metadata.ConditionalSampling2Var) |
| |
| @import helper._ |
| |
| <link rel="stylesheet" |
| href='@routes.Assets.at("stylesheets/livefitler.css")'> |
| |
| @scripts = { |
| <script src='@routes.Assets.at("javascripts/edit_button.js")'></script> |
| <script src='@routes.Assets.at("javascripts/livefilter.js")'></script> |
| <script type="text/javascript" src='@routes.Assets.at("javascripts/jquery-1.9.0.min.js")'></script> |
| <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/flot/0.8.3/jquery.flot.min.js"></script> |
| <script type="text/javascript" src='@routes.Assets.at("javascripts/json2.js")'></script> |
| <script type="text/javascript" src='@routes.Assets.at("javascripts/xmisc.js")'></script> |
| |
| <script type="text/javascript" src='@routes.Assets.at("html/js2/dataList2.js")'></script> |
| <script type="text/javascript" src='@routes.Assets.at("html/js2/varList.js")'></script> |
| <script type="text/javascript" src='@routes.Assets.at("html/js2/common.js")'></script> |
| |
| <script type="text/javascript"> |
| |
| var Response = null; |
| var variable1 = ""; |
| var variable2 = ""; |
| |
| var naValue = "-999999"; |
| |
| // called on load or reload |
| window.onload = function() { |
| put_data(1); |
| changeDataSource1(); |
| put_data(2); |
| changeDataSource2(); |
| put_data(3); |
| changeDataSource3(); |
| put_var(1); |
| changeVariableName1(); |
| put_var(2); |
| changeVariableName2(); |
| put_var(3); |
| changeVariableName3(); |
| |
| time_range3(); |
| fillMonth(); |
| |
| enable_download_button(); |
| |
| |
| |
| /* $('#pres1').val("N/A"); |
| $('#pres2').val("N/A"); |
| $('#pres3').val("N/A"); */ |
| disable_pres(1); |
| disable_pres(2); |
| disable_pres(3); |
| |
| $('#t0').val($('#startYearMonth').text()); |
| $('#t1').val($('#endYearMonth').text()); |
| |
| |
| var enviVariableChoose1 = $('#enChoose1'); |
| if(enviVariableChoose1 == "0"){ |
| $('#radioDef1').prop("checked", true); |
| $('#radioCus1').prop("checked", false); |
| }else{ |
| $('#radioDef1').prop("checked", false); |
| $('#radioCus1').prop("checked", true); |
| } |
| |
| var enviVariableChoose2 = $('#enChoose2'); |
| if(enviVariableChoose2 == "0"){ |
| $('#radioDef2').prop("checked", true); |
| $('#radioCus2').prop("checked", false); |
| }else{ |
| $('#radioDef2').prop("checked", false); |
| $('#radioCus2').prop("checked", true); |
| } |
| |
| var selectMonths = $('#selectMonths').text(); |
| $('#months option:contains('+selectMonths+')').prop({selected: true}); |
| /* select_months(); */ |
| select_monthsByPara(); |
| $('#lat0').val($('#startLat').text()); |
| $('#lat1').val($('#endLat').text()); |
| $('#lon0').val($('#startLon').text()); |
| $('#lon1').val($('#endLon').text()); |
| var x_axis = $('#div_X').text(); |
| if(x_axis == "0") { |
| $('#radioXLin').prop( "checked", true ); |
| $('#radioXLog').prop( "checked", false ); |
| } |
| else { |
| $('#radioXLin').prop( "checked", false ); |
| $('#radioXLog').prop( "checked", true ); |
| } |
| var y_axis = $('#div_Y').text(); |
| if(y_axis == "0") { |
| $('#radioYLin').prop( "checked", true ); |
| $('#radioYLog').prop( "checked", false ); |
| } |
| else { |
| $('#radioYLin').prop( "checked", false ); |
| $('#radioYLog').prop( "checked", true ); |
| } |
| var z_axis = $('#div_Z').text(); |
| if(z_axis == "0") { |
| $('#radioZLin').prop( "checked", true ); |
| $('#radioZLog').prop( "checked", false ); |
| } |
| else { |
| $('#radioZLin').prop( "checked", false ); |
| $('#radioZLog').prop( "checked", true ); |
| } |
| var binMin1 = $('#binMin1').text(); |
| var binMax1 = $('#binMax1').text(); |
| var binNum1 = $('#binNum1').text(); |
| if(binMin1 == "-999999" && binMax1 == "-999999" && binNum1=="-999999"){ |
| $('#radioDef1').prop( "checked", true ); |
| setDefault(1); |
| }else{ |
| $('#radioCus1').prop( "checked", true ); |
| $('#min1').val(binMin1); |
| $('#max1').val(binMax1); |
| $('#bins1').val(binNum1); |
| } |
| |
| var binMin2 = $('#binMin2').text(); |
| var binMax2 = $('#binMax2').text(); |
| var binNum2 = $('#binNum2').text(); |
| if(binMin2 == "-999999" && binMax2 == "-999999" && binNum2=="-999999"){ |
| $('#radioDef2').prop( "checked", true ); |
| setDefault(2); |
| }else{ |
| $('#radioCus2').prop( "checked", true ); |
| $('#min2').val(binMin2); |
| $('#max2').val(binMax2); |
| $('#bins2').val(binNum2); |
| } |
| |
| $('#purpose').html($('#executionPurpose').text()); |
| var imageUrl = $('#image').text(); |
| $('#Image').html('<img src="'+imageUrl+'" width=680 />'); |
| $('#data_url').html($('#dataURL').text()); |
| $('#Response').html($('serviceResponseText').text()); |
| |
| } |
| |
| function put_data(ID){ |
| var list1=document.getElementById("data"+ID); |
| |
| for(var key in dataList) { |
| if (key.slice(0,5)==="group") { |
| var og = document.createElement("OPTGROUP"); |
| og.setAttribute('label', dataList[key][0]); |
| list1.add(og); |
| } else { |
| og.appendChild(new Option(key,key)); |
| } |
| } |
| } |
| |
| function put_var(ID) { |
| var list1=document.getElementById("var"+ID); |
| for (var i=list1.length-1; i>=0; i--) { |
| list1.remove(i); |
| } |
| |
| data_string = document.getElementById("data"+ID).value; |
| var varList2 = dataList[data_string][1]; |
| for (var i=0; i<varList2.length; i++) { |
| var k = varList2[i]; |
| list1.add(new Option(varList[k][0],k)); |
| } |
| } |
| |
| function select_monthsByPara(){ |
| var monthsByPara = $('#monthsPara').text(); |
| console.log("HERE!!!!!!"+monthsByPara); |
| if(monthsByPara.search("jan")>-1){ |
| document.getElementById('Jan').checked = true; |
| } |
| if(monthsByPara.search("feb")>-1){ |
| document.getElementById('Feb').checked = true; |
| console.log("Feb!"); |
| } |
| if(monthsByPara.search("mar")>-1){ |
| document.getElementById('Mar').checked = true; |
| } |
| if(monthsByPara.search("apr")>-1){ |
| document.getElementById('Apr').checked = true; |
| } |
| if(monthsByPara.search("may")>-1){ |
| document.getElementById('May').checked = true; |
| } |
| if(monthsByPara.search("jun")>-1){ |
| document.getElementById('Jun').checked = true; |
| } |
| if(monthsByPara.search("jul")>-1){ |
| document.getElementById('Jul').checked = true; |
| } |
| if(monthsByPara.search("aug")>-1){ |
| document.getElementById('Aug').checked = true; |
| } |
| if(monthsByPara.search("sep")>-1){ |
| document.getElementById('Sep').checked = true; |
| } |
| if(monthsByPara.search("oct")>-1){ |
| document.getElementById('Oct').checked = true; |
| } |
| if(monthsByPara.search("nov")>-1){ |
| document.getElementById('Nov').checked = true; |
| } |
| if(monthsByPara.search("dec")>-1){ |
| document.getElementById('Dec').checked = true; |
| } |
| } |
| |
| // disable pressure level box for 2D var |
| function disable_pres(ID) |
| { |
| var x; |
| var var1 = $("#var"+ID).val(); |
| x=document.getElementById("pres"+ID); |
| if(x.value == "-999999,-999999" && ID == 1){ |
| x.value = "N/A"; |
| x.disabled=true; |
| }else if(x.value == "-999999" && (ID == 2 || ID == 3)){ |
| x.value = "N/A"; |
| x.disabled=true; |
| }else{ |
| if(ID == 1){ |
| var split12 = x.value.split(","); |
| var temp1 = split12[0]; |
| var temp2 = split12[1]; |
| // when variable is the 3D Ocean Salinity or Ocean Temperature |
| if ( var1 == 'ot' || var1 == 'os') { |
| temp1 = temp1 / 10000; // convert from dbar on GUI |
| temp2 = temp2 / 10000; // convert from dbar on GUI |
| } |
| // when variable2 is 3D atmosphere var |
| else { |
| temp1 = temp1 / 100; // convert from hPa on GUI |
| temp2 = temp2 / 100; // convert from hPa on GUI |
| } |
| x.value = temp1 + "," + temp2; |
| } |
| else{ |
| if ( var1 == 'ot' || var1 == 'os') { |
| x.value = x.value / 10000; // convert from dbar on GUI |
| } |
| // when variable2 is 3D atmosphere var |
| else { |
| x.value = x.value / 100; // convert from hPa on GUI |
| } |
| } |
| } |
| } |
| |
| // enable pressure level box for 3D var |
| function enable_pres1(ID) |
| { |
| var x; |
| x=document.getElementById("pres"+ID); |
| x.disabled=false; |
| } |
| |
| function changeDataSource1() { |
| var dataSource = $('#dataSourceP').text(); |
| |
| var x = document.getElementById("data1"); |
| |
| if(dataSource == "gfdl_esm2g" ){ |
| x.options[0].selected=true; |
| } |
| else if(dataSource == "giss_e2-h" ){ |
| x.options[1].selected=true; |
| } |
| else if(dataSource == "giss_e2-r" ){ |
| x.options[2].selected=true; |
| } |
| else if(dataSource == "ncar_cam5" ){ |
| x.options[3].selected=true; |
| } |
| else if(dataSource == "ncc_noresm" ){ |
| x.options[4].selected=true; |
| } |
| else if(dataSource == "ukmo_hadgem2-es" ){ |
| x.options[5].selected=true; |
| } |
| else if(dataSource == "cccma_canam4" ){ |
| x.options[6].selected=true; |
| } |
| else if(dataSource == "csiro_mk3.6" ){ |
| x.options[7].selected=true; |
| } |
| else if(dataSource == "gfdl_cm3" ){ |
| x.options[8].selected=true; |
| } |
| else if(dataSource == "ipsl_cm5a-lr" ){ |
| x.options[9].selected=true; |
| } |
| else if(dataSource == "miroc_miroc5" ){ |
| x.options[10].selected=true; |
| } |
| else if(dataSource == "ukmo_hadgem2-a" ){ |
| x.options[11].selected=true; |
| } |
| else if(dataSource == "nasa_grace" ){ |
| x.options[12].selected=true; |
| } |
| else if(dataSource == "nasa_modis" ){ |
| x.options[13].selected=true; |
| } |
| else if(dataSource == "nasa_amsre" ){ |
| x.options[14].selected=true; |
| } |
| else if(dataSource == "nasa_trmm" ){ |
| x.options[15].selected=true; |
| } |
| else if(dataSource == "nasa_gpcp" ){ |
| x.options[16].selected=true; |
| } |
| else if(dataSource == "nasa_quikscat" ){ |
| x.options[17].selected=true; |
| } |
| else if(dataSource == "nasa_aviso" ){ |
| x.options[18].selected=true; |
| } |
| else if(dataSource == "noaa_nodc" ){ |
| x.options[19].selected=true; |
| } |
| else if(dataSource == "nasa_ceres" ){ |
| x.options[20].selected=true; |
| } |
| else if(dataSource == "nasa_airs" ){ |
| x.options[21].selected=true; |
| } |
| else if(dataSource == "nasa_mls" ){ |
| x.options[22].selected=true; |
| } |
| else if(dataSource == "nasa_argo" ){ |
| x.options[23].selected=true; |
| } |
| else if(dataSource == "ecmwf_interim" ){ |
| x.options[24].selected=true; |
| } |
| } |
| |
| function changeDataSource2() { |
| var dataSource = $('#dataSourceE1').text(); |
| //dataSource = "NASA_QuikSCAT"; |
| var x = document.getElementById("data2"); |
| if(dataSource == "gfdl_esm2g" ){ |
| x.options[0].selected=true; |
| } |
| else if(dataSource == "giss_e2-h" ){ |
| x.options[1].selected=true; |
| } |
| else if(dataSource == "giss_e2-r" ){ |
| x.options[2].selected=true; |
| } |
| else if(dataSource == "ncar_cam5" ){ |
| x.options[3].selected=true; |
| } |
| else if(dataSource == "ncc_noresm" ){ |
| x.options[4].selected=true; |
| } |
| else if(dataSource == "ukmo_hadgem2-es" ){ |
| x.options[5].selected=true; |
| } |
| else if(dataSource == "cccma_canam4" ){ |
| x.options[6].selected=true; |
| } |
| else if(dataSource == "csiro_mk3.6" ){ |
| x.options[7].selected=true; |
| } |
| else if(dataSource == "gfdl_cm3" ){ |
| x.options[8].selected=true; |
| } |
| else if(dataSource == "ipsl_cm5a-lr" ){ |
| x.options[9].selected=true; |
| } |
| else if(dataSource == "miroc_miroc5" ){ |
| x.options[10].selected=true; |
| } |
| else if(dataSource == "ukmo_hadgem2-a" ){ |
| x.options[11].selected=true; |
| } |
| else if(dataSource == "nasa_grace" ){ ////////////////////////////////// |
| x.options[12].selected=true; |
| } |
| else if(dataSource == "nasa_modis" ){ |
| x.options[13].selected=true; |
| } |
| else if(dataSource == "nasa_amsre" ){ |
| x.options[14].selected=true; |
| } |
| else if(dataSource == "nasa_trmm" ){ |
| x.options[15].selected=true; |
| } |
| else if(dataSource == "nasa_gpcp" ){ |
| x.options[16].selected=true; |
| } |
| else if(dataSource == "nasa_quikscat" ){ |
| x.options[17].selected=true; |
| } |
| else if(dataSource == "nasa_aviso" ){ |
| x.options[18].selected=true; |
| } |
| else if(dataSource == "noaa_nodc" ){ |
| x.options[19].selected=true; |
| } |
| else if(dataSource == "nasa_ceres" ){ |
| x.options[20].selected=true; |
| } |
| else if(dataSource == "nasa_airs" ){ |
| x.options[21].selected=true; |
| } |
| else if(dataSource == "nasa_mls" ){ |
| x.options[22].selected=true; |
| } |
| else if(dataSource == "nasa_argo" ){ |
| x.options[23].selected=true; |
| } |
| else if(dataSource == "ecmwf_interim" ){ |
| x.options[24].selected=true; |
| } |
| } |
| |
| function changeDataSource3() { |
| var dataSource = $('#dataSourceE2').text(); |
| //dataSource = "NASA_QuikSCAT"; |
| var x = document.getElementById("data3"); |
| if(dataSource == "gfdl_esm2g" ){ |
| x.options[0].selected=true; |
| } |
| else if(dataSource == "giss_e2-h" ){ |
| x.options[1].selected=true; |
| } |
| else if(dataSource == "giss_e2-r" ){ |
| x.options[2].selected=true; |
| } |
| else if(dataSource == "ncar_cam5" ){ |
| x.options[3].selected=true; |
| } |
| else if(dataSource == "ncc_noresm" ){ |
| x.options[4].selected=true; |
| } |
| else if(dataSource == "ukmo_hadgem2-es" ){ |
| x.options[5].selected=true; |
| } |
| else if(dataSource == "cccma_canam4" ){ |
| x.options[6].selected=true; |
| } |
| else if(dataSource == "csiro_mk3.6" ){ |
| x.options[7].selected=true; |
| } |
| else if(dataSource == "gfdl_cm3" ){ |
| x.options[8].selected=true; |
| } |
| else if(dataSource == "ipsl_cm5a-lr" ){ |
| x.options[9].selected=true; |
| } |
| else if(dataSource == "miroc_miroc5" ){ |
| x.options[10].selected=true; |
| } |
| else if(dataSource == "ukmo_hadgem2-a" ){ |
| x.options[11].selected=true; |
| } |
| else if(dataSource == "nasa_grace" ){ ////////////////////////////////// |
| x.options[12].selected=true; |
| } |
| else if(dataSource == "nasa_modis" ){ |
| x.options[13].selected=true; |
| } |
| else if(dataSource == "nasa_amsre" ){ |
| x.options[14].selected=true; |
| } |
| else if(dataSource == "nasa_trmm" ){ |
| x.options[15].selected=true; |
| } |
| else if(dataSource == "nasa_gpcp" ){ |
| x.options[16].selected=true; |
| } |
| else if(dataSource == "nasa_quikscat" ){ |
| x.options[17].selected=true; |
| } |
| else if(dataSource == "nasa_aviso" ){ |
| x.options[18].selected=true; |
| } |
| else if(dataSource == "noaa_nodc" ){ |
| x.options[19].selected=true; |
| } |
| else if(dataSource == "nasa_ceres" ){ |
| x.options[20].selected=true; |
| } |
| else if(dataSource == "nasa_airs" ){ |
| x.options[21].selected=true; |
| } |
| else if(dataSource == "nasa_mls" ){ |
| x.options[22].selected=true; |
| } |
| else if(dataSource == "nasa_argo" ){ |
| x.options[23].selected=true; |
| } |
| else if(dataSource == "ecmwf_interim" ){ |
| x.options[24].selected=true; |
| } |
| } |
| |
| function changeVariableName1(){ |
| var var_string = $('#variableNameP').text(); |
| var data_string = $('#dataSourceP').text(); |
| data_string = data_string.replace("_", "/").toUpperCase(); |
| |
| |
| var varList2 = dataList[data_string][1]; |
| var x = document.getElementById("var1"); |
| |
| for (var i=0; i<varList2.length; i++) { |
| var k = varList2[i]; |
| |
| if (k == var_string) { |
| x.options[i].selected=true; |
| break; |
| } |
| } |
| } |
| |
| function changeVariableName2(){ |
| var var_string = $('#variableNameE1').text(); |
| var data_string = $('#dataSourceE1').text(); |
| data_string = data_string.replace("_", "/").toUpperCase(); |
| |
| |
| var varList2 = dataList[data_string][1]; |
| var x = document.getElementById("var2"); |
| |
| for (var i=0; i<varList2.length; i++) { |
| var k = varList2[i]; |
| |
| if (k == var_string) { |
| x.options[i].selected=true; |
| break; |
| } |
| } |
| } |
| |
| function changeVariableName3(){ |
| var var_string = $('#variableNameE2').text(); |
| var data_string = $('#dataSourceE2').text(); |
| data_string = data_string.replace("_", "/").toUpperCase(); |
| |
| |
| var varList2 = dataList[data_string][1]; |
| var x = document.getElementById("var3"); |
| |
| for (var i=0; i<varList2.length; i++) { |
| var k = varList2[i]; |
| |
| if (k == var_string) { |
| x.options[i].selected=true; |
| break; |
| } |
| } |
| } |
| |
| // select all months in the checkboxes |
| function select_all_months() |
| { |
| document.getElementById('Jan').checked = true; |
| document.getElementById('Feb').checked = true; |
| document.getElementById('Mar').checked = true; |
| document.getElementById('Apr').checked = true; |
| document.getElementById('May').checked = true; |
| document.getElementById('Jun').checked = true; |
| document.getElementById('Jul').checked = true; |
| document.getElementById('Aug').checked = true; |
| document.getElementById('Sep').checked = true; |
| document.getElementById('Oct').checked = true; |
| document.getElementById('Nov').checked = true; |
| document.getElementById('Dec').checked = true; |
| } |
| |
| // see if no month is selected |
| function no_month_check() |
| { |
| if (document.getElementById('Jan').checked == false && |
| document.getElementById('Feb').checked == false && |
| document.getElementById('Mar').checked == false && |
| document.getElementById('Apr').checked == false && |
| document.getElementById('May').checked == false && |
| document.getElementById('Jun').checked == false && |
| document.getElementById('Jul').checked == false && |
| document.getElementById('Aug').checked == false && |
| document.getElementById('Sep').checked == false && |
| document.getElementById('Oct').checked == false && |
| document.getElementById('Nov').checked == false && |
| document.getElementById('Dec').checked == false) { |
| // alert("No month check!"); |
| return true; |
| } |
| else |
| return false; |
| } |
| |
| // unselect all months in the checkboxes |
| function reset_months() |
| { |
| document.getElementById('Jan').checked = false; |
| document.getElementById('Feb').checked = false; |
| document.getElementById('Mar').checked = false; |
| document.getElementById('Apr').checked = false; |
| document.getElementById('May').checked = false; |
| document.getElementById('Jun').checked = false; |
| document.getElementById('Jul').checked = false; |
| document.getElementById('Aug').checked = false; |
| document.getElementById('Sep').checked = false; |
| document.getElementById('Oct').checked = false; |
| document.getElementById('Nov').checked = false; |
| document.getElementById('Dec').checked = false; |
| } |
| |
| // disable customized input text boxes |
| function setDefault(ID) |
| { |
| // alert("in setDefault() ... "); |
| var x=document.getElementById("min"+ID); |
| var y=document.getElementById("max"+ID); |
| var z=document.getElementById("bins"+ID); |
| x.value = "N/A"; |
| x.disabled=true; |
| y.value = "N/A"; |
| y.disabled=true; |
| z.value = "N/A"; |
| z.disabled=true; |
| } |
| |
| // enable customized input text boxes |
| function setCustomized(ID) |
| { |
| // alert("in setCustomized() ... "); |
| var x=document.getElementById("min"+ID); |
| var y=document.getElementById("max"+ID); |
| var z=document.getElementById("bins"+ID); |
| x.value = ""; |
| x.disabled=false; |
| y.value = ""; |
| y.disabled=false; |
| z.value = ""; |
| z.disabled=false; |
| } |
| |
| // getMonthStr__ |
| function getMonthStr() { |
| // get months checked by client |
| var month_str = ""; |
| for (var i=0; i<monthList.length; i++) { |
| var mm = document.getElementById(monthList[i]); |
| if (mm.checked == true) { |
| month_str += ","+(i+1); |
| } |
| } |
| month_str = month_str.substr(1); |
| return month_str; |
| } |
| |
| $(document).ready(function(){ |
| |
| $("#download_data").click(function(event) { |
| var durl = $("#data_url").val(); |
| // alert(durl); |
| window.location.assign(durl); |
| }); |
| |
| |
| $("#conditionalSamp").click(function(event) { |
| // alert('****** inside conditionalSamp()!'); |
| Response = null; |
| |
| // no data to download yet |
| disable_download_button(); |
| |
| // flag error if no month box is checked |
| if (no_month_check()) { |
| // $("#Response").html("<span style='color:red'>Error: please check at least one month.</span>"); |
| $("#Response").html("Error: please check at least one month."); |
| $("#Image").html(""); |
| return; |
| } |
| |
| $("#Response").html("Calculating ..."); |
| $("#data_url").html("Calculating ..."); |
| $("#Image").html(""); |
| |
| // sample url: http://cmacws.jpl.nasa.gov:8090/svc/conditionalSampling?model1=ukmo_hadgem2-a&var1=ts&pres1=200&model2=ukmo_hadgem2-a&var2=clt&pres2=200&start_time=199001&end_time=199512&lon1=0&lon2=100&lat1=-29&lat2=29 |
| // form url string |
| // var url = "http://cmacws.jpl.nasa.gov:8090/svc/conditionalSamp?"; |
| var url = "http://" + window.location.hostname + ":9002/svc/conditionalSampling2Var?"; |
| // alert("url: " + url); |
| |
| var d1 = $("#data1").val(); |
| var model1 = d1.replace("/", "_"); |
| model1 = model1.toLowerCase(); |
| |
| var arglist = ""; |
| arglist = arglist.concat("model1="); |
| arglist = arglist.concat(model1); |
| |
| // alert("arglist: " + arglist); |
| |
| var variable1 = $("#var1").val(); |
| arglist = arglist.concat("&var1="); |
| arglist = arglist.concat(variable1); |
| |
| // alert("arglist: " + arglist); |
| |
| |
| var t0 = $("#t0").val(); |
| var t1 = $("#t1").val(); |
| |
| t0 = t0.replace("-", ""); |
| t1 = t1.replace("-", ""); |
| |
| arglist = arglist.concat("&start_time="); |
| arglist = arglist.concat(t0); |
| |
| arglist = arglist.concat("&end_time="); |
| arglist = arglist.concat(t1); |
| |
| var lon0 = $("#lon0").val(); |
| var lon1 = $("#lon1").val(); |
| var lat0 = $("#lat0").val(); |
| var lat1 = $("#lat1").val(); |
| |
| arglist = arglist.concat("&lon1="); |
| arglist = arglist.concat(lon0); |
| |
| arglist = arglist.concat("&lon2="); |
| arglist = arglist.concat(lon1); |
| |
| arglist = arglist.concat("&lat1="); |
| arglist = arglist.concat(lat0); |
| |
| arglist = arglist.concat("&lat2="); |
| arglist = arglist.concat(lat1); |
| |
| // alert("arglist: " + arglist); |
| |
| var press_range = $("#pres1").val(); |
| // alert("press_range: " + press_range); |
| |
| var pres12 = parse_pres(press_range); |
| |
| var pres1; |
| var pres2; |
| if (pres12 === naValue) { |
| pres1 = naValue; |
| pres2 = naValue; |
| } else { |
| split12 = pres12.split(","); |
| if (split12.length != 2) { |
| alert("pressure level range needs to be two values separated by comma."); |
| return; |
| } else { |
| pres1 = split12[0]; |
| pres2 = split12[1]; |
| |
| // when variable is the 3D Ocean Salinity or Ocean Temperature |
| if (variable1 == 'ot' || variable1 == 'os') { |
| pres1 = pres1 * 10000; // convert from dbar on GUI |
| pres2 = pres2 * 10000; // convert from dbar on GUI |
| } |
| // when variable2 is 3D atmosphere var |
| else { |
| pres1 = pres1 * 100; // convert from hPa on GUI |
| pres2 = pres2 * 100; // convert from hPa on GUI |
| } |
| } |
| } |
| //alert("pres1, pres2: " + pres1 + ", " + pres2); |
| |
| arglist = arglist.concat("&pres1="); |
| arglist = arglist.concat(pres1); |
| arglist = arglist.concat("&pres2="); |
| arglist = arglist.concat(pres2); |
| |
| // alert("arglist: " + arglist); |
| |
| var month_str = getMonthStr(); |
| arglist = arglist.concat("&months="); |
| arglist = arglist.concat(month_str); |
| |
| // alert("arglist: " + arglist); |
| |
| |
| var d2 = $("#data2").val(); |
| var model2 = d2.replace("/", "_"); |
| model2 = model2.toLowerCase(); |
| |
| arglist = arglist.concat("&model2="); |
| arglist = arglist.concat(model2); |
| |
| // alert("arglist: " + arglist); |
| |
| var variable2 = $("#var2").val(); |
| arglist = arglist.concat("&var2="); |
| arglist = arglist.concat(variable2); |
| |
| var d3 = $("#data3").val(); |
| var model3 = d3.replace("/", "_"); |
| model3 = model3.toLowerCase(); |
| |
| arglist = arglist.concat("&model3="); |
| arglist = arglist.concat(model3); |
| |
| // alert("arglist: " + arglist); |
| |
| var variable3 = $("#var3").val(); |
| arglist = arglist.concat("&var3="); |
| arglist = arglist.concat(variable3); |
| |
| // alert("arglist: " + arglist); |
| |
| var plev1 = $("#pres2").val(); |
| plev1 = parse_pres(plev1); |
| |
| if (plev1>0) { |
| // when variable is the 3D Ocean Salinity or Ocean Temperature |
| if (variable2 == 'ot' || variable2 == 'os') { |
| plev1 = plev1 * 10000; // convert from dbar on GUI |
| } |
| // when variable2 is 3D atmosphere var |
| else { |
| plev1 = plev1 * 100; // convert from hPa on GUI |
| } |
| } |
| |
| arglist = arglist.concat("&env_var_plev1="); |
| arglist = arglist.concat(plev1); |
| |
| var plev2 = $("#pres3").val(); |
| plev2 = parse_pres(plev2); |
| if (plev2>0) { |
| // when variable is the 3D Ocean Salinity or Ocean Temperature |
| if (variable3 == 'ot' || variable3 == 'os') { |
| plev2 = plev2 * 10000; // convert from dbar on GUI |
| } |
| // when variable2 is 3D atmosphere var |
| else { |
| plev2 = plev2 * 100; // convert from hPa on GUI |
| } |
| } |
| |
| arglist = arglist.concat("&env_var_plev2="); |
| arglist = arglist.concat(plev2); |
| |
| // alert("arglist: " + arglist); |
| |
| var binstate1 = document.getElementById('radioDef1').checked; |
| |
| var binMin1, binMax1, numBins1; |
| |
| if (binstate1 == true) { // default |
| binMin1 = naValue; |
| binMax1 = naValue; |
| numBins1 = naValue; |
| } |
| else { // customized |
| binMin1 = $("#min1").val(); |
| binMax1 = $("#max1").val(); |
| numBins1 = $("#bins1").val(); |
| } |
| |
| arglist = arglist.concat("&bin_min1="); |
| arglist = arglist.concat(binMin1); |
| arglist = arglist.concat("&bin_max1="); |
| arglist = arglist.concat(binMax1); |
| arglist = arglist.concat("&bin_n1="); |
| arglist = arglist.concat(numBins1); |
| |
| var binstate2 = document.getElementById('radioDef2').checked; |
| |
| var binMin2, binMax2, numBins2; |
| |
| if (binstate2 == true) { // default |
| binMin2 = naValue; |
| binMax2 = naValue; |
| numBins2 = naValue; |
| } |
| else { // customized |
| binMin2 = $("#min2").val(); |
| binMax2 = $("#max2").val(); |
| numBins2 = $("#bins2").val(); |
| } |
| |
| arglist = arglist.concat("&bin_min2="); |
| arglist = arglist.concat(binMin2); |
| arglist = arglist.concat("&bin_max2="); |
| arglist = arglist.concat(binMax2); |
| arglist = arglist.concat("&bin_n2="); |
| arglist = arglist.concat(numBins2); |
| |
| // alert("arglist: " + arglist); |
| |
| var xstate = document.getElementById('radioXLin').checked; |
| var xvalue; |
| |
| if (xstate == true) |
| xvalue = 0; |
| else |
| xvalue = 1; |
| |
| // alert("xvalue: " + xvalue); |
| |
| var ystate = document.getElementById('radioYLin').checked; |
| var yvalue; |
| |
| if (ystate == true) |
| yvalue = 0; |
| else |
| yvalue = 1; |
| |
| // alert("yvalue: " + yvalue); |
| |
| var zstate = document.getElementById('radioZLin').checked; |
| var zvalue; |
| |
| if (zstate == true) |
| zvalue = 0; |
| else |
| zvalue = 1; |
| |
| // alert("zvalue: " + zvalue); |
| |
| var dispOpt; |
| dispOpt = xvalue*1 + yvalue*2 + zvalue*4; |
| // alert("dispOpt: " + dispOpt); |
| var dispOptString = dispOpt.toString(); |
| |
| arglist = arglist.concat("&displayOpt="); |
| arglist = arglist.concat(dispOptString); |
| |
| // alert("arglist: " + arglist); |
| |
| // url = url + encodeURIComponent(arglist); |
| url = url + encodeURI(arglist); |
| // url = url + arglist; |
| // alert("url: " + url); |
| |
| var urlTimeBounds = "http://" + window.location.hostname + ":9002/svc/two_time_bounds?"; |
| var arglistTB = ""; |
| arglistTB = arglistTB.concat("serviceType="); |
| arglistTB = arglistTB.concat("1"); |
| arglistTB = arglistTB.concat("&source1="); |
| arglistTB = arglistTB.concat(d1); |
| arglistTB = arglistTB.concat("&var1="); |
| arglistTB = arglistTB.concat(variable1); |
| arglistTB = arglistTB.concat("&source2="); |
| arglistTB = arglistTB.concat(d2); |
| arglistTB = arglistTB.concat("&var2="); |
| arglistTB = arglistTB.concat(variable2); |
| urlTimeBounds = urlTimeBounds + encodeURI(arglistTB); |
| // alert("urlTimeBounds: " + urlTimeBounds); |
| |
| $.ajax({ |
| type: "GET", |
| url: urlTimeBounds, |
| dataType: "json", |
| data: null, |
| success: function(data, textStatus, xhr) { |
| Response = data; |
| // alert("data: " + data); |
| if (data.success == false) { |
| // alert(data.error); |
| Response = null; |
| var text = JSON.stringify(data, null, 4); |
| text = "Error in backend: <br>" + text; |
| $("#Response").html(text); |
| $("#data_url").html(text); |
| return; |
| } |
| var text = JSON.stringify(data, null, 4); |
| // alert("text: " + text); |
| // $("#Response").html("<pre>"+text+"</pre>"); |
| // $("#Response").html(text); |
| |
| var tb1 = data.time_bounds1; |
| var bds1 = String(tb1).split(","); |
| // alert("tb1: " + tb1); |
| // alert("bds1: " + bds1); |
| var lowerT1 = parseInt(bds1[0]); |
| // alert("inside ajax, lowerT1: " + lowerT1); |
| var upperT1 = parseInt(bds1[1]); |
| // alert("upperT1: " + upperT1); |
| |
| var tb2 = data.time_bounds2; |
| var bds2 = String(tb2).split(","); |
| // alert("tb2: " + tb2); |
| // alert("bds2: " + bds2); |
| var lowerT2 = parseInt(bds2[0]); |
| // alert("inside ajax, lowerT2: " + lowerT2); |
| var upperT2 = parseInt(bds2[1]); |
| // alert("upperT2: " + upperT2); |
| |
| var t0I = parseInt(t0); |
| var t1I = parseInt(t1); |
| // alert("t0: " + t0I); |
| // alert("t1: " + t1I); |
| |
| var lowerT, upperT; |
| // compute the intersection of the two data bounds |
| |
| if (lowerT1 == 0 || upperT1 == 0){ // no data-1 |
| alert("We do not have data for the data-1 source and variable configuration."); |
| return; |
| } |
| else if (lowerT2 == 0 || upperT2 == 0){ // no data-2 |
| alert("We do not have data for the data-2 source and variable configuration."); |
| return; |
| } |
| else if (lowerT2 > upperT1 || lowerT1 > upperT2) { // no intersection |
| alert("The two data sets/vars do not have a common time range."); |
| return; |
| } |
| else { // compute intersection |
| if (lowerT1 > lowerT2) { // pick bigger lower time bound |
| lowerT = lowerT1; |
| } |
| else { |
| lowerT = lowerT2; |
| } |
| |
| if (upperT1 > upperT2) { // pick smaller upper time bound |
| upperT = upperT2; |
| } |
| else { |
| upperT = upperT1; |
| } |
| } |
| // alert("lowerT: " + lowerT); |
| // alert("upperT: " + upperT); |
| |
| if (t0I < lowerT && t1I < lowerT || |
| t0I > upperT && t1I > upperT) { |
| alert("We do not have data that span your time range. Try the range inside ["+lowerT+", "+upperT+"]."); |
| return; |
| } |
| |
| if (t0I < lowerT && t1I <= upperT) { |
| alert("Your start year-month is out of bound. It has to be in or later than " + lowerT + |
| ". We will use the range ["+lowerT+", "+t1I+"] for you."); |
| } |
| |
| if (t1I > upperT && t0I >= lowerT) { |
| alert("Your end year-month is out of bound. It has to be in or earlier than " + upperT + |
| ". We will use the range ["+t0I+", "+upperT+"] for you."); |
| } |
| |
| if (t0I < lowerT && t1I > upperT ) { |
| alert("Both of your start and end year-months are out of bounds. They have to be in or earlier than " + upperT + |
| ", and in or later than " + lowerT + ". We will use the range ["+lowerT+", "+upperT+"] for you."); |
| } |
| }, |
| error: function(xhr, textStatus, errorThrown) { |
| $("#Response").html("error!"); |
| $("#data_url").html("error!"); |
| // alert("xhr.status: "+xhr.status); |
| // alert("error status: "+textStatus); |
| }, |
| complete: function(xhr, textStatus) { |
| //alert("complete status: "+textStatus); |
| } |
| }); |
| |
| |
| $.ajax({ |
| type: "GET", |
| url: url, |
| dataType: "json", |
| data: null, |
| success: function(data, textStatus, xhr) { |
| Response = data; |
| // alert("data: " + data); |
| if (data.success == false) { |
| // alert(data.error); |
| Response = null; |
| var text = JSON.stringify(data, null, 4); |
| text = "Error in backend: <br>" + text; |
| // $("#Response").html("<span style='color:red'>" + text + "</span>"); |
| $("#Response").html(text); |
| $("#data_url").html(text); |
| return; |
| } |
| var text = JSON.stringify(data, null, 4); |
| // alert(text); |
| // $("#Response").html("<pre>"+text+"</pre>"); |
| $("#Response").html(text); |
| |
| var html = "<img src='"+data.url+"' width='820'/>"; |
| // alert(html); |
| $("#Image").html(html); |
| |
| // post dataUrl to textarea and enable download button |
| $("#data_url").html(data.dataUrl); |
| enable_download_button(); |
| }, |
| error: function(xhr, textStatus, errorThrown) { |
| $("#Response").html("error!"); |
| $("#data_url").html("error!"); |
| // alert("xhr.status: "+xhr.status); |
| // alert("error status: "+textStatus); |
| }, |
| complete: function(xhr, textStatus) { |
| //alert("complete status: "+textStatus); |
| } |
| }); |
| |
| }); |
| |
| }); |
| |
| </script> |
| } |
| |
| @main("Parameters of ConfId", scripts){ |
| |
| @flash_message() |
| <p> |
| <div id="dataSourceP" style="display: none;">@parameters.getDataSourceP()</div> |
| <div id="dataSourceE1" style="display: none;">@parameters.getDataSourceE1()</div> |
| <div id="dataSourceE2" style="display: none;">@parameters.getDataSourceE2()</div> |
| <div id="variableNameP" style="display: none;">@parameters.getVariableNameP()</div> |
| <div id="variableNameE1" style="display: none;">@parameters.getVariableNameE1()</div> |
| <div id="variableNameE2" style="display: none;">@parameters.getVariableNameE2()</div> |
| <div id="pressureRange1" style="display: none;">@parameters.getPressureRange1()</div> |
| <div id="pressureRange2" style="display: none;">@parameters.getPressureRange2()</div> |
| <div id="env_var_plev1" style="display: none;">@parameters.getEnableVarPlev1()</div> |
| <div id="env_var_plev2" style="display: none;">@parameters.getEnableVarPlev2()</div> |
| |
| <div id="startYearMonth" style="display: none;">@parameters.getStartYearMonth()</div> |
| <div id="enChoose1" style="display: none;">@parameters.getCustomized1</div> |
| <div id="enChoose2" style="display: none;">@parameters.getCustomized2</div> |
| |
| <div id="endYearMonth" style="display: none;">@parameters.getEndYearMonth()</div> |
| <div id="selectMonths" style="display: none;">@parameters.getSelectMonths()</div> |
| |
| <div id="monthsPara" style="display: none;">@parameters.getMonth()</div> |
| <div id="startLat" style="display: none;">@parameters.getStartLat()</div> |
| <div id="endLat" style="display: none;">@parameters.getEndLat()</div> |
| <div id="startLon" style="display: none;">@parameters.getStartLon()</div> |
| <div id="endLon" style="display: none;">@parameters.getEndLon()</div> |
| <div id="div_X" style="display: none;">@parameters.getX()</div> |
| <div id="div_Y" style="display: none;">@parameters.getY()</div> |
| <div id="div_Z" style="display: none;">@parameters.getZ()</div> |
| <div id="binMin1" style="display: none;">@parameters.getBin_min1()</div> |
| <div id="binMax1" style="display: none;">@parameters.getBin_max1()</div> |
| <div id="binNum1" style="display: none;">@parameters.getBin_n1()</div> |
| |
| <div id="binMin2" style="display: none;">@parameters.getBin_min2()</div> |
| <div id="binMax2" style="display: none;">@parameters.getBin_max2()</div> |
| <div id="binNum2" style="display: none;">@parameters.getBin_n2()</div> |
| |
| <div id="executionPurpose" style="display: none;">@parameters.getExecutionPurpose()</div> |
| <div id="image" style="display: none;">@parameters.getImage()</div> |
| <div id="dataURL" style="display: none;">@parameters.getDataURL()</div> |
| <div id="serviceResponseText" style="display: none;">@parameters.getServiceResponseText()</div> |
| |
| |
| <table border="1"> |
| |
| <tr> |
| <td colspan="4"> |
| <center> |
| <b>Service: Conditional Sampling with Two Variables</b><br><br> |
| This service sorts one variable called sampled variable by the |
| values of two variables called sampling variables and displays the |
| averaged value of the sampled variable in color as a function of the |
| bin value of the two sampling variables in X-Y axis. There are |
| overlaid contours which show the number of samples in each of the |
| two sampling variable bin.<br><br> |
| </center> |
| </td> |
| </tr> |
| |
| <tr> |
| <td colspan="2"> |
| <center> |
| Physical Variable (sampled variable) |
| </center> |
| </td> |
| <td colspan="2" rowspan="4"> |
| </td> |
| </tr> |
| |
| <tr> |
| <td>source:</td> |
| <td><select name="data1", id="data1" onchange="put_var(1); time_range3()"></select></td> |
| </tr> |
| |
| <tr> |
| <td>variable name:</td><td><select name="var1", id="var1" onchange="select_var(1); time_range3()"> </select> </td> |
| </tr> |
| |
| <td> |
| atmosphere pressure range (hPa) <br> or ocean pressure range (dbar): |
| </td> |
| <td> |
| <input id="pres1" value="@{parameters.getPressureRange1()+','+parameters.getPressureRange2()}" alt="pressure"/> |
| </td> |
| </tr> |
| |
| <tr> |
| <td colspan="2"> |
| <center> |
| Environmental Variable 1 (sampling variable) |
| </center> |
| </td> |
| |
| <td colspan="2" rowspan="6"> |
| </td> |
| |
| </tr> |
| |
| <tr> |
| <td>source:</td> |
| <td><select name="data2", id="data2" onchange="put_var(2); time_range3()"></select></td> |
| </tr> |
| |
| <tr> |
| <td>variable name:</td><td><select name="var2", id="var2" onchange="select_var(2); time_range3()"> </select> </td> |
| </tr> |
| |
| <tr> |
| <td> |
| atmosphere pressure level (hPa) <br> or ocean pressure level (dbar): |
| </td> |
| <td> |
| <input id="pres2" value="@parameters.getEnableVarPlev1()" alt="pressure"/> |
| </td> |
| </tr> |
| |
| <tr> |
| <td colspan="2"> |
| sampling variable binning specification: |
| <form> |
| default: <input onclick="setDefault(1)" type="radio" name="default1" value="" id="radioDef1" checked> |
| customized: <input onclick="setCustomized(1)" type="radio" name="default1" value="" id="radioCus1"> |
| </form> |
| </td> |
| </tr> |
| |
| <tr> |
| <td colspan="2"> |
| <form> |
| Min: <input id="min1" value="@parameters.getBin_min1()" alt="" size=3/> |
| Max: <input id="max1" value="@parameters.getBin_max1()" alt="" size=3/> |
| number of bins: <input id="bins1" value="@parameters.getBin_n1()" alt="" size=3/> |
| </form> |
| </td> |
| </tr> |
| |
| <tr> |
| <td colspan="2"> |
| <center> |
| Environmental Variable 2 (sampling variable) |
| </center> |
| </td> |
| </tr> |
| |
| <tr> |
| <td>source:</td> |
| <td><select name="data3", id="data3" onchange="put_var(3); time_range3()"></select></td> |
| </tr> |
| |
| <tr> |
| <td>variable name:</td><td><select name="var3", id="var3" onchange="select_var(3); time_range3()"> </select> </td> |
| </tr> |
| |
| <tr> |
| <td> |
| atmosphere pressure level (hPa) <br> or ocean pressure level (dbar): |
| </td> |
| <td> |
| <input id="pres3" value="@parameters.getEnableVarPlev2()" alt="pressure"/> |
| </td> |
| </tr> |
| |
| <tr> |
| <td colspan="2"> |
| sampling variable binning specification: |
| <form> |
| default: <input onclick="setDefault(2)" type="radio" name="default2" value="" id="radioDef2" checked> |
| customized: <input onclick="setCustomized(2)" type="radio" name="default2" value="" id="radioCus2"> |
| </form> |
| </td> |
| </tr> |
| |
| <tr> |
| <td colspan="2"> |
| <form> |
| Min: <input id="min2" value="@parameters.getBin_min2()" alt="" size=3/> |
| Max: <input id="max2" value="@parameters.getBin_max2()" alt="" size=3/> |
| number of bins: <input id="bins2" value="@parameters.getBin_n2()" alt="" size=3/> |
| </form> |
| </td> |
| </tr> |
| |
| <tr> |
| <td id=startYear>start year-month:</td><td> <input id="t0" value="@parameters.getStartYearMonth()" alt="start"/></td> |
| <td id=endYear>end year-month: </td><td><input id="t1" value="@parameters.getEndYearMonth()" alt="end"/></td> |
| </tr> |
| |
| <tr> |
| <td id="monthSelect0"></td> |
| <td id="monthSelect" colspan="3"></td> |
| </tr> |
| |
| <tr> |
| <td>start lat (deg):</td><td><input id="lat0" value="@parameters.getStartLat()"/></td> |
| <td>end lat (deg):</td><td><input id="lat1" value="@parameters.getEndLat()"/></td> |
| </tr> |
| |
| <tr> |
| <td>start lon (deg):</td><td><input id="lon0" value="@parameters.getStartLon()"/></td> |
| <td>end lon (deg):</td><td><input id="lon1" value="@parameters.getEndLon()"/></td> |
| </tr> |
| |
| <tr> |
| <td colspan="1" rowspan="3"> |
| display option: |
| </td> |
| <td colspan="3"> |
| <form>X-axis (sampling variable) scale: <input type="radio" name="scale1" value="linear" id="radioXLin" checked>linear |
| <input type="radio" name="scale1" value="logarithmic" id="radioXLog">logarithmic |
| </form> |
| </td> |
| </tr> |
| |
| <tr> |
| <td colspan="3"> |
| <form>Y-axis (sampled variable or pressure) scale: <input type="radio" name="scale1" value="linear" id="radioYLin" checked>linear |
| <input type="radio" name="scale1" value="logarithmic" id="radioYLog">logarithmic |
| </form> |
| </tr> |
| |
| <tr> |
| <td colspan="3"> |
| <form>Z-axis (color) scale: <input type="radio" name="scale1" value="linear" id="radioZLin" checked>linear |
| <input type="radio" name="scale1" value="logarithmic" id="radioZLog">logarithmic |
| </form> |
| </td> |
| </tr> |
| |
| <tr> |
| <td colspan="2" align="center"><input id="conditionalSamp" type="submit" value=" Get Plot " style="height:28px"/></td> |
| <form> |
| <td colspan="2" align="center"><input id="download_data" type="button" value="Download Data" style="height:28px"/> |
| </td> |
| </form> |
| |
| </tr> |
| |
| <tr> |
| <td colspan="4"> |
| <div id="Image"><img src="@parameters.getImage()" width=680 /></div> |
| </td> |
| </tr> |
| |
| <tr> |
| <td colspan="4" align="center"> |
| <textarea readonly id="data_url" cols="130" rows="2">@parameters.getDataURL()</textarea> |
| </td> |
| </tr> |
| |
| <tr> |
| <td colspan="4" align="center"> |
| <textarea id="Response" cols="130" rows="6">@parameters.getServiceResponseText()</textarea> |
| </td> |
| </tr> |
| |
| </table> |
| } |