/* 11-03 用户:「把此刻那个板块改成测一测、科普、还有计算器」(先在预览改)
二改(同日):「不是进去测一个,而是进去之后是列表页……名字改改,要不大家也不知道测一测是啥」
→ 位置不变(「我的孕期工具」卡底部,原 #pulse 处),叫「孕期百宝箱」,一排三个入口,各进各的列表页:
· 趣味小测试 → 孕妈广场「测一测」列表(guangchang/?c=ceshi,30 个测试)
· 孕期百问 → 首页全部问题页(app.js openQA,标题换成「孕期百问」,按孕周排)
· 孕期计算器 → topic/jisuan/(新做的列表页:生娃花费、产假天数、胎儿体重、孕期增重)
原「此刻」#pulse 只是藏起来(kit.css),JS 照跑(别的地方要用它的总人数);地址带 ?kit=0 可看回旧版对比。 */
(function () {
if (/[?&]kit=0(?:&|$)/.test(location.search)) return;
var box = document.getElementById('kit');
if (!box) return;
var V = '26110263';
var l = document.createElement('link'); l.rel = 'stylesheet'; l.href = 'js/kit.css?v=' + V; document.head.appendChild(l);
document.documentElement.classList.add('has-kit');
function cleanQ(extra) {
var q = new URLSearchParams(location.search);
['t', 'n', 'c', 'id', 'mine', 'write', 'fav', 'kit'].forEach(function (k) { q.delete(k); });
if (extra) Object.keys(extra).forEach(function (k) { q.set(k, extra[k]); });
var s = q.toString(); return (s ? '?' + s : '') + location.hash;
}
var FIRE = '';
var E = [
{ k: 'qz', n: '趣味小测试', d: '1 分钟出结果,测测你是哪种孕妈', c: '30 个测试', img: 'ceshi', u: '人测过' },
{ k: 'qa', n: '孕期百问', d: '孕妈最常问的问题,一次看明白', c: '100 个问题', img: 'kepu', u: '人看过' },
{ k: 'js', n: '孕期计算器', d: '花多少钱、休几天产假,算一算', c: '4 个计算器', img: 'jisuan', u: '人算过' }
];
box.innerHTML = '
孕期百宝箱测一测 · 查一查 · 算一算
' +
E.map(function (x) {
return '
';
}).join('') + '
';
box.classList.remove('hide');
/* 11-03 用户:「百宝箱里加上多少万人测过、算过」—— 模拟数,口径同各列表页(AGENTS.md 12b,12-31 复核):
测过 = 30 个测试 gcTested 之和(同广场「累计 N 万人次参与」);看过 = 「此刻」总人数 × 0.62;算过 = 4 个计算器 heat 之和 × 总人数(同 topic/jisuan) */
function wan(n) { return n >= 1e6 ? Math.round(n / 1e4) + '万' : n >= 1e4 ? (Math.round(n / 1e3) / 10) + '万' : String(Math.round(n)); } /* 百万以上取整,卡片窄放得下 */
function total() { var p = window.__mbPulse; return (p && p.total && +p.total.value) || 1510000; }
function setNum(k, n) { var e = box.querySelector('.e-' + k + ' .kit-n i'); if (e && n) e.textContent = wan(n); }
function nums() {
if (window.GC_TESTS_META && window.gcTested) setNum('qz', window.GC_TESTS_META.reduce(function (a, x) { return a + window.gcTested(x.id); }, 0));
setNum('qa', total() * .62);
setNum('js', total() * (.118 + .062 + .071 + .083));
}
nums();
if (!window.gcTested) { var ms = document.createElement('script'); ms.src = 'guangchang/ceshi/meta.js?v=' + V; ms.onload = function () { nums(); if (window.GC_TESTS_META) setCnt('qz', window.GC_TESTS_META.length + ' 个测试'); }; document.body.appendChild(ms); }
setTimeout(nums, 3000); /* 「此刻」总人数接口晚到时按后台配置的人数重算一次 */
/* 个数跟着真实数据走(测试表 / 问题库加载到了就换真数) */
function setCnt(k, t) { var e = box.querySelector('.e-' + k + ' em'); if (e) e.firstChild.nodeValue = t; }
if (window.GC_TESTS_META) setCnt('qz', window.GC_TESTS_META.length + ' 个测试');
fetch('assets/data/qa/hot.json?v=' + V).then(function (r) { return r.ok ? r.json() : []; }).then(function (a) { if (a && a.length) setCnt('qa', a.length + ' 个问题'); }).catch(function () {});
box.addEventListener('click', function (e) {
var b = e.target.closest('.kit-e'); if (!b) return;
try { navigator.vibrate && navigator.vibrate(8); } catch (x) {}
var k = b.dataset.k;
if (k === 'qz') location.href = 'guangchang/' + cleanQ({ c: 'ceshi' });
else if (k === 'js') location.href = 'topic/jisuan/' + cleanQ();
else if (window.__mbOpenQA) window.__mbOpenQA('孕期百问');
});
})();