ใช้ได้แล้ว แต่ ตัวแสดงขนาด local storage ไม่ทำงาน
สาเหตุที่ ตัวแสดงขนาด Local Storage (แถบเปอร์เซ็นต์) ไม่ทำงานหรือดูเหมือนไม่ขยับ มี 2 สาเหตุหลักครับ:
- ขาดการเรียกใช้ (Trigger): ในโค้ด
loadFromJSONFileที่ผมให้ไปในรอบก่อน ผมลืมใส่คำสั่งcheckStorageQuota();ทำให้หลังจากโหลดไฟล์เสร็จ แถบเลยยังไม่ยอมอัปเดตจนกว่าจะมีการกดเซฟหรือรีเฟรชหน้าจอครับ - ความละเอียดของการแสดงผล: ปกติไฟล์ JSON ข้อมูลลูกค้า 100-200 แถว จะมีขนาดเพียง 20-50 KB ซึ่งเมื่อเทียบกับโควตา 5,120 KB (5MB) มันคิดเป็นแค่ 0.4% – 0.9% เท่านั้น ทำให้แถบ Progress Bar แทบจะไม่ขยับเลยครับ
เพื่อให้ระบบทำงานสมบูรณ์และตรวจสอบได้ง่ายขึ้น ให้คุณแก้ไข 2 จุดนี้ครับ:
จุดที่ 1: ปรับปรุงฟังก์ชัน checkStorageQuota (ให้แสดงขนาดเป็น KB ด้วย)
ก๊อปปี้ส่วนนี้ไปทับฟังก์ชันเดิมใน v77.html เพื่อให้คุณเห็นตัวเลขที่ขยับจริงแม้ข้อมูลจะน้อยครับ:
JavaScript
function checkStorageQuota() {
const percentDisplay = document.getElementById('percentDisplay');
const progressFill = document.getElementById('progressFill');
// 1. คำนวณขนาด (Byte)
const usedBytes = calculateUsedStorageSize();
const usedKB = (usedBytes / 1024).toFixed(2); // แปลงเป็น KB
const percentUsed = (usedBytes / ESTIMATED_QUOTA_BYTES) * 100;
// 2. แสดงผลเปอร์เซ็นต์ พร้อมระบุขนาด KB เพื่อให้เห็นการเปลี่ยนแปลง
// เปลี่ยนจาก .toFixed(4) เป็น .toFixed(2) และเพิ่มขนาดไฟล์จริงเข้าไป
percentDisplay.textContent = `${percentUsed.toFixed(2)}% Used (${usedKB} KB / 5120 KB)`;
// 3. อัปเดต Progress Bar
const barWidth = Math.min(percentUsed, 100);
progressFill.style.width = `${barWidth}%`;
// 4. เปลี่ยนสีตามความหนาแน่น
let barColor = '#4CAF50'; // เขียว
if (percentUsed > 80) barColor = '#F44336'; // แดง (ใกล้เต็ม)
else if (percentUsed > 50) barColor = '#FFC107'; // เหลือง
progressFill.style.backgroundColor = barColor;
}
**
จุดที่ 2: เพิ่มการเรียกใช้ในฟังก์ชันอื่นๆ
เพื่อให้แถบอัปเดตทันทีเมื่อมีการกระทำใดๆ ให้เพิ่มคำสั่ง checkStorageQuota(); เข้าไปในจุดดังนี้ครับ:
- ใน
loadFromJSONFile: (เพิ่มต่อท้ายหลังจากrenderDataToTable)JavaScript// ... โค้ดส่วนอื่นๆ ... renderDataToTable(dataList, latestYear); checkStorageQuota(); // <--- เพิ่มบรรทัดนี้ alert(`✅ โหลดข้อมูลเรียบร้อย!`);** - ใน
clearLocalStorage: (เพื่อให้แถบกลับเป็น 0% ทันทีที่ลบ)JavaScriptfunction clearLocalStorage(){ if (confirm("⚠️ ต้องการล้างข้อมูลทั้งหมด?")) { localStorage.removeItem(STORAGE_KEY); checkStorageQuota(); // <--- เพิ่มบรรทัดนี้ window.location.reload(); } }**
สรุปเหตุผลที่มันไม่ขยับ: เพราะข้อมูล JSON เป็นตัวอักษรซึ่งกินพื้นที่น้อยมากครับ การเพิ่มการแสดงผล (xx KB / 5120 KB) จะช่วยให้คุณมั่นใจได้ว่าระบบคำนวณอยู่จริง แม้เปอร์เซ็นต์จะยังขึ้นไม่ถึง 1% ก็ตามครับ