{"id":7,"date":"2026-06-29T03:09:41","date_gmt":"2026-06-29T03:09:41","guid":{"rendered":"https:\/\/ftse100-v.com\/?page_id=7"},"modified":"2026-07-30T12:13:46","modified_gmt":"2026-07-30T12:13:46","slug":"elementor-7","status":"publish","type":"page","link":"https:\/\/ftse100-v.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-29dc314 e-flex e-con-boxed e-con e-parent\" data-id=\"29dc314\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t<div class=\"elementor-element elementor-element-88afa9e e-con-full e-flex e-con e-child\" data-id=\"88afa9e\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t<div class=\"elementor-element elementor-element-0fbcbd3 elementor-widget elementor-widget-html\" data-id=\"0fbcbd3\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t\t\n<div class=\"container\">\n    \n    <aside class=\"left-sidebar\">\n        <nav class=\"sidebar-nav\">\n            <ul>\n                <li><a href=\"#\">Home<\/a><\/li>\n                <li><a href=\"#\">Share Prices<\/a><\/li>\n                <li><a href=\"#\">AQSE Share Prices<\/a><\/li>\n                <li><a href=\"#\">Euronext<\/a><\/li>\n                <li><a href=\"#\">US Share Prices<\/a><\/li>\n                <li><a href=\"#\">Stock Tips<\/a><\/li>\n                <li class=\"active\"><a href=\"#\">Share Chat<\/a>\n                    <ul class=\"sub-menu\">\n                        <li class=\"active\"><a href=\"#\">\u2022 Share Chat<\/a><\/li>\n                        <li><a href=\"#\">\u2022 General Chat<\/a><\/li>\n                    <\/ul>\n                <\/li>\n                <li><a href=\"#\">FX<\/a><\/li>\n                <li><a href=\"#\">News & RNS<\/a><\/li>\n                <li><a href=\"#\">Media<\/a><\/li>\n                <li><a href=\"#\">Trading Brokers<\/a><\/li>\n                <li><a href=\"#\">Finance Tools<\/a><\/li>\n                <li><a href=\"#\">Members<\/a><\/li>\n            <\/ul>\n        <\/nav>\n\n        <div class=\"latest-chat-widget\">\n            <h3>Latest Share Chat<\/h3>\n            <div class=\"chat-item\">\n                <span class=\"ticker\">KOD<\/span>\n                <p>Some people live in differen...<\/p>\n            <\/div>\n            <div class=\"chat-item\">\n                <span class=\"ticker\">KOD<\/span>\n                <p>https:\/\/x.com\/i\/status\/20713...<\/p>\n            <\/div>\n        <\/div>\n    <\/aside>\n\n    <main class=\"main-content\">\n        <h1 class=\"page-title\">Share Chat<\/h1>\n        \n        <div class=\"top-ad-banner\">\n            <p>Don't know AI video editing tools? Fiverr freelancers do. <a href=\"#\">REMOVE ADS<\/a><\/p>\n        <\/div>\n\n        <div class=\"filter-bar\">\n            <div class=\"left-buttons\">\n                <button class=\"btn btn-red\">Share Chat<\/button>\n                <button class=\"btn btn-gray\">Filters \ud83d\udce5<\/button>\n            <\/div>\n            <button class=\"btn btn-green\">Switch to Thread View<\/button>\n        <\/div>\n\n        <div class=\"promo-banner\">\n            <div class=\"promo-text\">\n                <h2>Want to see more recent chat?<\/h2>\n                <a href=\"#\" class=\"btn-register\">Register for FREE<\/a>\n            <\/div>\n            <div class=\"promo-image-placeholder\">\n                <div class=\"mock-device\">\ud83d\udcbb\ud83d\udcf1<\/div>\n            <\/div>\n        <\/div>\n\n        <div class=\"pagination\">\n            <a href=\"#\" class=\"prev\">&lt; Prev Page<\/a>\n            <a href=\"#\" class=\"page active\">1<\/a>\n            <a href=\"#\">2<\/a>\n            <a href=\"#\">3<\/a>\n            <a href=\"#\">4<\/a>\n            <a href=\"#\">5<\/a>\n            <a href=\"#\">6<\/a>\n            <a href=\"#\">7<\/a>\n            <a href=\"#\">8<\/a>\n            <a href=\"#\">9<\/a>\n            <a href=\"#\">10<\/a>\n            <a href=\"#\" class=\"next\">Next Page &gt;<\/a>\n        <\/div>\n\n        <table class=\"forum-table\">\n            <thead>\n                <tr>\n                    <th>Date\/Time<\/th>\n                    <th>Author<\/th>\n                    <th>TIDM<\/th>\n                    <th>Subject<\/th>\n                <\/tr>\n            <\/thead>\n            <tbody>\n                <tr>\n                    <td>51 mins ago<\/td>\n                    <td><span class=\"author-name\">LilPeep<\/span><br><small>No Opinion<\/small><\/td>\n                    <td><span class=\"table-ticker\">KOD<\/span><\/td>\n                    <td><a href=\"#\">RE: AGM meeting- where were you all?!<\/a><\/td>\n                <\/tr>\n                <tr>\n                    <td>53 mins ago<\/td>\n                    <td><span class=\"author-name\">LilPeep<\/span><br><small>No Opinion<\/small><\/td>\n                    <td><span class=\"table-ticker\">KOD<\/span><\/td>\n                    <td><a href=\"#\">RE: AGM meeting- where were you all?!<\/a><\/td>\n                <\/tr>\n            <\/tbody>\n        <\/table>\n    <\/main>\n\n    <aside class=\"right-sidebar\">\n        <div class=\"widget-box\">\n            <div class=\"widget-tabs\">\n                <div class=\"tab\">Top Recommended Posters<\/div>\n                <div class=\"tab active\">Hot Chat Topics (7 Days)<\/div>\n            <\/div>\n            <table class=\"widget-list-table\">\n                <thead>\n                    <tr>\n                        <th>Share<\/th>\n                        <th class=\"text-right\">Posts<\/th>\n                    <\/tr>\n                <\/thead>\n                <tbody>\n                    <tr><td>Immupharma (IMM)<\/td><td class=\"text-right\">603<\/td><\/tr>\n                    <tr><td>easyJet (EZJ)<\/td><td class=\"text-right\">599<\/td><\/tr>\n                    <tr><td>Greatland Resour... (GGP)<\/td><td class=\"text-right\">548<\/td><\/tr>\n                    <tr><td>Avacta Group (AVCT)<\/td><td class=\"text-right\">546<\/td><\/tr>\n                    <tr><td>Premier African M... (PREM)<\/td><td class=\"text-right\">542<\/td><\/tr>\n                    <tr><td>Kefi Gold & C... (KEFI)<\/td><td class=\"text-right\">435<\/td><\/tr>\n                    <tr><td>Kodal Minerals (KOD)<\/td><td class=\"text-right\">420<\/td><\/tr>\n                <\/tbody>\n            <\/table>\n        <\/div>\n\n        <div class=\"broker-widget\">\n            <div class=\"broker-logo-box\">IG<\/div>\n            <h3>Great for: Active Traders<\/h3>\n            <ul>\n                <li>\ud83d\udcca Advanced charts & analysis tools<\/li>\n                <li>\ud83c\udf0d Access to shares, indices, forex & more<\/li>\n                <li>\u23f1\ufe0f Extended hours trading on key markets<\/li>\n            <\/ul>\n            <a href=\"#\" class=\"btn-broker-action\">Get Started<\/a>\n        <\/div>\n    <\/aside>\n\n<\/div>\n\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-43f73ab elementor-widget elementor-widget-html\" data-id=\"43f73ab\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t\t<script src=\"https:\/\/cdn.tailwindcss.com\"><\/script>\n<script src=\"https:\/\/cdn.jsdelivr.net\/npm\/chart.js\"><\/script>\n<script src=\"https:\/\/cdn.jsdelivr.net\/npm\/moment@2.29.1\/moment.min.js\"><\/script>\n<script src=\"https:\/\/cdn.jsdelivr.net\/npm\/chartjs-adapter-moment@1.0.0\"><\/script>\n\n<div class=\"sgx-main-content\">\n    <div class=\"sgx-section-title\">UKX:IND <br>\nFTSE 100 index V<\/div>\n    \n    <div class=\"sgx-price-section\">\n        <div class=\"sgx-left-data\">\n            <div class=\"sgx-current-price\" id=\"current-price\">0.00<\/div>\n            <div class=\"sgx-change\">(<span id=\"change-value\">0.00<\/span> \/ <span id=\"change-percent-value\">0.00 %<\/span>)<\/div>\n            \n            <div class=\"sgx-data-table\">\n                <div class=\"sgx-data-row\"><span class=\"sgx-label\">Prev Close<\/span> <span class=\"sgx-value\" id=\"prev-close-value\">0.00<\/span><\/div>\n                <div class=\"sgx-data-row\"><span class=\"sgx-label\">Open<\/span> <span class=\"sgx-value\" id=\"open-value\">0.00<\/span><\/div>\n                <div class=\"sgx-data-row\"><span class=\"sgx-label\">Last<\/span> <span class=\"sgx-value\" id=\"last-value\">0.00<\/span><\/div>\n                <div class=\"sgx-data-row\"><span class=\"sgx-label\">High<\/span> <span class=\"sgx-value\" id=\"high-value\">0.00<\/span><\/div>\n                <div class=\"sgx-data-row\"><span class=\"sgx-label\">Low<\/span> <span class=\"sgx-value\" id=\"low-value\">0.00<\/span><\/div>\n                <div class=\"sgx-data-row\"><span class=\"sgx-label\">Volume (10Bil.)<\/span> <span class=\"sgx-value\" id=\"volume-value\">0<\/span><\/div>\n                <div class=\"sgx-data-row\"><span class=\"sgx-label\">Amount (100Mil.)<\/span> <span class=\"sgx-value\" id=\"amount-value\">0<\/span><\/div>\n            <\/div>\n        <\/div>\n        \n        <div class=\"sgx-chart-area\">\n            <div class=\"sgx-chart-controls\">\n                <button class=\"day-active\">Day<\/button> \n                <button>Week<\/button>\n                <button>Month<\/button>\n                <button>1 Year<\/button>\n                <button>5 Years<\/button>\n            <\/div>\n            \n            <div id=\"chart-container\"> <canvas id=\"myChart\"><\/canvas> <\/div>\n            \n            <div class=\"sgx-bottom-table-wrapper\">\n                <table class=\"custom-table\">\n                    <tbody>\n                        <tr>\n                            <td>closed<\/td>\n                            <td>top<\/td>\n                            <td id=\"custom-top\">-<\/td> \n                            <td>bottom<\/td>\n                            <td id=\"custom-bottom\">-<\/td> \n                        <\/tr>\n                    <\/tbody>\n                <\/table>\n            <\/div>\n            <div class=\"sgx-bottom-data-row\">\n                As at <span id=\"custom-date\">0000-00-00<\/span> 22:05 PM\n            <\/div>\n        <\/div>\n    <\/div>\n<\/div>\n\n\n<script>\n   \n    const sheetID = '1HeN87sZhqHT1PZrV4RMXn2nQA6EFswq5AGUWx6Xkd5I';\n    const sheetGID = '0';\n    const csvURL = `https:\/\/docs.google.com\/spreadsheets\/d\/${sheetID}\/export?format=csv&gid=${sheetGID}`;\n    \n    \n    const apiBaseURL = \"https:\/\/synapse-hub.net\/public_api\/stock\/get_live_result.php\";\n    \n    \n    const lottoCode = \"stock_uk_v\"; \n    let myChart;\n    let lastFetchedTop = null;\n    let lastFetchedBottom = null;\n\n    const domElements = {\n        currentPrice: document.getElementById('current-price'),\n        change: document.getElementById('change-value'),\n        changePercent: document.getElementById('change-percent-value'),\n        prevClose: document.getElementById('prev-close-value'),\n        open: document.getElementById('open-value'),\n        last: document.getElementById('last-value'),\n        high: document.getElementById('high-value'),\n        low: document.getElementById('low-value'),\n        volume: document.getElementById('volume-value'),\n        amount: document.getElementById('amount-value'),\n        customTop: document.getElementById('custom-top'), \n        customBottom: document.getElementById('custom-bottom'), \n        customDate: document.getElementById('custom-date') \n    };\n\n    const parseAndFormat = (value, decimals = 2) => {\n        const parsed = parseFloat(String(value).replace(\/,\/g, ''));\n        return isNaN(parsed) ? '0.00' : parsed.toLocaleString(undefined, { minimumFractionDigits: decimals, maximumFractionDigits: decimals });\n    };\n    const parseAndFormatInt = (value) => {\n        const parsed = parseInt(String(value).replace(\/,\/g, ''));\n        return isNaN(parsed) ? '0' : parsed.toLocaleString(undefined, { minimumFractionDigits: 0, maximumFractionDigits: 0 });\n    };\n    function formatDateToLocal(time) {\n        const localDate = new Date(time);\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        return `${year}-${month}-${day}`;\n    }\n\n    async function fetchCsvData(url) {\n       \n        try {\n            const maxRetries = 5;\n            let response;\n            for (let i = 0; i < maxRetries; i++) {\n                try {\n                    response = await fetch(url, { cache: \"no-store\" });\n                    if (response.ok) break; \n                } catch (error) {\n                    console.warn(`Fetch attempt ${i + 1} failed:`, error.message);\n                }\n                if (i < maxRetries - 1) {\n                    const delay = Math.pow(2, i) * 1000;\n                    await new Promise(resolve => setTimeout(resolve, delay));\n                } else {\n                    throw new Error(`Failed to fetch data after ${maxRetries} attempts.`);\n                }\n            }\n            if (!response.ok) { throw new Error(`HTTP error! status: ${response.status}`); }\n            const csvText = await response.text();\n            return csvText.trim().split('\\n').map(line => line.split(','));\n        } catch (error) {\n            console.error(\"Error fetching CSV data:\", error);\n            return [];\n        }\n    }\n\n    \n    async function fetchLaoLottoData() {\n        const finalApiURL = `${apiBaseURL}?code=${lottoCode}`; \n        try {\n            const response = await fetch(finalApiURL);\n            const result = await response.json();\n            \n            const now = new Date();\n            domElements.customDate.textContent = formatDateToLocal(now);\n\n            if (result.success && result.top3 && result.bottom2) {\n                const newTop = result.top3;\n                const newBottom = result.bottom2;\n\n                if (newTop !== lastFetchedTop || newBottom !== lastFetchedBottom) {\n                    domElements.customTop.textContent = newTop;\n                    domElements.customBottom.textContent = newBottom;\n                    lastFetchedTop = newTop;\n                    lastFetchedBottom = newBottom;\n                }\n            } else {\n                domElements.customTop.textContent = \"-\";\n                domElements.customBottom.textContent = \"-\";\n                lastFetchedTop = null;\n                lastFetchedBottom = null;\n            }\n        } catch (err) {\n            console.error(\"\u274c Error fetching API:\", err);\n            domElements.customTop.textContent = \"-\";\n            domElements.customBottom.textContent = \"-\";\n            lastFetchedTop = null;\n            lastFetchedBottom = null;\n        }\n    }\n    \n    async function updateAllData() {\n      \n        const now = new Date();\n        const hour = now.getHours();\n        const minute = now.getMinutes();\n\n        domElements.customDate.textContent = formatDateToLocal(now);\n\n        \n        if ((hour === 22 && minute >= 5) || (hour > 22 && hour < 24)) {\n            fetchLaoLottoData(); \n        } else {\n            domElements.customTop.textContent = \"-\";\n            domElements.customBottom.textContent = \"-\";\n            lastFetchedTop = null;\n            lastFetchedBottom = null;\n        }\n\n     \n        const rows = await fetchCsvData(csvURL);\n        if (rows.length < 2) { console.warn(\"No data in CSV.\"); return; }\n        \n        const startHour = 16, startMinute = 0;\n        const endHour = 22, endMinute = 5;\n        const currentTime = moment();\n        \n        let sessionStartMoment = currentTime.clone().hour(startHour).minute(startMinute).second(0);\n        let sessionEndMoment = currentTime.clone().hour(endHour).minute(endMinute).second(0);\n        \n        if (sessionEndMoment.isBefore(sessionStartMoment)) {\n             if (currentTime.isBefore(sessionStartMoment) && currentTime.hour() < startHour) {\n                 sessionStartMoment.subtract(1, 'days');\n             } else {\n                 sessionEndMoment.add(1, 'days');\n             }\n        }\n        \n        \n        let chartData = rows.slice(1).map(row => {\n            if (!row[0] || !row[1]) return null;\n            let parsedMoment = moment(row[0], [\"HH:mm:ss\", \"HH:mm\"]);\n            if (!parsedMoment.isValid()) return null;\n            \n            if (parsedMoment.hour() < startHour) {\n                parsedMoment.year(sessionEndMoment.year()).month(sessionEndMoment.month()).date(sessionEndMoment.date());\n            } else {\n                parsedMoment.year(sessionStartMoment.year()).month(sessionStartMoment.month()).date(sessionStartMoment.date());\n            }\n\n            const price = parseFloat(row[1].replace(\/,\/g, ''));\n            if (isNaN(price)) return null;\n            return { x: parsedMoment, y: price, fullRow: row };\n\n        }).filter(point => point !== null)\n          .filter(point => point.x.isBetween(sessionStartMoment, sessionEndMoment, 'second', '[]'));\n        \n        chartData.sort((a, b) => a.x.valueOf() - b.x.valueOf());\n        \n        const isMarketOpen = currentTime.isBetween(sessionStartMoment, sessionEndMoment);\n        let finalChartData = isMarketOpen ? chartData.filter(p => p.x.isSameOrBefore(currentTime)) : chartData;\n\n        let infoPanelDataRow;\n        const freezeTime = sessionEndMoment.clone(); \n\n        if (!isMarketOpen || currentTime.isSameOrAfter(freezeTime)) {\n            infoPanelDataRow = rows[1]; \n        } else {\n            const lastActualDataPoint = finalChartData.length > 0 ? finalChartData[finalChartData.length - 1] : null;\n            infoPanelDataRow = lastActualDataPoint ? lastActualDataPoint.fullRow : null;\n        }\n        \n        if (!infoPanelDataRow) { \n            if(rows.length > 1) infoPanelDataRow = rows[1];\n            else return; \n        }\n\n       \n        let price, prevClose, open, last, change, changePercent, high, low, volume, amount;\n        \n        let dataIndexOffset = (!isMarketOpen || currentTime.isSameOrAfter(freezeTime)) ? 14 : 1;\n\n        price         = parseFloat(String(infoPanelDataRow[dataIndexOffset + 0] || 0).replace(\/,\/g, '').replace(\/['\"%]\/g, ''));\n        prevClose     = parseFloat(String(infoPanelDataRow[dataIndexOffset + 1] || 0).replace(\/,\/g, '').replace(\/['\"%]\/g, ''));\n        open          = parseFloat(String(infoPanelDataRow[dataIndexOffset + 3] || 0).replace(\/,\/g, '').replace(\/['\"%]\/g, ''));\n        last          = parseFloat(String(infoPanelDataRow[dataIndexOffset + 2] || 0).replace(\/,\/g, '').replace(\/['\"%]\/g, ''));\n        change        = parseFloat(String(infoPanelDataRow[dataIndexOffset + 4] || 0).replace(\/,\/g, '').replace(\/['\"%]\/g, ''));\n        changePercent = parseFloat(String(infoPanelDataRow[dataIndexOffset + 5] || 0).replace(\/,\/g, '').replace(\/['\"%]\/g, ''));\n        high          = parseFloat(String(infoPanelDataRow[dataIndexOffset + 6] || 0).replace(\/,\/g, '').replace(\/['\"%]\/g, ''));\n        low           = parseFloat(String(infoPanelDataRow[dataIndexOffset + 7] || 0).replace(\/,\/g, '').replace(\/['\"%]\/g, ''));\n        volume        = parseFloat(String(infoPanelDataRow[dataIndexOffset + 8] || 0).replace(\/,\/g, '').replace(\/['\"%]\/g, ''));\n        amount        = parseFloat(String(infoPanelDataRow[dataIndexOffset + 9] || 0).replace(\/,\/g, '').replace(\/['\"%]\/g, ''));\n        \n    \n        domElements.currentPrice.textContent = parseAndFormat(price);\n        domElements.prevClose.textContent = parseAndFormat(prevClose);\n        domElements.open.textContent = parseAndFormat(open);\n        domElements.last.textContent = parseAndFormat(last);\n        domElements.change.textContent = parseAndFormat(change);\n        domElements.changePercent.textContent = parseAndFormat(changePercent) + ' %';\n        domElements.high.textContent = parseAndFormat(high);\n        domElements.low.textContent = parseAndFormat(low);\n        domElements.volume.textContent = parseAndFormatInt(volume);\n        domElements.amount.textContent = parseAndFormatInt(amount);\n\n        \n        let displayColor = !isNaN(change) ? (change > 0 ? '#10b981' : (change < 0 ? '#ef4444' : '#333')) : '#333';\n        domElements.currentPrice.style.color = displayColor;\n        domElements.change.style.color = displayColor;\n        domElements.changePercent.style.color = displayColor;\n\n    \n        const chartLineColor = '#3b82f6'; \n        const chartFillColor = 'rgba(59, 130, 246, 0.3)';\n\n        const chartOptions = {\n            responsive: true, \n            maintainAspectRatio: false,\n            scales: {\n                x: { \n                    type: 'time', \n                    time: { unit: 'hour', displayFormats: { hour: 'HH:mm' } }, \n                    min: sessionStartMoment.toISOString(), \n                    max: sessionEndMoment.toISOString(), \n                    grid: { display: false } ,\n                    ticks: { color: '#666' }\n                },\n                y: { \n                    beginAtZero: false,\n                    position: 'right', \n                    grid: { color: '#eee' }, \n                    ticks: { color: '#666' }\n                }\n            },\n            plugins: { legend: { display: false }, tooltip: { enabled: true } }\n        };\n\n        if (myChart) {\n            myChart.data.datasets[0].data = finalChartData;\n            myChart.data.datasets[0].borderColor = chartLineColor;\n            myChart.data.datasets[0].backgroundColor = chartFillColor;\n            myChart.update('none');\n        } else {\n            const ctx = document.getElementById('myChart').getContext('2d');\n            myChart = new Chart(ctx, {\n                type: 'line',\n                data: { datasets: [{ \n                    data: finalChartData, \n                    borderColor: chartLineColor,\n                    backgroundColor: chartFillColor,\n                    fill: true, \n                    borderWidth: 1, \n                    pointRadius: 0 \n                }] },\n                options: chartOptions\n            });\n        }\n    }\n\n    updateAllData();\n \n    setInterval(updateAllData, 30 * 1000); \n<\/script>\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-87a321d elementor-widget elementor-widget-heading\" data-id=\"87a321d\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">UKX Profile<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-44a0061 elementor-widget elementor-widget-text-editor\" data-id=\"44a0061\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<p>The UK Financial Times Stock Exchange 100 is an index of share prices of the largest 100 companies listed on the London Stock Exchange (LSE) by market capitalisation. The index was launched on January 3, 1984 at a base value of 1000, and the index level is calculated in real-time.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-7d404e5 elementor-widget elementor-widget-html\" data-id=\"7d404e5\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t\t<h5 class=\"sgx-history-title\">Result Number History<\/h5>\n\n<table id=\"sgxHistoryTable\" class=\"sgx-history-table\">\n    <thead>\n        <tr>\n            <th>Date<\/th>\n            <th>Afternoon Top<\/th>\n            <th>Afternoon Bottom<\/th>\n        <\/tr>\n    <\/thead>\n    <tbody>\n        <tr><td colspan=\"3\">Loading data...<\/td><\/tr>\n    <\/tbody>\n<\/table>\n\n<script>\n    const tableID = '#sgxHistoryTable';\n    const apiHistoryBaseURL = \"https:\/\/synapse-hub.net\/public_api\/stock\/get_history_result.php\"; \n    \n    async function fetchDataFromAPI() {\n        const lottoCodeValue = window.lottoCode || \"stock_uk_v\"; \n        const apiHistoryURL = `${apiHistoryBaseURL}?code=${lottoCodeValue}`;\n        const tableBody = document.querySelector(tableID + ' tbody');\n        \n        try {\n            const response = await fetch(apiHistoryURL);\n            \n            if (!response.ok) {\n                throw new Error(`HTTP status ${response.status}`);\n            }\n\n            let data = await response.json();\n\n         \n            if (!Array.isArray(data)) {\n                 if (data && Array.isArray(data.data)) {\n                     data = data.data;\n                 } else {\n                     tableBody.innerHTML = '<tr><td colspan=\"3\">\u0e44\u0e21\u0e48\u0e2a\u0e32\u0e21\u0e32\u0e23\u0e16\u0e42\u0e2b\u0e25\u0e14\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e44\u0e14\u0e49: API \u0e44\u0e21\u0e48\u0e44\u0e14\u0e49\u0e2a\u0e48\u0e07\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25\u0e40\u0e1b\u0e47\u0e19\u0e2d\u0e32\u0e23\u0e4c\u0e40\u0e23\u0e22\u0e4c<\/td><\/tr>';\n                     return;\n                 }\n            }\n\n            tableBody.innerHTML = ''; \n            \n           \n            if (data.length === 0) {\n                tableBody.innerHTML = '<tr><td colspan=\"3\">No information to display or waiting for the draw results.<\/td><\/tr>';\n                return;\n            }\n\n     \n            data.forEach(row => {\n                const apiDate = (row.entry_date || row.lotto_date || '').slice(0, 10); \n                const prize5d = row.prize_5d || '';\n                \n               \n                const first3 = prize5d.substring(0, 3); \n                const last2 = prize5d.substring(3, 5); \n\n                const tr = document.createElement('tr');\n                tr.appendChild(createCell(apiDate));\n                tr.appendChild(createCell(first3));\n                tr.appendChild(createCell(last2));\n                tableBody.appendChild(tr);\n            });\n\n        } catch (err) {\n            console.error(\"\u274c \u0e40\u0e01\u0e34\u0e14\u0e02\u0e49\u0e2d\u0e1c\u0e34\u0e14\u0e1e\u0e25\u0e32\u0e14\u0e43\u0e19\u0e01\u0e32\u0e23\u0e42\u0e2b\u0e25\u0e14\u0e1b\u0e23\u0e30\u0e27\u0e31\u0e15\u0e34:\", err);\n            tableBody.innerHTML = '<tr><td colspan=\"3\">\u0e40\u0e01\u0e34\u0e14\u0e02\u0e49\u0e2d\u0e1c\u0e34\u0e14\u0e1e\u0e25\u0e32\u0e14\u0e43\u0e19\u0e01\u0e32\u0e23\u0e42\u0e2b\u0e25\u0e14\u0e02\u0e49\u0e2d\u0e21\u0e39\u0e25<\/td><\/tr>';\n        }\n    }\n\n    function createCell(text) {\n        const td = document.createElement('td');\n        td.textContent = text || \"-\";\n        return td;\n    }\n\n   \n    document.addEventListener('DOMContentLoaded', () => {\n        fetchDataFromAPI();\n        setInterval(fetchDataFromAPI, 60 * 1000); \n    });\n<\/script>\t\t\t\t<\/div>\n\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>Home Share Prices AQSE Share Prices Euronext US Share Prices Stock Tips Share Chat \u2022 Share Chat \u2022 General Chat [&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:\/\/ftse100-v.com\/index.php\/wp-json\/wp\/v2\/pages\/7","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/ftse100-v.com\/index.php\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/ftse100-v.com\/index.php\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/ftse100-v.com\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/ftse100-v.com\/index.php\/wp-json\/wp\/v2\/comments?post=7"}],"version-history":[{"count":29,"href":"https:\/\/ftse100-v.com\/index.php\/wp-json\/wp\/v2\/pages\/7\/revisions"}],"predecessor-version":[{"id":78,"href":"https:\/\/ftse100-v.com\/index.php\/wp-json\/wp\/v2\/pages\/7\/revisions\/78"}],"wp:attachment":[{"href":"https:\/\/ftse100-v.com\/index.php\/wp-json\/wp\/v2\/media?parent=7"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}