blob: 625de5fe2022f4a8e3a44de159539b3e494c3682 [file] [log] [blame]
// The following is for the code navigation purpose.
//
// enable_download data button
// disable_pres1__
// enable_pres1__(ID)
// put_data__
// data_block_str__
// change_datan_
// put_var__
// is3D__
// select_var__
// time_range__
// time_range2__
// time_range3__
// monthList__
// fillMonth__
// reset_months__
// no_month_check
// select_all_months__
// select_months__
// getMonthStr__
// parse_pres__
// get_querystring__
var naValue = "-999999";
// disable download data button
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
// disable_pres1__
function disable_pres1(ID)
{
// if isPressure1 is defined, there is no pressure widget
try {
var x;
x=document.getElementById("pres"+ID);
x.value = "N/A";
x.disabled=true;
var y=document.getElementById("pressureLabel"+ID);
y.innerHTML = "pressure:";
}
catch(err) {}
}
// enable pressure level box for 3D var
// enable_pres1__(ID)
function enable_pres1(ID)
{
var var_string = $("#var"+ID).val();
var oceanStr = "";
try {
var rangeStr0 = eval("rangeStr"+ID);
} catch(err) {
var rangeStr0 = "";
}
try {
var y=document.getElementById("pressureLabel"+ID);
//alert(y.value);
y.innerHTML = "atmospheric pressure " + rangeStr0 + "(hPa):";
} catch(err) {}
if (varList[var_string][1]==="ocean") {
oceanStr = "o";
try {
y.innerHTML = "ocean pressure " + rangeStr0 + "(dbar):";
} catch(err) {}
}
// there can be no pressure widget, so there is a error catch here.
try {
var pressDf0;
try {
pressDf0 = eval("pressDf"+ID+oceanStr);
} catch(err) {
pressDf0 = "500";
}
var x=document.getElementById("pres"+ID);
x.value = pressDf0;
x.disabled=false;
} catch(err) {}
/* try {
if ( eval("typeof pressDf"+ID) !== 'undefined') var pressDf0 = eval("pressDf"+ID);
else var pressDf0 = "500";
var x=document.getElementById("pres"+ID);
x.value = pressDf0;
x.disabled=false;
} catch(err) {}
*/
}
// put_data__
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 {
var toAdd = true;
// whether the dataset has only 2D or only 3D variables
if ( (typeof isOnly2d !== 'undefined')
|| (typeof isOnly3d !== 'undefined') ) {
var dims = "";
var varList2 = dataList[key][1];
for(var i=0; i<varList2.length; i++)
dims += String(varList[ varList2[i] ][2]);
if (typeof isOnly2d !== 'undefined')
if (dims.indexOf('2')==-1) toAdd = false;
if (typeof isOnly3d !== 'undefined')
if (dims.indexOf('3')==-1) toAdd = false;
}
// add to the option group
if (toAdd) og.appendChild(new Option(key,key));
}
}
}
// change_datan_
function change_datan(numTB){
var nVar=Number( document.getElementById("nVar").value );
//alert(nVar);
for (var i=0; i<nVar; i++) {
var str1 = data_block_str(String(i+2), numTB, "Source Variable "+String(i+1), "", 500);
//alert(str1);
document.getElementById("datan"+(i+1)).innerHTML = str1;
put_data(i+2);
put_var(i+2);
select_var(i+2);
}
for (var i=nVar; i<10; i++) {
document.getElementById("datan"+(i+1)).innerHTML = "";
}
}
// data_block_str__
function data_block_str(ID, numTB, dataTitle, isRange, pressDf){
var temp1= '';
temp1 += '<div class="row ">\n'
temp1 += '<div class="col-sm-12 center1 subtitle1">\n';
temp1 += dataTitle + '\n';
temp1 += '</div>\n';
temp1 += '</div> <!-- row --> \n';
temp1 += '<div class="row">\n';
temp1 += ' <div class="col-sm-4 right1">\n';
temp1 += ' source:' + '\n';
temp1 += ' </div> <!-- col-sm-6 -->\n';
temp1 += ' <div class="col-sm-8 left1">\n';
temp1 += ' <select name="data' + ID + '", id="data' + ID;
temp1 += '" onchange="put_var(' + ID + '); select_var(' + ID + ');time_range' + numTB + '()"></select>\n';
temp1 += ' </div> <!-- col-sm-6 level2-->\n';
temp1 += '</div> <!-- row -->\n';
temp1 += '<div class="row">\n';
temp1 += ' <div class="col-sm-4 right1">\n';
temp1 += ' variable name:\n';
temp1 += ' </div> <!-- col-sm-6 level2-->\n';
temp1 += ' <div class="col-sm-8 left1">\n';
temp1 += ' <select name="var' + ID +'", id="var' + ID;
temp1 += '" onchange="select_var(' + ID + '); select_var(' + ID + '); time_range' + numTB + '()"> </select>\n';
temp1 += ' </div> <!-- col-sm-6 level2-->\n';
temp1 += '</div> <!-- row -->\n';
temp1 += '<div class="row">\n';
temp1 += ' <div class="col-sm-4 right1" id="pressureLabel' + ID + '">\n';
//temp1 += ' pressure ' + isRange + '(atmosphere hPa) <br> or (ocean dbar):\n';
temp1 += ' pressure ' + isRange +':\n';
temp1 += ' </div> <!-- col-sm-6 level2-->\n';
temp1 += ' <div class="col-sm-8 left1">\n';
temp1 += ' <input id="pres' + ID + '" value="' + pressDf + '" alt="pressure"/>\n';
temp1 += ' </div> <!-- col-sm-6 level2-->\n';
temp1 += '</div> <!-- row -->\n';
// alert(temp1);
return temp1;
}
// put_var__
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];
if (typeof isOnly2d !== 'undefined') {
// list only 2D variables
for (var i=0; i<varList2.length; i++) {
var k = varList2[i];
if (varList[k][2]==2) list1.add(new Option(varList[k][0],k));
}
} else if (typeof isOnly3d !== 'undefined') {
// list only 3D variables
for (var i=0; i<varList2.length; i++) {
var k = varList2[i];
if (varList[k][2]==3) list1.add(new Option(varList[k][0],k));
}
} else {
// list all 2D/3D variables
for (var i=0; i<varList2.length; i++) {
var k = varList2[i];
list1.add(new Option(varList[k][0],k));
}
}
var nVar = list1.options.length;
if (nVar==0) {
alert(data_string + " has no suitable variable.");
document.getElementById("data"+ID).options[0].selected = true;
put_var(ID);
}
}
// is3D__
function is3D(ID)
{
var var_string = $("#var"+ID).val();
return varList[var_string][2]==3;
}
// select_var__
function select_var(ID)
{
// if there isOnly2d is defined, there is no pressure widget.
try {
//var var_string = $("#var"+ID).val();
//alert(is3D(ID));
if (is3D(ID)) {
enable_pres1(ID);
} else {
disable_pres1(ID);
}
}
catch(err) {}
}
// time_range__
// this is identical to time_range1()
function time_range() {
var var_string1 = $("#var"+1).val();
var data_string1 = $("#data"+1).val();
var sTime = dataList[data_string1][2][var_string1][0].toString();
var eTime = dataList[data_string1][2][var_string1][1].toString();
$("#startYear").html("start year-month: (earliest:" + sTime.slice(0,4) + "-" + sTime.slice(4,6) + ")");
$("#endYear").html("end year-month: (latest:" + eTime.slice(0,4) + "-" + eTime.slice(4,6) + ")");
}
function time_range1() {
var var_string1 = $("#var"+1).val();
var data_string1 = $("#data"+1).val();
var sTime = dataList[data_string1][2][var_string1][0].toString();
var eTime = dataList[data_string1][2][var_string1][1].toString();
$("#startYear").html("start year-month: (earliest:" + sTime.slice(0,4) + "-" + sTime.slice(4,6) + ")");
$("#endYear").html("end year-month: (latest:" + eTime.slice(0,4) + "-" + eTime.slice(4,6) + ")");
}
// time_range2__
function time_range2() {
var var_string1 = $("#var"+1).val();
var var_string2 = $("#var"+2).val();
var data_string1 = $("#data"+1).val();
var data_string2 = $("#data"+2).val();
//alert(data_string1);
//alert(data_string2);
var sTime = Math.max( Number(dataList[data_string1][2][var_string1][0]),
Number(dataList[data_string2][2][var_string2][0]) ).toString();
var eTime = Math.min( Number(dataList[data_string1][2][var_string1][1]),
Number(dataList[data_string2][2][var_string2][1]) ).toString();
//sTime = sTime.toString();
//eTime = eTime.toString();
$("#startYear").html("start year-month: (earliest:" + sTime.slice(0,4) + "-" + sTime.slice(4,6) + ")");
$("#endYear").html("end year-month: (latest:" + eTime.slice(0,4) + "-" + eTime.slice(4,6) + ")");
}
// time_range3__
function time_range3() {
var var_string1 = $("#var"+1).val();
var var_string2 = $("#var"+2).val();
var var_string3 = $("#var"+3).val();
var data_string1 = $("#data"+1).val();
var data_string2 = $("#data"+2).val();
var data_string3 = $("#data"+3).val();
var sTime = Math.max(
Number(dataList[data_string1][2][var_string1][0]),
Number(dataList[data_string2][2][var_string2][0]),
Number(dataList[data_string3][2][var_string3][0])
).toString();
var eTime = Math.min(
Number(dataList[data_string1][2][var_string1][1]),
Number(dataList[data_string2][2][var_string2][1]),
Number(dataList[data_string3][2][var_string3][1])
).toString();
$("#startYear").html("start year-month: (earliest:" + sTime.slice(0,4) + "-" + sTime.slice(4,6) + ")");
$("#endYear").html("end year-month: (latest:" + eTime.slice(0,4) + "-" + eTime.slice(4,6) + ")");
}
// monthList__
var monthList = [
"Jan",
"Feb",
"Mar",
"Apr",
"May",
"Jun",
"Jul",
"Aug",
"Sep",
"Oct",
"Nov",
"Dec",
];
// fillMonth__
function fillMonth() {
var temp1 = 'select months:\
<select name="months" id="months" onchange="select_months()">\
<option id="all">select all</option>\
<option id="none">select none</option>\
<option id="summer">Summer:Jun-Jul-Aug</option>\
<option id="autum">Autumn:Sep-Oct-Nov</option>\
<option id="winter">Winter:Dec-Jan-Feb</option>\
<option id="spring">Spring:Mar-Apr-May</option> </select>';
$("#monthSelect0").html(temp1);
temp1 = '<form role="form">';
for (var i=0; i<monthList.length; i++) {
temp1 +=
'<label"><input type="checkbox" id="' + monthList[i] + '" value="' + monthList[i] + '" checked/></label>'
+ monthList[i] + " ";
}
temp1 += '</form>';
$("#monthSelect").html(temp1);
}
// unselect all months in the checkboxes
// reset_months__
function reset_months()
{
for (var i=0; i<monthList.length; i++) {
document.getElementById(monthList[i]).checked = false;
}
}
// see if no month is selected
// no_month_check
function no_month_check()
{
var nonChecked = true;
for (var i=0; i<monthList.length; i++) {
if (document.getElementById(monthList[i]).checked == true) {
nonChecked = false;
}
}
return nonChecked;
}
// select all months in the checkboxes
// select_all_months__
function select_all_months()
{
for (var i=0; i<monthList.length; i++) {
document.getElementById(monthList[i]).checked = true;
}
}
// select checkboxes based on "months" dropdown
// select_months__
function select_months()
{
var s1=document.getElementById("months");
// alert(s1.selectedIndex);
// alert(s1.options[s1.selectedIndex].value);
// disable the download button because of this change
disable_download_button();
// "select none"
if (s1.selectedIndex == 1) {
reset_months();
}
// "select all"
if (s1.selectedIndex == 0) {
select_all_months();
}
// "summer"
if (s1.selectedIndex == 2) {
reset_months();
document.getElementById('Jun').checked = true;
document.getElementById('Jul').checked = true;
document.getElementById('Aug').checked = true;
}
// "autumn"
if (s1.selectedIndex == 3) {
reset_months();
document.getElementById('Sep').checked = true;
document.getElementById('Oct').checked = true;
document.getElementById('Nov').checked = true;
}
// "winter"
if (s1.selectedIndex == 4) {
reset_months();
document.getElementById('Dec').checked = true;
document.getElementById('Jan').checked = true;
document.getElementById('Feb').checked = true;
}
// "spring"
if (s1.selectedIndex == 5) {
reset_months();
document.getElementById('Mar').checked = true;
document.getElementById('Apr').checked = true;
document.getElementById('May').checked = true;
}
}
// 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;
}
// parse_pres__
function parse_pres(pres10) {
var pres1 = "";
if (pres10=="") {pres1 = naValue; }
else {
if (!(isNaN(Number(pres10)))) {
pres1 = pres10;
} else {
var checkNan = 0;
var pres2 = [];
var temp1=pres10.split(",");
//for (var i in temp1) {
for (var i=0; i<temp1.length; i++) {
if (isNaN(Number(temp1[i]))) {
checkNan = 1;
} else {
pres2.push(Number(temp1[i]));
}
}
if (pres2.length>0) { pres1 = pres2.join(); }
else { pres1 = naValue; }
}
}
return pres1;
}
// get_querystring__
function get_querystring() {
var queries = {};
$.each(document.location.search.substr(1).split('&'),function(c,q){
var i = q.split('=');
queries[i[0].toString()] = i[1].toString();
});
return queries;
}
function showUrl(inputs) {
var v1q, v2, key0, key1;
try {
var temp1 = "";
//for (var i=0; i<inputs.length; i++) {
for (key0 in inputs) {
if (!inputs.hasOwnProperty(key0)) { continue; }
if ( key0 == "Image" || key0 == "data_url" ) { continue; }
key1 = inputs[key0];
try {
v1q = $("#"+key1).val();
if ( key0.slice(0,5) == "model" ) {
v1q = v1q.replace("/", "_");
}
if ( key0 == "startT" || key0 == "endT" ) {
v1q = v1q.replace("-", "");
}
if ( key0 == "purpose" ) {
v1q = escape(v1q);
}
/*
if ( key0.slice(0,4) == "pres" ) {
if ( Number(v1q) == NaN ) {
v1q = "-999999";
}
}
*/
temp1 += key0 + "=" + v1q + "&";
} catch(err) {}
}
temp1 = temp1.slice(0,-1);
} catch(err) {
var temp1 = document.location.search.substr(1);
}
document.getElementById("actionUrl").innerHTML = document.location.href.split('?')[0] + "?" + temp1;
}