Spaces:
Runtime error
Runtime error
| 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 = ` | |
| <input | |
| type="checkbox" | |
| name="members" | |
| value="${name}" | |
| id="checkbox-${name}" | |
| class="px-4 py-2 border rounded focus:outline-none focus:ring-2 focus:ring-blue-500 bg-gray-700 text-white" | |
| /> | |
| <lavel for="checkbox-${name}" class="text-lg">${name}</label> | |
| `; | |
| 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"; | |
| } | |