From 47812df1a5a80be82fee8f4ce025dd8d61a410ca Mon Sep 17 00:00:00 2001 From: ARNUT KLANGPRAPUN <136555438+kpp-arnut@users.noreply.github.com> Date: Thu, 7 May 2026 11:56:31 +0700 Subject: [PATCH 01/46] Add files via upload --- KPP.png | Bin 535639 -> 65947 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/KPP.png b/KPP.png index ce71511b171e5cd887ad27136e62f1f9b9e29e12..32b1275cb7dedc1f154bfbe59010cc44acd39f5d 100644 GIT binary patch literal 65947 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 literal 535639 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

`~RxXb6ch>fPVXc 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≪YBDF-}!RReoqNJ%Z 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 E$HbQ4!(WnMSGNaI}%OImiAck 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%0A|6>K+)^%^aq>^?>j)K- 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%0A%h~cw4 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 dB>tx%-RQ(l(|t^vkwo1*cWey_tO Date: Thu, 7 May 2026 11:59:18 +0700 Subject: [PATCH 02/46] Add configuration for Supabase and Google client --- confic.js | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 confic.js diff --git a/confic.js b/confic.js new file mode 100644 index 0000000..f39b2ec --- /dev/null +++ b/confic.js @@ -0,0 +1,6 @@ +// CONFIGURATION +const SUPABASE_URL = 'https://gfikiopjopxhogrhpcpx.supabase.co'; +const SUPABASE_KEY = 'sb_publishable_6pccrfn1Ng_FXHugztRsmw__kW_TtAL'; +const GOOGLE_CLIENT_ID = '292294403643-n756epva6fet5p7clkao3r2damoeai0r.apps.googleusercontent.com'; + +const _sb = supabase.createClient(SUPABASE_URL, SUPABASE_KEY); From b65b46e72f3bd3f688d39a53df8ea446847dbd4f Mon Sep 17 00:00:00 2001 From: ARNUT KLANGPRAPUN <136555438+kpp-arnut@users.noreply.github.com> Date: Thu, 7 May 2026 12:05:20 +0700 Subject: [PATCH 03/46] Update css --- script.js | 1532 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 1532 insertions(+) create mode 100644 script.js diff --git a/script.js b/script.js new file mode 100644 index 0000000..2615327 --- /dev/null +++ b/script.js @@ -0,0 +1,1532 @@ +let googleAccessToken = null; +let isAdmin = false; +let currentUser = null; +let students = []; +let assignments = []; +let gradingRows = []; +let attendanceRows = []; + +let html5QrCode = null, scanning = false, lastScannedText = '', lastScannedAt = 0; +let attendanceQr = null, attendanceScanning = false, lastAttendanceScan = '', lastAttendanceScanAt = 0; +let scorePieChart = null; + +// ─── UI HELPERS ──────────────────────────────────────────── +function $(id) { return document.getElementById(id); } + +function showToast(msg, type = 'info') { + const icons = { success:'✅', error:'❌', info:'ℹ️', warn:'⚠️' }; + const el = document.createElement('div'); + el.className = 'toast ' + type; + el.innerHTML = `${icons[type]||'ℹ️'}${msg}`; + $('toasts').appendChild(el); + setTimeout(() => el.remove(), 3800); +} + +function openModal(id) { $(id).classList.add('open'); } +function closeModal(id) { $(id).classList.remove('open'); } + +document.querySelectorAll('.modal-overlay').forEach(el => { + el.addEventListener('click', e => { if (e.target === el && el.id !== 'm-login') closeModal(el.id); }); +}); + +function setSyncProgress(pct, msg) { + const overlay = $('sync-overlay'); + if (pct <= 0) { overlay.classList.remove('open'); return; } + overlay.classList.add('open'); + $('sync-progress-text').textContent = msg || 'กำลังซิงค์...'; + $('sync-progress-bar').style.width = pct + '%'; +} + +// ─── NAVIGATION ──────────────────────────────────────────── +function showPage(name) { + stopQrScanner(); + stopAttendanceScanner(); + if (name === 'admin' && !isAdmin) { openModal('m-login'); return; } + document.querySelectorAll('.page').forEach(p => p.classList.remove('active')); + document.querySelectorAll('.nav-btn').forEach(b => b.classList.remove('active')); + $('page-' + name).classList.add('active'); + $('nav-' + name).classList.add('active'); + if (name === 'admin' && isAdmin) initAdmin(); +} + +// ─── LOGIN / LOGOUT ──────────────────────────────────────── +async function doLogin() { + const email = $('l-user').value.trim(); + const pass = $('l-pass').value; + const btn = $('login-btn'); + $('l-err').style.display = 'none'; + btn.disabled = true; btn.textContent = 'กำลังยืนยันตัวตน...'; + try { + const { data, error } = await _sb.auth.signInWithPassword({ email, password: pass }); + if (error) throw error; + isAdmin = true; currentUser = data.user; + closeModal('m-login'); + showToast('เข้าสู่ระบบสำเร็จ!', 'success'); + showPage('admin'); + } catch (e) { + $('l-err').textContent = '❌ ' + (e.message === 'Invalid login credentials' ? 'อีเมลหรือรหัสผ่านผิด' : e.message); + $('l-err').style.display = 'block'; + } finally { + btn.disabled = false; btn.textContent = 'เข้าสู่ระบบ'; + } +} + +async function doLogout() { + if (!confirm('คุณต้องการออกจากระบบใช่หรือไม่?')) return; + await _sb.auth.signOut(); + isAdmin = false; currentUser = null; + $('nav-logout').style.display = 'none'; + $('cfg-dot').className = 'cfg-dot'; + showPage('status'); + location.reload(); +} + +// ─── SUPABASE HELPERS ────────────────────────────────────── +const gasCall = async (fnName, ...args) => { + if (fnName === 'getStudents') { + const { data, error } = await _sb.from('students').select('*').order('classroom').order('seat_no'); + if (error) throw error; return data || []; + } + if (fnName === 'getStudentById') { + const { data } = await _sb.from('students').select('*').eq('id', args[0]).maybeSingle(); return data; + } + if (fnName === 'upsertStudent') { + const { data, error } = await _sb.from('students').upsert(args[0], { onConflict: 'id' }).select(); + if (error) throw error; return data; + } + if (fnName === 'upsertStudents') { + const { data, error } = await _sb.from('students').upsert(args[0], { onConflict: 'id' }).select(); + if (error) throw error; return data; + } + if (fnName === 'deleteStudent') { + const { error } = await _sb.from('students').delete().eq('id', args[0]); + if (error) throw error; return true; + } + if (fnName === 'updateBehaviorScore') { + let s = Math.min(15, Math.max(0, args[1])); + const { data, error } = await _sb.from('students').update({ behavior_score: s }).eq('id', args[0]).select(); + if (error) throw error; return data; + } + if (fnName === 'getAllAssignments') { + const { data, error } = await _sb.from('assignments').select('*').order('created_at', { ascending: false }); + if (error) throw error; return data || []; + } + if (fnName === 'getAssignmentById') { + const { data } = await _sb.from('assignments').select('*').eq('id', args[0]).maybeSingle(); return data; + } + if (fnName === 'createAssignment') { + const d = args[0]; + const payload = { name: d.name, subject: d.subject, classroom: d.classroom, + category: d.category || 'ก่อนกลางภาค', passing_score: d.passing_score || 0, + max_score: d.max_score, type: d.type || 'เดี่ยว' }; + const { data: newA, error } = await _sb.from('assignments').insert(payload).select().single(); + if (error) throw error; + const { data: stList } = await _sb.from('students').select('id').eq('classroom', d.classroom); + if (stList?.length) { + const grPay = stList.map(s => ({ student_id: s.id, assignment_id: newA.id, score: null, max_score: d.max_score, status: 'not_sent' })); + await _sb.from('grades').upsert(grPay, { onConflict: 'student_id,assignment_id' }); + } + return newA; + } + if (fnName === 'deleteAssignment') { + const { error } = await _sb.from('assignments').delete().eq('id', args[0]); + if (error) throw error; return true; + } + if (fnName === 'getGradesByStudent') { + const { data, error } = await _sb.from('grades').select('*, assignments(*)').eq('student_id', args[0]); + if (error) throw error; return data || []; + } + if (fnName === 'getGradesByAssignment') { + const { data, error } = await _sb.from('grades').select('*').eq('assignment_id', args[0]); + if (error) throw error; return data || []; + } + if (fnName === 'saveGrades') { + const now = new Date().toISOString(); + const payload = args[0].map(r => ({ + student_id: r.student_id, assignment_id: r.assignment_id, + score: r.score, max_score: r.max_score, status: r.status, updated_at: now + })); + const { data, error } = await _sb.from('grades').upsert(payload, { onConflict: 'student_id,assignment_id' }).select(); + if (error) throw error; return data; + } + if (fnName === 'getGradesByRoom') { + const [classroom, subject] = args; + const { data: asgns } = await _sb.from('assignments').select('*').eq('classroom', classroom).eq('subject', subject).order('created_at'); + const { data: sts } = await _sb.from('students').select('*').eq('classroom', classroom).order('seat_no'); + if (!asgns?.length || !sts?.length) return { students: sts || [], assignments: asgns || [], grades: [] }; + const aIds = asgns.map(a => a.id), sIds = sts.map(s => s.id); + const { data: grs } = await _sb.from('grades').select('*').in('student_id', sIds).in('assignment_id', aIds); + return { students: sts, assignments: asgns, grades: grs || [] }; + } + if (fnName === 'getAttendanceByStudent') { + const { data, error } = await _sb.from('attendance').select('*').eq('student_id', args[0]).order('attendance_date', { ascending: false }); + if (error) throw error; return data || []; + } + if (fnName === 'getAttendanceByDate') { + const [classroom, date] = args; + const { data: sts } = await _sb.from('students').select('id').eq('classroom', classroom); + if (!sts?.length) return []; + const sIds = sts.map(s => s.id); + const { data } = await _sb.from('attendance').select('*').in('student_id', sIds).eq('attendance_date', date); + return data || []; + } + if (fnName === 'saveAttendance') { + const now = new Date().toISOString(); + const payload = args[0].map(r => ({ + student_id: r.student_id, attendance_date: r.attendance_date, + subject: r.subject, status: r.status, remark: r.remark || '', hours: r.hours || 1, updated_at: now + })); + const { data, error } = await _sb.from('attendance').upsert(payload, { onConflict: 'student_id,attendance_date,subject' }).select(); + if (error) throw error; return data; + } + if (fnName === 'getAttendanceForRoom') { + const { data: sts } = await _sb.from('students').select('id').eq('classroom', args[0]); + if (!sts?.length) return []; + const sIds = sts.map(s => s.id); + const { data } = await _sb.from('attendance').select('*').in('student_id', sIds).order('attendance_date', { ascending: true }); + return data || []; + } + if (fnName === 'markStudentSubmitted') { + const [studentId, assignmentId] = args; + const student = await gasCall('getStudentById', studentId); + const assignment = await gasCall('getAssignmentById', assignmentId); + if (!student || !assignment) throw new Error('ไม่พบข้อมูล'); + const saved = await gasCall('saveGrades', [{ student_id: studentId, assignment_id: assignmentId, score: assignment.max_score, max_score: assignment.max_score, status: 'checked' }]); + return { success: true, student, assignment, saved }; + } + if (fnName === 'markStudentAttendance') { + const [studentId, date, status, remark] = args; + const student = await gasCall('getStudentById', studentId); + if (!student) throw new Error('ไม่พบนักเรียน'); + const saved = await gasCall('saveAttendance', [{ student_id: studentId, attendance_date: date, status, remark: remark || '' }]); + return { success: true, student, attendance_date: date, status, saved }; + } + throw new Error('Unknown function: ' + fnName); +}; + +// ─── ADMIN INIT ──────────────────────────────────────────── +const TABS = ['grading','attendance','behavior','students','asgn','export']; + +function adminTab(name) { + stopQrScanner(); stopAttendanceScanner(); + TABS.forEach(t => { + const tab = $('tab-' + t); if (tab) tab.style.display = t === name ? 'block' : 'none'; + const btn = $('t-' + t); if (btn) btn.className = 'tab-btn' + (t === name ? ' active' : ''); + }); + if (name === 'behavior') renderBehaviorList(); +} + +async function initAdmin() { + $('nav-logout').style.display = 'flex'; + try { + const [s, a] = await Promise.all([gasCall('getStudents'), gasCall('getAllAssignments')]); + students = s; assignments = a; + $('cfg-dot').className = 'cfg-dot ok'; + } catch (e) { + showToast('โหลดข้อมูลล้มเหลว: ' + e, 'error'); return; + } + populateDropdowns(); + if (!$('att-date').value) $('att-date').value = new Date().toISOString().slice(0, 10); + renderStudentTable(); renderAsgnTable(); adminTab('grading'); +} + +// ─── DROPDOWNS ───────────────────────────────────────────── +function populateDropdowns() { + const rooms = [...new Set(students.map(s => s.classroom))].sort(); + const subjs = [...new Set(assignments.map(a => a.subject))].sort(); + ['g-room','att-room','f-room','exp-room','exp-att-room'].forEach(id => { + const el = $(id); if (!el) return; + const cur = el.value; + const ph = id === 'f-room' ? '' : ''; + el.innerHTML = ph + rooms.map(r => ``).join(''); + el.value = cur; + }); + ['g-subj','att-subj','exp-subj','exp-att-subj'].forEach(id => { + const el = $(id); if (!el) return; + const cur = el.value; + el.innerHTML = '' + subjs.map(s => ``).join(''); + el.value = cur; + }); + syncAssignSelect(); +} + +function syncAssignSelect() { + const subj = $('g-subj').value, room = $('g-room').value, el = $('g-asgn'); + const cur = el.value; + el.innerHTML = ''; + assignments.filter(a => (!subj || a.subject === subj) && (!room || a.classroom === room)) + .forEach(a => { el.innerHTML += ``; }); + el.value = cur; +} + +// ─── STATUS PAGE ─────────────────────────────────────────── +async function searchStatus() { + const sid = $('st-id-inp').value.trim(); + if (!sid) { showToast('กรุณาใส่รหัสนักเรียน', 'error'); return; } + + $('st-results').style.display = 'none'; + $('st-att-card').style.display = 'none'; + $('st-empty').style.display = 'none'; + + try { + const [grades, attendance, stInfo] = await Promise.all([ + gasCall('getGradesByStudent', sid), + gasCall('getAttendanceByStudent', sid), + gasCall('getStudentById', sid) + ]); + + if (!stInfo) { $('st-empty').style.display = 'block'; return; } + + const fullName = stInfo.first_name + ' ' + stInfo.last_name; + $('st-name').textContent = fullName; + $('st-meta').textContent = 'ชั้น ' + stInfo.classroom + ' เลขที่ ' + stInfo.seat_no + ' | รหัส: ' + sid; + $('st-name-display').textContent = fullName; + $('st-meta-display').textContent = 'ชั้น ' + stInfo.classroom + ' เลขที่ ' + stInfo.seat_no; + + const catStats = { + 'ก่อนกลางภาค': { current: 0, max: 0, weight: 20 }, + 'กลางภาค': { current: 0, max: 0, weight: 20 }, + 'หลังกลางภาค': { current: 0, max: 0, weight: 20 }, + 'ปลายภาค': { current: 0, max: 0, weight: 30 } + }; + + // deduplicate by assignment_id (keep highest score) + const uniqueMap = {}; + grades.forEach(g => { + if (!g.assignments) return; + const aid = g.assignment_id; + const sc = parseFloat(g.score || 0); + if (!uniqueMap[aid] || sc > parseFloat(uniqueMap[aid].score || 0)) uniqueMap[aid] = g; + }); + + const sorted = Object.values(uniqueMap).sort((a, b) => { + const sa = (a.assignments.subject||'').toLowerCase(), sb = (b.assignments.subject||'').toLowerCase(); + const na = (a.assignments.name||'').toLowerCase(), nb = (b.assignments.name||'').toLowerCase(); + return sa.localeCompare(sb) || na.localeCompare(nb); + }); + + let countOk = 0, countWait = 0, countNo = 0; + const tbody = $('st-tbody'); + tbody.innerHTML = ''; + let lastSubject = null; + + if (!sorted.length) { + tbody.innerHTML = 'ยังไม่มีรายการงานในขณะนี้'; + } + + sorted.forEach(g => { + const a = g.assignments || {}; + const cat = a.category || 'ก่อนกลางภาค'; + const type = a.type || 'ทั่วไป'; + const sc = parseFloat(g.score || 0); + const max = parseFloat(a.max_score || 10); + const pass = parseFloat(a.passing_score || 0); + + if (catStats[cat]) { + catStats[cat].max += max; + if (g.status === 'checked') catStats[cat].current += sc; + } + + const subjectName = a.subject || 'วิชาทั่วไป'; + if (subjectName !== lastSubject) { + tbody.innerHTML += `📚 ${subjectName}`; + lastSubject = subjectName; + } + + let badge = '', rowClass = ''; + if (g.status === 'checked') { + badge = (sc < pass && pass > 0) + ? '❌ ไม่ผ่าน' + : '✅ ส่งแล้ว'; + rowClass = (sc < pass && pass > 0) ? 'row-ขาด' : 'row-มา'; + countOk++; + } else if (g.status === 'waiting') { + badge = '⏳ รอตรวจ'; rowClass = 'row-สาย'; countWait++; + } else { + badge = '🚫 ยังไม่ส่ง'; rowClass = 'row-not-sent'; countNo++; + } + + const typeClass = type.includes('สอบ') ? 'badge-amber' : 'badge-blue'; + const scoreHtml = g.status === 'checked' + ? `${g.score} / ${max}` + : ''; + + tbody.innerHTML += ` + + ${cat} + + ${a.name || '—'} + ${a.description ? `

` : ''} + + ${type} + ${badge} + ${scoreHtml} + `; + }); + + // weighted score + let weightedTotal = 0; + const chartPoints = []; + ['ก่อนกลางภาค','กลางภาค','หลังกลางภาค','ปลายภาค'].forEach(lbl => { + const s = catStats[lbl]; + const pt = s.max > 0 ? (s.current / s.max) * s.weight : 0; + weightedTotal += pt; chartPoints.push(pt.toFixed(2)); + }); + const behaviorScore = parseFloat(stInfo.behavior_score ?? 10); + chartPoints.push(behaviorScore.toFixed(2)); + const grandTotal = weightedTotal + behaviorScore; + + $('final-weighted-score').textContent = grandTotal.toFixed(1); + $('final-weighted-score').style.color = grandTotal >= 50 ? '#fff' : 'var(--red)'; + $('cnt-all').textContent = sorted.length; + $('cnt-ok').textContent = countOk; + $('cnt-wait').textContent = countWait; + $('cnt-no').textContent = countNo; + + $('behavior-score-text').textContent = behaviorScore + '/15'; + const bhPct = (behaviorScore / 15) * 100; + $('behavior-progress-fill').style.width = bhPct + '%'; + $('behavior-progress-fill').style.background = behaviorScore > 10 ? 'linear-gradient(90deg,var(--purple),#ec4899)' : 'var(--purple)'; + + const subPct = sorted.length > 0 ? ((countOk + countWait) / sorted.length * 100) : 0; + $('global-progress-fill').style.width = subPct + '%'; + $('global-progress-text').textContent = subPct.toFixed(0) + '%'; + + updatePieChart(chartPoints); + + // attendance grid + const attCard = $('st-att-card'); + const attContent = $('st-att-content'); + attContent.innerHTML = ''; + if (attendance?.length) { + const grouped = attendance.reduce((acc, cur) => { + const subj = cur.subject || 'ไม่ระบุวิชา'; + if (!acc[subj]) acc[subj] = []; + acc[subj].push(cur); + return acc; + }, {}); + for (const subj in grouped) renderAttendanceGrid(subj, grouped[subj], attContent); + attCard.style.display = 'block'; + } + + $('st-results').style.display = 'block'; + showToast('ดึงข้อมูลสำเร็จ', 'success'); + + } catch (e) { + console.error(e); + showToast('เกิดข้อผิดพลาด: ' + e.message, 'error'); + } +} + +function updatePieChart(dataPoints) { + const ctx = $('scoreChart').getContext('2d'); + if (scorePieChart) scorePieChart.destroy(); + Chart.register(ChartDataLabels); + scorePieChart = new Chart(ctx, { + type: 'doughnut', + data: { + labels: ['ก่อนกลางภาค','กลางภาค','หลังกลางภาค','ปลายภาค','จิตพิสัย'], + datasets: [{ + data: dataPoints, + backgroundColor: ['#0ea5e9','#10b981','#f59e0b','#ef4444','#a855f7'], + borderWidth: 2, borderColor: '#050e30', hoverOffset: 15 + }] + }, + options: { + cutout: '50%', layout: { padding: 10 }, + plugins: { + legend: { display: false }, + tooltip: { enabled: true }, + datalabels: { + color: '#ffffff', + font: { family: 'Kanit', weight: 'bold', size: 14 }, + anchor: 'center', align: 'center', + formatter: v => parseFloat(v) > 0 ? parseFloat(v).toFixed(1) : '' + } + }, + responsive: true, maintainAspectRatio: false + } + }); +} + +// ── รับ container เป็น parameter เพื่อไม่ต้องล้าง card ทั้งหมด ── +function renderAttendanceGrid(subjectName, attendanceData, container) { + const wrapper = document.createElement('div'); + wrapper.className = 'mb-4'; + + const uniqueDates = [...new Set(attendanceData.map(a => a.attendance_date))].sort(); + const attMap = {}; + let attendedHours = 0, totalHours = 0; + + attendanceData.forEach(a => { + attMap[a.attendance_date] = a; + const h = parseFloat(a.hours) || 1; + totalHours += h; + if (a.status === 'มา') attendedHours += h; + else if (a.status === 'ลา') attendedHours += h * 0.25; + else if (a.status === 'สาย') attendedHours += h * 0.5; + }); + const pct = totalHours > 0 ? (attendedHours / totalHours) * 100 : 0; + const pctColor = pct >= 80 ? '#22d3ee' : '#ef4444'; + + let headHtml = 'รายการ \\ วันที่'; + uniqueDates.forEach(date => { + const d = new Date(date); + const h = attMap[date].hours || 1; + const disp = d.getDate() + '/' + (d.getMonth()+1) + '/' + (d.getFullYear()+543).toString().slice(-2); + headHtml += `
${disp}
(${h} ชม.)
`; + }); + headHtml += 'มา/รวมร้อยละ'; + + let bodyHtml = 'สถานะ'; + uniqueDates.forEach(date => { + const rec = attMap[date]; + let symbol = '-', cellBg = 'rgba(255,255,255,0.03)'; + if (rec) { + if (rec.status === 'มา') { symbol = '✅'; cellBg = 'rgba(16,185,129,0.2)'; } + else if (rec.status === 'ขาด') { symbol = '❌'; cellBg = 'rgba(239,68,68,0.2)'; } + else if (rec.status === 'ลา') { symbol = '📝'; cellBg = 'rgba(14,165,233,0.2)'; } + else if (rec.status === 'สาย') { symbol = '⏰'; cellBg = 'rgba(245,158,11,0.2)'; } + } + bodyHtml += `${symbol}`; + }); + bodyHtml += `${attendedHours}/${totalHours} + ${pct.toFixed(0)}%`; + + wrapper.innerHTML = ` +
+ 📚 วิชา: ${subjectName} +
+
+ + ${headHtml} + ${bodyHtml} +
+
`; + container.appendChild(wrapper); +} + +// ─── GRADING ─────────────────────────────────────────────── +async function loadGrading() { + stopQrScanner(); $('scan-sw').checked = false; $('scan-area').style.display = 'none'; + const aid = $('g-asgn').value, room = $('g-room').value; + if (!aid || !room) { showToast('กรุณาเลือกห้องและงาน', 'error'); return; } + const asgn = assignments.find(a => a.id === aid); + $('grading-title').textContent = '📋 ' + (asgn?.name || 'รายชื่อนักเรียน') + ' — ห้อง ' + room; + $('grading-wrap').style.display = 'block'; + $('grading-tbody').innerHTML = '
กำลังโหลด...
'; + try { + const classStudents = students.filter(s => s.classroom === room).sort((a,b) => a.seat_no - b.seat_no); + const gradesRaw = await gasCall('getGradesByAssignment', aid); + const gMap = {}; + (gradesRaw || []).forEach(g => gMap[g.student_id] = g); + gradingRows = classStudents.map(s => { + const g = gMap[s.id] || {}; + return { student: s, gradeId: g.id || null, status: g.status || 'not_sent', + score: g.score !== undefined && g.score !== null ? g.score : null, + maxScore: g.max_score || asgn?.max_score || 10 }; + }); + renderGradingTable(); + } catch (e) { + showToast('โหลดล้มเหลว: ' + e, 'error'); + $('grading-tbody').innerHTML = ''; + } +} + +function togLabel(s) { + if (s === 'checked') return '✅ ตรวจแล้ว'; + if (s === 'waiting') return '⏳ รอตรวจ'; + return '❌ ยังไม่ส่ง'; +} + +function renderGradingTable() { + const tb = $('grading-tbody'); tb.innerHTML = ''; + gradingRows.forEach((row, i) => { + const s = row.student; + const cls = row.status === 'checked' ? 'checked' : row.status === 'waiting' ? 'waiting' : 'not-sent'; + tb.innerHTML += ` + ${s.seat_no || '—'} + ${s.id} + ${s.first_name} ${s.last_name} + + + ${row.maxScore} + `; + }); +} + +function toggleRow(i) { + gradingRows[i].status = gradingRows[i].status === 'checked' ? 'not-sent' : 'checked'; + const btn = $('tog-' + i); + btn.className = 'tog ' + (gradingRows[i].status === 'checked' ? 'checked' : 'not-sent'); + btn.textContent = togLabel(gradingRows[i].status); +} + +function markAllStatus(s) { + gradingRows.forEach((_, i) => { + gradingRows[i].status = s; + const btn = $('tog-' + i); + if (btn) { btn.className = 'tog ' + (s === 'checked' ? 'checked' : 'not-sent'); btn.textContent = togLabel(s); } + }); +} + +async function saveGradesNow() { + const aid = $('g-asgn').value; + if (!aid) { showToast('กรุณาเลือกงานก่อน', 'error'); return; } + const rows = gradingRows.map((row, i) => { + const sv = $('sc-' + i).value; + const score = sv !== '' ? parseFloat(sv) : (row.status === 'checked' ? row.maxScore : null); + return { student_id: row.student.id, assignment_id: aid, score, max_score: row.maxScore, status: score !== null ? 'checked' : row.status }; + }); + try { + await gasCall('saveGrades', rows); + showToast('บันทึกคะแนนสำเร็จ! 🎉', 'success'); + await loadGrading(); + } catch (e) { showToast('บันทึกล้มเหลว: ' + e, 'error'); } +} + +// ─── SCAN ────────────────────────────────────────────────── +function setScanMode(on) { + $('scan-area').style.display = on ? 'block' : 'none'; + if (on) { startQrScanner(); $('scan-inp').focus(); } else stopQrScanner(); +} + +async function startQrScanner() { + if (scanning) return; + const aid = $('g-asgn').value; + if (!aid) { showToast('กรุณาเลือกงานก่อน', 'warn'); $('scan-sw').checked = false; $('scan-area').style.display = 'none'; return; } + try { + html5QrCode = new Html5Qrcode('reader'); scanning = true; + await html5QrCode.start({ facingMode:'environment' }, { fps:10, qrbox:{width:220,height:220} }, + async decodedText => { + const now = Date.now(); + if (decodedText === lastScannedText && now - lastScannedAt < 2500) return; + lastScannedText = decodedText; lastScannedAt = now; + await handleScan(decodedText); + }, () => {} + ); + showToast('เปิดกล้องสแกน QR แล้ว', 'success'); + } catch (e) { scanning = false; showToast('เปิดกล้องไม่ได้: ' + e, 'error'); } +} + +async function stopQrScanner() { + try { if (html5QrCode && scanning) { await html5QrCode.stop(); await html5QrCode.clear(); } } catch (e) {} + scanning = false; +} + +function extractStudentId(raw) { + raw = (raw || '').trim(); if (!raw) return ''; + if (raw.startsWith('http://') || raw.startsWith('https://')) { + try { return new URL(raw).searchParams.get('student_id') || raw; } catch (e) { return raw; } + } + return raw; +} + +async function handleScan(val) { + const studentId = extractStudentId(val); if (!studentId) return; + const aid = $('g-asgn').value; if (!aid) { showToast('กรุณาเลือกงานก่อนสแกน', 'error'); return; } + const idx = gradingRows.findIndex(r => r.student.id === studentId); + if (idx === -1) { showToast('ไม่พบรหัส: ' + studentId, 'error'); return; } + try { + const result = await gasCall('markStudentSubmitted', studentId, aid); + gradingRows[idx].status = 'checked'; gradingRows[idx].score = result.assignment.max_score; + const btn = $('tog-' + idx); + if (btn) { btn.className = 'tog checked'; btn.textContent = togLabel('checked'); } + const sc = $('sc-' + idx); if (sc) sc.value = result.assignment.max_score; + const row = $('gr-' + idx); + if (row) { row.scrollIntoView({behavior:'smooth',block:'center'}); row.style.background='rgba(16,185,129,.1)'; setTimeout(()=>row.style.background='',1200); } + showToast('✅ ' + result.student.first_name + ' ' + result.student.last_name, 'success'); + } catch (e) { showToast('บันทึกไม่สำเร็จ: ' + e, 'error'); } +} + +// ─── ATTENDANCE (ADMIN) ──────────────────────────────────── +async function loadAttendance() { + stopAttendanceScanner(); $('att-scan-sw').checked = false; $('att-scan-area').style.display = 'none'; + const room = $('att-room').value, date = $('att-date').value; + if (!room || !date) { showToast('กรุณาเลือกห้องและวันที่', 'error'); return; } + $('attendance-title').textContent = '📋 เช็กชื่อ ห้อง ' + room + ' วันที่ ' + date; + $('attendance-wrap').style.display = 'block'; + $('attendance-tbody').innerHTML = '
กำลังโหลด...
'; + try { + const classStudents = students.filter(s => s.classroom === room).sort((a,b) => a.seat_no - b.seat_no); + const raw = await gasCall('getAttendanceByDate', room, date); + const aMap = {}; + (raw || []).forEach(a => aMap[a.student_id] = a); + attendanceRows = classStudents.map(s => { + const a = aMap[s.id] || {}; + return { student: s, status: a.status || 'ขาด', remark: a.remark || '' }; + }); + renderAttendanceTable(); + } catch (e) { + showToast('โหลดการเข้าเรียนล้มเหลว: ' + e, 'error'); + $('attendance-tbody').innerHTML = ''; + } +} + +function renderAttendanceTable() { + const tb = $('attendance-tbody'); if (!tb) return; + tb.innerHTML = ''; + attendanceRows.forEach((row, i) => { + const sel = 'att-select select-' + row.status; + tb.innerHTML += ` + ${row.student.seat_no || '—'} + ${row.student.id} + ${row.student.first_name} ${row.student.last_name} + + + + + `; + }); +} + +function updateAttendanceRowVisual(index, value) { + attendanceRows[index].status = value; + const tr = $('att-row-' + index), sel = $('att-status-' + index); + if (tr) tr.className = 'row-' + value; + if (sel) sel.className = 'att-select select-' + value; +} + +function markAllAttendance(status) { + attendanceRows.forEach((row, i) => { + row.status = status; + const el = $('att-status-' + i); if (el) el.value = status; + updateAttendanceRowVisual(i, status); + }); +} + +async function saveAttendanceNow() { + const date = $('att-date').value; + const subj = $('att-subj').value; + const room = $('att-room').value; + const hours = parseFloat($('att-hours').value) || 1; + if (!date || !subj || !room) { showToast('กรุณาเลือกวิชา ห้อง และวันที่ให้ครบ', 'error'); return; } + const rows = attendanceRows.map((row, i) => ({ + student_id: row.student.id, + attendance_date: date, subject: subj, + status: $('att-status-' + i) ? $('att-status-' + i).value : row.status, + remark: $('att-remark-' + i) ? $('att-remark-' + i).value : '', + hours + })); + try { + await gasCall('saveAttendance', rows); + showToast('บันทึกการเข้าเรียนวิชา ' + subj + ' สำเร็จ', 'success'); + } catch (e) { showToast('บันทึกไม่สำเร็จ: ' + (e.message || e), 'error'); } +} + +function setAttendanceScanMode(on) { + $('att-scan-area').style.display = on ? 'block' : 'none'; + if (on) { startAttendanceScanner(); $('att-scan-inp').focus(); } else stopAttendanceScanner(); +} + +async function startAttendanceScanner() { + if (attendanceScanning) return; + const room = $('att-room').value, date = $('att-date').value; + if (!room || !date) { showToast('กรุณาเลือกห้องและวันที่ก่อนสแกน','warn'); $('att-scan-sw').checked=false; $('att-scan-area').style.display='none'; return; } + try { + attendanceQr = new Html5Qrcode('att-reader'); attendanceScanning = true; + await attendanceQr.start({ facingMode:'environment' }, { fps:10, qrbox:{width:220,height:220} }, + async decodedText => { + const now = Date.now(); + if (decodedText === lastAttendanceScan && now - lastAttendanceScanAt < 2500) return; + lastAttendanceScan = decodedText; lastAttendanceScanAt = now; + await handleAttendanceScan(decodedText); + }, () => {} + ); + showToast('เปิดกล้องเช็กชื่อแล้ว', 'success'); + } catch (e) { attendanceScanning=false; showToast('เปิดกล้องไม่ได้: '+e,'error'); } +} + +async function stopAttendanceScanner() { + try { if (attendanceQr && attendanceScanning) { await attendanceQr.stop(); await attendanceQr.clear(); } } catch (e) {} + attendanceScanning = false; +} + +async function handleAttendanceScan(val) { + const studentId = extractStudentId(val); if (!studentId) return; + const date = $('att-date').value, status = $('att-default-status').value; + const idx = attendanceRows.findIndex(r => r.student.id === studentId); + if (idx === -1) { showToast('ไม่พบรหัส: ' + studentId, 'error'); return; } + try { + const result = await gasCall('markStudentAttendance', studentId, date, status, ''); + attendanceRows[idx].status = status; + const statusEl = $('att-status-' + idx); if (statusEl) statusEl.value = status; + updateAttendanceRowVisual(idx, status); + const row = $('att-row-' + idx); if (row) row.scrollIntoView({behavior:'smooth',block:'center'}); + showToast('📅 ' + result.student.first_name + ' ' + result.student.last_name + ' = ' + status, 'success'); + } catch (e) { showToast('เช็กชื่อไม่สำเร็จ: ' + e, 'error'); } +} + +// ─── STUDENTS TAB ────────────────────────────────────────── +function renderStudentTable() { filterStudents(); } + +function filterStudents() { + const room = $('f-room').value, q = $('f-q').value.toLowerCase(); + const list = students.filter(s => + (!room || s.classroom === room) && + (!q || s.id.toLowerCase().includes(q) || s.first_name.toLowerCase().includes(q) || s.last_name.toLowerCase().includes(q)) + ); + const tb = $('st-tbody-admin'); + if (!list.length) { tb.innerHTML = '
🔍
ไม่มีข้อมูล
'; return; } + tb.innerHTML = list.map(s => ` + ${s.id} + ${s.first_name} + ${s.last_name} + ${s.classroom} + ${s.seat_no} + + + `).join(''); +} + +// ── เดิมมีสองนิยาม — รวมเป็นอันเดียว (รองรับ email) ── +async function saveStudent() { + const d = { + id: $('ns-id').value.trim(), + first_name: $('ns-fn').value.trim(), + last_name: $('ns-ln').value.trim(), + classroom: $('ns-cls').value.trim(), + seat_no: parseInt($('ns-seat').value) || 0, + email: $('ns-email').value.trim() + }; + if (!d.id || !d.first_name || !d.last_name || !d.classroom) { + showToast('กรุณากรอกข้อมูลให้ครบ', 'error'); return; + } + try { + await gasCall('upsertStudent', d); + closeModal('m-add-st'); + showToast('บันทึกสำเร็จ', 'success'); + students = await gasCall('getStudents'); + assignments = await gasCall('getAllAssignments'); + populateDropdowns(); renderStudentTable(); + } catch (e) { showToast('ผิดพลาด: ' + e, 'error'); } +} + +async function delStudent(id) { + if (!confirm('ลบนักเรียนรหัส ' + id + '?')) return; + try { + await gasCall('deleteStudent', id); + showToast('ลบแล้ว', 'success'); + students = await gasCall('getStudents'); + populateDropdowns(); renderStudentTable(); + } catch (e) { showToast('ผิดพลาด: ' + e, 'error'); } +} + +// ─── IMPORT ──────────────────────────────────────────────── +async function importFile(input) { + const file = input.files[0]; if (!file) return; + const reader = new FileReader(); + reader.onload = async e => { + try { + const wb = XLSX.read(e.target.result, { type:'binary' }); + const ws = wb.Sheets[wb.SheetNames[0]]; + const rows = XLSX.utils.sheet_to_json(ws); + const list = rows.map(r => ({ + id: String(r['รหัสนักเรียน']||r['id']||''), + first_name: String(r['ชื่อ']||r['first_name']||''), + last_name: String(r['สกุล']||r['last_name']||''), + classroom: String(r['ชั้น']||r['classroom']||''), + seat_no: parseInt(r['เลขที่']||r['seat_no']||0), + email: String(r['อีเมล']||r['email']||'') + })).filter(s => s.id); + await gasCall('upsertStudents', list); + showToast('นำเข้า ' + list.length + ' คนสำเร็จ', 'success'); + students = await gasCall('getStudents'); assignments = await gasCall('getAllAssignments'); + populateDropdowns(); renderStudentTable(); + } catch (e) { showToast('ผิดพลาด: ' + e, 'error'); } + }; + reader.readAsBinaryString(file); input.value = ''; +} + +function dlTemplate() { + const ws = XLSX.utils.aoa_to_sheet([ + ['รหัสนักเรียน','ชื่อ','สกุล','ชั้น','เลขที่','อีเมล'], + ['12345','สมชาย','ใจดี','ม.5/1','1','somchai@school.ac.th'] + ]); + const wb = XLSX.utils.book_new(); + XLSX.utils.book_append_sheet(wb, ws, 'นักเรียน'); + XLSX.writeFile(wb, 'template_students.xlsx'); +} + +// ─── QR CODE ─────────────────────────────────────────────── +function showQR(id, name, cls) { + $('qr-wrap').innerHTML = ''; + new QRCode($('qr-wrap'), { text: id, width: 192, height: 192, colorDark: '#0f172a', colorLight: '#fff', correctLevel: QRCode.CorrectLevel.H }); + $('qr-info').innerHTML = `${name}
${cls} | รหัส: ${id}`; + openModal('m-qr'); +} + +function printQR() { + const qr = $('qr-wrap').innerHTML, info = $('qr-info').innerHTML; + const w = window.open('', '_blank'); + w.document.write(`QR
${qr}
${info}
- + @@ -888,1548 +508,7 @@

🧬 ตรวจสอบสถานะการส่งงาน

- - - + + From b288f49302c37d28b1cdf6cfdaddd2bbb5dc9168 Mon Sep 17 00:00:00 2001 From: ARNUT KLANGPRAPUN <136555438+kpp-arnut@users.noreply.github.com> Date: Thu, 7 May 2026 12:19:04 +0700 Subject: [PATCH 06/46] Remove duplicate script tags in index.html Removed duplicate script tags for config.js and script.js in the body. --- index.html | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/index.html b/index.html index 90aaf19..5482883 100644 --- a/index.html +++ b/index.html @@ -13,6 +13,8 @@ + + @@ -508,7 +510,5 @@

🧬 ตรวจสอบสถานะการส่งงาน

- - From 2ec4b9f8b51094fb8a7d52389ee9c766978fa4ec Mon Sep 17 00:00:00 2001 From: ARNUT KLANGPRAPUN <136555438+kpp-arnut@users.noreply.github.com> Date: Thu, 7 May 2026 12:24:19 +0700 Subject: [PATCH 07/46] Add defer attribute to script tags in index.html Added 'defer' attribute to script tags for better loading performance. --- index.html | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/index.html b/index.html index 5482883..e43b952 100644 --- a/index.html +++ b/index.html @@ -13,8 +13,8 @@ - - + + From 90a60c816c91ebe28e94328eed8b74acfcd4e641 Mon Sep 17 00:00:00 2001 From: ARNUT KLANGPRAPUN <136555438+kpp-arnut@users.noreply.github.com> Date: Thu, 7 May 2026 14:10:00 +0700 Subject: [PATCH 08/46] Rename confic.js to config.js --- confic.js => config.js | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename confic.js => config.js (100%) diff --git a/confic.js b/config.js similarity index 100% rename from confic.js rename to config.js From 72e405ec9253786e88f35241cd81373c79df38b3 Mon Sep 17 00:00:00 2001 From: ARNUT KLANGPRAPUN <136555438+kpp-arnut@users.noreply.github.com> Date: Thu, 7 May 2026 14:20:22 +0700 Subject: [PATCH 09/46] Update student action buttons in table Refactor student action buttons for better layout and add edit functionality. --- script.js | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/script.js b/script.js index 2615327..d2bf872 100644 --- a/script.js +++ b/script.js @@ -779,9 +779,14 @@ function filterStudents() { ${s.last_name} ${s.classroom} ${s.seat_no} - + +
+ + +
+ - `).join(''); +`).join(''); } // ── เดิมมีสองนิยาม — รวมเป็นอันเดียว (รองรับ email) ── From 30f4ab6a8a891e6f58c75f597bd8e0ebea0a5171 Mon Sep 17 00:00:00 2001 From: ARNUT KLANGPRAPUN <136555438+kpp-arnut@users.noreply.github.com> Date: Thu, 7 May 2026 14:24:13 +0700 Subject: [PATCH 10/46] Implement add and edit student modal functionality Added functions to open and edit student modal, and clear input fields. --- script.js | 35 ++++++++++++++++++++++++++++++++++- 1 file changed, 34 insertions(+), 1 deletion(-) diff --git a/script.js b/script.js index d2bf872..cda81c8 100644 --- a/script.js +++ b/script.js @@ -789,7 +789,22 @@ function filterStudents() { `).join(''); } -// ── เดิมมีสองนิยาม — รวมเป็นอันเดียว (รองรับ email) ── +function openAddStudentModal() { + const modalTitle = document.querySelector('#m-add-st .modal-hd'); + if (modalTitle) modalTitle.innerHTML = `➕ เพิ่มนักเรียน `; + + $('ns-id').value = ''; + $('ns-id').readOnly = false; + $('ns-id').style.opacity = "1"; + $('ns-fn').value = ''; + $('ns-ln').value = ''; + $('ns-cls').value = ''; + $('ns-seat').value = ''; + $('ns-email').value = ''; + + openModal('m-add-st'); +} + async function saveStudent() { const d = { id: $('ns-id').value.trim(), @@ -812,6 +827,24 @@ async function saveStudent() { } catch (e) { showToast('ผิดพลาด: ' + e, 'error'); } } +function editStudent(s) { + const modalTitle = document.querySelector('#m-add-st .modal-hd'); + if (modalTitle) modalTitle.innerHTML = `✏️ แก้ไขข้อมูลนักเรียน `; + + // ใส่ข้อมูลเดิมลงใน Input + $('ns-id').value = s.id; + $('ns-id').readOnly = true; // ห้ามแก้รหัส (Primary Key) ถ้าจะแก้รหัสต้องลบแล้วเพิ่มใหม่ + $('ns-id').style.opacity = "0.6"; + + $('ns-fn').value = s.first_name; + $('ns-ln').value = s.last_name; + $('ns-cls').value = s.classroom; + $('ns-seat').value = s.seat_no; + $('ns-email').value = s.email || ''; + + openModal('m-add-st'); +} + async function delStudent(id) { if (!confirm('ลบนักเรียนรหัส ' + id + '?')) return; try { From 9661f58c0420f6a265403b22a5de5bb8672d8945 Mon Sep 17 00:00:00 2001 From: ARNUT KLANGPRAPUN <136555438+kpp-arnut@users.noreply.github.com> Date: Thu, 7 May 2026 14:26:58 +0700 Subject: [PATCH 11/46] Update button onclick to use openAddStudentModal --- index.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/index.html b/index.html index e43b952..c14aafd 100644 --- a/index.html +++ b/index.html @@ -326,7 +326,7 @@

🧬 ตรวจสอบสถานะการส่งงาน

👥 รายชื่อนักเรียน
- + From 51410dac333821ce3466383c295769a7330b5354 Mon Sep 17 00:00:00 2001 From: ARNUT KLANGPRAPUN <136555438+kpp-arnut@users.noreply.github.com> Date: Thu, 7 May 2026 14:31:30 +0700 Subject: [PATCH 12/46] Implement functions for adding and editing students Added functions to prepare and edit student information in a modal. --- script.js | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) diff --git a/script.js b/script.js index cda81c8..ee88bdf 100644 --- a/script.js +++ b/script.js @@ -805,6 +805,39 @@ function openAddStudentModal() { openModal('m-add-st'); } +function prepareAddStudent() { + const modalTitle = document.querySelector('#m-add-st .modal-hd'); + if (modalTitle) modalTitle.innerHTML = `➕ เพิ่มนักเรียน `; + + $('ns-id').value = ''; + $('ns-id').readOnly = false; + $('ns-id').style.opacity = "1"; + $('ns-fn').value = ''; + $('ns-ln').value = ''; + $('ns-cls').value = ''; + $('ns-seat').value = ''; + $('ns-email').value = ''; + + openModal('m-add-st'); +} + +function editStudent(s) { + const modalTitle = document.querySelector('#m-add-st .modal-hd'); + if (modalTitle) modalTitle.innerHTML = `✏️ แก้ไขข้อมูลนักเรียน `; + + $('ns-id').value = s.id; + $('ns-id').readOnly = true; + $('ns-id').style.opacity = "0.6"; + + $('ns-fn').value = s.first_name; + $('ns-ln').value = s.last_name; + $('ns-cls').value = s.classroom; + $('ns-seat').value = s.seat_no; + $('ns-email').value = s.email || ''; + + openModal('m-add-st'); +} + async function saveStudent() { const d = { id: $('ns-id').value.trim(), From d4d92aea98d24f5c100a5b2e0e919512df4b1dff Mon Sep 17 00:00:00 2001 From: ARNUT KLANGPRAPUN <136555438+kpp-arnut@users.noreply.github.com> Date: Thu, 7 May 2026 14:40:40 +0700 Subject: [PATCH 13/46] Fix behaviorScore assignment for null/undefined values --- script.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/script.js b/script.js index ee88bdf..0599ef1 100644 --- a/script.js +++ b/script.js @@ -372,7 +372,8 @@ async function searchStatus() { const pt = s.max > 0 ? (s.current / s.max) * s.weight : 0; weightedTotal += pt; chartPoints.push(pt.toFixed(2)); }); - const behaviorScore = parseFloat(stInfo.behavior_score ?? 10); + const behaviorScore = (stInfo.behavior_score !== null && stInfo.behavior_score !== undefined) + ? parseFloat(stInfo.behavior_score) : 10; chartPoints.push(behaviorScore.toFixed(2)); const grandTotal = weightedTotal + behaviorScore; From b65fefd35c22438a7e29526d5c84aefad86abfdb Mon Sep 17 00:00:00 2001 From: ARNUT KLANGPRAPUN <136555438+kpp-arnut@users.noreply.github.com> Date: Thu, 7 May 2026 14:40:55 +0700 Subject: [PATCH 14/46] Change button onclick from openAddStudentModal to prepareAddStudent --- index.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/index.html b/index.html index c14aafd..0a7e54f 100644 --- a/index.html +++ b/index.html @@ -326,7 +326,7 @@

🧬 ตรวจสอบสถานะการส่งงาน

👥 รายชื่อนักเรียน
- + From a6d1ad40940237c097852b8b7a98d6a011c5095d Mon Sep 17 00:00:00 2001 From: ARNUT KLANGPRAPUN <136555438+kpp-arnut@users.noreply.github.com> Date: Thu, 7 May 2026 14:44:43 +0700 Subject: [PATCH 15/46] Remove editStudent function from script.js Removed the editStudent function that was responsible for editing student details in the modal. --- script.js | 17 ----------------- 1 file changed, 17 deletions(-) diff --git a/script.js b/script.js index 0599ef1..a522e30 100644 --- a/script.js +++ b/script.js @@ -822,23 +822,6 @@ function prepareAddStudent() { openModal('m-add-st'); } -function editStudent(s) { - const modalTitle = document.querySelector('#m-add-st .modal-hd'); - if (modalTitle) modalTitle.innerHTML = `✏️ แก้ไขข้อมูลนักเรียน `; - - $('ns-id').value = s.id; - $('ns-id').readOnly = true; - $('ns-id').style.opacity = "0.6"; - - $('ns-fn').value = s.first_name; - $('ns-ln').value = s.last_name; - $('ns-cls').value = s.classroom; - $('ns-seat').value = s.seat_no; - $('ns-email').value = s.email || ''; - - openModal('m-add-st'); -} - async function saveStudent() { const d = { id: $('ns-id').value.trim(), From 4f45955420bc805ca8d5fda8251ac13cef11abae Mon Sep 17 00:00:00 2001 From: ARNUT KLANGPRAPUN <136555438+kpp-arnut@users.noreply.github.com> Date: Thu, 7 May 2026 14:59:28 +0700 Subject: [PATCH 16/46] Refactor student modal and assignment handling Refactor openAddStudentModal function and enhance assignment upsert logic. --- script.js | 37 ++++++++++++++++++++----------------- 1 file changed, 20 insertions(+), 17 deletions(-) diff --git a/script.js b/script.js index a522e30..5e58b25 100644 --- a/script.js +++ b/script.js @@ -790,22 +790,6 @@ function filterStudents() { `).join(''); } -function openAddStudentModal() { - const modalTitle = document.querySelector('#m-add-st .modal-hd'); - if (modalTitle) modalTitle.innerHTML = `➕ เพิ่มนักเรียน `; - - $('ns-id').value = ''; - $('ns-id').readOnly = false; - $('ns-id').style.opacity = "1"; - $('ns-fn').value = ''; - $('ns-ln').value = ''; - $('ns-cls').value = ''; - $('ns-seat').value = ''; - $('ns-email').value = ''; - - openModal('m-add-st'); -} - function prepareAddStudent() { const modalTitle = document.querySelector('#m-add-st .modal-hd'); if (modalTitle) modalTitle.innerHTML = `➕ เพิ่มนักเรียน `; @@ -1043,8 +1027,27 @@ async function saveAssignment() { if (id) d.id = id; if (!d.name || !d.subject || !d.classroom) { showToast('กรุณากรอกข้อมูลให้ครบ','error'); return; } try { - const { error } = await _sb.from('assignments').upsert(d, { onConflict: 'id' }); + const { data: savedAsgn, error } = await _sb + .from('assignments') + .upsert(d, { onConflict: 'id' }) + .select() + .single(); if (error) throw error; + + // ✅ สร้าง grade rows อัตโนมัติสำหรับทุกคนในห้อง (เฉพาะงานใหม่) + if (!id) { + const localStudents = students.filter(s => s.classroom === room); + if (localStudents.length > 0) { + const gradeRows = localStudents.map(s => ({ + student_id: s.id, assignment_id: savedAsgn.id, + score: null, max_score: d.max_score, status: 'not_sent' + })); + await _sb.from('grades').upsert(gradeRows, { + onConflict: 'student_id,assignment_id', ignoreDuplicates: true + }); + } + } + closeModal('m-add-asgn'); showToast(id ? 'แก้ไขงานสำเร็จ' : 'สร้างงานสำเร็จ', 'success'); $('na-id').value = ''; $('asgn-modal-title').textContent = '➕ เพิ่มงาน / การสอบ'; From 080163277fe6f883ad78be9d8f0aa82518b42378 Mon Sep 17 00:00:00 2001 From: ARNUT KLANGPRAPUN <136555438+kpp-arnut@users.noreply.github.com> Date: Thu, 7 May 2026 15:17:35 +0700 Subject: [PATCH 17/46] Refactor style.css for design enhancements Refactor CSS variables and styles for improved design and consistency. --- style.css | 593 ++++++++++++++++++++---------------------------------- 1 file changed, 214 insertions(+), 379 deletions(-) diff --git a/style.css b/style.css index 19627be..a1f4c9a 100644 --- a/style.css +++ b/style.css @@ -1,379 +1,214 @@ - :root { - --primary: #0ea5e9; - --primary-dark: #0284c7; - --cyan: #06b6d4; - --accent: #22d3ee; - --green: #10b981; - --red: #ef4444; - --amber: #f59e0b; - --bg-dark: #050e30; - --bg-glass: rgba(15,23,42,0.85); - --bg-card: rgba(30,41,59,0.7); - --text-main: #f8fafc; - --text-dim: #94a3b8; - --text-muted: #64748b; - --border-glass: rgba(255,255,255,0.15); - --radius-md: 16px; - --shadow-lg: 0 20px 25px -5px rgba(0,0,0,0.3); - --purple: #a855f7; - --purple-dark: #7e22ce; - } - body { - font-family: 'Sarabun', sans-serif; - background-color: var(--bg-dark); - color: var(--text-main); - min-height: 100vh; - overflow-x: hidden; - } - - .bg-scene { - position: fixed; inset: 0; z-index: 0; - background: #050e30; overflow: hidden; perspective: 1000px; - } - .bg-scene::before { - content:''; position:absolute; inset:0; - background: radial-gradient(ellipse at 15% 25%, rgba(6,182,212,0.2) 0%, transparent 50%), - radial-gradient(ellipse at 85% 75%, rgba(14,165,233,0.15) 0%, transparent 50%); - } - .bg-scene::after { - content: ''; position: absolute; inset: 0; - background: radial-gradient(circle at center, transparent 20%, #050e30 90%); - pointer-events: none; - } - - .dna-container { - position: absolute; top: 0; left: 60px; - width: 100px; height: 100%; - display: flex; flex-direction: column; - justify-content: space-around; opacity: 0.3; - } - .dna-dot { - width: 8px; height: 8px; - background: var(--accent); border-radius: 50%; - position: relative; box-shadow: 0 0 10px var(--accent); - animation: rotate3d 4s ease-in-out infinite; - } - .dna-dot::after { - content: ""; position: absolute; - width: 80px; height: 2px; - background: linear-gradient(90deg, var(--accent), transparent, var(--primary)); - top: 50%; left: 50%; transform-origin: left; z-index: -1; opacity: 0.3; - } - .dna-dot.strand-2 { - background: var(--primary); box-shadow: 0 0 10px var(--primary); - animation-delay: -2s; - } - @keyframes rotate3d { - 0%, 100% { transform: translateX(-40px) scale(1); z-index: 1; } - 50% { transform: translateX(40px) scale(0.6); z-index: -1; opacity: 0.5; } - } - - .app { position:relative; z-index:1; } - - header { - position:sticky; top:0; z-index:100; - background: rgba(5,14,48,0.92); - backdrop-filter: blur(16px); - border-bottom: 1px solid var(--border-glass); - padding: 0 20px; - } - .header-inner { - max-width:1200px; margin:0 auto; height:65px; - display:flex; align-items:center; justify-content:space-between; - } - .logo { - font-family:'Kanit'; font-weight:700; color:#fff; - display:flex; align-items:center; gap:10px; font-size:1.05rem; - } - - nav { display:flex; gap:8px; } - .nav-btn { - background:transparent; border:none; color:var(--text-dim); - padding:8px 16px; border-radius:10px; cursor:pointer; transition:all 0.25s; - font-family:'Sarabun'; font-weight:500; font-size:0.95rem; - display:flex; align-items:center; gap:6px; position:relative; - } - .nav-btn:hover { background:rgba(255,255,255,0.1); color:#fff; } - .nav-btn.active { background:var(--primary); color:#fff; box-shadow:0 4px 14px rgba(14,165,233,0.4); } - - .cfg-dot { width:8px; height:8px; border-radius:50%; background:var(--amber); display:inline-block; } - .cfg-dot.ok { background:var(--green); } - - main { max-width:1200px; margin:0 auto; padding:28px 20px; } - .page { display:none; } - .page.active { display:block; } - - .card { - background:var(--bg-glass); border:1px solid var(--border-glass); - border-radius:var(--radius-md); padding:24px; - box-shadow:var(--shadow-lg); backdrop-filter:blur(8px); - } - .mb-4 { margin-bottom:20px; } - .mt-4 { margin-top:20px; } - .mt-3 { margin-top:12px; } - .mb-3 { margin-bottom:12px; } - - .card-title { - font-family:'Kanit'; font-size:1.15rem; margin-bottom:18px; - color:var(--accent); display:flex; align-items:center; gap:8px; - } - - .hero { - text-align:center; padding:42px 20px; - background:linear-gradient(135deg, rgba(14,165,233,0.12), rgba(6,182,212,0.05)); - border-radius:20px; border:1px solid var(--border-glass); margin-bottom:28px; - } - .hero h1 { font-family:'Kanit'; font-size:1.9rem; margin-bottom:8px; color:#fff; } - .hero p { color:var(--text-dim); font-size:1rem; } - - .search-row { display:flex; gap:10px; max-width:460px; margin:22px auto 0; } - - input[type="text"], input[type="number"], input[type="date"], input[type="password"], select { - background:rgba(255,255,255,0.95); border:2px solid transparent; border-radius:10px; - padding:10px 14px; font-family:'Sarabun'; font-size:0.97rem; - color:#0f172a; outline:none; width:100%; transition:border-color 0.2s, box-shadow 0.2s; - } - input:focus, select:focus { - border-color:var(--primary); box-shadow:0 0 0 3px rgba(14,165,233,0.2); - } - label { display:block; margin-bottom:6px; font-size:0.88rem; font-weight:600; color:var(--text-dim); } - - .btn { - padding:10px 20px; border-radius:10px; font-weight:600; cursor:pointer; - border:none; display:inline-flex; align-items:center; gap:7px; - transition:all 0.2s; font-family:'Sarabun'; font-size:0.95rem; white-space:nowrap; - } - .btn:hover { transform:translateY(-1px); } - .btn:active { transform:translateY(0); } - .btn-primary { background:var(--primary); color:#fff; box-shadow:0 4px 12px rgba(14,165,233,0.3); } - .btn-primary:hover { background:var(--primary-dark); } - .btn-success { background:var(--green); color:#fff; box-shadow:0 4px 12px rgba(16,185,129,0.3); } - .btn-danger { background:var(--red); color:#fff; } - .btn-outline { background:transparent; border:1px solid var(--border-glass); color:var(--text-main); } - .btn-ghost { background:rgba(255,255,255,0.08); color:var(--text-main); } - .btn-sm { padding:6px 14px; font-size:0.85rem; border-radius:8px; } - .btn-lg { padding:13px 28px; font-size:1.05rem; } - .btn-xl { padding:13px 24px; font-size:1rem; } - .w-full { width:100%; justify-content:center; } - - .grid-2 { display:grid; grid-template-columns:repeat(2,1fr); } - .grid-3 { display:grid; grid-template-columns:repeat(3,1fr); } - .grid-4 { display:grid; grid-template-columns:repeat(4,1fr); } - .gap-2 { gap:8px; } - .gap-3 { gap:12px; } - .gap-4 { gap:16px; } - - .flex { display:flex; } - .flex-1 { flex:1; } - .flex-wrap { flex-wrap:wrap; } - .items-center { align-items:center; } - .justify-end { justify-content:flex-end; } - .justify-center { justify-content:center; } - .justify-between { justify-content:space-between; } - .text-center { text-align:center; } - .text-sm { font-size:0.85rem; } - .text-muted { color:var(--text-dim); } - .font-bold { font-weight:700; } - - .stat-card { - background:rgba(255,255,255,0.05); padding:18px; - border-radius:14px; text-align:center; border:1px solid var(--border-glass); - } - .stat-num { font-family:'Kanit'; font-size:2rem; font-weight:700; display:block; line-height:1.1; } - .stat-label { color:var(--text-dim); font-size:0.82rem; margin-top:6px; display:block; } - - .tbl-wrap { overflow-x:auto; border-radius:12px; border:1px solid var(--border-glass); } - table { width:100%; border-collapse:collapse; } - thead tr { background:linear-gradient(135deg, #0ea5e9, #06b6d4) !important; } - th { - padding:14px 15px; color:#fff !important; - font-family:'Kanit'; font-weight:600; text-align:left; - text-shadow:0 1px 2px rgba(0,0,0,0.25); - border-bottom:1px solid rgba(255,255,255,0.2); - } - td { padding:13px 15px; color:var(--text-main) !important; border-bottom:1px solid var(--border-glass); vertical-align:middle; } - tbody tr:last-child td { border-bottom:none; } - tbody tr:hover td { background:rgba(255,255,255,0.04); } - - .row-มา { background:rgba(16,185,129,0.12) !important; border-left:3px solid var(--green); } - .row-ขาด { background:rgba(239,68,68,0.12) !important; border-left:3px solid var(--red); } - .row-ลา { background:rgba(14,165,233,0.12) !important; border-left:3px solid var(--primary); } - .row-สาย { background:rgba(245,158,11,0.12) !important; border-left:3px solid var(--amber); } - .row-not-sent { background:rgba(239,68,68,0.07) !important; } - - .badge { - padding:5px 12px; border-radius:20px; font-size:0.8rem; font-weight:600; - display:inline-block; min-width:80px; text-align:center; - } - .badge-green { background:rgba(16,185,129,0.2); color:#4ade80; border:1px solid rgba(16,185,129,0.35); } - .badge-red { background:rgba(239,68,68,0.2); color:#f87171; border:1px solid rgba(239,68,68,0.35); } - .badge-blue { background:rgba(14,165,233,0.2); color:#7dd3fc; border:1px solid rgba(14,165,233,0.35); } - .badge-amber { background:rgba(245,158,11,0.2); color:#fbbf24; border:1px solid rgba(245,158,11,0.35); } - .badge-purple { background:rgba(168,85,247,0.2); color:#c084fc; border:1px solid rgba(168,85,247,0.35); } - - .tog { - padding:7px 16px; border-radius:8px; border:none; cursor:pointer; - font-family:'Sarabun'; font-weight:700; font-size:0.88rem; transition:all 0.2s; - } - .tog.checked { background:rgba(16,185,129,0.2); color:#4ade80; border:1px solid rgba(16,185,129,0.4); } - .tog.waiting { background:rgba(245,158,11,0.2); color:#fbbf24; border:1px solid rgba(245,158,11,0.4); } - .tog.not-sent { background:rgba(239,68,68,0.15); color:#f87171; border:1px solid rgba(239,68,68,0.3); } - .tog:hover { transform:scale(1.05); } - - .score-in { - width:80px !important; text-align:center; - font-weight:700; font-size:1rem; - } - - .att-select { - min-width:80px; padding:6px 10px; border-radius:8px; - font-weight:700; font-family:'Sarabun'; cursor:pointer; - } - .select-มา { background:#dcfce7; color:#166534; border:none; } - .select-ขาด { background:#fee2e2; color:#991b1b; border:none; } - .select-ลา { background:#e0f2fe; color:#075985; border:none; } - .select-สาย { background:#fef3c7; color:#92400e; border:none; } - - .tab-bar { - display:flex; gap:6px; margin-bottom:20px; - background:rgba(255,255,255,0.04); padding:6px; border-radius:14px; - border:1px solid var(--border-glass); flex-wrap:wrap; - } - .tab-btn { - padding:9px 18px; border-radius:10px; border:none; - background:transparent; color:var(--text-dim); - cursor:pointer; font-family:'Sarabun'; font-weight:600; - font-size:0.9rem; transition:all 0.2s; - } - .tab-btn:hover { background:rgba(255,255,255,0.08); color:#fff; } - .tab-btn.active { background:var(--primary); color:#fff; box-shadow:0 4px 12px rgba(14,165,233,0.35); } - - .scan-bar { - background:rgba(16,185,129,0.1); border:1px solid rgba(16,185,129,0.3); - border-radius:12px; padding:12px 16px; - display:flex; align-items:center; gap:12px; flex-wrap:wrap; - } - - .sw { position:relative; display:inline-block; width:48px; height:26px; flex-shrink:0; } - .sw input { opacity:0; width:0; height:0; } - .sw-slider { - position:absolute; inset:0; cursor:pointer; - background:#334155; border-radius:26px; transition:0.3s; - } - .sw-slider::before { - content:''; position:absolute; - height:20px; width:20px; left:3px; bottom:3px; - background:#fff; border-radius:50%; transition:0.3s; - } - .sw input:checked + .sw-slider { background:var(--green); } - .sw input:checked + .sw-slider::before { transform:translateX(22px); } - - .loading { - display:flex; align-items:center; justify-content:center; - gap:10px; padding:28px; color:var(--text-dim); font-size:0.95rem; - } - .spinner { - width:20px; height:20px; border-radius:50%; - border:3px solid rgba(14,165,233,0.2); border-top-color:var(--primary); - animation:spin 0.8s linear infinite; - } - @keyframes spin { to{transform:rotate(360deg)} } - - .empty { text-align:center; padding:50px 20px; } - .empty-ico { font-size:3rem; margin-bottom:12px; } - .empty-title { font-family:'Kanit'; font-size:1.2rem; color:var(--text-dim); } - - .modal-overlay { - display:none; position:fixed; inset:0; z-index:1000; - background:rgba(0,0,0,0.75); backdrop-filter:blur(8px); - align-items:center; justify-content:center; - } - .modal-overlay.open { display:flex; } - .modal { - background:#1e293b; color:#fff; width:90%; max-width:520px; - padding:28px; border-radius:20px; border:1px solid var(--border-glass); - box-shadow:0 25px 50px -12px rgba(0,0,0,0.5); - max-height:90vh; overflow-y:auto; - } - .modal-hd { - font-family:'Kanit'; font-size:1.25rem; margin-bottom:22px; - color:var(--accent); display:flex; align-items:center; gap:8px; - } - .modal-close { - margin-left:auto; background:transparent; border:none; - color:var(--text-dim); cursor:pointer; font-size:1.1rem; line-height:1; - } - .modal-close:hover { color:#fff; } - - .score-big { font-size:1.8rem; font-weight:700; color:var(--accent); } - .score-sep { color:var(--text-dim); margin:0 2px; } - .score-max { font-size:1.3rem; color:var(--text-dim); } - - .att-side-label { - background:rgba(15,23,42,0.9) !important; - font-family:'Kanit'; font-weight:600; - color:var(--accent) !important; - white-space:nowrap; min-width:180px; - } - .att-summary-col { - background:rgba(14,165,233,0.08) !important; - font-weight:700; - } - - #toasts { - position:fixed; bottom:24px; right:20px; z-index:9999; - display:flex; flex-direction:column; gap:8px; - } - .toast { - display:flex; align-items:center; gap:10px; - padding:12px 18px; border-radius:12px; font-size:0.9rem; - box-shadow:0 8px 24px rgba(0,0,0,0.4); animation:slideIn 0.3s ease; - max-width:340px; font-family:'Sarabun'; - } - @keyframes slideIn { from{transform:translateX(120%);opacity:0} to{transform:translateX(0);opacity:1} } - .toast.success { background:#065f46; border:1px solid #10b981; color:#d1fae5; } - .toast.error { background:#7f1d1d; border:1px solid #ef4444; color:#fee2e2; } - .toast.info { background:#1e3a5f; border:1px solid #3b82f6; color:#bfdbfe; } - .toast.warn { background:#78350f; border:1px solid #f59e0b; color:#fef3c7; } - - .dashboard-grid { - display:grid; grid-template-columns:1fr 1.2fr; - gap:20px; margin-bottom:24px; - } - .prog-container { margin-bottom:15px; } - .prog-label { display:flex; justify-content:space-between; font-size:0.85rem; margin-bottom:5px; color:var(--text-dim); } - .prog-bar-bg { width:100%; height:10px; background:rgba(255,255,255,0.08); border-radius:20px; overflow:hidden; } - .prog-bar-fill { height:100%; border-radius:20px; transition:width 0.8s ease-out; } - - .tr-subject-group td { - background: rgba(14,165,233,0.08) !important; - font-family:'Kanit'; font-weight:600; - color: var(--accent) !important; - padding: 8px 15px !important; - font-size: 0.9rem; - border-bottom: 1px solid rgba(14,165,233,0.2) !important; - } - - /* ── Sync progress overlay ── */ - #sync-overlay { - display:none; position:fixed; inset:0; z-index:2000; - background:rgba(0,0,0,0.7); backdrop-filter:blur(6px); - align-items:center; justify-content:center; flex-direction:column; gap:16px; - } - #sync-overlay.open { display:flex; } - #sync-progress-text { font-family:'Kanit'; font-size:1.1rem; color:#fff; } - #sync-progress-bar-wrap { width:300px; height:10px; background:rgba(255,255,255,0.15); border-radius:20px; overflow:hidden; } - #sync-progress-bar { height:100%; width:0%; background:var(--primary); border-radius:20px; transition:width 0.3s; } - - @media (max-width:768px) { - .grid-4 { grid-template-columns:repeat(2,1fr); } - .grid-3 { grid-template-columns:repeat(2,1fr); } - .grid-2 { grid-template-columns:1fr; } - .dashboard-grid { grid-template-columns:1fr; } - .header-inner { flex-direction:column; height:auto; padding:12px 0; gap:10px; } - .hero h1 { font-size:1.45rem; } - .search-row { flex-direction:column; } - } - @media (max-width:480px) { - .grid-4, .grid-3 { grid-template-columns:1fr; } - } +:root { + --primary: #0ea5e9; + --primary-glow: rgba(14, 165, 233, 0.5); + --accent: #22d3ee; + --accent-glow: rgba(34, 211, 238, 0.5); + --green: #10b981; + --red: #ef4444; + --amber: #f59e0b; + --purple: #a855f7; + --bg-dark: #020617; /* เข้มขึ้นเพื่อให้ Glow เด่น */ + --bg-glass: rgba(15, 23, 42, 0.75); + --border-glass: rgba(255, 255, 255, 0.1); + --radius-lg: 20px; +} + +body { + font-family: 'Sarabun', sans-serif; + background-color: var(--bg-dark); + color: #f1f5f9; + min-height: 100vh; + margin: 0; + line-height: 1.6; + letter-spacing: 0.015em; +} + +/* --- เพิ่มความเริสให้ฉากหลัง --- */ +.bg-scene { + position: fixed; inset: 0; z-index: 0; + background: radial-gradient(circle at 50% 50%, #0f172a 0%, #020617 100%); + overflow: hidden; +} + +.bg-scene::before { + content: ''; position: absolute; inset: 0; + background-image: + radial-gradient(var(--primary-glow) 1px, transparent 1px), + radial-gradient(var(--accent-glow) 1px, transparent 1px); + background-size: 40px 40px; + background-position: 0 0, 20px 20px; + opacity: 0.1; /* ลายตารางจางๆ แบบ High-tech */ +} + +/* --- DNA Animation ที่สมจริงขึ้น --- */ +.dna-container { + position: absolute; top: 0; left: 80px; + width: 60px; height: 100%; + display: flex; flex-direction: column; + justify-content: space-around; opacity: 0.5; +} + +.dna-dot { + width: 10px; height: 10px; + background: var(--accent); border-radius: 50%; + box-shadow: 0 0 15px var(--accent), 0 0 30px var(--accent-glow); + animation: rotate3d-enhanced 3s ease-in-out infinite; +} + +.dna-dot.strand-2 { + background: var(--purple); + box-shadow: 0 0 15px var(--purple), 0 0 30px rgba(168, 85, 247, 0.4); + animation-delay: -1.5s; +} + +@keyframes rotate3d-enhanced { + 0%, 100% { transform: translateX(-50px) scale(1.2); opacity: 1; } + 50% { transform: translateX(50px) scale(0.7); opacity: 0.3; } +} + +/* --- Header แบบลอยตัว --- */ +header { + position: sticky; top: 15px; z-index: 100; + margin: 0 20px; + background: rgba(15, 23, 42, 0.8); + backdrop-filter: blur(20px); + border: 1px solid var(--border-glass); + border-radius: var(--radius-lg); + box-shadow: 0 10px 30px rgba(0,0,0,0.5); +} + +.logo span { + background: linear-gradient(90deg, #fff, var(--accent)); + -webkit-background-clip: text; + -webkit-text-fill-color: transparent; + font-size: 1.2rem; +} + +/* --- Card & Glassmorphism --- */ +.card { + background: var(--bg-glass); + border: 1px solid var(--border-glass); + border-radius: var(--radius-lg); + padding: 28px; + box-shadow: 0 15px 35px rgba(0,0,0,0.4); + transition: transform 0.3s ease, border-color 0.3s ease; +} + +.card:hover { + border-color: var(--primary-glow); +} + +/* --- Hero Section --- */ +.hero { + background: linear-gradient(135deg, rgba(14,165,233,0.15) 0%, rgba(168,85,247,0.05) 100%); + border: 1px solid rgba(14,165,233,0.2); + box-shadow: inset 0 0 20px rgba(14,165,233,0.1); +} + +.hero h1 { + font-weight: 700; + text-shadow: 0 0 20px var(--primary-glow); + letter-spacing: -0.02em; +} + +/* --- Inputs & Buttons --- */ +input[type="text"], select { + background: rgba(255,255,255,0.05) !important; + border: 1px solid var(--border-glass) !important; + color: #fff !important; + transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1); +} + +input[type="text"]:focus { + background: rgba(255,255,255,0.1) !important; + border-color: var(--accent) !important; + box-shadow: 0 0 15px var(--accent-glow) !important; +} + +.btn { + text-transform: uppercase; + letter-spacing: 0.05em; + font-size: 0.85rem; + overflow: hidden; + position: relative; +} + +.btn-primary { + background: linear-gradient(135deg, var(--primary), var(--purple)); + box-shadow: 0 4px 15px rgba(14,165,233,0.4); +} + +.btn-primary:hover { + filter: brightness(1.2); + box-shadow: 0 6px 20px rgba(14,165,233,0.6); +} + +/* --- ตารางที่ดูสะอาดตาแต่ล้ำ --- */ +table { + border-spacing: 0 8px; + border-collapse: separate; +} + +thead tr { + background: transparent !important; +} + +th { + color: var(--text-dim) !important; + font-weight: 500; + text-transform: uppercase; + font-size: 0.75rem; + letter-spacing: 0.1em; +} + +tbody tr { + background: rgba(255,255,255,0.03); + transition: all 0.2s; +} + +tbody tr td:first-child { border-radius: 12px 0 0 12px; } +tbody tr td:last-child { border-radius: 0 12px 12px 0; } + +tbody tr:hover { + background: rgba(255,255,255,0.07); + transform: scale(1.01); +} + +/* --- Badge ให้ดูเหมือนไฟนีออน --- */ +.badge { + padding: 6px 14px; + border-radius: 8px; + font-weight: 700; + font-size: 0.7rem; + text-transform: uppercase; + backdrop-filter: blur(5px); +} + +.badge-green { + background: rgba(16, 185, 129, 0.1); + color: #4ade80; + border: 1px solid #10b981; + box-shadow: 0 0 10px rgba(16,185,129,0.3); +} + +/* --- Stat Card --- */ +.stat-card { + background: linear-gradient(180deg, rgba(255,255,255,0.05) 0%, transparent 100%); + border: 1px solid var(--border-glass); +} + +.stat-num { + background: linear-gradient(to bottom, #fff, #94a3b8); + -webkit-background-clip: text; + -webkit-text-fill-color: transparent; + filter: drop-shadow(0 0 10px rgba(255,255,255,0.3)); +} + +/* --- Scrollbar --- */ +::-webkit-scrollbar { width: 8px; } +::-webkit-scrollbar-track { background: var(--bg-dark); } +::-webkit-scrollbar-thumb { + background: var(--border-glass); + border-radius: 10px; +} +::-webkit-scrollbar-thumb:hover { background: var(--primary-glow); } From 8223510a0d7d2124cd68cb6c0cb90efebea3780d Mon Sep 17 00:00:00 2001 From: ARNUT KLANGPRAPUN <136555438+kpp-arnut@users.noreply.github.com> Date: Thu, 7 May 2026 15:45:22 +0700 Subject: [PATCH 18/46] Refactor CSS variables and styles for improved design --- style.css | 247 +++++++++++++++++++++++------------------------------- 1 file changed, 105 insertions(+), 142 deletions(-) diff --git a/style.css b/style.css index a1f4c9a..727cb50 100644 --- a/style.css +++ b/style.css @@ -1,214 +1,177 @@ :root { - --primary: #0ea5e9; - --primary-glow: rgba(14, 165, 233, 0.5); - --accent: #22d3ee; - --accent-glow: rgba(34, 211, 238, 0.5); - --green: #10b981; - --red: #ef4444; - --amber: #f59e0b; - --purple: #a855f7; - --bg-dark: #020617; /* เข้มขึ้นเพื่อให้ Glow เด่น */ - --bg-glass: rgba(15, 23, 42, 0.75); - --border-glass: rgba(255, 255, 255, 0.1); - --radius-lg: 20px; + --deep-navy: #002366; + --vibrant-yellow: #FFD700; + --energetic-orange: #F39C12; + --sky-blue: #87CEEB; + --pure-white: #FFFFFF; + + --primary: var(--sky-blue); + --accent: var(--vibrant-yellow); + --green: #10b981; + --red: #ef4444; + --bg-dark: var(--deep-navy); + --bg-glass: rgba(255, 255, 255, 0.95); /* ใช้ขาวกระจกเพื่อให้สี Navy ด้านหลังดูแพง */ + --border-glass: rgba(0, 35, 102, 0.1); + --radius-lg: 20px; } body { font-family: 'Sarabun', sans-serif; background-color: var(--bg-dark); - color: #f1f5f9; + color: var(--deep-navy); min-height: 100vh; margin: 0; - line-height: 1.6; - letter-spacing: 0.015em; } -/* --- เพิ่มความเริสให้ฉากหลัง --- */ +/* --- DNA ฉากหลัง: ปรับให้ใหญ่และหนาขึ้น --- */ .bg-scene { position: fixed; inset: 0; z-index: 0; - background: radial-gradient(circle at 50% 50%, #0f172a 0%, #020617 100%); + background: radial-gradient(circle at center, #003399 0%, var(--deep-navy) 100%); overflow: hidden; } -.bg-scene::before { - content: ''; position: absolute; inset: 0; - background-image: - radial-gradient(var(--primary-glow) 1px, transparent 1px), - radial-gradient(var(--accent-glow) 1px, transparent 1px); - background-size: 40px 40px; - background-position: 0 0, 20px 20px; - opacity: 0.1; /* ลายตารางจางๆ แบบ High-tech */ -} - -/* --- DNA Animation ที่สมจริงขึ้น --- */ .dna-container { - position: absolute; top: 0; left: 80px; - width: 60px; height: 100%; + position: absolute; top: 0; left: 100px; + width: 120px; /* ขยายความกว้าง */ + height: 100%; display: flex; flex-direction: column; - justify-content: space-around; opacity: 0.5; + justify-content: space-around; opacity: 0.6; } .dna-dot { - width: 10px; height: 10px; - background: var(--accent); border-radius: 50%; - box-shadow: 0 0 15px var(--accent), 0 0 30px var(--accent-glow); - animation: rotate3d-enhanced 3s ease-in-out infinite; + width: 20px; height: 20px; /* จุดใหญ่ขึ้นมาก */ + background: var(--vibrant-yellow); border-radius: 50%; + box-shadow: 0 0 20px var(--vibrant-yellow), 0 0 40px rgba(255, 215, 0, 0.5); + animation: rotate3d-heavy 4s ease-in-out infinite; + position: relative; +} + +/* เส้นเชื่อม DNA ให้หนาขึ้น */ +.dna-dot::after { + content: ""; position: absolute; + width: 100px; height: 6px; /* เส้นหนาขึ้น */ + background: linear-gradient(90deg, var(--vibrant-yellow), var(--energetic-orange)); + top: 50%; left: 50%; transform: translateY(-50%); + z-index: -1; opacity: 0.8; + border-radius: 10px; } .dna-dot.strand-2 { - background: var(--purple); - box-shadow: 0 0 15px var(--purple), 0 0 30px rgba(168, 85, 247, 0.4); - animation-delay: -1.5s; + background: var(--sky-blue); + box-shadow: 0 0 20px var(--sky-blue), 0 0 40px rgba(135, 206, 235, 0.5); + animation-delay: -2s; } -@keyframes rotate3d-enhanced { - 0%, 100% { transform: translateX(-50px) scale(1.2); opacity: 1; } - 50% { transform: translateX(50px) scale(0.7); opacity: 0.3; } +@keyframes rotate3d-heavy { + 0%, 100% { transform: translateX(-60px) scale(1.3); z-index: 2; opacity: 1; } + 50% { transform: translateX(60px) scale(0.8); z-index: -1; opacity: 0.4; } } -/* --- Header แบบลอยตัว --- */ +/* --- Header & Navigation --- */ header { - position: sticky; top: 15px; z-index: 100; - margin: 0 20px; - background: rgba(15, 23, 42, 0.8); - backdrop-filter: blur(20px); - border: 1px solid var(--border-glass); - border-radius: var(--radius-lg); - box-shadow: 0 10px 30px rgba(0,0,0,0.5); + background: var(--pure-white); + border-bottom: 4px solid var(--vibrant-yellow); /* เพิ่มขอบสีเหลืองหนาๆ */ + padding: 10px 20px; + position: sticky; top: 0; z-index: 100; + box-shadow: 0 4px 20px rgba(0,0,0,0.2); } .logo span { - background: linear-gradient(90deg, #fff, var(--accent)); - -webkit-background-clip: text; - -webkit-text-fill-color: transparent; - font-size: 1.2rem; + color: var(--deep-navy); + font-size: 1.4rem; font-weight: 800; +} + +.nav-btn { + color: #666; font-weight: 600; +} + +.nav-btn.active { + background: var(--energetic-orange) !important; + color: #fff !important; + box-shadow: 0 4px 15px rgba(243, 156, 18, 0.4) !important; } -/* --- Card & Glassmorphism --- */ +/* --- Card Style --- */ .card { background: var(--bg-glass); - border: 1px solid var(--border-glass); border-radius: var(--radius-lg); - padding: 28px; - box-shadow: 0 15px 35px rgba(0,0,0,0.4); - transition: transform 0.3s ease, border-color 0.3s ease; + border: none; + box-shadow: 0 10px 30px rgba(0,0,0,0.3); + color: var(--deep-navy); } -.card:hover { - border-color: var(--primary-glow); +.card-title { + color: var(--deep-navy); + border-left: 6px solid var(--energetic-orange); + padding-left: 15px; + font-weight: 700; } /* --- Hero Section --- */ .hero { - background: linear-gradient(135deg, rgba(14,165,233,0.15) 0%, rgba(168,85,247,0.05) 100%); - border: 1px solid rgba(14,165,233,0.2); - box-shadow: inset 0 0 20px rgba(14,165,233,0.1); + background: linear-gradient(135deg, var(--vibrant-yellow) 0%, var(--energetic-orange) 100%); + color: var(--deep-navy); + border: none; } .hero h1 { - font-weight: 700; - text-shadow: 0 0 20px var(--primary-glow); - letter-spacing: -0.02em; -} - -/* --- Inputs & Buttons --- */ -input[type="text"], select { - background: rgba(255,255,255,0.05) !important; - border: 1px solid var(--border-glass) !important; - color: #fff !important; - transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1); -} - -input[type="text"]:focus { - background: rgba(255,255,255,0.1) !important; - border-color: var(--accent) !important; - box-shadow: 0 0 15px var(--accent-glow) !important; -} - -.btn { - text-transform: uppercase; - letter-spacing: 0.05em; - font-size: 0.85rem; - overflow: hidden; - position: relative; + font-weight: 800; + text-shadow: none; } +/* --- Buttons --- */ .btn-primary { - background: linear-gradient(135deg, var(--primary), var(--purple)); - box-shadow: 0 4px 15px rgba(14,165,233,0.4); + background: var(--deep-navy); + color: #fff; + border: 2px solid var(--vibrant-yellow); } .btn-primary:hover { - filter: brightness(1.2); - box-shadow: 0 6px 20px rgba(14,165,233,0.6); + background: #001a4d; + transform: scale(1.05); } -/* --- ตารางที่ดูสะอาดตาแต่ล้ำ --- */ +.btn-success { + background: var(--energetic-orange); + border: none; +} + +/* --- Table --- */ table { - border-spacing: 0 8px; - border-collapse: separate; + background: #fff; + border-radius: 12px; + overflow: hidden; } thead tr { - background: transparent !important; + background: var(--deep-navy) !important; } th { - color: var(--text-dim) !important; - font-weight: 500; - text-transform: uppercase; - font-size: 0.75rem; - letter-spacing: 0.1em; + color: var(--vibrant-yellow) !important; /* หัวตารางตัวหนังสือเหลืองบนพื้นน้ำเงินเข้ม */ } -tbody tr { - background: rgba(255,255,255,0.03); - transition: all 0.2s; -} - -tbody tr td:first-child { border-radius: 12px 0 0 12px; } -tbody tr td:last-child { border-radius: 0 12px 12px 0; } - -tbody tr:hover { - background: rgba(255,255,255,0.07); - transform: scale(1.01); -} - -/* --- Badge ให้ดูเหมือนไฟนีออน --- */ -.badge { - padding: 6px 14px; - border-radius: 8px; - font-weight: 700; - font-size: 0.7rem; - text-transform: uppercase; - backdrop-filter: blur(5px); -} - -.badge-green { - background: rgba(16, 185, 129, 0.1); - color: #4ade80; - border: 1px solid #10b981; - box-shadow: 0 0 10px rgba(16,185,129,0.3); +tbody tr:hover td { + background: rgba(135, 206, 235, 0.1); } /* --- Stat Card --- */ .stat-card { - background: linear-gradient(180deg, rgba(255,255,255,0.05) 0%, transparent 100%); - border: 1px solid var(--border-glass); + background: #fff; + border-bottom: 4px solid var(--sky-blue); } .stat-num { - background: linear-gradient(to bottom, #fff, #94a3b8); - -webkit-background-clip: text; - -webkit-text-fill-color: transparent; - filter: drop-shadow(0 0 10px rgba(255,255,255,0.3)); + color: var(--deep-navy); + font-size: 2.5rem; +} + +/* --- Progress Bar --- */ +.prog-bar-bg { + background: #eee; + height: 14px; } -/* --- Scrollbar --- */ -::-webkit-scrollbar { width: 8px; } -::-webkit-scrollbar-track { background: var(--bg-dark); } -::-webkit-scrollbar-thumb { - background: var(--border-glass); - border-radius: 10px; +.prog-bar-fill { + background: linear-gradient(90deg, var(--sky-blue), var(--deep-navy)); } -::-webkit-scrollbar-thumb:hover { background: var(--primary-glow); } From 7359cce48809c2ec089a0314df73a1bf52a51e36 Mon Sep 17 00:00:00 2001 From: ARNUT KLANGPRAPUN <136555438+kpp-arnut@users.noreply.github.com> Date: Thu, 7 May 2026 15:47:14 +0700 Subject: [PATCH 19/46] Refactor CSS variables and styles for consistency --- style.css | 229 ++++++++++++++++++++++++++++++++++-------------------- 1 file changed, 145 insertions(+), 84 deletions(-) diff --git a/style.css b/style.css index 727cb50..c7e8e00 100644 --- a/style.css +++ b/style.css @@ -1,144 +1,217 @@ :root { + /* ชุดสี Deep Navy - Gold - Orange */ --deep-navy: #002366; --vibrant-yellow: #FFD700; --energetic-orange: #F39C12; --sky-blue: #87CEEB; --pure-white: #FFFFFF; - --primary: var(--sky-blue); - --accent: var(--vibrant-yellow); - --green: #10b981; - --red: #ef4444; --bg-dark: var(--deep-navy); - --bg-glass: rgba(255, 255, 255, 0.95); /* ใช้ขาวกระจกเพื่อให้สี Navy ด้านหลังดูแพง */ - --border-glass: rgba(0, 35, 102, 0.1); - --radius-lg: 20px; + --bg-glass: rgba(255, 255, 255, 0.95); + --border-glass: rgba(255, 255, 255, 0.2); + --radius-lg: 16px; } body { font-family: 'Sarabun', sans-serif; background-color: var(--bg-dark); - color: var(--deep-navy); - min-height: 100vh; margin: 0; + color: var(--pure-white); + overflow-x: hidden; } -/* --- DNA ฉากหลัง: ปรับให้ใหญ่และหนาขึ้น --- */ +/* --- 1. จัดการฉากหลัง DNA (ให้ไปอยู่หลังสุดจริงๆ) --- */ .bg-scene { - position: fixed; inset: 0; z-index: 0; + position: fixed; + inset: 0; + z-index: -1; /* สำคัญ: ต้องเป็นค่าลบ */ background: radial-gradient(circle at center, #003399 0%, var(--deep-navy) 100%); overflow: hidden; } .dna-container { - position: absolute; top: 0; left: 100px; - width: 120px; /* ขยายความกว้าง */ + position: absolute; + top: 0; + left: 5%; + width: 150px; height: 100%; - display: flex; flex-direction: column; - justify-content: space-around; opacity: 0.6; + display: flex; + flex-direction: column; + justify-content: space-around; + opacity: 0.4; } .dna-dot { - width: 20px; height: 20px; /* จุดใหญ่ขึ้นมาก */ - background: var(--vibrant-yellow); border-radius: 50%; - box-shadow: 0 0 20px var(--vibrant-yellow), 0 0 40px rgba(255, 215, 0, 0.5); + width: 18px; + height: 18px; + background: var(--vibrant-yellow); + border-radius: 50%; + box-shadow: 0 0 20px var(--vibrant-yellow); animation: rotate3d-heavy 4s ease-in-out infinite; position: relative; } -/* เส้นเชื่อม DNA ให้หนาขึ้น */ .dna-dot::after { - content: ""; position: absolute; - width: 100px; height: 6px; /* เส้นหนาขึ้น */ + content: ""; + position: absolute; + width: 110px; + height: 6px; background: linear-gradient(90deg, var(--vibrant-yellow), var(--energetic-orange)); - top: 50%; left: 50%; transform: translateY(-50%); - z-index: -1; opacity: 0.8; + top: 50%; + left: 50%; + transform: translateY(-50%); + z-index: -1; border-radius: 10px; } .dna-dot.strand-2 { background: var(--sky-blue); - box-shadow: 0 0 20px var(--sky-blue), 0 0 40px rgba(135, 206, 235, 0.5); + box-shadow: 0 0 20px var(--sky-blue); animation-delay: -2s; } @keyframes rotate3d-heavy { - 0%, 100% { transform: translateX(-60px) scale(1.3); z-index: 2; opacity: 1; } - 50% { transform: translateX(60px) scale(0.8); z-index: -1; opacity: 0.4; } + 0%, 100% { transform: translateX(-60px) scale(1.3); opacity: 1; z-index: 2; } + 50% { transform: translateX(60px) scale(0.7); opacity: 0.3; z-index: -1; } +} + +/* --- 2. จัดระเบียบ App และ Header --- */ +.app { + position: relative; + z-index: 10; /* ให้เนื้อหาอยู่เหนือฉากหลัง */ + min-height: 100vh; } -/* --- Header & Navigation --- */ header { background: var(--pure-white); - border-bottom: 4px solid var(--vibrant-yellow); /* เพิ่มขอบสีเหลืองหนาๆ */ - padding: 10px 20px; - position: sticky; top: 0; z-index: 100; - box-shadow: 0 4px 20px rgba(0,0,0,0.2); + padding: 15px 5%; + position: sticky; + top: 0; + z-index: 100; + box-shadow: 0 4px 20px rgba(0,0,0,0.3); + border-bottom: 4px solid var(--vibrant-yellow); +} + +.header-inner { + max-width: 1200px; + margin: 0 auto; + display: flex; + justify-content: space-between; + align-items: center; + flex-wrap: wrap; + gap: 15px; } .logo span { color: var(--deep-navy); - font-size: 1.4rem; font-weight: 800; + font-size: 1.5rem; + font-weight: 800; + font-family: 'Kanit'; +} + +/* --- 3. จัดการปุ่มกดให้สวยและชัดเจน --- */ +nav { + display: flex; + gap: 10px; + align-items: center; } .nav-btn { - color: #666; font-weight: 600; + background: #f0f4f8; + color: var(--deep-navy); + border: none; + padding: 10px 18px; + border-radius: 10px; + font-weight: 600; + cursor: pointer; + transition: 0.3s; + display: flex; + align-items: center; + gap: 8px; +} + +.nav-btn:hover { + background: #e2e8f0; } .nav-btn.active { background: var(--energetic-orange) !important; - color: #fff !important; - box-shadow: 0 4px 15px rgba(243, 156, 18, 0.4) !important; + color: white !important; + box-shadow: 0 4px 12px rgba(243, 156, 18, 0.4); +} + +#nav-logout { + background: rgba(239, 68, 68, 0.1); + color: #ef4444; + border: 1px solid rgba(239, 68, 68, 0.2); +} + +/* --- 4. จัดการ Main Content และ Card --- */ +main { + max-width: 1200px; + margin: 30px auto; + padding: 0 20px; } -/* --- Card Style --- */ .card { background: var(--bg-glass); border-radius: var(--radius-lg); - border: none; - box-shadow: 0 10px 30px rgba(0,0,0,0.3); - color: var(--deep-navy); + padding: 30px; + box-shadow: 0 10px 40px rgba(0,0,0,0.4); + color: var(--deep-navy); /* ตัวหนังสือใน Card ต้องเป็นสีกรม */ + margin-bottom: 25px; + position: relative; + overflow: hidden; } .card-title { color: var(--deep-navy); + font-family: 'Kanit'; + font-size: 1.4rem; border-left: 6px solid var(--energetic-orange); padding-left: 15px; - font-weight: 700; + margin-bottom: 20px; } -/* --- Hero Section --- */ -.hero { - background: linear-gradient(135deg, var(--vibrant-yellow) 0%, var(--energetic-orange) 100%); - color: var(--deep-navy); - border: none; +/* --- 5. จัดระเบียบ input และปุ่มทั่วไป --- */ +.search-row { + display: flex; + gap: 10px; + margin-top: 20px; } -.hero h1 { - font-weight: 800; - text-shadow: none; +input[type="text"], select { + background: #fff !important; + border: 2px solid #ddd !important; + border-radius: 10px !important; + padding: 12px 15px !important; + color: var(--deep-navy) !important; } -/* --- Buttons --- */ .btn-primary { - background: var(--deep-navy); - color: #fff; - border: 2px solid var(--vibrant-yellow); + background: var(--deep-navy) !important; + color: white !important; + border: none; + padding: 12px 25px; + border-radius: 10px; + font-weight: 700; } -.btn-primary:hover { - background: #001a4d; - transform: scale(1.05); +/* --- 6. แก้ไขส่วนอื่นๆ ที่เพี้ยน --- */ +.hero { + background: linear-gradient(135deg, var(--vibrant-yellow) 0%, var(--energetic-orange) 100%); + border-radius: 20px; + padding: 40px; + text-align: center; + color: var(--deep-navy); + margin-bottom: 30px; } -.btn-success { - background: var(--energetic-orange); - border: none; -} +.hero h1 { font-weight: 800; margin-bottom: 10px; } -/* --- Table --- */ -table { - background: #fff; +/* แก้ไขตาราง */ +.tbl-wrap { + background: white; border-radius: 12px; overflow: hidden; } @@ -148,30 +221,18 @@ thead tr { } th { - color: var(--vibrant-yellow) !important; /* หัวตารางตัวหนังสือเหลืองบนพื้นน้ำเงินเข้ม */ -} - -tbody tr:hover td { - background: rgba(135, 206, 235, 0.1); -} - -/* --- Stat Card --- */ -.stat-card { - background: #fff; - border-bottom: 4px solid var(--sky-blue); -} - -.stat-num { - color: var(--deep-navy); - font-size: 2.5rem; + color: var(--vibrant-yellow) !important; + padding: 15px !important; } -/* --- Progress Bar --- */ -.prog-bar-bg { - background: #eee; - height: 14px; +td { + padding: 12px 15px !important; + border-bottom: 1px solid #eee; } -.prog-bar-fill { - background: linear-gradient(90deg, var(--sky-blue), var(--deep-navy)); +/* --- Responsive --- */ +@media (max-width: 768px) { + header { padding: 10px; } + .header-inner { flex-direction: column; text-align: center; } + .dna-container { left: 2%; opacity: 0.2; } } From eae8525e6eface80810f2c9694c06cdd74c0e1c6 Mon Sep 17 00:00:00 2001 From: ARNUT KLANGPRAPUN <136555438+kpp-arnut@users.noreply.github.com> Date: Thu, 7 May 2026 15:53:39 +0700 Subject: [PATCH 20/46] Refactor CSS variables and styles for UI improvements Updated color variables and styles for various elements, including background, text, and buttons. Improved layout and responsiveness for better user experience. --- style.css | 639 ++++++++++++++++++++++++++++++++++-------------------- 1 file changed, 402 insertions(+), 237 deletions(-) diff --git a/style.css b/style.css index c7e8e00..cd80344 100644 --- a/style.css +++ b/style.css @@ -1,238 +1,403 @@ :root { - /* ชุดสี Deep Navy - Gold - Orange */ - --deep-navy: #002366; - --vibrant-yellow: #FFD700; - --energetic-orange: #F39C12; - --sky-blue: #87CEEB; - --pure-white: #FFFFFF; - - --bg-dark: var(--deep-navy); - --bg-glass: rgba(255, 255, 255, 0.95); - --border-glass: rgba(255, 255, 255, 0.2); - --radius-lg: 16px; -} - -body { - font-family: 'Sarabun', sans-serif; - background-color: var(--bg-dark); - margin: 0; - color: var(--pure-white); - overflow-x: hidden; -} - -/* --- 1. จัดการฉากหลัง DNA (ให้ไปอยู่หลังสุดจริงๆ) --- */ -.bg-scene { - position: fixed; - inset: 0; - z-index: -1; /* สำคัญ: ต้องเป็นค่าลบ */ - background: radial-gradient(circle at center, #003399 0%, var(--deep-navy) 100%); - overflow: hidden; -} - -.dna-container { - position: absolute; - top: 0; - left: 5%; - width: 150px; - height: 100%; - display: flex; - flex-direction: column; - justify-content: space-around; - opacity: 0.4; -} - -.dna-dot { - width: 18px; - height: 18px; - background: var(--vibrant-yellow); - border-radius: 50%; - box-shadow: 0 0 20px var(--vibrant-yellow); - animation: rotate3d-heavy 4s ease-in-out infinite; - position: relative; -} - -.dna-dot::after { - content: ""; - position: absolute; - width: 110px; - height: 6px; - background: linear-gradient(90deg, var(--vibrant-yellow), var(--energetic-orange)); - top: 50%; - left: 50%; - transform: translateY(-50%); - z-index: -1; - border-radius: 10px; -} - -.dna-dot.strand-2 { - background: var(--sky-blue); - box-shadow: 0 0 20px var(--sky-blue); - animation-delay: -2s; -} - -@keyframes rotate3d-heavy { - 0%, 100% { transform: translateX(-60px) scale(1.3); opacity: 1; z-index: 2; } - 50% { transform: translateX(60px) scale(0.7); opacity: 0.3; z-index: -1; } -} - -/* --- 2. จัดระเบียบ App และ Header --- */ -.app { - position: relative; - z-index: 10; /* ให้เนื้อหาอยู่เหนือฉากหลัง */ - min-height: 100vh; -} - -header { - background: var(--pure-white); - padding: 15px 5%; - position: sticky; - top: 0; - z-index: 100; - box-shadow: 0 4px 20px rgba(0,0,0,0.3); - border-bottom: 4px solid var(--vibrant-yellow); -} - -.header-inner { - max-width: 1200px; - margin: 0 auto; - display: flex; - justify-content: space-between; - align-items: center; - flex-wrap: wrap; - gap: 15px; -} - -.logo span { - color: var(--deep-navy); - font-size: 1.5rem; - font-weight: 800; - font-family: 'Kanit'; -} - -/* --- 3. จัดการปุ่มกดให้สวยและชัดเจน --- */ -nav { - display: flex; - gap: 10px; - align-items: center; -} - -.nav-btn { - background: #f0f4f8; - color: var(--deep-navy); - border: none; - padding: 10px 18px; - border-radius: 10px; - font-weight: 600; - cursor: pointer; - transition: 0.3s; - display: flex; - align-items: center; - gap: 8px; -} - -.nav-btn:hover { - background: #e2e8f0; -} - -.nav-btn.active { - background: var(--energetic-orange) !important; - color: white !important; - box-shadow: 0 4px 12px rgba(243, 156, 18, 0.4); -} - -#nav-logout { - background: rgba(239, 68, 68, 0.1); - color: #ef4444; - border: 1px solid rgba(239, 68, 68, 0.2); -} - -/* --- 4. จัดการ Main Content และ Card --- */ -main { - max-width: 1200px; - margin: 30px auto; - padding: 0 20px; -} - -.card { - background: var(--bg-glass); - border-radius: var(--radius-lg); - padding: 30px; - box-shadow: 0 10px 40px rgba(0,0,0,0.4); - color: var(--deep-navy); /* ตัวหนังสือใน Card ต้องเป็นสีกรม */ - margin-bottom: 25px; - position: relative; - overflow: hidden; -} - -.card-title { - color: var(--deep-navy); - font-family: 'Kanit'; - font-size: 1.4rem; - border-left: 6px solid var(--energetic-orange); - padding-left: 15px; - margin-bottom: 20px; -} - -/* --- 5. จัดระเบียบ input และปุ่มทั่วไป --- */ -.search-row { - display: flex; - gap: 10px; - margin-top: 20px; -} - -input[type="text"], select { - background: #fff !important; - border: 2px solid #ddd !important; - border-radius: 10px !important; - padding: 12px 15px !important; - color: var(--deep-navy) !important; -} - -.btn-primary { - background: var(--deep-navy) !important; - color: white !important; - border: none; - padding: 12px 25px; - border-radius: 10px; - font-weight: 700; -} - -/* --- 6. แก้ไขส่วนอื่นๆ ที่เพี้ยน --- */ -.hero { - background: linear-gradient(135deg, var(--vibrant-yellow) 0%, var(--energetic-orange) 100%); - border-radius: 20px; - padding: 40px; - text-align: center; - color: var(--deep-navy); - margin-bottom: 30px; -} - -.hero h1 { font-weight: 800; margin-bottom: 10px; } - -/* แก้ไขตาราง */ -.tbl-wrap { - background: white; - border-radius: 12px; - overflow: hidden; -} - -thead tr { - background: var(--deep-navy) !important; -} - -th { - color: var(--vibrant-yellow) !important; - padding: 15px !important; -} - -td { - padding: 12px 15px !important; - border-bottom: 1px solid #eee; -} - -/* --- Responsive --- */ -@media (max-width: 768px) { - header { padding: 10px; } - .header-inner { flex-direction: column; text-align: center; } - .dna-container { left: 2%; opacity: 0.2; } -} + --primary: #0ea5e9; + --primary-dark: #0284c7; + --cyan: #06b6d4; + --accent: #22d3ee; + --green: #10b981; + --red: #ef4444; + --amber: #f59e0b; + --bg-dark: #050e30; + --bg-glass: rgba(15,23,42,0.85); + --bg-card: rgba(30,41,59,0.7); + --text-main: #f8fafc; + --text-dim: #94a3b8; + --text-muted: #64748b; + --border-glass: rgba(255,255,255,0.15); + --radius-md: 16px; + --shadow-lg: 0 20px 25px -5px rgba(0,0,0,0.3); + --purple: #a855f7; + --purple-dark: #7e22ce; + } + body { + font-family: 'Sarabun', sans-serif; + background-color: var(--bg-dark); + color: var(--text-main); + min-height: 100vh; + overflow-x: hidden; + } + + /* ════════════════════════════════ + BG SCENE — ใช้ DNA ชุดใหม่ที่สวยกว่า + แต่ยังคง z-index และ layout เดิม + ════════════════════════════════ */ + .bg-scene { + position: fixed; + inset: 0; + z-index: 0; + background: radial-gradient(circle at center, #003399 0%, #050e30 100%); + overflow: hidden; + } + /* ลบ ::before / ::after เดิมออก แล้วใช้พื้นหลังข้างบนแทน */ + + /* DNA ชุดใหม่ — ใหญ่ขึ้น มีเส้นเชื่อม สวยขึ้น */ + .dna-container { + position: absolute; + top: 0; + left: 5%; + width: 150px; + height: 100%; + display: flex; + flex-direction: column; + justify-content: space-around; + opacity: 0.4; + } + + .dna-dot { + width: 18px; + height: 18px; + background: #FFD700; /* สีทองสด */ + border-radius: 50%; + box-shadow: 0 0 20px #FFD700; + animation: rotate3d 4s ease-in-out infinite; + position: relative; + } + + /* เส้นเชื่อมระหว่างจุด */ + .dna-dot::after { + content: ""; + position: absolute; + width: 110px; + height: 5px; + background: linear-gradient(90deg, #FFD700, #F39C12); + top: 50%; + left: 50%; + transform: translateY(-50%); + z-index: -1; + border-radius: 10px; + opacity: 0.7; + } + + .dna-dot.strand-2 { + background: #87CEEB; /* ฟ้าอ่อน */ + box-shadow: 0 0 20px #87CEEB; + animation-delay: -2s; + } + + @keyframes rotate3d { + 0%, 100% { transform: translateX(-55px) scale(1.2); opacity: 1; } + 50% { transform: translateX(55px) scale(0.7); opacity: 0.35; } + } + + /* ════════════════════════════════ + LAYOUT — เหมือนเดิมทุกอย่าง + ════════════════════════════════ */ + .app { position: relative; z-index: 1; } + + header { + position: sticky; top: 0; z-index: 100; + background: rgba(5,14,48,0.92); + backdrop-filter: blur(16px); + border-bottom: 1px solid var(--border-glass); + padding: 0 20px; + } + .header-inner { + max-width: 1200px; margin: 0 auto; height: 65px; + display: flex; align-items: center; justify-content: space-between; + } + .logo { + font-family: 'Kanit'; font-weight: 700; color: #fff; + display: flex; align-items: center; gap: 10px; font-size: 1.05rem; + } + + nav { display: flex; gap: 8px; } + .nav-btn { + background: transparent; border: none; color: var(--text-dim); + padding: 8px 16px; border-radius: 10px; cursor: pointer; transition: all 0.25s; + font-family: 'Sarabun'; font-weight: 500; font-size: 0.95rem; + display: flex; align-items: center; gap: 6px; position: relative; + } + .nav-btn:hover { background: rgba(255,255,255,0.1); color: #fff; } + .nav-btn.active { background: var(--primary); color: #fff; box-shadow: 0 4px 14px rgba(14,165,233,0.4); } + + .cfg-dot { width: 8px; height: 8px; border-radius: 50%; background: var(--amber); display: inline-block; } + .cfg-dot.ok { background: var(--green); } + + main { max-width: 1200px; margin: 0 auto; padding: 28px 20px; } + .page { display: none; } + .page.active { display: block; } + + .card { + background: var(--bg-glass); border: 1px solid var(--border-glass); + border-radius: var(--radius-md); padding: 24px; + box-shadow: var(--shadow-lg); backdrop-filter: blur(8px); + } + .mb-4 { margin-bottom: 20px; } + .mt-4 { margin-top: 20px; } + .mt-3 { margin-top: 12px; } + .mb-3 { margin-bottom: 12px; } + + .card-title { + font-family: 'Kanit'; font-size: 1.15rem; margin-bottom: 18px; + color: var(--accent); display: flex; align-items: center; gap: 8px; + } + + .hero { + text-align: center; padding: 42px 20px; + background: linear-gradient(135deg, rgba(14,165,233,0.12), rgba(6,182,212,0.05)); + border-radius: 20px; border: 1px solid var(--border-glass); margin-bottom: 28px; + } + .hero h1 { font-family: 'Kanit'; font-size: 1.9rem; margin-bottom: 8px; color: #fff; } + .hero p { color: var(--text-dim); font-size: 1rem; } + + .search-row { display: flex; gap: 10px; max-width: 460px; margin: 22px auto 0; } + + input[type="text"], input[type="number"], input[type="date"], input[type="password"], select { + background: rgba(255,255,255,0.95); border: 2px solid transparent; border-radius: 10px; + padding: 10px 14px; font-family: 'Sarabun'; font-size: 0.97rem; + color: #0f172a; outline: none; width: 100%; transition: border-color 0.2s, box-shadow 0.2s; + } + input:focus, select:focus { + border-color: var(--primary); box-shadow: 0 0 0 3px rgba(14,165,233,0.2); + } + label { display: block; margin-bottom: 6px; font-size: 0.88rem; font-weight: 600; color: var(--text-dim); } + + .btn { + padding: 10px 20px; border-radius: 10px; font-weight: 600; cursor: pointer; + border: none; display: inline-flex; align-items: center; gap: 7px; + transition: all 0.2s; font-family: 'Sarabun'; font-size: 0.95rem; white-space: nowrap; + } + .btn:hover { transform: translateY(-1px); } + .btn:active { transform: translateY(0); } + .btn-primary { background: var(--primary); color: #fff; box-shadow: 0 4px 12px rgba(14,165,233,0.3); } + .btn-primary:hover { background: var(--primary-dark); } + .btn-success { background: var(--green); color: #fff; box-shadow: 0 4px 12px rgba(16,185,129,0.3); } + .btn-danger { background: var(--red); color: #fff; } + .btn-outline { background: transparent; border: 1px solid var(--border-glass); color: var(--text-main); } + .btn-ghost { background: rgba(255,255,255,0.08); color: var(--text-main); } + .btn-sm { padding: 6px 14px; font-size: 0.85rem; border-radius: 8px; } + .btn-lg { padding: 13px 28px; font-size: 1.05rem; } + .btn-xl { padding: 13px 24px; font-size: 1rem; } + .w-full { width: 100%; justify-content: center; } + + .grid-2 { display: grid; grid-template-columns: repeat(2,1fr); } + .grid-3 { display: grid; grid-template-columns: repeat(3,1fr); } + .grid-4 { display: grid; grid-template-columns: repeat(4,1fr); } + .gap-2 { gap: 8px; } + .gap-3 { gap: 12px; } + .gap-4 { gap: 16px; } + + .flex { display: flex; } + .flex-1 { flex: 1; } + .flex-wrap { flex-wrap: wrap; } + .items-center { align-items: center; } + .justify-end { justify-content: flex-end; } + .justify-center { justify-content: center; } + .justify-between { justify-content: space-between; } + .text-center { text-align: center; } + .text-sm { font-size: 0.85rem; } + .text-muted { color: var(--text-dim); } + .font-bold { font-weight: 700; } + + .stat-card { + background: rgba(255,255,255,0.05); padding: 18px; + border-radius: 14px; text-align: center; border: 1px solid var(--border-glass); + } + .stat-num { font-family: 'Kanit'; font-size: 2rem; font-weight: 700; display: block; line-height: 1.1; } + .stat-label { color: var(--text-dim); font-size: 0.82rem; margin-top: 6px; display: block; } + + .tbl-wrap { overflow-x: auto; border-radius: 12px; border: 1px solid var(--border-glass); } + table { width: 100%; border-collapse: collapse; } + thead tr { background: linear-gradient(135deg, #0ea5e9, #06b6d4) !important; } + th { + padding: 14px 15px; color: #fff !important; + font-family: 'Kanit'; font-weight: 600; text-align: left; + text-shadow: 0 1px 2px rgba(0,0,0,0.25); + border-bottom: 1px solid rgba(255,255,255,0.2); + } + td { padding: 13px 15px; color: var(--text-main) !important; border-bottom: 1px solid var(--border-glass); vertical-align: middle; } + tbody tr:last-child td { border-bottom: none; } + tbody tr:hover td { background: rgba(255,255,255,0.04); } + + .row-มา { background: rgba(16,185,129,0.12) !important; border-left: 3px solid var(--green); } + .row-ขาด { background: rgba(239,68,68,0.12) !important; border-left: 3px solid var(--red); } + .row-ลา { background: rgba(14,165,233,0.12) !important; border-left: 3px solid var(--primary); } + .row-สาย { background: rgba(245,158,11,0.12) !important; border-left: 3px solid var(--amber); } + .row-not-sent { background: rgba(239,68,68,0.07) !important; } + + .badge { + padding: 5px 12px; border-radius: 20px; font-size: 0.8rem; font-weight: 600; + display: inline-block; min-width: 80px; text-align: center; + } + .badge-green { background: rgba(16,185,129,0.2); color: #4ade80; border: 1px solid rgba(16,185,129,0.35); } + .badge-red { background: rgba(239,68,68,0.2); color: #f87171; border: 1px solid rgba(239,68,68,0.35); } + .badge-blue { background: rgba(14,165,233,0.2); color: #7dd3fc; border: 1px solid rgba(14,165,233,0.35); } + .badge-amber { background: rgba(245,158,11,0.2); color: #fbbf24; border: 1px solid rgba(245,158,11,0.35); } + .badge-purple { background: rgba(168,85,247,0.2); color: #c084fc; border: 1px solid rgba(168,85,247,0.35); } + + .tog { + padding: 7px 16px; border-radius: 8px; border: none; cursor: pointer; + font-family: 'Sarabun'; font-weight: 700; font-size: 0.88rem; transition: all 0.2s; + } + .tog.checked { background: rgba(16,185,129,0.2); color: #4ade80; border: 1px solid rgba(16,185,129,0.4); } + .tog.waiting { background: rgba(245,158,11,0.2); color: #fbbf24; border: 1px solid rgba(245,158,11,0.4); } + .tog.not-sent { background: rgba(239,68,68,0.15); color: #f87171; border: 1px solid rgba(239,68,68,0.3); } + .tog:hover { transform: scale(1.05); } + + .score-in { + width: 80px !important; text-align: center; + font-weight: 700; font-size: 1rem; + } + + .att-select { + min-width: 80px; padding: 6px 10px; border-radius: 8px; + font-weight: 700; font-family: 'Sarabun'; cursor: pointer; + } + .select-มา { background: #dcfce7; color: #166534; border: none; } + .select-ขาด { background: #fee2e2; color: #991b1b; border: none; } + .select-ลา { background: #e0f2fe; color: #075985; border: none; } + .select-สาย { background: #fef3c7; color: #92400e; border: none; } + + .tab-bar { + display: flex; gap: 6px; margin-bottom: 20px; + background: rgba(255,255,255,0.04); padding: 6px; border-radius: 14px; + border: 1px solid var(--border-glass); flex-wrap: wrap; + } + .tab-btn { + padding: 9px 18px; border-radius: 10px; border: none; + background: transparent; color: var(--text-dim); + cursor: pointer; font-family: 'Sarabun'; font-weight: 600; + font-size: 0.9rem; transition: all 0.2s; + } + .tab-btn:hover { background: rgba(255,255,255,0.08); color: #fff; } + .tab-btn.active { background: var(--primary); color: #fff; box-shadow: 0 4px 12px rgba(14,165,233,0.35); } + + .scan-bar { + background: rgba(16,185,129,0.1); border: 1px solid rgba(16,185,129,0.3); + border-radius: 12px; padding: 12px 16px; + display: flex; align-items: center; gap: 12px; flex-wrap: wrap; + } + + .sw { position: relative; display: inline-block; width: 48px; height: 26px; flex-shrink: 0; } + .sw input { opacity: 0; width: 0; height: 0; } + .sw-slider { + position: absolute; inset: 0; cursor: pointer; + background: #334155; border-radius: 26px; transition: 0.3s; + } + .sw-slider::before { + content: ''; position: absolute; + height: 20px; width: 20px; left: 3px; bottom: 3px; + background: #fff; border-radius: 50%; transition: 0.3s; + } + .sw input:checked + .sw-slider { background: var(--green); } + .sw input:checked + .sw-slider::before { transform: translateX(22px); } + + .loading { + display: flex; align-items: center; justify-content: center; + gap: 10px; padding: 28px; color: var(--text-dim); font-size: 0.95rem; + } + .spinner { + width: 20px; height: 20px; border-radius: 50%; + border: 3px solid rgba(14,165,233,0.2); border-top-color: var(--primary); + animation: spin 0.8s linear infinite; + } + @keyframes spin { to { transform: rotate(360deg); } } + + .empty { text-align: center; padding: 50px 20px; } + .empty-ico { font-size: 3rem; margin-bottom: 12px; } + .empty-title { font-family: 'Kanit'; font-size: 1.2rem; color: var(--text-dim); } + + .modal-overlay { + display: none; position: fixed; inset: 0; z-index: 1000; + background: rgba(0,0,0,0.75); backdrop-filter: blur(8px); + align-items: center; justify-content: center; + } + .modal-overlay.open { display: flex; } + .modal { + background: #1e293b; color: #fff; width: 90%; max-width: 520px; + padding: 28px; border-radius: 20px; border: 1px solid var(--border-glass); + box-shadow: 0 25px 50px -12px rgba(0,0,0,0.5); + max-height: 90vh; overflow-y: auto; + } + .modal-hd { + font-family: 'Kanit'; font-size: 1.25rem; margin-bottom: 22px; + color: var(--accent); display: flex; align-items: center; gap: 8px; + } + .modal-close { + margin-left: auto; background: transparent; border: none; + color: var(--text-dim); cursor: pointer; font-size: 1.1rem; line-height: 1; + } + .modal-close:hover { color: #fff; } + + .score-big { font-size: 1.8rem; font-weight: 700; color: var(--accent); } + .score-sep { color: var(--text-dim); margin: 0 2px; } + .score-max { font-size: 1.3rem; color: var(--text-dim); } + + .att-side-label { + background: rgba(15,23,42,0.9) !important; + font-family: 'Kanit'; font-weight: 600; + color: var(--accent) !important; + white-space: nowrap; min-width: 180px; + } + .att-summary-col { + background: rgba(14,165,233,0.08) !important; + font-weight: 700; + } + + #toasts { + position: fixed; bottom: 24px; right: 20px; z-index: 9999; + display: flex; flex-direction: column; gap: 8px; + } + .toast { + display: flex; align-items: center; gap: 10px; + padding: 12px 18px; border-radius: 12px; font-size: 0.9rem; + box-shadow: 0 8px 24px rgba(0,0,0,0.4); animation: slideIn 0.3s ease; + max-width: 340px; font-family: 'Sarabun'; + } + @keyframes slideIn { from { transform: translateX(120%); opacity: 0; } to { transform: translateX(0); opacity: 1; } } + .toast.success { background: #065f46; border: 1px solid #10b981; color: #d1fae5; } + .toast.error { background: #7f1d1d; border: 1px solid #ef4444; color: #fee2e2; } + .toast.info { background: #1e3a5f; border: 1px solid #3b82f6; color: #bfdbfe; } + .toast.warn { background: #78350f; border: 1px solid #f59e0b; color: #fef3c7; } + + .dashboard-grid { + display: grid; grid-template-columns: 1fr 1.2fr; + gap: 20px; margin-bottom: 24px; + } + .prog-container { margin-bottom: 15px; } + .prog-label { display: flex; justify-content: space-between; font-size: 0.85rem; margin-bottom: 5px; color: var(--text-dim); } + .prog-bar-bg { width: 100%; height: 10px; background: rgba(255,255,255,0.08); border-radius: 20px; overflow: hidden; } + .prog-bar-fill { height: 100%; border-radius: 20px; transition: width 0.8s ease-out; } + + .tr-subject-group td { + background: rgba(14,165,233,0.08) !important; + font-family: 'Kanit'; font-weight: 600; + color: var(--accent) !important; + padding: 8px 15px !important; + font-size: 0.9rem; + border-bottom: 1px solid rgba(14,165,233,0.2) !important; + } + + /* ── Sync progress overlay ── */ + #sync-overlay { + display: none; position: fixed; inset: 0; z-index: 2000; + background: rgba(0,0,0,0.7); backdrop-filter: blur(6px); + align-items: center; justify-content: center; flex-direction: column; gap: 16px; + } + #sync-overlay.open { display: flex; } + #sync-progress-text { font-family: 'Kanit'; font-size: 1.1rem; color: #fff; } + #sync-progress-bar-wrap { width: 300px; height: 10px; background: rgba(255,255,255,0.15); border-radius: 20px; overflow: hidden; } + #sync-progress-bar { height: 100%; width: 0%; background: var(--primary); border-radius: 20px; transition: width 0.3s; } + + @media (max-width: 768px) { + .grid-4 { grid-template-columns: repeat(2,1fr); } + .grid-3 { grid-template-columns: repeat(2,1fr); } + .grid-2 { grid-template-columns: 1fr; } + .dashboard-grid { grid-template-columns: 1fr; } + .header-inner { flex-direction: column; height: auto; padding: 12px 0; gap: 10px; } + .hero h1 { font-size: 1.45rem; } + .search-row { flex-direction: column; } + .dna-container { left: 2%; opacity: 0.2; } + } + @media (max-width: 480px) { + .grid-4, .grid-3 { grid-template-columns: 1fr; } + } From 00aa5a954b473edaaa68adc618056d77e40f1a5b Mon Sep 17 00:00:00 2001 From: ARNUT KLANGPRAPUN <136555438+kpp-arnut@users.noreply.github.com> Date: Thu, 7 May 2026 16:01:25 +0700 Subject: [PATCH 21/46] Refactor color variables and update styles --- style.css | 653 +++++++++++++++++++++--------------------------------- 1 file changed, 251 insertions(+), 402 deletions(-) diff --git a/style.css b/style.css index cd80344..007bf6d 100644 --- a/style.css +++ b/style.css @@ -1,403 +1,252 @@ :root { - --primary: #0ea5e9; - --primary-dark: #0284c7; - --cyan: #06b6d4; - --accent: #22d3ee; - --green: #10b981; - --red: #ef4444; - --amber: #f59e0b; - --bg-dark: #050e30; - --bg-glass: rgba(15,23,42,0.85); - --bg-card: rgba(30,41,59,0.7); - --text-main: #f8fafc; - --text-dim: #94a3b8; - --text-muted: #64748b; - --border-glass: rgba(255,255,255,0.15); - --radius-md: 16px; - --shadow-lg: 0 20px 25px -5px rgba(0,0,0,0.3); - --purple: #a855f7; - --purple-dark: #7e22ce; - } - body { - font-family: 'Sarabun', sans-serif; - background-color: var(--bg-dark); - color: var(--text-main); - min-height: 100vh; - overflow-x: hidden; - } - - /* ════════════════════════════════ - BG SCENE — ใช้ DNA ชุดใหม่ที่สวยกว่า - แต่ยังคง z-index และ layout เดิม - ════════════════════════════════ */ - .bg-scene { - position: fixed; - inset: 0; - z-index: 0; - background: radial-gradient(circle at center, #003399 0%, #050e30 100%); - overflow: hidden; - } - /* ลบ ::before / ::after เดิมออก แล้วใช้พื้นหลังข้างบนแทน */ - - /* DNA ชุดใหม่ — ใหญ่ขึ้น มีเส้นเชื่อม สวยขึ้น */ - .dna-container { - position: absolute; - top: 0; - left: 5%; - width: 150px; - height: 100%; - display: flex; - flex-direction: column; - justify-content: space-around; - opacity: 0.4; - } - - .dna-dot { - width: 18px; - height: 18px; - background: #FFD700; /* สีทองสด */ - border-radius: 50%; - box-shadow: 0 0 20px #FFD700; - animation: rotate3d 4s ease-in-out infinite; - position: relative; - } - - /* เส้นเชื่อมระหว่างจุด */ - .dna-dot::after { - content: ""; - position: absolute; - width: 110px; - height: 5px; - background: linear-gradient(90deg, #FFD700, #F39C12); - top: 50%; - left: 50%; - transform: translateY(-50%); - z-index: -1; - border-radius: 10px; - opacity: 0.7; - } - - .dna-dot.strand-2 { - background: #87CEEB; /* ฟ้าอ่อน */ - box-shadow: 0 0 20px #87CEEB; - animation-delay: -2s; - } - - @keyframes rotate3d { - 0%, 100% { transform: translateX(-55px) scale(1.2); opacity: 1; } - 50% { transform: translateX(55px) scale(0.7); opacity: 0.35; } - } - - /* ════════════════════════════════ - LAYOUT — เหมือนเดิมทุกอย่าง - ════════════════════════════════ */ - .app { position: relative; z-index: 1; } - - header { - position: sticky; top: 0; z-index: 100; - background: rgba(5,14,48,0.92); - backdrop-filter: blur(16px); - border-bottom: 1px solid var(--border-glass); - padding: 0 20px; - } - .header-inner { - max-width: 1200px; margin: 0 auto; height: 65px; - display: flex; align-items: center; justify-content: space-between; - } - .logo { - font-family: 'Kanit'; font-weight: 700; color: #fff; - display: flex; align-items: center; gap: 10px; font-size: 1.05rem; - } - - nav { display: flex; gap: 8px; } - .nav-btn { - background: transparent; border: none; color: var(--text-dim); - padding: 8px 16px; border-radius: 10px; cursor: pointer; transition: all 0.25s; - font-family: 'Sarabun'; font-weight: 500; font-size: 0.95rem; - display: flex; align-items: center; gap: 6px; position: relative; - } - .nav-btn:hover { background: rgba(255,255,255,0.1); color: #fff; } - .nav-btn.active { background: var(--primary); color: #fff; box-shadow: 0 4px 14px rgba(14,165,233,0.4); } - - .cfg-dot { width: 8px; height: 8px; border-radius: 50%; background: var(--amber); display: inline-block; } - .cfg-dot.ok { background: var(--green); } - - main { max-width: 1200px; margin: 0 auto; padding: 28px 20px; } - .page { display: none; } - .page.active { display: block; } - - .card { - background: var(--bg-glass); border: 1px solid var(--border-glass); - border-radius: var(--radius-md); padding: 24px; - box-shadow: var(--shadow-lg); backdrop-filter: blur(8px); - } - .mb-4 { margin-bottom: 20px; } - .mt-4 { margin-top: 20px; } - .mt-3 { margin-top: 12px; } - .mb-3 { margin-bottom: 12px; } - - .card-title { - font-family: 'Kanit'; font-size: 1.15rem; margin-bottom: 18px; - color: var(--accent); display: flex; align-items: center; gap: 8px; - } - - .hero { - text-align: center; padding: 42px 20px; - background: linear-gradient(135deg, rgba(14,165,233,0.12), rgba(6,182,212,0.05)); - border-radius: 20px; border: 1px solid var(--border-glass); margin-bottom: 28px; - } - .hero h1 { font-family: 'Kanit'; font-size: 1.9rem; margin-bottom: 8px; color: #fff; } - .hero p { color: var(--text-dim); font-size: 1rem; } - - .search-row { display: flex; gap: 10px; max-width: 460px; margin: 22px auto 0; } - - input[type="text"], input[type="number"], input[type="date"], input[type="password"], select { - background: rgba(255,255,255,0.95); border: 2px solid transparent; border-radius: 10px; - padding: 10px 14px; font-family: 'Sarabun'; font-size: 0.97rem; - color: #0f172a; outline: none; width: 100%; transition: border-color 0.2s, box-shadow 0.2s; - } - input:focus, select:focus { - border-color: var(--primary); box-shadow: 0 0 0 3px rgba(14,165,233,0.2); - } - label { display: block; margin-bottom: 6px; font-size: 0.88rem; font-weight: 600; color: var(--text-dim); } - - .btn { - padding: 10px 20px; border-radius: 10px; font-weight: 600; cursor: pointer; - border: none; display: inline-flex; align-items: center; gap: 7px; - transition: all 0.2s; font-family: 'Sarabun'; font-size: 0.95rem; white-space: nowrap; - } - .btn:hover { transform: translateY(-1px); } - .btn:active { transform: translateY(0); } - .btn-primary { background: var(--primary); color: #fff; box-shadow: 0 4px 12px rgba(14,165,233,0.3); } - .btn-primary:hover { background: var(--primary-dark); } - .btn-success { background: var(--green); color: #fff; box-shadow: 0 4px 12px rgba(16,185,129,0.3); } - .btn-danger { background: var(--red); color: #fff; } - .btn-outline { background: transparent; border: 1px solid var(--border-glass); color: var(--text-main); } - .btn-ghost { background: rgba(255,255,255,0.08); color: var(--text-main); } - .btn-sm { padding: 6px 14px; font-size: 0.85rem; border-radius: 8px; } - .btn-lg { padding: 13px 28px; font-size: 1.05rem; } - .btn-xl { padding: 13px 24px; font-size: 1rem; } - .w-full { width: 100%; justify-content: center; } - - .grid-2 { display: grid; grid-template-columns: repeat(2,1fr); } - .grid-3 { display: grid; grid-template-columns: repeat(3,1fr); } - .grid-4 { display: grid; grid-template-columns: repeat(4,1fr); } - .gap-2 { gap: 8px; } - .gap-3 { gap: 12px; } - .gap-4 { gap: 16px; } - - .flex { display: flex; } - .flex-1 { flex: 1; } - .flex-wrap { flex-wrap: wrap; } - .items-center { align-items: center; } - .justify-end { justify-content: flex-end; } - .justify-center { justify-content: center; } - .justify-between { justify-content: space-between; } - .text-center { text-align: center; } - .text-sm { font-size: 0.85rem; } - .text-muted { color: var(--text-dim); } - .font-bold { font-weight: 700; } - - .stat-card { - background: rgba(255,255,255,0.05); padding: 18px; - border-radius: 14px; text-align: center; border: 1px solid var(--border-glass); - } - .stat-num { font-family: 'Kanit'; font-size: 2rem; font-weight: 700; display: block; line-height: 1.1; } - .stat-label { color: var(--text-dim); font-size: 0.82rem; margin-top: 6px; display: block; } - - .tbl-wrap { overflow-x: auto; border-radius: 12px; border: 1px solid var(--border-glass); } - table { width: 100%; border-collapse: collapse; } - thead tr { background: linear-gradient(135deg, #0ea5e9, #06b6d4) !important; } - th { - padding: 14px 15px; color: #fff !important; - font-family: 'Kanit'; font-weight: 600; text-align: left; - text-shadow: 0 1px 2px rgba(0,0,0,0.25); - border-bottom: 1px solid rgba(255,255,255,0.2); - } - td { padding: 13px 15px; color: var(--text-main) !important; border-bottom: 1px solid var(--border-glass); vertical-align: middle; } - tbody tr:last-child td { border-bottom: none; } - tbody tr:hover td { background: rgba(255,255,255,0.04); } - - .row-มา { background: rgba(16,185,129,0.12) !important; border-left: 3px solid var(--green); } - .row-ขาด { background: rgba(239,68,68,0.12) !important; border-left: 3px solid var(--red); } - .row-ลา { background: rgba(14,165,233,0.12) !important; border-left: 3px solid var(--primary); } - .row-สาย { background: rgba(245,158,11,0.12) !important; border-left: 3px solid var(--amber); } - .row-not-sent { background: rgba(239,68,68,0.07) !important; } - - .badge { - padding: 5px 12px; border-radius: 20px; font-size: 0.8rem; font-weight: 600; - display: inline-block; min-width: 80px; text-align: center; - } - .badge-green { background: rgba(16,185,129,0.2); color: #4ade80; border: 1px solid rgba(16,185,129,0.35); } - .badge-red { background: rgba(239,68,68,0.2); color: #f87171; border: 1px solid rgba(239,68,68,0.35); } - .badge-blue { background: rgba(14,165,233,0.2); color: #7dd3fc; border: 1px solid rgba(14,165,233,0.35); } - .badge-amber { background: rgba(245,158,11,0.2); color: #fbbf24; border: 1px solid rgba(245,158,11,0.35); } - .badge-purple { background: rgba(168,85,247,0.2); color: #c084fc; border: 1px solid rgba(168,85,247,0.35); } - - .tog { - padding: 7px 16px; border-radius: 8px; border: none; cursor: pointer; - font-family: 'Sarabun'; font-weight: 700; font-size: 0.88rem; transition: all 0.2s; - } - .tog.checked { background: rgba(16,185,129,0.2); color: #4ade80; border: 1px solid rgba(16,185,129,0.4); } - .tog.waiting { background: rgba(245,158,11,0.2); color: #fbbf24; border: 1px solid rgba(245,158,11,0.4); } - .tog.not-sent { background: rgba(239,68,68,0.15); color: #f87171; border: 1px solid rgba(239,68,68,0.3); } - .tog:hover { transform: scale(1.05); } - - .score-in { - width: 80px !important; text-align: center; - font-weight: 700; font-size: 1rem; - } - - .att-select { - min-width: 80px; padding: 6px 10px; border-radius: 8px; - font-weight: 700; font-family: 'Sarabun'; cursor: pointer; - } - .select-มา { background: #dcfce7; color: #166534; border: none; } - .select-ขาด { background: #fee2e2; color: #991b1b; border: none; } - .select-ลา { background: #e0f2fe; color: #075985; border: none; } - .select-สาย { background: #fef3c7; color: #92400e; border: none; } - - .tab-bar { - display: flex; gap: 6px; margin-bottom: 20px; - background: rgba(255,255,255,0.04); padding: 6px; border-radius: 14px; - border: 1px solid var(--border-glass); flex-wrap: wrap; - } - .tab-btn { - padding: 9px 18px; border-radius: 10px; border: none; - background: transparent; color: var(--text-dim); - cursor: pointer; font-family: 'Sarabun'; font-weight: 600; - font-size: 0.9rem; transition: all 0.2s; - } - .tab-btn:hover { background: rgba(255,255,255,0.08); color: #fff; } - .tab-btn.active { background: var(--primary); color: #fff; box-shadow: 0 4px 12px rgba(14,165,233,0.35); } - - .scan-bar { - background: rgba(16,185,129,0.1); border: 1px solid rgba(16,185,129,0.3); - border-radius: 12px; padding: 12px 16px; - display: flex; align-items: center; gap: 12px; flex-wrap: wrap; - } - - .sw { position: relative; display: inline-block; width: 48px; height: 26px; flex-shrink: 0; } - .sw input { opacity: 0; width: 0; height: 0; } - .sw-slider { - position: absolute; inset: 0; cursor: pointer; - background: #334155; border-radius: 26px; transition: 0.3s; - } - .sw-slider::before { - content: ''; position: absolute; - height: 20px; width: 20px; left: 3px; bottom: 3px; - background: #fff; border-radius: 50%; transition: 0.3s; - } - .sw input:checked + .sw-slider { background: var(--green); } - .sw input:checked + .sw-slider::before { transform: translateX(22px); } - - .loading { - display: flex; align-items: center; justify-content: center; - gap: 10px; padding: 28px; color: var(--text-dim); font-size: 0.95rem; - } - .spinner { - width: 20px; height: 20px; border-radius: 50%; - border: 3px solid rgba(14,165,233,0.2); border-top-color: var(--primary); - animation: spin 0.8s linear infinite; - } - @keyframes spin { to { transform: rotate(360deg); } } - - .empty { text-align: center; padding: 50px 20px; } - .empty-ico { font-size: 3rem; margin-bottom: 12px; } - .empty-title { font-family: 'Kanit'; font-size: 1.2rem; color: var(--text-dim); } - - .modal-overlay { - display: none; position: fixed; inset: 0; z-index: 1000; - background: rgba(0,0,0,0.75); backdrop-filter: blur(8px); - align-items: center; justify-content: center; - } - .modal-overlay.open { display: flex; } - .modal { - background: #1e293b; color: #fff; width: 90%; max-width: 520px; - padding: 28px; border-radius: 20px; border: 1px solid var(--border-glass); - box-shadow: 0 25px 50px -12px rgba(0,0,0,0.5); - max-height: 90vh; overflow-y: auto; - } - .modal-hd { - font-family: 'Kanit'; font-size: 1.25rem; margin-bottom: 22px; - color: var(--accent); display: flex; align-items: center; gap: 8px; - } - .modal-close { - margin-left: auto; background: transparent; border: none; - color: var(--text-dim); cursor: pointer; font-size: 1.1rem; line-height: 1; - } - .modal-close:hover { color: #fff; } - - .score-big { font-size: 1.8rem; font-weight: 700; color: var(--accent); } - .score-sep { color: var(--text-dim); margin: 0 2px; } - .score-max { font-size: 1.3rem; color: var(--text-dim); } - - .att-side-label { - background: rgba(15,23,42,0.9) !important; - font-family: 'Kanit'; font-weight: 600; - color: var(--accent) !important; - white-space: nowrap; min-width: 180px; - } - .att-summary-col { - background: rgba(14,165,233,0.08) !important; - font-weight: 700; - } - - #toasts { - position: fixed; bottom: 24px; right: 20px; z-index: 9999; - display: flex; flex-direction: column; gap: 8px; - } - .toast { - display: flex; align-items: center; gap: 10px; - padding: 12px 18px; border-radius: 12px; font-size: 0.9rem; - box-shadow: 0 8px 24px rgba(0,0,0,0.4); animation: slideIn 0.3s ease; - max-width: 340px; font-family: 'Sarabun'; - } - @keyframes slideIn { from { transform: translateX(120%); opacity: 0; } to { transform: translateX(0); opacity: 1; } } - .toast.success { background: #065f46; border: 1px solid #10b981; color: #d1fae5; } - .toast.error { background: #7f1d1d; border: 1px solid #ef4444; color: #fee2e2; } - .toast.info { background: #1e3a5f; border: 1px solid #3b82f6; color: #bfdbfe; } - .toast.warn { background: #78350f; border: 1px solid #f59e0b; color: #fef3c7; } - - .dashboard-grid { - display: grid; grid-template-columns: 1fr 1.2fr; - gap: 20px; margin-bottom: 24px; - } - .prog-container { margin-bottom: 15px; } - .prog-label { display: flex; justify-content: space-between; font-size: 0.85rem; margin-bottom: 5px; color: var(--text-dim); } - .prog-bar-bg { width: 100%; height: 10px; background: rgba(255,255,255,0.08); border-radius: 20px; overflow: hidden; } - .prog-bar-fill { height: 100%; border-radius: 20px; transition: width 0.8s ease-out; } - - .tr-subject-group td { - background: rgba(14,165,233,0.08) !important; - font-family: 'Kanit'; font-weight: 600; - color: var(--accent) !important; - padding: 8px 15px !important; - font-size: 0.9rem; - border-bottom: 1px solid rgba(14,165,233,0.2) !important; - } - - /* ── Sync progress overlay ── */ - #sync-overlay { - display: none; position: fixed; inset: 0; z-index: 2000; - background: rgba(0,0,0,0.7); backdrop-filter: blur(6px); - align-items: center; justify-content: center; flex-direction: column; gap: 16px; - } - #sync-overlay.open { display: flex; } - #sync-progress-text { font-family: 'Kanit'; font-size: 1.1rem; color: #fff; } - #sync-progress-bar-wrap { width: 300px; height: 10px; background: rgba(255,255,255,0.15); border-radius: 20px; overflow: hidden; } - #sync-progress-bar { height: 100%; width: 0%; background: var(--primary); border-radius: 20px; transition: width 0.3s; } - - @media (max-width: 768px) { - .grid-4 { grid-template-columns: repeat(2,1fr); } - .grid-3 { grid-template-columns: repeat(2,1fr); } - .grid-2 { grid-template-columns: 1fr; } - .dashboard-grid { grid-template-columns: 1fr; } - .header-inner { flex-direction: column; height: auto; padding: 12px 0; gap: 10px; } - .hero h1 { font-size: 1.45rem; } - .search-row { flex-direction: column; } - .dna-container { left: 2%; opacity: 0.2; } - } - @media (max-width: 480px) { - .grid-4, .grid-3 { grid-template-columns: 1fr; } - } + /* โทนสีใหม่: Deep Navy + Tech Cyan + Soft Gold */ + --deep-navy: #03081a; + --navy-bright: #003399; + --tech-cyan: #22d3ee; + --soft-gold: #ffcc00; + --energetic-orange: #f59e0b; + --pure-white: #ffffff; + + /* ระบบสี */ + --primary: var(--tech-cyan); + --accent: var(--soft-gold); + --bg-dark: var(--deep-navy); + --bg-glass: rgba(255, 255, 255, 0.98); /* ขาวเกือบสนิทเพื่อความสะอาดตา */ + --border-glass: rgba(255, 255, 255, 0.1); + --radius-lg: 18px; + --text-main: #1e293b; + --text-dim: #64748b; +} + +body { + font-family: 'Sarabun', sans-serif; + background-color: var(--bg-dark); + margin: 0; + color: var(--pure-white); + overflow-x: hidden; +} + +/* ════════════════════════════════ + DNA BACKDROP — ใหญ่ หนา สมูท + ════════════════════════════════ */ +.bg-scene { + position: fixed; + inset: 0; + z-index: -1; + background: radial-gradient(circle at 20% 30%, var(--navy-bright) 0%, var(--deep-navy) 100%); + overflow: hidden; +} + +.dna-container { + position: absolute; + top: 0; + left: 4%; + width: 160px; + height: 100%; + display: flex; + flex-direction: column; + justify-content: space-around; + opacity: 0.5; +} + +.dna-dot { + width: 22px; /* ใหญ่ขึ้น */ + height: 22px; + background: var(--soft-gold); + border-radius: 50%; + box-shadow: 0 0 25px var(--soft-gold); + animation: rotate3d-heavy 4s ease-in-out infinite; + position: relative; +} + +.dna-dot::after { + content: ""; + position: absolute; + width: 120px; /* กว้างขึ้น */ + height: 7px; /* หนาขึ้น */ + background: linear-gradient(90deg, var(--soft-gold), var(--tech-cyan)); + top: 50%; + left: 50%; + transform: translateY(-50%); + z-index: -1; + border-radius: 10px; + opacity: 0.8; +} + +.dna-dot.strand-2 { + background: var(--tech-cyan); + box-shadow: 0 0 25px var(--tech-cyan); + animation-delay: -2s; +} + +@keyframes rotate3d-heavy { + 0%, 100% { transform: translateX(-65px) scale(1.3); opacity: 1; z-index: 2; } + 50% { transform: translateX(65px) scale(0.7); opacity: 0.3; z-index: -1; } +} + +/* ════════════════════════════════ + APP & HEADER — เน้นขาวสะอาด ตัด Navy + ════════════════════════════════ */ +.app { position: relative; z-index: 10; } + +header { + background: var(--bg-glass); + padding: 0 20px; + height: 70px; + position: sticky; + top: 0; + z-index: 100; + box-shadow: 0 4px 30px rgba(0,0,0,0.4); + border-bottom: 5px solid var(--tech-cyan); /* ขอบล่างสี Cyan ให้ดูสดใส */ + display: flex; + align-items: center; +} + +.header-inner { + max-width: 1200px; + width: 100%; + margin: 0 auto; + display: flex; + justify-content: space-between; + align-items: center; +} + +.logo span { + color: var(--deep-navy); + font-size: 1.3rem; + font-weight: 800; + font-family: 'Kanit'; + text-transform: uppercase; + letter-spacing: 1px; +} + +/* ════════════════════════════════ + NAVIGATION — ปุ่มกดแบบโมเดิร์น + ════════════════════════════════ */ +nav { display: flex; gap: 12px; } + +.nav-btn { + background: #f1f5f9; + color: var(--text-dim); + border: none; + padding: 10px 20px; + border-radius: 12px; + font-weight: 600; + cursor: pointer; + transition: all 0.3s; +} + +.nav-btn:hover { background: #e2e8f0; color: var(--deep-navy); } + +.nav-btn.active { + background: var(--deep-navy) !important; + color: var(--tech-cyan) !important; + box-shadow: 0 4px 15px rgba(0,0,0,0.2); +} + +/* ════════════════════════════════ + CARDS — เน้นความเคลียร์ อ่านง่าย + ════════════════════════════════ */ +main { max-width: 1200px; margin: 35px auto; padding: 0 20px; } + +.card { + background: var(--bg-glass); + border-radius: var(--radius-lg); + padding: 30px; + box-shadow: 0 20px 50px rgba(0,0,0,0.5); + color: var(--text-main); + margin-bottom: 30px; + border: 1px solid rgba(255,255,255,0.2); +} + +.card-title { + color: var(--deep-navy); + font-family: 'Kanit'; + font-size: 1.5rem; + font-weight: 700; + display: flex; + align-items: center; + gap: 12px; + margin-bottom: 25px; +} + +.card-title::before { + content: ""; + width: 8px; + height: 24px; + background: var(--tech-cyan); + border-radius: 4px; +} + +/* ════════════════════════════════ + HERO — จุดรวมสายตา + ════════════════════════════════ */ +.hero { + background: linear-gradient(135deg, var(--navy-bright) 0%, var(--deep-navy) 100%); + border-radius: 25px; + padding: 50px 20px; + text-align: center; + color: #fff; + margin-bottom: 40px; + border: 1px solid var(--tech-cyan); + box-shadow: 0 10px 40px rgba(34, 211, 238, 0.2); +} + +.hero h1 { + font-size: 2.2rem; + font-weight: 700; + margin-bottom: 15px; + background: linear-gradient(to right, #fff, var(--tech-cyan)); + -webkit-background-clip: text; + -webkit-text-fill-color: transparent; +} + +/* ════════════════════════════════ + TABLES & INPUTS + ════════════════════════════════ */ +.tbl-wrap { + background: #fff; + border-radius: 15px; + overflow: hidden; + border: 1px solid #e2e8f0; +} + +thead tr { background: var(--deep-navy) !important; } +th { color: var(--tech-cyan) !important; padding: 18px !important; font-weight: 600; } +td { padding: 15px !important; border-bottom: 1px solid #f1f5f9; color: var(--text-main); } + +input[type="text"], input[type="number"], select { + background: #f8fafc !important; + border: 2px solid #e2e8f0 !important; + border-radius: 12px !important; + padding: 12px 18px !important; + color: var(--text-main) !important; + font-family: 'Sarabun'; +} + +input:focus { border-color: var(--tech-cyan) !important; outline: none; background: #fff !important; } + +.btn-primary { + background: var(--tech-cyan) !important; + color: var(--deep-navy) !important; + border: none; + padding: 12px 30px; + border-radius: 12px; + font-weight: 700; + transition: 0.3s; +} + +.btn-primary:hover { transform: translateY(-3px); box-shadow: 0 5px 15px rgba(34, 211, 238, 0.4); } + +/* สีกราฟและ Badge */ +.badge-green { background: #dcfce7; color: #166534; border: 1px solid #bbf7d0; } +.badge-blue { background: #e0f2fe; color: #075985; border: 1px solid #bae6fd; } + +/* Responsive */ +@media (max-width: 768px) { + header { height: auto; padding: 15px; } + .header-inner { flex-direction: column; gap: 15px; } + .dna-container { width: 100px; left: 2%; } + .dna-dot { width: 16px; height: 16px; } + .dna-dot::after { width: 80px; } +} From 0ee1a38e48e6618715450e0f83db7eb547e04f44 Mon Sep 17 00:00:00 2001 From: ARNUT KLANGPRAPUN <136555438+kpp-arnut@users.noreply.github.com> Date: Thu, 7 May 2026 16:04:05 +0700 Subject: [PATCH 22/46] Update color scheme and styles in style.css --- style.css | 210 ++++++++++++++++++++++-------------------------------- 1 file changed, 86 insertions(+), 124 deletions(-) diff --git a/style.css b/style.css index 007bf6d..8ad1bb5 100644 --- a/style.css +++ b/style.css @@ -1,151 +1,134 @@ :root { - /* โทนสีใหม่: Deep Navy + Tech Cyan + Soft Gold */ - --deep-navy: #03081a; - --navy-bright: #003399; - --tech-cyan: #22d3ee; - --soft-gold: #ffcc00; - --energetic-orange: #f59e0b; - --pure-white: #ffffff; + /* ชุดสีสไตล์ "Deep Ocean & Sunset" (นุ่มนวลและหรูหรา) */ + --matisse: #355C7D; /* สีน้ำเงินมหาสมุทรเข้ม (น่าเชื่อถือ) */ + --princely-violet: #6C5B7B; /* สีม่วงนุ่มนวล (หรูหรา) */ + --briar-rose: #C06C84; /* สีชมพู Briar Rose (อบอุ่น) */ + --momo-peach: #F67280; /* สีพีชโมโม (สดใส) */ + --no-way-rose: #F8B195; /* สีชมพูอ่อน Rosé (โปร่งแสง) */ + --pure-white: #FFFFFF; - /* ระบบสี */ - --primary: var(--tech-cyan); - --accent: var(--soft-gold); - --bg-dark: var(--deep-navy); - --bg-glass: rgba(255, 255, 255, 0.98); /* ขาวเกือบสนิทเพื่อความสะอาดตา */ - --border-glass: rgba(255, 255, 255, 0.1); - --radius-lg: 18px; - --text-main: #1e293b; - --text-dim: #64748b; + /* Mapping เข้ากับระบบ Dashboard */ + --primary: var(--matisse); + --primary-alt: var(--princely-violet); + --accent: var(--no-way-rose); + --green: #10b981; + --red: var(--momo-peach); + --bg-dark: #0b1626; /* กรมท่าเข้มเกือบดำเพื่อให้ Glow เด่น */ + --bg-glass: rgba(255, 255, 255, 0.96); /* ขาวกระจกเกือบสนิทเพื่อความเคลียร์ */ + --border-glass: rgba(0, 35, 102, 0.1); + --radius-lg: 18px; + --text-main: var(--matisse); /* ตัวหนังสือหลักสีกรม */ + --text-dim: var(--princely-violet); /* ตัวหนังสือรองสีม่วงนุ่มนวล */ } body { font-family: 'Sarabun', sans-serif; background-color: var(--bg-dark); + color: #f1f5f9; + min-height: 100vh; margin: 0; - color: var(--pure-white); - overflow-x: hidden; } /* ════════════════════════════════ DNA BACKDROP — ใหญ่ หนา สมูท ════════════════════════════════ */ .bg-scene { - position: fixed; - inset: 0; - z-index: -1; - background: radial-gradient(circle at 20% 30%, var(--navy-bright) 0%, var(--deep-navy) 100%); + position: fixed; inset: 0; z-index: 0; + background: radial-gradient(circle at 20% 30%, #1a3050 0%, var(--bg-dark) 100%); overflow: hidden; } .dna-container { - position: absolute; - top: 0; - left: 4%; - width: 160px; + position: absolute; top: 0; left: 80px; + width: 140px; /* ความกว้างจุด */ height: 100%; - display: flex; - flex-direction: column; - justify-content: space-around; - opacity: 0.5; + display: flex; flex-direction: column; + justify-content: space-around; opacity: 0.5; } .dna-dot { - width: 22px; /* ใหญ่ขึ้น */ - height: 22px; - background: var(--soft-gold); - border-radius: 50%; - box-shadow: 0 0 25px var(--soft-gold); + width: 20px; height: 20px; /* ใหญ่และหนา */ + background: var(--accent); border-radius: 50%; + box-shadow: 0 0 25px var(--accent); animation: rotate3d-heavy 4s ease-in-out infinite; position: relative; } +/* เส้นเชื่อมระหว่างจุด (หนา) */ .dna-dot::after { - content: ""; - position: absolute; - width: 120px; /* กว้างขึ้น */ - height: 7px; /* หนาขึ้น */ - background: linear-gradient(90deg, var(--soft-gold), var(--tech-cyan)); - top: 50%; - left: 50%; - transform: translateY(-50%); - z-index: -1; - border-radius: 10px; + content: ""; position: absolute; + width: 120px; height: 7px; /* หนาขึ้นมาก */ + background: linear-gradient(90deg, var(--accent), var(--briar-rose)); + top: 50%; left: 50%; transform: translateY(-50%); + z-index: -1; border-radius: 10px; opacity: 0.8; } .dna-dot.strand-2 { - background: var(--tech-cyan); - box-shadow: 0 0 25px var(--tech-cyan); + background: var(--briar-rose); + box-shadow: 0 0 25px var(--briar-rose); animation-delay: -2s; } @keyframes rotate3d-heavy { - 0%, 100% { transform: translateX(-65px) scale(1.3); opacity: 1; z-index: 2; } - 50% { transform: translateX(65px) scale(0.7); opacity: 0.3; z-index: -1; } + 0%, 100% { transform: translateX(-65px) scale(1.3); z-index: 2; opacity: 1; } + 50% { transform: translateX(65px) scale(0.7); z-index: -1; opacity: 0.3; } } /* ════════════════════════════════ - APP & HEADER — เน้นขาวสะอาด ตัด Navy + APP & HEADER — เหมือนเดิมทุกอย่าง แก้ไขแค่สี ════════════════════════════════ */ .app { position: relative; z-index: 10; } header { background: var(--bg-glass); padding: 0 20px; - height: 70px; - position: sticky; - top: 0; - z-index: 100; - box-shadow: 0 4px 30px rgba(0,0,0,0.4); - border-bottom: 5px solid var(--tech-cyan); /* ขอบล่างสี Cyan ให้ดูสดใส */ - display: flex; - align-items: center; + position: sticky; top: 0; z-index: 100; + backdrop-filter: blur(20px); + border-bottom: 5px solid var(--accent); /* ขอบล่างสี peachy */ + display: flex; align-items: center; } .header-inner { - max-width: 1200px; - width: 100%; - margin: 0 auto; - display: flex; - justify-content: space-between; - align-items: center; + max-width: 1200px; width: 100%; margin: 0 auto; height: 70px; + display: flex; align-items: center; justify-content: space-between; } .logo span { - color: var(--deep-navy); - font-size: 1.3rem; - font-weight: 800; - font-family: 'Kanit'; - text-transform: uppercase; - letter-spacing: 1px; + color: var(--primary); + font-size: 1.35rem; font-weight: 800; + letter-spacing: -0.01em; } /* ════════════════════════════════ - NAVIGATION — ปุ่มกดแบบโมเดิร์น + NAVIGATION & BUTTONS — ปรับสี ════════════════════════════════ */ -nav { display: flex; gap: 12px; } +nav { display: flex; gap: 10px; } .nav-btn { background: #f1f5f9; color: var(--text-dim); border: none; - padding: 10px 20px; - border-radius: 12px; + padding: 10px 18px; border-radius: 12px; cursor: pointer; transition: all 0.25s; font-weight: 600; - cursor: pointer; - transition: all 0.3s; } -.nav-btn:hover { background: #e2e8f0; color: var(--deep-navy); } +.nav-btn:hover { background: #e2e8f0; color: var(--primary); } .nav-btn.active { - background: var(--deep-navy) !important; - color: var(--tech-cyan) !important; - box-shadow: 0 4px 15px rgba(0,0,0,0.2); + background: var(--primary) !important; + color: #fff !important; + box-shadow: 0 4px 15px rgba(53, 92, 125, 0.4); +} + +#nav-logout { + background: rgba(246, 114, 128, 0.1); + color: var(--red); + border: 1px solid rgba(246, 114, 128, 0.2); } /* ════════════════════════════════ - CARDS — เน้นความเคลียร์ อ่านง่าย + MAIN CONTENT & CARDS — สไตล์กระจกสะอาด ════════════════════════════════ */ main { max-width: 1200px; margin: 35px auto; padding: 0 20px; } @@ -160,49 +143,36 @@ main { max-width: 1200px; margin: 35px auto; padding: 0 20px; } } .card-title { - color: var(--deep-navy); + color: var(--primary); font-family: 'Kanit'; - font-size: 1.5rem; - font-weight: 700; - display: flex; - align-items: center; - gap: 12px; - margin-bottom: 25px; + font-size: 1.3rem; font-weight: 700; + display: flex; align-items: center; gap: 10px; + margin-bottom: 20px; } .card-title::before { content: ""; - width: 8px; - height: 24px; - background: var(--tech-cyan); + width: 6px; height: 22px; + background: var(--accent); border-radius: 4px; } /* ════════════════════════════════ - HERO — จุดรวมสายตา + HERO SECTION — จุดรวมสายตา ════════════════════════════════ */ .hero { - background: linear-gradient(135deg, var(--navy-bright) 0%, var(--deep-navy) 100%); + background: linear-gradient(135deg, var(--princely-violet) 0%, var(--matisse) 100%); border-radius: 25px; - padding: 50px 20px; + padding: 45px 20px; text-align: center; color: #fff; margin-bottom: 40px; - border: 1px solid var(--tech-cyan); - box-shadow: 0 10px 40px rgba(34, 211, 238, 0.2); } -.hero h1 { - font-size: 2.2rem; - font-weight: 700; - margin-bottom: 15px; - background: linear-gradient(to right, #fff, var(--tech-cyan)); - -webkit-background-clip: text; - -webkit-text-fill-color: transparent; -} +.hero h1 { font-size: 2.1rem; font-weight: 700; margin-bottom: 12px; color: #fff; } /* ════════════════════════════════ - TABLES & INPUTS + TABLES & INPUTS — สะอาดตาแต่ล้ำ ════════════════════════════════ */ .tbl-wrap { background: #fff; @@ -211,42 +181,34 @@ main { max-width: 1200px; margin: 35px auto; padding: 0 20px; } border: 1px solid #e2e8f0; } -thead tr { background: var(--deep-navy) !important; } -th { color: var(--tech-cyan) !important; padding: 18px !important; font-weight: 600; } -td { padding: 15px !important; border-bottom: 1px solid #f1f5f9; color: var(--text-main); } +thead tr { background: var(--primary) !important; } +th { color: var(--pure-white) !important; padding: 18px !important; } +td { padding: 15px !important; border-bottom: 1px solid #f1f5f9; } -input[type="text"], input[type="number"], select { +input[type="text"], select { background: #f8fafc !important; border: 2px solid #e2e8f0 !important; border-radius: 12px !important; padding: 12px 18px !important; color: var(--text-main) !important; - font-family: 'Sarabun'; } -input:focus { border-color: var(--tech-cyan) !important; outline: none; background: #fff !important; } +input:focus { border-color: var(--accent) !important; } .btn-primary { - background: var(--tech-cyan) !important; - color: var(--deep-navy) !important; + background: var(--matisse) !important; + color: white !important; border: none; padding: 12px 30px; border-radius: 12px; font-weight: 700; - transition: 0.3s; } -.btn-primary:hover { transform: translateY(-3px); box-shadow: 0 5px 15px rgba(34, 211, 238, 0.4); } - -/* สีกราฟและ Badge */ -.badge-green { background: #dcfce7; color: #166534; border: 1px solid #bbf7d0; } -.badge-blue { background: #e0f2fe; color: #075985; border: 1px solid #bae6fd; } - -/* Responsive */ +/* ════════════════════════════════ + Responsive — เพื่อ DNA ใหญ่ + ════════════════════════════════ */ @media (max-width: 768px) { header { height: auto; padding: 15px; } .header-inner { flex-direction: column; gap: 15px; } - .dna-container { width: 100px; left: 2%; } - .dna-dot { width: 16px; height: 16px; } - .dna-dot::after { width: 80px; } + .dna-container { width: 120px; left: 2%; } } From aafeb513af50a526f9faf292dd5c62d43f580d29 Mon Sep 17 00:00:00 2001 From: ARNUT KLANGPRAPUN <136555438+kpp-arnut@users.noreply.github.com> Date: Thu, 7 May 2026 16:13:26 +0700 Subject: [PATCH 23/46] Refactor color variables and styles in CSS --- style.css | 513 ++++++++++++++++++++++++++++++++++++++++-------------- 1 file changed, 386 insertions(+), 127 deletions(-) diff --git a/style.css b/style.css index 8ad1bb5..d6fa4a3 100644 --- a/style.css +++ b/style.css @@ -1,214 +1,473 @@ :root { - /* ชุดสีสไตล์ "Deep Ocean & Sunset" (นุ่มนวลและหรูหรา) */ - --matisse: #355C7D; /* สีน้ำเงินมหาสมุทรเข้ม (น่าเชื่อถือ) */ - --princely-violet: #6C5B7B; /* สีม่วงนุ่มนวล (หรูหรา) */ - --briar-rose: #C06C84; /* สีชมพู Briar Rose (อบอุ่น) */ - --momo-peach: #F67280; /* สีพีชโมโม (สดใส) */ - --no-way-rose: #F8B195; /* สีชมพูอ่อน Rosé (โปร่งแสง) */ - --pure-white: #FFFFFF; - - /* Mapping เข้ากับระบบ Dashboard */ - --primary: var(--matisse); - --primary-alt: var(--princely-violet); - --accent: var(--no-way-rose); - --green: #10b981; - --red: var(--momo-peach); - --bg-dark: #0b1626; /* กรมท่าเข้มเกือบดำเพื่อให้ Glow เด่น */ - --bg-glass: rgba(255, 255, 255, 0.96); /* ขาวกระจกเกือบสนิทเพื่อความเคลียร์ */ - --border-glass: rgba(0, 35, 102, 0.1); - --radius-lg: 18px; - --text-main: var(--matisse); /* ตัวหนังสือหลักสีกรม */ - --text-dim: var(--princely-violet); /* ตัวหนังสือรองสีม่วงนุ่มนวล */ + /* ── โทนเทาหรู: Charcoal → Slate → Silver ── */ + --charcoal: #1C1C2E; /* เทาดำหรู (bg หลัก) */ + --slate-deep: #2E2E4A; /* เทาม่วงเข้ม */ + --slate-mid: #4A4A6A; /* เทาม่วงกลาง */ + --silver-mist: #A0A0C0; /* เงินหมอก (DNA strand 2) */ + --platinum: #D4D4E8; /* แพลตตินัม (highlight / DNA strand 1) */ + --pure-white: #FFFFFF; + + /* Mapping เข้าระบบ Dashboard */ + --primary: #5B6080; + --primary-dark: #3D4060; + --accent: var(--platinum); + --cyan: #8899BB; + --green: #10b981; + --red: #ef4444; + --amber: #f59e0b; + --purple: #a855f7; + --purple-dark: #7e22ce; + + --bg-dark: var(--charcoal); + --bg-glass: rgba(255, 255, 255, 0.95); + --bg-card: rgba(46, 46, 74, 0.75); + --border-glass: rgba(255, 255, 255, 0.12); + --radius-md: 16px; + --shadow-lg: 0 20px 40px rgba(0, 0, 0, 0.45); + + --text-main: #f1f5f9; + --text-dim: #94a3b8; + --text-muted: #64748b; } body { font-family: 'Sarabun', sans-serif; background-color: var(--bg-dark); - color: #f1f5f9; + color: var(--text-main); min-height: 100vh; margin: 0; + overflow-x: hidden; } /* ════════════════════════════════ - DNA BACKDROP — ใหญ่ หนา สมูท + BG SCENE — เทา gradient 3 ชั้น ════════════════════════════════ */ .bg-scene { position: fixed; inset: 0; z-index: 0; - background: radial-gradient(circle at 20% 30%, #1a3050 0%, var(--bg-dark) 100%); + background: + radial-gradient(ellipse at 15% 20%, rgba(90, 96, 128, 0.35) 0%, transparent 55%), + radial-gradient(ellipse at 85% 80%, rgba(74, 74, 106, 0.30) 0%, transparent 55%), + radial-gradient(ellipse at 50% 50%, rgba(46, 46, 74, 0.50) 0%, transparent 70%), + linear-gradient(160deg, #1C1C2E 0%, #252540 50%, #1C1C2E 100%); overflow: hidden; } +/* ── DNA ── */ .dna-container { position: absolute; top: 0; left: 80px; - width: 140px; /* ความกว้างจุด */ - height: 100%; + width: 140px; height: 100%; display: flex; flex-direction: column; - justify-content: space-around; opacity: 0.5; + justify-content: space-around; opacity: 0.45; } .dna-dot { - width: 20px; height: 20px; /* ใหญ่และหนา */ - background: var(--accent); border-radius: 50%; - box-shadow: 0 0 25px var(--accent); - animation: rotate3d-heavy 4s ease-in-out infinite; + width: 20px; height: 20px; + background: var(--platinum); + border-radius: 50%; + box-shadow: 0 0 22px rgba(212, 212, 232, 0.8); + animation: rotate3d 4s ease-in-out infinite; position: relative; } -/* เส้นเชื่อมระหว่างจุด (หนา) */ .dna-dot::after { content: ""; position: absolute; - width: 120px; height: 7px; /* หนาขึ้นมาก */ - background: linear-gradient(90deg, var(--accent), var(--briar-rose)); + width: 120px; height: 6px; + background: linear-gradient(90deg, var(--platinum), var(--silver-mist)); top: 50%; left: 50%; transform: translateY(-50%); - z-index: -1; border-radius: 10px; - opacity: 0.8; + z-index: -1; border-radius: 10px; opacity: 0.75; } .dna-dot.strand-2 { - background: var(--briar-rose); - box-shadow: 0 0 25px var(--briar-rose); + background: var(--silver-mist); + box-shadow: 0 0 22px rgba(160, 160, 192, 0.7); animation-delay: -2s; } -@keyframes rotate3d-heavy { - 0%, 100% { transform: translateX(-65px) scale(1.3); z-index: 2; opacity: 1; } - 50% { transform: translateX(65px) scale(0.7); z-index: -1; opacity: 0.3; } +@keyframes rotate3d { + 0%, 100% { transform: translateX(-60px) scale(1.25); opacity: 1; } + 50% { transform: translateX(60px) scale(0.72); opacity: 0.3; } } /* ════════════════════════════════ - APP & HEADER — เหมือนเดิมทุกอย่าง แก้ไขแค่สี + APP & HEADER ════════════════════════════════ */ -.app { position: relative; z-index: 10; } +.app { position: relative; z-index: 1; } header { - background: var(--bg-glass); - padding: 0 20px; position: sticky; top: 0; z-index: 100; - backdrop-filter: blur(20px); - border-bottom: 5px solid var(--accent); /* ขอบล่างสี peachy */ - display: flex; align-items: center; + background: rgba(28, 28, 46, 0.92); + backdrop-filter: blur(18px); + border-bottom: 3px solid rgba(212, 212, 232, 0.2); + padding: 0 20px; } - .header-inner { - max-width: 1200px; width: 100%; margin: 0 auto; height: 70px; + max-width: 1200px; margin: 0 auto; height: 65px; display: flex; align-items: center; justify-content: space-between; } +.logo { + font-family: 'Kanit'; font-weight: 700; color: var(--platinum); + display: flex; align-items: center; gap: 10px; font-size: 1.05rem; +} -.logo span { - color: var(--primary); - font-size: 1.35rem; font-weight: 800; - letter-spacing: -0.01em; +nav { display: flex; gap: 8px; } +.nav-btn { + background: transparent; border: none; color: var(--text-dim); + padding: 8px 16px; border-radius: 10px; cursor: pointer; transition: all 0.25s; + font-family: 'Sarabun'; font-weight: 500; font-size: 0.95rem; + display: flex; align-items: center; gap: 6px; position: relative; } +.nav-btn:hover { background: rgba(255,255,255,0.08); color: #fff; } +.nav-btn.active { background: var(--primary); color: #fff; box-shadow: 0 4px 14px rgba(91,96,128,0.5); } + +.cfg-dot { width: 8px; height: 8px; border-radius: 50%; background: var(--amber); display: inline-block; } +.cfg-dot.ok { background: var(--green); } /* ════════════════════════════════ - NAVIGATION & BUTTONS — ปรับสี + MAIN & CARDS ════════════════════════════════ */ -nav { display: flex; gap: 10px; } +main { max-width: 1200px; margin: 0 auto; padding: 28px 20px; } +.page { display: none; } +.page.active { display: block; } -.nav-btn { - background: #f1f5f9; - color: var(--text-dim); - border: none; - padding: 10px 18px; border-radius: 12px; cursor: pointer; transition: all 0.25s; - font-weight: 600; +.card { + background: rgba(36, 36, 58, 0.82); + border: 1px solid rgba(212, 212, 232, 0.1); + border-radius: var(--radius-md); padding: 24px; + box-shadow: var(--shadow-lg); backdrop-filter: blur(10px); } +.mb-4 { margin-bottom: 20px; } +.mt-4 { margin-top: 20px; } +.mt-3 { margin-top: 12px; } +.mb-3 { margin-bottom: 12px; } -.nav-btn:hover { background: #e2e8f0; color: var(--primary); } +.card-title { + font-family: 'Kanit'; font-size: 1.15rem; margin-bottom: 18px; + color: var(--platinum); display: flex; align-items: center; gap: 8px; +} +.card-title::before { + content: ""; + width: 5px; height: 20px; + background: linear-gradient(180deg, var(--platinum), var(--silver-mist)); + border-radius: 4px; + flex-shrink: 0; +} -.nav-btn.active { - background: var(--primary) !important; - color: #fff !important; - box-shadow: 0 4px 15px rgba(53, 92, 125, 0.4); +/* ════════════════════════════════ + HERO + ════════════════════════════════ */ +.hero { + text-align: center; padding: 42px 20px; + background: linear-gradient(135deg, + rgba(91,96,128,0.3) 0%, + rgba(74,74,106,0.2) 50%, + rgba(46,46,74,0.3) 100%); + border-radius: 20px; + border: 1px solid rgba(212,212,232,0.12); + margin-bottom: 28px; } +.hero h1 { font-family: 'Kanit'; font-size: 1.9rem; margin-bottom: 8px; color: var(--platinum); } +.hero p { color: var(--text-dim); font-size: 1rem; } -#nav-logout { - background: rgba(246, 114, 128, 0.1); - color: var(--red); - border: 1px solid rgba(246, 114, 128, 0.2); +.search-row { display: flex; gap: 10px; max-width: 460px; margin: 22px auto 0; } + +/* ════════════════════════════════ + INPUTS + ════════════════════════════════ */ +input[type="text"], input[type="number"], input[type="date"], +input[type="password"], select { + background: rgba(255,255,255,0.94); border: 2px solid transparent; + border-radius: 10px; padding: 10px 14px; + font-family: 'Sarabun'; font-size: 0.97rem; + color: #0f172a; outline: none; width: 100%; + transition: border-color 0.2s, box-shadow 0.2s; +} +input:focus, select:focus { + border-color: var(--silver-mist); + box-shadow: 0 0 0 3px rgba(160,160,192,0.22); } +label { display: block; margin-bottom: 6px; font-size: 0.88rem; font-weight: 600; color: var(--text-dim); } /* ════════════════════════════════ - MAIN CONTENT & CARDS — สไตล์กระจกสะอาด + BUTTONS ════════════════════════════════ */ -main { max-width: 1200px; margin: 35px auto; padding: 0 20px; } +.btn { + padding: 10px 20px; border-radius: 10px; font-weight: 600; cursor: pointer; + border: none; display: inline-flex; align-items: center; gap: 7px; + transition: all 0.2s; font-family: 'Sarabun'; font-size: 0.95rem; white-space: nowrap; +} +.btn:hover { transform: translateY(-1px); } +.btn:active { transform: translateY(0); } +.btn-primary { background: var(--primary); color: #fff; box-shadow: 0 4px 12px rgba(91,96,128,0.4); } +.btn-primary:hover { background: var(--primary-dark); } +.btn-success { background: var(--green); color: #fff; box-shadow: 0 4px 12px rgba(16,185,129,0.3); } +.btn-danger { background: var(--red); color: #fff; } +.btn-outline { background: transparent; border: 1px solid var(--border-glass); color: var(--text-main); } +.btn-ghost { background: rgba(255,255,255,0.07); color: var(--text-main); } +.btn-sm { padding: 6px 14px; font-size: 0.85rem; border-radius: 8px; } +.btn-lg { padding: 13px 28px; font-size: 1.05rem; } +.btn-xl { padding: 13px 24px; font-size: 1rem; } +.w-full { width: 100%; justify-content: center; } -.card { - background: var(--bg-glass); - border-radius: var(--radius-lg); - padding: 30px; - box-shadow: 0 20px 50px rgba(0,0,0,0.5); - color: var(--text-main); - margin-bottom: 30px; - border: 1px solid rgba(255,255,255,0.2); +/* ════════════════════════════════ + GRID & UTILS + ════════════════════════════════ */ +.grid-2 { display: grid; grid-template-columns: repeat(2,1fr); } +.grid-3 { display: grid; grid-template-columns: repeat(3,1fr); } +.grid-4 { display: grid; grid-template-columns: repeat(4,1fr); } +.gap-2 { gap: 8px; } +.gap-3 { gap: 12px; } +.gap-4 { gap: 16px; } +.flex { display: flex; } +.flex-1 { flex: 1; } +.flex-wrap { flex-wrap: wrap; } +.items-center { align-items: center; } +.justify-end { justify-content: flex-end; } +.justify-center { justify-content: center; } +.justify-between { justify-content: space-between; } +.text-center { text-align: center; } +.text-sm { font-size: 0.85rem; } +.text-muted { color: var(--text-dim); } +.font-bold { font-weight: 700; } + +/* ════════════════════════════════ + STAT CARDS + ════════════════════════════════ */ +.stat-card { + background: rgba(255,255,255,0.04); padding: 18px; + border-radius: 14px; text-align: center; border: 1px solid var(--border-glass); } +.stat-num { font-family: 'Kanit'; font-size: 2rem; font-weight: 700; display: block; line-height: 1.1; } +.stat-label { color: var(--text-dim); font-size: 0.82rem; margin-top: 6px; display: block; } -.card-title { - color: var(--primary); - font-family: 'Kanit'; - font-size: 1.3rem; font-weight: 700; - display: flex; align-items: center; gap: 10px; - margin-bottom: 20px; +/* ════════════════════════════════ + TABLES + ════════════════════════════════ */ +.tbl-wrap { overflow-x: auto; border-radius: 12px; border: 1px solid var(--border-glass); } +table { width: 100%; border-collapse: collapse; } +thead tr { background: linear-gradient(135deg, #3D4060, #5B6080) !important; } +th { + padding: 14px 15px; color: var(--platinum) !important; + font-family: 'Kanit'; font-weight: 600; text-align: left; + border-bottom: 1px solid rgba(212,212,232,0.15); } +td { + padding: 13px 15px; color: var(--text-main) !important; + border-bottom: 1px solid rgba(255,255,255,0.06); vertical-align: middle; +} +tbody tr:last-child td { border-bottom: none; } +tbody tr:hover td { background: rgba(255,255,255,0.03); } -.card-title::before { - content: ""; - width: 6px; height: 22px; - background: var(--accent); - border-radius: 4px; +.row-มา { background: rgba(16,185,129,0.1) !important; border-left: 3px solid var(--green); } +.row-ขาด { background: rgba(239,68,68,0.1) !important; border-left: 3px solid var(--red); } +.row-ลา { background: rgba(160,160,192,0.1) !important; border-left: 3px solid var(--silver-mist); } +.row-สาย { background: rgba(245,158,11,0.1) !important; border-left: 3px solid var(--amber); } +.row-not-sent { background: rgba(239,68,68,0.06) !important; } + +/* ════════════════════════════════ + BADGES + ════════════════════════════════ */ +.badge { + padding: 5px 12px; border-radius: 20px; font-size: 0.8rem; font-weight: 600; + display: inline-block; min-width: 80px; text-align: center; } +.badge-green { background: rgba(16,185,129,0.15); color: #4ade80; border: 1px solid rgba(16,185,129,0.3); } +.badge-red { background: rgba(239,68,68,0.15); color: #f87171; border: 1px solid rgba(239,68,68,0.3); } +.badge-blue { background: rgba(160,160,192,0.15); color: var(--platinum); border: 1px solid rgba(160,160,192,0.3); } +.badge-amber { background: rgba(245,158,11,0.15); color: #fbbf24; border: 1px solid rgba(245,158,11,0.3); } +.badge-purple { background: rgba(168,85,247,0.15); color: #c084fc; border: 1px solid rgba(168,85,247,0.3); } /* ════════════════════════════════ - HERO SECTION — จุดรวมสายตา + TOGGLE (ตรวจงาน) ════════════════════════════════ */ -.hero { - background: linear-gradient(135deg, var(--princely-violet) 0%, var(--matisse) 100%); - border-radius: 25px; - padding: 45px 20px; - text-align: center; - color: #fff; - margin-bottom: 40px; +.tog { + padding: 7px 16px; border-radius: 8px; border: none; cursor: pointer; + font-family: 'Sarabun'; font-weight: 700; font-size: 0.88rem; transition: all 0.2s; } +.tog.checked { background: rgba(16,185,129,0.2); color: #4ade80; border: 1px solid rgba(16,185,129,0.4); } +.tog.waiting { background: rgba(245,158,11,0.2); color: #fbbf24; border: 1px solid rgba(245,158,11,0.4); } +.tog.not-sent { background: rgba(239,68,68,0.12); color: #f87171; border: 1px solid rgba(239,68,68,0.3); } +.tog:hover { transform: scale(1.05); } -.hero h1 { font-size: 2.1rem; font-weight: 700; margin-bottom: 12px; color: #fff; } +.score-in { width: 80px !important; text-align: center; font-weight: 700; font-size: 1rem; } /* ════════════════════════════════ - TABLES & INPUTS — สะอาดตาแต่ล้ำ + ATTENDANCE SELECT ════════════════════════════════ */ -.tbl-wrap { - background: #fff; - border-radius: 15px; - overflow: hidden; - border: 1px solid #e2e8f0; +.att-select { + min-width: 80px; padding: 6px 10px; border-radius: 8px; + font-weight: 700; font-family: 'Sarabun'; cursor: pointer; +} +.select-มา { background: #dcfce7; color: #166534; border: none; } +.select-ขาด { background: #fee2e2; color: #991b1b; border: none; } +.select-ลา { background: #e8eaf6; color: #3d4060; border: none; } +.select-สาย { background: #fef3c7; color: #92400e; border: none; } + +/* ════════════════════════════════ + TAB BAR + ════════════════════════════════ */ +.tab-bar { + display: flex; gap: 6px; margin-bottom: 20px; + background: rgba(255,255,255,0.04); padding: 6px; border-radius: 14px; + border: 1px solid var(--border-glass); flex-wrap: wrap; +} +.tab-btn { + padding: 9px 18px; border-radius: 10px; border: none; + background: transparent; color: var(--text-dim); + cursor: pointer; font-family: 'Sarabun'; font-weight: 600; + font-size: 0.9rem; transition: all 0.2s; +} +.tab-btn:hover { background: rgba(255,255,255,0.07); color: #fff; } +.tab-btn.active { background: var(--primary); color: #fff; box-shadow: 0 4px 12px rgba(91,96,128,0.4); } + +/* ════════════════════════════════ + SCAN BAR / SWITCH + ════════════════════════════════ */ +.scan-bar { + background: rgba(16,185,129,0.08); border: 1px solid rgba(16,185,129,0.25); + border-radius: 12px; padding: 12px 16px; + display: flex; align-items: center; gap: 12px; flex-wrap: wrap; +} +.sw { position: relative; display: inline-block; width: 48px; height: 26px; flex-shrink: 0; } +.sw input { opacity: 0; width: 0; height: 0; } +.sw-slider { + position: absolute; inset: 0; cursor: pointer; + background: #334155; border-radius: 26px; transition: 0.3s; +} +.sw-slider::before { + content: ''; position: absolute; + height: 20px; width: 20px; left: 3px; bottom: 3px; + background: #fff; border-radius: 50%; transition: 0.3s; +} +.sw input:checked + .sw-slider { background: var(--green); } +.sw input:checked + .sw-slider::before { transform: translateX(22px); } + +/* ════════════════════════════════ + LOADING / SPINNER + ════════════════════════════════ */ +.loading { + display: flex; align-items: center; justify-content: center; + gap: 10px; padding: 28px; color: var(--text-dim); font-size: 0.95rem; +} +.spinner { + width: 20px; height: 20px; border-radius: 50%; + border: 3px solid rgba(160,160,192,0.2); border-top-color: var(--silver-mist); + animation: spin 0.8s linear infinite; +} +@keyframes spin { to { transform: rotate(360deg); } } + +/* ════════════════════════════════ + EMPTY STATE + ════════════════════════════════ */ +.empty { text-align: center; padding: 50px 20px; } +.empty-ico { font-size: 3rem; margin-bottom: 12px; } +.empty-title { font-family: 'Kanit'; font-size: 1.2rem; color: var(--text-dim); } + +/* ════════════════════════════════ + MODALS + ════════════════════════════════ */ +.modal-overlay { + display: none; position: fixed; inset: 0; z-index: 1000; + background: rgba(0,0,0,0.7); backdrop-filter: blur(8px); + align-items: center; justify-content: center; +} +.modal-overlay.open { display: flex; } +.modal { + background: #23233a; color: #fff; width: 90%; max-width: 520px; + padding: 28px; border-radius: 20px; + border: 1px solid rgba(212,212,232,0.1); + box-shadow: 0 25px 50px -12px rgba(0,0,0,0.6); + max-height: 90vh; overflow-y: auto; } +.modal-hd { + font-family: 'Kanit'; font-size: 1.25rem; margin-bottom: 22px; + color: var(--platinum); display: flex; align-items: center; gap: 8px; +} +.modal-close { + margin-left: auto; background: transparent; border: none; + color: var(--text-dim); cursor: pointer; font-size: 1.1rem; line-height: 1; +} +.modal-close:hover { color: #fff; } -thead tr { background: var(--primary) !important; } -th { color: var(--pure-white) !important; padding: 18px !important; } -td { padding: 15px !important; border-bottom: 1px solid #f1f5f9; } +/* ════════════════════════════════ + SCORE DISPLAY + ════════════════════════════════ */ +.score-big { font-size: 1.8rem; font-weight: 700; color: var(--platinum); } +.score-sep { color: var(--text-dim); margin: 0 2px; } +.score-max { font-size: 1.3rem; color: var(--text-dim); } + +/* ════════════════════════════════ + ATTENDANCE GRID (หน้านักเรียน) + ════════════════════════════════ */ +.att-side-label { + background: rgba(28,28,46,0.92) !important; + font-family: 'Kanit'; font-weight: 600; + color: var(--platinum) !important; + white-space: nowrap; min-width: 180px; +} +.att-summary-col { background: rgba(91,96,128,0.12) !important; font-weight: 700; } -input[type="text"], select { - background: #f8fafc !important; - border: 2px solid #e2e8f0 !important; - border-radius: 12px !important; - padding: 12px 18px !important; - color: var(--text-main) !important; +/* ════════════════════════════════ + TOASTS + ════════════════════════════════ */ +#toasts { + position: fixed; bottom: 24px; right: 20px; z-index: 9999; + display: flex; flex-direction: column; gap: 8px; +} +.toast { + display: flex; align-items: center; gap: 10px; + padding: 12px 18px; border-radius: 12px; font-size: 0.9rem; + box-shadow: 0 8px 24px rgba(0,0,0,0.5); animation: slideIn 0.3s ease; + max-width: 340px; font-family: 'Sarabun'; } +@keyframes slideIn { from { transform: translateX(120%); opacity: 0; } to { transform: translateX(0); opacity: 1; } } +.toast.success { background: #065f46; border: 1px solid #10b981; color: #d1fae5; } +.toast.error { background: #7f1d1d; border: 1px solid #ef4444; color: #fee2e2; } +.toast.info { background: #1e2a3f; border: 1px solid #5b6080; color: #cbd5e1; } +.toast.warn { background: #78350f; border: 1px solid #f59e0b; color: #fef3c7; } -input:focus { border-color: var(--accent) !important; } +/* ════════════════════════════════ + DASHBOARD GRID & PROGRESS + ════════════════════════════════ */ +.dashboard-grid { display: grid; grid-template-columns: 1fr 1.2fr; gap: 20px; margin-bottom: 24px; } +.prog-container { margin-bottom: 15px; } +.prog-label { display: flex; justify-content: space-between; font-size: 0.85rem; margin-bottom: 5px; color: var(--text-dim); } +.prog-bar-bg { width: 100%; height: 10px; background: rgba(255,255,255,0.07); border-radius: 20px; overflow: hidden; } +.prog-bar-fill { height: 100%; border-radius: 20px; transition: width 0.8s ease-out; } -.btn-primary { - background: var(--matisse) !important; - color: white !important; - border: none; - padding: 12px 30px; - border-radius: 12px; - font-weight: 700; +.tr-subject-group td { + background: rgba(91,96,128,0.15) !important; + font-family: 'Kanit'; font-weight: 600; + color: var(--platinum) !important; + padding: 8px 15px !important; font-size: 0.9rem; + border-bottom: 1px solid rgba(212,212,232,0.1) !important; } /* ════════════════════════════════ - Responsive — เพื่อ DNA ใหญ่ + SYNC OVERLAY + ════════════════════════════════ */ +#sync-overlay { + display: none; position: fixed; inset: 0; z-index: 2000; + background: rgba(0,0,0,0.65); backdrop-filter: blur(6px); + align-items: center; justify-content: center; flex-direction: column; gap: 16px; +} +#sync-overlay.open { display: flex; } +#sync-progress-text { font-family: 'Kanit'; font-size: 1.1rem; color: var(--platinum); } +#sync-progress-bar-wrap { width: 300px; height: 10px; background: rgba(255,255,255,0.1); border-radius: 20px; overflow: hidden; } +#sync-progress-bar { height: 100%; width: 0%; background: var(--silver-mist); border-radius: 20px; transition: width 0.3s; } + +/* ════════════════════════════════ + RESPONSIVE ════════════════════════════════ */ @media (max-width: 768px) { - header { height: auto; padding: 15px; } - .header-inner { flex-direction: column; gap: 15px; } - .dna-container { width: 120px; left: 2%; } + .grid-4 { grid-template-columns: repeat(2,1fr); } + .grid-3 { grid-template-columns: repeat(2,1fr); } + .grid-2 { grid-template-columns: 1fr; } + .dashboard-grid { grid-template-columns: 1fr; } + .header-inner { flex-direction: column; height: auto; padding: 12px 0; gap: 10px; } + .hero h1 { font-size: 1.45rem; } + .search-row { flex-direction: column; } + .dna-container { left: 2%; opacity: 0.2; } +} +@media (max-width: 480px) { + .grid-4, .grid-3 { grid-template-columns: 1fr; } } From 302c4aa6bb3e80a347fedfeda9601fd6b5d0fcf4 Mon Sep 17 00:00:00 2001 From: ARNUT KLANGPRAPUN <136555438+kpp-arnut@users.noreply.github.com> Date: Thu, 7 May 2026 16:23:11 +0700 Subject: [PATCH 24/46] Refine styles for dna-dot and animations --- style.css | 27 +++++++++++++++++++++------ 1 file changed, 21 insertions(+), 6 deletions(-) diff --git a/style.css b/style.css index d6fa4a3..76076b3 100644 --- a/style.css +++ b/style.css @@ -70,11 +70,18 @@ body { } .dna-dot::after { - content: ""; position: absolute; - width: 120px; height: 6px; + content: ""; + position: absolute; + width: 110px; + height: 6px; background: linear-gradient(90deg, var(--platinum), var(--silver-mist)); - top: 50%; left: 50%; transform: translateY(-50%); - z-index: -1; border-radius: 10px; opacity: 0.75; + top: 50%; + left: 50%; + transform: translate(-50%, -50%); + z-index: -1; + + border-radius: 10px; + opacity: 0.8; } .dna-dot.strand-2 { @@ -84,8 +91,16 @@ body { } @keyframes rotate3d { - 0%, 100% { transform: translateX(-60px) scale(1.25); opacity: 1; } - 50% { transform: translateX(60px) scale(0.72); opacity: 0.3; } + 0%, 100% { + transform: translateX(-55px) scale(1.2); /* ระยะแกน X ต้องสัมพันธ์กับความกว้างเส้น */ + opacity: 1; + z-index: 2; + } + 50% { + transform: translateX(55px) scale(0.7); + opacity: 0.3; + z-index: -1; + } } /* ════════════════════════════════ From 0efe356e28e6e136074218f95188a591d2cecdb8 Mon Sep 17 00:00:00 2001 From: ARNUT KLANGPRAPUN <136555438+kpp-arnut@users.noreply.github.com> Date: Thu, 7 May 2026 16:32:48 +0700 Subject: [PATCH 25/46] Refactor header styles and button interactions Updated header background to a gradient and enhanced button styles. --- style.css | 53 ++++++++++++++++++++++++++++++++++++++++------------- 1 file changed, 40 insertions(+), 13 deletions(-) diff --git a/style.css b/style.css index 76076b3..48ac3a0 100644 --- a/style.css +++ b/style.css @@ -108,31 +108,58 @@ body { ════════════════════════════════ */ .app { position: relative; z-index: 1; } + header { - position: sticky; top: 0; z-index: 100; - background: rgba(28, 28, 46, 0.92); - backdrop-filter: blur(18px); - border-bottom: 3px solid rgba(212, 212, 232, 0.2); + /* ใช้สี Matisse (#355C7D) เป็นพื้นหลักไล่ไปหา Briar Rose (#C06C84) */ + background: linear-gradient(90deg, #355C7D 0%, #6C5B7B 50%, #C06C84 100%) !important; padding: 0 20px; + height: 70px; + position: sticky; + top: 0; + z-index: 100; + box-shadow: 0 4px 20px rgba(0,0,0,0.3); + + /* เพิ่มขอบล่างด้วยสี Momo Peach (#F67280) เพื่อความเริส */ + border-bottom: 4px solid #F67280; + display: flex; + align-items: center; } + .header-inner { max-width: 1200px; margin: 0 auto; height: 65px; display: flex; align-items: center; justify-content: space-between; } -.logo { - font-family: 'Kanit'; font-weight: 700; color: var(--platinum); - display: flex; align-items: center; gap: 10px; font-size: 1.05rem; + +.logo span { + color: #FFFFFF; /* หรือใช้ #F8B195 */ + font-size: 1.4rem; + font-weight: 800; + text-shadow: 0 2px 4px rgba(0,0,0,0.2); } nav { display: flex; gap: 8px; } .nav-btn { - background: transparent; border: none; color: var(--text-dim); - padding: 8px 16px; border-radius: 10px; cursor: pointer; transition: all 0.25s; - font-family: 'Sarabun'; font-weight: 500; font-size: 0.95rem; - display: flex; align-items: center; gap: 6px; position: relative; + background: rgba(255, 255, 255, 0.15); /* ปุ่มแบบใสๆ กระจก */ + color: #FFFFFF !important; + border: 1px solid rgba(255, 255, 255, 0.2); + padding: 8px 16px; + border-radius: 10px; + font-weight: 500; + transition: 0.3s; } -.nav-btn:hover { background: rgba(255,255,255,0.08); color: #fff; } -.nav-btn.active { background: var(--primary); color: #fff; box-shadow: 0 4px 14px rgba(91,96,128,0.5); } + +.nav-btn:hover { + background: rgba(255, 255, 255, 0.3); + transform: translateY(-2px); +} + +.nav-btn.active { + background: #F8B195 !important; + color: #355C7D !important; + box-shadow: 0 4px 12px rgba(248, 177, 149, 0.4); + border: none; +} + .cfg-dot { width: 8px; height: 8px; border-radius: 50%; background: var(--amber); display: inline-block; } .cfg-dot.ok { background: var(--green); } From 1de804e8cbe463d484b2e1eaf2c8ea4a8a44cdaf Mon Sep 17 00:00:00 2001 From: ARNUT KLANGPRAPUN <136555438+kpp-arnut@users.noreply.github.com> Date: Thu, 7 May 2026 16:43:02 +0700 Subject: [PATCH 26/46] Refactor CSS styles for improved layout and design --- style.css | 108 +++++++++++++++++++++++------------------------------- 1 file changed, 46 insertions(+), 62 deletions(-) diff --git a/style.css b/style.css index 48ac3a0..38b0191 100644 --- a/style.css +++ b/style.css @@ -70,37 +70,22 @@ body { } .dna-dot::after { - content: ""; - position: absolute; - width: 110px; - height: 6px; - background: linear-gradient(90deg, var(--platinum), var(--silver-mist)); - top: 50%; - left: 50%; - transform: translate(-50%, -50%); - z-index: -1; - - border-radius: 10px; - opacity: 0.8; + content: ""; position: absolute; + width: 120px; height: 7px; + background: linear-gradient(90deg, var(--pure-white), rgba(255,255,255,0.1)); + top: 50%; left: 50%; transform: translateY(-50%); + z-index: -1; border-radius: 10px; } .dna-dot.strand-2 { - background: var(--silver-mist); - box-shadow: 0 0 22px rgba(160, 160, 192, 0.7); + background: rgba(255,255,255,0.4); + box-shadow: 0 0 25px rgba(255,255,255,0.2); animation-delay: -2s; } -@keyframes rotate3d { - 0%, 100% { - transform: translateX(-55px) scale(1.2); /* ระยะแกน X ต้องสัมพันธ์กับความกว้างเส้น */ - opacity: 1; - z-index: 2; - } - 50% { - transform: translateX(55px) scale(0.7); - opacity: 0.3; - z-index: -1; - } +@keyframes rotate3d-heavy { + 0%, 100% { transform: translateX(-65px) scale(1.3); opacity: 1; z-index: 2; } + 50% { transform: translateX(65px) scale(0.7); opacity: 0.3; z-index: -1; } } /* ════════════════════════════════ @@ -139,25 +124,19 @@ header { nav { display: flex; gap: 8px; } .nav-btn { - background: rgba(255, 255, 255, 0.15); /* ปุ่มแบบใสๆ กระจก */ - color: #FFFFFF !important; - border: 1px solid rgba(255, 255, 255, 0.2); - padding: 8px 16px; - border-radius: 10px; - font-weight: 500; - transition: 0.3s; + background: #f1f5f9; + color: #64748b; + border: none; + padding: 10px 20px; border-radius: 12px; cursor: pointer; transition: 0.3s; + font-weight: 600; } -.nav-btn:hover { - background: rgba(255, 255, 255, 0.3); - transform: translateY(-2px); -} +.nav-btn:hover { background: #e2e8f0; color: var(--matisse); } .nav-btn.active { - background: #F8B195 !important; - color: #355C7D !important; - box-shadow: 0 4px 12px rgba(248, 177, 149, 0.4); - border: none; + background: var(--matisse) !important; + color: #fff !important; + box-shadow: 0 4px 15px rgba(53, 92, 125, 0.4); } @@ -167,25 +146,31 @@ nav { display: flex; gap: 8px; } /* ════════════════════════════════ MAIN & CARDS ════════════════════════════════ */ -main { max-width: 1200px; margin: 0 auto; padding: 28px 20px; } +main { max-width: 1200px; margin: 35px auto; padding: 0 20px; } .page { display: none; } .page.active { display: block; } .card { - background: rgba(36, 36, 58, 0.82); - border: 1px solid rgba(212, 212, 232, 0.1); - border-radius: var(--radius-md); padding: 24px; - box-shadow: var(--shadow-lg); backdrop-filter: blur(10px); + background: #fff; + border-radius: var(--radius-lg); + padding: 30px; + box-shadow: 0 20px 50px rgba(0,0,0,0.5); + color: var(--matisse); + margin-bottom: 30px; } + + .mb-4 { margin-bottom: 20px; } .mt-4 { margin-top: 20px; } .mt-3 { margin-top: 12px; } .mb-3 { margin-bottom: 12px; } .card-title { - font-family: 'Kanit'; font-size: 1.15rem; margin-bottom: 18px; - color: var(--platinum); display: flex; align-items: center; gap: 8px; + color: var(--matisse); + border-left: 6px solid var(--princely-violet); + padding-left: 15px; margin-bottom: 25px; } + .card-title::before { content: ""; width: 5px; height: 20px; @@ -284,14 +269,17 @@ label { display: block; margin-bottom: 6px; font-size: 0.88rem; font-weight: 600 /* ════════════════════════════════ TABLES ════════════════════════════════ */ -.tbl-wrap { overflow-x: auto; border-radius: 12px; border: 1px solid var(--border-glass); } -table { width: 100%; border-collapse: collapse; } -thead tr { background: linear-gradient(135deg, #3D4060, #5B6080) !important; } -th { - padding: 14px 15px; color: var(--platinum) !important; - font-family: 'Kanit'; font-weight: 600; text-align: left; - border-bottom: 1px solid rgba(212,212,232,0.15); +.tbl-wrap { + background: #fff; + border-radius: 15px; + overflow: hidden; + border: 1px solid #e2e8f0; } + +table { width: 100%; border-collapse: collapse; } +thead tr { background: var(--matisse) !important; } +th { color: var(--pure-white) !important; padding: 18px !important; } + td { padding: 13px 15px; color: var(--text-main) !important; border-bottom: 1px solid rgba(255,255,255,0.06); vertical-align: middle; @@ -501,15 +489,11 @@ tbody tr:hover td { background: rgba(255,255,255,0.03); } RESPONSIVE ════════════════════════════════ */ @media (max-width: 768px) { - .grid-4 { grid-template-columns: repeat(2,1fr); } - .grid-3 { grid-template-columns: repeat(2,1fr); } - .grid-2 { grid-template-columns: 1fr; } - .dashboard-grid { grid-template-columns: 1fr; } - .header-inner { flex-direction: column; height: auto; padding: 12px 0; gap: 10px; } - .hero h1 { font-size: 1.45rem; } - .search-row { flex-direction: column; } - .dna-container { left: 2%; opacity: 0.2; } + header { height: auto; padding: 15px; } + .header-inner { flex-direction: column; gap: 15px; } + .dna-container { width: 120px; left: 2%; } } + @media (max-width: 480px) { .grid-4, .grid-3 { grid-template-columns: 1fr; } } From 0208acbc98b33c2944af63a2691a7e0670279d61 Mon Sep 17 00:00:00 2001 From: ARNUT KLANGPRAPUN <136555438+kpp-arnut@users.noreply.github.com> Date: Thu, 7 May 2026 16:50:45 +0700 Subject: [PATCH 27/46] Refactor CSS variables and improve styles --- style.css | 117 ++++++++++++++++++++++++++++++++---------------------- 1 file changed, 70 insertions(+), 47 deletions(-) diff --git a/style.css b/style.css index 38b0191..54c9ed0 100644 --- a/style.css +++ b/style.css @@ -1,13 +1,17 @@ :root { /* ── โทนเทาหรู: Charcoal → Slate → Silver ── */ - --charcoal: #1C1C2E; /* เทาดำหรู (bg หลัก) */ - --slate-deep: #2E2E4A; /* เทาม่วงเข้ม */ - --slate-mid: #4A4A6A; /* เทาม่วงกลาง */ - --silver-mist: #A0A0C0; /* เงินหมอก (DNA strand 2) */ - --platinum: #D4D4E8; /* แพลตตินัม (highlight / DNA strand 1) */ + --charcoal: #1C1C2E; + --slate-deep: #2E2E4A; + --slate-mid: #4A4A6A; + --silver-mist: #A0A0C0; + --platinum: #D4D4E8; --pure-white: #FFFFFF; - /* Mapping เข้าระบบ Dashboard */ + /* ── Variables ที่เรียกใช้แต่เคยขาดใน :root ── */ + --matisse: #355C7D; + --princely-violet: #6C5B7B; + --radius-lg: 20px; + --primary: #5B6080; --primary-dark: #3D4060; --accent: var(--platinum); @@ -40,7 +44,7 @@ body { } /* ════════════════════════════════ - BG SCENE — เทา gradient 3 ชั้น + BG SCENE ════════════════════════════════ */ .bg-scene { position: fixed; inset: 0; z-index: 0; @@ -52,7 +56,9 @@ body { overflow: hidden; } -/* ── DNA ── */ +/* ════════════════════════════════ + DNA — ลูกบอลหมุนเกลียว (ไม่มีเส้น) + ════════════════════════════════ */ .dna-container { position: absolute; top: 0; left: 80px; width: 140px; height: 100%; @@ -64,48 +70,61 @@ body { width: 20px; height: 20px; background: var(--platinum); border-radius: 50%; - box-shadow: 0 0 22px rgba(212, 212, 232, 0.8); - animation: rotate3d 4s ease-in-out infinite; + box-shadow: 0 0 14px rgba(212, 212, 232, 0.75); + animation: dna-helix 4s ease-in-out infinite; position: relative; + /* ลบ ::after (เส้น) ทิ้งทั้งหมด */ } -.dna-dot::after { - content: ""; position: absolute; - width: 120px; height: 7px; - background: linear-gradient(90deg, var(--pure-white), rgba(255,255,255,0.1)); - top: 50%; left: 50%; transform: translateY(-50%); - z-index: -1; border-radius: 10px; -} +/* ไม่มี .dna-dot::after แล้ว */ .dna-dot.strand-2 { - background: rgba(255,255,255,0.4); - box-shadow: 0 0 25px rgba(255,255,255,0.2); + background: rgba(255, 255, 255, 0.5); + box-shadow: 0 0 14px rgba(255, 255, 255, 0.3); + animation: dna-helix 4s ease-in-out infinite; animation-delay: -2s; } -@keyframes rotate3d-heavy { - 0%, 100% { transform: translateX(-65px) scale(1.3); opacity: 1; z-index: 2; } - 50% { transform: translateX(65px) scale(0.7); opacity: 0.3; z-index: -1; } -} +/* + ลูกบอลแกว่งซ้าย-ขวา + scale + opacity + จำลองการหมุนเกลียว 3D โดยไม่ต้องใช้ JS + delay ถูก stagger รายลูกใน HTML ด้วย style="animation-delay" +*/ +@keyframes dna-helix { + 0% { transform: translateX(-36px) scale(1.3); opacity: 1; } + 25% { transform: translateX(0px) scale(1.0); opacity: 0.65; } + 50% { transform: translateX(36px) scale(0.65); opacity: 0.2; } + 75% { transform: translateX(0px) scale(1.0); opacity: 0.65; } + 100% { transform: translateX(-36px) scale(1.3); opacity: 1; } +} + +/* + ตัวอย่างการใช้งานใน HTML: +
+
+
+
+
+ ...ทำซ้ำจนเต็ม container +
+*/ /* ════════════════════════════════ APP & HEADER ════════════════════════════════ */ .app { position: relative; z-index: 1; } - header { - /* ใช้สี Matisse (#355C7D) เป็นพื้นหลักไล่ไปหา Briar Rose (#C06C84) */ background: linear-gradient(90deg, #355C7D 0%, #6C5B7B 50%, #C06C84 100%) !important; padding: 0 20px; height: 70px; + width: 100%; + box-sizing: border-box; position: sticky; top: 0; z-index: 100; box-shadow: 0 4px 20px rgba(0,0,0,0.3); - - /* เพิ่มขอบล่างด้วยสี Momo Peach (#F67280) เพื่อความเริส */ - border-bottom: 4px solid #F67280; + border-bottom: 4px solid #F67280; display: flex; align-items: center; } @@ -113,10 +132,11 @@ header { .header-inner { max-width: 1200px; margin: 0 auto; height: 65px; display: flex; align-items: center; justify-content: space-between; + width: 100%; } .logo span { - color: #FFFFFF; /* หรือใช้ #F8B195 */ + color: #FFFFFF; font-size: 1.4rem; font-weight: 800; text-shadow: 0 2px 4px rgba(0,0,0,0.2); @@ -130,16 +150,13 @@ nav { display: flex; gap: 8px; } padding: 10px 20px; border-radius: 12px; cursor: pointer; transition: 0.3s; font-weight: 600; } - .nav-btn:hover { background: #e2e8f0; color: var(--matisse); } - .nav-btn.active { background: var(--matisse) !important; color: #fff !important; box-shadow: 0 4px 15px rgba(53, 92, 125, 0.4); } - .cfg-dot { width: 8px; height: 8px; border-radius: 50%; background: var(--amber); display: inline-block; } .cfg-dot.ok { background: var(--green); } @@ -159,7 +176,6 @@ main { max-width: 1200px; margin: 35px auto; padding: 0 20px; } margin-bottom: 30px; } - .mb-4 { margin-bottom: 20px; } .mt-4 { margin-top: 20px; } .mt-3 { margin-top: 12px; } @@ -169,6 +185,7 @@ main { max-width: 1200px; margin: 35px auto; padding: 0 20px; } color: var(--matisse); border-left: 6px solid var(--princely-violet); padding-left: 15px; margin-bottom: 25px; + display: flex; align-items: center; gap: 8px; } .card-title::before { @@ -177,6 +194,7 @@ main { max-width: 1200px; margin: 35px auto; padding: 0 20px; } background: linear-gradient(180deg, var(--platinum), var(--silver-mist)); border-radius: 4px; flex-shrink: 0; + display: none; /* ซ้อนกับ border-left แล้ว เลือกใช้แค่อย่างเดียว */ } /* ════════════════════════════════ @@ -207,6 +225,7 @@ input[type="password"], select { font-family: 'Sarabun'; font-size: 0.97rem; color: #0f172a; outline: none; width: 100%; transition: border-color 0.2s, box-shadow 0.2s; + box-sizing: border-box; } input:focus, select:focus { border-color: var(--silver-mist); @@ -278,14 +297,16 @@ label { display: block; margin-bottom: 6px; font-size: 0.88rem; font-weight: 600 table { width: 100%; border-collapse: collapse; } thead tr { background: var(--matisse) !important; } -th { color: var(--pure-white) !important; padding: 18px !important; } +th { color: var(--pure-white) !important; padding: 18px !important; text-align: left; } td { - padding: 13px 15px; color: var(--text-main) !important; - border-bottom: 1px solid rgba(255,255,255,0.06); vertical-align: middle; + padding: 13px 15px; + /* แก้: ใช้สีตามบริบท ไม่บังคับ text-main ที่ทำให้อ่านยากใน .card (พื้นขาว) */ + color: #1e293b; + border-bottom: 1px solid rgba(0,0,0,0.06); vertical-align: middle; } tbody tr:last-child td { border-bottom: none; } -tbody tr:hover td { background: rgba(255,255,255,0.03); } +tbody tr:hover td { background: rgba(0,0,0,0.02); } .row-มา { background: rgba(16,185,129,0.1) !important; border-left: 3px solid var(--green); } .row-ขาด { background: rgba(239,68,68,0.1) !important; border-left: 3px solid var(--red); } @@ -300,22 +321,22 @@ tbody tr:hover td { background: rgba(255,255,255,0.03); } padding: 5px 12px; border-radius: 20px; font-size: 0.8rem; font-weight: 600; display: inline-block; min-width: 80px; text-align: center; } -.badge-green { background: rgba(16,185,129,0.15); color: #4ade80; border: 1px solid rgba(16,185,129,0.3); } -.badge-red { background: rgba(239,68,68,0.15); color: #f87171; border: 1px solid rgba(239,68,68,0.3); } -.badge-blue { background: rgba(160,160,192,0.15); color: var(--platinum); border: 1px solid rgba(160,160,192,0.3); } -.badge-amber { background: rgba(245,158,11,0.15); color: #fbbf24; border: 1px solid rgba(245,158,11,0.3); } -.badge-purple { background: rgba(168,85,247,0.15); color: #c084fc; border: 1px solid rgba(168,85,247,0.3); } +.badge-green { background: rgba(16,185,129,0.15); color: #065f46; border: 1px solid rgba(16,185,129,0.3); } +.badge-red { background: rgba(239,68,68,0.15); color: #991b1b; border: 1px solid rgba(239,68,68,0.3); } +.badge-blue { background: rgba(160,160,192,0.15); color: #3d4060; border: 1px solid rgba(160,160,192,0.3); } +.badge-amber { background: rgba(245,158,11,0.15); color: #92400e; border: 1px solid rgba(245,158,11,0.3); } +.badge-purple { background: rgba(168,85,247,0.15); color: #6b21a8; border: 1px solid rgba(168,85,247,0.3); } /* ════════════════════════════════ - TOGGLE (ตรวจงาน) + TOGGLE ════════════════════════════════ */ .tog { padding: 7px 16px; border-radius: 8px; border: none; cursor: pointer; font-family: 'Sarabun'; font-weight: 700; font-size: 0.88rem; transition: all 0.2s; } -.tog.checked { background: rgba(16,185,129,0.2); color: #4ade80; border: 1px solid rgba(16,185,129,0.4); } -.tog.waiting { background: rgba(245,158,11,0.2); color: #fbbf24; border: 1px solid rgba(245,158,11,0.4); } -.tog.not-sent { background: rgba(239,68,68,0.12); color: #f87171; border: 1px solid rgba(239,68,68,0.3); } +.tog.checked { background: rgba(16,185,129,0.2); color: #065f46; border: 1px solid rgba(16,185,129,0.4); } +.tog.waiting { background: rgba(245,158,11,0.2); color: #92400e; border: 1px solid rgba(245,158,11,0.4); } +.tog.not-sent { background: rgba(239,68,68,0.12); color: #991b1b; border: 1px solid rgba(239,68,68,0.3); } .tog:hover { transform: scale(1.05); } .score-in { width: 80px !important; text-align: center; font-weight: 700; font-size: 1rem; } @@ -426,7 +447,7 @@ tbody tr:hover td { background: rgba(255,255,255,0.03); } .score-max { font-size: 1.3rem; color: var(--text-dim); } /* ════════════════════════════════ - ATTENDANCE GRID (หน้านักเรียน) + ATTENDANCE GRID ════════════════════════════════ */ .att-side-label { background: rgba(28,28,46,0.92) !important; @@ -492,8 +513,10 @@ tbody tr:hover td { background: rgba(255,255,255,0.03); } header { height: auto; padding: 15px; } .header-inner { flex-direction: column; gap: 15px; } .dna-container { width: 120px; left: 2%; } + .dashboard-grid { grid-template-columns: 1fr; } } @media (max-width: 480px) { .grid-4, .grid-3 { grid-template-columns: 1fr; } + .grid-2 { grid-template-columns: 1fr; } } From 8c4b236ec2a95b837c8b02a7b08eae03237f2d6c Mon Sep 17 00:00:00 2001 From: ARNUT KLANGPRAPUN <136555438+kpp-arnut@users.noreply.github.com> Date: Thu, 7 May 2026 16:58:42 +0700 Subject: [PATCH 28/46] Refactor DNA animation to use canvas element Replaced .dna-container with .dna-canvas-wrap and updated related styles for a canvas-based helix animation. --- style.css | 109 +++++++++++++++++++++++++++++++++--------------------- 1 file changed, 67 insertions(+), 42 deletions(-) diff --git a/style.css b/style.css index 54c9ed0..3e18abb 100644 --- a/style.css +++ b/style.css @@ -57,56 +57,81 @@ body { } /* ════════════════════════════════ - DNA — ลูกบอลหมุนเกลียว (ไม่มีเส้น) + DNA — Canvas-based helix + แทนที่ div/dot เดิมด้วย ════════════════════════════════ */ -.dna-container { - position: absolute; top: 0; left: 80px; - width: 140px; height: 100%; - display: flex; flex-direction: column; - justify-content: space-around; opacity: 0.45; +.dna-canvas-wrap { + position: absolute; + top: 0; left: 60px; + width: 120px; height: 100%; + opacity: 0.5; + pointer-events: none; } -.dna-dot { - width: 20px; height: 20px; - background: var(--platinum); - border-radius: 50%; - box-shadow: 0 0 14px rgba(212, 212, 232, 0.75); - animation: dna-helix 4s ease-in-out infinite; - position: relative; - /* ลบ ::after (เส้น) ทิ้งทั้งหมด */ -} - -/* ไม่มี .dna-dot::after แล้ว */ - -.dna-dot.strand-2 { - background: rgba(255, 255, 255, 0.5); - box-shadow: 0 0 14px rgba(255, 255, 255, 0.3); - animation: dna-helix 4s ease-in-out infinite; - animation-delay: -2s; +.dna-canvas-wrap canvas { + width: 120px; + height: 100%; } /* - ลูกบอลแกว่งซ้าย-ขวา + scale + opacity - จำลองการหมุนเกลียว 3D โดยไม่ต้องใช้ JS - delay ถูก stagger รายลูกใน HTML ด้วย style="animation-delay" -*/ -@keyframes dna-helix { - 0% { transform: translateX(-36px) scale(1.3); opacity: 1; } - 25% { transform: translateX(0px) scale(1.0); opacity: 0.65; } - 50% { transform: translateX(36px) scale(0.65); opacity: 0.2; } - 75% { transform: translateX(0px) scale(1.0); opacity: 0.65; } - 100% { transform: translateX(-36px) scale(1.3); opacity: 1; } -} + วิธีใช้งานใน HTML — แทนที่ .dna-container เดิม: -/* - ตัวอย่างการใช้งานใน HTML: -
-
-
-
-
- ...ทำซ้ำจนเต็ม container +
+
+ + แล้วเรียก script นี้: + + (function() { + const canvas = document.getElementById('dna-canvas'); + canvas.width = 120; + canvas.height = canvas.parentElement.offsetHeight || 800; + const ctx = canvas.getContext('2d'); + const W = canvas.width, H = canvas.height, cx = W / 2; + const DOTS = 20, SPACING = H / (DOTS - 1), AMPLITUDE = 38, PERIOD = H * 0.65; + let t = 0; + function draw() { + ctx.clearRect(0, 0, W, H); + const dots = []; + for (let i = 0; i < DOTS; i++) { + const y = i * SPACING; + const angle = (y / PERIOD) * Math.PI * 2 + t; + dots.push({ y, + x1: cx + Math.cos(angle) * AMPLITUDE, z1: Math.sin(angle), + x2: cx + Math.cos(angle + Math.PI) * AMPLITUDE, z2: Math.sin(angle + Math.PI) }); + } + // crossbar + for (const { y, x1, x2, z1, z2 } of dots) { + if (Math.abs(z1 - z2) < 0.4) { + const a = 0.08 + (1 - Math.abs(z1 - z2) / 0.4) * 0.12; + ctx.beginPath(); ctx.moveTo(x1, y); ctx.lineTo(x2, y); + ctx.strokeStyle = `rgba(180,180,210,${a})`; ctx.lineWidth = 1; ctx.stroke(); + } + } + // dots sorted by z + const all = []; + for (const { y, x1, x2, z1, z2 } of dots) { + all.push({ x: x1, y, z: z1, s: 1 }); + all.push({ x: x2, y, z: z2, s: 2 }); + } + all.sort((a, b) => a.z - b.z); + for (const d of all) { + const dep = (d.z + 1) / 2; + ctx.beginPath(); + ctx.arc(d.x, d.y, 4 + dep * 7, 0, Math.PI * 2); + ctx.fillStyle = d.s === 1 + ? `rgba(212,212,232,${0.2 + dep * 0.8})` + : `rgba(255,255,255,${0.12 + dep * 0.5})`; + ctx.shadowColor = d.s === 1 ? 'rgba(212,212,232,0.6)' : 'rgba(255,255,255,0.4)'; + ctx.shadowBlur = dep * 12; + ctx.fill(); + ctx.shadowBlur = 0; + } + t += 0.018; + requestAnimationFrame(draw); + } + draw(); + })(); */ /* ════════════════════════════════ From f16b406e0f236d51d6e95fb444e185b4f7ad199d Mon Sep 17 00:00:00 2001 From: ARNUT KLANGPRAPUN <136555438+kpp-arnut@users.noreply.github.com> Date: Thu, 7 May 2026 17:01:41 +0700 Subject: [PATCH 29/46] Revamp header and navigation styles --- style.css | 47 +++++++++++++++++++++++++++++++++++------------ 1 file changed, 35 insertions(+), 12 deletions(-) diff --git a/style.css b/style.css index 3e18abb..9292f3e 100644 --- a/style.css +++ b/style.css @@ -140,20 +140,38 @@ body { .app { position: relative; z-index: 1; } header { - background: linear-gradient(90deg, #355C7D 0%, #6C5B7B 50%, #C06C84 100%) !important; + background: linear-gradient( + 135deg, + rgba(255,255,255,0.18) 0%, + rgba(255,255,255,0.07) 50%, + rgba(255,255,255,0.13) 100% + ) !important; + backdrop-filter: blur(28px) saturate(180%); + -webkit-backdrop-filter: blur(28px) saturate(180%); + border-bottom: 1px solid rgba(255,255,255,0.13); + box-shadow: + 0 1px 0 rgba(255,255,255,0.28) inset, + 0 8px 32px rgba(0,0,0,0.35); padding: 0 20px; - height: 70px; + height: 68px; width: 100%; box-sizing: border-box; position: sticky; top: 0; z-index: 100; - box-shadow: 0 4px 20px rgba(0,0,0,0.3); - border-bottom: 4px solid #F67280; display: flex; align-items: center; } +header::before { + content: ''; + position: absolute; + top: 0; left: 0; right: 0; + height: 1px; + background: linear-gradient(90deg, transparent 0%, rgba(255,255,255,0.55) 50%, transparent 100%); + pointer-events: none; +} + .header-inner { max-width: 1200px; margin: 0 auto; height: 65px; display: flex; align-items: center; justify-content: space-between; @@ -167,19 +185,24 @@ header { text-shadow: 0 2px 4px rgba(0,0,0,0.2); } -nav { display: flex; gap: 8px; } +nav { display: flex; gap: 4px; } .nav-btn { - background: #f1f5f9; - color: #64748b; + background: transparent; + color: rgba(255,255,255,0.65); border: none; - padding: 10px 20px; border-radius: 12px; cursor: pointer; transition: 0.3s; - font-weight: 600; + padding: 8px 18px; border-radius: 14px; cursor: pointer; transition: all 0.2s; + font-weight: 600; font-family: 'Sarabun'; font-size: 0.9rem; + text-shadow: 0 1px 2px rgba(0,0,0,0.2); +} +.nav-btn:hover { + background: rgba(255,255,255,0.10); + color: rgba(255,255,255,0.95); } -.nav-btn:hover { background: #e2e8f0; color: var(--matisse); } .nav-btn.active { - background: var(--matisse) !important; + background: linear-gradient(135deg, rgba(255,255,255,0.26) 0%, rgba(255,255,255,0.11) 100%) !important; color: #fff !important; - box-shadow: 0 4px 15px rgba(53, 92, 125, 0.4); + border: 1px solid rgba(255,255,255,0.30); + box-shadow: 0 1px 0 rgba(255,255,255,0.42) inset, 0 4px 12px rgba(0,0,0,0.22); } .cfg-dot { width: 8px; height: 8px; border-radius: 50%; background: var(--amber); display: inline-block; } From 4684006737728799314e38209bc89aaa61093daa Mon Sep 17 00:00:00 2001 From: ARNUT KLANGPRAPUN <136555438+kpp-arnut@users.noreply.github.com> Date: Thu, 7 May 2026 21:12:53 +0700 Subject: [PATCH 30/46] Update header styles and navigation button design --- style.css | 47 ++++++++++++----------------------------------- 1 file changed, 12 insertions(+), 35 deletions(-) diff --git a/style.css b/style.css index 9292f3e..3e18abb 100644 --- a/style.css +++ b/style.css @@ -140,38 +140,20 @@ body { .app { position: relative; z-index: 1; } header { - background: linear-gradient( - 135deg, - rgba(255,255,255,0.18) 0%, - rgba(255,255,255,0.07) 50%, - rgba(255,255,255,0.13) 100% - ) !important; - backdrop-filter: blur(28px) saturate(180%); - -webkit-backdrop-filter: blur(28px) saturate(180%); - border-bottom: 1px solid rgba(255,255,255,0.13); - box-shadow: - 0 1px 0 rgba(255,255,255,0.28) inset, - 0 8px 32px rgba(0,0,0,0.35); + background: linear-gradient(90deg, #355C7D 0%, #6C5B7B 50%, #C06C84 100%) !important; padding: 0 20px; - height: 68px; + height: 70px; width: 100%; box-sizing: border-box; position: sticky; top: 0; z-index: 100; + box-shadow: 0 4px 20px rgba(0,0,0,0.3); + border-bottom: 4px solid #F67280; display: flex; align-items: center; } -header::before { - content: ''; - position: absolute; - top: 0; left: 0; right: 0; - height: 1px; - background: linear-gradient(90deg, transparent 0%, rgba(255,255,255,0.55) 50%, transparent 100%); - pointer-events: none; -} - .header-inner { max-width: 1200px; margin: 0 auto; height: 65px; display: flex; align-items: center; justify-content: space-between; @@ -185,24 +167,19 @@ header::before { text-shadow: 0 2px 4px rgba(0,0,0,0.2); } -nav { display: flex; gap: 4px; } +nav { display: flex; gap: 8px; } .nav-btn { - background: transparent; - color: rgba(255,255,255,0.65); + background: #f1f5f9; + color: #64748b; border: none; - padding: 8px 18px; border-radius: 14px; cursor: pointer; transition: all 0.2s; - font-weight: 600; font-family: 'Sarabun'; font-size: 0.9rem; - text-shadow: 0 1px 2px rgba(0,0,0,0.2); -} -.nav-btn:hover { - background: rgba(255,255,255,0.10); - color: rgba(255,255,255,0.95); + padding: 10px 20px; border-radius: 12px; cursor: pointer; transition: 0.3s; + font-weight: 600; } +.nav-btn:hover { background: #e2e8f0; color: var(--matisse); } .nav-btn.active { - background: linear-gradient(135deg, rgba(255,255,255,0.26) 0%, rgba(255,255,255,0.11) 100%) !important; + background: var(--matisse) !important; color: #fff !important; - border: 1px solid rgba(255,255,255,0.30); - box-shadow: 0 1px 0 rgba(255,255,255,0.42) inset, 0 4px 12px rgba(0,0,0,0.22); + box-shadow: 0 4px 15px rgba(53, 92, 125, 0.4); } .cfg-dot { width: 8px; height: 8px; border-radius: 50%; background: var(--amber); display: inline-block; } From 9e9bb6ec7e77543734098c39b74eb63be2a2d3f3 Mon Sep 17 00:00:00 2001 From: ARNUT KLANGPRAPUN <136555438+kpp-arnut@users.noreply.github.com> Date: Thu, 7 May 2026 21:21:52 +0700 Subject: [PATCH 31/46] major upgrade style for all screen --- style.css | 1387 ++++++++++++++++++++++++++++++++++++++++------------- 1 file changed, 1042 insertions(+), 345 deletions(-) diff --git a/style.css b/style.css index 3e18abb..9af769f 100644 --- a/style.css +++ b/style.css @@ -1,293 +1,571 @@ +/* ══════════════════════════════════════════════════════════════ + LIQUID GLASS UI — iOS-inspired Design System + Responsive: Mobile-first, scales cleanly to desktop + Font stack: Sarabun (Thai) + Kanit (headings) + ══════════════════════════════════════════════════════════════ */ + +@import url('https://fonts.googleapis.com/css2?family=Kanit:wght@400;600;700&family=Sarabun:wght@300;400;600;700&display=swap'); + +/* ════════════════════════════════ + DESIGN TOKENS + ════════════════════════════════ */ :root { - /* ── โทนเทาหรู: Charcoal → Slate → Silver ── */ - --charcoal: #1C1C2E; - --slate-deep: #2E2E4A; - --slate-mid: #4A4A6A; - --silver-mist: #A0A0C0; - --platinum: #D4D4E8; - --pure-white: #FFFFFF; - - /* ── Variables ที่เรียกใช้แต่เคยขาดใน :root ── */ - --matisse: #355C7D; - --princely-violet: #6C5B7B; - --radius-lg: 20px; - - --primary: #5B6080; - --primary-dark: #3D4060; - --accent: var(--platinum); - --cyan: #8899BB; - --green: #10b981; - --red: #ef4444; - --amber: #f59e0b; - --purple: #a855f7; - --purple-dark: #7e22ce; - - --bg-dark: var(--charcoal); - --bg-glass: rgba(255, 255, 255, 0.95); - --bg-card: rgba(46, 46, 74, 0.75); - --border-glass: rgba(255, 255, 255, 0.12); - --radius-md: 16px; - --shadow-lg: 0 20px 40px rgba(0, 0, 0, 0.45); - - --text-main: #f1f5f9; - --text-dim: #94a3b8; - --text-muted: #64748b; + /* ── Core Palette ── */ + --charcoal: #0f0f1e; + --slate-deep: #1a1a2e; + --slate-mid: #252545; + --slate-light: #3a3a5c; + --silver-mist: #a8a8c8; + --platinum: #e0e0f0; + --pure-white: #ffffff; + + /* ── Named Accents ── */ + --matisse: #3d6a96; + --matisse-light: #5b8fc0; + --princely: #7c6ba0; + --rose-edge: #e07a85; + + /* ── Semantic ── */ + --green: #22c55e; + --green-dim: rgba(34, 197, 94, 0.15); + --red: #f87171; + --red-dim: rgba(248, 113, 113, 0.15); + --amber: #fbbf24; + --amber-dim: rgba(251, 191, 36, 0.15); + --blue: #60a5fa; + --blue-dim: rgba(96, 165, 250, 0.15); + --purple: #c084fc; + --purple-dim: rgba(192, 132, 252, 0.15); + + /* ── Glass System ── */ + --glass-1: rgba(255, 255, 255, 0.06); /* subtle tint */ + --glass-2: rgba(255, 255, 255, 0.10); /* card */ + --glass-3: rgba(255, 255, 255, 0.15); /* elevated */ + --glass-4: rgba(255, 255, 255, 0.22); /* modal / hover */ + --glass-white: rgba(255, 255, 255, 0.92); /* light card */ + --glass-border: rgba(255, 255, 255, 0.14); + --glass-border-2: rgba(255, 255, 255, 0.22); + --glass-shadow: 0 8px 32px rgba(0, 0, 0, 0.35), + 0 2px 8px rgba(0, 0, 0, 0.20), + inset 0 1px 0 rgba(255, 255, 255, 0.18); + --glass-shadow-lg: 0 20px 60px rgba(0, 0, 0, 0.50), + 0 4px 16px rgba(0, 0, 0, 0.25), + inset 0 1px 0 rgba(255, 255, 255, 0.20); + --glass-shadow-sm: 0 4px 16px rgba(0, 0, 0, 0.25), + inset 0 1px 0 rgba(255, 255, 255, 0.12); + + /* ── Radius ── */ + --r-sm: 8px; + --r-md: 14px; + --r-lg: 20px; + --r-xl: 28px; + --r-full: 9999px; + + /* ── Typography ── */ + --font-body: 'Sarabun', sans-serif; + --font-display: 'Kanit', sans-serif; + + /* ── Text ── */ + --text-primary: #f0f0ff; + --text-secondary: #a0a0c0; + --text-muted: #606080; + --text-inverse: #0f0f1e; + + /* ── Transition ── */ + --t-fast: 0.15s cubic-bezier(0.4, 0, 0.2, 1); + --t-normal: 0.25s cubic-bezier(0.4, 0, 0.2, 1); + --t-slow: 0.40s cubic-bezier(0.4, 0, 0.2, 1); + + /* ── Spacing Scale ── */ + --sp-1: 4px; + --sp-2: 8px; + --sp-3: 12px; + --sp-4: 16px; + --sp-5: 20px; + --sp-6: 24px; + --sp-8: 32px; + + /* ── Layout ── */ + --header-h: 64px; + --max-w: 1200px; +} + +/* ════════════════════════════════ + RESET & BASE + ════════════════════════════════ */ +*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; } + +html { + scroll-behavior: smooth; + -webkit-tap-highlight-color: transparent; + -webkit-text-size-adjust: 100%; } body { - font-family: 'Sarabun', sans-serif; - background-color: var(--bg-dark); - color: var(--text-main); + font-family: var(--font-body); + font-size: 15px; + line-height: 1.6; + color: var(--text-primary); + background: var(--charcoal); min-height: 100vh; - margin: 0; overflow-x: hidden; } /* ════════════════════════════════ - BG SCENE + BG SCENE — Ambient Aurora ════════════════════════════════ */ .bg-scene { - position: fixed; inset: 0; z-index: 0; - background: - radial-gradient(ellipse at 15% 20%, rgba(90, 96, 128, 0.35) 0%, transparent 55%), - radial-gradient(ellipse at 85% 80%, rgba(74, 74, 106, 0.30) 0%, transparent 55%), - radial-gradient(ellipse at 50% 50%, rgba(46, 46, 74, 0.50) 0%, transparent 70%), - linear-gradient(160deg, #1C1C2E 0%, #252540 50%, #1C1C2E 100%); + position: fixed; + inset: 0; + z-index: 0; overflow: hidden; + background: radial-gradient(ellipse at 15% 20%, rgba(61, 106, 150, 0.30) 0%, transparent 55%), + radial-gradient(ellipse at 85% 75%, rgba(124, 107, 160, 0.28) 0%, transparent 55%), + radial-gradient(ellipse at 50% 50%, rgba(37, 37, 69, 0.60) 0%, transparent 70%), + linear-gradient(170deg, #0f0f1e 0%, #1a1a2e 45%, #12122a 100%); +} + +/* Floating orbs for depth */ +.bg-scene::before, +.bg-scene::after { + content: ''; + position: absolute; + border-radius: 50%; + filter: blur(80px); + pointer-events: none; +} +.bg-scene::before { + width: min(500px, 60vw); + height: min(500px, 60vw); + top: -10%; + left: -10%; + background: radial-gradient(circle, rgba(61, 106, 150, 0.18) 0%, transparent 70%); + animation: orb1 18s ease-in-out infinite alternate; } +.bg-scene::after { + width: min(400px, 50vw); + height: min(400px, 50vw); + bottom: -5%; + right: -8%; + background: radial-gradient(circle, rgba(124, 107, 160, 0.16) 0%, transparent 70%); + animation: orb2 22s ease-in-out infinite alternate; +} +@keyframes orb1 { from { transform: translate(0,0) scale(1); } to { transform: translate(6%,4%) scale(1.1); } } +@keyframes orb2 { from { transform: translate(0,0) scale(1); } to { transform: translate(-5%,-4%) scale(1.08); } } /* ════════════════════════════════ - DNA — Canvas-based helix - แทนที่ div/dot เดิมด้วย + DNA CANVAS ════════════════════════════════ */ .dna-canvas-wrap { position: absolute; - top: 0; left: 60px; - width: 120px; height: 100%; - opacity: 0.5; + top: 0; + left: clamp(10px, 4vw, 60px); + width: clamp(80px, 8vw, 120px); + height: 100%; + opacity: 0.45; pointer-events: none; } - .dna-canvas-wrap canvas { - width: 120px; + width: 100%; height: 100%; } -/* - วิธีใช้งานใน HTML — แทนที่ .dna-container เดิม: - -
- -
- - แล้วเรียก script นี้: - - (function() { - const canvas = document.getElementById('dna-canvas'); - canvas.width = 120; - canvas.height = canvas.parentElement.offsetHeight || 800; - const ctx = canvas.getContext('2d'); - const W = canvas.width, H = canvas.height, cx = W / 2; - const DOTS = 20, SPACING = H / (DOTS - 1), AMPLITUDE = 38, PERIOD = H * 0.65; - let t = 0; - function draw() { - ctx.clearRect(0, 0, W, H); - const dots = []; - for (let i = 0; i < DOTS; i++) { - const y = i * SPACING; - const angle = (y / PERIOD) * Math.PI * 2 + t; - dots.push({ y, - x1: cx + Math.cos(angle) * AMPLITUDE, z1: Math.sin(angle), - x2: cx + Math.cos(angle + Math.PI) * AMPLITUDE, z2: Math.sin(angle + Math.PI) }); - } - // crossbar - for (const { y, x1, x2, z1, z2 } of dots) { - if (Math.abs(z1 - z2) < 0.4) { - const a = 0.08 + (1 - Math.abs(z1 - z2) / 0.4) * 0.12; - ctx.beginPath(); ctx.moveTo(x1, y); ctx.lineTo(x2, y); - ctx.strokeStyle = `rgba(180,180,210,${a})`; ctx.lineWidth = 1; ctx.stroke(); - } - } - // dots sorted by z - const all = []; - for (const { y, x1, x2, z1, z2 } of dots) { - all.push({ x: x1, y, z: z1, s: 1 }); - all.push({ x: x2, y, z: z2, s: 2 }); - } - all.sort((a, b) => a.z - b.z); - for (const d of all) { - const dep = (d.z + 1) / 2; - ctx.beginPath(); - ctx.arc(d.x, d.y, 4 + dep * 7, 0, Math.PI * 2); - ctx.fillStyle = d.s === 1 - ? `rgba(212,212,232,${0.2 + dep * 0.8})` - : `rgba(255,255,255,${0.12 + dep * 0.5})`; - ctx.shadowColor = d.s === 1 ? 'rgba(212,212,232,0.6)' : 'rgba(255,255,255,0.4)'; - ctx.shadowBlur = dep * 12; - ctx.fill(); - ctx.shadowBlur = 0; - } - t += 0.018; - requestAnimationFrame(draw); - } - draw(); - })(); -*/ - /* ════════════════════════════════ - APP & HEADER + APP SHELL ════════════════════════════════ */ -.app { position: relative; z-index: 1; } +.app { + position: relative; + z-index: 1; + min-height: 100vh; +} +/* ════════════════════════════════ + HEADER — Liquid Glass Bar + ════════════════════════════════ */ header { - background: linear-gradient(90deg, #355C7D 0%, #6C5B7B 50%, #C06C84 100%) !important; - padding: 0 20px; - height: 70px; - width: 100%; - box-sizing: border-box; position: sticky; top: 0; - z-index: 100; - box-shadow: 0 4px 20px rgba(0,0,0,0.3); - border-bottom: 4px solid #F67280; - display: flex; - align-items: center; + z-index: 200; + height: var(--header-h); + width: 100%; + padding: 0 var(--sp-5); + background: rgba(15, 15, 30, 0.65); + backdrop-filter: blur(28px) saturate(1.8); + -webkit-backdrop-filter: blur(28px) saturate(1.8); + border-bottom: 1px solid var(--glass-border); + box-shadow: 0 1px 0 rgba(255,255,255,0.06), + 0 4px 24px rgba(0, 0, 0, 0.30); +} + +/* Subtle gradient shimmer on header top edge */ +header::before { + content: ''; + position: absolute; + top: 0; left: 0; right: 0; + height: 1px; + background: linear-gradient(90deg, + transparent 0%, + rgba(255,255,255,0.25) 30%, + rgba(200,180,255,0.30) 60%, + transparent 100%); } .header-inner { - max-width: 1200px; margin: 0 auto; height: 65px; - display: flex; align-items: center; justify-content: space-between; - width: 100%; + max-width: var(--max-w); + margin: 0 auto; + height: 100%; + display: flex; + align-items: center; + justify-content: space-between; + gap: var(--sp-4); } +/* Logo */ .logo span { - color: #FFFFFF; - font-size: 1.4rem; - font-weight: 800; - text-shadow: 0 2px 4px rgba(0,0,0,0.2); + font-family: var(--font-display); + font-size: clamp(1rem, 2.5vw, 1.35rem); + font-weight: 700; + color: var(--pure-white); + letter-spacing: 0.01em; + white-space: nowrap; + background: linear-gradient(135deg, #fff 30%, rgba(192,180,255,0.9) 100%); + -webkit-background-clip: text; + -webkit-text-fill-color: transparent; + background-clip: text; +} + +/* Nav */ +nav { + display: flex; + gap: var(--sp-2); + flex-wrap: wrap; + align-items: center; } -nav { display: flex; gap: 8px; } .nav-btn { - background: #f1f5f9; - color: #64748b; - border: none; - padding: 10px 20px; border-radius: 12px; cursor: pointer; transition: 0.3s; + padding: 7px 16px; + border-radius: var(--r-full); + border: 1px solid transparent; + background: var(--glass-1); + color: var(--text-secondary); + font-family: var(--font-body); + font-size: 0.875rem; font-weight: 600; + cursor: pointer; + transition: all var(--t-normal); + white-space: nowrap; +} +.nav-btn:hover { + background: var(--glass-3); + color: var(--text-primary); + border-color: var(--glass-border); } -.nav-btn:hover { background: #e2e8f0; color: var(--matisse); } .nav-btn.active { - background: var(--matisse) !important; - color: #fff !important; - box-shadow: 0 4px 15px rgba(53, 92, 125, 0.4); + background: linear-gradient(135deg, var(--matisse) 0%, var(--princely) 100%); + color: #fff; + border-color: rgba(255,255,255,0.15); + box-shadow: 0 4px 16px rgba(61, 106, 150, 0.40), + inset 0 1px 0 rgba(255,255,255,0.20); } -.cfg-dot { width: 8px; height: 8px; border-radius: 50%; background: var(--amber); display: inline-block; } -.cfg-dot.ok { background: var(--green); } +/* Indicator dot */ +.cfg-dot { + width: 8px; height: 8px; + border-radius: 50%; + background: var(--amber); + display: inline-block; + margin-left: 4px; + box-shadow: 0 0 6px var(--amber); +} +.cfg-dot.ok { + background: var(--green); + box-shadow: 0 0 6px var(--green); +} /* ════════════════════════════════ - MAIN & CARDS + MAIN CONTENT ════════════════════════════════ */ -main { max-width: 1200px; margin: 35px auto; padding: 0 20px; } +main { + max-width: var(--max-w); + margin: 0 auto; + padding: clamp(16px, 4vw, 36px) clamp(12px, 3vw, 20px); +} + .page { display: none; } .page.active { display: block; } +/* ════════════════════════════════ + GLASS CARDS + ════════════════════════════════ */ .card { - background: #fff; - border-radius: var(--radius-lg); - padding: 30px; - box-shadow: 0 20px 50px rgba(0,0,0,0.5); - color: var(--matisse); - margin-bottom: 30px; + background: var(--glass-2); + backdrop-filter: blur(20px) saturate(1.6); + -webkit-backdrop-filter: blur(20px) saturate(1.6); + border: 1px solid var(--glass-border); + border-radius: var(--r-xl); + padding: clamp(20px, 4vw, 32px); + box-shadow: var(--glass-shadow); + color: var(--text-primary); + margin-bottom: clamp(16px, 3vw, 28px); + position: relative; + overflow: hidden; } -.mb-4 { margin-bottom: 20px; } -.mt-4 { margin-top: 20px; } -.mt-3 { margin-top: 12px; } -.mb-3 { margin-bottom: 12px; } +/* Top-edge glint */ +.card::before { + content: ''; + position: absolute; + top: 0; left: 8px; right: 8px; + height: 1px; + background: linear-gradient(90deg, + transparent, rgba(255,255,255,0.20) 40%, + rgba(255,255,255,0.20) 60%, transparent); + border-radius: var(--r-full); +} -.card-title { - color: var(--matisse); - border-left: 6px solid var(--princely-violet); - padding-left: 15px; margin-bottom: 25px; - display: flex; align-items: center; gap: 8px; +/* Light-surface card variant */ +.card-light { + background: rgba(255, 255, 255, 0.90); + backdrop-filter: blur(20px); + -webkit-backdrop-filter: blur(20px); + color: #1a1a2e; + border: 1px solid rgba(200, 200, 220, 0.40); + box-shadow: 0 8px 32px rgba(0,0,0,0.18), + inset 0 1px 0 rgba(255,255,255,0.90); } +.card-light .card-title { color: var(--matisse); } +.card-light td { color: #1e2040; } +.card-light label { color: #4a4a6a; } -.card-title::before { - content: ""; - width: 5px; height: 20px; - background: linear-gradient(180deg, var(--platinum), var(--silver-mist)); - border-radius: 4px; - flex-shrink: 0; - display: none; /* ซ้อนกับ border-left แล้ว เลือกใช้แค่อย่างเดียว */ +/* Card Title */ +.card-title { + font-family: var(--font-display); + font-size: clamp(1rem, 2.5vw, 1.15rem); + font-weight: 600; + color: var(--platinum); + margin-bottom: clamp(16px, 3vw, 24px); + padding-left: 14px; + border-left: 3px solid; + border-image: linear-gradient(180deg, var(--matisse-light), var(--princely)) 1; + display: flex; + align-items: center; + gap: 8px; + line-height: 1.3; } /* ════════════════════════════════ - HERO + HERO SECTION ════════════════════════════════ */ .hero { - text-align: center; padding: 42px 20px; - background: linear-gradient(135deg, - rgba(91,96,128,0.3) 0%, - rgba(74,74,106,0.2) 50%, - rgba(46,46,74,0.3) 100%); - border-radius: 20px; - border: 1px solid rgba(212,212,232,0.12); - margin-bottom: 28px; + text-align: center; + padding: clamp(32px, 6vw, 56px) clamp(16px, 5vw, 32px); + background: linear-gradient(145deg, + rgba(61, 106, 150, 0.20) 0%, + rgba(124, 107, 160, 0.15) 50%, + rgba(37, 37, 69, 0.25) 100%); + backdrop-filter: blur(20px); + -webkit-backdrop-filter: blur(20px); + border-radius: var(--r-xl); + border: 1px solid var(--glass-border); + margin-bottom: clamp(20px, 4vw, 32px); + box-shadow: var(--glass-shadow); + position: relative; + overflow: hidden; +} +.hero::before { + content: ''; + position: absolute; + top: 0; left: 10%; right: 10%; + height: 1px; + background: linear-gradient(90deg, transparent, rgba(255,255,255,0.25), transparent); } -.hero h1 { font-family: 'Kanit'; font-size: 1.9rem; margin-bottom: 8px; color: var(--platinum); } -.hero p { color: var(--text-dim); font-size: 1rem; } -.search-row { display: flex; gap: 10px; max-width: 460px; margin: 22px auto 0; } +.hero h1 { + font-family: var(--font-display); + font-size: clamp(1.5rem, 4vw, 2.2rem); + font-weight: 700; + color: var(--platinum); + margin-bottom: 8px; + letter-spacing: -0.01em; +} +.hero p { + color: var(--text-secondary); + font-size: clamp(0.875rem, 2vw, 1rem); + max-width: 480px; + margin: 0 auto; +} + +.search-row { + display: flex; + gap: 10px; + max-width: 460px; + margin: clamp(16px, 3vw, 22px) auto 0; +} /* ════════════════════════════════ - INPUTS + INPUTS & FORM ELEMENTS ════════════════════════════════ */ -input[type="text"], input[type="number"], input[type="date"], -input[type="password"], select { - background: rgba(255,255,255,0.94); border: 2px solid transparent; - border-radius: 10px; padding: 10px 14px; - font-family: 'Sarabun'; font-size: 0.97rem; - color: #0f172a; outline: none; width: 100%; - transition: border-color 0.2s, box-shadow 0.2s; +input[type="text"], +input[type="number"], +input[type="date"], +input[type="password"], +select, +textarea { + width: 100%; + padding: 11px 14px; + font-family: var(--font-body); + font-size: 0.9375rem; + color: var(--text-primary); + background: rgba(255, 255, 255, 0.07); + border: 1px solid var(--glass-border); + border-radius: var(--r-md); + outline: none; + transition: all var(--t-fast); box-sizing: border-box; + backdrop-filter: blur(8px); + -webkit-backdrop-filter: blur(8px); + /* Fix for iOS auto-zoom: keep font-size ≥ 16px on mobile, + but we manage this via @media below */ +} + +input::placeholder, textarea::placeholder { + color: var(--text-muted); +} +input:hover, select:hover { + border-color: var(--glass-border-2); + background: rgba(255, 255, 255, 0.10); +} +input:focus, select:focus, textarea:focus { + border-color: rgba(96, 165, 250, 0.50); + background: rgba(255, 255, 255, 0.12); + box-shadow: 0 0 0 3px rgba(96, 165, 250, 0.15), + inset 0 1px 0 rgba(255,255,255,0.08); +} + +/* Light card inputs */ +.card-light input, +.card-light select, +.card-light textarea { + background: rgba(255, 255, 255, 0.80); + border: 1px solid rgba(180, 180, 210, 0.50); + color: #1a1a2e; +} +.card-light input::placeholder { color: #8888aa; } +.card-light input:focus, .card-light select:focus { + border-color: var(--matisse); + background: rgba(255, 255, 255, 0.95); + box-shadow: 0 0 0 3px rgba(61, 106, 150, 0.15); } -input:focus, select:focus { - border-color: var(--silver-mist); - box-shadow: 0 0 0 3px rgba(160,160,192,0.22); + +label { + display: block; + margin-bottom: 6px; + font-size: 0.8125rem; + font-weight: 600; + color: var(--text-secondary); + letter-spacing: 0.02em; } -label { display: block; margin-bottom: 6px; font-size: 0.88rem; font-weight: 600; color: var(--text-dim); } +.card-light label { color: #5a5a80; } /* ════════════════════════════════ BUTTONS ════════════════════════════════ */ .btn { - padding: 10px 20px; border-radius: 10px; font-weight: 600; cursor: pointer; - border: none; display: inline-flex; align-items: center; gap: 7px; - transition: all 0.2s; font-family: 'Sarabun'; font-size: 0.95rem; white-space: nowrap; -} -.btn:hover { transform: translateY(-1px); } -.btn:active { transform: translateY(0); } -.btn-primary { background: var(--primary); color: #fff; box-shadow: 0 4px 12px rgba(91,96,128,0.4); } -.btn-primary:hover { background: var(--primary-dark); } -.btn-success { background: var(--green); color: #fff; box-shadow: 0 4px 12px rgba(16,185,129,0.3); } -.btn-danger { background: var(--red); color: #fff; } -.btn-outline { background: transparent; border: 1px solid var(--border-glass); color: var(--text-main); } -.btn-ghost { background: rgba(255,255,255,0.07); color: var(--text-main); } -.btn-sm { padding: 6px 14px; font-size: 0.85rem; border-radius: 8px; } -.btn-lg { padding: 13px 28px; font-size: 1.05rem; } -.btn-xl { padding: 13px 24px; font-size: 1rem; } -.w-full { width: 100%; justify-content: center; } + display: inline-flex; + align-items: center; + justify-content: center; + gap: 7px; + padding: 10px 20px; + border-radius: var(--r-md); + border: 1px solid transparent; + font-family: var(--font-body); + font-size: 0.9375rem; + font-weight: 600; + cursor: pointer; + white-space: nowrap; + transition: all var(--t-normal); + position: relative; + overflow: hidden; + /* Min touch target */ + min-height: 44px; +} +.btn::after { + content: ''; + position: absolute; + inset: 0; + border-radius: inherit; + opacity: 0; + background: rgba(255,255,255,0.10); + transition: opacity var(--t-fast); +} +.btn:hover::after { opacity: 1; } +.btn:active { transform: scale(0.97); } + +.btn-primary { + background: linear-gradient(135deg, var(--matisse) 0%, var(--princely) 100%); + color: #fff; + border-color: rgba(255,255,255,0.12); + box-shadow: 0 4px 16px rgba(61, 106, 150, 0.35), + inset 0 1px 0 rgba(255,255,255,0.18); +} +.btn-primary:hover { + box-shadow: 0 6px 24px rgba(61, 106, 150, 0.50), + inset 0 1px 0 rgba(255,255,255,0.22); + transform: translateY(-1px); +} + +.btn-success { + background: linear-gradient(135deg, #15803d 0%, #22c55e 100%); + color: #fff; + box-shadow: 0 4px 16px rgba(34, 197, 94, 0.30), + inset 0 1px 0 rgba(255,255,255,0.15); +} +.btn-success:hover { transform: translateY(-1px); } + +.btn-danger { + background: linear-gradient(135deg, #b91c1c 0%, #ef4444 100%); + color: #fff; + box-shadow: 0 4px 16px rgba(239, 68, 68, 0.30), + inset 0 1px 0 rgba(255,255,255,0.12); +} + +.btn-outline { + background: var(--glass-1); + border: 1px solid var(--glass-border-2); + color: var(--text-primary); + backdrop-filter: blur(8px); +} +.btn-outline:hover { + background: var(--glass-3); + border-color: rgba(255,255,255,0.28); +} + +.btn-ghost { + background: transparent; + color: var(--text-secondary); + border-color: transparent; +} +.btn-ghost:hover { + background: var(--glass-2); + color: var(--text-primary); +} + +.btn-sm { padding: 6px 14px; font-size: 0.8125rem; border-radius: var(--r-sm); min-height: 36px; } +.btn-lg { padding: 13px 28px; font-size: 1rem; min-height: 50px; } +.btn-xl { padding: 14px 26px; font-size: 1.0625rem; border-radius: var(--r-lg); min-height: 54px; } +.w-full { width: 100%; } /* ════════════════════════════════ - GRID & UTILS + GRID LAYOUTS — responsive ════════════════════════════════ */ -.grid-2 { display: grid; grid-template-columns: repeat(2,1fr); } -.grid-3 { display: grid; grid-template-columns: repeat(3,1fr); } -.grid-4 { display: grid; grid-template-columns: repeat(4,1fr); } -.gap-2 { gap: 8px; } -.gap-3 { gap: 12px; } -.gap-4 { gap: 16px; } +.grid-2 { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); } +.grid-3 { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); } +.grid-4 { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); } +.gap-2 { gap: var(--sp-2); } +.gap-3 { gap: var(--sp-3); } +.gap-4 { gap: var(--sp-4); } +.gap-5 { gap: var(--sp-5); } + .flex { display: flex; } .flex-1 { flex: 1; } .flex-wrap { flex-wrap: wrap; } @@ -296,252 +574,671 @@ label { display: block; margin-bottom: 6px; font-size: 0.88rem; font-weight: 600 .justify-center { justify-content: center; } .justify-between { justify-content: space-between; } .text-center { text-align: center; } -.text-sm { font-size: 0.85rem; } -.text-muted { color: var(--text-dim); } +.text-sm { font-size: 0.875rem; } +.text-muted { color: var(--text-secondary); } .font-bold { font-weight: 700; } +/* Spacing helpers */ +.mb-2 { margin-bottom: var(--sp-2); } +.mb-3 { margin-bottom: var(--sp-3); } +.mb-4 { margin-bottom: var(--sp-4); } +.mb-5 { margin-bottom: var(--sp-5); } +.mt-2 { margin-top: var(--sp-2); } +.mt-3 { margin-top: var(--sp-3); } +.mt-4 { margin-top: var(--sp-4); } +.mt-5 { margin-top: var(--sp-5); } + /* ════════════════════════════════ STAT CARDS ════════════════════════════════ */ .stat-card { - background: rgba(255,255,255,0.04); padding: 18px; - border-radius: 14px; text-align: center; border: 1px solid var(--border-glass); + background: var(--glass-2); + backdrop-filter: blur(16px); + -webkit-backdrop-filter: blur(16px); + padding: clamp(14px, 3vw, 20px); + border-radius: var(--r-lg); + text-align: center; + border: 1px solid var(--glass-border); + box-shadow: var(--glass-shadow-sm); + position: relative; + overflow: hidden; + transition: transform var(--t-normal), box-shadow var(--t-normal); +} +.stat-card::before { + content: ''; + position: absolute; + top: 0; left: 20%; right: 20%; + height: 1px; + background: linear-gradient(90deg, transparent, rgba(255,255,255,0.18), transparent); +} +.stat-card:hover { + transform: translateY(-2px); + box-shadow: var(--glass-shadow); +} + +.stat-num { + font-family: var(--font-display); + font-size: clamp(1.6rem, 4vw, 2.2rem); + font-weight: 700; + display: block; + line-height: 1.1; + color: var(--platinum); +} +.stat-label { + color: var(--text-secondary); + font-size: clamp(0.75rem, 1.5vw, 0.85rem); + margin-top: 6px; + display: block; } -.stat-num { font-family: 'Kanit'; font-size: 2rem; font-weight: 700; display: block; line-height: 1.1; } -.stat-label { color: var(--text-dim); font-size: 0.82rem; margin-top: 6px; display: block; } /* ════════════════════════════════ - TABLES + TABLES — Glass style ════════════════════════════════ */ .tbl-wrap { - background: #fff; - border-radius: 15px; + background: var(--glass-2); + backdrop-filter: blur(16px); + -webkit-backdrop-filter: blur(16px); + border-radius: var(--r-lg); overflow: hidden; - border: 1px solid #e2e8f0; + border: 1px solid var(--glass-border); + box-shadow: var(--glass-shadow); } +/* Scrollable on small screens */ +.tbl-scroll { overflow-x: auto; -webkit-overflow-scrolling: touch; } +.tbl-scroll table { min-width: 600px; } + table { width: 100%; border-collapse: collapse; } -thead tr { background: var(--matisse) !important; } -th { color: var(--pure-white) !important; padding: 18px !important; text-align: left; } + +thead tr { + background: linear-gradient(90deg, + rgba(61, 106, 150, 0.75) 0%, + rgba(124, 107, 160, 0.70) 100%) !important; +} +th { + color: rgba(255, 255, 255, 0.95) !important; + padding: clamp(12px, 2vw, 18px) clamp(10px, 2vw, 16px) !important; + text-align: left; + font-size: 0.875rem; + font-weight: 600; + letter-spacing: 0.03em; + white-space: nowrap; +} +thead tr::after { + display: block; + content: ''; + height: 1px; + background: rgba(255,255,255,0.12); +} td { - padding: 13px 15px; - /* แก้: ใช้สีตามบริบท ไม่บังคับ text-main ที่ทำให้อ่านยากใน .card (พื้นขาว) */ - color: #1e293b; - border-bottom: 1px solid rgba(0,0,0,0.06); vertical-align: middle; + padding: clamp(10px, 2vw, 14px) clamp(10px, 2vw, 16px); + color: var(--text-primary); + border-bottom: 1px solid rgba(255, 255, 255, 0.05); + vertical-align: middle; + font-size: 0.9375rem; } tbody tr:last-child td { border-bottom: none; } -tbody tr:hover td { background: rgba(0,0,0,0.02); } +tbody tr:hover td { background: rgba(255,255,255,0.04); } -.row-มา { background: rgba(16,185,129,0.1) !important; border-left: 3px solid var(--green); } -.row-ขาด { background: rgba(239,68,68,0.1) !important; border-left: 3px solid var(--red); } -.row-ลา { background: rgba(160,160,192,0.1) !important; border-left: 3px solid var(--silver-mist); } -.row-สาย { background: rgba(245,158,11,0.1) !important; border-left: 3px solid var(--amber); } -.row-not-sent { background: rgba(239,68,68,0.06) !important; } +/* Light table variant (inside .card-light) */ +.card-light .tbl-wrap { + background: rgba(255, 255, 255, 0.70); + border: 1px solid rgba(200, 200, 220, 0.40); + backdrop-filter: blur(8px); +} +.card-light td { color: #1e2040; border-bottom: 1px solid rgba(0,0,0,0.06); } +.card-light tbody tr:hover td { background: rgba(0,0,0,0.025); } + +/* Row states */ +.row-มา { background: rgba(34, 197, 94, 0.08) !important; border-left: 3px solid var(--green) !important; } +.row-ขาด { background: rgba(248, 113, 113, 0.09) !important; border-left: 3px solid var(--red) !important; } +.row-ลา { background: rgba(168, 168, 200, 0.09) !important; border-left: 3px solid var(--silver-mist) !important; } +.row-สาย { background: rgba(251, 191, 36, 0.09) !important; border-left: 3px solid var(--amber) !important; } /* ════════════════════════════════ BADGES ════════════════════════════════ */ .badge { - padding: 5px 12px; border-radius: 20px; font-size: 0.8rem; font-weight: 600; - display: inline-block; min-width: 80px; text-align: center; + display: inline-flex; + align-items: center; + justify-content: center; + padding: 4px 12px; + border-radius: var(--r-full); + font-size: 0.8rem; + font-weight: 600; + min-width: 72px; + backdrop-filter: blur(4px); + border: 1px solid transparent; +} +.badge-green { + background: var(--green-dim); + color: #4ade80; + border-color: rgba(34, 197, 94, 0.25); +} +.badge-red { + background: var(--red-dim); + color: #fca5a5; + border-color: rgba(248, 113, 113, 0.25); +} +.badge-blue { + background: var(--blue-dim); + color: #93c5fd; + border-color: rgba(96, 165, 250, 0.25); +} +.badge-amber { + background: var(--amber-dim); + color: #fcd34d; + border-color: rgba(251, 191, 36, 0.25); +} +.badge-purple { + background: var(--purple-dim); + color: #d8b4fe; + border-color: rgba(192, 132, 252, 0.25); } -.badge-green { background: rgba(16,185,129,0.15); color: #065f46; border: 1px solid rgba(16,185,129,0.3); } -.badge-red { background: rgba(239,68,68,0.15); color: #991b1b; border: 1px solid rgba(239,68,68,0.3); } -.badge-blue { background: rgba(160,160,192,0.15); color: #3d4060; border: 1px solid rgba(160,160,192,0.3); } -.badge-amber { background: rgba(245,158,11,0.15); color: #92400e; border: 1px solid rgba(245,158,11,0.3); } -.badge-purple { background: rgba(168,85,247,0.15); color: #6b21a8; border: 1px solid rgba(168,85,247,0.3); } /* ════════════════════════════════ - TOGGLE + TOGGLE / ATTENDANCE BUTTONS ════════════════════════════════ */ .tog { - padding: 7px 16px; border-radius: 8px; border: none; cursor: pointer; - font-family: 'Sarabun'; font-weight: 700; font-size: 0.88rem; transition: all 0.2s; + padding: 6px 14px; + border-radius: var(--r-sm); + border: 1px solid transparent; + cursor: pointer; + font-family: var(--font-body); + font-weight: 700; + font-size: 0.8125rem; + transition: all var(--t-fast); + backdrop-filter: blur(4px); + min-height: 36px; +} +.tog.checked { + background: var(--green-dim); + color: #4ade80; + border-color: rgba(34, 197, 94, 0.30); +} +.tog.waiting { + background: var(--amber-dim); + color: #fcd34d; + border-color: rgba(251, 191, 36, 0.30); } -.tog.checked { background: rgba(16,185,129,0.2); color: #065f46; border: 1px solid rgba(16,185,129,0.4); } -.tog.waiting { background: rgba(245,158,11,0.2); color: #92400e; border: 1px solid rgba(245,158,11,0.4); } -.tog.not-sent { background: rgba(239,68,68,0.12); color: #991b1b; border: 1px solid rgba(239,68,68,0.3); } -.tog:hover { transform: scale(1.05); } +.tog.not-sent { + background: var(--red-dim); + color: #fca5a5; + border-color: rgba(248, 113, 113, 0.25); +} +.tog:hover { transform: scale(1.06); } +.tog:active { transform: scale(0.97); } -.score-in { width: 80px !important; text-align: center; font-weight: 700; font-size: 1rem; } +/* Score input */ +.score-in { + width: 72px !important; + text-align: center; + font-weight: 700; + font-size: 1rem; + padding: 6px 8px !important; +} -/* ════════════════════════════════ - ATTENDANCE SELECT - ════════════════════════════════ */ +/* Attendance select */ .att-select { - min-width: 80px; padding: 6px 10px; border-radius: 8px; - font-weight: 700; font-family: 'Sarabun'; cursor: pointer; + min-width: 80px; + padding: 6px 10px; + border-radius: var(--r-sm); + font-weight: 700; + font-family: var(--font-body); + font-size: 0.875rem; + cursor: pointer; + border: none; + backdrop-filter: blur(4px); } -.select-มา { background: #dcfce7; color: #166534; border: none; } -.select-ขาด { background: #fee2e2; color: #991b1b; border: none; } -.select-ลา { background: #e8eaf6; color: #3d4060; border: none; } -.select-สาย { background: #fef3c7; color: #92400e; border: none; } +.select-มา { background: rgba(34, 197, 94, 0.18); color: #4ade80; } +.select-ขาด { background: rgba(248, 113, 113, 0.18); color: #fca5a5; } +.select-ลา { background: rgba(168, 168, 200, 0.18); color: #b8b8e8; } +.select-สาย { background: rgba(251, 191, 36, 0.18); color: #fcd34d; } /* ════════════════════════════════ TAB BAR ════════════════════════════════ */ .tab-bar { - display: flex; gap: 6px; margin-bottom: 20px; - background: rgba(255,255,255,0.04); padding: 6px; border-radius: 14px; - border: 1px solid var(--border-glass); flex-wrap: wrap; + display: flex; + gap: 4px; + margin-bottom: clamp(14px, 3vw, 22px); + background: rgba(255, 255, 255, 0.05); + padding: 5px; + border-radius: var(--r-md); + border: 1px solid var(--glass-border); + backdrop-filter: blur(8px); + flex-wrap: wrap; } .tab-btn { - padding: 9px 18px; border-radius: 10px; border: none; - background: transparent; color: var(--text-dim); - cursor: pointer; font-family: 'Sarabun'; font-weight: 600; - font-size: 0.9rem; transition: all 0.2s; + padding: 8px clamp(12px, 2.5vw, 18px); + border-radius: var(--r-sm); + border: none; + background: transparent; + color: var(--text-secondary); + cursor: pointer; + font-family: var(--font-body); + font-weight: 600; + font-size: clamp(0.8rem, 1.8vw, 0.9rem); + transition: all var(--t-normal); + white-space: nowrap; + min-height: 38px; +} +.tab-btn:hover { + background: var(--glass-2); + color: var(--text-primary); +} +.tab-btn.active { + background: linear-gradient(135deg, var(--matisse) 0%, var(--princely) 100%); + color: #fff; + box-shadow: 0 4px 14px rgba(61, 106, 150, 0.35), + inset 0 1px 0 rgba(255,255,255,0.18); } -.tab-btn:hover { background: rgba(255,255,255,0.07); color: #fff; } -.tab-btn.active { background: var(--primary); color: #fff; box-shadow: 0 4px 12px rgba(91,96,128,0.4); } /* ════════════════════════════════ - SCAN BAR / SWITCH + SWITCH / TOGGLE ════════════════════════════════ */ -.scan-bar { - background: rgba(16,185,129,0.08); border: 1px solid rgba(16,185,129,0.25); - border-radius: 12px; padding: 12px 16px; - display: flex; align-items: center; gap: 12px; flex-wrap: wrap; +.sw { + position: relative; + display: inline-block; + width: 46px; + height: 26px; + flex-shrink: 0; } -.sw { position: relative; display: inline-block; width: 48px; height: 26px; flex-shrink: 0; } .sw input { opacity: 0; width: 0; height: 0; } .sw-slider { - position: absolute; inset: 0; cursor: pointer; - background: #334155; border-radius: 26px; transition: 0.3s; + position: absolute; + inset: 0; + cursor: pointer; + background: rgba(255,255,255,0.15); + border-radius: 26px; + transition: all var(--t-normal); + border: 1px solid var(--glass-border); } .sw-slider::before { - content: ''; position: absolute; - height: 20px; width: 20px; left: 3px; bottom: 3px; - background: #fff; border-radius: 50%; transition: 0.3s; + content: ''; + position: absolute; + height: 20px; + width: 20px; + left: 2px; + bottom: 2px; + background: #fff; + border-radius: 50%; + transition: transform var(--t-normal), box-shadow var(--t-normal); + box-shadow: 0 2px 6px rgba(0,0,0,0.25); +} +.sw input:checked + .sw-slider { + background: linear-gradient(135deg, #15803d, var(--green)); + border-color: rgba(34, 197, 94, 0.30); + box-shadow: 0 0 12px rgba(34, 197, 94, 0.25); +} +.sw input:checked + .sw-slider::before { transform: translateX(20px); } + +/* Scan bar */ +.scan-bar { + background: rgba(34, 197, 94, 0.07); + border: 1px solid rgba(34, 197, 94, 0.20); + border-radius: var(--r-md); + padding: 12px 16px; + display: flex; + align-items: center; + gap: 12px; + flex-wrap: wrap; } -.sw input:checked + .sw-slider { background: var(--green); } -.sw input:checked + .sw-slider::before { transform: translateX(22px); } /* ════════════════════════════════ LOADING / SPINNER ════════════════════════════════ */ .loading { - display: flex; align-items: center; justify-content: center; - gap: 10px; padding: 28px; color: var(--text-dim); font-size: 0.95rem; + display: flex; + align-items: center; + justify-content: center; + gap: 10px; + padding: clamp(20px, 4vw, 32px); + color: var(--text-secondary); + font-size: 0.9375rem; } .spinner { - width: 20px; height: 20px; border-radius: 50%; - border: 3px solid rgba(160,160,192,0.2); border-top-color: var(--silver-mist); - animation: spin 0.8s linear infinite; + width: 22px; height: 22px; + border-radius: 50%; + border: 2.5px solid rgba(168, 168, 200, 0.18); + border-top-color: var(--silver-mist); + animation: spin 0.75s linear infinite; + flex-shrink: 0; } @keyframes spin { to { transform: rotate(360deg); } } /* ════════════════════════════════ EMPTY STATE ════════════════════════════════ */ -.empty { text-align: center; padding: 50px 20px; } -.empty-ico { font-size: 3rem; margin-bottom: 12px; } -.empty-title { font-family: 'Kanit'; font-size: 1.2rem; color: var(--text-dim); } +.empty { + text-align: center; + padding: clamp(32px, 6vw, 60px) 20px; +} +.empty-ico { font-size: clamp(2rem, 6vw, 3.5rem); margin-bottom: 12px; } +.empty-title { + font-family: var(--font-display); + font-size: clamp(1rem, 2.5vw, 1.25rem); + color: var(--text-secondary); +} /* ════════════════════════════════ - MODALS + MODALS — Glass panel ════════════════════════════════ */ .modal-overlay { - display: none; position: fixed; inset: 0; z-index: 1000; - background: rgba(0,0,0,0.7); backdrop-filter: blur(8px); - align-items: center; justify-content: center; + display: none; + position: fixed; + inset: 0; + z-index: 1000; + background: rgba(0, 0, 0, 0.60); + backdrop-filter: blur(12px) saturate(1.4); + -webkit-backdrop-filter: blur(12px) saturate(1.4); + align-items: center; + justify-content: center; + padding: clamp(12px, 3vw, 20px); } .modal-overlay.open { display: flex; } + .modal { - background: #23233a; color: #fff; width: 90%; max-width: 520px; - padding: 28px; border-radius: 20px; - border: 1px solid rgba(212,212,232,0.1); - box-shadow: 0 25px 50px -12px rgba(0,0,0,0.6); - max-height: 90vh; overflow-y: auto; + background: rgba(26, 26, 46, 0.85); + backdrop-filter: blur(30px) saturate(1.8); + -webkit-backdrop-filter: blur(30px) saturate(1.8); + color: var(--text-primary); + width: 100%; + max-width: 520px; + padding: clamp(22px, 4vw, 32px); + border-radius: var(--r-xl); + border: 1px solid var(--glass-border-2); + box-shadow: var(--glass-shadow-lg); + max-height: 90dvh; + overflow-y: auto; + position: relative; +} +.modal::before { + content: ''; + position: absolute; + top: 0; left: 12%; right: 12%; + height: 1px; + background: linear-gradient(90deg, transparent, rgba(255,255,255,0.28), transparent); + border-radius: var(--r-full); } + .modal-hd { - font-family: 'Kanit'; font-size: 1.25rem; margin-bottom: 22px; - color: var(--platinum); display: flex; align-items: center; gap: 8px; + font-family: var(--font-display); + font-size: clamp(1.05rem, 3vw, 1.3rem); + font-weight: 600; + margin-bottom: clamp(18px, 3vw, 24px); + color: var(--platinum); + display: flex; + align-items: center; + gap: 10px; } .modal-close { - margin-left: auto; background: transparent; border: none; - color: var(--text-dim); cursor: pointer; font-size: 1.1rem; line-height: 1; + margin-left: auto; + background: var(--glass-1); + border: 1px solid var(--glass-border); + color: var(--text-secondary); + cursor: pointer; + width: 30px; height: 30px; + border-radius: var(--r-full); + display: flex; align-items: center; justify-content: center; + font-size: 1rem; + transition: all var(--t-fast); +} +.modal-close:hover { + background: var(--glass-3); + color: var(--text-primary); } -.modal-close:hover { color: #fff; } /* ════════════════════════════════ SCORE DISPLAY ════════════════════════════════ */ -.score-big { font-size: 1.8rem; font-weight: 700; color: var(--platinum); } -.score-sep { color: var(--text-dim); margin: 0 2px; } -.score-max { font-size: 1.3rem; color: var(--text-dim); } +.score-big { font-size: clamp(1.4rem, 3.5vw, 1.9rem); font-weight: 700; color: var(--platinum); } +.score-sep { color: var(--text-muted); margin: 0 3px; } +.score-max { font-size: clamp(1rem, 2.5vw, 1.35rem); color: var(--text-secondary); } /* ════════════════════════════════ ATTENDANCE GRID ════════════════════════════════ */ .att-side-label { - background: rgba(28,28,46,0.92) !important; - font-family: 'Kanit'; font-weight: 600; + background: rgba(15, 15, 30, 0.85) !important; + font-family: var(--font-display); + font-weight: 600; color: var(--platinum) !important; - white-space: nowrap; min-width: 180px; + white-space: nowrap; + min-width: 160px; } -.att-summary-col { background: rgba(91,96,128,0.12) !important; font-weight: 700; } +.att-summary-col { background: rgba(91, 96, 128, 0.12) !important; font-weight: 700; } /* ════════════════════════════════ TOASTS ════════════════════════════════ */ #toasts { - position: fixed; bottom: 24px; right: 20px; z-index: 9999; - display: flex; flex-direction: column; gap: 8px; + position: fixed; + bottom: clamp(16px, 4vw, 24px); + right: clamp(12px, 3vw, 20px); + z-index: 9999; + display: flex; + flex-direction: column; + gap: 8px; + pointer-events: none; + max-width: min(340px, calc(100vw - 24px)); } .toast { - display: flex; align-items: center; gap: 10px; - padding: 12px 18px; border-radius: 12px; font-size: 0.9rem; - box-shadow: 0 8px 24px rgba(0,0,0,0.5); animation: slideIn 0.3s ease; - max-width: 340px; font-family: 'Sarabun'; + display: flex; + align-items: flex-start; + gap: 10px; + padding: 12px 16px; + border-radius: var(--r-md); + font-size: 0.875rem; + box-shadow: 0 8px 28px rgba(0,0,0,0.45), + inset 0 1px 0 rgba(255,255,255,0.10); + animation: toastIn 0.35s cubic-bezier(0.34, 1.56, 0.64, 1); + font-family: var(--font-body); + pointer-events: all; + backdrop-filter: blur(16px); + -webkit-backdrop-filter: blur(16px); + border: 1px solid transparent; + line-height: 1.5; +} +@keyframes toastIn { + from { transform: translateX(110%); opacity: 0; } + to { transform: translateX(0); opacity: 1; } +} +.toast.success { + background: rgba(5, 78, 50, 0.90); + border-color: rgba(34, 197, 94, 0.35); + color: #bbf7d0; +} +.toast.error { + background: rgba(90, 15, 15, 0.92); + border-color: rgba(248, 113, 113, 0.35); + color: #fecaca; +} +.toast.info { + background: rgba(15, 30, 55, 0.90); + border-color: rgba(96, 165, 250, 0.30); + color: #bfdbfe; +} +.toast.warn { + background: rgba(80, 40, 5, 0.92); + border-color: rgba(251, 191, 36, 0.35); + color: #fef08a; } -@keyframes slideIn { from { transform: translateX(120%); opacity: 0; } to { transform: translateX(0); opacity: 1; } } -.toast.success { background: #065f46; border: 1px solid #10b981; color: #d1fae5; } -.toast.error { background: #7f1d1d; border: 1px solid #ef4444; color: #fee2e2; } -.toast.info { background: #1e2a3f; border: 1px solid #5b6080; color: #cbd5e1; } -.toast.warn { background: #78350f; border: 1px solid #f59e0b; color: #fef3c7; } /* ════════════════════════════════ - DASHBOARD GRID & PROGRESS + DASHBOARD ════════════════════════════════ */ -.dashboard-grid { display: grid; grid-template-columns: 1fr 1.2fr; gap: 20px; margin-bottom: 24px; } -.prog-container { margin-bottom: 15px; } -.prog-label { display: flex; justify-content: space-between; font-size: 0.85rem; margin-bottom: 5px; color: var(--text-dim); } -.prog-bar-bg { width: 100%; height: 10px; background: rgba(255,255,255,0.07); border-radius: 20px; overflow: hidden; } -.prog-bar-fill { height: 100%; border-radius: 20px; transition: width 0.8s ease-out; } +.dashboard-grid { + display: grid; + grid-template-columns: 1fr 1.2fr; + gap: clamp(14px, 3vw, 22px); + margin-bottom: clamp(18px, 3vw, 26px); +} + +.prog-container { margin-bottom: 14px; } +.prog-label { + display: flex; + justify-content: space-between; + font-size: 0.8125rem; + margin-bottom: 6px; + color: var(--text-secondary); +} +.prog-bar-bg { + width: 100%; + height: 8px; + background: rgba(255, 255, 255, 0.08); + border-radius: var(--r-full); + overflow: hidden; +} +.prog-bar-fill { + height: 100%; + border-radius: var(--r-full); + transition: width 1s cubic-bezier(0.4, 0, 0.2, 1); + box-shadow: 0 0 8px rgba(255,255,255,0.15); +} +/* Subject group row */ .tr-subject-group td { - background: rgba(91,96,128,0.15) !important; - font-family: 'Kanit'; font-weight: 600; + background: rgba(61, 106, 150, 0.18) !important; + font-family: var(--font-display); + font-weight: 600; color: var(--platinum) !important; - padding: 8px 15px !important; font-size: 0.9rem; - border-bottom: 1px solid rgba(212,212,232,0.1) !important; + padding: 8px 16px !important; + font-size: 0.875rem; + border-bottom: 1px solid rgba(255, 255, 255, 0.06) !important; } /* ════════════════════════════════ SYNC OVERLAY ════════════════════════════════ */ #sync-overlay { - display: none; position: fixed; inset: 0; z-index: 2000; - background: rgba(0,0,0,0.65); backdrop-filter: blur(6px); - align-items: center; justify-content: center; flex-direction: column; gap: 16px; + display: none; + position: fixed; + inset: 0; + z-index: 2000; + background: rgba(0, 0, 0, 0.70); + backdrop-filter: blur(10px); + -webkit-backdrop-filter: blur(10px); + align-items: center; + justify-content: center; + flex-direction: column; + gap: 18px; } #sync-overlay.open { display: flex; } -#sync-progress-text { font-family: 'Kanit'; font-size: 1.1rem; color: var(--platinum); } -#sync-progress-bar-wrap { width: 300px; height: 10px; background: rgba(255,255,255,0.1); border-radius: 20px; overflow: hidden; } -#sync-progress-bar { height: 100%; width: 0%; background: var(--silver-mist); border-radius: 20px; transition: width 0.3s; } +#sync-progress-text { font-family: var(--font-display); font-size: 1.05rem; color: var(--platinum); } +#sync-progress-bar-wrap { + width: clamp(240px, 40vw, 320px); + height: 8px; + background: rgba(255,255,255,0.10); + border-radius: var(--r-full); + overflow: hidden; +} +#sync-progress-bar { + height: 100%; + width: 0%; + background: linear-gradient(90deg, var(--matisse), var(--princely)); + border-radius: var(--r-full); + transition: width 0.35s ease; + box-shadow: 0 0 10px rgba(61, 106, 150, 0.5); +} /* ════════════════════════════════ - RESPONSIVE + SCROLLBAR — subtle styling ════════════════════════════════ */ -@media (max-width: 768px) { - header { height: auto; padding: 15px; } - .header-inner { flex-direction: column; gap: 15px; } - .dna-container { width: 120px; left: 2%; } +::-webkit-scrollbar { width: 6px; height: 6px; } +::-webkit-scrollbar-track { background: transparent; } +::-webkit-scrollbar-thumb { + background: rgba(168, 168, 200, 0.25); + border-radius: 3px; +} +::-webkit-scrollbar-thumb:hover { background: rgba(168, 168, 200, 0.45); } + +/* ════════════════════════════════ + RESPONSIVE BREAKPOINTS + ════════════════════════════════ */ + +/* Tablet — ≤ 900px */ +@media (max-width: 900px) { .dashboard-grid { grid-template-columns: 1fr; } + .grid-4 { grid-template-columns: repeat(2, minmax(0, 1fr)); } + .grid-3 { grid-template-columns: repeat(2, minmax(0, 1fr)); } } -@media (max-width: 480px) { - .grid-4, .grid-3 { grid-template-columns: 1fr; } - .grid-2 { grid-template-columns: 1fr; } +/* Mobile — ≤ 640px */ +@media (max-width: 640px) { + :root { --header-h: auto; } + + header { + height: auto; + padding: 10px var(--sp-4) 12px; + } + .header-inner { + flex-direction: column; + align-items: flex-start; + gap: 10px; + height: auto; + } + .header-inner nav { + width: 100%; + gap: 6px; + } + .nav-btn { + padding: 7px 12px; + font-size: 0.8125rem; + flex: 1; + justify-content: center; + text-align: center; + } + + .grid-4, .grid-3 { grid-template-columns: repeat(2, minmax(0, 1fr)); } + .grid-2 { grid-template-columns: 1fr; } + + .card { padding: 18px; border-radius: var(--r-lg); } + + /* Prevent iOS font zoom on inputs */ + input[type="text"], + input[type="number"], + input[type="date"], + input[type="password"], + select, textarea { + font-size: 16px; + } + + /* Tables scroll horizontally */ + .tbl-scroll { overflow-x: auto; } + + .tab-btn { + padding: 8px 12px; + font-size: 0.8rem; + } + + .search-row { flex-direction: column; } + + .modal { padding: 20px 18px; border-radius: var(--r-lg); } +} + +/* Very small — ≤ 380px */ +@media (max-width: 380px) { + .grid-4, .grid-3, .grid-2 { grid-template-columns: 1fr; } + .nav-btn { font-size: 0.75rem; padding: 6px 8px; } + .stat-num { font-size: 1.4rem; } +} + +/* Touch: bigger tap targets */ +@media (hover: none) and (pointer: coarse) { + .btn { min-height: 48px; } + .tab-btn { min-height: 44px; } + .tog { min-height: 42px; } + .nav-btn { min-height: 40px; } +} + +/* ════════════════════════════════ + REDUCED MOTION + ════════════════════════════════ */ +@media (prefers-reduced-motion: reduce) { + *, *::before, *::after { + animation-duration: 0.01ms !important; + transition-duration: 0.01ms !important; + } } From d912d164142c0035dc9dec31dad8e4e43733a1a6 Mon Sep 17 00:00:00 2001 From: ARNUT KLANGPRAPUN <136555438+kpp-arnut@users.noreply.github.com> Date: Thu, 7 May 2026 21:36:39 +0700 Subject: [PATCH 32/46] Add canvas for DNA visualization --- index.html | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/index.html b/index.html index 0a7e54f..7468d36 100644 --- a/index.html +++ b/index.html @@ -20,7 +20,9 @@
-
+
+ +
From 508c50a563f9f3aed36584d310b59dcb04312dc5 Mon Sep 17 00:00:00 2001 From: ARNUT KLANGPRAPUN <136555438+kpp-arnut@users.noreply.github.com> Date: Thu, 7 May 2026 21:41:49 +0700 Subject: [PATCH 33/46] Add DNA animation rendering to dna.js --- dna.js | 210 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 210 insertions(+) create mode 100644 dna.js diff --git a/dna.js b/dna.js new file mode 100644 index 0000000..3f12b72 --- /dev/null +++ b/dna.js @@ -0,0 +1,210 @@ +(function () { + const canvas = document.getElementById('dna-canvas'); + if (!canvas) return; + + const wrap = canvas.parentElement; + const ctx = canvas.getContext('2d'); + + let animationId = null; + let t = 0; + let isRunning = false; + + function resizeCanvas() { + const rect = wrap.getBoundingClientRect(); + const dpr = window.devicePixelRatio || 1; + + canvas.width = Math.max(1, Math.floor(rect.width * dpr)); + canvas.height = Math.max(1, Math.floor(rect.height * dpr)); + + canvas.style.width = rect.width + 'px'; + canvas.style.height = rect.height + 'px'; + + ctx.setTransform(1, 0, 0, 1, 0, 0); + ctx.scale(dpr, dpr); + } + + function render() { + const rect = wrap.getBoundingClientRect(); + const W = rect.width; + const H = rect.height; + const cx = W / 2; + + ctx.clearRect(0, 0, W, H); + + const DOTS = Math.max(16, Math.floor(H / 42)); + const SPACING = H / Math.max(1, DOTS - 1); + const AMPLITUDE = Math.min(W * 0.34, 38); + const PERIOD = H * 0.65; + + const dots = []; + + for (let i = 0; i < DOTS; i++) { + const y = i * SPACING; + const angle = (y / PERIOD) * Math.PI * 2 + t; + + dots.push({ + y, + x1: cx + Math.cos(angle) * AMPLITUDE, + z1: Math.sin(angle), + x2: cx + Math.cos(angle + Math.PI) * AMPLITUDE, + z2: Math.sin(angle + Math.PI) + }); + } + + for (const { y, x1, x2, z1, z2 } of dots) { + if (Math.abs(z1 - z2) < 0.4) { + const a = 0.08 + (1 - Math.abs(z1 - z2) / 0.4) * 0.12; + ctx.beginPath(); + ctx.moveTo(x1, y); + ctx.lineTo(x2, y); + ctx.strokeStyle = `rgba(180,180,210,${a})`; + ctx.lineWidth = 1; + ctx.stroke(); + } + } + + const all = []; + for (const { y, x1, x2, z1, z2 } of dots) { + all.push({ x: x1, y, z: z1, strand: 1 }); + all.push({ x: x2, y, z: z2, strand: 2 }); + } + + all.sort((a, b) => a.z - b.z); + + for (const d of all) { + const dep = (d.z + 1) / 2; + const radius = 4 + dep * 7; + + ctx.beginPath(); + ctx.arc(d.x, d.y, radius, 0, Math.PI * 2); + + ctx.fillStyle = d.strand === 1 + ? `rgba(224,224,240,${0.2 + dep * 0.75})` + : `rgba(255,255,255,${0.12 + dep * 0.5})`; + + ctx.shadowColor = d.strand === 1 + ? 'rgba(224,224,240,0.55)' + : 'rgba(255,255,255,0.35)'; + ctx.shadowBlur = dep * 12; + + ctx.fill(); + ctx.shadowBlur = 0; + } + + t += 0.018; + animationId = requestAnimationFrame(render); + } + + function start() { + if (isRunning) return; + isRunning = true; + resizeCanvas(); + render(); + } + + function stop() { + if (!isRunning) return; + cancelAnimationFrame(animationId); + animationId = null; + isRunning = false; + } + + const mediaReducedMotion = window.matchMedia('(prefers-reduced-motion: reduce)'); + + function handleMotionPreference() { + if (mediaReducedMotion.matches) { + stop(); + resizeCanvas(); + renderStaticFrame(); + } else { + start(); + } + } + + function renderStaticFrame() { + const rect = wrap.getBoundingClientRect(); + const W = rect.width; + const H = rect.height; + const cx = W / 2; + + ctx.clearRect(0, 0, W, H); + + const DOTS = Math.max(16, Math.floor(H / 42)); + const SPACING = H / Math.max(1, DOTS - 1); + const AMPLITUDE = Math.min(W * 0.34, 38); + const PERIOD = H * 0.65; + + const dots = []; + + for (let i = 0; i < DOTS; i++) { + const y = i * SPACING; + const angle = (y / PERIOD) * Math.PI * 2; + + dots.push({ + y, + x1: cx + Math.cos(angle) * AMPLITUDE, + z1: Math.sin(angle), + x2: cx + Math.cos(angle + Math.PI) * AMPLITUDE, + z2: Math.sin(angle + Math.PI) + }); + } + + for (const { y, x1, x2, z1, z2 } of dots) { + if (Math.abs(z1 - z2) < 0.4) { + const a = 0.08 + (1 - Math.abs(z1 - z2) / 0.4) * 0.12; + ctx.beginPath(); + ctx.moveTo(x1, y); + ctx.lineTo(x2, y); + ctx.strokeStyle = `rgba(180,180,210,${a})`; + ctx.lineWidth = 1; + ctx.stroke(); + } + } + + const all = []; + for (const { y, x1, x2, z1, z2 } of dots) { + all.push({ x: x1, y, z: z1, strand: 1 }); + all.push({ x: x2, y, z: z2, strand: 2 }); + } + + all.sort((a, b) => a.z - b.z); + + for (const d of all) { + const dep = (d.z + 1) / 2; + const radius = 4 + dep * 7; + + ctx.beginPath(); + ctx.arc(d.x, d.y, radius, 0, Math.PI * 2); + + ctx.fillStyle = d.strand === 1 + ? `rgba(224,224,240,${0.2 + dep * 0.75})` + : `rgba(255,255,255,${0.12 + dep * 0.5})`; + + ctx.fill(); + } + } + + let resizeTimer; + window.addEventListener('resize', () => { + clearTimeout(resizeTimer); + resizeTimer = setTimeout(() => { + resizeCanvas(); + }, 100); + }); + + document.addEventListener('visibilitychange', () => { + if (document.hidden) { + stop(); + } else if (!mediaReducedMotion.matches) { + start(); + } + }); + + if (typeof mediaReducedMotion.addEventListener === 'function') { + mediaReducedMotion.addEventListener('change', handleMotionPreference); + } else if (typeof mediaReducedMotion.addListener === 'function') { + mediaReducedMotion.addListener(handleMotionPreference); + } + + handleMotionPreference(); +})(); From 124c2bea477010a35a38a3ca9bd6ad2f4875f7d5 Mon Sep 17 00:00:00 2001 From: ARNUT KLANGPRAPUN <136555438+kpp-arnut@users.noreply.github.com> Date: Thu, 7 May 2026 21:43:08 +0700 Subject: [PATCH 34/46] Clean up style.css and enhance responsiveness Removed header comments and adjusted styles for responsive design. --- style.css | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/style.css b/style.css index 9af769f..1303c4b 100644 --- a/style.css +++ b/style.css @@ -1,9 +1,3 @@ -/* ══════════════════════════════════════════════════════════════ - LIQUID GLASS UI — iOS-inspired Design System - Responsive: Mobile-first, scales cleanly to desktop - Font stack: Sarabun (Thai) + Kanit (headings) - ══════════════════════════════════════════════════════════════ */ - @import url('https://fonts.googleapis.com/css2?family=Kanit:wght@400;600;700&family=Sarabun:wght@300;400;600;700&display=swap'); /* ════════════════════════════════ @@ -164,12 +158,23 @@ body { height: 100%; opacity: 0.45; pointer-events: none; + z-index: 0; } + .dna-canvas-wrap canvas { + display: block; width: 100%; height: 100%; } +@media (max-width: 640px) { + .dna-canvas-wrap { + width: 72px; + left: 8px; + opacity: 0.28; + } +} + /* ════════════════════════════════ APP SHELL ════════════════════════════════ */ From ea0537b6251aed34b328f17dc28c5edc580d3ebc Mon Sep 17 00:00:00 2001 From: ARNUT KLANGPRAPUN <136555438+kpp-arnut@users.noreply.github.com> Date: Thu, 7 May 2026 21:46:56 +0700 Subject: [PATCH 35/46] Include dna.js script in index.html Added script tag to include dna.js for functionality. --- index.html | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/index.html b/index.html index 7468d36..15e9337 100644 --- a/index.html +++ b/index.html @@ -21,8 +21,8 @@
- -
+ +
@@ -512,5 +512,6 @@

🧬 ตรวจสอบสถานะการส่งงาน

+ From 3fc26602e3c234430b8cb19c8d0ee6b7b5cf0b9a Mon Sep 17 00:00:00 2001 From: ARNUT KLANGPRAPUN <136555438+kpp-arnut@users.noreply.github.com> Date: Thu, 7 May 2026 22:04:56 +0700 Subject: [PATCH 36/46] Refactor styles for improved UI consistency --- style.css | 140 ++++++++++++++++++++++++++++++++++++++++-------------- 1 file changed, 104 insertions(+), 36 deletions(-) diff --git a/style.css b/style.css index 1303c4b..0922b83 100644 --- a/style.css +++ b/style.css @@ -1,3 +1,9 @@ +/* ══════════════════════════════════════════════════════════════ + LIQUID GLASS UI — iOS-inspired Design System + Responsive: Mobile-first, scales cleanly to desktop + Font stack: Sarabun (Thai) + Kanit (headings) + ══════════════════════════════════════════════════════════════ */ + @import url('https://fonts.googleapis.com/css2?family=Kanit:wght@400;600;700&family=Sarabun:wght@300;400;600;700&display=swap'); /* ════════════════════════════════ @@ -158,23 +164,12 @@ body { height: 100%; opacity: 0.45; pointer-events: none; - z-index: 0; } - .dna-canvas-wrap canvas { - display: block; width: 100%; height: 100%; } -@media (max-width: 640px) { - .dna-canvas-wrap { - width: 72px; - left: 8px; - opacity: 0.28; - } -} - /* ════════════════════════════════ APP SHELL ════════════════════════════════ */ @@ -420,45 +415,49 @@ textarea { padding: 11px 14px; font-family: var(--font-body); font-size: 0.9375rem; - color: var(--text-primary); - background: rgba(255, 255, 255, 0.07); - border: 1px solid var(--glass-border); + /* ── สีตัวหนังสือต้องชัดบนพื้นเข้มและพื้นขาว ── */ + color: #1a1a2e; + background: rgba(255, 255, 255, 0.92); + border: 1px solid rgba(180, 180, 210, 0.50); border-radius: var(--r-md); outline: none; transition: all var(--t-fast); box-sizing: border-box; - backdrop-filter: blur(8px); - -webkit-backdrop-filter: blur(8px); - /* Fix for iOS auto-zoom: keep font-size ≥ 16px on mobile, - but we manage this via @media below */ + /* backdrop-filter ถูกลบออกเพราะทำให้ select/textarea บนคอมสีซีด */ +} + +/* option ใน select ต้องมีพื้นหลังทึบเสมอ ไม่งั้น Windows/Linux ใช้พื้นขาว */ +select option { + background: #ffffff; + color: #1a1a2e; } input::placeholder, textarea::placeholder { - color: var(--text-muted); + color: #9090aa; } input:hover, select:hover { - border-color: var(--glass-border-2); - background: rgba(255, 255, 255, 0.10); + border-color: rgba(120, 120, 180, 0.70); + background: #ffffff; } input:focus, select:focus, textarea:focus { - border-color: rgba(96, 165, 250, 0.50); - background: rgba(255, 255, 255, 0.12); - box-shadow: 0 0 0 3px rgba(96, 165, 250, 0.15), - inset 0 1px 0 rgba(255,255,255,0.08); + border-color: var(--matisse); + background: #ffffff; + color: #1a1a2e; + box-shadow: 0 0 0 3px rgba(61, 106, 150, 0.18); } -/* Light card inputs */ +/* Light card — same style, inherit from above */ .card-light input, .card-light select, .card-light textarea { - background: rgba(255, 255, 255, 0.80); - border: 1px solid rgba(180, 180, 210, 0.50); + background: #ffffff; + border: 1px solid rgba(180, 180, 210, 0.60); color: #1a1a2e; } .card-light input::placeholder { color: #8888aa; } -.card-light input:focus, .card-light select:focus { +.card-light input:focus, .card-light select:focus, .card-light textarea:focus { border-color: var(--matisse); - background: rgba(255, 255, 255, 0.95); + background: #ffffff; box-shadow: 0 0 0 3px rgba(61, 106, 150, 0.15); } @@ -644,14 +643,26 @@ label { backdrop-filter: blur(16px); -webkit-backdrop-filter: blur(16px); border-radius: var(--r-lg); - overflow: hidden; + /* overflow:hidden ถูกแทนด้วย scroll wrapper ด้านล่าง + เพื่อให้ตารางเลื่อนซ้าย-ขวาได้บนมือถือ */ + overflow-x: auto; + -webkit-overflow-scrolling: touch; border: 1px solid var(--glass-border); box-shadow: var(--glass-shadow); } -/* Scrollable on small screens */ -.tbl-scroll { overflow-x: auto; -webkit-overflow-scrolling: touch; } -.tbl-scroll table { min-width: 600px; } +/* ทุกตารางมี min-width ป้องกันการบีบคอลัมน์ */ +.tbl-wrap table, +.tbl-scroll table { + min-width: 560px; +} + +/* Scrollable wrapper สำหรับกรณีที่ใช้ .tbl-scroll แยกต่างหาก */ +.tbl-scroll { + overflow-x: auto; + -webkit-overflow-scrolling: touch; + border-radius: var(--r-lg); +} table { width: 100%; border-collapse: collapse; } @@ -1159,11 +1170,68 @@ tbody tr:hover td { background: rgba(255,255,255,0.04); } } ::-webkit-scrollbar-thumb:hover { background: rgba(168, 168, 200, 0.45); } +/* ── Scroll hint shadow บนมือถือ (แสดงว่าเลื่อนได้) ── */ +.tbl-wrap { + background-image: + linear-gradient(to right, var(--glass-2), transparent 20px), + linear-gradient(to left, var(--glass-2), transparent 20px); + background-position: left center, right center; + background-repeat: no-repeat; + background-size: 20px 100%, 20px 100%; + background-attachment: local, local; +} + +/* ── นักเรียนใหม่: แถวที่ยังไม่มีข้อมูลงาน (status = pending/missing) ── */ +.row-pending td { + background: rgba(251, 191, 36, 0.05) !important; + color: var(--text-secondary) !important; + font-style: italic; +} +.badge-pending { + background: rgba(251, 191, 36, 0.12); + color: #fbbf24; + border: 1px solid rgba(251, 191, 36, 0.28); + padding: 4px 12px; + border-radius: var(--r-full); + font-size: 0.8rem; + font-weight: 600; +} +/* ยังไม่ส่ง = สีแดงอ่อน */ +.row-not-sent td { + color: var(--text-secondary) !important; +} +.badge-not-sent { + background: var(--red-dim); + color: #fca5a5; + border: 1px solid rgba(248, 113, 113, 0.25); + padding: 4px 12px; + border-radius: var(--r-full); + font-size: 0.8rem; + font-weight: 600; +} + /* ════════════════════════════════ - RESPONSIVE BREAKPOINTS + MODAL textarea fix + (HTML มี inline style อยู่ ต้องใช้ !important เพื่อ override) ════════════════════════════════ */ +.modal textarea, +textarea#na-desc { + color: #1a1a2e !important; + background: rgba(255, 255, 255, 0.92) !important; + border: 1px solid rgba(180, 180, 210, 0.55) !important; + font-family: var(--font-body) !important; + resize: vertical; +} +.modal textarea:focus, +textarea#na-desc:focus { + border-color: var(--matisse) !important; + background: #ffffff !important; + box-shadow: 0 0 0 3px rgba(61, 106, 150, 0.18) !important; +} -/* Tablet — ≤ 900px */ +/* ════════════════════════════════ + RESPONSIVE BREAKPOINTS + ════════════════════════════════ */ @media (max-width: 900px) { .dashboard-grid { grid-template-columns: 1fr; } .grid-4 { grid-template-columns: repeat(2, minmax(0, 1fr)); } From 5be87f328abf75cc25d7a0d310b447ade1c6fc45 Mon Sep 17 00:00:00 2001 From: ARNUT KLANGPRAPUN <136555438+kpp-arnut@users.noreply.github.com> Date: Thu, 7 May 2026 22:11:17 +0700 Subject: [PATCH 37/46] Implement grade row management for students Added function to ensure grade rows for students based on classroom assignments and updated student import process to create grade rows for imported students. --- script.js | 78 +++++++++++++++++++++++++++++++++++++++++-------------- 1 file changed, 59 insertions(+), 19 deletions(-) diff --git a/script.js b/script.js index 5e58b25..1f8ce19 100644 --- a/script.js +++ b/script.js @@ -806,6 +806,40 @@ function prepareAddStudent() { openModal('m-add-st'); } +async function ensureGradeRowsForStudent(studentId, classroom) { + // หางานทั้งหมดในห้องนี้ + const roomAssignments = assignments.filter(a => a.classroom === classroom); + if (!roomAssignments.length) return; + + // ตรวจว่ามี grade row อยู่แล้วไหม (ป้องกันทับของเดิม) + const { data: existingGrades } = await _sb + .from('grades') + .select('assignment_id') + .eq('student_id', studentId) + .in('assignment_id', roomAssignments.map(a => a.id)); + + const existingIds = new Set((existingGrades || []).map(g => g.assignment_id)); + + // สร้างเฉพาะงานที่ยังไม่มี grade row + const newRows = roomAssignments + .filter(a => !existingIds.has(a.id)) + .map(a => ({ + student_id: studentId, + assignment_id: a.id, + score: null, + max_score: a.max_score, + status: 'not_sent' + })); + + if (newRows.length > 0) { + const { error } = await _sb + .from('grades') + .upsert(newRows, { onConflict: 'student_id,assignment_id', ignoreDuplicates: true }); + if (error) console.error('ensureGradeRowsForStudent error:', error); + else console.log(`✅ สร้าง grade rows ${newRows.length} งาน สำหรับนักเรียน ${studentId}`); + } +} + async function saveStudent() { const d = { id: $('ns-id').value.trim(), @@ -818,8 +852,13 @@ async function saveStudent() { if (!d.id || !d.first_name || !d.last_name || !d.classroom) { showToast('กรุณากรอกข้อมูลให้ครบ', 'error'); return; } + try { await gasCall('upsertStudent', d); + + // ── สร้าง grade rows สำหรับงานที่มีอยู่แล้วในห้อง ── + await ensureGradeRowsForStudent(d.id, d.classroom); + closeModal('m-add-st'); showToast('บันทึกสำเร็จ', 'success'); students = await gasCall('getStudents'); @@ -827,7 +866,6 @@ async function saveStudent() { populateDropdowns(); renderStudentTable(); } catch (e) { showToast('ผิดพลาด: ' + e, 'error'); } } - function editStudent(s) { const modalTitle = document.querySelector('#m-add-st .modal-hd'); if (modalTitle) modalTitle.innerHTML = `✏️ แก้ไขข้อมูลนักเรียน `; @@ -862,36 +900,38 @@ async function importFile(input) { const reader = new FileReader(); reader.onload = async e => { try { - const wb = XLSX.read(e.target.result, { type:'binary' }); + const wb = XLSX.read(e.target.result, { type: 'binary' }); const ws = wb.Sheets[wb.SheetNames[0]]; const rows = XLSX.utils.sheet_to_json(ws); const list = rows.map(r => ({ - id: String(r['รหัสนักเรียน']||r['id']||''), - first_name: String(r['ชื่อ']||r['first_name']||''), - last_name: String(r['สกุล']||r['last_name']||''), - classroom: String(r['ชั้น']||r['classroom']||''), - seat_no: parseInt(r['เลขที่']||r['seat_no']||0), - email: String(r['อีเมล']||r['email']||'') + id: String(r['รหัสนักเรียน'] || r['id'] || ''), + first_name: String(r['ชื่อ'] || r['first_name'] || ''), + last_name: String(r['สกุล'] || r['last_name'] || ''), + classroom: String(r['ชั้น'] || r['classroom'] || ''), + seat_no: parseInt(r['เลขที่'] || r['seat_no'] || 0), + email: String(r['อีเมล'] || r['email'] || '') })).filter(s => s.id); + await gasCall('upsertStudents', list); showToast('นำเข้า ' + list.length + ' คนสำเร็จ', 'success'); - students = await gasCall('getStudents'); assignments = await gasCall('getAllAssignments'); + + // รีโหลด assignments ก่อน เพื่อให้ ensureGradeRows ทำงานถูกต้อง + students = await gasCall('getStudents'); + assignments = await gasCall('getAllAssignments'); + + // ── สร้าง grade rows สำหรับทุกคนที่ Import เข้ามา ── + showToast('กำลังตั้งค่างานค้าง...', 'info'); + for (const s of list) { + await ensureGradeRowsForStudent(s.id, s.classroom); + } + populateDropdowns(); renderStudentTable(); + showToast(`✅ ตั้งค่างานค้างสำเร็จ (${list.length} คน)`, 'success'); } catch (e) { showToast('ผิดพลาด: ' + e, 'error'); } }; reader.readAsBinaryString(file); input.value = ''; } -function dlTemplate() { - const ws = XLSX.utils.aoa_to_sheet([ - ['รหัสนักเรียน','ชื่อ','สกุล','ชั้น','เลขที่','อีเมล'], - ['12345','สมชาย','ใจดี','ม.5/1','1','somchai@school.ac.th'] - ]); - const wb = XLSX.utils.book_new(); - XLSX.utils.book_append_sheet(wb, ws, 'นักเรียน'); - XLSX.writeFile(wb, 'template_students.xlsx'); -} - // ─── QR CODE ─────────────────────────────────────────────── function showQR(id, name, cls) { $('qr-wrap').innerHTML = ''; From 344b6ee8ffd6748c80338c75a85fa04080c9ae40 Mon Sep 17 00:00:00 2001 From: ARNUT KLANGPRAPUN <136555438+kpp-arnut@users.noreply.github.com> Date: Thu, 7 May 2026 22:33:29 +0700 Subject: [PATCH 38/46] Remove emoji from status header in index.html --- index.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/index.html b/index.html index 15e9337..2ffa6f5 100644 --- a/index.html +++ b/index.html @@ -56,7 +56,7 @@
-

🧬 ตรวจสอบสถานะการส่งงาน

+

ตรวจสอบสถานะการส่งงาน

ใส่รหัสนักเรียนเพื่อดูคะแนนและสถานะงานทั้งหมด

From a9b7074876cfe5146f767eaeb0a804169c2cd03c Mon Sep 17 00:00:00 2001 From: ARNUT KLANGPRAPUN <136555438+kpp-arnut@users.noreply.github.com> Date: Thu, 7 May 2026 22:39:41 +0700 Subject: [PATCH 39/46] remove redundancy --- script.js | 635 +++++++++++++++++++++--------------------------------- 1 file changed, 245 insertions(+), 390 deletions(-) diff --git a/script.js b/script.js index 1f8ce19..5691e27 100644 --- a/script.js +++ b/script.js @@ -5,6 +5,7 @@ let students = []; let assignments = []; let gradingRows = []; let attendanceRows = []; +let adminInitialized = false; // FIX #3: guard against double-init let html5QrCode = null, scanning = false, lastScannedText = '', lastScannedAt = 0; let attendanceQr = null, attendanceScanning = false, lastAttendanceScan = '', lastAttendanceScanAt = 0; @@ -19,6 +20,8 @@ function showToast(msg, type = 'info') { el.className = 'toast ' + type; el.innerHTML = `${icons[type]||'ℹ️'}${msg}`; $('toasts').appendChild(el); + // FIX #10: fade out before remove + setTimeout(() => { el.style.transition = 'opacity 0.4s'; el.style.opacity = '0'; }, 3400); setTimeout(() => el.remove(), 3800); } @@ -60,6 +63,7 @@ async function doLogin() { const { data, error } = await _sb.auth.signInWithPassword({ email, password: pass }); if (error) throw error; isAdmin = true; currentUser = data.user; + adminInitialized = false; // FIX #3: allow fresh init after login closeModal('m-login'); showToast('เข้าสู่ระบบสำเร็จ!', 'success'); showPage('admin'); @@ -74,7 +78,7 @@ async function doLogin() { async function doLogout() { if (!confirm('คุณต้องการออกจากระบบใช่หรือไม่?')) return; await _sb.auth.signOut(); - isAdmin = false; currentUser = null; + isAdmin = false; currentUser = null; adminInitialized = false; $('nav-logout').style.display = 'none'; $('cfg-dot').className = 'cfg-dot'; showPage('status'); @@ -195,10 +199,11 @@ const gasCall = async (fnName, ...args) => { return { success: true, student, assignment, saved }; } if (fnName === 'markStudentAttendance') { - const [studentId, date, status, remark] = args; + // FIX #5: รับ subject และ hours ด้วย + const [studentId, date, status, remark, subject, hours] = args; const student = await gasCall('getStudentById', studentId); if (!student) throw new Error('ไม่พบนักเรียน'); - const saved = await gasCall('saveAttendance', [{ student_id: studentId, attendance_date: date, status, remark: remark || '' }]); + const saved = await gasCall('saveAttendance', [{ student_id: studentId, attendance_date: date, subject: subject || '', status, remark: remark || '', hours: hours || 1 }]); return { success: true, student, attendance_date: date, status, saved }; } throw new Error('Unknown function: ' + fnName); @@ -217,13 +222,19 @@ function adminTab(name) { } async function initAdmin() { + // FIX #3: ป้องกัน double-init + if (adminInitialized) return; + adminInitialized = true; + $('nav-logout').style.display = 'flex'; try { const [s, a] = await Promise.all([gasCall('getStudents'), gasCall('getAllAssignments')]); students = s; assignments = a; $('cfg-dot').className = 'cfg-dot ok'; } catch (e) { - showToast('โหลดข้อมูลล้มเหลว: ' + e, 'error'); return; + showToast('โหลดข้อมูลล้มเหลว: ' + e, 'error'); + adminInitialized = false; // allow retry + return; } populateDropdowns(); if (!$('att-date').value) $('att-date').value = new Date().toISOString().slice(0, 10); @@ -329,7 +340,14 @@ async function searchStatus() { const subjectName = a.subject || 'วิชาทั่วไป'; if (subjectName !== lastSubject) { - tbody.innerHTML += `📚 ${subjectName}`; + // FIX: ใช้ textContent แทน innerHTML เพื่อป้องกัน XSS + const tr = document.createElement('tr'); + tr.className = 'tr-subject-group'; + const td = document.createElement('td'); + td.colSpan = 5; + td.textContent = '📚 ' + subjectName; + tr.appendChild(td); + tbody.appendChild(tr); lastSubject = subjectName; } @@ -351,17 +369,24 @@ async function searchStatus() { ? `${g.score} / ${max}` : ''; - tbody.innerHTML += ` - - ${cat} - - ${a.name || '—'} - ${a.description ? `
📝 ${a.description}
` : ''} - - ${type} - ${badge} - ${scoreHtml} - `; + // FIX: สร้าง row ด้วย DOM แทน innerHTML เพื่อป้องกัน XSS จาก a.name / a.description + const tr = document.createElement('tr'); + tr.className = rowClass; + + const descHtml = a.description + ? `
📝 ${escapeHtml(a.description)}
` + : ''; + + tr.innerHTML = ` + ${escapeHtml(cat)} + + ${escapeHtml(a.name || '—')} + ${descHtml} + + ${escapeHtml(type)} + ${badge} + ${scoreHtml}`; + tbody.appendChild(tr); }); // weighted score @@ -372,8 +397,8 @@ async function searchStatus() { const pt = s.max > 0 ? (s.current / s.max) * s.weight : 0; weightedTotal += pt; chartPoints.push(pt.toFixed(2)); }); - const behaviorScore = (stInfo.behavior_score !== null && stInfo.behavior_score !== undefined) - ? parseFloat(stInfo.behavior_score) : 10; + const behaviorScore = (stInfo.behavior_score !== null && stInfo.behavior_score !== undefined) + ? parseFloat(stInfo.behavior_score) : 10; chartPoints.push(behaviorScore.toFixed(2)); const grandTotal = weightedTotal + behaviorScore; @@ -419,6 +444,17 @@ async function searchStatus() { } } +// FIX #7: helper escape HTML +function escapeHtml(str) { + if (str === null || str === undefined) return ''; + return String(str) + .replace(/&/g, '&') + .replace(//g, '>') + .replace(/"/g, '"') + .replace(/'/g, '''); +} + function updatePieChart(dataPoints) { const ctx = $('scoreChart').getContext('2d'); if (scorePieChart) scorePieChart.destroy(); @@ -450,7 +486,6 @@ function updatePieChart(dataPoints) { }); } -// ── รับ container เป็น parameter เพื่อไม่ต้องล้าง card ทั้งหมด ── function renderAttendanceGrid(subjectName, attendanceData, container) { const wrapper = document.createElement('div'); wrapper.className = 'mb-4'; @@ -496,7 +531,7 @@ function renderAttendanceGrid(subjectName, attendanceData, container) { wrapper.innerHTML = `
- 📚 วิชา: ${subjectName} + 📚 วิชา: ${escapeHtml(subjectName)}
@@ -545,10 +580,11 @@ function renderGradingTable() { gradingRows.forEach((row, i) => { const s = row.student; const cls = row.status === 'checked' ? 'checked' : row.status === 'waiting' ? 'waiting' : 'not-sent'; + // FIX #7: ใช้ escapeHtml กับข้อมูลนักเรียน tb.innerHTML += ` - - + + @@ -576,8 +612,10 @@ async function saveGradesNow() { if (!aid) { showToast('กรุณาเลือกงานก่อน', 'error'); return; } const rows = gradingRows.map((row, i) => { const sv = $('sc-' + i).value; - const score = sv !== '' ? parseFloat(sv) : (row.status === 'checked' ? row.maxScore : null); - return { student_id: row.student.id, assignment_id: aid, score, max_score: row.maxScore, status: score !== null ? 'checked' : row.status }; + // FIX #4: score=0 ต้องไม่ถูก treat เป็น null, ช่องว่าง = null เสมอ + const score = sv !== '' ? parseFloat(sv) : null; + const status = score !== null ? 'checked' : row.status; + return { student_id: row.student.id, assignment_id: aid, score, max_score: row.maxScore, status }; }); try { await gasCall('saveGrades', rows); @@ -669,10 +707,11 @@ function renderAttendanceTable() { tb.innerHTML = ''; attendanceRows.forEach((row, i) => { const sel = 'att-select select-' + row.status; + // FIX #7: escape ชื่อนักเรียน tb.innerHTML += ` - - + + - + `; }); } @@ -750,11 +789,15 @@ async function stopAttendanceScanner() { async function handleAttendanceScan(val) { const studentId = extractStudentId(val); if (!studentId) return; - const date = $('att-date').value, status = $('att-default-status').value; - const idx = attendanceRows.findIndex(r => r.student.id === studentId); + const date = $('att-date').value; + const status = $('att-default-status').value; + // FIX #5: ส่ง subject และ hours ไปด้วย + const subj = $('att-subj').value; + const hours = parseFloat($('att-hours').value) || 1; + const idx = attendanceRows.findIndex(r => r.student.id === studentId); if (idx === -1) { showToast('ไม่พบรหัส: ' + studentId, 'error'); return; } try { - const result = await gasCall('markStudentAttendance', studentId, date, status, ''); + const result = await gasCall('markStudentAttendance', studentId, date, status, '', subj, hours); attendanceRows[idx].status = status; const statusEl = $('att-status-' + idx); if (statusEl) statusEl.value = status; updateAttendanceRowVisual(idx, status); @@ -774,72 +817,66 @@ function filterStudents() { ); const tb = $('st-tbody-admin'); if (!list.length) { tb.innerHTML = ''; return; } + + // FIX #7: ไม่ใช้ JSON.stringify ใน onclick — ใช้ data-id แทน tb.innerHTML = list.map(s => ` - - - - + + + + - -`).join(''); + + `).join(''); + + // event delegation แทน inline onclick + tb.querySelectorAll('button[data-action]').forEach(btn => { + btn.addEventListener('click', () => { + const sid = btn.dataset.id; + const st = students.find(s => s.id === sid); + if (!st) return; + if (btn.dataset.action === 'qr') showQR(st.id, st.first_name + ' ' + st.last_name, st.classroom); + if (btn.dataset.action === 'edit') editStudent(st); + if (btn.dataset.action === 'del') delStudent(st.id); + }); + }); } function prepareAddStudent() { - const modalTitle = document.querySelector('#m-add-st .modal-hd'); - if (modalTitle) modalTitle.innerHTML = `➕ เพิ่มนักเรียน `; - - $('ns-id').value = ''; - $('ns-id').readOnly = false; - $('ns-id').style.opacity = "1"; - $('ns-fn').value = ''; - $('ns-ln').value = ''; - $('ns-cls').value = ''; - $('ns-seat').value = ''; - $('ns-email').value = ''; - - openModal('m-add-st'); + const modalTitle = document.querySelector('#m-add-st .modal-hd'); + if (modalTitle) modalTitle.innerHTML = `➕ เพิ่มนักเรียน `; + $('ns-id').value = ''; + $('ns-id').readOnly = false; + $('ns-id').style.opacity = "1"; + $('ns-fn').value = ''; + $('ns-ln').value = ''; + $('ns-cls').value = ''; + $('ns-seat').value = ''; + $('ns-email').value = ''; + openModal('m-add-st'); } async function ensureGradeRowsForStudent(studentId, classroom) { - // หางานทั้งหมดในห้องนี้ const roomAssignments = assignments.filter(a => a.classroom === classroom); if (!roomAssignments.length) return; - - // ตรวจว่ามี grade row อยู่แล้วไหม (ป้องกันทับของเดิม) const { data: existingGrades } = await _sb - .from('grades') - .select('assignment_id') - .eq('student_id', studentId) + .from('grades').select('assignment_id').eq('student_id', studentId) .in('assignment_id', roomAssignments.map(a => a.id)); - const existingIds = new Set((existingGrades || []).map(g => g.assignment_id)); - - // สร้างเฉพาะงานที่ยังไม่มี grade row const newRows = roomAssignments .filter(a => !existingIds.has(a.id)) - .map(a => ({ - student_id: studentId, - assignment_id: a.id, - score: null, - max_score: a.max_score, - status: 'not_sent' - })); - + .map(a => ({ student_id: studentId, assignment_id: a.id, score: null, max_score: a.max_score, status: 'not_sent' })); if (newRows.length > 0) { - const { error } = await _sb - .from('grades') - .upsert(newRows, { onConflict: 'student_id,assignment_id', ignoreDuplicates: true }); + const { error } = await _sb.from('grades').upsert(newRows, { onConflict: 'student_id,assignment_id', ignoreDuplicates: true }); if (error) console.error('ensureGradeRowsForStudent error:', error); - else console.log(`✅ สร้าง grade rows ${newRows.length} งาน สำหรับนักเรียน ${studentId}`); } } - + async function saveStudent() { const d = { id: $('ns-id').value.trim(), @@ -852,13 +889,9 @@ async function saveStudent() { if (!d.id || !d.first_name || !d.last_name || !d.classroom) { showToast('กรุณากรอกข้อมูลให้ครบ', 'error'); return; } - try { await gasCall('upsertStudent', d); - - // ── สร้าง grade rows สำหรับงานที่มีอยู่แล้วในห้อง ── await ensureGradeRowsForStudent(d.id, d.classroom); - closeModal('m-add-st'); showToast('บันทึกสำเร็จ', 'success'); students = await gasCall('getStudents'); @@ -866,22 +899,19 @@ async function saveStudent() { populateDropdowns(); renderStudentTable(); } catch (e) { showToast('ผิดพลาด: ' + e, 'error'); } } + function editStudent(s) { - const modalTitle = document.querySelector('#m-add-st .modal-hd'); - if (modalTitle) modalTitle.innerHTML = `✏️ แก้ไขข้อมูลนักเรียน `; - - // ใส่ข้อมูลเดิมลงใน Input - $('ns-id').value = s.id; - $('ns-id').readOnly = true; // ห้ามแก้รหัส (Primary Key) ถ้าจะแก้รหัสต้องลบแล้วเพิ่มใหม่ - $('ns-id').style.opacity = "0.6"; - - $('ns-fn').value = s.first_name; - $('ns-ln').value = s.last_name; - $('ns-cls').value = s.classroom; - $('ns-seat').value = s.seat_no; - $('ns-email').value = s.email || ''; - - openModal('m-add-st'); + const modalTitle = document.querySelector('#m-add-st .modal-hd'); + if (modalTitle) modalTitle.innerHTML = `✏️ แก้ไขข้อมูลนักเรียน `; + $('ns-id').value = s.id; + $('ns-id').readOnly = true; + $('ns-id').style.opacity = "0.6"; + $('ns-fn').value = s.first_name; + $('ns-ln').value = s.last_name; + $('ns-cls').value = s.classroom; + $('ns-seat').value = s.seat_no; + $('ns-email').value = s.email || ''; + openModal('m-add-st'); } async function delStudent(id) { @@ -894,6 +924,17 @@ async function delStudent(id) { } catch (e) { showToast('ผิดพลาด: ' + e, 'error'); } } +// ─── TEMPLATE DOWNLOAD ───────────────────────────────────── +// FIX #1: เพิ่มฟังก์ชัน dlTemplate ที่หายไป +function dlTemplate() { + const header = [['รหัสนักเรียน','ชื่อ','สกุล','ชั้น','เลขที่','อีเมล']]; + const ws = XLSX.utils.aoa_to_sheet(header); + ws['!cols'] = [{ wch:16 },{ wch:16 },{ wch:16 },{ wch:10 },{ wch:8 },{ wch:28 }]; + const wb = XLSX.utils.book_new(); + XLSX.utils.book_append_sheet(wb, ws, 'นักเรียน'); + XLSX.writeFile(wb, 'template_นักเรียน.xlsx'); +} + // ─── IMPORT ──────────────────────────────────────────────── async function importFile(input) { const file = input.files[0]; if (!file) return; @@ -911,20 +952,14 @@ async function importFile(input) { seat_no: parseInt(r['เลขที่'] || r['seat_no'] || 0), email: String(r['อีเมล'] || r['email'] || '') })).filter(s => s.id); - await gasCall('upsertStudents', list); showToast('นำเข้า ' + list.length + ' คนสำเร็จ', 'success'); - - // รีโหลด assignments ก่อน เพื่อให้ ensureGradeRows ทำงานถูกต้อง students = await gasCall('getStudents'); assignments = await gasCall('getAllAssignments'); - - // ── สร้าง grade rows สำหรับทุกคนที่ Import เข้ามา ── showToast('กำลังตั้งค่างานค้าง...', 'info'); for (const s of list) { await ensureGradeRowsForStudent(s.id, s.classroom); } - populateDropdowns(); renderStudentTable(); showToast(`✅ ตั้งค่างานค้างสำเร็จ (${list.length} คน)`, 'success'); } catch (e) { showToast('ผิดพลาด: ' + e, 'error'); } @@ -936,13 +971,15 @@ async function importFile(input) { function showQR(id, name, cls) { $('qr-wrap').innerHTML = ''; new QRCode($('qr-wrap'), { text: id, width: 192, height: 192, colorDark: '#0f172a', colorLight: '#fff', correctLevel: QRCode.CorrectLevel.H }); - $('qr-info').innerHTML = `${name}
${cls} | รหัส: ${id}`; + $('qr-info').innerHTML = `${escapeHtml(name)}
${escapeHtml(cls)} | รหัส: ${escapeHtml(id)}`; openModal('m-qr'); } function printQR() { const qr = $('qr-wrap').innerHTML, info = $('qr-info').innerHTML; const w = window.open('', '_blank'); + // FIX #8: ตรวจ popup blocker + if (!w) { showToast('กรุณาอนุญาต Popup ในเบราว์เซอร์', 'warn'); return; } w.document.write(`QR
${qr}
${info}
+ From 59d19908132622723a428724272006c5f61de8bf Mon Sep 17 00:00:00 2001 From: ARNUT KLANGPRAPUN <136555438+kpp-arnut@users.noreply.github.com> Date: Thu, 7 May 2026 23:17:40 +0700 Subject: [PATCH 41/46] Refactor Excel export functions for clarity and structure --- script.js | 181 ++++++++++++++++++++++++++++++++++++++---------------- 1 file changed, 127 insertions(+), 54 deletions(-) diff --git a/script.js b/script.js index 5691e27..7a9963f 100644 --- a/script.js +++ b/script.js @@ -1396,76 +1396,149 @@ async function _doGcSync(room, subj) { async function exportExcel() { const room = $('exp-room').value, subj = $('exp-subj').value; if (!room || !subj) { showToast('เลือกห้องและวิชาก่อน','error'); return; } + try { - const data = await gasCall('getGradesByRoom', room, subj); - const sts = data.students, asgns = data.assignments, grs = data.grades; - const gMap = {}; + showToast('🚀 กำลังสร้างไฟล์ Excel...', 'info'); + const data = await gasCall('getGradesByRoom', room, subj); + const sts = data.students, asgns = data.assignments, grs = data.grades; + const gMap = {}; grs.forEach(g => gMap[g.student_id + '__' + g.assignment_id] = g.score); - const header = ['เลขที่','รหัสนักเรียน','ชื่อ','สกุล'].concat(asgns.map(a => a.name)).concat(['รวม']); - const maxRow = ['','','','คะแนนเต็ม'].concat(asgns.map(a => a.max_score)).concat([asgns.reduce((s,a) => s+Number(a.max_score),0)]); - const rows = sts.map(s => { - const scores = asgns.map(a => { const v=gMap[s.id+'__'+a.id]; return v!==undefined&&v!==null?Number(v):''; }); - const total = scores.reduce((s,v) => s+(typeof v==='number'?v:0), 0); - return [s.seat_no,s.id,s.first_name,s.last_name].concat(scores).concat([total]); + + const workbook = new ExcelJS.Workbook(); + const worksheet = workbook.addWorksheet('คะแนน'); + + // 1. สร้าง Header + const header = ['เลขที่', 'รหัสนักเรียน', 'ชื่อ', 'สกุล'].concat(asgns.map(a => a.name)).concat(['รวม']); + const headerRow = worksheet.addRow(header); + + // 2. สร้างแถวคะแนนเต็ม + const maxRowData = ['', '', '', 'คะแนนเต็ม'].concat(asgns.map(a => a.max_score)).concat([asgns.reduce((s, a) => s + Number(a.max_score), 0)]); + const maxRow = worksheet.addRow(maxRowData); + + // 3. ใส่ข้อมูลนักเรียน + sts.forEach(s => { + const scores = asgns.map(a => { + const v = gMap[s.id + '__' + a.id]; + return v !== undefined && v !== null ? Number(v) : ''; + }); + const total = scores.reduce((s, v) => s + (typeof v === 'number' ? v : 0), 0); + worksheet.addRow([s.seat_no, s.id, s.first_name, s.last_name].concat(scores).concat([total])); }); - const ws = XLSX.utils.aoa_to_sheet([header,maxRow].concat(rows)); - ws['!cols'] = header.map(() => ({ wch:16 })); - const wb = XLSX.utils.book_new(); - XLSX.utils.book_append_sheet(wb, ws, room.replace(/[:\\/?*\[\]]/g,'_').substring(0,31)); - XLSX.writeFile(wb, ('คะแนน_'+room+'_'+subj).replace(/[:\\/?*\[\]]/g,'_')+'.xlsx'); - showToast('ดาวน์โหลดสำเร็จ','success'); - } catch (e) { showToast('ผิดพลาด: '+e,'error'); } + + // 4. ปรับสไตล์ทั้งหมด (TH Sarabun New 14pt) + worksheet.eachRow((row, rowNumber) => { + row.eachCell((cell) => { + cell.font = { name: 'TH Sarabun New', size: 14 }; + cell.alignment = { vertical: 'middle', horizontal: 'center' }; + cell.border = { + top: {style:'thin'}, left: {style:'thin'}, bottom: {style:'thin'}, right: {style:'thin'} + }; + }); + + // 5. เฉพาะ Header (แถวที่ 1): หมุนข้อความ 90 องศา + if (rowNumber === 1) { + row.height = 100; // เพิ่มความสูงแถวเพื่อให้ข้อความที่หมุนแสดงผลได้ + row.eachCell((cell, colNumber) => { + if (colNumber > 4) { // เริ่มหมุนตั้งแต่คอลัมน์ที่ 5 เป็นต้นไป (รายการงาน) + cell.alignment = { textRotation: 90, vertical: 'middle', horizontal: 'center' }; + } + cell.font = { name: 'TH Sarabun New', size: 14, bold: true }; + }); + } + }); + worksheet.getColumn(1).width = 8; + worksheet.getColumn(2).width = 15; + worksheet.getColumn(3).width = 20; + worksheet.getColumn(4).width = 20; + const buffer = await workbook.xlsx.writeBuffer(); + saveAs(new Blob([buffer]), `คะแนน_${room}_${subj}.xlsx`); + showToast('ดาวน์โหลดสำเร็จ', 'success'); + + } catch (e) { + console.error(e); + showToast('ผิดพลาด: ' + e, 'error'); + } } async function exportAttendanceReport() { const room = $('exp-att-room').value, subj = $('exp-att-subj').value; if (!room || !subj) { showToast('กรุณาเลือกห้องและวิชา','error'); return; } + try { - showToast('🚀 กำลังสร้างรายงาน...','info'); - const classStudents = students.filter(s => s.classroom === room).sort((a,b) => a.seat_no-b.seat_no); - const allAtt = await gasCall('getAttendanceForRoom', room); - const filteredAtt = (allAtt||[]).filter(a => a.subject === subj); - if (!filteredAtt.length) { showToast('ไม่พบข้อมูลการเช็กชื่อวิชา '+subj,'warn'); return; } - const attMap={}, dateHoursMap={}; + showToast('🚀 กำลังสร้างรายงาน...', 'info'); + const classStudents = students.filter(s => s.classroom === room).sort((a,b) => a.seat_no - b.seat_no); + const allAtt = await gasCall('getAttendanceForRoom', room); + const filteredAtt = (allAtt || []).filter(a => a.subject === subj); + + if (!filteredAtt.length) { showToast('ไม่พบข้อมูลการเช็กชื่อวิชา '+subj, 'warn'); return; } + + const attMap = {}, dateHoursMap = {}; filteredAtt.forEach(a => { - attMap[a.student_id+'_'+a.attendance_date]=a; - const h=parseFloat(a.hours)||1; - if (!dateHoursMap[a.attendance_date]||h>dateHoursMap[a.attendance_date]) dateHoursMap[a.attendance_date]=h; + attMap[a.student_id + '_' + a.attendance_date] = a; + const h = parseFloat(a.hours) || 1; + if (!dateHoursMap[a.attendance_date] || h > dateHoursMap[a.attendance_date]) dateHoursMap[a.attendance_date] = h; }); - const dates=Object.keys(dateHoursMap).sort(); - const header=['เลขที่','รหัสนักเรียน','ชื่อ-นามสกุล']; - const dateCfg=[]; + + const dates = Object.keys(dateHoursMap).sort(); + const workbook = new ExcelJS.Workbook(); + const worksheet = workbook.addWorksheet('การเข้าเรียน'); + + // เตรียม Header + const header = ['เลขที่', 'รหัส', 'ชื่อ-นามสกุล']; + const dateCfg = []; dates.forEach(d => { - const h=dateHoursMap[d]; dateCfg.push({date:d,hours:h}); - const dObj=new Date(d); - const dateShow=dObj.getDate()+'/'+(dObj.getMonth()+1); - for(let i=1;i<=h;i++) header.push(dateShow+' (ชม.'+i+')'); + const h = dateHoursMap[d]; + dateCfg.push({date: d, hours: h}); + const dObj = new Date(d); + const dateShow = dObj.getDate() + '/' + (dObj.getMonth() + 1); + for(let i = 1; i <= h; i++) header.push(dateShow + ' (ชม.' + i + ')'); }); - header.push('ชม.รวม','มาเรียน(ชม.)','ร้อยละ','ผลลัพธ์'); - const rows=classStudents.map(s => { - const rowData=[s.seat_no,s.id,s.first_name+' '+s.last_name]; - let totalH=0,attendedH=0; + header.push('ชม.รวม', 'มาเรียน(ชม.)', 'ร้อยละ', 'ผลลัพธ์'); + + const headerRow = worksheet.addRow(header); + headerRow.height = 80; // ความสูงสำหรับแนวตั้ง + + // ใส่ข้อมูลนักเรียน + classStudents.forEach(s => { + const rowData = [s.seat_no, s.id, s.first_name + ' ' + s.last_name]; + let totalH = 0, attendedH = 0; dateCfg.forEach(cfg => { - const rec=attMap[s.id+'_'+cfg.date]; const status=rec?rec.status:'ขาด'; const h=cfg.hours; - totalH+=h; let weight=0,symbol='ข'; - if(status==='มา'){symbol='/';weight=1;} - else if(status==='ลา'){symbol='ล';weight=0.25;} - else if(status==='สาย'){symbol='ส';weight=0.5;} - attendedH+=(h*weight); - for(let i=1;i<=h;i++) rowData.push(symbol); + const rec = attMap[s.id + '_' + cfg.date]; + const status = rec ? rec.status : 'ขาด'; + const h = cfg.hours; + totalH += h; + let weight = 0, symbol = 'ข'; + if(status === 'มา'){ symbol = '/'; weight = 1; } + else if(status === 'ลา'){ symbol = 'ล'; weight = 0.25; } + else if(status === 'สาย'){ symbol = 'ส'; weight = 0.5; } + attendedH += (h * weight); + for(let i = 1; i <= h; i++) rowData.push(symbol); }); - const pct=totalH>0?(attendedH/totalH)*100:0; - // FIX #12: ตัด subject ให้ไม่เกิน 31 ตัวอักษร - rowData.push(totalH,attendedH,pct.toFixed(2)+'%',pct>=80?'ผ่าน':'มส.'); - return rowData; + const pct = totalH > 0 ? (attendedH / totalH) * 100 : 0; + rowData.push(totalH, attendedH, pct.toFixed(2) + '%', pct >= 80 ? 'ผ่าน' : 'มส.'); + worksheet.addRow(rowData); }); - const ws=XLSX.utils.aoa_to_sheet([header].concat(rows)); - const wb=XLSX.utils.book_new(); - const sheetName = ('รายงาน_'+room).replace(/[:\\/?*\[\]]/g,'_').substring(0,31); - XLSX.utils.book_append_sheet(wb,ws,sheetName); - XLSX.writeFile(wb,'รายงานเช็กชื่อ_'+room+'_'+subj+'.xlsx'); - showToast('สำเร็จ!','success'); - } catch(e){ showToast('เกิดข้อผิดพลาด: '+(e.message||e),'error'); } + + // ปรับแต่งฟอนต์และการหมุน + worksheet.eachRow((row, rowNumber) => { + row.eachCell((cell, colNumber) => { + cell.font = { name: 'TH Sarabun New', size: 14 }; + cell.alignment = { vertical: 'middle', horizontal: 'center' }; + cell.border = { top: {style:'thin'}, left: {style:'thin'}, bottom: {style:'thin'}, right: {style:'thin'} }; + + // หมุน Header ตั้งแต่คอลัมน์วันที่ (คอลัมน์ที่ 4 เป็นต้นไป) + if (rowNumber === 1 && colNumber > 3) { + cell.alignment = { textRotation: 90, vertical: 'middle', horizontal: 'center' }; + cell.font = { name: 'TH Sarabun New', size: 14, bold: true }; + } + }); + }); + + const buffer = await workbook.xlsx.writeBuffer(); + saveAs(new Blob([buffer]), `รายงานเช็กชื่อ_${room}_${subj}.xlsx`); + showToast('สำเร็จ!', 'success'); + + } catch (e) { showToast('เกิดข้อผิดพลาด: ' + e.message, 'error'); } } // ─── INIT ────────────────────────────────────────────────── From b0b13322962ee85ef18134e6edda9be29b0ba4ef Mon Sep 17 00:00:00 2001 From: ARNUT KLANGPRAPUN <136555438+kpp-arnut@users.noreply.github.com> Date: Thu, 7 May 2026 23:23:35 +0700 Subject: [PATCH 42/46] Enhance detectCategory function with new keywords --- script.js | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/script.js b/script.js index 7a9963f..d120710 100644 --- a/script.js +++ b/script.js @@ -1195,9 +1195,10 @@ async function gcFetch(url) { function detectCategory(title) { const t = (title || '').toLowerCase(); - if (t.includes('ปลายภาค') || t.includes('final') || t.includes('สอบปลาย')) return 'ปลายภาค'; - if (t.includes('กลางภาค') || t.includes('midterm') || t.includes('mid') || t.includes('สอบกลาง')) return 'กลางภาค'; - if (t.includes('หลังกลางภาค') || t.includes('after')) return 'หลังกลางภาค'; + if (t.includes('ปลายภาค') || t.includes('final') || t.includes('[fin]')) return 'ปลายภาค'; + if (t.includes('กลางภาค') || t.includes('midterm') || t.includes('[mid]')) return 'กลางภาค'; + if (t.includes('หลังกลางภาค') || t.includes('after') || t.includes('[aft]')) return 'หลังกลางภาค'; + if (t.includes('ก่อนกลางภาค') || t.includes('before') || t.includes('[bef]')) return 'ก่อนกลางภาค'; return 'ก่อนกลางภาค'; } From 9a2b4954ae85987f5d09535eb76e6b4abf31a477 Mon Sep 17 00:00:00 2001 From: ARNUT KLANGPRAPUN <136555438+kpp-arnut@users.noreply.github.com> Date: Thu, 7 May 2026 23:40:35 +0700 Subject: [PATCH 43/46] Refactor detectCategory function for clarity --- script.js | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/script.js b/script.js index d120710..8e78124 100644 --- a/script.js +++ b/script.js @@ -1195,11 +1195,19 @@ async function gcFetch(url) { function detectCategory(title) { const t = (title || '').toLowerCase(); - if (t.includes('ปลายภาค') || t.includes('final') || t.includes('[fin]')) return 'ปลายภาค'; - if (t.includes('กลางภาค') || t.includes('midterm') || t.includes('[mid]')) return 'กลางภาค'; - if (t.includes('หลังกลางภาค') || t.includes('after') || t.includes('[aft]')) return 'หลังกลางภาค'; - if (t.includes('ก่อนกลางภาค') || t.includes('before') || t.includes('[bef]')) return 'ก่อนกลางภาค'; - return 'ก่อนกลางภาค'; + if (t.includes('ปลายภาค') || t.includes('final') || t.includes('[fin]')) { + return 'ปลายภาค'; + } + if (t.includes('หลังกลางภาค') || t.includes('after') || t.includes('[aft]')) { + return 'หลังกลางภาค'; + } + if (t.includes('กลางภาค') || t.includes('midterm') || t.includes('[mid]')) { + return 'กลางภาค'; + } + if (t.includes('ก่อนกลางภาค') || t.includes('before') || t.includes('[bef]')) { + return 'ก่อนกลางภาค'; + } + return 'ก่อนกลางภาค'; } function syncFromClassroom() { From 60b53785cd602bbbc1e30510d99d23566883ecfe Mon Sep 17 00:00:00 2001 From: ARNUT KLANGPRAPUN <136555438+kpp-arnut@users.noreply.github.com> Date: Thu, 7 May 2026 23:55:31 +0700 Subject: [PATCH 44/46] Refactor style.css by removing comments and updating styles Removed header comments and added white-space property to badge class. --- style.css | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/style.css b/style.css index 0922b83..174f773 100644 --- a/style.css +++ b/style.css @@ -1,9 +1,3 @@ -/* ══════════════════════════════════════════════════════════════ - LIQUID GLASS UI — iOS-inspired Design System - Responsive: Mobile-first, scales cleanly to desktop - Font stack: Sarabun (Thai) + Kanit (headings) - ══════════════════════════════════════════════════════════════ */ - @import url('https://fonts.googleapis.com/css2?family=Kanit:wght@400;600;700&family=Sarabun:wght@300;400;600;700&display=swap'); /* ════════════════════════════════ @@ -726,6 +720,7 @@ tbody tr:hover td { background: rgba(255,255,255,0.04); } min-width: 72px; backdrop-filter: blur(4px); border: 1px solid transparent; + white-space: nowrap; } .badge-green { background: var(--green-dim); From b43122c5c0dbafb824122c79715b7d7171463d8b Mon Sep 17 00:00:00 2001 From: ARNUT KLANGPRAPUN <136555438+kpp-arnut@users.noreply.github.com> Date: Fri, 8 May 2026 09:58:36 +0700 Subject: [PATCH 45/46] Remove checkmark from toast messages --- script.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/script.js b/script.js index 8e78124..44458ec 100644 --- a/script.js +++ b/script.js @@ -674,7 +674,7 @@ async function handleScan(val) { const sc = $('sc-' + idx); if (sc) sc.value = result.assignment.max_score; const row = $('gr-' + idx); if (row) { row.scrollIntoView({behavior:'smooth',block:'center'}); row.style.background='rgba(16,185,129,.1)'; setTimeout(()=>row.style.background='',1200); } - showToast('✅ ' + result.student.first_name + ' ' + result.student.last_name, 'success'); + showToast(result.student.first_name + ' ' + result.student.last_name, 'success'); } catch (e) { showToast('บันทึกไม่สำเร็จ: ' + e, 'error'); } } @@ -802,7 +802,7 @@ async function handleAttendanceScan(val) { const statusEl = $('att-status-' + idx); if (statusEl) statusEl.value = status; updateAttendanceRowVisual(idx, status); const row = $('att-row-' + idx); if (row) row.scrollIntoView({behavior:'smooth',block:'center'}); - showToast('📅 ' + result.student.first_name + ' ' + result.student.last_name + ' = ' + status, 'success'); + showToast(result.student.first_name + ' ' + result.student.last_name + ' = ' + status, 'success'); } catch (e) { showToast('เช็กชื่อไม่สำเร็จ: ' + e, 'error'); } } @@ -1385,7 +1385,7 @@ async function _doGcSync(room, subj) { } setSyncProgress(0); gcLog(`\n════ ซิงค์เสร็จ! ${works.length} งาน | มีคะแนน: ${totalGraded} รายการ ════`, 'ok'); - showToast(`✅ ซิงค์สำเร็จ! ${works.length} งาน | คะแนน ${totalGraded} รายการ`, 'success'); + showToast(`ซิงค์สำเร็จ! ${works.length} งาน | คะแนน ${totalGraded} รายการ`, 'success'); assignments = await gasCall('getAllAssignments'); populateDropdowns(); renderAsgnTable(); syncAssignSelect(); const btn = $('gc-start-btn'); From 3826778af89f375a5a58317b2134e19b920ce5aa Mon Sep 17 00:00:00 2001 From: ARNUT KLANGPRAPUN <136555438+kpp-arnut@users.noreply.github.com> Date: Fri, 8 May 2026 10:09:27 +0700 Subject: [PATCH 46/46] Refactor attendance report export function --- script.js | 33 +++++++++++++++++++++------------ 1 file changed, 21 insertions(+), 12 deletions(-) diff --git a/script.js b/script.js index 44458ec..a11f5f6 100644 --- a/script.js +++ b/script.js @@ -1471,7 +1471,7 @@ async function exportExcel() { async function exportAttendanceReport() { const room = $('exp-att-room').value, subj = $('exp-att-subj').value; - if (!room || !subj) { showToast('กรุณาเลือกห้องและวิชา','error'); return; } + if (!room || !subj) { showToast('กรุณาเลือกห้องและวิชา', 'error'); return; } try { showToast('🚀 กำลังสร้างรายงาน...', 'info'); @@ -1479,7 +1479,7 @@ async function exportAttendanceReport() { const allAtt = await gasCall('getAttendanceForRoom', room); const filteredAtt = (allAtt || []).filter(a => a.subject === subj); - if (!filteredAtt.length) { showToast('ไม่พบข้อมูลการเช็กชื่อวิชา '+subj, 'warn'); return; } + if (!filteredAtt.length) { showToast('ไม่พบข้อมูลการเช็กชื่อวิชา ' + subj, 'warn'); return; } const attMap = {}, dateHoursMap = {}; filteredAtt.forEach(a => { @@ -1492,8 +1492,8 @@ async function exportAttendanceReport() { const workbook = new ExcelJS.Workbook(); const worksheet = workbook.addWorksheet('การเข้าเรียน'); - // เตรียม Header - const header = ['เลขที่', 'รหัส', 'ชื่อ-นามสกุล']; + // 1. เตรียม Header (ใช้ Format เดียวกับ exportExcel) + const header = ['เลขที่', 'รหัสนักเรียน', 'ชื่อ', 'สกุล']; const dateCfg = []; dates.forEach(d => { const h = dateHoursMap[d]; @@ -1505,11 +1505,11 @@ async function exportAttendanceReport() { header.push('ชม.รวม', 'มาเรียน(ชม.)', 'ร้อยละ', 'ผลลัพธ์'); const headerRow = worksheet.addRow(header); - headerRow.height = 80; // ความสูงสำหรับแนวตั้ง + headerRow.height = 80; - // ใส่ข้อมูลนักเรียน + // 2. ใส่ข้อมูลนักเรียน (แยก first_name และ last_name) classStudents.forEach(s => { - const rowData = [s.seat_no, s.id, s.first_name + ' ' + s.last_name]; + const rowData = [s.seat_no, s.id, s.first_name, s.last_name]; let totalH = 0, attendedH = 0; dateCfg.forEach(cfg => { const rec = attMap[s.id + '_' + cfg.date]; @@ -1528,26 +1528,35 @@ async function exportAttendanceReport() { worksheet.addRow(rowData); }); - // ปรับแต่งฟอนต์และการหมุน + // 3. ปรับแต่งฟอนต์และการหมุน (Format เดียวกับ exportExcel) worksheet.eachRow((row, rowNumber) => { row.eachCell((cell, colNumber) => { cell.font = { name: 'TH Sarabun New', size: 14 }; cell.alignment = { vertical: 'middle', horizontal: 'center' }; cell.border = { top: {style:'thin'}, left: {style:'thin'}, bottom: {style:'thin'}, right: {style:'thin'} }; - // หมุน Header ตั้งแต่คอลัมน์วันที่ (คอลัมน์ที่ 4 เป็นต้นไป) - if (rowNumber === 1 && colNumber > 3) { + // หมุน Header ตั้งแต่คอลัมน์ที่ 5 เป็นต้นไป (รายการวันที่) + if (rowNumber === 1 && colNumber > 4) { cell.alignment = { textRotation: 90, vertical: 'middle', horizontal: 'center' }; cell.font = { name: 'TH Sarabun New', size: 14, bold: true }; } }); }); + // ปรับความกว้างคอลัมน์มาตรฐาน + worksheet.getColumn(1).width = 8; // เลขที่ + worksheet.getColumn(2).width = 15; // รหัส + worksheet.getColumn(3).width = 18; // ชื่อ + worksheet.getColumn(4).width = 18; // สกุล + const buffer = await workbook.xlsx.writeBuffer(); saveAs(new Blob([buffer]), `รายงานเช็กชื่อ_${room}_${subj}.xlsx`); - showToast('สำเร็จ!', 'success'); + showToast('ดาวน์โหลดรายงานสำเร็จ', 'success'); - } catch (e) { showToast('เกิดข้อผิดพลาด: ' + e.message, 'error'); } + } catch (e) { + console.error(e); + showToast('เกิดข้อผิดพลาด: ' + e.message, 'error'); + } } // ─── INIT ──────────────────────────────────────────────────
${s.seat_no || '—'}${s.id}${s.first_name} ${s.last_name}${escapeHtml(s.id)}${escapeHtml(s.first_name)} ${escapeHtml(s.last_name)} ${row.maxScore}
${row.student.seat_no || '—'}${row.student.id}${row.student.first_name} ${row.student.last_name}${escapeHtml(row.student.id)}${escapeHtml(row.student.first_name)} ${escapeHtml(row.student.last_name)}
🔍
ไม่มีข้อมูล
${s.id}${s.first_name}${s.last_name}${s.classroom}${escapeHtml(s.id)}${escapeHtml(s.first_name)}${escapeHtml(s.last_name)}${escapeHtml(s.classroom)} ${s.seat_no}
- - + +

1AE!i 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%0DJ5$lid6r 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