<html>
<head>
<title>Soil Moisture Date Downloader</title>
<!--<link rel="stylesheet" href="https://code.jquery.com/ui/1.12.1/themes/base/jquery-ui.css">-->
<link rel="stylesheet" href="jquery-ui.min.css">
<script src="https://code.jquery.com/jquery-1.12.4.js"></script>
<script src="https://code.jquery.com/ui/1.12.1/jquery-ui.js"></script>
<script>
var min_date = new Date(2015, 9-1, 1); //September 1, 2015
var max_date = "+0d"; //Today (zero days from today)
var depths = new Array(5, 25, 60);
$(document).ready(function() {
// create checkboxes for the depths
for(var i = 0; i < depths.length; i++) {
var container = $("#pick_depths");
var n = depths[i].toString() + 'cm';
var v = depths[i];
$('<input />', { type: 'checkbox', id: n, value: v, checked: 'checked' }).appendTo(container);
$('<label />', { 'for': n, text: n }).appendTo(container);
}
$("#outputs").tabs();
var startdt = $("#datepicker_start").datepicker({
dateFormat: "yy-mm-dd",
//minDate: new Date(2015, 9-1, 1),
minDate: min_date,
//maxDate: "+0D",
maxDate: max_date,
changeMonth: true,
changeYear: true,
onSelect: function(dt,inst){
$("#blah").text(dt);
enddt.datepicker("option", "minDate", dt);
}
});
var enddt = $("#datepicker_end").datepicker({
dateFormat: "yy-mm-dd",
//minDate: new Date(2015, 9-1, 1),
//maxDate: "+0D",
minDate: min_date,
maxDate: max_date,
changeMonth: true,
changeYear: true,
onSelect: function(dt,inst){
$("#blah2").text(dt);
startdt.datepicker("option", "maxDate", dt);
//$(this).change();
}
});
startdt.datepicker("setDate", min_date);
enddt.datepicker("setDate", max_date);
function make_date_array() {
var start_date = startdt.datepicker("getDate");
var end_date = enddt.datepicker("getDate");
var tmp_date = start_date;
var date_array = new Array();
while(tmp_date <= end_date) {
//
date_array.push(new Date(tmp_date));
tmp_date.setDate(tmp_date.getDate() + 1);
}
return date_array;
}
function vwc_raster_url(dt,depth) {
// dt: Date object
// depth: int
var dt_str = dt.toISOString().split('T')[0];
var url = 'http://soilmapnik.hpc.okstate.edu/' + dt_str + '/vwc/' + depth + '/raster.tif';
return url;
}
function vwc_filename(dt,depth) {
var dt_str = dt.toISOString().split('T')[0];
return 'raster_'+dt_str+'_vwc_'+depth+'cm.tif';
}
function make_link(url) {
return '<a href="'+url+'">'+url+'</a>';
}
function make_curl(url,file) {
return 'curl -o '+file+' '+url;
}
function make_wget(url,file) {
return 'wget -O - '+url+' > '+file;
}
$("#generate_urls").click(function(){
$("#urls").html(""); // clear existing urls
$("#curl").html("");
$("#wget").html("");
$("#download_list").html("");
var selected_dates = make_date_array();
var selected_depths = [];
for(var i=0; i<depths.length; i++) {
var elid = depths[i].toString() + 'cm';
document.getElementById(elid).checked && selected_depths.push(depths[i]);
}
/* Use all depths if no depths were selected */
if(selected_depths.length == 0) {
selected_depths = depths.slice(); // copy the array
}
for(var i=0; i<selected_depths.length; i++) {
for(var j=0; j<selected_dates.length; j++) {
var u = vwc_raster_url(selected_dates[j], selected_depths[i]);
var f = vwc_filename(selected_dates[j], selected_depths[i]);
var link = make_link(u);
var curl = make_curl(u,f);
var wget = make_wget(u,f);
$("#urls").append(link + '<br/>\n');
$("#curl").append(curl + '<br/>\n');
$("#wget").append(wget + '<br/>\n');
}
}
$("#download_list").append('<a href="data:text/plain;charset=UTF-8,'+encodeURIComponent($("#urls").text())+'" download="vwc_links.txt">Links</a><br/>');
$("#download_list").append('<a href="data:text/plain;charset=UTF-8,'+encodeURIComponent($("#curl").text())+'" download="vwc_curl.txt">curl Commands</a><br/>');
$("#download_list").append('<a href="data:text/plain;charset=UTF-8,'+encodeURIComponent($("#wget").text())+'" download="vwc_wget.txt">wget Commands</a><br/>');
});
});
</script>
</head>
<body>
<h1>Soil Moisture Date Downloader</h1>
<!--<p>Date: <input type="text" id="datepicker"></p>
<p> <br/><br/></p>-->
<label for="pick_depths">Select depths</label>
<div id="pick_depths">
<!--<input type="checkbox" name="5cm" id="5cm" value="5" checked="checked"><label for="5cm">5cm</label>
<input type="checkbox" name="25cm" id="25cm" value="25" checked="checked"><label for="25cm">25cm</label>
<input type="checkbox" name="60cm" id="60cm" value="60" checked="checked"><label for="60cm">60cm</label>-->
</div>
<br/>
<div id="pick_dates" style="overflow:auto;">
<div id="pick_start_date" style="float:left;">
<label for="datepicker_start">Select start date</label>
<div id="datepicker_start"></div>
<br/>
</div>
<div id="pick_end_date" style="float:left;">
<label for="datepicker_end">Select end date</label>
<div id="datepicker_end"></div>
<br/>
</div>
</div>
<button id="generate_urls">Generate URLs</button>
<br/>
<p><span id="blah"></span></p>
<p><span id="blah2"></span></p>
<div id="outputs">
<ul>
<li><a href="#urls">Links</a></li>
<li><a href="#curl">curl Commands</a></li>
<li><a href="#wget">wget Commands</a></li>
<li><a href="#download_list">Download List</a></li>
</ul>
<div id="urls"></div>
<div id="curl"></div>
<div id="wget"></div>
<div id="download_list"></div>
</div>
</body>
</html>