/* Copyright (c) 2025-2026 马建军. All rights reserved. * 专有软件 — 未经授权禁止复制、传播、转售。 * 详见 LICENSE.zh-CN.txt */ (function () { var timer = null; function fmtDist(v) { if (v === null || v === undefined) return '--'; return v.toFixed(2); } function pollPrices() { var list = document.getElementById('plan-monitor-list'); if (!list || !list.querySelector('.plan-item')) return; fetch('/api/plan_prices') .then(function (r) { return r.json(); }) .then(function (rows) { rows.forEach(function (row) { var el = list.querySelector('.plan-item[data-plan-id="' + row.id + '"]'); if (!el) return; var priceEl = el.querySelector('.live-price'); var distEl = el.querySelector('.live-dist'); var upEl = el.querySelector('.dist-up'); var downEl = el.querySelector('.dist-down'); if (priceEl) { priceEl.textContent = row.price != null ? row.price : '--'; } if (row.in_zone && distEl) { distEl.innerHTML = '在区间内'; } else if (distEl) { distEl.innerHTML = '距上' + fmtDist(row.dist_upper) + ' ' + '距下' + fmtDist(row.dist_lower) + ''; } }); }) .catch(function () { /* ignore */ }); } function stopPolling() { if (timer) { clearInterval(timer); timer = null; } } function startPolling() { stopPolling(); pollPrices(); timer = setInterval(pollPrices, 1000); } if (window.qihuoPageBoot) window.qihuoPageBoot(startPolling, '#plan-monitor-list'); else if (window.qihuoOnPageLoad) window.qihuoOnPageLoad(startPolling); else document.addEventListener('DOMContentLoaded', startPolling); if (window.qihuoOnPageLeave) window.qihuoOnPageLeave(stopPolling); })();