Remote JavaScript files

This commit is contained in:
Lukáš Kucharczyk 2023-11-20 21:15:18 +01:00
parent 600c0d284c
commit d947c6efe1
Signed by: lukas
SSH Key Fingerprint: SHA256:vMuSwvwAvcT6htVAioMP7rzzwMQNi3roESyhv+nAxeg
5 changed files with 57 additions and 44 deletions

View File

@ -1,24 +1,24 @@
import { syncSelectInputUntilChanged } from './utils.js'; import { syncSelectInputUntilChanged } from "./utils.js";
let syncData = [ let syncData = [
{ {
"source": "#id_game", source: "#id_game",
"source_value": "dataset.name", source_value: "dataset.name",
"target": "#id_name", target: "#id_name",
"target_value": "value" target_value: "value",
}, },
{ {
"source": "#id_game", source: "#id_game",
"source_value": "textContent", source_value: "textContent",
"target": "#id_sort_name", target: "#id_sort_name",
"target_value": "value" target_value: "value",
}, },
{ {
"source": "#id_game", source: "#id_game",
"source_value": "dataset.year", source_value: "dataset.year",
"target": "#id_year_released", target: "#id_year_released",
"target_value": "value" target_value: "value",
}, },
] ];
syncSelectInputUntilChanged(syncData, "form"); syncSelectInputUntilChanged(syncData, "form");

View File

@ -1,12 +1,12 @@
import { syncSelectInputUntilChanged } from './utils.js' import { syncSelectInputUntilChanged } from "./utils.js";
let syncData = [ let syncData = [
{ {
"source": "#id_name", source: "#id_name",
"source_value": "value", source_value: "value",
"target": "#id_sort_name", target: "#id_sort_name",
"target_value": "value" target_value: "value",
} },
] ];
syncSelectInputUntilChanged(syncData, "form") syncSelectInputUntilChanged(syncData, "form");

View File

@ -30,13 +30,13 @@ getEl("#id_type").onchange = () => {
setupElementHandlers(); setupElementHandlers();
}; };
document.body.addEventListener('htmx:beforeRequest', function(event) { document.body.addEventListener("htmx:beforeRequest", function (event) {
// Assuming 'Purchase1' is the element that triggers the HTMX request // Assuming 'Purchase1' is the element that triggers the HTMX request
if (event.target.id === 'id_edition') { if (event.target.id === "id_edition") {
var idEditionValue = document.getElementById('id_edition').value; var idEditionValue = document.getElementById("id_edition").value;
// Condition to check - replace this with your actual logic // Condition to check - replace this with your actual logic
if (idEditionValue != '') { if (idEditionValue != "") {
event.preventDefault(); // This cancels the HTMX request event.preventDefault(); // This cancels the HTMX request
} }
} }

View File

@ -7,10 +7,14 @@ for (let button of document.querySelectorAll("[data-target]")) {
button.addEventListener("click", (event) => { button.addEventListener("click", (event) => {
event.preventDefault(); event.preventDefault();
if (type == "now") { if (type == "now") {
targetElement.value = toISOUTCString(new Date); targetElement.value = toISOUTCString(new Date());
} else if (type == "copy") { } else if (type == "copy") {
const oppositeName = targetElement.name == "timestamp_start" ? "timestamp_end" : "timestamp_start"; const oppositeName =
document.querySelector(`[name='${oppositeName}']`).value = targetElement.value; targetElement.name == "timestamp_start"
? "timestamp_end"
: "timestamp_start";
document.querySelector(`[name='${oppositeName}']`).value =
targetElement.value;
} else if (type == "toggle") { } else if (type == "toggle") {
if (targetElement.type == "datetime-local") targetElement.type = "text"; if (targetElement.type == "datetime-local") targetElement.type = "text";
else targetElement.type = "datetime-local"; else targetElement.type = "datetime-local";

View File

@ -75,7 +75,10 @@ function syncSelectInputUntilChanged(syncData, parentSelector = document) {
* @param {string} property - The property to retrieve the value from. * @param {string} property - The property to retrieve the value from.
*/ */
function getValueFromProperty(sourceElement, property) { function getValueFromProperty(sourceElement, property) {
let source = (sourceElement instanceof HTMLSelectElement) ? sourceElement.selectedOptions[0] : sourceElement let source =
sourceElement instanceof HTMLSelectElement
? sourceElement.selectedOptions[0]
: sourceElement;
if (property.startsWith("dataset.")) { if (property.startsWith("dataset.")) {
let datasetKey = property.slice(8); // Remove 'dataset.' part let datasetKey = property.slice(8); // Remove 'dataset.' part
return source.dataset[datasetKey]; return source.dataset[datasetKey];
@ -93,13 +96,11 @@ function getValueFromProperty(sourceElement, property) {
*/ */
function getEl(selector) { function getEl(selector) {
if (selector.startsWith("#")) { if (selector.startsWith("#")) {
return document.getElementById(selector.slice(1)) return document.getElementById(selector.slice(1));
} } else if (selector.startsWith(".")) {
else if (selector.startsWith(".")) { return document.getElementsByClassName(selector);
return document.getElementsByClassName(selector) } else {
} return document.getElementsByTagName(selector);
else {
return document.getElementsByTagName(selector)
} }
} }
@ -116,7 +117,7 @@ function getEl(selector) {
function conditionalElementHandler(...configs) { function conditionalElementHandler(...configs) {
configs.forEach(([condition, targetElements, callbackfn1, callbackfn2]) => { configs.forEach(([condition, targetElements, callbackfn1, callbackfn2]) => {
if (condition()) { if (condition()) {
targetElements.forEach(elementName => { targetElements.forEach((elementName) => {
let el = getEl(elementName); let el = getEl(elementName);
if (el === null) { if (el === null) {
console.error(`Element ${elementName} doesn't exist.`); console.error(`Element ${elementName} doesn't exist.`);
@ -125,7 +126,7 @@ function conditionalElementHandler(...configs) {
} }
}); });
} else { } else {
targetElements.forEach(elementName => { targetElements.forEach((elementName) => {
let el = getEl(elementName); let el = getEl(elementName);
if (el === null) { if (el === null) {
console.error(`Element ${elementName} doesn't exist.`); console.error(`Element ${elementName} doesn't exist.`);
@ -167,4 +168,12 @@ function disableElementsWhenTrue(targetSelect, targetValue, elementList) {
]); ]);
} }
export { toISOUTCString, syncSelectInputUntilChanged, getEl, conditionalElementHandler, disableElementsWhenFalse, disableElementsWhenTrue, getValueFromProperty }; export {
toISOUTCString,
syncSelectInputUntilChanged,
getEl,
conditionalElementHandler,
disableElementsWhenFalse,
disableElementsWhenTrue,
getValueFromProperty,
};