async function fetchAndRenderMembers() {
try {
const response = await fetch("/confirm");
if (!response.ok) {
throw new Error(`HTTP error! status: ${response.status}`);
}
const data = await response.json();
if (!data || !data.members || !Array.isArray(data.members)) {
console.error("Invalid member data received:", data);
return;
}
const members = data.members;
console.log(members);
const container = document.getElementById("memberCheckboxes");
container.innerHTML = ""; // 既存の中身を消去
members.forEach((name) => {
const newItem = document.createElement("div");
newItem.className = "flex items-center gap-3 mb-2";
console.log(name);
newItem.innerHTML = `
${name}
`;
container.appendChild(newItem);
});
} catch (error) {
console.error("Error fetching members:", error);
}
}
// メンバー削除ボタンのイベントリスナー(修正箇所)
document.getElementById("reset_btn").addEventListener("click", () => {
// メンバー送信処理
const checkboxes = document.querySelectorAll(
'#memberCheckboxes input[type="checkbox"]:checked'
);
const selectedNames = Array.from(checkboxes).map((cb) => cb.value);
if (selectedNames.length === 0) {
alert("メンバーを1人以上選択してください。");
return;
}
fetch("/reset_member", {
method: "POST",
headers: {
"Content-Type": "application/json",
},
body: JSON.stringify({ names: selectedNames }),
})
.then((response) => {
if (!response.ok) {
throw new Error("送信に失敗しました");
}
// サーバーからのJSONレスポンスを期待する
return response.json();
})
.then((data) => {
alert("選択されたメンバーを削除しました。");
fetchAndRenderMembers(); // 再描画
})
.catch((error) => {
console.error("送信エラー:", error);
// エラーメッセージを表示する
alert(`送信エラー: ${error.message}`);
});
});
// ページが表示されたときにチェックボックスを生成
window.addEventListener("DOMContentLoaded", fetchAndRenderMembers);
// 「全選択」ボタン処理
document.getElementById("select-all").addEventListener("click", () => {
const checkboxes = document.querySelectorAll(
'#memberCheckboxes input[type="checkbox"]'
);
checkboxes.forEach((checkbox) => {
checkbox.checked = true;
});
});
// 他のページに移動する関数
function showRecorder() {
window.location.href = "/index";
}