61 lines
5.0 KiB
JavaScript
61 lines
5.0 KiB
JavaScript
/* 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 = '<svg viewBox="0 0 24 24" aria-hidden="true"><path d="M12.6 2.5c.4 3-1.6 4.6-3 6.2C8 10.4 7 12 7 14.3A5 5 0 0012 19.5a5 5 0 005-5.2c0-2-1-3.6-1.9-4.6-.2 1.3-.9 2.2-1.9 2.6.6-3.4-.2-7-.6-9.8z" fill="currentColor"/></svg>';
|
||
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 = '<div class="kit-hd"><b>孕期百宝箱</b><span>测一测 · 查一查 · 算一算</span></div><div class="kit-g">' +
|
||
E.map(function (x) {
|
||
return '<button type="button" class="kit-e e-' + x.k + '" data-k="' + x.k + '"><img src="assets/img/kit/' + x.img + '.webp" alt="" decoding="async">' +
|
||
'<b>' + x.n + '</b><span>' + x.d + '</span><strong class="kit-n">' + FIRE + '<i>--</i>' + x.u + '</strong><em>' + x.c + '<i aria-hidden="true">›</i></em></button>';
|
||
}).join('') + '</div>';
|
||
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('孕期百问');
|
||
});
|
||
})();
|