mirror of
https://git.cant.at/Madeorsk/PollVerlaine
synced 2024-11-25 02:24:31 +01:00
Madeorsk
5ac9b5d0e4
* Finished Home page behavior; * Started Poll (just the title for now); * Changed POST /polls return code to 206 (CREATED); + Add a configuration file (only app_url inside of it for now).
54 lines
1.5 KiB
JavaScript
54 lines
1.5 KiB
JavaScript
let next_id = 1;
|
|
|
|
document.addEventListener("DOMContentLoaded", () => {
|
|
let choices = document.getElementById("choices");
|
|
let choice_template = document.getElementById("choice");
|
|
|
|
function create_choice()
|
|
{
|
|
let choice = document.createElement("div");
|
|
choice.classList.add("choice");
|
|
choice.innerHTML = choice_template.innerHTML.replace(/:id/g, next_id);
|
|
choice.querySelector("button.delete").addEventListener("click", () => {
|
|
choices.removeChild(choice);
|
|
});
|
|
choices.append(choice);
|
|
next_id++;
|
|
}
|
|
|
|
document.getElementById("add-choice").addEventListener("click", create_choice);
|
|
while(next_id < 4) create_choice();
|
|
|
|
let form = document.getElementById("newpoll");
|
|
form.addEventListener("submit", (event) => {
|
|
event.preventDefault();
|
|
|
|
function get_choices(form)
|
|
{
|
|
let choices = [];
|
|
form.querySelectorAll("#choices .choice input").forEach((el) => {
|
|
choices.push(el.value);
|
|
});
|
|
return choices;
|
|
}
|
|
|
|
fetch("/polls", {
|
|
method: "POST",
|
|
body: JSON.stringify({
|
|
title: form.querySelector(`input[name="title"]`).value,
|
|
options: get_choices(form),
|
|
}),
|
|
headers: {
|
|
"Content-Type": "application/json",
|
|
},
|
|
}).then((res) => {
|
|
return res.json();
|
|
}).then((json) => {
|
|
form.setAttribute("hidden", true);
|
|
let result_el = document.getElementById("result");
|
|
result_el.innerHTML = result_el.innerHTML.replace(/:poll_title/g, json.title);
|
|
result_el.innerHTML = result_el.innerHTML.replace(/:poll_url/g, `/polls/${json.id}`);
|
|
result_el.removeAttribute("hidden");
|
|
});
|
|
});
|
|
}); |