mirror of
https://git.ianrenton.com/ian/spothole.git
synced 2025-12-15 16:43:38 +00:00
100 lines
3.3 KiB
JavaScript
100 lines
3.3 KiB
JavaScript
// Method called to add a spot to the server
|
|
function addSpot() {
|
|
try {
|
|
// Save settings (this will save "your call" for future use)
|
|
saveSettings();
|
|
|
|
// Unpack the user's entered values
|
|
var dx = $("#dx-call").val().toUpperCase();
|
|
var freqStr = $("#freq").val();
|
|
var mode = $("#mode").val().toUpperCase();
|
|
var dxGrid = $("#dx-grid").val();
|
|
var comment = $("#comment").val();
|
|
var de = $("#de-call").val().toUpperCase();
|
|
|
|
var spot = {}
|
|
if (dx != "") {
|
|
spot["dx_call"] = dx;
|
|
} else {
|
|
showAddSpotError("A DX callsign is required in order to spot.");
|
|
return;
|
|
}
|
|
if (freqStr != "") {
|
|
spot["freq"] = parseFloat(freqStr) * 1000;
|
|
} else {
|
|
showAddSpotError("A frequency is required in order to spot.");
|
|
return;
|
|
}
|
|
if (mode != "") {
|
|
spot["mode"] = mode;
|
|
}
|
|
if (dxGrid != "") {
|
|
spot["dx_grid"] = dxGrid;
|
|
}
|
|
if (comment != "") {
|
|
spot["comment"] = comment;
|
|
}
|
|
if (de != "") {
|
|
spot["de_call"] = de;
|
|
} else {
|
|
showAddSpotError("A spotter callsign is required in order to spot.");
|
|
return;
|
|
}
|
|
spot["time"] = moment.utc().valueOf() / 1000.0;
|
|
|
|
$.ajax("/api/v1/spot", {
|
|
data : JSON.stringify(spot),
|
|
contentType : 'application/json',
|
|
type : 'POST',
|
|
timeout: 10000,
|
|
success: async function (result) {
|
|
$("#result-good").html("<button type='button' class='btn btn-success' style='margin-top: 2em;'><i class='fa-solid fa-check'></i> OK</button>");
|
|
$("#result-bad").html("");
|
|
setTimeout(() => {
|
|
$("#result-good").hide();
|
|
window.location.replace("/");
|
|
}, 1000);
|
|
},
|
|
error: function (result) {
|
|
showAddSpotError(result.responseText.slice(1,-1));
|
|
}
|
|
});
|
|
} catch (error) {
|
|
showAddSpotError(error);
|
|
}
|
|
return false;
|
|
}
|
|
|
|
// Show an "add spot" error.
|
|
function showAddSpotError(text) {
|
|
$("#result-bad").html("<div class='alert alert-danger alert-dismissible fade show mb-0 mt-4' role='alert'><i class='fa-solid fa-triangle-exclamation'></i> " + text + "<button type='button' class='btn-close' data-bs-dismiss='alert' aria-label='Close'></button></div>");
|
|
}
|
|
|
|
// Force callsign and mode capitalisation
|
|
$("#dx-call").change(function () {
|
|
$(this).val($(this).val().trim().toUpperCase());
|
|
});
|
|
$("#de-call").change(function () {
|
|
$(this).val($(this).val().trim().toUpperCase());
|
|
});
|
|
$("#mode").change(function () {
|
|
$(this).val($(this).val().trim().toUpperCase());
|
|
});
|
|
|
|
// Display the intro box, unless the user has already dismissed it once.
|
|
function displayIntroBox() {
|
|
if (localStorage.getItem("add-spot-intro-box-dismissed") == null) {
|
|
$("#add-spot-intro-box").show();
|
|
}
|
|
$("#add-spot-intro-box-dismiss").click(function() {
|
|
localStorage.setItem("add-spot-intro-box-dismissed", true);
|
|
});
|
|
}
|
|
|
|
// Startup
|
|
$(document).ready(function() {
|
|
// Load settings from settings storage
|
|
loadSettings();
|
|
// Display intro box
|
|
displayIntroBox();
|
|
}); |