/**
* TPU Survey - Teacher Dashboard Logic
*/
let teacherSurveys = [];
async function initTeacher() {
const loggedIn = await Auth.check();
if (!loggedIn || !Auth.isTeacher()) {
if (Auth.isAdmin()) {
window.location.href = 'admin.html';
return;
}
window.location.href = 'index.html';
return;
}
document.getElementById('userName').textContent = Auth.user.full_name;
document.getElementById('userRole').textContent = 'อาจารย์ / เจ้าของโครงการ';
document.getElementById('userAvatar').textContent = Auth.user.full_name.charAt(0);
showTeacherView('mySurveys');
}
function showTeacherView(view) {
document.querySelectorAll('.view-section').forEach(s => s.classList.add('hidden'));
document.getElementById(`view-${view}`)?.classList.remove('hidden');
document.querySelectorAll('.nav-item').forEach(n => n.classList.remove('active'));
document.querySelector(`.nav-item[data-view="${view}"]`)?.classList.add('active');
const titles = { mySurveys: 'แบบสอบถามของฉัน', profile: 'ข้อมูลส่วนตัว' };
document.getElementById('pageTitle').textContent = titles[view] || '';
if (view === 'mySurveys') loadTeacherSurveys();
else if (view === 'profile') loadProfile();
}
async function loadTeacherSurveys() {
try {
const data = await API.get('surveys.php?action=list');
teacherSurveys = data.surveys || [];
renderTeacherSurveys();
} catch (err) {
Toast.error(err.message);
}
}
function renderTeacherSurveys() {
const container = document.getElementById('teacherSurveysList') || document.getElementById('teacherSurveysBody');
if (!container) return;
if (teacherSurveys.length === 0) {
const emptyHtml = `
ยังไม่มีแบบสอบถาม กดปุ่ม "สร้างแบบสอบถาม" เพื่อเริ่มต้น
`;
if (container.tagName === 'TBODY') {
container.innerHTML = `
`;
}
function addTeacherSection() {
const container = document.getElementById('additionalTeacherSections');
if (!container) return;
const si = document.querySelectorAll('.card[data-section]').length;
const html = `
🔗 ลิงก์แบบสอบถาม
${fullUrl}
📋 คัดลอก
📱 QR Code สำหรับตอบแบบสอบถาม
${escapeHtml(surveyTitle)}
📥 ดาวน์โหลด QR
🖨️ พิมพ์ QR
⚡ แบบสอบถามถูกเปิดใช้งานอัตโนมัติเมื่อสร้างลิงก์
`;
Modal.create('🔗 ลิงก์และ QR Code', html, '', 'modal-lg');
// Generate QR Code using QRCodeJS
setTimeout(() => {
const container = document.getElementById('qrCodeContainer');
if (container && typeof QRCode !== 'undefined') {
new QRCode(container, {
text: fullUrl,
width: 280,
height: 280,
colorDark: '#1e3a8a',
colorLight: '#ffffff',
correctLevel: QRCode.CorrectLevel.H
});
}
}, 100);
} catch (err) {
Toast.error(err.message);
}
}
function copyTeacherLink() {
const text = document.getElementById('surveyLinkText')?.textContent;
if (text) {
navigator.clipboard.writeText(text).then(() => Toast.success('คัดลอกแล้ว')).catch(() => {
const ta = document.createElement('textarea'); ta.value = text; document.body.appendChild(ta); ta.select(); document.execCommand('copy'); ta.remove();
Toast.success('คัดลอกแล้ว');
});
}
}
function getTeacherQRImage() {
const container = document.getElementById('qrCodeContainer');
if (!container) return null;
return container.querySelector('canvas') || container.querySelector('img');
}
function teacherDownloadQR() {
const qrEl = getTeacherQRImage();
const title = document.getElementById('qrSurveyTitle')?.textContent || 'survey';
if (!qrEl) return;
let qrDataUrl;
if (qrEl.tagName === 'CANVAS') {
qrDataUrl = qrEl.toDataURL('image/png');
} else {
qrDataUrl = qrEl.src;
}
const exportCanvas = document.createElement('canvas');
const qrSize = 280;
const padding = 40;
const titleHeight = 60;
const footerHeight = 40;
exportCanvas.width = qrSize + padding * 2;
exportCanvas.height = qrSize + padding * 2 + titleHeight + footerHeight;
const ctx = exportCanvas.getContext('2d');
ctx.fillStyle = '#ffffff';
ctx.fillRect(0, 0, exportCanvas.width, exportCanvas.height);
ctx.fillStyle = '#1a1a2e';
ctx.font = 'bold 16px sans-serif';
ctx.textAlign = 'center';
const maxTitleWidth = exportCanvas.width - 40;
let displayTitle = title;
if (ctx.measureText(displayTitle).width > maxTitleWidth) {
while (ctx.measureText(displayTitle + '...').width > maxTitleWidth && displayTitle.length > 0) {
displayTitle = displayTitle.slice(0, -1);
}
displayTitle += '...';
}
ctx.fillText(displayTitle, exportCanvas.width / 2, padding + 20);
const img = new Image();
img.onload = function() {
ctx.drawImage(img, padding, padding + titleHeight, qrSize, qrSize);
ctx.fillStyle = '#6b7280';
ctx.font = '12px sans-serif';
ctx.fillText('สแกนเพื่อตอบแบบสอบถาม — TPU Survey', exportCanvas.width / 2, exportCanvas.height - 16);
const link = document.createElement('a');
const safeName = title.replace(/[^a-zA-Z0-9ก-๙]/g, '_').substring(0, 50);
link.download = `QR_${safeName}.png`;
link.href = exportCanvas.toDataURL('image/png');
link.click();
Toast.success('ดาวน์โหลด QR Code สำเร็จ');
};
img.src = qrDataUrl;
}
function teacherPrintQR() {
const qrEl = getTeacherQRImage();
const title = document.getElementById('qrSurveyTitle')?.textContent || 'แบบสอบถาม';
const linkText = document.getElementById('surveyLinkText')?.textContent || '';
if (!qrEl) return;
let qrDataUrl;
if (qrEl.tagName === 'CANVAS') {
qrDataUrl = qrEl.toDataURL('image/png');
} else {
qrDataUrl = qrEl.src;
}
const printWindow = window.open('', '_blank');
printWindow.document.write(`