File size: 3,069 Bytes
8b37533
0866ea5
 
 
 
 
8b37533
0866ea5
 
 
 
 
8b37533
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
eace12d
8b37533
 
 
 
 
 
 
0866ea5
 
8b37533
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
0866ea5
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
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";
}