{"id":12983,"date":"2026-02-17T15:40:52","date_gmt":"2026-02-17T08:40:52","guid":{"rendered":"https:\/\/www.doa.go.th\/rubberfund\/?page_id=12983"},"modified":"2026-03-05T14:27:48","modified_gmt":"2026-03-05T07:27:48","slug":"all_stock","status":"publish","type":"page","link":"https:\/\/www.doa.go.th\/rubberfund\/all_stock\/","title":{"rendered":"all_stock"},"content":{"rendered":"<div class=\"gb-container gb-container-e5832804 alignfull\">\n\n<!DOCTYPE html>\n<html lang=\"th\">\n<head>\n    <meta charset=\"UTF-8\">\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n    <title>Stock Report &#8211; \u0e40\u0e07\u0e34\u0e19\u0e17\u0e38\u0e19\u0e2b\u0e21\u0e38\u0e19\u0e40\u0e27\u0e35\u0e22\u0e19\u0e22\u0e32\u0e07\u0e1e\u0e32\u0e23\u0e32<\/title>\n    \n    <!-- Google Fonts: Mali -->\n    <link rel=\"preconnect\" href=\"https:\/\/fonts.googleapis.com\">\n    <link rel=\"preconnect\" href=\"https:\/\/fonts.gstatic.com\" crossorigin>\n    <link href=\"https:\/\/fonts.googleapis.com\/css2?family=Mali:ital,wght@0,200;0,300;0,400;0,500;0,600;0,700;1,200;1,300;1,400;1,500;1,600;1,700&#038;display=swap\" rel=\"stylesheet\">\n\n    <!-- Tailwind CSS -->\n    <script src=\"https:\/\/cdn.tailwindcss.com\"><\/script>\n    <!-- Lucide Icons -->\n    <script src=\"https:\/\/unpkg.com\/lucide@latest\"><\/script>\n    <!-- PapaParse (\u0e44\u0e25\u0e1a\u0e23\u0e32\u0e23\u0e35\u0e0a\u0e48\u0e27\u0e22\u0e08\u0e31\u0e14\u0e01\u0e32\u0e23\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25 CSV \u0e44\u0e14\u0e49\u0e40\u0e2a\u0e16\u0e35\u0e22\u0e23\u0e02\u0e36\u0e49\u0e19) -->\n    <script src=\"https:\/\/cdnjs.cloudflare.com\/ajax\/libs\/PapaParse\/5.4.1\/papaparse.min.js\"><\/script>\n    \n    <style>\n        body { \n            font-family: 'Mali', cursive !important; \n            background-color: #0f172a; \n            color: #f1f5f9; \n            padding-bottom: 60px; \/* \u0e40\u0e1e\u0e34\u0e48\u0e21\u0e1e\u0e37\u0e49\u0e19\u0e17\u0e35\u0e48\u0e14\u0e49\u0e32\u0e19\u0e25\u0e48\u0e32\u0e07\u0e40\u0e1e\u0e37\u0e48\u0e2d\u0e44\u0e21\u0e48\u0e43\u0e2b\u0e49\u0e41\u0e16\u0e1a\u0e41\u0e08\u0e49\u0e07\u0e40\u0e15\u0e37\u0e2d\u0e19\u0e1a\u0e31\u0e07\u0e40\u0e19\u0e37\u0e49\u0e2d\u0e2b\u0e32\u0e17\u0e49\u0e32\u0e22\u0e2b\u0e19\u0e49\u0e32 *\/\n        }\n        \n        input, select, button, textarea {\n            font-family: 'Mali', cursive !important;\n        }\n        \n        ::-webkit-scrollbar { width: 8px; }\n        ::-webkit-scrollbar-track { background: #1e293b; }\n        ::-webkit-scrollbar-thumb { background: #475569; border-radius: 10px; }\n\n        .tab-btn.active { \n            border-bottom: 4px solid #f59e0b; \n            color: #f59e0b; \n            background-color: rgba(245, 158, 11, 0.1);\n        }\n        \n        .admin-link { \n            font-size: 11px; \n            font-weight: bold; \n            color: #94a3b8; \n            text-decoration: none; \n            display: flex;\n            align-items: center;\n            gap: 4px;\n        }\n        \n        .admin-link:hover { color: #fbbf24; }\n\n        select, input {\n            background-color: #1e293b !important;\n            border-color: #334155 !important;\n            color: #f1f5f9 !important;\n        }\n\n        select {\n            appearance: none;\n            background-image: url(\"data:image\/svg+xml,%3Csvg xmlns='http:\/\/www.w3.org\/2000\/svg' fill='none' viewBox='0 0 24 24' stroke='%2394a3b8'%3E%3Cpath stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M19 9l-7 7-7-7'%3E%3C\/path%3E%3C\/svg%3E\");\n            background-repeat: no-repeat;\n            background-position: right 0.75rem center;\n            background-size: 1rem;\n        }\n\n        .glass-panel {\n            background: rgba(30, 41, 59, 0.7);\n            backdrop-filter: blur(10px);\n            border: 1px solid rgba(255, 255, 255, 0.05);\n        }\n\n        .line-btn {\n            background-color: #06C755;\n            transition: all 0.3s ease;\n        }\n        .line-btn:hover {\n            background-color: #05a346;\n            transform: translateY(-2px);\n        }\n\n        \/* \u0e1b\u0e23\u0e31\u0e1a\u0e1b\u0e23\u0e38\u0e07\u0e2a\u0e44\u0e15\u0e25\u0e4c\u0e41\u0e16\u0e1a\u0e41\u0e08\u0e49\u0e07\u0e40\u0e15\u0e37\u0e2d\u0e19\u0e43\u0e2b\u0e49\u0e40\u0e1b\u0e47\u0e19\u0e41\u0e1a\u0e1a Sticky Footer Overlay *\/\n        .fixed-footer-alert {\n            position: fixed;\n            bottom: 0;\n            left: 0;\n            right: 0;\n            z-index: 9999;\n            background: linear-gradient(90deg, rgba(220, 38, 38, 0.95) 0%, rgba(153, 27, 27, 0.95) 100%);\n            backdrop-filter: blur(10px);\n            border-top: 1px solid rgba(255, 255, 255, 0.2);\n            box-shadow: 0 -4px 20px rgba(0, 0, 0, 0.5);\n            animation: slideUp 0.6s cubic-bezier(0.16, 1, 0.3, 1);\n        }\n\n        @keyframes slideUp {\n            from { transform: translateY(100%); }\n            to { transform: translateY(0); }\n        }\n\n        .alert-pulse-effect {\n            animation: alertPulse 2s infinite ease-in-out;\n        }\n\n        @keyframes alertPulse {\n            0% { transform: scale(1); opacity: 1; }\n            50% { transform: scale(1.01); opacity: 0.9; }\n            100% { transform: scale(1); opacity: 1; }\n        }\n    <\/style>\n<\/head>\n<body class=\"p-2 md:p-4 min-h-screen\">\n\n    <!-- Sticky Footer Alert (\u0e40\u0e25\u0e37\u0e48\u0e2d\u0e19\u0e15\u0e32\u0e21\u0e08\u0e2d\u0e41\u0e25\u0e30\u0e40\u0e14\u0e48\u0e19\u0e0a\u0e31\u0e14\u0e17\u0e35\u0e48\u0e14\u0e49\u0e32\u0e19\u0e25\u0e48\u0e32\u0e07) -->\n    <div class=\"fixed-footer-alert py-3 px-4\">\n        <div class=\"max-w-5xl mx-auto flex items-center justify-center gap-3 text-white alert-pulse-effect\">\n            <span class=\"flex h-3 w-3 relative\">\n                <span class=\"animate-ping absolute inline-flex h-full w-full rounded-full bg-white opacity-75\"><\/span>\n                <span class=\"relative inline-flex rounded-full h-3 w-3 bg-white\"><\/span>\n            <\/span>\n            <p class=\"text-xs md:text-sm font-bold tracking-wide\">\n                \u26a0\ufe0f \u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e2d\u0e22\u0e39\u0e48\u0e23\u0e30\u0e2b\u0e27\u0e48\u0e32\u0e07\u0e17\u0e14\u0e2a\u0e2d\u0e1a\u0e23\u0e30\u0e1a\u0e1a \u0e01\u0e23\u0e38\u0e13\u0e32\u0e15\u0e23\u0e27\u0e08\u0e2a\u0e2d\u0e1a\u0e04\u0e27\u0e32\u0e21\u0e16\u0e39\u0e01\u0e15\u0e49\u0e2d\u0e07\u0e01\u0e48\u0e2d\u0e19\u0e43\u0e0a\u0e49\u0e07\u0e32\u0e19\n            <\/p>\n        <\/div>\n    <\/div>\n\n    <div class=\"max-w-5xl mx-auto glass-panel shadow-2xl rounded-2xl md:rounded-3xl overflow-hidden mb-8\">\n        <!-- Header -->\n        <div class=\"bg-black\/40 p-5 md:p-6 text-white flex flex-col md:flex-row justify-between items-start md:items-center gap-4 border-b border-white\/5\">\n            <div class=\"flex-1\">\n                <div class=\"flex flex-col md:flex-row md:items-center gap-2 md:gap-4 mb-1\">\n                    <h1 class=\"text-xl md:text-2xl tracking-tight text-amber-500\">\u0e23\u0e30\u0e1a\u0e1a\u0e23\u0e32\u0e22\u0e07\u0e32\u0e19\u0e2a\u0e15\u0e47\u0e2d\u0e01\u0e04\u0e07\u0e40\u0e2b\u0e25\u0e37\u0e2d<\/h1>\n                <\/div>\n                <p class=\"text-xs text-slate-400\">\u0e40\u0e07\u0e34\u0e19\u0e17\u0e38\u0e19\u0e2b\u0e21\u0e38\u0e19\u0e40\u0e27\u0e35\u0e22\u0e19\u0e22\u0e32\u0e07\u0e1e\u0e32\u0e23\u0e32 \u0e01\u0e2d\u0e07\u0e01\u0e32\u0e23\u0e22\u0e32\u0e07 \u0e01\u0e23\u0e21\u0e27\u0e34\u0e0a\u0e32\u0e01\u0e32\u0e23\u0e40\u0e01\u0e29\u0e15\u0e23<\/p>\n            <\/div>\n            <div class=\"flex items-center gap-2\">\n                <div id=\"status\" class=\"text-[10px] bg-amber-500\/10 text-amber-400 px-3 py-1.5 rounded-full border border-amber-500\/20 font-medium whitespace-nowrap\">\n                    \u0e01\u0e33\u0e25\u0e31\u0e07\u0e42\u0e2b\u0e25\u0e14&#8230;\n                <\/div>\n                <button onclick=\"refreshData()\" class=\"p-2 rounded-full bg-slate-800 hover:bg-slate-700 text-slate-400 transition-colors border border-white\/5\" title=\"\u0e23\u0e35\u0e40\u0e1f\u0e23\u0e0a\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\">\n                    <i data-lucide=\"refresh-cw\" class=\"w-4 h-4\" id=\"refresh-icon\"><\/i>\n                <\/button>\n            <\/div>\n        <\/div>\n\n        <!-- Navigation Tabs -->\n        <div class=\"flex border-b border-white\/5 bg-slate-800\/50\">\n            <button onclick=\"showTab('seed')\" id=\"tab-seed\" class=\"tab-btn active flex-1 py-4 text-sm transition-all focus:outline-none font-bold\">\u0e2a\u0e15\u0e47\u0e2d\u0e01\u0e01\u0e34\u0e48\u0e07\u0e1e\u0e31\u0e19\u0e18\u0e38\u0e4c\u0e22\u0e32\u0e07<\/button>\n            <button onclick=\"showTab('rubber')\" id=\"tab-rubber\" class=\"tab-btn flex-1 py-4 text-sm text-slate-500 transition-all focus:outline-none font-bold\">\u0e2a\u0e15\u0e47\u0e2d\u0e01\u0e1c\u0e25\u0e1c\u0e25\u0e34\u0e15\u0e22\u0e32\u0e07<\/button>\n        <\/div>\n\n        <!-- Main Content -->\n        <div class=\"p-4 md:p-6\">\n            \n            <!-- Seed View -->\n            <div id=\"view-seed\">\n                <div id=\"seed-summary-container\" class=\"mb-6\">\n                    <!-- \u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e2a\u0e23\u0e38\u0e1b\u0e22\u0e2d\u0e14\u0e01\u0e34\u0e48\u0e07\u0e1e\u0e31\u0e19\u0e18\u0e38\u0e4c\u0e08\u0e30\u0e16\u0e39\u0e01\u0e2a\u0e23\u0e49\u0e32\u0e07\u0e17\u0e35\u0e48\u0e19\u0e35\u0e48\u0e42\u0e14\u0e22 Javascript -->\n                <\/div>\n\n                <!-- Seed Filters Section -->\n                <div class=\"mb-6 grid grid-cols-1 md:grid-cols-4 gap-3\">\n                    <div class=\"relative md:col-span-1\">\n                        <input type=\"text\" id=\"searchSeedInput\" oninput=\"renderAll()\" placeholder=\"\u0e04\u0e49\u0e19\u0e2b\u0e32\u0e0a\u0e37\u0e48\u0e2d\u0e2b\u0e19\u0e48\u0e27\u0e22\u0e07\u0e32\u0e19...\" class=\"w-full p-2.5 pl-9 border rounded-xl outline-none focus:ring-2 ring-amber-500\/40 focus:border-amber-500 transition-all text-sm\">\n                        <svg class=\"w-4 h-4 absolute left-3 top-3.5 text-slate-500\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M21 21l-6-6m2-5a7 7 0 11-14 0 7 7 0 0114 0z\"><\/path><\/svg>\n                    <\/div>\n                    <select id=\"filterVariety\" onchange=\"renderAll()\" class=\"w-full p-2.5 border rounded-xl outline-none focus:ring-2 ring-amber-500\/40 text-sm cursor-pointer md:col-span-1\">\n                        <option value=\"\">\u0e17\u0e31\u0e49\u0e07\u0e2b\u0e21\u0e14 (\u0e17\u0e38\u0e01\u0e2a\u0e32\u0e22\u0e1e\u0e31\u0e19\u0e18\u0e38\u0e4c)<\/option>\n                    <\/select>\n                    <select id=\"filterAgency\" onchange=\"renderAll()\" class=\"w-full p-2.5 border rounded-xl outline-none focus:ring-2 ring-amber-500\/40 text-sm cursor-pointer md:col-span-1\">\n                        <option value=\"\">\u0e17\u0e31\u0e49\u0e07\u0e2b\u0e21\u0e14 (\u0e17\u0e38\u0e01\u0e2b\u0e19\u0e48\u0e27\u0e22\u0e07\u0e32\u0e19)<\/option>\n                    <\/select>\n                    <button onclick=\"resetFilters('seed')\" class=\"w-full p-2.5 bg-slate-700 hover:bg-slate-600 text-slate-200 font-bold rounded-xl text-sm transition-all flex items-center justify-center gap-2 border border-slate-600 md:col-span-1\">\n                        <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" class=\"h-4 w-4\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\">\n                            <path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M4 4v5h.582m15.356 2A8.001 8.001 0 004.582 9m0 0H9m11 11v-5h-.581m0 0a8.003 8.003 0 01-15.357-2m15.357 2H15\" \/>\n                        <\/svg>\n                        \u0e25\u0e49\u0e32\u0e07\u0e04\u0e48\u0e32\u0e15\u0e31\u0e27\u0e01\u0e23\u0e2d\u0e07\n                    <\/button>\n                <\/div>\n\n                <div class=\"overflow-hidden rounded-xl border border-white\/5 bg-slate-800\/30\">\n                    <div class=\"overflow-x-auto\">\n                        <table class=\"w-full text-left text-sm\">\n                            <thead class=\"bg-slate-800\/80 text-slate-400 select-none\">\n                                <tr>\n                                    <th class=\"p-4 font-bold border-b border-white\/5 cursor-pointer hover:bg-white\/5 transition-colors\" onclick=\"sortBy('seed', 'variety')\">\n                                        <div class=\"flex items-center justify-between\">\u0e2a\u0e32\u0e22\u0e1e\u0e31\u0e19\u0e18\u0e38\u0e4c <span id=\"sort-seed-variety\" class=\"text-xs\"><\/span><\/div>\n                                    <\/th>\n                                    <th class=\"p-4 font-bold border-b border-white\/5 cursor-pointer hover:bg-white\/5 transition-colors\" onclick=\"sortBy('seed', 'agency')\">\n                                        <div class=\"flex items-center justify-between\">\u0e2b\u0e19\u0e48\u0e27\u0e22\u0e07\u0e32\u0e19 <span id=\"sort-seed-agency\" class=\"text-xs\"><\/span><\/div>\n                                    <\/th>\n                                    <th class=\"p-4 font-bold border-b border-white\/5 cursor-pointer hover:bg-white\/5 transition-colors\" onclick=\"sortBy('seed', 'stock')\">\n                                        <div class=\"flex items-center justify-end gap-2\">\u0e04\u0e07\u0e40\u0e2b\u0e25\u0e37\u0e2d (\u0e01\u0e34\u0e48\u0e07) <span id=\"sort-seed-stock\" class=\"text-xs\"><\/span><\/div>\n                                    <\/th>\n                                <\/tr>\n                            <\/thead>\n                            <tbody id=\"seed-body\" class=\"divide-y divide-white\/5\">\n                                <tr><td colspan=\"3\" class=\"p-12 text-center text-slate-500 animate-pulse\">\u0e01\u0e33\u0e25\u0e31\u0e07\u0e14\u0e36\u0e07\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25&#8230;<\/td><\/tr>\n                            <\/tbody>\n                        <\/table>\n                    <\/div>\n                <\/div>\n                <div class=\"mt-4 pt-4 border-t border-white\/5\">\n                    <a href=\"https:\/\/stock.web1500.com\/\" target=\"_blank\" class=\"admin-link\">\n                        <span>\ud83d\udd10<\/span> Admin: \u0e08\u0e31\u0e14\u0e01\u0e32\u0e23\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e01\u0e34\u0e48\u0e07\u0e1e\u0e31\u0e19\u0e18\u0e38\u0e4c\n                    <\/a>\n                <\/div>\n            <\/div>\n\n            <!-- Rubber View -->\n            <div id=\"view-rubber\" class=\"hidden\">\n                <div class=\"grid grid-cols-1 md:grid-cols-3 gap-4 mb-6\">\n                    <div class=\"bg-slate-800 p-6 rounded-2xl text-white shadow-xl border border-white\/5 border-l-4 border-slate-400\">\n                        <p class=\"text-[10px] font-bold text-slate-400 uppercase tracking-widest mb-1\">\u0e22\u0e32\u0e07\u0e41\u0e1c\u0e48\u0e19\u0e14\u0e34\u0e1a\u0e23\u0e27\u0e21<\/p>\n                        <p class=\"text-3xl font-bold text-slate-100\" id=\"sum-raw\">0 \u0e01\u0e01.<\/p>\n                    <\/div>\n                    <div class=\"bg-amber-900\/40 p-6 rounded-2xl text-white shadow-xl border border-amber-500\/20 border-l-4 border-amber-500\">\n                        <p class=\"text-[10px] font-bold text-amber-400\/80 uppercase tracking-widest mb-1\">\u0e22\u0e32\u0e07\u0e41\u0e1c\u0e48\u0e19\u0e23\u0e21\u0e04\u0e27\u0e31\u0e19\u0e23\u0e27\u0e21<\/p>\n                        <p class=\"text-3xl font-bold text-amber-400\" id=\"sum-smoke\">0 \u0e01\u0e01.<\/p>\n                    <\/div>\n                    <div class=\"bg-emerald-900\/40 p-6 rounded-2xl text-white shadow-xl border border-emerald-500\/20 border-l-4 border-emerald-500\">\n                        <p class=\"text-[10px] font-bold text-emerald-400\/80 uppercase tracking-widest mb-1\">\u0e22\u0e32\u0e07\u0e0a\u0e19\u0e34\u0e14\u0e2d\u0e37\u0e48\u0e19\u0e46\u0e23\u0e27\u0e21<\/p>\n                        <p class=\"text-3xl font-bold text-emerald-400\" id=\"sum-other\">0 \u0e01\u0e01.<\/p>\n                    <\/div>\n                <\/div>\n\n                <!-- Rubber Filters Section -->\n                <div class=\"mb-6 grid grid-cols-1 md:grid-cols-3 gap-3\">\n                    <div class=\"relative md:col-span-1\">\n                        <input type=\"text\" id=\"searchRubberInput\" oninput=\"renderAll()\" placeholder=\"\u0e04\u0e49\u0e19\u0e2b\u0e32\u0e0a\u0e37\u0e48\u0e2d\u0e2b\u0e19\u0e48\u0e27\u0e22\u0e07\u0e32\u0e19...\" class=\"w-full p-2.5 pl-9 border rounded-xl outline-none focus:ring-2 ring-amber-500\/40 focus:border-amber-500 transition-all text-sm\">\n                        <svg class=\"w-4 h-4 absolute left-3 top-3.5 text-slate-500\" fill=\"none\" stroke=\"currentColor\" viewBox=\"0 0 24 24\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M21 21l-6-6m2-5a7 7 0 11-14 0 7 7 0 0114 0z\"><\/path><\/svg>\n                    <\/div>\n                    <select id=\"filterRubberUnit\" onchange=\"renderAll()\" class=\"w-full p-2.5 border rounded-xl outline-none focus:ring-2 ring-amber-500\/40 text-sm cursor-pointer md:col-span-1\">\n                        <option value=\"\">\u0e17\u0e31\u0e49\u0e07\u0e2b\u0e21\u0e14 (\u0e17\u0e38\u0e01\u0e28\u0e39\u0e19\u0e22\u0e4c\/\u0e2b\u0e19\u0e48\u0e27\u0e22\u0e07\u0e32\u0e19)<\/option>\n                    <\/select>\n                    <button onclick=\"resetFilters('rubber')\" class=\"w-full p-2.5 bg-slate-700 hover:bg-slate-600 text-slate-200 font-bold rounded-xl text-sm transition-all flex items-center justify-center gap-2 border border-slate-600 md:col-span-1\">\n                        <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" class=\"h-4 w-4\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\">\n                            <path stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M4 4v5h.582m15.356 2A8.001 8.001 0 004.582 9m0 0H9m11 11v-5h-.581m0 0a8.003 8.003 0 01-15.357-2m15.357 2H15\" \/>\n                        <\/svg>\n                        \u0e25\u0e49\u0e32\u0e07\u0e04\u0e48\u0e32\u0e15\u0e31\u0e27\u0e01\u0e23\u0e2d\u0e07\n                    <\/button>\n                <\/div>\n\n                <div class=\"overflow-hidden rounded-xl border border-white\/5 bg-slate-800\/30\">\n                    <div class=\"overflow-x-auto\">\n                        <table class=\"w-full text-left text-sm\">\n                            <thead class=\"bg-slate-800\/80 text-slate-400 border-b border-white\/5 select-none\">\n                                <tr>\n                                    <th class=\"p-4 font-bold cursor-pointer hover:bg-white\/5 transition-colors\" onclick=\"sortBy('rubber', 'unit')\">\n                                        <div class=\"flex items-center justify-between\">\u0e2b\u0e19\u0e48\u0e27\u0e22\u0e07\u0e32\u0e19\/\u0e28\u0e39\u0e19\u0e22\u0e4c <span id=\"sort-rubber-unit\" class=\"text-xs\"><\/span><\/div>\n                                    <\/th>\n                                    <th class=\"p-4 font-bold bg-white\/5 cursor-pointer hover:bg-white\/10 transition-colors\" onclick=\"sortBy('rubber', 'raw')\">\n                                        <div class=\"flex items-center justify-end gap-2\">\u0e22\u0e32\u0e07\u0e41\u0e1c\u0e48\u0e19\u0e14\u0e34\u0e1a (\u0e01\u0e01.) <span id=\"sort-rubber-raw\" class=\"text-xs\"><\/span><\/div>\n                                    <\/th>\n                                    <th class=\"p-4 font-bold bg-amber-500\/5 text-amber-500 cursor-pointer hover:bg-amber-500\/10 transition-colors\" onclick=\"sortBy('rubber', 'smoke')\">\n                                        <div class=\"flex items-center justify-end gap-2\">\u0e22\u0e32\u0e07\u0e41\u0e1c\u0e48\u0e19\u0e23\u0e21\u0e04\u0e27\u0e31\u0e19 (\u0e01\u0e01.) <span id=\"sort-rubber-smoke\" class=\"text-xs\"><\/span><\/div>\n                                    <\/th>\n                                    <th class=\"p-4 font-bold bg-emerald-500\/5 text-emerald-500 cursor-pointer hover:bg-emerald-500\/10 transition-colors\" onclick=\"sortBy('rubber', 'other')\">\n                                        <div class=\"flex items-center justify-end gap-2\">\u0e22\u0e32\u0e07\u0e0a\u0e19\u0e34\u0e14\u0e2d\u0e37\u0e48\u0e19\u0e46 (\u0e01\u0e01.) <span id=\"sort-rubber-other\" class=\"text-xs\"><\/span><\/div>\n                                    <\/th>\n                                <\/tr>\n                            <\/thead>\n                            <tbody id=\"rubber-table-body\" class=\"divide-y divide-white\/5\"><\/tbody>\n                        <\/table>\n                    <\/div>\n                <\/div>\n\n                <div class=\"mt-6 pt-4 border-t border-white\/5\">\n                    <a href=\"https:\/\/stock.web1500.com\/\" target=\"_blank\" class=\"admin-link\">\n                        <span>\ud83d\udd10<\/span> Admin: \u0e08\u0e31\u0e14\u0e01\u0e32\u0e23\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e1c\u0e25\u0e1c\u0e25\u0e34\u0e15\n                    <\/a>\n                <\/div>\n            <\/div>\n\n            <!-- Dynamic Note Section -->\n            <div id=\"note-section\" class=\"mt-12 p-8 bg-amber-900\/10 rounded-[3rem] border border-amber-900\/30 flex flex-col md:flex-row items-center gap-6\">\n                <div class=\"p-4 bg-amber-500 rounded-full text-white shrink-0\">\n                    <i data-lucide=\"alert-circle\" class=\"w-8 h-8\"><\/i>\n                <\/div>\n                <div class=\"flex-1 text-center md:text-left\">\n                    <p class=\"text-lg font-bold text-amber-200 mb-1\">\u0e2b\u0e21\u0e32\u0e22\u0e40\u0e2b\u0e15\u0e38\u0e2a\u0e33\u0e04\u0e31\u0e0d:<\/p>\n                    <p class=\"text-slate-400 font-medium mb-4\">\n                        \u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e2a\u0e15\u0e47\u0e2d\u0e01\u0e21\u0e35\u0e01\u0e32\u0e23\u0e40\u0e1b\u0e25\u0e35\u0e48\u0e22\u0e19\u0e41\u0e1b\u0e25\u0e07\u0e44\u0e14\u0e49\u0e15\u0e25\u0e2d\u0e14\u0e40\u0e27\u0e25\u0e32 \u0e01\u0e23\u0e38\u0e13\u0e32\u0e15\u0e23\u0e27\u0e08\u0e2a\u0e2d\u0e1a\u0e01\u0e31\u0e1a\u0e2b\u0e19\u0e48\u0e27\u0e22\u0e07\u0e32\u0e19\u0e42\u0e14\u0e22\u0e15\u0e23\u0e07\u0e01\u0e48\u0e2d\u0e19\u0e40\u0e02\u0e49\u0e32\u0e23\u0e31\u0e1a\u0e1a\u0e23\u0e34\u0e01\u0e32\u0e23 \n                    <\/p>\n                    <div id=\"note-buttons\" class=\"flex flex-wrap justify-center md:justify-start gap-3\">\n                        <a href=\"https:\/\/stock.web1500.com\/\" target=\"_blank\" class=\"bg-blue-600 hover:bg-blue-500 transition-all px-6 py-2.5 rounded-full text-white text-sm font-bold flex items-center gap-2\">\n                            <span>\ud83d\udcde<\/span> \u0e0a\u0e48\u0e2d\u0e07\u0e17\u0e32\u0e07\u0e15\u0e34\u0e14\u0e15\u0e48\u0e2d\u0e2b\u0e19\u0e48\u0e27\u0e22\u0e07\u0e32\u0e19\u0e41\u0e25\u0e30\u0e15\u0e23\u0e27\u0e08\u0e2a\u0e2d\u0e1a\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\n                        <\/a>\n                    <\/div>\n                <\/div>\n            <\/div>\n        <\/div>\n    <\/div>\n\n    <script>\n        lucide.createIcons();\n\n        \/\/ \u0e40\u0e1b\u0e25\u0e35\u0e48\u0e22\u0e19 URL \u0e40\u0e1b\u0e47\u0e19\u0e25\u0e34\u0e07\u0e01\u0e4c\u0e43\u0e2b\u0e21\u0e48\u0e17\u0e35\u0e48\u0e04\u0e38\u0e13\u0e43\u0e2b\u0e49\u0e21\u0e32\u0e40\u0e1e\u0e35\u0e22\u0e07\u0e25\u0e34\u0e07\u0e01\u0e4c\u0e40\u0e14\u0e35\u0e22\u0e27\n        const URL_DATA = 'https:\/\/docs.google.com\/spreadsheets\/d\/e\/2PACX-1vQ9I56iv2uY3uRQhX55vecHTXmqBBY4hr0yxWtoKNej0aXhdsgwav4_yGMeuCDdWaKCopJpOC80rQC-\/pub?gid=0&single=true&output=csv';\n\n        let data = { seeds: [], rubber: [] };\n\n        \/\/ \u0e04\u0e48\u0e32\u0e40\u0e23\u0e34\u0e48\u0e21\u0e15\u0e49\u0e19\u0e2a\u0e33\u0e2b\u0e23\u0e31\u0e1a\u0e08\u0e31\u0e14\u0e40\u0e23\u0e35\u0e22\u0e07\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\n        let sortConfig = {\n            seed: { key: 'stock', dir: 'desc' }, \/\/ \u0e40\u0e23\u0e35\u0e22\u0e07\u0e01\u0e34\u0e48\u0e07\u0e1e\u0e31\u0e19\u0e18\u0e38\u0e4c\u0e08\u0e32\u0e01\u0e21\u0e32\u0e01\u0e44\u0e1b\u0e19\u0e49\u0e2d\u0e22\n            rubber: { key: 'raw', dir: 'desc' }  \/\/ \u0e40\u0e23\u0e35\u0e22\u0e07\u0e22\u0e32\u0e07\u0e41\u0e1c\u0e48\u0e19\u0e14\u0e34\u0e1a\u0e08\u0e32\u0e01\u0e21\u0e32\u0e01\u0e44\u0e1b\u0e19\u0e49\u0e2d\u0e22\n        };\n\n        \/\/ \u0e1f\u0e31\u0e07\u0e01\u0e4c\u0e0a\u0e31\u0e19\u0e2d\u0e31\u0e1b\u0e40\u0e14\u0e15\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e14\u0e49\u0e27\u0e22\u0e1b\u0e38\u0e48\u0e21 Refresh\n        async function refreshData() {\n            const icon = document.getElementById('refresh-icon');\n            if(icon) icon.classList.add('animate-spin');\n            document.getElementById('status').innerHTML = '\u0e01\u0e33\u0e25\u0e31\u0e07\u0e23\u0e35\u0e40\u0e1f\u0e23\u0e0a...';\n            await load();\n            if(icon) icon.classList.remove('animate-spin');\n        }\n\n        async function load() {\n            try {\n                \/\/ \u0e14\u0e36\u0e07\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e08\u0e32\u0e01 URL \u0e40\u0e14\u0e35\u0e22\u0e27\n                const res = await fetch(URL_DATA + '&t=' + Date.now());\n                const txt = await res.text();\n                \n                \/\/ \u0e41\u0e1b\u0e25\u0e07\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25 CSV \u0e14\u0e49\u0e27\u0e22 PapaParse\n                const parsed = Papa.parse(txt, { skipEmptyLines: true });\n                const allRows = parsed.data;\n                const headers = allRows[0]; \/\/ \u0e41\u0e16\u0e27\u0e17\u0e35\u0e48 1 (\u0e2b\u0e31\u0e27\u0e15\u0e32\u0e23\u0e32\u0e07)\n                const dataRows = allRows.slice(1); \/\/ \u0e41\u0e16\u0e27\u0e17\u0e35\u0e48 2 \u0e40\u0e1b\u0e47\u0e19\u0e15\u0e49\u0e19\u0e44\u0e1b\n\n                \/\/ 1. \u0e14\u0e36\u0e07\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25 \"\u0e01\u0e34\u0e48\u0e07\u0e1e\u0e31\u0e19\u0e18\u0e38\u0e4c\"\n                data.seeds = [];\n                dataRows.forEach(r => {\n                    const agency = r[0]?.trim();\n                    \/\/ \u0e02\u0e49\u0e32\u0e21\u0e16\u0e49\u0e32\u0e44\u0e21\u0e48\u0e21\u0e35\u0e0a\u0e37\u0e48\u0e2d\u0e2b\u0e19\u0e48\u0e27\u0e22\u0e07\u0e32\u0e19 \u0e2b\u0e23\u0e37\u0e2d\u0e0a\u0e37\u0e48\u0e2d\u0e2b\u0e19\u0e48\u0e27\u0e22\u0e07\u0e32\u0e19\u0e21\u0e35\u0e04\u0e33\u0e27\u0e48\u0e32 \"\u0e2a\u0e48\u0e27\u0e19\u0e01\u0e25\u0e32\u0e07\" (\u0e25\u0e1a\u0e0a\u0e48\u0e2d\u0e07\u0e27\u0e48\u0e32\u0e07\u0e01\u0e48\u0e2d\u0e19\u0e40\u0e0a\u0e47\u0e04\u0e40\u0e1e\u0e37\u0e48\u0e2d\u0e04\u0e27\u0e32\u0e21\u0e0a\u0e31\u0e27\u0e23\u0e4c)\n                    if (!agency || agency.replace(\/\\s+\/g, '').includes('\u0e2a\u0e48\u0e27\u0e19\u0e01\u0e25\u0e32\u0e07')) return; \n                    \n                    \/\/ \u0e27\u0e19\u0e25\u0e39\u0e1b\u0e04\u0e2d\u0e25\u0e31\u0e21\u0e19\u0e4c B (index 1) \u0e16\u0e36\u0e07 L (index 11)\n                    for (let i = 1; i <= 11; i++) {\n                        const variety = headers[i]?.trim();\n                        if (!variety) continue;\n                        \n                        const stockStr = r[i] || '';\n                        const stock = parseInt(stockStr.replace(\/,\/g, '')) || 0;\n                        \n                        \/\/ \u0e40\u0e01\u0e47\u0e1a\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e40\u0e09\u0e1e\u0e32\u0e30\u0e2a\u0e32\u0e22\u0e1e\u0e31\u0e19\u0e18\u0e38\u0e4c\u0e17\u0e35\u0e48\u0e21\u0e35\u0e08\u0e33\u0e19\u0e27\u0e19\u0e04\u0e07\u0e40\u0e2b\u0e25\u0e37\u0e2d\u0e21\u0e32\u0e01\u0e01\u0e27\u0e48\u0e32 0\n                        if (stock > 0) {\n                            data.seeds.push({ agency, variety, stock });\n                        }\n                    }\n                });\n\n                \/\/ 2. \u0e14\u0e36\u0e07\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25 \"\u0e1c\u0e25\u0e1c\u0e25\u0e34\u0e15\u0e22\u0e32\u0e07\"\n                const rawRubberData = dataRows.map(r => ({\n                    unit: r[0]?.trim(), \/\/ \u0e04\u0e2d\u0e25\u0e31\u0e21\u0e19\u0e4c A\n                    raw: parseFloat((r[12] || '').replace(\/,\/g, '')) || 0,   \/\/ \u0e04\u0e2d\u0e25\u0e31\u0e21\u0e19\u0e4c M (index 12)\n                    smoke: parseFloat((r[13] || '').replace(\/,\/g, '')) || 0, \/\/ \u0e04\u0e2d\u0e25\u0e31\u0e21\u0e19\u0e4c N (index 13)\n                    other: parseFloat((r[14] || '').replace(\/,\/g, '')) || 0  \/\/ \u0e04\u0e2d\u0e25\u0e31\u0e21\u0e19\u0e4c O (index 14)\n                })).filter(r => r.unit);\n\n                data.rubber = rawRubberData.reduce((acc, current) => {\n                    const existing = acc.find(item => item.unit === current.unit);\n                    if (existing) {\n                        existing.raw += current.raw;\n                        existing.smoke += current.smoke;\n                        existing.other += current.other;\n                    } else {\n                        acc.push({ ...current });\n                    }\n                    return acc;\n                }, []);\n                \n                populateFilters();\n                renderAll();\n                document.getElementById('status').innerHTML = `<span>\ud83d\udfe2<\/span> \u0e25\u0e48\u0e32\u0e2a\u0e38\u0e14: ${new Date().toLocaleTimeString('th-TH')}`;\n            } catch (e) {\n                console.error(e);\n                document.getElementById('status').innerText = '\u274c \u0e1c\u0e34\u0e14\u0e1e\u0e25\u0e32\u0e14';\n            }\n        }\n\n        function populateFilters() {\n            const varieties = [...new Set(data.seeds.map(s => s.variety))].sort();\n            const vSelect = document.getElementById('filterVariety');\n            if(vSelect) {\n                vSelect.innerHTML = '<option value=\"\">\u0e17\u0e31\u0e49\u0e07\u0e2b\u0e21\u0e14 (\u0e17\u0e38\u0e01\u0e2a\u0e32\u0e22\u0e1e\u0e31\u0e19\u0e18\u0e38\u0e4c)<\/option>';\n                varieties.forEach(v => {\n                    const opt = document.createElement('option');\n                    opt.value = v; opt.textContent = v;\n                    vSelect.appendChild(opt);\n                });\n            }\n\n            const agencies = [...new Set(data.seeds.map(s => s.agency))].sort();\n            const aSelect = document.getElementById('filterAgency');\n            if(aSelect) {\n                aSelect.innerHTML = '<option value=\"\">\u0e17\u0e31\u0e49\u0e07\u0e2b\u0e21\u0e14 (\u0e17\u0e38\u0e01\u0e2b\u0e19\u0e48\u0e27\u0e22\u0e07\u0e32\u0e19)<\/option>';\n                agencies.forEach(a => {\n                    const opt = document.createElement('option');\n                    opt.value = a; opt.textContent = a;\n                    aSelect.appendChild(opt);\n                });\n            }\n\n            const units = [...new Set(data.rubber.map(r => r.unit))].sort();\n            const uSelect = document.getElementById('filterRubberUnit');\n            if(uSelect) {\n                uSelect.innerHTML = '<option value=\"\">\u0e17\u0e31\u0e49\u0e07\u0e2b\u0e21\u0e14 (\u0e17\u0e38\u0e01\u0e28\u0e39\u0e19\u0e22\u0e4c\/\u0e2b\u0e19\u0e48\u0e27\u0e22\u0e07\u0e32\u0e19)<\/option>';\n                units.forEach(u => {\n                    const opt = document.createElement('option');\n                    opt.value = u; opt.textContent = u;\n                    uSelect.appendChild(opt);\n                });\n            }\n        }\n\n        function resetFilters(type) {\n            if (type === 'seed' || !type) {\n                document.getElementById('searchSeedInput').value = '';\n                document.getElementById('filterVariety').value = '';\n                document.getElementById('filterAgency').value = '';\n            }\n            if (type === 'rubber' || !type) {\n                document.getElementById('searchRubberInput').value = '';\n                document.getElementById('filterRubberUnit').value = '';\n            }\n            renderAll();\n        }\n\n        \/\/ \u0e1f\u0e31\u0e07\u0e01\u0e4c\u0e0a\u0e31\u0e19\u0e08\u0e31\u0e14\u0e01\u0e32\u0e23\u0e01\u0e32\u0e23\u0e04\u0e25\u0e34\u0e01\u0e40\u0e23\u0e35\u0e22\u0e07\u0e04\u0e2d\u0e25\u0e31\u0e21\u0e19\u0e4c\n        function sortBy(tab, key) {\n            if (sortConfig[tab].key === key) {\n                \/\/ \u0e16\u0e49\u0e32\u0e01\u0e14\u0e17\u0e35\u0e48\u0e04\u0e2d\u0e25\u0e31\u0e21\u0e19\u0e4c\u0e40\u0e14\u0e34\u0e21 \u0e43\u0e2b\u0e49\u0e2a\u0e25\u0e31\u0e1a\u0e17\u0e34\u0e28\u0e17\u0e32\u0e07\n                sortConfig[tab].dir = sortConfig[tab].dir === 'asc' ? 'desc' : 'asc';\n            } else {\n                \/\/ \u0e16\u0e49\u0e32\u0e40\u0e1b\u0e25\u0e35\u0e48\u0e22\u0e19\u0e04\u0e2d\u0e25\u0e31\u0e21\u0e19\u0e4c\u0e43\u0e2b\u0e21\u0e48 \u0e40\u0e23\u0e34\u0e48\u0e21\u0e15\u0e49\u0e19\u0e14\u0e49\u0e27\u0e22\u0e01\u0e32\u0e23\u0e40\u0e23\u0e35\u0e22\u0e07\u0e08\u0e32\u0e01\u0e21\u0e32\u0e01\u0e44\u0e1b\u0e19\u0e49\u0e2d\u0e22\n                sortConfig[tab].key = key;\n                sortConfig[tab].dir = 'desc'; \n            }\n            renderAll();\n        }\n\n        \/\/ \u0e1f\u0e31\u0e07\u0e01\u0e4c\u0e0a\u0e31\u0e19\u0e41\u0e2a\u0e14\u0e07\u0e25\u0e39\u0e01\u0e28\u0e23\u0e0a\u0e35\u0e49\u0e02\u0e36\u0e49\u0e19\u0e25\u0e07\n        function updateSortIcons() {\n            const allIcons = document.querySelectorAll('[id^=\"sort-\"]');\n            allIcons.forEach(el => el.innerHTML = '');\n\n            if (sortConfig.seed.key) {\n                const el = document.getElementById(`sort-seed-${sortConfig.seed.key}`);\n                if (el) el.innerHTML = sortConfig.seed.dir === 'asc' ? '\u25b2' : '\u25bc';\n            }\n            if (sortConfig.rubber.key) {\n                const el = document.getElementById(`sort-rubber-${sortConfig.rubber.key}`);\n                if (el) el.innerHTML = sortConfig.rubber.dir === 'asc' ? '\u25b2' : '\u25bc';\n            }\n        }\n\n        function renderAll() {\n            const searchSeed = document.getElementById('searchSeedInput').value.toLowerCase();\n            const searchRubber = document.getElementById('searchRubberInput').value.toLowerCase();\n            const selVariety = document.getElementById('filterVariety').value;\n            const selAgency = document.getElementById('filterAgency').value;\n            const selRubberUnit = document.getElementById('filterRubberUnit').value;\n\n            \/\/ --- \u0e08\u0e31\u0e14\u0e01\u0e32\u0e23\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25 Seed ---\n            let filteredSeeds = data.seeds.filter(s => {\n                const matchSearch = s.variety.toLowerCase().includes(searchSeed) || s.agency.toLowerCase().includes(searchSeed);\n                const matchVariety = !selVariety || s.variety === selVariety;\n                const matchAgency = !selAgency || s.agency === selAgency;\n                return matchSearch && matchVariety && matchAgency;\n            });\n\n            \/\/ \u0e2d\u0e31\u0e1b\u0e40\u0e14\u0e15\u0e22\u0e2d\u0e14\u0e23\u0e27\u0e21\u0e01\u0e34\u0e48\u0e07\u0e1e\u0e31\u0e19\u0e18\u0e38\u0e4c (\u0e41\u0e22\u0e01\u0e15\u0e32\u0e21\u0e2a\u0e32\u0e22\u0e1e\u0e31\u0e19\u0e18\u0e38\u0e4c)\n            const seedSummaryContainer = document.getElementById('seed-summary-container');\n            if (seedSummaryContainer) {\n                \/\/ \u0e2b\u0e32\u0e23\u0e27\u0e21\u0e17\u0e31\u0e49\u0e07\u0e2b\u0e21\u0e14\n                const totalSeed = filteredSeeds.reduce((a,c) => a + c.stock, 0);\n                \n                \/\/ \u0e23\u0e27\u0e21\u0e41\u0e22\u0e01\u0e15\u0e32\u0e21\u0e2a\u0e32\u0e22\u0e1e\u0e31\u0e19\u0e18\u0e38\u0e4c\n                const varietySums = {};\n                filteredSeeds.forEach(s => {\n                    if (!varietySums[s.variety]) varietySums[s.variety] = 0;\n                    varietySums[s.variety] += s.stock;\n                });\n                \n                \/\/ \u0e40\u0e23\u0e35\u0e22\u0e07\u0e0a\u0e37\u0e48\u0e2d\u0e2a\u0e32\u0e22\u0e1e\u0e31\u0e19\u0e18\u0e38\u0e4c\n                const sortedVarieties = Object.keys(varietySums).sort();\n\n                let summaryHtml = `\n                    <div class=\"bg-indigo-900\/40 p-4 md:p-6 rounded-2xl text-white shadow-xl border border-indigo-500\/20 border-l-4 border-indigo-500\">\n                        <p class=\"text-[10px] font-bold text-indigo-400\/80 uppercase tracking-widest mb-3\">\u0e2a\u0e23\u0e38\u0e1b\u0e08\u0e33\u0e19\u0e27\u0e19\u0e01\u0e34\u0e48\u0e07\u0e1e\u0e31\u0e19\u0e18\u0e38\u0e4c\u0e41\u0e22\u0e01\u0e15\u0e32\u0e21\u0e2a\u0e32\u0e22\u0e1e\u0e31\u0e19\u0e18\u0e38\u0e4c<\/p>\n                        <div class=\"grid grid-cols-2 md:grid-cols-4 lg:grid-cols-5 gap-2 md:gap-3\">\n                `;\n\n                sortedVarieties.forEach(v => {\n                    summaryHtml += `\n                            <div class=\"bg-indigo-950\/50 p-2.5 md:p-3 rounded-xl border border-indigo-500\/10 hover:bg-indigo-900\/50 transition-colors\">\n                                <p class=\"text-[10px] font-bold text-indigo-300 mb-0.5 truncate\" title=\"${v}\">${v}<\/p>\n                                <p class=\"text-base md:text-lg font-bold text-indigo-200\">${varietySums[v].toLocaleString()}<\/p>\n                            <\/div>\n                    `;\n                });\n\n                summaryHtml += `\n                        <\/div>\n                    <\/div>\n                `;\n                seedSummaryContainer.innerHTML = summaryHtml;\n            }\n\n            \/\/ \u0e01\u0e32\u0e23\u0e08\u0e31\u0e14\u0e40\u0e23\u0e35\u0e22\u0e07 (Sorting) \u0e2a\u0e33\u0e2b\u0e23\u0e31\u0e1a\u0e01\u0e34\u0e48\u0e07\u0e1e\u0e31\u0e19\u0e18\u0e38\u0e4c\n            if (sortConfig.seed.key) {\n                filteredSeeds.sort((a, b) => {\n                    let valA = a[sortConfig.seed.key];\n                    let valB = b[sortConfig.seed.key];\n                    if (typeof valA === 'string') valA = valA.toLowerCase();\n                    if (typeof valB === 'string') valB = valB.toLowerCase();\n                    if (valA < valB) return sortConfig.seed.dir === 'asc' ? -1 : 1;\n                    if (valA > valB) return sortConfig.seed.dir === 'asc' ? 1 : -1;\n                    return 0;\n                });\n            }\n            \n            const seedBody = document.getElementById('seed-body');\n            if(seedBody) {\n                seedBody.innerHTML = filteredSeeds.map(s => `\n                    <tr class=\"hover:bg-white\/5 transition-colors\">\n                        <td class=\"p-4 font-bold text-amber-500\">${s.variety}<\/td>\n                        <td class=\"p-4 text-slate-400 font-medium\">${s.agency}<\/td>\n                        <td class=\"p-4 text-right font-bold text-slate-200\">${s.stock.toLocaleString()}<\/td>\n                    <\/tr>\n                `).join('') || '<tr><td colspan=\"3\" class=\"p-12 text-center text-slate-500 font-medium\">\u0e44\u0e21\u0e48\u0e1e\u0e1a\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25<\/td><\/tr>';\n            }\n\n            \/\/ --- \u0e08\u0e31\u0e14\u0e01\u0e32\u0e23\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25 Rubber ---\n            let filteredRubber = data.rubber.filter(r => {\n                const matchSearch = r.unit.toLowerCase().includes(searchRubber);\n                const matchUnit = !selRubberUnit || r.unit === selRubberUnit;\n                return matchSearch && matchUnit;\n            });\n\n            \/\/ \u0e2d\u0e31\u0e1b\u0e40\u0e14\u0e15\u0e22\u0e2d\u0e14\u0e23\u0e27\u0e21\u0e22\u0e32\u0e07\n            const sumRaw = document.getElementById('sum-raw');\n            const sumSmoke = document.getElementById('sum-smoke');\n            const sumOther = document.getElementById('sum-other');\n            if(sumRaw) sumRaw.innerText = filteredRubber.reduce((a,c)=>a+c.raw,0).toLocaleString() + ' \u0e01\u0e01.';\n            if(sumSmoke) sumSmoke.innerText = filteredRubber.reduce((a,c)=>a+c.smoke,0).toLocaleString() + ' \u0e01\u0e01.';\n            if(sumOther) sumOther.innerText = filteredRubber.reduce((a,c)=>a+c.other,0).toLocaleString() + ' \u0e01\u0e01.';\n\n            \/\/ \u0e01\u0e32\u0e23\u0e08\u0e31\u0e14\u0e40\u0e23\u0e35\u0e22\u0e07 (Sorting) \u0e2a\u0e33\u0e2b\u0e23\u0e31\u0e1a\u0e1c\u0e25\u0e1c\u0e25\u0e34\u0e15\u0e22\u0e32\u0e07\n            if (sortConfig.rubber.key) {\n                filteredRubber.sort((a, b) => {\n                    let valA = a[sortConfig.rubber.key];\n                    let valB = b[sortConfig.rubber.key];\n                    if (typeof valA === 'string') valA = valA.toLowerCase();\n                    if (typeof valB === 'string') valB = valB.toLowerCase();\n                    if (valA < valB) return sortConfig.rubber.dir === 'asc' ? -1 : 1;\n                    if (valA > valB) return sortConfig.rubber.dir === 'asc' ? 1 : -1;\n                    return 0;\n                });\n            }\n\n            const rubberBody = document.getElementById('rubber-table-body');\n            if(rubberBody) {\n                rubberBody.innerHTML = filteredRubber.map(r => `\n                    <tr class=\"hover:bg-white\/5 transition-colors group\">\n                        <td class=\"p-4 border-r border-white\/5\">\n                            <div class=\"flex items-center gap-2\">\n                                <span class=\"text-slate-500 text-xs\">\ud83c\udfdb\ufe0f<\/span>\n                                <span class=\"font-bold text-slate-300\">${r.unit}<\/span>\n                            <\/div>\n                        <\/td>\n                        <td class=\"p-4 text-right font-bold text-slate-400 bg-white\/5 group-hover:bg-white\/10 transition-colors border-r border-white\/5\">\n                            ${r.raw.toLocaleString()}\n                        <\/td>\n                        <td class=\"p-4 text-right font-bold text-amber-500 bg-amber-500\/5 group-hover:bg-amber-500\/10 transition-colors border-r border-white\/5\">\n                            ${r.smoke.toLocaleString()}\n                        <\/td>\n                        <td class=\"p-4 text-right font-bold text-emerald-500 bg-emerald-500\/5 group-hover:bg-emerald-500\/10 transition-colors\">\n                            ${r.other.toLocaleString()}\n                        <\/td>\n                    <\/tr>\n                `).join('') || '<tr><td colspan=\"4\" class=\"p-12 text-center text-slate-500 font-medium\">\u0e44\u0e21\u0e48\u0e1e\u0e1a\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e1c\u0e25\u0e1c\u0e25\u0e34\u0e15\u0e22\u0e32\u0e07<\/td><\/tr>';\n            }\n\n            updateSortIcons();\n        }\n\n        window.showTab = (t) => {\n            document.getElementById('view-seed').classList.toggle('hidden', t !== 'seed');\n            document.getElementById('view-rubber').classList.toggle('hidden', t !== 'rubber');\n            document.getElementById('tab-seed').className = `tab-btn flex-1 py-4 font-bold text-sm transition-all focus:outline-none ${t==='seed'?'active':'text-slate-500'}`;\n            document.getElementById('tab-rubber').className = `tab-btn flex-1 py-4 font-bold text-sm transition-all focus:outline-none ${t==='rubber'?'active':'text-slate-500'}`;\n        }\n\n        load();\n    <\/script>\n<\/body>\n<\/html>\n\n<\/div>","protected":false},"excerpt":{"rendered":"<p>Stock Report &#8211; \u0e40\u0e07\u0e34\u0e19\u0e17\u0e38\u0e19\u0e2b\u0e21\u0e38\u0e19\u0e40\u0e27\u0e35\u0e22\u0e19\u0e22\u0e32\u0e07\u0e1e\u0e32\u0e23\u0e32 \u26a0\ufe0f \u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e2d [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_acf_changed":false,"_eb_attr":"","footnotes":""},"class_list":["post-12983","page","type-page","status-publish","hentry"],"acf":[],"_links":{"self":[{"href":"https:\/\/www.doa.go.th\/rubberfund\/wp-json\/wp\/v2\/pages\/12983","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.doa.go.th\/rubberfund\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/www.doa.go.th\/rubberfund\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/www.doa.go.th\/rubberfund\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.doa.go.th\/rubberfund\/wp-json\/wp\/v2\/comments?post=12983"}],"version-history":[{"count":70,"href":"https:\/\/www.doa.go.th\/rubberfund\/wp-json\/wp\/v2\/pages\/12983\/revisions"}],"predecessor-version":[{"id":13312,"href":"https:\/\/www.doa.go.th\/rubberfund\/wp-json\/wp\/v2\/pages\/12983\/revisions\/13312"}],"wp:attachment":[{"href":"https:\/\/www.doa.go.th\/rubberfund\/wp-json\/wp\/v2\/media?parent=12983"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}