fix(今日脚印): 读不到不编数据 —— 四种显隐模式收口到 fpRender(唯一 owner)(v26092214)
产品口径(2026-09-22):
· **无档案**(上游查无此人 / 本地未关联)→ 显示引导占位(#tlGuide:「还没有你的脚印 /
去「数胎动」记一笔,这里就会长出你今天的脚印」)
· **有档案** → 必须从接口读;**读不到就不显示**(整块 .today-line 收起),不再回退演示行
改动:
- index.html:删掉 4 条**写死的演示行**(胎动 12 次 / 体重 58.2kg / 产检提醒 / 睡前散步 20 分钟)——
它们只在「接口读不到」时露出来,等于上游一抖页面就开始编数据。换成一行中性「正在获取今天的脚印…」
+新增 #tlGuide 引导块,并在注释里写明四种模式与判定。
- 新增 fpApply()/fpRender():模块显隐**只有一个 owner**(pending / rows / empty / guide / hide,
外加「未建档 / 产后」硬门槛优先于接口结论)。
⚠️ 之前 syncPregnancy 也直接改 .today-line 的 display,两个 owner 撞出竞态 —— 实测「有档案 +
上游故障(degraded)」会被 profile 回来后重新显示出来(该收起的没收起)。现在 syncPregnancy 两处
都只调 fpRender()。
- 没有真实事件时给 .today-line 挂 .no-ai,AI 气泡一并收起:那句「今天你数到我动了 3 次」是写死的
演示文案,今天没记 / 未关联 / 读不到时显示它就是在说假话。拿到真实事件时才显示气泡
(把那个数字接到真实次数属另一件事,等产品定文案)。
本地验证(桩后端,五种模式各跑一遍,并把 profile 延迟 1.5s 以复现前面那个竞态):
rows → 模块显示 + 真实事件 + 气泡显示;empty → 「还没有足迹」+ 无气泡;
guide → 引导块显示 + 时间轴收起 + 无气泡;degraded → **整块不显示**;
fail(接口 500) → **整块不显示**;未建档 → 整块不显示。全程无 JS 异常。
This commit is contained in:
@@ -639,6 +639,14 @@ a.skip:focus{left:16px;top:16px}
|
||||
320px 视口下 .step 一行内容总宽约 311 > 可用 264,flex 就去压唯一压得动的时间列,
|
||||
把它压到约 36px,圆点跟着左移,看上去就是「时间贴到竖线上」。
|
||||
现在三处统一 flex:0 0 var(--tl-time),谁都不许缩。 */
|
||||
/* 今日脚印:「无档案」时的引导占位(替换掉收起的时间轴) */
|
||||
.tl-guide{background:#fff;border-radius:22px;padding:20px 18px;box-shadow:var(--sh);text-align:center}
|
||||
.tl-guide-t{font-size:15px;font-weight:800;color:var(--ink)}
|
||||
.tl-guide-s{font-size:12.5px;color:var(--ink-2);margin-top:6px;line-height:1.6}
|
||||
/* 没有真实事件的当天不显示 AI 气泡:那句话里的次数是**写死的**(见 index.html 的注释),
|
||||
今天没记 / 未关联时显示它等于编数据。拿到真实事件(fpApply('rows'))时才摘掉这个类。 */
|
||||
.today-line.no-ai .ai-bubble{display:none}
|
||||
|
||||
.today-line{
|
||||
position:relative;
|
||||
--tl-time:44px; /* 时间列宽:够放 "13:00" 还余一点 */
|
||||
|
||||
Reference in New Issue
Block a user