140 lines
3.8 KiB
JavaScript
140 lines
3.8 KiB
JavaScript
function saveSettingsToLocalStorage() {
|
|
const checkboxes = document.querySelectorAll("input[type=checkbox]");
|
|
const textfields = document.querySelectorAll("input[type=text]");
|
|
const numberfields = document.querySelectorAll("input[type=number]");
|
|
const selects = document.querySelectorAll("select");
|
|
|
|
const settings = {};
|
|
|
|
checkboxes.forEach((checkbox) => {
|
|
settings[checkbox.name] = checkbox.checked;
|
|
});
|
|
textfields.forEach((textfield) => {
|
|
settings[textfield.name] = textfield.value;
|
|
});
|
|
numberfields.forEach((numberfield) => {
|
|
settings[numberfield.name] = numberfield.value;
|
|
});
|
|
selects.forEach((select) => {
|
|
settings[select.name] = select.value;
|
|
});
|
|
|
|
localStorage.setItem("chatWidgetSettings", JSON.stringify(settings));
|
|
}
|
|
|
|
|
|
function loadSettingsFromLocalStorage() {
|
|
const saved = localStorage.getItem("chatWidgetSettings");
|
|
if (!saved) return;
|
|
|
|
const settings = JSON.parse(saved);
|
|
|
|
Object.keys(settings).forEach((key) => {
|
|
const input = document.querySelector(`[name="${key}"]`);
|
|
if (input) {
|
|
if (input.type === "checkbox") {
|
|
input.checked = settings[key];
|
|
} else {
|
|
input.value = settings[key];
|
|
}
|
|
}
|
|
});
|
|
}
|
|
|
|
|
|
function pushChangeEvents() {
|
|
const checkboxes = document.querySelectorAll("input[type=checkbox]");
|
|
const textfields = document.querySelectorAll("input[type=text]");
|
|
const numberfields = document.querySelectorAll("input[type=number]");
|
|
const selects = document.querySelectorAll("select");
|
|
|
|
checkboxes.forEach((checkbox) => {
|
|
checkbox.addEventListener('change', () => {
|
|
generateUrl();
|
|
saveSettingsToLocalStorage();
|
|
});
|
|
});
|
|
textfields.forEach((textfield) => {
|
|
textfield.addEventListener('input', () => {
|
|
generateUrl();
|
|
saveSettingsToLocalStorage();
|
|
});
|
|
});
|
|
numberfields.forEach((numberfield) => {
|
|
numberfield.addEventListener('input', () => {
|
|
generateUrl();
|
|
saveSettingsToLocalStorage();
|
|
});
|
|
});
|
|
selects.forEach((select) => {
|
|
select.addEventListener('change', () => {
|
|
generateUrl();
|
|
saveSettingsToLocalStorage();
|
|
});
|
|
});
|
|
}
|
|
|
|
|
|
function generateUrl() {
|
|
document.getElementById("outputUrl").value = '';
|
|
|
|
var runThisLocally = document.querySelector("input[type=checkbox][name=runThisLocally]").checked;
|
|
console.log(runThisLocally);
|
|
var baseUrl = '';
|
|
|
|
if (runThisLocally == false) {
|
|
baseUrl = 'https://vortisrd.github.io/chatrd/chat.html'
|
|
}
|
|
|
|
const checkboxes = document.querySelectorAll("input[type=checkbox]");
|
|
const textfields = document.querySelectorAll("input[type=text]");
|
|
const numberfields = document.querySelectorAll("input[type=number]");
|
|
const selects = document.querySelectorAll("select");
|
|
|
|
const params = new URLSearchParams();
|
|
|
|
|
|
selects.forEach((select) => {
|
|
params.set(select.name, select.value);
|
|
});
|
|
checkboxes.forEach((checkbox) => {
|
|
params.set(checkbox.name, checkbox.checked);
|
|
});
|
|
textfields.forEach((textfield) => {
|
|
params.set(textfield.name, textfield.value);
|
|
});
|
|
numberfields.forEach((numberfield) => {
|
|
params.set(numberfield.name, numberfield.value);
|
|
});
|
|
|
|
document.getElementById("outputUrl").value = baseUrl + '?' + params.toString();
|
|
document.querySelector('#chat-preview iframe').src = 'chat.html?'+params.toString();
|
|
}
|
|
|
|
function copyUrl() {
|
|
|
|
const output = document.getElementById("outputUrl");
|
|
|
|
output.select();
|
|
document.execCommand("copy");
|
|
|
|
const button = document.querySelector('.url-bar button');
|
|
const buttonDefaulText = 'Copy URL';
|
|
|
|
button.textContent = 'ChatRD URL Copied!';
|
|
button.style.backgroundColor = "#00dd63";
|
|
|
|
setTimeout(() => {
|
|
button.textContent = buttonDefaulText;
|
|
button.removeAttribute('style');
|
|
}, 3000);
|
|
|
|
|
|
}
|
|
|
|
window.addEventListener('load', () => {
|
|
loadSettingsFromLocalStorage();
|
|
generateUrl();
|
|
pushChangeEvents();
|
|
});
|