http://git-wip-us.apache.org/repos/asf/incubator-cmda/blob/ca952ad9/ApacheCMDA-Frontend/app/views/climate/conditionalSampling2Var.scala.html ---------------------------------------------------------------------- diff --git a/ApacheCMDA-Frontend/app/views/climate/conditionalSampling2Var.scala.html b/ApacheCMDA-Frontend/app/views/climate/conditionalSampling2Var.scala.html index 1a7607b..8c039bd 100644 --- a/ApacheCMDA-Frontend/app/views/climate/conditionalSampling2Var.scala.html +++ b/ApacheCMDA-Frontend/app/views/climate/conditionalSampling2Var.scala.html @@ -1,44 +1,31 @@ -@******************************************************************************* - * Licensed to the Apache Software Foundation (ASF) under one or more * - * contributor license agreements. See the NOTICE file distributed with * - * this work for additional information regarding copyright ownership. * - * The ASF licenses this file to You under the Apache License, Version 2.0 * - * (the "License"); you may not use this file except in compliance with * - * the License. You may obtain a copy of the License at * - * * - * http://www.apache.org/licenses/LICENSE-2.0 * - * * - * Unless required by applicable law or agreed to in writing, software * - * distributed under the License is distributed on an "AS IS" BASIS, * - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * - * See the License for the specific language governing permissions and * - * limitations under the License. * - *******************************************************************************@ - -@(parameters: metadata.ConditionalSampling2Var) @import helper._ +@(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"> + <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(); @@ -52,14 +39,25 @@ 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); @@ -68,6 +66,7 @@ $('#radioDef1').prop("checked", false); $('#radioCus1').prop("checked", true); } + var enviVariableChoose2 = $('#enChoose2'); if(enviVariableChoose2 == "0"){ $('#radioDef2').prop("checked", true); @@ -76,8 +75,10 @@ $('#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()); @@ -122,6 +123,7 @@ $('#max1').val(binMax1); $('#bins1').val(binNum1); } + var binMin2 = $('#binMin2').text(); var binMax2 = $('#binMax2').text(); var binNum2 = $('#binNum2').text(); @@ -134,14 +136,18 @@ $('#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"); @@ -152,11 +158,13 @@ } } } + 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++) { @@ -164,6 +172,7 @@ list1.add(new Option(varList[k][0],k)); } } + function select_monthsByPara(){ var monthsByPara = $('#monthsPara').text(); console.log("HERE!!!!!!"+monthsByPara); @@ -205,6 +214,8 @@ document.getElementById('Dec').checked = true; } } + + // disable pressure level box for 2D var function disable_pres(ID) { var x; @@ -221,35 +232,43 @@ 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; - temp2 = temp2 / 10000; + 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; - temp2 = temp2 / 100; + 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; + x.value = x.value / 10000; // convert from dbar on GUI } + // when variable2 is 3D atmosphere var else { - x.value = x.value / 100; + 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; } @@ -326,8 +345,10 @@ 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; @@ -365,7 +386,7 @@ else if(dataSource == "ukmo_hadgem2-a" ){ x.options[11].selected=true; } - else if(dataSource == "nasa_grace" ){ + else if(dataSource == "nasa_grace" ){ ////////////////////////////////// x.options[12].selected=true; } else if(dataSource == "nasa_modis" ){ @@ -405,8 +426,10 @@ 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; @@ -444,7 +467,7 @@ else if(dataSource == "ukmo_hadgem2-a" ){ x.options[11].selected=true; } - else if(dataSource == "nasa_grace" ){ + else if(dataSource == "nasa_grace" ){ ////////////////////////////////// x.options[12].selected=true; } else if(dataSource == "nasa_modis" ){ @@ -484,48 +507,65 @@ 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; @@ -541,6 +581,8 @@ 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 && @@ -555,11 +597,14 @@ 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; @@ -575,8 +620,11 @@ 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); @@ -587,8 +635,11 @@ 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); @@ -599,7 +650,10 @@ 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]); @@ -610,54 +664,94 @@ 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) { @@ -671,123 +765,189 @@ } 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; - pres2 = pres2 * 10000; + 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; - pres2 = pres2 * 100; + 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; + plev1 = plev1 * 10000; // convert from dbar on GUI } + // when variable2 is 3D atmosphere var else { - plev1 = plev1 * 100; + 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; + plev2 = plev2 * 10000; // convert from dbar on GUI } + // when variable2 is 3D atmosphere var else { - plev2 = plev2 * 100; + 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) { + + if (binstate1 == true) { // default binMin1 = naValue; binMax1 = naValue; numBins1 = naValue; } - else { + 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) { + + if (binstate2 == true) { // default binMin2 = naValue; binMax2 = naValue; numBins2 = naValue; } - else { + 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="); @@ -801,6 +961,8 @@ arglistTB = arglistTB.concat("&var2="); arglistTB = arglistTB.concat(variable2); urlTimeBounds = urlTimeBounds + encodeURI(arglistTB); + // alert("urlTimeBounds: " + urlTimeBounds); + $.ajax({ type: "GET", url: urlTimeBounds, @@ -808,7 +970,9 @@ 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; @@ -817,56 +981,82 @@ 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; - if (lowerT1 == 0 || upperT1 == 0){ + // 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){ + 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) { + else if (lowerT2 > upperT1 || lowerT1 > upperT2) { // no intersection alert("The two data sets/vars do not have a common time range."); return; } - else { - if (lowerT1 > lowerT2) { + else { // compute intersection + if (lowerT1 > lowerT2) { // pick bigger lower time bound lowerT = lowerT1; } else { lowerT = lowerT2; } - if (upperT1 > upperT2) { + + 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."); @@ -875,10 +1065,15 @@ 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, @@ -886,32 +1081,51 @@ 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() +} + +@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> @@ -923,11 +1137,14 @@ <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> @@ -939,213 +1156,228 @@ <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> + +<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> -} +} \ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-cmda/blob/ca952ad9/ApacheCMDA-Frontend/app/views/climate/correlationMap.scala.html ---------------------------------------------------------------------- diff --git a/ApacheCMDA-Frontend/app/views/climate/correlationMap.scala.html b/ApacheCMDA-Frontend/app/views/climate/correlationMap.scala.html index 5b862da..a9f2793 100644 --- a/ApacheCMDA-Frontend/app/views/climate/correlationMap.scala.html +++ b/ApacheCMDA-Frontend/app/views/climate/correlationMap.scala.html @@ -1,44 +1,31 @@ -@******************************************************************************* - * Licensed to the Apache Software Foundation (ASF) under one or more * - * contributor license agreements. See the NOTICE file distributed with * - * this work for additional information regarding copyright ownership. * - * The ASF licenses this file to You under the Apache License, Version 2.0 * - * (the "License"); you may not use this file except in compliance with * - * the License. You may obtain a copy of the License at * - * * - * http://www.apache.org/licenses/LICENSE-2.0 * - * * - * Unless required by applicable law or agreed to in writing, software * - * distributed under the License is distributed on an "AS IS" BASIS, * - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * - * See the License for the specific language governing permissions and * - * limitations under the License. * - *******************************************************************************@ - -@(parameters: metadata.CorrelationMap) @import helper._ +@(parameters: metadata.CorrelationMap) + +@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 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"> + <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 = ""; + + + // called on load or reload window.onload = function() { + put_data(1); changeDataSource1(); put_data(2); @@ -47,28 +34,41 @@ changeVariableName1(); put_var(2); changeVariableName2(); + + enable_download_button(); + + $('#t0').val($('#startYearMonth').text()); $('#t1').val($('#endYearMonth').text()); + if($('#pressureLevel1').text() == "-9999"){ disable_pres1(1); }else{ $('#pres1').val($('#pressureLevel1').text()); } + if($('#pressureLevel2').text() == "-9999"){ disable_pres1(2); }else{ $('#pres2').val($('#pressureLevel2').text()); } + $('#lat0').val($('#startLat').text()); $('#lat1').val($('#endLat').text()); + $('#lon0').val($('#startLon').text()); $('#lon1').val($('#endLon').text()); + $('#laggedTime').html($('#executionLaggedTime').text()); + $('#purpose').html($('#executionPurpose').text()); $('#data_url').html($('#dataURL').text()); $('#Response').html($('#serviceResponseText').text()); + } + + // disable pressure level box for 2D var function disable_pres1(ID) { var x; @@ -76,6 +76,8 @@ x.value = "N/A"; x.disabled=true; } + + // enable pressure level box for 3D var function enable_pres1(ID) { var x; @@ -83,9 +85,12 @@ x.value = "500"; x.disabled=false; } + function changeDataSource1() { var dataSource = $('#dataSource1').text(); + var x = document.getElementById("data1"); + if(dataSource == "gfdl_esm2g" ){ x.options[0].selected=true; } @@ -162,8 +167,10 @@ x.options[24].selected=true; } } + function changeDataSource2() { var dataSource = $('#dataSource2').text(); + //dataSource = "NASA_QuikSCAT"; var x = document.getElementById("data2"); if(dataSource == "gfdl_esm2g" ){ x.options[0].selected=true; @@ -201,7 +208,7 @@ else if(dataSource == "ukmo_hadgem2-a" ){ x.options[11].selected=true; } - else if(dataSource == "nasa_grace" ){ + else if(dataSource == "nasa_grace" ){ ////////////////////////////////// x.options[12].selected=true; } else if(dataSource == "nasa_modis" ){ @@ -241,44 +248,61 @@ x.options[24].selected=true; } } + + + function changeVariableName1(){ var var_string = $('#variableName1').text(); var data_string = $('#dataSource1').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 = $('#variableName2').text(); var data_string = $('#dataSource2').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 disable_download_button() { var x=document.getElementById("download_data"); x.disabled=true; } + + // enable download data button function enable_download_button() { var x=document.getElementById("download_data"); x.disabled=false; } + + // disable pressure level box for 2D var function disable_pres1(ID) { var x; @@ -286,6 +310,8 @@ x.value = "N/A"; x.disabled=true; } + + // enable pressure level box for 3D var function enable_pres1(ID) { var x; @@ -293,8 +319,10 @@ x.value = "500"; x.disabled=false; } + 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"); @@ -305,101 +333,164 @@ } } } + 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_var1(ID) { var var_string = $("#var"+ID).val(); + + // alert("var_string: " + var_string) + if (varList[var_string][2]===3) { enable_pres1(ID); } else { disable_pres1(ID); } + + //alert("variable1: " + var_string); + var var_string1 = $("#var"+1).val(); var var_string2 = $("#var"+2).val(); var data_string1 = $("#data"+1).val(); var data_string2 = $("#data"+2).val(); + var sTime = Math.max( Number(dataList[data_string1][2][var_string1][0]), Number(dataList[data_string2][2][var_string2][0]) ); var eTime = Math.min( Number(dataList[data_string1][2][var_string1][1]), Number(dataList[data_string2][2][var_string2][1]) ); + $("#startYear").html("start year-month: (earliest:" + sTime + ")"); $("#endYear").html("end year-month: (latest:" + eTime + ")"); } + $(document).ready(function(){ + $("#download_data").click(function(event) { var durl = $("#data_url").val(); + // alert(durl); window.location.assign(durl); }); + + $("#correlationMap").click(function(event) { + // alert('****** inside correlationMap()!'); Response = null; + + // no data to download yet disable_download_button(); + $("#Response").html("Calculating ..."); $("#data_url").html("Calculating ..."); $("#Image").html(""); + + // sample url: http://cmacws.jpl.nasa.gov:8090/svc/scatterPlot2V?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/scatterPlot2V?"; var url = "http://" + window.location.hostname + ":9002/svc/correlationMap?"; + // 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 pres1 = $("#pres1").val(); if (isNaN(Number(pres1))) { pres1 = "-9999"; } arglist = arglist.concat("&pres1="); arglist = arglist.concat(pres1); + 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); + + // alert("arglist: " + arglist); + var pres2 = $("#pres2").val(); if (isNaN(Number(pres2))) { pres2 = "-9999"; } arglist = arglist.concat("&pres2="); arglist = arglist.concat(pres2); + var laggedTime = $("#laggedTime").val(); arglist = arglist.concat("&laggedTime="); arglist = arglist.concat(laggedTime); + 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); + + // alert("arglist: " + arglist); + 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 purpose = $("#purpose").val(); arglist = arglist.concat("&purpose="); arglist = arglist.concat(purpose); + + // 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="); @@ -413,6 +504,7 @@ arglistTB = arglistTB.concat("&var2="); arglistTB = arglistTB.concat(variable2); urlTimeBounds = urlTimeBounds + encodeURI(arglistTB); + $.ajax({ type: "GET", url: urlTimeBounds, @@ -420,7 +512,9 @@ 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; @@ -429,57 +523,82 @@ 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; - if (lowerT1 == 0 || upperT1 == 0){ + // 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."); alert(urlTimeBounds); return; } - else if (lowerT2 == 0 || upperT2 == 0){ + 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) { + else if (lowerT2 > upperT1 || lowerT1 > upperT2) { // no intersection alert("The two data sets/vars do not have a common time range."); return; } - else { - if (lowerT1 > lowerT2) { + else { // compute intersection + if (lowerT1 > lowerT2) { // pick bigger lower time bound lowerT = lowerT1; } else { lowerT = lowerT2; } - if (upperT1 > upperT2) { + + 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."); @@ -488,10 +607,15 @@ 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, @@ -499,34 +623,51 @@ data: null, success: function(data, textStatus, xhr) { Response = data; + // alert("data: " + data); + // alert(url); if (data.success == false) { + // alert(data.error); Response = null; var text = JSON.stringify(data, null, 4); + if (text.indexOf("No Data") != -1) { $("#Image").html("No Data"); $("#Response").html("No Data"); $("#data_url").html("No Data"); return; } + 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 + "?" + new Date().getTime() + "' 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> @@ -548,115 +689,138 @@ <div id="executionPurpose" style="display: none;">@parameters.getExecutionPurpose()</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: Time-Lagged Correlation Map of Two Variables</b><br> - <br> This service generates a time-lagged correlation map - between two specified variables. <br>The two variables can be - either a two-dimensional variable or a slice of a three-dimensional - variable at a specific pressure level. <br> <br> - </center> - </td> - </tr> - <tr> - <td colspan="2"> - <center>data1[t-lag]</center> - </td> - <td colspan="2"> - <center>data2[t]</center> - </td> - </tr> - <tr> - <td>source:</td> - <td><select name="data1" , id="data1" - onchange="put_var(1); select_var1(1)"> - </select></td> - <td>source:</td> - <td><select name="data2" , id="data2" - onchange="put_var(2); select_var1(2)"> - </select></td> - </tr> - <tr> - <td>variable name:</td> - <td><select name="var1" , id="var1" onchange="select_var1(1)"></select></td> - <td>variable name:</td> - <td><select name="var2" , id="var2" onchange="select_var1(2)"></select></td> - </tr> - <tr> - <td>atmosphere pressure level (hPa) <br> or ocean pressure - level (dbar) - </td> - <td><input id="pres1" value="@parameters.getPressureLevel1()" - alt="pressure" /></td> - <td>atmosphere pressure level (hPa) <br> or ocean pressure - level (dbar) - </td> - <td><input id="pres2" value="@parameters.getPressureLevel2()" - alt="pressure" /></td> - </tr> - <tr> - </tr> - <tr> - <td id=startYear>start year-month:</td> - <td><input id="t0" value="@parameters.getStartYear()" alt="start" /></td> - <td id=endYear>end year-month:</td> - <td><input id="t1" value="@parameters.getEndYear()" alt="end" /></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></td> - <td colspan="2"><center> - lag (month):<input id="laggedTime" - value="@parameters.getLaggedTime()" /> - </center></td> - <td></td> - </tr> - </tr> - <tr> - <td colspan="1">Execution purpose</td> - <td colspan="3"> - <form> - <textarea name="purpose" id="purpose" rows="4" cols="50">@parameters.getExecutionPurpose()</textarea> - </form> - </td> - </tr> - <tr> - <tr> - <td colspan="2" align="center"><input id="correlationMap" - type="submit" value=" Run Again " - 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> + +<tr> +<td colspan="4"> +<center> +<b>Service: Time-Lagged Correlation Map of Two Variables</b><br><br> +This service generates a time-lagged correlation map between two specified variables. +<br>The two variables can be either a two-dimensional variable or a slice of a three-dimensional variable at a specific pressure level. <br><br> +</center> +</td> +</tr> + +<tr> +<td colspan="2"> +<center> +data1[t-lag] +</center> +</td> + +<td colspan="2"> +<center> +data2[t] +</center> +</td> +</tr> + +<tr> +<td>source:</td> +<td><select name="data1", id="data1" onchange="put_var(1); select_var1(1)"> +</select></td> + +<td>source:</td> +<td><select name="data2", id="data2" onchange="put_var(2); select_var1(2)"> +</select></td> + +</tr> + +<tr> + +<td>variable name:</td><td><select name="var1", id="var1" onchange="select_var1(1)"> +</select> +</td> + +<td>variable name:</td><td><select name="var2", id="var2" onchange="select_var1(2)"> +</select> + +</td> + +</tr> + +<tr> + +<td> +atmosphere pressure level (hPa) <br> or ocean pressure level (dbar) +</td> +<td> +<input id="pres1" value="@parameters.getPressureLevel1()" alt="pressure"/> +</td> + +<td> +atmosphere pressure level (hPa) <br> or ocean pressure level (dbar) +</td> +<td> +<input id="pres2" value="@parameters.getPressureLevel2()" alt="pressure"/> +</td> + +</tr> + +<tr> +</tr> + +<tr> +<td id=startYear>start year-month:</td><td><input id="t0" value="@parameters.getStartYear()" alt="start"/></td> +<td id=endYear>end year-month:</td><td><input id="t1" value="@parameters.getEndYear()" alt="end"/></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></td> +<td colspan="2"><center>lag (month):<input id="laggedTime" value="@parameters.getLaggedTime()"/></center></td><td></td></tr> +</tr> + +<tr> +<td colspan="1"> +Execution purpose +</td> +<td colspan="3"> +<form> +<textarea name="purpose" id="purpose" rows="4" cols="50">@parameters.getExecutionPurpose()</textarea> +</form> +</td> +</tr> +<tr> + +<tr> +<td colspan="2" align="center"><input id="correlationMap" type="submit" value=" Run Again " 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> -} +} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/incubator-cmda/blob/ca952ad9/ApacheCMDA-Frontend/app/views/climate/dataRecommend.scala.html ---------------------------------------------------------------------- diff --git a/ApacheCMDA-Frontend/app/views/climate/dataRecommend.scala.html b/ApacheCMDA-Frontend/app/views/climate/dataRecommend.scala.html index 83ddcd0..4f4db50 100644 --- a/ApacheCMDA-Frontend/app/views/climate/dataRecommend.scala.html +++ b/ApacheCMDA-Frontend/app/views/climate/dataRecommend.scala.html @@ -1,20 +1,3 @@ -@******************************************************************************* - * Licensed to the Apache Software Foundation (ASF) under one or more * - * contributor license agreements. See the NOTICE file distributed with * - * this work for additional information regarding copyright ownership. * - * The ASF licenses this file to You under the Apache License, Version 2.0 * - * (the "License"); you may not use this file except in compliance with * - * the License. You may obtain a copy of the License at * - * * - * http://www.apache.org/licenses/LICENSE-2.0 * - * * - * Unless required by applicable law or agreed to in writing, software * - * distributed under the License is distributed on an "AS IS" BASIS, * - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * - * See the License for the specific language governing permissions and * - * limitations under the License. * - *******************************************************************************@ - @(jsonData: String) @import helper._ http://git-wip-us.apache.org/repos/asf/incubator-cmda/blob/ca952ad9/ApacheCMDA-Frontend/app/views/climate/dataSetList.scala.html ---------------------------------------------------------------------- diff --git a/ApacheCMDA-Frontend/app/views/climate/dataSetList.scala.html b/ApacheCMDA-Frontend/app/views/climate/dataSetList.scala.html index 821183c..a3a1f2e 100644 --- a/ApacheCMDA-Frontend/app/views/climate/dataSetList.scala.html +++ b/ApacheCMDA-Frontend/app/views/climate/dataSetList.scala.html @@ -1,20 +1,3 @@ -@******************************************************************************* - * Licensed to the Apache Software Foundation (ASF) under one or more * - * contributor license agreements. See the NOTICE file distributed with * - * this work for additional information regarding copyright ownership. * - * The ASF licenses this file to You under the Apache License, Version 2.0 * - * (the "License"); you may not use this file except in compliance with * - * the License. You may obtain a copy of the License at * - * * - * http://www.apache.org/licenses/LICENSE-2.0 * - * * - * Unless required by applicable law or agreed to in writing, software * - * distributed under the License is distributed on an "AS IS" BASIS, * - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * - * See the License for the specific language governing permissions and * - * limitations under the License. * - *******************************************************************************@ - @(dataSets: List[DataSet], dataSetForm: play.data.Form[DataSet]) @import helper._ http://git-wip-us.apache.org/repos/asf/incubator-cmda/blob/ca952ad9/ApacheCMDA-Frontend/app/views/climate/datasetTime.scala.html ---------------------------------------------------------------------- diff --git a/ApacheCMDA-Frontend/app/views/climate/datasetTime.scala.html b/ApacheCMDA-Frontend/app/views/climate/datasetTime.scala.html index cfa8375..f714e75 100644 --- a/ApacheCMDA-Frontend/app/views/climate/datasetTime.scala.html +++ b/ApacheCMDA-Frontend/app/views/climate/datasetTime.scala.html @@ -1,20 +1,3 @@ -@******************************************************************************* - * Licensed to the Apache Software Foundation (ASF) under one or more * - * contributor license agreements. See the NOTICE file distributed with * - * this work for additional information regarding copyright ownership. * - * The ASF licenses this file to You under the Apache License, Version 2.0 * - * (the "License"); you may not use this file except in compliance with * - * the License. You may obtain a copy of the License at * - * * - * http://www.apache.org/licenses/LICENSE-2.0 * - * * - * Unless required by applicable law or agreed to in writing, software * - * distributed under the License is distributed on an "AS IS" BASIS, * - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * - * See the License for the specific language governing permissions and * - * limitations under the License. * - *******************************************************************************@ - @(message: String) @scripts = { http://git-wip-us.apache.org/repos/asf/incubator-cmda/blob/ca952ad9/ApacheCMDA-Frontend/app/views/climate/header.scala.html ---------------------------------------------------------------------- diff --git a/ApacheCMDA-Frontend/app/views/climate/header.scala.html b/ApacheCMDA-Frontend/app/views/climate/header.scala.html index 0cae470..0cedc93 100644 --- a/ApacheCMDA-Frontend/app/views/climate/header.scala.html +++ b/ApacheCMDA-Frontend/app/views/climate/header.scala.html @@ -1,19 +1,3 @@ -@******************************************************************************* - * Licensed to the Apache Software Foundation (ASF) under one or more * - * contributor license agreements. See the NOTICE file distributed with * - * this work for additional information regarding copyright ownership. * - * The ASF licenses this file to You under the Apache License, Version 2.0 * - * (the "License"); you may not use this file except in compliance with * - * the License. You may obtain a copy of the License at * - * * - * http://www.apache.org/licenses/LICENSE-2.0 * - * * - * Unless required by applicable law or agreed to in writing, software * - * distributed under the License is distributed on an "AS IS" BASIS, * - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * - * See the License for the specific language governing permissions and * - * limitations under the License. * - *******************************************************************************@ @() <div class="navbar navbar-default navbar-fixed-top" role="navigation"> @@ -47,8 +31,10 @@ class="caret"></b></a> <ul class="dropdown-menu"> - <li><a href="@routes.DatasetController.datasetList()">Dataset List</a></li> - <li><a href="@routes.DatasetController.searchDataset()">Search dataset</a></li> + <li><a href="@routes.dataSetController.datasetList()">Dataset List</a></li> + <!-- <li><a href="@routes.dataSetController.searchDataset()">Search dataset</a></li>--> + <li><a href='@{routes.ClimateServiceController.inframeService("dataSet/searchDataSet")}'>Search dataset</a></li> + </ul> </li> <li class="dropdown"><a href="#" @@ -57,6 +43,7 @@ <ul class="dropdown-menu"> <li><a href="@routes.AccountController.getServiceLog">Service Execution Log List</a></li> <li><a href="@routes.AccountController.searchServiceLog">Service Execution Log Search</a></li> + <li><a href="@routes.AnalyticsController.getKnowledgeGraph">Knowledge Graph</a></li> </ul> </li> @@ -65,11 +52,30 @@ class="caret"></b></a> <ul class="dropdown-menu"> <li><a href="@routes.ClimateServiceController.home()">Home</a></li> - <li><a href="@routes.AboutusController.aboutUs()">About Us</a></li> + <li><a href="@routes.AboutusController.aboutus()">About Us</a></li> <li><a href="@routes.AboutusController.aboutProject()">About project</a></li> </ul> </li> + <!-- + @if(!session.get("username")){ + + <form class="navbar-form navbar-right" action="@routes.ClimateServiceController.authenticate()"> + <button type="submit" class="btn btn-success">Log in</button> + </form> + }else{ + <li><a href="/estimator/tutorial">Estimator</a></li> + <form class="navbar-form navbar-right" action="@routes.ClimateServiceController.logout()"> + <button type="submit" class="btn btn-success">Log out</button> + </form> + } + + @if(false){ + <form class="navbar-form navbar-right" action="@routes.NasaRegistrationController.adminPage()"> + <button type="submit" class="btn btn-success">Admin Console</button> + </form> + } + --> </ul> </div> <!--/.nav-collapse --> http://git-wip-us.apache.org/repos/asf/incubator-cmda/blob/ca952ad9/ApacheCMDA-Frontend/app/views/climate/home.scala.html ---------------------------------------------------------------------- diff --git a/ApacheCMDA-Frontend/app/views/climate/home.scala.html b/ApacheCMDA-Frontend/app/views/climate/home.scala.html index 1803838..b7059af 100644 --- a/ApacheCMDA-Frontend/app/views/climate/home.scala.html +++ b/ApacheCMDA-Frontend/app/views/climate/home.scala.html @@ -1,20 +1,3 @@ -@******************************************************************************* - * Licensed to the Apache Software Foundation (ASF) under one or more * - * contributor license agreements. See the NOTICE file distributed with * - * this work for additional information regarding copyright ownership. * - * The ASF licenses this file to You under the Apache License, Version 2.0 * - * (the "License"); you may not use this file except in compliance with * - * the License. You may obtain a copy of the License at * - * * - * http://www.apache.org/licenses/LICENSE-2.0 * - * * - * Unless required by applicable law or agreed to in writing, software * - * distributed under the License is distributed on an "AS IS" BASIS, * - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * - * See the License for the specific language governing permissions and * - * limitations under the License. * - *******************************************************************************@ - @(email: String, vfile: String, dataset: String) @import helper._