• January 3, 2026

    ใช้ได้แล้ว แต่ ตัวแสดงขนาด local storage ไม่ทำงาน

    สาเหตุที่ ตัวแสดงขนาด Local Storage (แถบเปอร์เซ็นต์) ไม่ทำงานหรือดูเหมือนไม่ขยับ มี 2 สาเหตุหลักครับ:

    1. ขาดการเรียกใช้ (Trigger): ในโค้ด loadFromJSONFile ที่ผมให้ไปในรอบก่อน ผมลืมใส่คำสั่ง checkStorageQuota(); ทำให้หลังจากโหลดไฟล์เสร็จ แถบเลยยังไม่ยอมอัปเดตจนกว่าจะมีการกดเซฟหรือรีเฟรชหน้าจอครับ
    2. ความละเอียดของการแสดงผล: ปกติไฟล์ 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(); เข้าไปในจุดดังนี้ครับ:

    1. ใน loadFromJSONFile: (เพิ่มต่อท้ายหลังจาก renderDataToTable)JavaScript// ... โค้ดส่วนอื่นๆ ... renderDataToTable(dataList, latestYear); checkStorageQuota(); // <--- เพิ่มบรรทัดนี้ alert(`✅ โหลดข้อมูลเรียบร้อย!`); **
    2. ใน clearLocalStorage: (เพื่อให้แถบกลับเป็น 0% ทันทีที่ลบ)JavaScriptfunction clearLocalStorage(){ if (confirm("⚠️ ต้องการล้างข้อมูลทั้งหมด?")) { localStorage.removeItem(STORAGE_KEY); checkStorageQuota(); // <--- เพิ่มบรรทัดนี้ window.location.reload(); } } **

    สรุปเหตุผลที่มันไม่ขยับ: เพราะข้อมูล JSON เป็นตัวอักษรซึ่งกินพื้นที่น้อยมากครับ การเพิ่มการแสดงผล (xx KB / 5120 KB) จะช่วยให้คุณมั่นใจได้ว่าระบบคำนวณอยู่จริง แม้เปอร์เซ็นต์จะยังขึ้นไม่ถึง 1% ก็ตามครับ



เวอไนน์ไอคอร์ส

ประหยัดเวลากว่า 100 เท่า!






เวอไนน์เว็บไซต์⚡️
สร้างเว็บไซต์ ดูแลเว็บไซต์

Categories