You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
177 lines
6.0 KiB
JavaScript
177 lines
6.0 KiB
JavaScript
// const submit = document.getElementById("button");
|
|
mycheckbox = document.getElementById("restricted");
|
|
mycheckbox.addEventListener('change',checkboxCallback);
|
|
window.onload = function() {
|
|
if (mycheckbox.checked) {
|
|
document.getElementById("radius_label").hidden = false;
|
|
document.getElementById("mandatory-radius").hidden = false;
|
|
var radiusSelect = document.getElementById("radius");
|
|
radiusSelect.hidden = false;
|
|
radiusSelect.required = true;
|
|
}
|
|
}
|
|
|
|
var lat = document.getElementById("latitude");
|
|
lat.setValue = function(newValue) {
|
|
this.value = newValue;
|
|
valueReceived();
|
|
}
|
|
|
|
function valueReceived() {
|
|
let load = document.getElementById("loadingText");
|
|
load.innerHTML = "Location retrieved";
|
|
load.style.color = "green";
|
|
|
|
}
|
|
function valueRequested() {
|
|
let load = document.getElementById("loadingText");
|
|
load.innerHTML = "Location requested. Please wait...";
|
|
load.style.color = "red";
|
|
|
|
}
|
|
function checkboxCallback(event) {
|
|
const radiusLabel = document.getElementById("radius_label");
|
|
const radiusSelect = document.getElementById("radius");
|
|
const mandatoryRadius = document.getElementById("mandatory-radius");
|
|
if (event.currentTarget.checked) {
|
|
radiusLabel.hidden = false;
|
|
mandatoryRadius.hidden = false;
|
|
radiusSelect.hidden = false;
|
|
radiusSelect.required = true;
|
|
valueRequested();
|
|
getLocation();
|
|
} else {
|
|
radiusLabel.hidden = true;
|
|
mandatoryRadius.hidden = true;
|
|
radiusSelect.hidden = true;
|
|
radiusSelect.required = false;
|
|
}
|
|
}
|
|
|
|
function getLocation() {
|
|
console.log("GeoLocation");
|
|
if (navigator.geolocation) {
|
|
navigator.geolocation.getCurrentPosition(showPosition);
|
|
} else {
|
|
console.log("Your browser does not support geolocation.");
|
|
}
|
|
}
|
|
|
|
function showPosition(position) {
|
|
console.log("Gotten positions");
|
|
console.log(position.coords.latitude);
|
|
console.log(position.coords.longitude);
|
|
|
|
document.getElementById("latitude").setValue(position.coords.latitude);
|
|
document.getElementById("longitude").value = position.coords.longitude;
|
|
console.log("done");
|
|
}
|
|
|
|
// submit.addEventListener('click', validate);
|
|
function validate() {
|
|
//e.preventDefault();
|
|
const checked = document.getElementById("restricted");
|
|
if (checked.checked) {
|
|
const lat = document.getElementById("latitude");
|
|
const long = document.getElementById("longitude");
|
|
if (lat.value === "" || long.value === "") {
|
|
/* wait */
|
|
return false
|
|
}
|
|
}
|
|
|
|
const url = document.getElementById("URL");
|
|
let glink = document.getElementById("GLink");
|
|
const error = document.getElementById("error");
|
|
// if (!url) {
|
|
// /* Flag */
|
|
// }
|
|
let valid = true;
|
|
// const domainExp = new RegExp("^http(s)*:\\/\\/[a-zA-Z0-9\\-]+(\\.[a-zA-Z0-9\\-]+)+[_#]*$");
|
|
const domainExp = new RegExp("^http(s)*:\\/\\/[a-zA-Z0-9\\-]+(\\.[a-zA-Z0-9\\-]+)+[\\/_#a-zA-Z0-9\\-]*$");
|
|
const filepathExp = new RegExp("^[a-zA-Z]+$");
|
|
const glinkExp = new RegExp("^[a-zA-Z]*$");
|
|
let glinkStr = glink.value;
|
|
let count = 0;
|
|
let index = -1;
|
|
let domain = "";
|
|
let filepath = "";
|
|
for (let i = 0; i < url.value.length; i++) {
|
|
if (url.value.charAt(i) == '/') {
|
|
count++;
|
|
}
|
|
if (count == 3) {
|
|
index = i;
|
|
break;
|
|
}
|
|
}
|
|
if (count >= 3) {
|
|
domain = url.value.substring(0, index);
|
|
if (index == url.value.length - 1) {
|
|
filepath = url.value.charAt(index);
|
|
} else {
|
|
filepath = url.value.substring(index, url.value.length - 1);
|
|
}
|
|
alert("Domain is " + domain + " filepath is " + filepath);
|
|
} else {
|
|
domain = url.value;
|
|
}
|
|
console.log(domain);
|
|
|
|
if (glinkStr === "") {
|
|
var result = window.confirm("You have left the glink field blank. A random one will be generated for you.");
|
|
if (result === false) {
|
|
return false;
|
|
}
|
|
}
|
|
|
|
|
|
if (domain.match(domainExp) && glinkStr.match(glinkExp))/** and is available? */{
|
|
if (error.classList.contains("visible")) {
|
|
error.classList.remove("visible");
|
|
}
|
|
if (url.classList.contains("invalid")) {
|
|
url.classList.remove("invalid");
|
|
}
|
|
url.classList.add("valid");
|
|
if (glink.classList.contains("invalid")) {
|
|
glink.classList.remove("invalid");
|
|
}
|
|
glink.classList.add("valid");
|
|
error.setAttribute('aria-hidden', true);
|
|
error.setAttribute('aria-invalid', false);
|
|
console.log("Valid with url= " +url.value+ " glink=" +glink);
|
|
return valid;
|
|
} else {
|
|
/*flag*/
|
|
error.classList.add("visible");
|
|
|
|
//error.classList.add("hidden");
|
|
if (!domain.match(domainExp)) {
|
|
if (url.classList.contains("valid")) {
|
|
url.classList.remove("valid");
|
|
}
|
|
url.classList.add("invalid");
|
|
} else {
|
|
if (url.classList.contains("invalid")) {
|
|
url.classList.remove("invalid");
|
|
}
|
|
url.classList.add("valid");
|
|
}
|
|
if (!glinkStr.match(glinkExp)) {
|
|
if (glink.classList.contains("valid")) {
|
|
glink.classList.remove("valid");
|
|
}
|
|
glink.classList.add("invalid");
|
|
} else {
|
|
if (glink.classList.contains("invalid")) {
|
|
glink.classList.remove("invalid");
|
|
}
|
|
glink.classList.add("valid");
|
|
}
|
|
error.setAttribute('aria-hidden', false);
|
|
error.setAttribute('aria-invalid', true);
|
|
return false;
|
|
}
|
|
}
|