Files
mama-box/js/kit.js

61 lines
5.0 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
/* 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('孕期百问');
});
})();