- Use proper HTML; - Add specific CSS of this page in a dedicated file; - Add common header; - Move places' JavaScript in a dedicated file, improve its code and fix its access to DOM elements.
96 lines
3.2 KiB
JavaScript
96 lines
3.2 KiB
JavaScript
function addPlace() {
|
|
const placeElement = document.createElement("div");
|
|
placeElement.classList.add("place");
|
|
|
|
const inputElement = document.createElement("input");
|
|
inputElement.classList.add("place_input");
|
|
inputElement.setAttribute("type", "text");
|
|
inputElement.setAttribute("id", "");
|
|
|
|
placeElement.appendChild(inputElement);
|
|
|
|
const buttonElement = document.createElement("button");
|
|
buttonElement.classList.add("delete_place_btn", "action_button", "short_color_transition");
|
|
buttonElement.setAttribute("title", "Cliquez ici pour supprimer ce lieu");
|
|
|
|
const svgElement = document.createElementNS("http://www.w3.org/2000/svg", "svg");
|
|
svgElement.classList.add("action_icon", "short_color_transition");
|
|
svgElement.setAttribute("viewBox", "0 0 48 48");
|
|
|
|
const pathElement = document.createElementNS("http://www.w3.org/2000/svg", "path");
|
|
pathElement.setAttribute("d",
|
|
"M12.45 38.7 9.3 35.55 20.85 24 9.3 12.5l3.15-3.2L24 20.8 35.55 9.3l3.15 3.2L27.2 24l11.5 11.55-3.15 3.15L24 27.2Z");
|
|
|
|
svgElement.appendChild(pathElement);
|
|
|
|
buttonElement.appendChild(svgElement);
|
|
buttonElement.appendChild(document.createTextNode("Supprimer le lieu"));
|
|
buttonElement.addEventListener("click", () => deletePlace(buttonElement));
|
|
|
|
placeElement.appendChild(buttonElement);
|
|
|
|
const placesElement = document.getElementById("places");
|
|
if (placesElement === null) {
|
|
// No places element, this should never happen
|
|
// Do nothing in this case
|
|
return;
|
|
}
|
|
|
|
placesElement.appendChild(placeElement);
|
|
}
|
|
|
|
function deletePlace(placeRemoveButton) {
|
|
if (!confirm("Voulez-vous vraiement supprimer ce lieu ?")) {
|
|
return;
|
|
}
|
|
|
|
const placeElement = placeRemoveButton.parentNode;
|
|
placeElement.parentNode.removeChild(placeElement);
|
|
}
|
|
|
|
function saveChanges() {
|
|
const data = [];
|
|
for (const section of document.getElementsByClassName("place")) {
|
|
const place = {};
|
|
place["id"] = section.id;
|
|
place["name"] = section.querySelector("input").value;
|
|
data.push(place);
|
|
}
|
|
|
|
makeAPIRequest("admin/setPlaces", {"places": data, "lang": "FR"}, {"content": "json"}).then(() => {
|
|
alert("Opération effectuée avec succès");
|
|
});
|
|
}
|
|
|
|
function setListenersToPlaceAdditionButton() {
|
|
const addPlaceButton = document.getElementById("add_place");
|
|
if (addPlaceButton === null) {
|
|
// There is no add_place button, this should never happen
|
|
// Do nothing in this case
|
|
return;
|
|
}
|
|
|
|
addPlaceButton.addEventListener("click", addPlace);
|
|
}
|
|
|
|
function setListenersToPlaceDeletionButtons() {
|
|
for (const deletePlaceButton of document.getElementsByClassName("delete_place_btn")) {
|
|
deletePlaceButton.addEventListener("click", () => deletePlace(deletePlaceButton));
|
|
};
|
|
}
|
|
|
|
function setListenersToSaveChangesButton() {
|
|
const saveChangesButton = document.getElementById("save_changes");
|
|
if (saveChangesButton === null) {
|
|
// There is no save_changes button, this should never happen
|
|
// Do nothing in this case
|
|
return;
|
|
}
|
|
|
|
saveChangesButton.addEventListener("click", saveChanges);
|
|
}
|
|
|
|
setListenersToPlaceDeletionButtons();
|
|
setListenersToPlaceAdditionButton();
|
|
setListenersToSaveChangesButton();
|