VvebOIDC/public/admin/default/js/site.js

155 lines
5.0 KiB
JavaScript

document.querySelectorAll("input[type=radio][name='settings[date_format]']").forEach(e => e.addEventListener("click", function (e) {
let custom_date_format = document.getElementById("custom_date_format");
custom_date_format.value = this.value
custom_date_format.dispatchEvent(new KeyboardEvent('change', {bubbles:true}));
}));
document.querySelectorAll("input[type=radio][name='settings[time_format]']").forEach(e => e.addEventListener("click", function (e) {
let custom_time_format = document.getElementById("custom_time_format");
custom_time_format.value = this.value
custom_time_format.dispatchEvent(new KeyboardEvent('change', {bubbles:true}));//new Event("input", { bubbles: true});
}));
document.getElementById("custom_time_format").addEventListener("keypress", function (e) {
let url = window.location.pathname + "?" + (new URL(document.location.toString()).searchParams) + "&action=dateFormat&format=" + encodeURI(this.value);
delay(() => {
fetch(url)
.then(response => {
if (!response.ok) { throw new Error(response) }
return response.text()
})
.then(data => {
document.querySelector(".time-example").innerHTML = data;
})
.catch(error => {
console.log(error.statusText);
});
}, 500);
});
document.getElementById("custom_date_format").addEventListener("keypress", function (e) {
let url = window.location.pathname + "?" + (new URL(document.location.toString()).searchParams) + "&action=dateFormat&format=" + encodeURI(this.value);
delay(() => {
fetch(url)
.then(response => {
if (!response.ok) { throw new Error(response) }
return response.text()
})
.then(data => {
document.querySelector(".date-example").innerHTML = data;
})
.catch(error => {
console.log(error.statusText);
});
}, 500);
});
document.getElementById("input-invoice-format").addEventListener("change", function (e) {
let url = window.location.pathname + "?" + (new URL(document.location.toString()).searchParams) + "&action=invoiceFormat&format=" + encodeURI(this.value);
delay(() => {
fetch(url)
.then(response => {
if (!response.ok) { throw new Error(response) }
return response.text()
})
.then(data => {
document.getElementById("invoice-format-preview").innerHTML = data;
})
.catch(error => {
console.log(error.statusText);
});
}, 500);
});
document.getElementById("input-order-id-format").addEventListener("change", function (e) {
let url = window.location.pathname + "?" + (new URL(document.location.toString()).searchParams) + "&action=orderIdFormat&format=" + encodeURI(this.value);
delay(() => {
fetch(url)
.then(response => {
if (!response.ok) { throw new Error(response) }
return response.text()
})
.then(data => {
document.getElementById("order-id-format-preview").innerHTML = data;
})
.catch(error => {
console.log(error.statusText);
});
}, 500);
});
function insertInvoiceFormat(inputName, variable) {
let input = document.getElementById("input-" + inputName);
input.value = input.value + '-' + variable;
input.dispatchEvent(new Event('change', {bubbles:true}));
return false;
}
let name = document.getElementById("input-site-name");
//let key = document.getElementById("input-site-key");
let host = document.getElementById("input-site-host");
let path = document.getElementById("input-site-path");
let fullUrl = document.querySelector("[data-v-site-full-url]");
let url = fullUrl.querySelector("span");
//let keyTextOrig = nameToKey(key.value);
let hostTextOrig = nameToHost(host.value.replace(domain, ''));
function nameToKey(name) {
//return (slugify(name) + " " + domain).replaceAll("."," ");
return (slugify(name) + " *").replaceAll("."," ");
}
function nameToHost(name) {
if (name.indexOf(".") > 0) {
return "*." + name;
} else {
return (slugify(name) + "." + domain);
}
}
let updateDomain = function(e) {
let text = name.value;
delay(() => {
let hostText = host.value;
if (hostTextOrig == hostText || !hostText) {
hostTextOrig = nameToHost(text);
host.value = hostTextOrig;
}
url.textContent = host.value + (subdir ? '/' + subdir : "") + (path.value ? '/' + path.value : "");
fullUrl.href = "//" + url.textContent;
}, 500);
}
name.addEventListener('keyup', updateDomain);
host.addEventListener('keyup', updateDomain);
path.addEventListener('keyup', updateDomain);
let regions = [];
function addRegionsToSelect(regionSelect, data) {
regionSelect.replaceChildren();
for (i in data) {
let region = data[i];
regionSelect.append(new Option(region.name, region.region_id));
}
}
document.getElementById("input-country").addEventListener("change", function (e) {
fetch(window.location.pathname + "?" + (new URL(document.location.toString()).searchParams) + "&action=regions&country_id=" + this.value)
.then(response => {
if (!response.ok) { throw new Error(response) }
return response.json();
})
.then(data => {
addRegionsToSelect(document.getElementById("input-region"), data);
})
.catch(error => {
console.log(error.statusText);
});
});