Commented all functions in the main javascript include file
rodzic
20e5ddb350
commit
91f21399d2
|
@ -69,15 +69,19 @@ function displayOld() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// A prediction has just been requested, so initialise the progress bar
|
||||||
|
// and fade in the prediction progress window
|
||||||
function predSub() {
|
function predSub() {
|
||||||
appendDebug(null, 1); // clear debug window
|
appendDebug(null, 1); // clear debug window
|
||||||
appendDebug("Sending data to server...");
|
appendDebug("Sending data to server...");
|
||||||
// initialise progress bar
|
// Initialise progress bar
|
||||||
$("#prediction_progress").progressbar({ value: 0 });
|
$("#prediction_progress").progressbar({ value: 0 });
|
||||||
$("#prediction_status").html("Sending data to server...");
|
$("#prediction_status").html("Sending data to server...");
|
||||||
$("#status_message").fadeIn(250);
|
$("#status_message").fadeIn(250);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Make an AJAX request to the server and get the scenario information
|
||||||
|
// for a given UUID, then populate the launch card with it
|
||||||
function populateFormByUUID(pred_uuid) {
|
function populateFormByUUID(pred_uuid) {
|
||||||
$.get("ajax.php", { "action":"getModelByUUID", "uuid":pred_uuid }, function(data) {
|
$.get("ajax.php", { "action":"getModelByUUID", "uuid":pred_uuid }, function(data) {
|
||||||
if ( !data.valid ) {
|
if ( !data.valid ) {
|
||||||
|
@ -112,11 +116,14 @@ function populateFormByUUID(pred_uuid) {
|
||||||
}, 'json');
|
}, 'json');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Add information to the hashstring of the current window
|
||||||
function addHashLink(link) {
|
function addHashLink(link) {
|
||||||
var ln = "#!/" + link;
|
var ln = "#!/" + link;
|
||||||
window.location = ln;
|
window.location = ln;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Clear the Launch Site dropdown and repopulate it with the information from
|
||||||
|
// sites.json, as well as an "Other" option to open the saved locations window
|
||||||
function populateLaunchSite() {
|
function populateLaunchSite() {
|
||||||
$("#site > option").remove();
|
$("#site > option").remove();
|
||||||
$.getJSON("sites.json", function(sites) {
|
$.getJSON("sites.json", function(sites) {
|
||||||
|
@ -129,6 +136,9 @@ function populateLaunchSite() {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// The onchange handler for the launch locations dropdown menu, which opens
|
||||||
|
// the saved locations window if "Other" was chosen; sets the launch card
|
||||||
|
// lat/lon and plots the new launch location otherwise
|
||||||
function changeLaunchSite() {
|
function changeLaunchSite() {
|
||||||
var selectedName = $("#site").val();
|
var selectedName = $("#site").val();
|
||||||
if ( selectedName == "Other" ) {
|
if ( selectedName == "Other" ) {
|
||||||
|
@ -150,6 +160,8 @@ function changeLaunchSite() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Populate and enable the download CSV, KML and Pan To links, and write the
|
||||||
|
// time the prediction was run and the model used to the Scenario Info window
|
||||||
function writePredictionInfo(current_uuid, run_time, gfs_timestamp) {
|
function writePredictionInfo(current_uuid, run_time, gfs_timestamp) {
|
||||||
// populate the download links
|
// populate the download links
|
||||||
$("#dlcsv").attr("href", "preds/"+current_uuid+"/flight_path.csv");
|
$("#dlcsv").attr("href", "preds/"+current_uuid+"/flight_path.csv");
|
||||||
|
@ -162,6 +174,8 @@ function writePredictionInfo(current_uuid, run_time, gfs_timestamp) {
|
||||||
$("#gfs_timestamp").html(gfs_timestamp);
|
$("#gfs_timestamp").html(gfs_timestamp);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Hide the launch card and scenario information windows, then fade out the
|
||||||
|
// map before setting an interval to poll for prediction progress
|
||||||
function handlePred(pred_uuid) {
|
function handlePred(pred_uuid) {
|
||||||
$("#prediction_status").html("Searching for wind data...");
|
$("#prediction_status").html("Searching for wind data...");
|
||||||
$("#input_form").hide("slide", { direction: "down" }, 500);
|
$("#input_form").hide("slide", { direction: "down" }, 500);
|
||||||
|
@ -173,6 +187,7 @@ function handlePred(pred_uuid) {
|
||||||
+ pred_uuid + "')", stdPeriod);
|
+ pred_uuid + "')", stdPeriod);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Get the CSV for a UUID and then pass it to the parseCSV() function
|
||||||
function getCSV(pred_uuid) {
|
function getCSV(pred_uuid) {
|
||||||
$.get("ajax.php", { "action":"getCSV", "uuid":pred_uuid }, function(data) {
|
$.get("ajax.php", { "action":"getCSV", "uuid":pred_uuid }, function(data) {
|
||||||
if(data != null) {
|
if(data != null) {
|
||||||
|
@ -192,6 +207,10 @@ function getCSV(pred_uuid) {
|
||||||
}, 'json');
|
}, 'json');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Called at set inervals to examine the progress.json file on the server for
|
||||||
|
// a UUID to check for progress, and update the progress window
|
||||||
|
// Also handles high latency connections by increasing the timeout before
|
||||||
|
// the AJAX request completes and decreasing polling interval
|
||||||
function getJSONProgress(pred_uuid) {
|
function getJSONProgress(pred_uuid) {
|
||||||
$.ajax({
|
$.ajax({
|
||||||
url:"preds/"+pred_uuid+"/progress.json",
|
url:"preds/"+pred_uuid+"/progress.json",
|
||||||
|
@ -226,6 +245,9 @@ function getJSONProgress(pred_uuid) {
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// The contents of progress.json are given to this function to process
|
||||||
|
// If the prediction has completed, reset the GUI and display the new
|
||||||
|
// prediction; otherwise update the progress window
|
||||||
function processProgress(progress) {
|
function processProgress(progress) {
|
||||||
if ( progress['error'] ) {
|
if ( progress['error'] ) {
|
||||||
clearInterval(ajaxEventHandle);
|
clearInterval(ajaxEventHandle);
|
||||||
|
@ -272,6 +294,11 @@ function processProgress(progress) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Once a flight path has been returned from the server, this function takes
|
||||||
|
// an array where each elemt is a line of that file
|
||||||
|
// Constructs the path, plots the launch/land/burst markers, writes the
|
||||||
|
// prediction information to the scenario information window and then plots
|
||||||
|
// the delta square
|
||||||
function parseCSV(lines) {
|
function parseCSV(lines) {
|
||||||
if( lines.length <= 0 ) {
|
if( lines.length <= 0 ) {
|
||||||
appendDebug("The server returned an empty CSV file");
|
appendDebug("The server returned an empty CSV file");
|
||||||
|
@ -405,6 +432,7 @@ function parseCSV(lines) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Return the size of a given associative array
|
||||||
function getAssocSize(arr) {
|
function getAssocSize(arr) {
|
||||||
var i = 0;
|
var i = 0;
|
||||||
for ( j in arr ) {
|
for ( j in arr ) {
|
||||||
|
@ -413,149 +441,6 @@ function getAssocSize(arr) {
|
||||||
return i;
|
return i;
|
||||||
}
|
}
|
||||||
|
|
||||||
function setupEventHandlers() {
|
|
||||||
// Attach form submit event handler to Run Prediction button
|
|
||||||
$("#modelForm").ajaxForm({
|
|
||||||
url: 'ajax.php?action=submitForm',
|
|
||||||
type: 'POST',
|
|
||||||
dataType: 'json',
|
|
||||||
success: function(data) {
|
|
||||||
if ( data.valid == "false" ) {
|
|
||||||
// If something went wrong, write the error messages to
|
|
||||||
// the debug window
|
|
||||||
appendDebug("The server rejected the submitted form data:");
|
|
||||||
appendDebug(data.error);
|
|
||||||
// And throw an error window to alert the user of what happened
|
|
||||||
throwError("The server rejected the submitted form data: \n"
|
|
||||||
+ data.error);
|
|
||||||
resetGUI();
|
|
||||||
} else if ( data.valid == "true" ) {
|
|
||||||
predSub();
|
|
||||||
appendDebug("The server accepted the form data");
|
|
||||||
// Update the global current_uuid variable
|
|
||||||
current_uuid = data.uuid;
|
|
||||||
appendDebug("The server gave us uuid:<br>" + current_uuid);
|
|
||||||
appendDebug("Starting to poll for progress JSON");
|
|
||||||
handlePred(current_uuid);
|
|
||||||
} else {
|
|
||||||
appendDebug("data.valid was not a recognised state: "
|
|
||||||
+ data.valid);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
// Location saving to cookies event handlers
|
|
||||||
$("#req_sub_btn").click(function() {
|
|
||||||
saveLocationToCookie();
|
|
||||||
});
|
|
||||||
$("#cookieLocations").click(function() {
|
|
||||||
appendDebug("User requested locally saved launch sites");
|
|
||||||
if ( constructCookieLocationsTable("cusf_predictor") ) {
|
|
||||||
$("#location_save_local").fadeIn();
|
|
||||||
}
|
|
||||||
});
|
|
||||||
$("#req_open").click(function() {
|
|
||||||
var lat = $("#lat").val();
|
|
||||||
var lon = $("#lon").val();
|
|
||||||
$("#req_lat").val(lat);
|
|
||||||
$("#req_lon").val(lon);
|
|
||||||
$("#req_alt").val($("#initial_alt").val());
|
|
||||||
appendDebug("Trying to reverse geo-code the launch point");
|
|
||||||
rvGeocode(lat, lon, "req_name");
|
|
||||||
$("#location_save").fadeIn();
|
|
||||||
})
|
|
||||||
$("#req_close").click(function() {
|
|
||||||
$("#location_save").fadeOut();
|
|
||||||
});
|
|
||||||
$("#locations_close").click(function() {
|
|
||||||
$("#location_save_local").fadeOut();
|
|
||||||
});;
|
|
||||||
|
|
||||||
// Activate the "Set with Map" link
|
|
||||||
$("#setWithClick").click(function() {
|
|
||||||
setLatLonByClick(true);
|
|
||||||
});
|
|
||||||
|
|
||||||
// Activate the "use burst calc" links
|
|
||||||
$("#burst-calc-show").click(function() {
|
|
||||||
$("#burst-calc-wrapper").show();
|
|
||||||
});
|
|
||||||
$("#burst-calc-use").click(function() {
|
|
||||||
// Write the ascent rate and burst altitude to the launch card
|
|
||||||
$("#ascent").val($("#ar").html());
|
|
||||||
$("#burst").val($("#ba").html());
|
|
||||||
$("#burst-calc-wrapper").hide();
|
|
||||||
});
|
|
||||||
$("#burst-calc-close").click(function() {
|
|
||||||
// Close the burst calc without doing anything
|
|
||||||
$("#burst-calc-wrapper").hide();
|
|
||||||
$("#modelForm").show();
|
|
||||||
});
|
|
||||||
$("#burst-calc-advanced-show").click(function() {
|
|
||||||
// Show the burst calculator constants
|
|
||||||
$("#burst-calc").slideUp();
|
|
||||||
$("#burst-calc-constants").slideDown();
|
|
||||||
});
|
|
||||||
$("#burst-calc-advanced-hide").click(function() {
|
|
||||||
// Show the burst calculator constants
|
|
||||||
$("#burst-calc-constants").slideUp();
|
|
||||||
$("#burst-calc").slideDown();
|
|
||||||
});
|
|
||||||
|
|
||||||
// Launch card parameter onchange event handlers
|
|
||||||
$("#lat").change(function() {
|
|
||||||
plotClick();
|
|
||||||
});
|
|
||||||
$("#lon").change(function() {
|
|
||||||
plotClick();
|
|
||||||
});
|
|
||||||
|
|
||||||
$("#delta_lat").change(function() {
|
|
||||||
drawDeltaSquare(map);
|
|
||||||
});
|
|
||||||
$("#delta_lon").change(function() {
|
|
||||||
drawDeltaSquare(map);
|
|
||||||
});
|
|
||||||
$("#site").change(function() {
|
|
||||||
changeLaunchSite();
|
|
||||||
});
|
|
||||||
|
|
||||||
// Controls in the Scenario Information window
|
|
||||||
$("#showHideDebug").click(function() {
|
|
||||||
toggleWindow("scenario_template", "showHideDebug", "Show Debug", "Hide Debug");
|
|
||||||
});
|
|
||||||
$("#showHideDebug_status").click(function() {
|
|
||||||
toggleWindow("scenario_template", "showHideDebug", "Show Debug", "Hide Debug");
|
|
||||||
});
|
|
||||||
$("#showHideForm").click(function() {
|
|
||||||
toggleWindow("input_form", "showHideForm", "Show Launch Card",
|
|
||||||
"Hide Launch Card");
|
|
||||||
});
|
|
||||||
$("#closeErrorWindow").click(function() {
|
|
||||||
$("#error_window").fadeOut();
|
|
||||||
});
|
|
||||||
|
|
||||||
$("#about_window_show").click(function() {
|
|
||||||
$("#about_window").dialog({
|
|
||||||
modal:true,
|
|
||||||
width:600,
|
|
||||||
buttons: {
|
|
||||||
Close: function() {
|
|
||||||
$(this).dialog('close');
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
// Tipsylink tooltip class activation
|
|
||||||
$(".tipsyLink").tipsy({fade: true});
|
|
||||||
|
|
||||||
// Add the onmove event handler to the map canvas
|
|
||||||
google.maps.event.addListener(map, 'mousemove', function(event) {
|
|
||||||
showMousePos(event.latLng);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
function POSIXtoHM(timestamp, format) {
|
function POSIXtoHM(timestamp, format) {
|
||||||
// using JS port of PHP's date()
|
// using JS port of PHP's date()
|
||||||
var ts = new Date();
|
var ts = new Date();
|
||||||
|
|
Ładowanie…
Reference in New Issue