| <!DOCTYPE html> |
| <html lang="th"> |
| <head> |
| <meta charset="UTF-8"> |
| <meta name="viewport" content="width=device-width, initial-scale=1.0"> |
| <title>เข้าร่วมกลุ่ม - Group Maker</title> |
| <script src="https://cdn.tailwindcss.com"></script> |
| <script src="https://unpkg.com/feather-icons"></script> |
| <script src="https://cdn.jsdelivr.net/npm/feather-icons/dist/feather.min.js"></script> |
| <link href="https://unpkg.com/aos@2.3.1/dist/aos.css" rel="stylesheet"> |
| <script src="https://unpkg.com/aos@2.3.1/dist/aos.js"></script> |
| <style> |
| @import url('https://fonts.googleapis.com/css2?family=Prompt:wght@300;400;500;600;700&display=swap'); |
| |
| body { |
| font-family: 'Prompt', sans-serif; |
| } |
| |
| .progress-bar { |
| transition: width 0.5s ease; |
| } |
| |
| .group-color-A { |
| background-color: #ef4444; |
| } |
| |
| .group-color-B { |
| background-color: #3b82f6; |
| } |
| |
| .group-color-C { |
| background-color: #10b981; |
| } |
| |
| .group-color-D { |
| background-color: #f59e0b; |
| } |
| |
| .group-color-E { |
| background-color: #8b5cf6; |
| } |
| |
| .pulse { |
| animation: pulse 2s infinite; |
| } |
| |
| @keyframes pulse { |
| 0% { |
| transform: scale(1); |
| } |
| 50% { |
| transform: scale(1.05); |
| } |
| 100% { |
| transform: scale(1); |
| } |
| } |
| </style> |
| </head> |
| <body class="bg-gray-50"> |
| |
| <nav class="bg-white shadow-sm"> |
| <div class="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8"> |
| <div class="flex justify-between h-16"> |
| <div class="flex"> |
| <div class="flex-shrink-0 flex items-center"> |
| <i data-feather="users" class="text-indigo-600 h-8 w-8"></i> |
| <span class="ml-2 text-xl font-bold text-gray-900">Group Maker</span> |
| </div> |
| </div> |
| <div class="hidden sm:ml-6 sm:flex sm:items-center"> |
| <a href="index.html" class="px-3 py-2 rounded-md text-sm font-medium text-gray-700 hover:text-indigo-600 hover:bg-gray-100">หน้าหลัก</a> |
| </div> |
| <div class="-mr-2 flex items-center sm:hidden"> |
| <button type="button" class="inline-flex items-center justify-center p-2 rounded-md text-gray-400 hover:text-gray-500 hover:bg-gray-100 focus:outline-none focus:ring-2 focus:ring-inset focus:ring-indigo-500"> |
| <i data-feather="menu" class="block h-6 w-6"></i> |
| </button> |
| </div> |
| </div> |
| </div> |
| </nav> |
|
|
| |
| <div class="max-w-md mx-auto py-12 px-4 sm:px-6 lg:px-8"> |
| |
| <div id="qr-section" class="bg-white p-6 rounded-lg shadow-md text-center" data-aos="fade-up"> |
| <div class="flex justify-center"> |
| <i data-feather="maximize-2" class="h-12 w-12 text-indigo-600"></i> |
| </div> |
| <h2 class="mt-4 text-xl font-bold text-gray-900">สแกน QR Code</h2> |
| <p class="mt-2 text-gray-600">สแกน QR Code จากแอดมินเพื่อเข้าร่วมกิจกรรม</p> |
| |
| <div class="mt-6"> |
| <button onclick="showJoinForm()" class="inline-flex items-center px-4 py-2 border border-transparent text-sm font-medium rounded-md shadow-sm text-white bg-indigo-600 hover:bg-indigo-700 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-indigo-500"> |
| <i data-feather="camera" class="mr-2"></i> สแกน QR Code |
| </button> |
| <p class="mt-2 text-sm text-gray-500">หรือกรอกรหัสกิจกรรมด้วยตนเอง</p> |
| </div> |
| </div> |
|
|
| |
| <div id="join-form-section" class="bg-white p-6 rounded-lg shadow-md mt-6 hidden" data-aos="fade-up"> |
| <div class="flex justify-center"> |
| <i data-feather="user-plus" class="h-12 w-12 text-indigo-600"></i> |
| </div> |
| <h2 class="mt-4 text-xl font-bold text-gray-900">เข้าร่วมกิจกรรม</h2> |
| |
| <div class="mt-6 space-y-4"> |
| <div> |
| <label for="session-id" class="block text-sm font-medium text-gray-700">รหัสกิจกรรม</label> |
| <input type="text" id="session-id" class="mt-1 block w-full border border-gray-300 rounded-md shadow-sm py-2 px-3 focus:outline-none focus:ring-indigo-500 focus:border-indigo-500"> |
| </div> |
| |
| <div> |
| <label for="user-name" class="block text-sm font-medium text-gray-700">ชื่อของคุณ</label> |
| <input type="text" id="user-name" class="mt-1 block w-full border border-gray-300 rounded-md shadow-sm py-2 px-3 focus:outline-none focus:ring-indigo-500 focus:border-indigo-500" placeholder="ชื่อเล่นหรือชื่อจริง"> |
| </div> |
| |
| <div> |
| <label for="user-id" class="block text-sm font-medium text-gray-700">รหัสประจำตัว (ไม่จำเป็น)</label> |
| <input type="text" id="user-id" class="mt-1 block w-full border border-gray-300 rounded-md shadow-sm py-2 px-3 focus:outline-none focus:ring-indigo-500 focus:border-indigo-500" placeholder="เช่น รหัสนักเรียน, รหัสพนักงาน"> |
| </div> |
| |
| <div class="pt-2"> |
| <button onclick="joinSession()" class="w-full flex justify-center py-2 px-4 border border-transparent rounded-md shadow-sm text-sm font-medium text-white bg-indigo-600 hover:bg-indigo-700 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-indigo-500"> |
| <i data-feather="log-in" class="mr-2"></i> เข้าร่วมกิจกรรม |
| </button> |
| </div> |
| </div> |
| </div> |
|
|
| |
| <div id="waiting-room" class="bg-white p-6 rounded-lg shadow-md mt-6 hidden" data-aos="fade-up"> |
| <div class="flex justify-center"> |
| <i data-feather="clock" class="h-12 w-12 text-indigo-600"></i> |
| </div> |
| <h2 class="mt-4 text-xl font-bold text-gray-900">กำลังรอผลการจัดกลุ่ม</h2> |
| <p class="mt-2 text-gray-600">กิจกรรม: <span id="activity-name" class="font-medium">กิจกรรมทีมบิลด์ดิ้ง</span></p> |
| |
| <div class="mt-6"> |
| <div class="flex justify-between text-sm text-gray-600"> |
| <span>ผู้เข้าร่วมแล้ว</span> |
| <span><span id="current-participants">12</span>/<span id="max-participants">30</span></span> |
| </div> |
| <div class="mt-1 w-full bg-gray-200 rounded-full h-2.5"> |
| <div id="progress-bar" class="progress-bar bg-indigo-600 h-2.5 rounded-full" style="width: 40%"></div> |
| </div> |
| </div> |
| |
| <div class="mt-6"> |
| <div class="bg-indigo-50 p-4 rounded-md"> |
| <div class="flex"> |
| <div class="flex-shrink-0"> |
| <i data-feather="info" class="h-5 w-5 text-indigo-600"></i> |
| </div> |
| <div class="ml-3"> |
| <p class="text-sm text-indigo-700"> |
| กรุณารอจนกว่าแอดมินจะเริ่มการจัดกลุ่ม ผลลัพธ์จะแสดงที่นี่โดยอัตโนมัติ |
| </p> |
| </div> |
| </div> |
| </div> |
| </div> |
| </div> |
|
|
| |
| <div id="results-section" class="bg-white p-6 rounded-lg shadow-md mt-6 hidden" data-aos="fade-up"> |
| <div class="flex justify-center"> |
| <i data-feather="award" class="h-12 w-12 text-indigo-600"></i> |
| </div> |
| <h2 class="mt-4 text-xl font-bold text-gray-900">ผลการจัดกลุ่ม</h2> |
| <p class="mt-2 text-gray-600">กิจกรรม: <span class="font-medium">กิจกรรมทีมบิลด์ดิ้ง</span></p> |
| |
| <div class="mt-6"> |
| <div class="pulse bg-indigo-100 text-indigo-800 text-lg font-bold py-3 px-4 rounded-lg text-center"> |
| คุณอยู่ใน <span id="user-group" class="group-color-A px-2 py-1 rounded">กลุ่ม A</span> |
| </div> |
| </div> |
| |
| <div class="mt-6 space-y-4"> |
| <div class="group-card group-color-A p-4 rounded-lg shadow-sm"> |
| <h3 class="font-bold text-white">กลุ่ม A</h3> |
| <ul class="mt-2 space-y-1"> |
| <li class="text-white">สมชาย ใจดี</li> |
| <li class="text-white">คุณเอง</li> |
| <li class="text-white">สุภาพร สวยงาม</li> |
| </ul> |
| </div> |
| |
| <div class="group-card group-color-B p-4 rounded-lg shadow-sm"> |
| <h3 class="font-bold text-white">กลุ่ม B</h3> |
| <ul class="mt-2 space-y-1"> |
| <li class="text-white">วิเชษฐ์ เก่งมาก</li> |
| <li class="text-white">อรุณี สดใส</li> |
| <li class="text-white">ประเสริฐ ชัยชนะ</li> |
| </ul> |
| </div> |
| |
| <div class="group-card group-color-C p-4 rounded-lg shadow-sm"> |
| <h3 class="font-bold text-white">กลุ่ม C</h3> |
| <ul class="mt-2 space-y-1"> |
| <li class="text-white">สมหมาย ใจเย็น</li> |
| <li class="text-white">สุดารัตน์ น่ารัก</li> |
| <li class="text-white">อนุชา กล้าหาญ</li> |
| </ul> |
| </div> |
| </div> |
| |
| <div class="mt-6"> |
| <button class="w-full flex justify-center py-2 px-4 border border-transparent rounded-md shadow-sm text-sm font-medium text-white bg-indigo-600 hover:bg-indigo-700 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-indigo-500"> |
| <i data-feather="save" class="mr-2"></i> บันทึกผลการจัดกลุ่ม |
| </button> |
| </div> |
| </div> |
| </div> |
|
|
| <script> |
| AOS.init(); |
| feather.replace(); |
| |
| function showJoinForm() { |
| document.getElementById('qr-section').classList.add('hidden'); |
| document.getElementById('join-form-section').classList.remove('hidden'); |
| } |
| |
| function joinSession() { |
| const sessionId = document.getElementById('session-id').value; |
| const userName = document.getElementById('user-name').value; |
| |
| if (!sessionId || !userName) { |
| alert('กรุณากรอกรหัสกิจกรรมและชื่อของคุณ'); |
| return; |
| } |
| |
| |
| document.getElementById('join-form-section').classList.add('hidden'); |
| document.getElementById('waiting-room').classList.remove('hidden'); |
| |
| |
| let participants = 12; |
| const maxParticipants = 30; |
| const interval = setInterval(() => { |
| participants += Math.floor(Math.random() * 3); |
| if (participants > maxParticipants) { |
| participants = maxParticipants; |
| clearInterval(interval); |
| |
| |
| setTimeout(() => { |
| document.getElementById('waiting-room').classList.add('hidden'); |
| document.getElementById('results-section').classList.remove('hidden'); |
| |
| |
| const audio = new Audio('https://assets.mixkit.co/sfx/preview/mixkit-positive-interface-beep-221.mp3'); |
| audio.play(); |
| }, 5000); |
| } |
| |
| document.getElementById('current-participants').textContent = participants; |
| const progressPercent = (participants / maxParticipants) * 100; |
| document.getElementById('progress-bar').style.width = `${progressPercent}%`; |
| }, 1000); |
| } |
| </script> |
| </body> |
| </html> |
|
|