Newer
Older
soil_moisture / date_downloader / date_downloader.js

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);
    }

    // setup jqueryui tabs for the output area
    $("#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) {
            //push a copy of the date onto the array
            //without the "new Date()" part, the entire array 
            //ends up set to the last 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];
        return 'http://soilmapnik.hpc.okstate.edu/'+dt_str+'/vwc/'+depth+'/raster.tif';
    }

    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;
    }

    function make_powershell(url,file) {
        return 'Invoke-WebRequest -URI '+url+' -OutFile '+file;
    }

    $("#generate_urls").click(function(){
        /* clear the exusting urls and download links */
        $("#urls").html("");
        $("#curl").html("");
        $("#wget").html("");
        $("#powershell").html("");
        $("#download_list").html("");

        /* Get the selected depths and dates */
        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
        }

        /* Make download links, curl commands, and wget commands */
        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);
                var powershell = make_powershell(u,f);
                $("#urls").append(link + '<br/>\n');
                $("#curl").append(curl + '<br/>\n');
                $("#wget").append(wget + '<br/>\n');
                $("#powershell").append(powershell + '<br/>\n');
            }
        }

        /* Make links to download the URLs, curl commands, and wget commands as text files */
        $("#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/>');
        $("#download_list").append('<a href="data:text/plain;charset=UTF-8,'+encodeURIComponent($("#powershell").text())+'" download="vwc_powershell.txt">PowerShell Commands</a><br/>');
    });

});