{"id":7,"date":"2026-06-15T08:49:59","date_gmt":"2026-06-15T08:49:59","guid":{"rendered":"https:\/\/h344e.com\/?page_id=7"},"modified":"2026-06-15T09:55:48","modified_gmt":"2026-06-15T09:55:48","slug":"elementor-7","status":"publish","type":"page","link":"https:\/\/h344e.com\/","title":{"rendered":"Elementor #7"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-post\" data-elementor-id=\"7\" class=\"elementor elementor-7\" data-elementor-post-type=\"page\">\n\t\t\t\t<div class=\"elementor-element elementor-element-4ae615b e-flex e-con-boxed e-con e-parent\" data-id=\"4ae615b\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-705c0d2 elementor-widget elementor-widget-html\" data-id=\"705c0d2\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t\t<div class=\"vvip-stock-box\">\n    <h2>\u6052\u751fVIPP\u7248<\/h2>\n    <div class=\"vvip-price-row\">\n        <span id=\"last-price\">-<\/span>\n        <span class=\"vvip-change-box\">\n            (<span id=\"change\">-<\/span> \/ <span id=\"change-percentage\">-<\/span>)\n        <\/span>\n    <\/div>\n    <div class=\"vvip-subtext\">\n        - \u5b9e\u65f6\u884c\u60c5. \u8d27\u5e01\u5355\u4f4d: \u6797\u5409\u7279 (MYR) (<a href=\"#\" onclick=\"return false;\" style=\"color:#666; text-decoration:underline;\">\u514d\u8d23\u58f0\u660e<\/a>)\n    <\/div>\n\n    <div class=\"vvip-time-tabs\">\n        <button class=\"tab-btn active\">1\u5206<\/button>\n        <button class=\"tab-btn\">5\u5206<\/button>\n        <button class=\"tab-btn\">15\u5206<\/button>\n        <button class=\"tab-btn\">30\u5206<\/button>\n        <button class=\"tab-btn\">1\u5c0f\u65f6<\/button>\n        <button class=\"tab-btn\">5\u5c0f\u65f6<\/button>\n        <button class=\"tab-btn\">1\u5929<\/button>\n        <button class=\"tab-btn\">1\u5468<\/button>\n        <button class=\"tab-btn\">\u6708K<\/button>\n    <\/div>\n\n    <div class=\"vvip-chart-container\">\n        <canvas id=\"myChart\"><\/canvas>\n    <\/div>\n\n    <table class=\"vvip-data-table\">\n        <tr>\n            <td class=\"lbl\">\u6210\u4ea4\u91cf<\/td>\n            <td class=\"val\" id=\"volume\">-<\/td>\n            <td class=\"lbl\">\u5f00\u76d8\u4ef7<\/td>\n            <td class=\"val\" id=\"open\">-<\/td>\n        <\/tr>\n        <tr>\n            <td class=\"lbl\">\u6700\u65b0\u4ef7<\/td>\n            <td class=\"val\" id=\"last\">-<\/td>\n            <td class=\"lbl\">\u6628\u6536<\/td>\n            <td class=\"val\" id=\"prev-close\">-<\/td>\n        <\/tr>\n        <tr>\n            <td class=\"lbl\">\u6700\u9ad8\u4ef7<\/td>\n            <td class=\"val\" id=\"high\">-<\/td>\n            <td class=\"lbl\">\u6700\u4f4e\u4ef7<\/td>\n            <td class=\"val\" id=\"low\">-<\/td>\n        <\/tr>\n        <tr>\n            <td class=\"lbl\">\u6210\u4ea4\u989d<\/td>\n            <td class=\"val\" id=\"amount\">-<\/td>\n            <td class=\"lbl\">\u66f4\u65b0\u65e5\u671f<\/td>\n            <td class=\"val\" id=\"current-date\">-<\/td>\n        <\/tr>\n    <\/table>\n<\/div>\n\n<script src=\"https:\/\/cdn.jsdelivr.net\/npm\/chart.js\"><\/script>\n\n<script src=\"https:\/\/cdn.jsdelivr.net\/npm\/chart.js\"><\/script>\n\n<script>\n    const apiURL = 'https:\/\/script.google.com\/macros\/s\/AKfycbysB8wn_NZrDpXbVyHM4Klhcpgbfuc0azTw77SDjSGqvXVXRCX3Q-kFIyCuot_8G40z4A\/exec'; \n    let myChart;\n\n    function renderStockUI(data) {\n        if (!data) return;\n\n       \n        if (data.lastPrice !== undefined) document.getElementById('last-price').innerText = data.lastPrice;\n        if (data.tableData) {\n            document.getElementById('change').innerText = data.tableData.change;\n            document.getElementById('change-percentage').innerText = data.tableData.changePercentage;\n\n           \n            document.getElementById('volume').innerText = data.tableData.volume;\n            document.getElementById('open').innerText = data.tableData.open;\n            document.getElementById('last').innerText = data.tableData.last;\n            document.getElementById('prev-close').innerText = data.tableData.prevClose;\n            document.getElementById('high').innerText = data.tableData.high;\n            document.getElementById('low').innerText = data.tableData.low;\n            document.getElementById('amount').innerText = data.tableData.amount;\n        }\n        if (data.date !== undefined) document.getElementById('current-date').innerText = data.date;\n\n      \n        if (data.chart && data.chart.labels && data.chart.prices) {\n            const ctx = document.getElementById('myChart').getContext('2d');\n            if (myChart) {\n                myChart.data.labels = data.chart.labels;\n                myChart.data.datasets[0].data = data.chart.prices;\n                myChart.update('none');\n            } else {\n                myChart = new Chart(ctx, {\n                    type: 'line',\n                    data: {\n                        labels: data.chart.labels,\n                        datasets: [{\n                            label: 'Price',\n                            data: data.chart.prices,\n                            borderColor: '#0D6C29',\n                            backgroundColor: '#0D6C2973',\n                            fill: true,\n                            tension: 0.3,\n                            borderWidth: 1.5,\n                            pointRadius: 0,\n                            spanGaps: false\n                        }]\n                    },\n                    options: {\n                        responsive: true,\n                        maintainAspectRatio: false,\n                        plugins: {\n                            tooltip: { enabled: true },\n                            legend: { display: false }\n                        },\n                        scales: {\n                            y: {\n                                position: 'right',\n                                beginAtZero: false\n                            },\n                            x: {\n                                ticks: { autoSkip: true, maxTicksLimit: 8 }\n                            }\n                        }\n                    }\n                });\n            }\n        }\n    }\n\n   \n    async function fetchAndUpdateStock() {\n        try {\n            const response = await fetch(apiURL);\n            const data = await response.json();\n\n          \n            localStorage.setItem('vvip_stock_cache', JSON.stringify(data));\n\n      \n            renderStockUI(data);\n        } catch (error) {\n            console.error('Error fetching real-time data:', error);\n        }\n    }\n\n   \n    const cachedStockData = localStorage.getItem('vvip_stock_cache');\n    if (cachedStockData) {\n        try {\n            const parsedData = JSON.parse(cachedStockData);\n            renderStockUI(parsedData);\n        } catch (e) {\n            console.error('Cache parsing error:', e);\n        }\n    }\n\n\n    fetchAndUpdateStock();\n    setInterval(fetchAndUpdateStock, 10000);\n<\/script>\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-3a1402a elementor-widget elementor-widget-html\" data-id=\"3a1402a\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t\t<div class=\"vvip-summary-table-box\">\n    <table class=\"vvip-summary-table\">\n        <thead>\n            <tr>\n                <th rowspan=\"2\">\u65e5\u671f<\/th>\n                <th colspan=\"2\">\u4e0a\u5348<\/th>\n                <th colspan=\"2\">\u4e0b\u5348<\/th>\n            <\/tr>\n            <tr>\n                <th>\u9876\u90e8<\/th>\n                <th>\u5e95\u90e8<\/th>\n                <th>\u9876\u90e8<\/th>\n                <th>\u5e95\u90e8<\/th>\n            <\/tr>\n        <\/thead>\n        <tbody>\n            <tr>\n                <td id=\"unique-date\">-<\/td>\n                <td id=\"morning-top\" class=\"vvip-summary-number\">-<\/td>\n                <td id=\"morning-bottom\" class=\"vvip-summary-number\">-<\/td>\n                <td id=\"afternoon-top\" class=\"vvip-summary-number\">-<\/td>\n                <td id=\"afternoon-bottom\" class=\"vvip-summary-number\">-<\/td>\n            <\/tr>\n        <\/tbody>\n    <\/table>\n<\/div>\n\n<script>\n    (function() {\n        const summaryApiURL = 'https:\/\/script.google.com\/macros\/s\/AKfycbxGJD09qUbKihSegnx1HntAk1Hc2ZvruVKkaiwweuE_WRL8Y3GJAKohSc3ucdByNq66\/exec';\n\n        function renderSummaryUI(data) {\n            if (!data) return false;\n\n            const dateEl = document.getElementById(\"unique-date\");\n            const mTopEl = document.getElementById(\"morning-top\");\n            const mBotEl = document.getElementById(\"morning-bottom\");\n            const aTopEl = document.getElementById(\"afternoon-top\");\n            const aBotEl = document.getElementById(\"afternoon-bottom\");\n\n            if (!dateEl || !mTopEl || !mBotEl || !aTopEl || !aBotEl) {\n                return false;\n            }\n\n            const localDate = new Date();\n            const year = localDate.getFullYear();\n            const month = String(localDate.getMonth() + 1).padStart(2, '0');\n            const day = String(localDate.getDate()).padStart(2, '0');\n            \n            dateEl.textContent = `${year}-${month}-${day}`;\n\n            if (data.morning) {\n                mTopEl.textContent = data.morning.top || \"-\";\n                mBotEl.textContent = data.morning.bottom || \"-\";\n            }\n            if (data.afternoon) {\n                aTopEl.textContent = data.afternoon.top || \"-\";\n                aBotEl.textContent = data.afternoon.bottom || \"-\";\n            }\n            return true;\n        }\n\n        async function fetchSummaryData() {\n            try {\n                const response = await fetch(summaryApiURL);\n                const data = await response.json();\n                localStorage.setItem('vvip_summary_cache', JSON.stringify(data));\n                renderSummaryUI(data);\n            } catch (error) {\n            }\n        }\n\n        function startSummarySystem() {\n            const cachedSummaryData = localStorage.getItem('vvip_summary_cache');\n            if (cachedSummaryData) {\n                try {\n                    renderSummaryUI(JSON.parse(cachedSummaryData));\n                } catch (e) {\n                }\n            }\n            fetchSummaryData();\n            setInterval(fetchSummaryData, 10000);\n        }\n\n        const checkElementsExist = setInterval(function() {\n            if (document.getElementById(\"unique-date\")) {\n                clearInterval(checkElementsExist);\n                startSummarySystem();\n            }\n        }, 100);\n    })();\n<\/script>\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-36f16f7 elementor-widget elementor-widget-html\" data-id=\"36f16f7\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t\t<div class=\"vvip-history-container\">\n    <h2>\u5386\u53f2\u6570\u636e<\/h2>\n    <table class=\"vvip-history-table\" id=\"vvipHistoryTable\">\n        <thead>\n            <tr>\n                <th>\u65e5\u671f<\/th>\n                <th>\u4e0a\u5348\u9876\u90e8<\/th>\n                <th>\u4e0a\u5348\u5e95\u90e8<\/th>\n                <th>\u4e0b\u5348\u9876\u90e8<\/th>\n                <th>\u4e0b\u5348\u5e95\u90e8<\/th>\n            <\/tr>\n        <\/thead>\n        <tbody><\/tbody>\n    <\/table>\n<\/div>\n\n<script>\n    const sheetID = '15BMzEcffp1oh1orA4NRqjEA3XEA30nvzTbbTW8uyjf0';\n    const apiKey = 'AIzaSyBWdjKzOVW0XoB6h26sLHF0th65nc2TIEU';\n    const sheetRange = '\u0e22\u0e49\u0e2d\u0e19\u0e2b\u0e25\u0e31\u0e07!A3:E';\n\n    let sheetData = [];\n\n    function fetchData() {\n        const url = `https:\/\/sheets.googleapis.com\/v4\/spreadsheets\/${sheetID}\/values\/${sheetRange}?key=${apiKey}`;\n        fetch(url)\n            .then(response => response.json())\n            .then(data => {\n                sheetData = data.values;\n                displayData(sheetData);\n            })\n            .catch(error => {\n            });\n    }\n\n    function displayData(data) {\n        const tableBody = document.querySelector('#vvipHistoryTable tbody');\n        if (!tableBody || !data) return;\n        tableBody.innerHTML = '';\n\n        const maxRows = 10;\n        const rowsToShow = data.slice(0, maxRows);\n\n        rowsToShow.forEach((row, index) => {\n            const tr = document.createElement('tr');\n            const dateCell = document.createElement('td');\n            dateCell.textContent = row[0];\n            tr.appendChild(dateCell);\n\n            if (index === 0) {\n                tr.appendChild(createCell(getValueAtTime(row[1], '00:01')));\n                tr.appendChild(createCell(getValueAtTime(row[2], '00:01')));\n                tr.appendChild(createCell(getValueAtTime(row[3], '00:01')));\n                tr.appendChild(createCell(getValueAtTime(row[4], '00:01')));\n            } else {\n                tr.appendChild(createCell(row[1]));\n                tr.appendChild(createCell(row[2]));\n                tr.appendChild(createCell(row[3]));\n                tr.appendChild(createCell(row[4]));\n            }\n\n            tableBody.appendChild(tr);\n        });\n    }\n\n    function createCell(content) {\n        const td = document.createElement('td');\n        td.textContent = content || '-';\n        return td;\n    }\n\n    function getValueAtTime(value, time) {\n        const now = new Date();\n        const hour = parseInt(time.split(':')[0], 10);\n        const minute = parseInt(time.split(':')[1], 10);\n\n        if (now.getHours() > hour || (now.getHours() === hour && now.getMinutes() >= minute)) {\n            return value;\n        }\n        return '-';\n    }\n\n    window.addEventListener('load', function() {\n        fetchData();\n        setInterval(fetchData, 60000);\n    });\n<\/script>\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>\u6052\u751fVIPP\u7248 &#8211; (- \/ -) &#8211; \u5b9e\u65f6\u884c\u60c5. \u8d27\u5e01\u5355\u4f4d: \u6797\u5409\u7279 (MYR) (\u514d\u8d23\u58f0\u660e) 1\u5206 5\u5206 15\u5206 30\u5206 1\u5c0f\u65f6 5\u5c0f\u65f6 1\u5929 1\u5468 \u6708K [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"site-sidebar-layout":"no-sidebar","site-content-layout":"","ast-site-content-layout":"full-width-container","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"disabled","ast-breadcrumbs-content":"","ast-featured-img":"disabled","footer-sml-layout":"","ast-disable-related-posts":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"default","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"footnotes":""},"class_list":["post-7","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/h344e.com\/index.php?rest_route=\/wp\/v2\/pages\/7","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/h344e.com\/index.php?rest_route=\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/h344e.com\/index.php?rest_route=\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/h344e.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/h344e.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=7"}],"version-history":[{"count":29,"href":"https:\/\/h344e.com\/index.php?rest_route=\/wp\/v2\/pages\/7\/revisions"}],"predecessor-version":[{"id":66,"href":"https:\/\/h344e.com\/index.php?rest_route=\/wp\/v2\/pages\/7\/revisions\/66"}],"wp:attachment":[{"href":"https:\/\/h344e.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=7"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}