2025-01-29 16:44:20 +01:00
|
|
|
import {Controller} from "@hotwired/stimulus";
|
|
|
|
|
|
|
|
|
|
|
|
export default class extends Controller {
|
2025-01-29 19:06:48 +01:00
|
|
|
addEntry(event) {
|
|
|
|
event.preventDefault();
|
2025-01-29 16:44:20 +01:00
|
|
|
|
2025-01-29 19:06:48 +01:00
|
|
|
const formClone = this.element.querySelector('form').cloneNode(true);
|
|
|
|
|
|
|
|
formClone.querySelectorAll("select").forEach(input => {
|
|
|
|
input.value = "1";
|
|
|
|
});
|
|
|
|
formClone.querySelector('input').value = '';
|
|
|
|
|
|
|
|
this.element.querySelector('.forms').appendChild(formClone);
|
2025-01-29 16:44:20 +01:00
|
|
|
}
|
|
|
|
|
2025-01-29 19:06:48 +01:00
|
|
|
removeEntry(event) {
|
|
|
|
event.preventDefault();
|
2025-01-29 16:44:20 +01:00
|
|
|
|
2025-01-29 19:06:48 +01:00
|
|
|
if (document.querySelector('.forms').childElementCount === 1) {
|
|
|
|
return;
|
2025-01-29 16:44:20 +01:00
|
|
|
}
|
2025-01-29 19:06:48 +01:00
|
|
|
|
|
|
|
event.target.closest('form').remove();
|
2025-01-29 16:44:20 +01:00
|
|
|
}
|
|
|
|
|
2025-01-29 19:06:48 +01:00
|
|
|
submit(event) {
|
|
|
|
event.preventDefault();
|
|
|
|
|
|
|
|
const forms = document.querySelectorAll('form');
|
|
|
|
const formData = this.getFormData(forms);
|
|
|
|
|
|
|
|
fetch('/ticket/submit', {
|
|
|
|
method: 'POST',
|
|
|
|
body: JSON.stringify(formData),
|
|
|
|
headers: {
|
|
|
|
'Content-Type': 'application/json'
|
|
|
|
}
|
|
|
|
}).then(response => {
|
|
|
|
if (!response.ok) {
|
|
|
|
alert('An error occurred');
|
|
|
|
}
|
|
|
|
});
|
2025-01-29 16:44:20 +01:00
|
|
|
}
|
|
|
|
|
2025-01-29 19:06:48 +01:00
|
|
|
getFormData(forms) {
|
|
|
|
const formData = [];
|
|
|
|
forms.forEach(form => {
|
|
|
|
formData.push(Object.fromEntries(new FormData(form).entries()));
|
|
|
|
})
|
|
|
|
|
|
|
|
return formData;
|
2025-01-29 16:44:20 +01:00
|
|
|
}
|
|
|
|
}
|